On Thu, Oct 1, 2009 at 4:44 PM, Anton Muhin <[email protected]> wrote: > Guys, just to summarize the discussion. > > There are several ways we can tweak tcmalloc: > > 1) decommit everything what is free; > 2) keep spans with a mixed state (some pages committed, some not, > coalescing nor commit, not decommits)---that should solve main Jim's > argument; > 3) commit on coalescing, but aggressively purge (like WebKit do, once > in 5 secs unless something else has been committed, or in idle pauses. > > To my knowledge performance-wise 1) is slower (how slower we should > learn), 2) is slightly faster than 3) (but it might be just a > statistical error). Of course, my benchmark is quite special. > > Memory-wise I think 2) and 3) with aggressive scavenging should be > mostly the same---we could keep higher number of committed pages than > in 1), but for short periods of time and I'm not convinced it's a bad > thing. > > Overall I'm pro 2) and 3), but I am definitely biased. > > What do you think? [...]
I'd like to explain in what way decomitting everything (option #1 above) is slow. This hurts us most during garbage collection in V8. When a DOM wrapper is collected the C++ DOM object that it wraps gets deleted and we decommit memory (usually only to commit some of it later). So we add extra low-level memory management cost to garbage collections, which ideally should be as fast as possible to avoid hurting interactivity of the browser. This is one of the reasons to avoid aggressive decomitting. So I think having something like #2 with periodic onidle decommits like #3 should be good both for performance in bechmarks and real apps and for memory usage. -- Vitaly --~--~---------~--~----~------------~-------~--~----~ Chromium Developers mailing list: [email protected] View archives, change email options, or unsubscribe: http://groups.google.com/group/chromium-dev -~----------~----~----~----~------~----~------~--~---
