tag:blogger.com,1999:blog-273593670040001243.post4079578118675732413..comments2008-10-24T23:33:44.980-07:00Comments on Useless Factor: An idea for garbage collection researchDaniel Ehrenberghttp://www.blogger.com/profile/00902922561603041049noreply@blogger.comBlogger6125tag:blogger.com,1999:blog-273593670040001243.post-55073053352591330332008-06-25T14:02:00.000-07:002008-06-25T14:02:00.000-07:00Anonymous,To your first question, I didn't mean to...Anonymous,<BR/><BR/>To your first question, I didn't mean to imply that. I should change the wording.<BR/><BR/>To your second question, it seems that, in practice, virtual read barriers through temporary memory protection is much, much, much more efficient than actual read barriers. This is only true if traps are sprung rarely, which should be true in well-designed collectors. Write barriers for things like keeping track of old to young pointers, or for maintaining the tricolor invariant during incremental/concurrent marking, don't seem so bad. Sapphire hasn't been benchmarked enough, though, to know if it's actually faster than Appel's concurrent copying collector using memory protection. (There is no publicly available implementation, unfortunately.)Daniel Ehrenberghttp://www.blogger.com/profile/00902922561603041049noreply@blogger.comtag:blogger.com,1999:blog-273593670040001243.post-53524848466784308082008-06-25T13:26:00.000-07:002008-06-25T13:26:00.000-07:00First of all, I really appreciate you writing this...First of all, I really appreciate you writing this blog! <BR/><BR/>Now, I have a few questions:<BR/><BR/>When you said<BR/> "One idea is that this would be useful for large servers with many cores that are under memory pressure. Existing algorithms which depend on page faults can be slow when those faults occur."<BR/><BR/>Were those two seperate thoughts, or are you implying that GC's that use page faults perform slower on large heap/multicore boxeS?<BR/><BR/>My second question is regarding the choice of read or write barriers vs. page faults for concurrent copying.<BR/><BR/> Though a page fault is much less performant then a barrier when it occurs, how does it compare to the overhead of having barriers on *all* pointer/reference/object read/writes (Which I believe is neccessary for concurrent collection, no?)<BR/><BR/>I would love to hear your thoughts on this or if you have any suggestions on papers which adderss this question, I'd love to read those too.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-273593670040001243.post-85558275772184311582008-06-11T14:35:00.000-07:002008-06-11T14:35:00.000-07:00James,Oops, I suppose that when you said "shared m...James,<BR/><BR/>Oops, I suppose that when you said "shared memory" you meant "shared memory". My bad. Anyway, adapting GC algorithms to non-shared memory is orthogonal to the problem I'm trying to solve, which is to make a fast concurrent compacting GC with minimal space overhead. It could be used in an environment with non-shared memory. But maintaining lots of little separate heaps isn't always a good idea, as it can cause external fragmentation if done badly.Daniel Ehrenberghttp://www.blogger.com/profile/00902922561603041049noreply@blogger.comtag:blogger.com,1999:blog-273593670040001243.post-27805049349548399832008-06-11T13:47:00.000-07:002008-06-11T13:47:00.000-07:00I'm only using "shared" memory in the context of s...I'm only using "shared" memory in the context of shared versus lock-free thread-specific memory as in Erlang. Also in Dos days we had a couple of simple but very useful tools for memory isolation - mark/release in Turbo Pascal, and multiple subheap capability in TS Modula-2.<BR/><BR/>JamesAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-273593670040001243.post-11911435206319195012008-06-11T13:26:00.000-07:002008-06-11T13:26:00.000-07:00I'm sure they'll maintain relevant for a good whil...I'm sure they'll maintain relevant for a good while. I'm not sure exactly what you mean by "shared" but if you mean uniform access, I don't think I'm smart enough right now to make an efficient garbage collector for NUMA architectures which takes into account the non-uniformity of memory access times. I'd imagine it'd take a shape similar to distributed memory designs. This is my first project. Anyway, I don't have a NUMA machine to play around with; people don't really use them yet.Daniel Ehrenberghttp://www.blogger.com/profile/00902922561603041049noreply@blogger.comtag:blogger.com,1999:blog-273593670040001243.post-43296178579459660782008-06-11T11:44:00.000-07:002008-06-11T11:44:00.000-07:00Daniel,It would appear that you're focused on GC f...Daniel,<BR/><BR/>It would appear that you're focused on GC for shared memory environments. Do you think shared mem environments will maintain the same relevance for future software development?<BR/><BR/>JamesAnonymousnoreply@blogger.com