[GHC] #9271: Avoid unnecessary clock_gettime() syscalls in GC stats.
GHC
ghc-devs at haskell.org
Sat Jul 5 21:15:02 UTC 2014
#9271: Avoid unnecessary clock_gettime() syscalls in GC stats.
-------------------------------------------+-------------------------------
Reporter: brbr | Owner: simonmar
Type: task | Status: new
Priority: normal | Milestone:
Component: Runtime System | Version: 7.8.2
Keywords: | Operating System: POSIX
Architecture: Unknown/Multiple | Type of failure:
Difficulty: Easy (less than 1 hour) | None/Unknown
Blocked By: | Test Case:
Related Tickets: | Blocking:
-------------------------------------------+-------------------------------
Avoid unnecessary clock_gettime() syscalls in GC stats.
https://phabricator.haskell.org/D39
Avoiding the unnecessary call appears to save ~12ms of work per second.
That's 17 minutes a day!
Unsure if the frequency of this particular GC stats function for this
`fib` program is the same for all Haskell programs..
Simple benchmark program with before/after `strace -c` output:
{{{
fib 0 = 0
fib 1 = 1
fib n = fib (n-1) + fib (n-2)
main = putStrLn $ show (fib 35)
}}}
Before:
{{{
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
52.73 0.110738 5 20318 clock_gettime
44.16 0.092733 5 20319 rt_sigprocmask
2.14 0.004503 8 532 rt_sigreturn
0.24 0.000514 21 25 mmap
...
0.00 0.000008 8 1 set_robust_list
0.00 0.000007 7 1 select
------ ----------- ----------- --------- --------- ----------------
100.00 0.210001 41285 10 total
}}}
After:
{{{
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
59.24 0.094986 5 20319 rt_sigprocmask
36.85 0.059094 6 10161 clock_gettime
2.78 0.004463 8 527 rt_sigreturn
0.26 0.000417 17 25 mmap
...
0.00 0.000007 7 1 set_robust_list
0.00 0.000006 6 1 select
------ ----------- ----------- --------- --------- ----------------
100.00 0.160354 31123 10 total
}}}
`nofib` results:
{{{
--------------------------------------------------------------------------------
Program Size Allocs Runtime Elapsed TotalMem
--------------------------------------------------------------------------------
anna -0.0% 0.0% 0.10 0.10 0.0%
ansi -0.0% 0.0% 0.00 0.00 0.0%
atom -0.0% 0.0% +0.4% 0.0% 0.0%
awards -0.0% 0.0% 0.00 0.00 0.0%
banner -0.0% 0.0% 0.00 0.00 0.0%
bernouilli -0.0% 0.0% 0.15 0.15 0.0%
binary-trees -0.0% 0.0% +0.3% +0.3% 0.0%
boyer -0.0% 0.0% 0.04 0.04 0.0%
boyer2 -0.0% 0.0% 0.00 0.00 0.0%
bspt -0.0% 0.0% 0.01 0.01 0.0%
cacheprof -0.0% -0.0% +0.5% +0.5% +1.8%
calendar -0.0% 0.0% 0.00 0.00 0.0%
cichelli -0.0% 0.0% 0.08 0.08 0.0%
circsim -0.0% 0.0% -0.6% -0.2% 0.0%
clausify -0.0% 0.0% 0.03 0.03 0.0%
comp_lab_zift -0.0% 0.0% 0.18 0.18 0.0%
compress -0.0% 0.0% 0.15 0.15 0.0%
compress2 -0.0% 0.0% 0.16 0.16 0.0%
constraints -0.0% 0.0% -0.4% -0.2% 0.0%
cryptarithm1 -0.0% 0.0% +0.4% +0.7% 0.0%
cryptarithm2 -0.0% 0.0% 0.01 0.01 0.0%
cse -0.0% 0.0% 0.00 0.00 0.0%
eliza -0.0% 0.0% 0.00 0.00 0.0%
event -0.0% 0.0% 0.14 0.14 0.0%
exp3_8 -0.0% 0.0% 0.19 0.19 0.0%
expert -0.0% 0.0% 0.00 0.00 0.0%
fannkuch-redux -0.0% +0.0% +0.3% +0.1% 0.0%
fasta -0.0% 0.0% +0.8% +1.2% 0.0%
fem -0.0% 0.0% 0.02 0.02 0.0%
fft -0.0% 0.0% 0.04 0.04 0.0%
fft2 -0.0% 0.0% 0.05 0.05 0.0%
fibheaps -0.0% 0.0% 0.02 0.02 0.0%
fish -0.0% 0.0% 0.01 0.01 0.0%
fluid -0.0% 0.0% 0.01 0.01 0.0%
fulsom -0.0% 0.0% -2.3% -2.3% 0.0%
gamteb -0.0% 0.0% 0.03 0.03 0.0%
gcd -0.0% 0.0% 0.03 0.03 0.0%
gen_regexps -0.0% 0.0% 0.00 0.00 0.0%
genfft -0.0% 0.0% 0.04 0.04 0.0%
gg -0.0% 0.0% 0.02 0.02 0.0%
grep -0.0% 0.0% 0.00 0.00 0.0%
hidden -0.0% 0.0% +1.0% +1.5% 0.0%
hpg -0.0% 0.0% 0.17 0.17 0.0%
ida -0.0% 0.0% 0.07 0.07 0.0%
infer -0.0% 0.0% 0.06 0.06 0.0%
integer -0.0% 0.0% -5.0% -4.9% 0.0%
integrate -0.0% 0.0% 0.13 0.13 0.0%
k-nucleotide -0.0% 0.0% -0.4% -0.4% 0.0%
kahan -0.0% 0.0% -0.7% 0.0% 0.0%
knights -0.0% 0.0% 0.01 0.01 0.0%
lcss -0.0% 0.0% +1.3% +0.9% 0.0%
life -0.0% 0.0% -2.4% -2.4% 0.0%
lift -0.0% 0.0% 0.00 0.00 0.0%
listcompr -0.0% 0.0% 0.07 0.07 0.0%
listcopy -0.0% 0.0% 0.09 0.09 0.0%
maillist -0.0% +0.0% 0.06 0.06 -1.1%
mandel -0.0% 0.0% 0.06 0.06 0.0%
mandel2 -0.0% 0.0% 0.00 0.00 0.0%
minimax -0.0% 0.0% 0.00 0.00 0.0%
mkhprog -0.0% 0.0% 0.00 0.00 0.0%
multiplier -0.0% 0.0% 0.12 0.12 0.0%
n-body -0.0% 0.0% +1.4% +1.5% 0.0%
nucleic2 -0.0% 0.0% 0.05 0.05 0.0%
para -0.0% 0.0% 0.0% 0.0% 0.0%
paraffins -0.0% 0.0% 0.12 0.12 0.0%
parser -0.0% 0.0% 0.03 0.03 0.0%
parstof -0.0% 0.0% 0.00 0.00 0.0%
pic -0.0% 0.0% 0.00 0.00 0.0%
pidigits -0.0% 0.0% -0.4% -0.4% 0.0%
power -0.0% 0.0% 0.0% +0.4% +3.6%
pretty -0.0% 0.0% 0.00 0.00 0.0%
primes -0.0% 0.0% 0.07 0.07 0.0%
primetest -0.0% 0.0% 0.07 0.07 0.0%
prolog -0.0% 0.0% 0.00 0.00 0.0%
puzzle -0.0% 0.0% 0.14 0.14 0.0%
queens -0.0% 0.0% 0.01 0.01 0.0%
reptile -0.0% 0.0% 0.02 0.02 0.0%
reverse-complem -0.0% 0.0% 0.12 0.12 0.0%
rewrite -0.0% 0.0% 0.01 0.01 0.0%
rfib -0.0% 0.0% 0.02 0.02 0.0%
rsa -0.0% 0.0% 0.02 0.02 0.0%
scc -0.0% 0.0% 0.00 0.00 0.0%
sched -0.0% 0.0% 0.02 0.02 0.0%
scs -0.0% 0.0% -0.8% -0.8% 0.0%
simple -0.0% 0.0% 0.0% 0.0% 0.0%
solid -0.0% 0.0% 0.13 0.13 0.0%
sorting -0.0% 0.0% 0.00 0.00 0.0%
spectral-norm -0.0% 0.0% 0.0% 0.0% 0.0%
sphere -0.0% 0.0% 0.04 0.04 0.0%
symalg -0.0% 0.0% 0.01 0.01 0.0%
tak -0.0% 0.0% 0.01 0.01 0.0%
transform -0.0% 0.0% 0.0% 0.0% 0.0%
treejoin -0.0% 0.0% 0.16 0.16 0.0%
typecheck -0.0% 0.0% 0.20 0.20 0.0%
veritas -0.0% 0.0% 0.00 0.00 0.0%
wang -0.0% 0.0% 0.13 0.13 0.0%
wave4main -0.0% 0.0% 0.0% 0.0% 0.0%
wheel-sieve1 -0.0% 0.0% 0.0% 0.0% 0.0%
wheel-sieve2 -0.0% 0.0% -1.6% -2.4% 0.0%
x2n1 -0.0% 0.0% 0.00 0.00 0.0%
--------------------------------------------------------------------------------
Min -0.0% -0.0% -5.0% -4.9% -1.1%
Max -0.0% +0.0% +1.4% +1.5% +3.6%
Geometric Mean -0.0% -0.0% -0.3% -0.3% +0.0%
}}}
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9271>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list