[GHC] #9706: New block-structured heap organization for 64-bit
GHC
ghc-devs at haskell.org
Thu Nov 27 02:10:55 UTC 2014
#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
More information about the ghc-tickets
mailing list