[GHC] #8732: Global big object heap allocator lock causes contention
GHC
ghc-devs at haskell.org
Wed Feb 5 14:30:43 UTC 2014
#8732: Global big object heap allocator lock causes contention
--------------------------------------------+------------------------------
Reporter: tibbe | Owner: simonmar
Type: bug | Status: new
Priority: normal | Milestone: 7.10.1
Component: Runtime System | Version: 7.6.3
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
Type of failure: Runtime performance bug | Unknown/Multiple
Test Case: | Difficulty: Unknown
Blocking: | Blocked By:
| Related Tickets:
--------------------------------------------+------------------------------
Comment (by simonmar):
I don't really understand why in mighty he couldn't just re-use the same
block.
I'm kind of surprised that this is a bottleneck, and I think it needs more
investigation. We only take the lock for large objects, so typically
there's going to be a lot of computation going on per allocation.
I suppose if it really is a problem then we could just have a per-thread
block pool at the granularity of a megablock to avoid fragmentation
issues. We just push the global lock back to the megablock free list.
This has the danger that we might have a lot of free blocks owned by one
thread that don't get used, though, so we might want to redistribute the
free blocks at GC. Things start to get annoyingly complicated.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/8732#comment:9>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list