A method, comprising: sending, by one or more processors, input data to a plurality of computing devices (115A-N) configured to process the input data, wherein a respective portion of the input data is sent to each of the plurality of computing devices (115A-N) according to a load-balancing distribution; receiving, from a first computing device of the plurality of computing devices (115A-N), data characterizing memory bandwidth for a memory device on the first computing device and over a period of time; determining, at least from the data characterizing the memory bandwidth and a memory bandwidth saturation point for the first computing device, that the first computing device can process additional data within a predetermined latency threshold, wherein the memory bandwidth saturation point for the first computing device is determined by: receiving measures of access latency at different memory bandwidths, each memory bandwidth corresponding to a respective measure of access latency, wherein access latency is a measure of time to access data stored on the memory device; and identifying a first memory bandwidth as the memory bandwidth saturation point for the first computing device as a point where a rate of change of the access latency increases faster than a constant or linear relationship between access latency and a bandwidth identified for memory bandwidths below the first memory bandwidth; and in response to determining that the first computing device can process additional data within the predetermined latency threshold, sending the additional data to the first computing device. sending, by one or more processors, input data to a plurality of computing devices (115A-N) configured to process the input data, wherein a respective portion of the input data is sent to each of the plurality of computing devices (115A-N) according to a load-balancing distribution; receiving, from a first computing device of the plurality of computing devices (115A-N), data characterizing memory bandwidth for a memory device on the first computing device and over a period of time; determining, at least from the data characterizing the memory bandwidth and a memory bandwidth saturation point for the first computing device, that the first computing device can process additional data within a predetermined latency threshold, wherein the memory bandwidth saturation point for the first computing device is determined by: receiving measures of access latency at different memory bandwidths, each memory bandwidth corresponding to a respective measure of access latency, wherein access latency is a measure of time to access data stored on the memory device; and identifying a first memory bandwidth as the memory bandwidth saturation point for the first computing device as a point where a rate of change of the access latency increases faster than a constant or linear relationship between access latency and a bandwidth identified for memory bandwidths below the first memory bandwidth; and receiving measures of access latency at different memory bandwidths, each memory bandwidth corresponding to a respective measure of access latency, wherein access latency is a measure of time to access data stored on the memory device; and identifying a first memory bandwidth as the memory bandwidth saturation point for the first computing device as a point where a rate of change of the access latency increases faster than a constant or linear relationship between access latency and a bandwidth identified for memory bandwidths below the first memory bandwidth; and in response to determining that the first computing device can process additional data within the predetermined latency threshold, sending the additional data to the first computing device.