
#8733: I/O manager causes unnecessary syscalls in send/recv loops --------------------------------------------+------------------------------ Reporter: tibbe | Owner: 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 AndreasVoellmy): I would be interested to know what the source of the overhead is when making the recvfrom call that fails. I.e. is due to having more syscalls or from invoking the IO manager (Haskell-land) code to register the callback (requires taking an MVar, etc). If it is the sys call, then we would have to do something like you describe where you avoid making the recvfrom call right after the send. If, OTOH it is IO manager overhead, then we may be able to fix it by streamlining the IO manager. E.g. we could try to avoid taking any MVars to register callbacks. We've also talked about integrating the IO manager more closely with the threaded RTS and writing it in C. I think we could easily reduce the overhead if we go down that route. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8733#comment:12 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler