
#9706: New block-structured heap organization for 64-bit -------------------------------------+------------------------------------- Reporter: ezyang | Owner: gcampax Type: task | Status: new Priority: normal | Milestone: Component: Runtime | Version: 7.8.3 System | Keywords: Resolution: | Architecture: Unknown/Multiple Operating System: | Difficulty: Unknown Unknown/Multiple | Blocked By: Type of failure: | Related Tickets: None/Unknown | Test Case: | Blocking: | Differential Revisions: D524 | -------------------------------------+------------------------------------- Comment (by gcampax): nofib results from patch in D524: {{{ -------------------------------------------------------------------------------- Program Size Allocs Runtime Elapsed TotalMem -------------------------------------------------------------------------------- anna -0.0% 0.0% 0.107 0.107 0.0% ansi -0.1% 0.0% 0.000 0.000 0.0% atom -0.1% 0.0% -3.6% -3.6% 0.0% awards -0.0% 0.0% 0.000 0.000 0.0% banner -0.1% 0.0% 0.000 0.000 0.0% bernouilli -0.1% 0.0% -1.2% -1.2% 0.0% binary-trees -0.1% 0.0% -4.6% -4.6% 0.0% boyer -0.1% 0.0% 0.046 0.046 0.0% boyer2 -0.1% 0.0% 0.009 0.009 0.0% bspt -0.0% 0.0% 0.010 0.010 0.0% cacheprof -0.0% -0.3% +0.2% +0.2% +3.5% calendar -0.0% 0.0% 0.000 0.000 0.0% cichelli -0.1% 0.0% 0.088 0.088 +3.2% circsim -0.1% 0.0% -1.0% -1.0% 0.0% clausify -0.1% 0.0% 0.041 0.040 0.0% comp_lab_zift -0.1% 0.0% -2.0% -1.9% 0.0% compress -0.1% 0.0% 0.189 0.189 0.0% compress2 -0.1% 0.0% 0.173 0.173 0.0% constraints -0.1% 0.0% -6.0% -6.0% 0.0% cryptarithm1 -0.1% 0.0% -0.4% -0.3% 0.0% cryptarithm2 -0.1% 0.0% 0.011 0.011 0.0% cse -0.1% 0.0% 0.002 0.002 0.0% eliza -0.1% 0.0% 0.001 0.001 0.0% event -0.1% 0.0% 0.153 0.153 0.0% exp3_8 -0.1% 0.0% -1.4% -1.4% 0.0% expert -0.0% 0.0% 0.000 0.000 0.0% fannkuch-redux -0.1% 0.0% +0.6% +0.6% 0.0% fasta -0.0% 0.0% +0.1% +0.2% 0.0% fem -0.1% 0.0% 0.024 0.024 0.0% fft -0.0% 0.0% 0.034 0.034 0.0% fft2 -0.0% 0.0% 0.049 0.049 0.0% fibheaps -0.1% 0.0% 0.030 0.030 0.0% fish -0.1% 0.0% 0.013 0.013 0.0% fluid -0.0% 0.0% 0.010 0.010 0.0% fulsom -0.1% 0.0% -5.5% -5.5% 0.0% gamteb -0.1% 0.0% 0.042 0.042 0.0% gcd -0.1% 0.0% 0.048 0.048 0.0% gen_regexps -0.1% 0.0% 0.000 0.000 0.0% genfft -0.1% 0.0% 0.035 0.035 0.0% gg -0.0% 0.0% 0.011 0.011 0.0% grep -0.0% 0.0% 0.000 0.000 0.0% hidden -0.1% 0.0% -9.1% -9.0% 0.0% hpg -0.1% 0.0% 0.114 0.114 0.0% ida -0.1% 0.0% 0.090 0.090 0.0% infer -0.1% 0.0% 0.052 0.052 0.0% integer -0.1% 0.0% +0.9% +1.0% 0.0% integrate -0.1% 0.0% 0.121 0.121 0.0% k-nucleotide -0.0% 0.0% -10.8% -10.8% 0.0% kahan -0.0% 0.0% +0.1% +0.1% 0.0% knights -0.1% 0.0% 0.005 0.005 0.0% lcss -0.1% 0.0% -6.8% -6.8% 0.0% life -0.1% 0.0% -4.1% -4.0% 0.0% lift -0.0% 0.0% 0.002 0.002 0.0% listcompr -0.1% 0.0% 0.101 0.101 0.0% listcopy -0.1% 0.0% 0.107 0.107 0.0% maillist -0.1% 0.0% 0.060 0.060 +2.2% mandel -0.0% 0.0% 0.077 0.077 0.0% mandel2 -0.1% 0.0% 0.004 0.004 0.0% minimax -0.0% 0.0% 0.003 0.003 0.0% mkhprog -0.1% 0.0% 0.003 0.003 0.0% multiplier -0.1% 0.0% 0.147 0.147 0.0% n-body -0.1% 0.0% +1.5% +1.5% 0.0% nucleic2 -0.1% 0.0% 0.068 0.068 0.0% para -0.1% 0.0% +1.6% +1.5% 0.0% paraffins -0.1% 0.0% 0.112 0.112 0.0% parser -0.1% 0.0% 0.030 0.030 0.0% parstof -0.1% 0.0% 0.006 0.006 0.0% pic -0.1% 0.0% 0.007 0.007 0.0% pidigits -0.1% 0.0% -0.1% -0.0% 0.0% power -0.1% 0.0% -7.8% -7.8% 0.0% pretty -0.1% 0.0% 0.000 0.000 0.0% primes -0.1% 0.0% 0.070 0.070 0.0% primetest -0.1% 0.0% 0.130 0.130 0.0% prolog -0.1% 0.0% 0.002 0.002 0.0% puzzle -0.1% 0.0% 0.148 0.148 0.0% queens -0.1% 0.0% 0.015 0.015 0.0% reptile -0.1% 0.0% 0.011 0.011 0.0% reverse-complem -0.1% 0.0% 0.117 0.117 0.0% rewrite -0.1% 0.0% 0.018 0.018 0.0% rfib -0.1% 0.0% 0.020 0.020 0.0% rsa -0.1% 0.0% 0.028 0.028 0.0% scc -0.1% 0.0% 0.000 0.000 0.0% sched -0.1% 0.0% 0.023 0.023 0.0% scs -0.0% 0.0% -2.4% -2.5% 0.0% simple -0.0% 0.0% -2.7% -2.7% 0.0% solid -0.1% 0.0% 0.154 0.154 0.0% sorting -0.1% 0.0% 0.002 0.002 0.0% spectral-norm -0.1% 0.0% -0.0% -0.0% 0.0% sphere -0.1% 0.0% 0.053 0.053 0.0% symalg -0.1% 0.0% 0.015 0.015 0.0% tak -0.1% 0.0% 0.016 0.016 0.0% transform -0.1% 0.0% -1.2% -1.1% 0.0% treejoin -0.1% 0.0% 0.144 0.144 0.0% typecheck -0.1% 0.0% -13.9% -13.8% 0.0% veritas -0.0% 0.0% 0.002 0.002 0.0% wang -0.1% 0.0% 0.119 0.119 0.0% wave4main -0.1% 0.0% -3.4% -3.4% 0.0% wheel-sieve1 -0.1% 0.0% -0.3% -0.4% 0.0% wheel-sieve2 -0.1% 0.0% -2.8% -2.8% 0.0% x2n1 -0.1% 0.0% 0.005 0.005 0.0% -------------------------------------------------------------------------------- Min -0.1% -0.3% -13.9% -13.8% 0.0% Max -0.0% 0.0% +1.6% +1.5% +3.5% Geometric Mean -0.1% -0.0% -2.9% -2.9% +0.1% }}} I think it's also significant to look at GC elapsed time: {{{ ------------------------------------------------------------------------------- Program nofib-log-old nofib-log-new ------------------------------------------------------------------------------- anna 0.025 0.024 ansi 0.000 0.000 atom 0.283 -6.4% awards 0.000 0.000 banner 0.000 0.000 bernouilli 0.075 0.072 binary-trees 0.323 -6.6% boyer 0.023 0.021 boyer2 0.004 0.003 bspt 0.005 0.005 cacheprof 0.145 0.143 calendar 0.000 0.000 cichelli 0.017 0.016 circsim 0.577 -6.3% clausify 0.015 0.013 comp_lab_zift 0.098 0.094 compress 0.082 0.079 compress2 0.145 0.140 constraints 2.335 -8.8% cryptarithm1 0.022 0.021 cryptarithm2 0.001 0.001 cse 0.001 0.001 eliza 0.000 0.000 event 0.088 0.082 exp3_8 0.039 0.037 expert 0.000 0.000 fannkuch-redux 0.007 0.007 fasta 0.004 0.004 fem 0.006 0.006 fft 0.023 0.022 fft2 0.019 0.018 fibheaps 0.013 0.012 fish 0.001 0.001 fluid 0.002 0.002 fulsom 0.205 -7.4% gamteb 0.009 0.009 gcd 0.001 0.001 gen_regexps 0.000 0.000 genfft 0.015 0.014 gg 0.005 0.005 grep 0.000 0.000 hidden 0.022 0.021 hpg 0.018 0.017 ida 0.028 0.027 infer 0.026 0.024 integer 0.025 0.024 integrate 0.002 0.002 k-nucleotide 0.025 0.024 kahan 0.001 0.000 knights 0.001 0.001 lcss 0.359 -8.8% life 0.155 0.143 lift 0.000 0.001 listcompr 0.005 0.005 listcopy 0.006 0.005 maillist 0.013 0.012 mandel 0.004 0.004 mandel2 0.001 0.001 minimax 0.001 0.001 mkhprog 0.001 0.001 multiplier 0.042 0.039 n-body 0.009 0.009 nucleic2 0.005 0.004 para 0.095 0.088 paraffins 0.099 0.091 parser 0.012 0.011 parstof 0.002 0.002 pic 0.004 0.004 pidigits 0.044 0.043 power 0.282 -11.9% pretty 0.000 0.000 primes 0.023 0.021 primetest 0.002 0.002 prolog 0.001 0.001 puzzle 0.019 0.018 queens 0.000 0.000 reptile 0.005 0.004 reverse-complem 0.001 0.001 rewrite 0.001 0.001 rfib 0.000 0.000 rsa 0.001 0.001 scc 0.000 0.000 sched 0.002 0.002 scs 0.243 -6.2% simple 0.081 0.074 solid 0.087 0.080 sorting 0.001 0.001 spectral-norm 0.000 0.000 sphere 0.005 0.005 symalg 0.001 0.001 tak 0.000 0.000 transform 0.095 0.089 treejoin 0.092 0.087 typecheck 0.013 0.012 veritas 0.001 0.001 wang 0.090 0.087 wave4main 0.118 0.110 wheel-sieve1 0.031 0.029 wheel-sieve2 0.165 0.159 x2n1 0.000 0.000 -1 s.d. ----- -9.7% +1 s.d. ----- -5.9% Average ----- -7.8% }}} Results are comparing 4897e7 (up to date master) with a2de1f (the patch), on a 16 core Intel Xeon 2.40GHz, 48GB RAM total, no swap, overcommit_memory = 0 (the default), on a x86_64 Linux 3.12.9 It would be interesting to see why certain programs are regressing. They seem to be multithreaded programs, so it could be that we're spending more time in the memory allocator, which is locked and kills multithreading. Or it could be that they trigger pessimal allocator behavior. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9706#comment:18 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler