[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