[GHC] #9221: (super!) linear slowdown of parallel builds on 40 core machine
GHC
ghc-devs at haskell.org
Sun Aug 16 11:08:03 UTC 2015
#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, #8224 | Differential Revisions:
-------------------------------------+-------------------------------------
Comment (by slyfox):
Done the following:
- patched GHC [1] to print only blackholes in '+RTS -Da' and hide
unresolvable addresses as [addr]
- extended blackhole printer to dump '->indirectee' contents as a heap
object (is it safe?)
- added synchronization to printClosure to save stderr from multiple
threads
- linked ghc-stage2 with debug runtime
- ran as '-j8 +RTS -A128M -Da'
- sorted output by most frequent calls ('sort l | uniq -c | sort -n -k1 -r
| head -n30')
Here is the result:
{{{
4179540 BLACKHOLE(Object [addr] = ghc-prim:GHC.Types.I#([addr])\n)\n
2031781 BLACKHOLE(Object [addr] = ghc:CLabel.IdLabel([addr], [addr],
[addr])\n)\n
1782769 BLACKHOLE(Object [addr] =
FUN/1(<ghc_X86ziInstr_zdfInstructionInstrzuzdcjumpDestsOfInstr_info>) )\n
911023 BLACKHOLE(Object [addr] = FUN/1(<s8t1_info>, [addr]) )\n
474894 BLACKHOLE(Object [addr] = ghc:TypeRep.TyConApp([addr],
[addr])\n)\n
380862 BLACKHOLE(Object [addr] =
FUN/2(<ghczmprim_GHCziClasses_zdfOrdIntzuzdcmax_info>) )\n
370195 BLACKHOLE(Object [addr] = ghc-prim:GHC.Tuple.(,,)([addr], [addr],
[addr])\n)\n
352184 BLACKHOLE(Object [addr] = PAP/2([addr], [addr])\n)\n
282341 BLACKHOLE(Object [addr] = ghc:Var.Id([addr], [addr],
<ghc_Var_mkCoVar1_closure>, [addr], [addr], [addr])\n)\n
190979 BLACKHOLE(Object [addr] = ghc:X86.Instr.JMP([addr], [addr])\n)\n
189194 BLACKHOLE(Object [addr] = ghc:X86.Instr.JXX([addr], [addr])\n)\n
176401 BLACKHOLE(Object [addr] = ghc:Unique.MkUnique([addr])\n)\n
130071 BLACKHOLE(Object [addr] = PAP/1([addr], [addr])\n)\n
127332 BLACKHOLE(Object [addr] = ghc:VarEnv.InScope([addr], [addr])\n)\n
121511 BLACKHOLE(Object [addr] = ghc:TypeRep.FunTy([addr], [addr])\n)\n
118142 BLACKHOLE(Object [addr] =
FUN/1(<ghc_CodeGenziPlatformziX86zu64_globalRegMaybe_info>) )\n
106457 BLACKHOLE(Object [addr] = ghc:StgCmmMonad.HeapUsage([addr],
[addr])\n)\n
84274 BLACKHOLE(Object [addr] =
0tT640fErehCGZtZRn6YbE:Data.Map.Base.Bin([addr], [addr], [addr], [addr],
[addr])\n)\n
83945 BLACKHOLE(Object [addr] = ghc:Module.Module([addr], [addr])\n)\n
71331 BLACKHOLE(Object [addr] = ghc:TrieMap.SingletonMap([addr],
[addr])\n)\n
69775 BLACKHOLE(Object [addr] = ghc:StgCmmClosure.LFThunk([addr],
[addr], [addr], [addr], [addr])\n)\n
69754 BLACKHOLE(Object [addr] = FUN/2(<spvK_info>, [addr], [addr]) )\n
69396 BLACKHOLE(Object [addr] =
0tT640fErehCGZtZRn6YbE:Data.IntMap.Base.Tip([addr], [addr])\n)\n
66129 BLACKHOLE(Object [addr] =
0tT640fErehCGZtZRn6YbE:Data.IntMap.Base.Nil()\n)\n
58339 BLACKHOLE(Object [addr] = ghc:HsPat.ConPatOut([addr], [addr],
[addr], [addr], <ghc_TcEvidence_emptyTcEvBinds_closure>, [addr],
[addr])\n)\n
55027 BLACKHOLE(Object [addr] =
FUN/1(<ghc_CodeGenziPlatformziX86zu64_callerSaves_info>) )\n
53318 BLACKHOLE(Object [addr] = ghc:Var.Id([addr], [addr], [addr],
[addr], [addr], [addr])\n)\n
53142 BLACKHOLE(Object [addr] = FUN/2(<sfXN_info>, [addr]) )\n
53057 BLACKHOLE(Object [addr] =
FUN/2(<ghc_Lexer_zdfMonadPzuzdczgzg_info>) )\n
34197 BLACKHOLE(Object [addr] = ghc:Name.Name([addr], [addr], [addr],
[addr])\n)\n
}}}
Is it expected to see I# here?
small part of BLACKHOLE patch [1]:
{{{#!diff
@@ -221,7 +223,7 @@ printClosure( StgClosure *obj )
case BLACKHOLE:
debugBelch("BLACKHOLE(");
- printPtr((StgPtr)((StgInd*)obj)->indirectee);
- debugBelch(")\n");
+ printObj((StgPtr)((StgInd*)obj)->indirectee);
+ debugBelch(")\\n");
break;
}}}
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9221#comment:38>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list