Split range in chunks where total amount of memory consumed by all reads in the chunk is roughly chunk_size bytes.
Split range in chunks each containing no more than N reads
Constructs range of chunks where sum { fn(read) | read in chunk } does not exceed given number.