[Mono-dev] Mac Boehm CG question

matteo tesser matteo.tesser at gmail.com
Mon Jan 25 20:16:32 EST 2010

about an year ago I posted the following bug
because  we realized that the performance problem in our multi-thread
app was related to memory management:

By removing the #define line as you proposed, the performance problem
disappear and bug 402833 seems resolved.
At the moment I made also some preliminary tests on our multi-thread
app and performances improve considerably.


On Mon, Jan 25, 2010 at 10:59 PM, Tom Philpot <tom.philpot at logos.com> wrote:
> Rodrigo,
> Thanks for the input. Any of the other Mono/MacOS X folks have an opinion on
> this change? I've been running our heavily multi-threaded app which embeds
> Mono and haven't seen any issues. We're going to start removing this #define
> on our build machine and our dev's Mono installs and see if we can detect
> any issues since the speed up is so significant in certain cases in our app.
> Tom
> On Jan 22, 2010, at 2:08 PM, Rodrigo Kumpera wrote:
> pthread mutexes on OSX are ridiculously slow. So no matter what you do, GC
> performance will be significantly worse than on linux.
> But we should check if this change is ok if it does give a nice boost.
> On Fri, Jan 22, 2010 at 8:05 PM, Tom Philpot <tom.philpot at logos.com> wrote:
>> While investigating some performance problems in our application which
>> uses the embedded Mono runtime on Mac OS X targeting 10.5 and 10.6, I
>> noticed that several operations spent an extreme amount of time in GC_lock.
>> That code lead me back to gcconfig.h where NO_PTHREAD_TRYLOCK is defined.
>> I've commented out that #define it on my local Mono build and things seem
>> MUCH faster. In fact I'm now able to do real work on more than 2 threads
>> without a ton of overhead.
>> The question is now, does this check still need to be there for later
>> versions of Mac OS X? The original commit was back in August 2003, which was
>> probably around the timeframe of 10.2 and 10.3 and definitely before the
>> Intel Macs. Also, since I don't have a PPC to test on, I didn't comment that
>> #define.
>> ws1048-snow:mono tom.philpot$ svn diff libgc/include/private/gcconfig.h
>> Index: libgc/include/private/gcconfig.h
>> ===================================================================
>> --- libgc/include/private/gcconfig.h    (revision 150077)
>> +++ libgc/include/private/gcconfig.h    (working copy)
>> @@ -329,7 +329,7 @@
>>  #    define GETPAGESIZE() getpagesize()
>>       /* There seems to be some issues with trylock hanging on darwin.
>> This
>>          should be looked into some more */
>> -#     define NO_PTHREAD_TRYLOCK
>> +//#     define NO_PTHREAD_TRYLOCK
>>  #   elif defined(__arm__)
>>  #    define ARM
>>  #    define mach_type_known
>> _______________________________________________
>> Mono-devel-list mailing list
>> Mono-devel-list at lists.ximian.com
>> http://lists.ximian.com/mailman/listinfo/mono-devel-list
> _______________________________________________
> Mono-devel-list mailing list
> Mono-devel-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-devel-list

More information about the Mono-devel-list mailing list