[GHC] #8835: 7.6.3 vs 7.8-RC performance regression
GHC
ghc-devs at haskell.org
Sun Mar 2 16:19:35 UTC 2014
#8835: 7.6.3 vs 7.8-RC performance regression
------------------------------+--------------------------------------------
Reporter: cbm80 | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 7.8.1-rc2
Keywords: | Operating System: Linux
Architecture: x86_64 | Type of failure: Runtime performance bug
(amd64) | Test Case:
Difficulty: Unknown | Blocking:
Blocked By: |
Related Tickets: |
------------------------------+--------------------------------------------
'''NOTE: code for this is on github [https://github.com/cbm80/Minimal]'''
I have a program that uses xml-conduit to parse nzb files, a file format
commonly found on Usenet.
Running the program
`./mini demo1.nzb +RTS -sstderr`
compiled with GHC 7.6.3 yields:
{{{
37,827,736 bytes allocated in the heap
703,392 bytes copied during GC
172,040 bytes maximum residency (2 sample(s))
35,024 bytes maximum slop
2 MB total memory in use (0 MB lost due to fragmentation)
Tot time (elapsed) Avg pause Max pause
Gen 0 71 colls, 0 par 0.00s 0.00s 0.0000s
0.0001s
Gen 1 2 colls, 0 par 0.00s 0.00s 0.0003s
0.0005s
TASKS: 3 (1 bound, 2 peak workers (2 total), using -N1)
SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled)
INIT time 0.00s ( 0.00s elapsed)
MUT time 0.01s ( 0.01s elapsed)
GC time 0.00s ( 0.00s elapsed)
EXIT time 0.00s ( 0.00s elapsed)
Total time 0.02s ( 0.02s elapsed)
Alloc rate 2,603,976,578 bytes per MUT second
Productivity 84.1% of total user, 86.9% of total elapsed
}}}
The same program, same libraries but compiled with `GHC 7.8.0.20140228`
gives:
{{{
11,217,541,448 bytes allocated in the heap
31,184,656 bytes copied during GC
6,540,288 bytes maximum residency (178 sample(s))
597,248 bytes maximum slop
19 MB total memory in use (5 MB lost due to fragmentation)
Tot time (elapsed) Avg pause Max
pause
Gen 0 20623 colls, 0 par 0.50s 0.41s 0.0000s
0.0008s
Gen 1 178 colls, 0 par 0.04s 0.05s 0.0003s
0.0009s'''
TASKS: 4 (1 bound, 3 peak workers (3 total), using -N1)
SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled)
INIT time 0.00s ( 0.00s elapsed)
MUT time 3.41s ( 3.50s elapsed)
GC time 0.55s ( 0.45s elapsed)
EXIT time 0.00s ( 0.00s elapsed)
Total time 3.96s ( 3.96s elapsed)
Alloc rate 3,293,236,224 bytes per MUT second
Productivity 86.1% of total user, 86.1% of total elapsed
}}}
While total memory usage always stays around 2 to 3 mb when compiled with
GHC 7.6.3, even if using bigger nzb files (try demo2.nzb), the 7.8-RC
compiled program eats huge amounts of memory and becomes very slow. Using
+RTS -S shows even more worrying GC differences.
Unfortunately I can't tell whether the culprit is in one of the libraries
or in the compiler.
GHC 7.8-RC used was `ghc-7.8.0.20140228-x86_64-unknown-linux-deb7.tar.xz`
from [http://www.haskell.org/ghc/dist/7.8.1-rc2]
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/8835>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list