Re: TTree memory usage

From: Philippe Canal <pcanal_at_fnal.gov>
Date: Thu, 11 Aug 2011 10:44:55 -0500


Hi Phil,

In v5.28, the TTree's basket management was update to reduce the number of memory allocation by holding on to the buffer and scratch buffer for the lifetime of the TTree.

In v5.30, this basket management for updated again to cut the memory required in half and avoid memory hog (by deleting and re-allocating a smaller buffer if the basket ends up oversize for too long).

The spikes are likely due to large objects in your data ; depending on your data model and how you access your objects, some or all of the data memory might be allocated/deallocated each entry.

> I tried fiddling around with TTree:SetMaxVirtualSize

Increasing this value would allow the TTree to hold to more than one basket at a time hence increase memory consumption and possibly improving random access within the TTree. Decreasing its value would not reduce the actual usage below one basket per (used) branch.

> TTree:SetMaxCacheSize

I suspect you mean SetCacheSize which control whether or not there is a TTreeCache object created with the given amount of memory (fixed amount). This TTreeCache is used to reduce the number of reads needed to load the data from disk. This memory is in addition to the memory needed for normal basket management.

Cheers,
Philippe.

On 8/10/11 1:13 PM, Philip Rodrigues wrote:
> Hi Philippe,
>
>> Which version of ROOT are you using? With which version of ROOT was the
>> file written?
> I'm reading the file with 5.28e. I think it was written with the same version.
> Well, certainly 5.28 - the patch letter might be different. If you expect it to
> make a difference I can try to find out.
>
> Thanks,
> Phil
Received on Thu Aug 11 2011 - 17:45:06 CEST

This archive was generated by hypermail 2.2.0 : Fri Aug 12 2011 - 23:50:01 CEST