Thanks for posting this. I’ve been very interested in heap size / garbage collection tuning in Java as from my experience it can indeed make a world of difference. I have no experience with this in Haskell though.
I was wondering, do you know what the application throughput is with the default GC parameters?
I understand Haskell will inherently produce more garbage since it is a true functional language. An application throughput of just 64% seems low when compared to the numbers I’m used to in Java. That’s why I am wondering.
Thanks in advance!
I got the following after running a relay with default parameters for an hour.
22380288 1225752 2285880 0.204 0.209 80.196 4146.292 0 0 (Gen: 1)
3736 0.000 0.000
36,327,280,448 bytes allocated in the heap
8,365,121,336 bytes copied during GC
1,552,878,096 bytes maximum residency (20 sample(s))
31,581,680 bytes maximum slop
3099 MiB total memory in use (0 MB lost due to fragmentation)
Tot time (elapsed) Avg pause Max pause
Gen 0 1197 colls, 1197 par 13.495s 6.840s 0.0057s 0.0697s
Gen 1 20 colls, 19 par 7.179s 3.752s 0.1876s 1.6108s
Parallel GC work balance: 33.57% (serial 0%, perfect 100%)
TASKS: 17 (1 bound, 14 peak workers (16 total), using -N2)
SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled)
INIT time 0.002s ( 0.002s elapsed)
MUT time 59.519s (4135.698s elapsed)
GC time 20.674s ( 10.592s elapsed)
EXIT time 0.004s ( 0.009s elapsed)
Total time 80.199s (4146.300s elapsed)
Alloc rate 610,346,326 bytes per MUT second
Productivity 74.2% of total user, 99.7% of total elapsed