[vtk-developers] Garbage collection slowness
Hank Childs
childs3 at llnl.gov
Mon May 12 18:35:05 EDT 2008
Hello VTK Developers!
I am running in serial and am setting up about 20000 pipelines on my
serial process for about 20000 chunks of data.
The runtime has gotten disproportionately large with the large number
of chunks and I believe that garbage collection is at least partly to
blame.
For example, if I:
1) call vtkGarbageCollector::DeferredCollectionPush()
2) execute three filters (filters that find external faces and remove
ghost data) and,
3) call vtkGarbageCollector::DeferredCollectionPop()
then: the three filters take about 20s total and the
DeferredCollectionPop takes about 47s.
One conclusion that I drew from the fast execution of the three
filters, is that iterating through the data is relatively quickly.
Restated, I ruled out thrashing through memory as the reason the
garbage collector is taking 47s.
Also, I should disclose that I am managing the execution manually.
The best way to describe it would be that I have one instance of
filter A, one instance of filter B, and one instance of filter C and
that I route all 20K data sets through filter A, to make 20K new data
sets, then route those 20K new data sets through B, and so on. Also,
I know that the alternative is to call "Update()" 20K times, one for
each chunk, but I'd prefer not to go down that route, for reasons I
can explain if necessary.
So: can anyone point me to some words of wisdom about a way to manage
my data objects so that garbage collection is faster?
Best regards,
Hank
More information about the vtk-developers
mailing list