[GHC] #8732: Global big object heap allocator lock causes contention
GHC
ghc-devs at haskell.org
Tue Feb 4 05:17:38 UTC 2014
#8732: Global big object heap allocator lock causes contention
------------------------------------+-------------------------------------
Reporter: tibbe | Owner: simonmar
Type: bug | Status: new
Priority: normal | Milestone:
Component: Runtime System | Version: 7.6.3
Keywords: | Operating System: Unknown/Multiple
Architecture: Unknown/Multiple | Type of failure: None/Unknown
Difficulty: Unknown | Test Case:
Blocked By: | Blocking:
Related Tickets: |
------------------------------------+-------------------------------------
The lock allocate() takes when allocating big objects hurts scalability of
I/O bound application. Network.Socket.ByteString.recv is typically called
with a buffer size of 4096, which causes a ByteString of that size to be
allocate. The size of this ByteString causes it to be allocated from the
big object space, which causes contention of the global lock that guards
that space.
See http://www.yesodweb.com/blog/2014/02/new-warp for a real world
example.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/8732>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list