|
From: Nikodemus S. <nik...@ra...> - 2010-02-28 12:06:01
|
On 28 February 2010 13:14, Rudi Schlatte <ru...@co...> wrote: > I'm not sure it would help at all. The way I understand the problem, we have 1MB per > request x 300 requests per second = 300MB/s of memory arriving in the oldest generation. > This seems to be a pessimal memory usage pattern for our generational gc. I can't see how > manually breaking some pointers between objects in oldspace would trigger oldspace > collection earlier than it does now. (Remember, gc is a heuristic, as is process It won't trigger an oldspace collection earlier, no. It may, however do several other beneficial things: allow some things to be collected before they are promoted so far (via real pointers or accidental conservativism); make oldspace scavenging faster (this is conditional on so many things it's not funny -- but given the right set of circumstances it can do so.) > I dimly remember a parameter that sets the number of generations, and setting it to some > small value (1? 2?) essentially reinstating non-generational behavior -- sorry I can't be > more specific since I don't have the time to go spelunking in sbcl sources right now. :( > But it might be interesting to switch off gengc, just for laughs, and see what happens. Ooh, that's right! I completely forgot that. +highest-normal-generation+ and +pseudo-static-generation+ in src/compiler/generic/parms.lisp Setting the first to 0 and the second to 1 seems to at least build just fine -- didn't test properly. Cheers, -- Nikodemus |