
#9221: (super!) linear slowdown of parallel builds on 40 core machine -------------------------------------+------------------------------------- Reporter: carter | Owner: Type: bug | Status: new Priority: high | Milestone: 7.12.1 Component: Compiler | Version: 7.8.2 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: Compile-time | Unknown/Multiple performance bug | Test Case: Blocked By: | Blocking: Related Tickets: #910 | Differential Revisions: -------------------------------------+------------------------------------- Comment (by slyfox): The selfcontained test contains 195 modules to build highlighting-kate: http://code.haskell.org/~slyfox/T9221__highlighting-kate-build- benchmark.tar.gz To run it you need to tweak a path to your 'ghc=' in '''mk.bash'''. On my 8 core box best results can be achieved by setting -A128M (or larger). The test is handy to run 'perf record' on it. My results for '''./mk.bash -j8 -A128M''': {{{ $ perf record -g ./mk.bash -j8 -A128M $ perf report -g + 15,42% 0,78% ghc_worker libc-2.21.so [.] __sched_yield + 15,08% 1,62% ghc_worker [kernel.vmlinux] [k] entry_SYSCALL_64 + 12,70% 0,38% ghc_worker [kernel.vmlinux] [k] sys_sched_yield + 10,91% 6,47% ghc_worker ghc-stage2 [.] clE_info + 10,50% 0,38% ghc_worker [kernel.vmlinux] [k] schedule + 9,14% 1,58% ghc_worker [kernel.vmlinux] [k] __schedule + 8,60% 0,00% ghc_worker [unknown] [.] 0x48032822f800c748 + 5,85% 5,64% ghc_worker ghc-stage2 [.] evacuate + 3,47% 0,94% ghc_worker ghc-stage2 [.] c7F_info + 2,91% 0,69% ghc_worker [kernel.vmlinux] [k] pick_next_task_fair + 2,70% 0,00% ghc_worker [unknown] [.] 0x0000000000000004 + 2,63% 2,28% ghc_worker ghc-stage2 [.] c2k_info + 2,55% 0,00% ghc_worker [unknown] [.] 0x2280f98148088b48 + 1,90% 0,00% ghc_worker [unknown] [.] 0x834807e283da8948 + 1,90% 0,00% as ld-2.21.so [.] _dl_sysdep_start + 1,89% 0,00% as ld-2.21.so [.] dl_main + 1,83% 0,15% as [kernel.vmlinux] [k] page_fault + 1,81% 0,47% as ld-2.21.so [.] _dl_relocate_object }}} If perf does not lie most of the time is spent cycling over sleeping kernel threads. '''clE_info''' is a 'INFO_TABLE(stg_BLACKHOLE,1,0,BLACKHOLE,"BLACKHOLE","BLACKHOLE")' -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9221#comment:28 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler