[Mono-dev] mach kernel support for sgen
gnorton at novell.com
Thu Jun 17 16:41:15 EDT 2010
The boehm GC already uses mach ports for suspend/resume.
On 2010-06-17, at 4:26 PM, Tom Philpot wrote:
> Would any of these changes make a difference on the currently shipping garbage collector? Is this something that could be back-ported?
> On Jun 17, 2010, at 7:54 AM, Geoff Norton wrote:
>> I learned recently that one of our long standing issues one mach kernels (darwin specifically) that we chalked up to a bug in their implementation (specifically signal coalescing) is in fact a unfounded assumption by us. Guaranteeing 1 deliver per signal, (and infact the sem_init issue that plagued us historically) is only guaranteed for RT signals in POSIX Realtime Extension. As such I've started undertaking to move our runtime away from signals for thread managment on darwin and to use mach ports instead. With some help from Rodrigo, I got sgen playing nicely with mach ports last night for STW. This cuts about 50% off our sys time doing GC intensive benchmarks.
>> I've introduced a new set of helpers into utils for mach support and arch specific backends for x86 and amd64. It currently is only tested on apple, and certainly wont work anywhere else due to mono_mach_arch_get_tls_value_from_thread being 100% apple specific. Once we figure out what changes the runtime team would like to see I'll look at porting it to arm.
>> After getting these changes incubated, I'd like to start looking at moving our Thread.Abort/Interrupt/Suspend semantics to mach ports, as well as sdb's STW semantics.
More information about the Mono-devel-list