| Thread overview | |||||||
|---|---|---|---|---|---|---|---|
|
August 30, 2007 [OT] GC without paging | ||||
|---|---|---|---|---|
| ||||
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 | ||||
August 30, 2007 Re: [OT] GC without paging | ||||
|---|---|---|---|---|
| ||||
Posted in reply to renoX | 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 | |||
September 02, 2007 Re: [OT] GC without paging | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Sean Kelly | 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
| |||
September 02, 2007 Re: [OT] GC without paging | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Ingo Oeser | Ingo Oeser wrote:
> 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.
Link-time switchable, actually. I'd originally considered run-time switchable, but it introduced too many weird problems.
Sean
| |||
September 02, 2007 Re: [OT] GC without paging | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Sean Kelly | Sean Kelly wrote: > Ingo Oeser wrote: [GC] >> And 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. That is amazing enough for me. So better keep that stuff clean and fast. Best Regards Ingo Oeser | |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply