Say you are
 implementing a network server, for example -- you don't want
 to have big spikes in the request latency due to GC.

   We think
   concurrent GC is unlikely to be practical in the Haskell
   setting, due to the extra synchronisation needed in the
   mutator.
    -- Simon Marlow

It is perfectly possible to do real-time concurrent garbage collection for Haskell, in an incremental fashion that guarantees a small maximum bound on each packet of GC work. The tradeoff is that the percentage of time devoted to GC in total is much greater, and the mutator must do more work to co-operate with the GC. In other words, the program runs slower. This tradeoff is the same for all real-time garbage collection schemes as far as I am aware, in any language - either you can have responsiveness, or you can have better overall application speed, but you cannot have both.

 So I wonder, to what degree is GC latency controllable in
 Haskell? It seems that, pending further research, we can not
 hope for concurrent GC.

There have been several papers on real-time GC in Haskell (including one of my own). There is no technical problem, only performance worries. This is what I think Simon means by "unlikely to be practical".

Regards,
    Malcolm

_______________________________________________
Glasgow-haskell-users mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to