On Tue, Oct 27, 2009 at 9:10 PM, Mike Belshe <mbel...@google.com> wrote:
> On Tue, Oct 27, 2009 at 3:24 PM, Jens Alfke <s...@chromium.org> wrote:
>>
>> Do we plan to switch the Mac build of Chromium to use tcmalloc instead of
>> the system malloc? I thought this was the case, but I can't find any bug
>> covering the task to do that. I'm on the memory task force, and this
>> decision could definitely have an impact (one direction or the other) on
>> footprint on Mac.
>
> From a performance perspective, it may be critical to use tcmalloc to match
> safari performance.  It was literally a 50% speedup on most of the DOM perf
> when running on WinXP.

Just thought I'd throw in the data point that I've experimented with
enabling tcmalloc for Linux builds of Chromium and the perfbots had
negligible changes.  I haven't had time to investigate why.  I'd
recommend you enable it for a run on the perfbots before you spend
much time tweaking the mac port of tcmalloc.

>
>>
>> I just tried enabling tcmalloc (by changing USE_SYSTEM_MALLOC to 0 in
>> JavaScriptCore.gyp), and Chromium launches but logs a ton of warnings about
>> unknown pointers being freed.
>
> I suspect this will use the version of TCMalloc which is embedded in WTF.
>  I'd recommend against this approach.  We should try to use a single
> allocator for the entire app, and specialize when necessary.  Having the
> rendering engine drive the allocator is a bit backwards; it seems better for
> chrome itself to choose the allocator and then the rendering engine should
> use that.
> To make this work, you'll need to figure out whatever build magic is
> necessary on the Mac; I'm kinda clueless in that regard, but if you want to
> know what we did on Windows, I'm happy to share.
> You'll find the tcmalloc version that we use on windows available in
> third_party/tcmalloc.
> Keep in mind also that the version of tcmalloc in webcore is heavily
> modified by apple.  Some of those changes have been similarly made in
> tcmalloc's open source project, but others have not.  Apple has not seemed
> interested in syncing back and appears to be on the "fork it" route.
> Using third_party/tcmalloc will offer a couple of advantages:
>    - we are continuing to improve it all the way from google3 to the
> google-perftools to chrome.
>    - it will provide the same allocator on windows and mac (easier
> debugging)
>    - the chromium implementation allows for selection of multiple allocators
> fairly easily.  Using the allocator_shim.cc, you can plug in your own
> allocators pretty quickly.
> There is a disadvantage.  I suspect Apple is farther along in optimizing the
> mac-specific optimizations of tcmalloc than the google3 guys are.  You may
> have to stumble into these.  Either Jim or I could probably give you some
> pointers for what to look at.  tcmalloc is solid, but the ports other than
> linux have had some very serious port related bugs.
> Mike
>
>>
>> I think this happens because tcmalloc is built by the 'wtf' target of
>> JavaScriptCore.xcodeproj, which is a static library, so we may be ending up
>> with multiple instances of the library with their own copies of its globals,
>> leading to this problem if one instance allocates a block and another one
>> tries to free it. But this usually happens only if there are multiple
>> dynamic libraries using the same static library — do we have more than just
>> Chromium.framework?
>> —Jens
>>
>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
    http://groups.google.com/group/chromium-dev
-~----------~----~----~----~------~----~------~--~---

Reply via email to