[GHC] #9271: Avoid unnecessary clock_gettime() syscalls in GC stats.

#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

#9271: Avoid unnecessary clock_gettime() syscalls in GC stats. -------------------------------+------------------------------------------- Reporter: brbr | Owner: simonmar Type: task | Status: new Priority: normal | Milestone: Component: Runtime | Version: 7.8.2 System | Keywords: Resolution: | Architecture: Unknown/Multiple Operating System: POSIX | Difficulty: Easy (less than 1 hour) Type of failure: | Blocked By: None/Unknown | Related Tickets: Test Case: | Blocking: | -------------------------------+------------------------------------------- Comment (by rwbarton): Wow, nice catch! -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9271#comment:1 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#9271: Avoid unnecessary clock_gettime() syscalls in GC stats. -------------------------------+------------------------------------------- Reporter: brbr | Owner: brbr Type: task | Status: new Priority: normal | Milestone: Component: Runtime | Version: 7.8.2 System | Keywords: Resolution: | Architecture: Unknown/Multiple Operating System: POSIX | Difficulty: Easy (less than 1 hour) Type of failure: | Blocked By: None/Unknown | Related Tickets: Test Case: | Blocking: | -------------------------------+------------------------------------------- Changes (by brbr): * owner: simonmar => brbr -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9271#comment:2 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#9271: Avoid unnecessary clock_gettime() syscalls in GC stats. -------------------------------+------------------------------------------- Reporter: brbr | Owner: brbr Type: task | Status: closed Priority: normal | Milestone: Component: Runtime | Version: 7.8.2 System | Keywords: Resolution: fixed | Architecture: Unknown/Multiple Operating System: POSIX | Difficulty: Easy (less than 1 hour) Type of failure: | Blocked By: None/Unknown | Related Tickets: Test Case: | Blocking: | -------------------------------+------------------------------------------- Changes (by brbr): * status: new => closed * resolution: => fixed Comment: Merged in: https://phabricator.haskell.org/rGHC3c9fc104337a142fe4f375d30d7a6b81d55a70c1 -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9271#comment:3 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler
participants (1)
-
GHC