Hacker News new | past | comments | ask | show | jobs | submit login

Simply regarding the pauseless GC aspect, what is preventing someone from adding an existing realtime garbage collector like Rollendurchmesserzeitsammler (hereinafter rdmzs) to OpenJDK? Obviously rdmzs is designed for audio processing, as it bases its heap size on the audio processing cycle time, but are these similar GC concepts, or is the "pauseless GC" mentioned here something completely different from what rdmzs does?



I'm not familiar with the internals of rdmzs, but there's a fair bit of actual technical information available about the Azul collector. It makes heavy use of manipulating virtual address mappings, and by this gains the property of being relatively insensitive to heap size.

My impression is that it's a copying collector that works on pages at a time. When a page is relocated, it's marked protected in the memory address mappings, allowing the runtime to trap and fix any stale pointers at the moment they are used. At the same time, the collector proper uses memory fences to keep track of what pointers have been fixed, eventually allowing the protected pages to be released from the memory map.

I don't know GC literature very well, but AFAIK this design is novell. The original implementation made heavy use of high performance memory primitives supplied by the Azul hardware. I gather they now have found a way of running with acceptable performance on commodity x86 processors under the virtualization.


This sounds brilliant, virtual memory is a hardware feature which is currently sorely underused in user space. Unfortunately, most mainstream kernels don't give you deep enough access to the VM subsystem for serious trickery. For example, you can't map the same memory at multiple addresses unless it's file-backed; there's just no API for it. I have to admit I don't know if this would cause problems with caches on certain hardware.

In any case, you're free to mess with (virtualised) page tables when the parent is a hypervisor.


I agree.

While I'm not a systems programmer, from what I've read (particularly from Poul-Henning Kamp) I think enriching the virtual memory abstraction is going to be a key area for OS innovation shortly. MMU's and the signaling mechanisms offer a unique ability to trap events happening dynamically within your program. I think by revising the userland/kernel API, I think there's likely many interesting ways for userland software to better utilize the MMU's in modern processors.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: