Opened 6 years ago

Last modified 4 years ago

#8732 new bug

Global big object heap allocator lock causes contention — at Initial Version

Reported by: tibbe Owned by: simonmar
Priority: normal Milestone:
Component: Runtime System Version: 7.6.3
Keywords: Cc: hvr, simonmar, idhameed@…
Operating System: Unknown/Multiple Architecture: Unknown/Multiple
Type of failure: Runtime performance bug Test Case:
Blocked By: Blocking:
Related Tickets: Differential Rev(s):
Wiki Page:

Description

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.

Change History (0)

Note: See TracTickets for help on using tickets.