The idea is that this potentially speeds up overall execution time for rolling up all locators for a slot.

Consider the case of a slot having 50 items. Let's say it takes 50ms to write 50 items, and let's say it takes 100ms to read and calculate all 50 rollups. If we have a fixed batch size, it will take 150ms to perform rollups start to finish for that slot, because we wouldn't start writing until all 50 had been read+calculated. 

Let's say it takes 5ms to write 5 items. Under variable batch sizing, you would have already written 9 batches of 5 (or at least started the writes) before rollups are done being read+calculated. Your end-to-end time for rollup execution then becomes 105ms instead of 150ms.

The idea is to be consistently pumping metrics (in potentially small batches) out of the queue until the threadpool is saturated. When it is almost saturated (queueSize-1), or when it is saturated, then we only push large batches into the queue.