Tom,

  Looking back, apple had some issues with trylock in the 10.2/10.3 days, and 
this came over for safety when we did the initial osx86 port.  Its probably 
safe to make this change on x86 on trunk, but I'd like some metrics if you 
could.

#1, run it for a bit make sure you dont get any random hangs.
#2, do you have any perf increase numbers?

Thanks

Geoff

On 2010-01-25, at 4:59 PM, Tom Philpot 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.phil...@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@lists.ximian.com
>> http://lists.ximian.com/mailman/listinfo/mono-devel-list
>> 
> 
> _______________________________________________
> Mono-devel-list mailing list
> Mono-devel-list@lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-devel-list

_______________________________________________
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list

Reply via email to