digitalmars.D - [OT] GC without paging
- renoX (25/25) Aug 30 2007 Hello,
- Sean Kelly (5/5) Aug 30 2007 Yup, it's a good technique. About the only drawback is that it requires...
- Ingo Oeser (7/11) Sep 02 2007 Even better: D defines that a GC must EXIST, not what kind of GC you
- Sean Kelly (4/15) Sep 02 2007 Link-time switchable, actually. I'd originally considered run-time
- Ingo Oeser (6/11) Sep 02 2007 That is amazing enough for me. So better keep that stuff clean
Hello, this is not strictly related to D, but as D's runtime have a GC, I thought it can be useful to show an interesting research on GCs. Traditional GCs perform poorly when memory gets tight: some of the page managed by the GC gets evicted to the disk by the Virtual memory Manager (VM) of the OS, but when the GC does a garbage collection run, it will swap in the evicted page which will cause the VM to evict another page, etc. The Bookmarking Collector (BC) is a GC which communicates with the VM to select the page to evict to avoid this memory trashing, it necessitates a (small) patch to the OS so that the VM and the GC can communicate, but the results are impressive compared to traditional GCs when there is memory pressure: improved runtime and reduced pause (even if BC is not a realtime GC). Here's the link to the video presentation (too bad, the questions at the end are difficult to hear): http://content.digitalwell.washington.edu/msr/external_release_talks_12_05_2005/12631/lecture.htm And the paper: http://www.cs.umass.edu/~emery/pubs/f034-hertz.pdf BC is a moving memory GC implemented in a JVM, so the results are not directly applicable to D, there's a non-moving variant of BC studied in the paper it gets nearly as good runtime as BC, but the pause are not as good. I hope some of you will find this interesting. Regards, renoX
Aug 30 2007
Yup, it's a good technique. About the only drawback is that it requires VMM integration to work, so it isn't terribly portable. However, such a GC could fall back on normal mark/sweep if run on a platform it doesn't support. Sean
Aug 30 2007
Sean Kelly wrote:Yup, it's a good technique. About the only drawback is that it requires VMM integration to work, so it isn't terribly portable. However, such a GC could fall back on normal mark/sweep if run on a platform it doesn't support.Even better: D defines that a GC must EXIST, not what kind of GC you have to implement and how it must work :-) And your nice Tango library makes it even run time switchable AFAICS. So, people can really play here and you guys did a damn good design here! Best Regards Ingo Oeser
Sep 02 2007
Ingo Oeser wrote:Sean Kelly wrote:Link-time switchable, actually. I'd originally considered run-time switchable, but it introduced too many weird problems. SeanYup, it's a good technique. About the only drawback is that it requires VMM integration to work, so it isn't terribly portable. However, such a GC could fall back on normal mark/sweep if run on a platform it doesn't support.Even better: D defines that a GC must EXIST, not what kind of GC you have to implement and how it must work :-) And your nice Tango library makes it even run time switchable AFAICS.
Sep 02 2007
Sean Kelly wrote:Ingo Oeser wrote:[GC]That is amazing enough for me. So better keep that stuff clean and fast. Best Regards Ingo OeserAnd your nice Tango library makes it even run time switchable AFAICS.Link-time switchable, actually. I'd originally considered run-time switchable, but it introduced too many weird problems.
Sep 02 2007