Re: [Haskell-cafe] Re: Real-time garbage collection for Haskell

2010-03-08 Thread Curt Sampson
On 2010-03-06 12:42 + (Sat), Simon Marlow wrote: Usually I find keeping the nursery size (-A) close to the L2 cache size works best, although sometimes making it really big can be even better. Interesting to know. I got the impression that I was being encouraged to keep -A closer to the

[Haskell-cafe] Re: Real-time garbage collection for Haskell

2010-03-06 Thread Simon Marlow
On 06/03/10 06:56, Simon Cranshaw wrote: For settings we are using -N7 -A8m -qg. I'm surprised if turning off parallel GC improves things, unless you really aren't using all the cores (ThreadScope will tell you that). Do these flags give you an improvement in throughput, or just pause

[Haskell-cafe] Re: Real-time garbage collection for Haskell

2010-03-05 Thread Simon Marlow
On 04/03/2010 09:14, Curt Sampson wrote: However: now that Simon's spent a bunch of time experimenting with the runtime's GC settings and found a set that's mitigated much of our problem, other things are pushing their way up my priority list. Between that and an upcoming holiday, I'm probably

[Haskell-cafe] Re: Real-time garbage collection for Haskell

2010-03-05 Thread Simon Marlow
On 05/03/2010 05:03, wren ng thornton wrote: Simon Marlow wrote: So it would be pretty easy to provide something like disableMajorGC, enableMajorGC :: IO () Of course leaving it disabled too long could be bad, but that's your responsibility. It seems like it'd be preferable to have an

[Haskell-cafe] Re: Real-time garbage collection for Haskell

2010-03-05 Thread Simon Cranshaw
For settings we are using -N7 -A8m -qg. I don't know if they are really the optimal values but I haven't found a significant improvement on these yet. I tried -qb but that was slow. I tried larger values of A but that didn't seem to make a big difference. Also -N6 didn't make much difference.

Re: [Haskell-cafe] Re: Real-time garbage collection for Haskell

2010-03-04 Thread Curt Sampson
On 2010-03-02 14:17 + (Tue), Simon Marlow wrote: System.Mem.performGC is your friend, but if you're unlucky it might do a major GC and then you'll get more pause than you bargained for. Anybody calling that is a really poor unlucky sod, because, as far as I can tell from reading the

Re: [Haskell-cafe] Re: Real-time garbage collection for Haskell

2010-03-04 Thread Peter Verswyvelen
A fully concurrent GC running on multiple threads/cores might be great, but I guess this is difficult to implement and introduces a lot of overhead. For simple video games, it might work to always do a full GC per frame, but don't allow it to take more than T milliseconds. In a sense the GC

Re: [Haskell-cafe] Re: Real-time garbage collection for Haskell

2010-03-04 Thread wren ng thornton
Simon Marlow wrote: So it would be pretty easy to provide something like disableMajorGC, enableMajorGC :: IO () Of course leaving it disabled too long could be bad, but that's your responsibility. It seems like it'd be preferable to have an interface like: withMajorGCDisabled :: IO()

Re: [Haskell-cafe] Re: Real-time garbage collection for Haskell

2010-03-03 Thread Neil Davies
On 2 Mar 2010, at 21:38, Simon Marlow wrote: On 02/03/10 20:37, Luke Palmer wrote: On Tue, Mar 2, 2010 at 7:17 AM, Simon Marlowmarlo...@gmail.com wrote: For games, though, we have a very good point that occurs regularly where we know that all/most short-lived objects will no longer be

Re: [Haskell-cafe] Re: Real-time garbage collection for Haskell

2010-03-03 Thread Simon Marlow
On 03/03/2010 08:43, Neil Davies wrote: On 2 Mar 2010, at 21:38, Simon Marlow wrote: On 02/03/10 20:37, Luke Palmer wrote: On Tue, Mar 2, 2010 at 7:17 AM, Simon Marlowmarlo...@gmail.com wrote: For games, though, we have a very good point that occurs regularly where we know that all/most

[Haskell-cafe] Re: Real-time garbage collection for Haskell

2010-03-02 Thread Simon Marlow
On 01/03/2010 00:04, Luke Palmer wrote: On Sun, Feb 28, 2010 at 2:06 AM, Pavel Perikovperi...@gmail.com wrote: Did you really seen 100ms pauses?! I never did extensive research on this but my numbers are rather in microseconds range (below 1ms). What causes such a long garbage collection?

[Haskell-cafe] Re: Real-time garbage collection for Haskell

2010-03-02 Thread Simon Marlow
On 01/03/2010 14:16, Sönke Hahn wrote: On Monday 01 March 2010 01:04:37 am Luke Palmer wrote: On Sun, Feb 28, 2010 at 2:06 AM, Pavel Perikovperi...@gmail.com wrote: Did you really seen 100ms pauses?! I never did extensive research on this but my numbers are rather in microseconds range (below

[Haskell-cafe] Re: Real-time garbage collection for Haskell

2010-03-02 Thread Simon Marlow
On 01/03/2010 14:53, Thomas Schilling wrote: On 28 February 2010 05:20, Luke Palmerlrpal...@gmail.com wrote: I have seen some proposals around here for SoC projects and other things to try to improve the latency of GHC's garbage collector. I'm currently developing a game in Haskell, and even

Re: [Haskell-cafe] Re: Real-time garbage collection for Haskell

2010-03-02 Thread Malcolm Wallace
Both concurrent GC and incremental GC tend to add overheads to the mutator, because they need a read barrier. There was an incremental GC for GHC once [1], taking advantage of the built-in read barrier that we have whereby most closures are entered Was there a specific reason why that GC

[Haskell-cafe] Re: Real-time garbage collection for Haskell

2010-03-02 Thread Simon Marlow
On 01/03/2010 17:16, Sebastian Sylvan wrote: On Sun, Feb 28, 2010 at 5:20 AM, Luke Palmer lrpal...@gmail.com mailto:lrpal...@gmail.com wrote: I have seen some proposals around here for SoC projects and other things to try to improve the latency of GHC's garbage collector. I'm

[Haskell-cafe] Re: Real-time garbage collection for Haskell

2010-03-02 Thread Simon Marlow
On 02/03/2010 14:11, Malcolm Wallace wrote: Both concurrent GC and incremental GC tend to add overheads to the mutator, because they need a read barrier. There was an incremental GC for GHC once [1], taking advantage of the built-in read barrier that we have whereby most closures are entered

[Haskell-cafe] Re: Real-time garbage collection for Haskell

2010-03-02 Thread Luke Palmer
On Tue, Mar 2, 2010 at 7:17 AM, Simon Marlow marlo...@gmail.com wrote: For games, though, we have a very good point that occurs regularly where we know that all/most short-lived objects will no longer be referenced - at the start of a fresh frame. System.Mem.performGC is your friend, but if

[Haskell-cafe] Re: Real-time garbage collection for Haskell

2010-03-02 Thread Simon Marlow
On 02/03/10 20:37, Luke Palmer wrote: On Tue, Mar 2, 2010 at 7:17 AM, Simon Marlowmarlo...@gmail.com wrote: For games, though, we have a very good point that occurs regularly where we know that all/most short-lived objects will no longer be referenced - at the start of a fresh frame.

[Haskell-cafe] Re: Real-time garbage collection for Haskell

2010-02-28 Thread Heinrich Apfelmus
Luke Palmer wrote: I have seen some proposals around here for SoC projects and other things to try to improve the latency of GHC's garbage collector. I'm currently developing a game in Haskell, and even 100ms pauses are unacceptable for a real-time game. I'm calling out to people who have

Re: [Haskell-cafe] Re: Real-time garbage collection for Haskell

2010-02-28 Thread Derek Elkins
On Sun, Feb 28, 2010 at 10:03 AM, Heinrich Apfelmus apfel...@quantentunnel.de wrote: Luke Palmer wrote: I have seen some proposals around here for SoC projects and other things to try to improve the latency of GHC's garbage collector.  I'm currently developing a game in Haskell, and even 100ms