Is there an event buffering scheme in ROOT?

I use ROOT 5.26 on a Linux machine with 4 processors and 8 GB of memory.
I am able to launch 4 (longish) macros in 4 separate terminal windows, each macro
reads one ROOT TTree and writes another (much smaller) one, and the system monitor
shows the 4 CPUs happily running each at a level >= ~70% most of the time.

But the memory occupation is quite small (13% in all, that’s 250MB or so for each macro!)
and I see the disk light constantly ON, and hear the head stepper going like crazy.

I have the impression (that may be wrong!) that the code reads one event at a time
from the 4 disk files currently open, processes it and goes on to read the next one.

Is there a way to make ROOT I/O able to read MANY events at a time in a cache,
so that each CPU goes less frequently to the disk, and this in a way totally
transparent to me? I think (from what i read in the docs) that such a mechanism should exist,
so it may be that I only need to declare TTrees (or something else) with a larger memory size
to use for the cache, lsrger than the default that I am getting now, too small for my machine.

Any help will be MUCH appreciated, right or wrong that my impressions could be!

Hi acal-

Have a look at the post in Axel's blog, it should help you out: … -disk-spin