ABSTRACT
We have developed a new, portable I/O event manager for the Glasgow Haskell Compiler (GHC) that scales to the needs of modern server applications. Our new code is transparently available to existing Haskell applications. Performance at lower concurrency levels is comparable with the existing implementation. We support millions of concurrent network connections, with millions of active timeouts, from a single multithreaded program, levels far beyond those achievable with the current I/O manager. In addition, we provide a public API to developers who need to create event-driven network applications.
Supplemental Material
- }}P. Haller and M. Odersky. Actors that unify threads and events. In Proceedings of the International Conference on Coordination Models and Languages, 2007. Google ScholarDigital Library
- }}T. Harris, S. Marlow, and S. Peyton Jones. Haskell on a shared-memory multiprocessor. In Haskell '05: Proceedings of the 2005 ACM SIGPLAN workshop on Haskell, pages 49--61. Google ScholarDigital Library
- }}T. Harris, S. Marlow, S. Peyton Jones, and M. Herlihy. Composable memory transactions. In PPoPP '05: Proceedings of the tenth ACM SIGPLAN symposium on Principles and Practice of Parallel Programming, pages 48--60. Google ScholarDigital Library
- }}R. Hinze. A simple implementation technique for priority search queues. In Proceedings of the 2001 International Conference on Functional Programming, pages 110--121. Google ScholarDigital Library
- }}D. Jones Jr., S. Marlow, and S. Singh. Parallel performance tuning for Haskell. In Proceedings of the 2009 Haskell Symposium. Google ScholarDigital Library
- }}S. Marlow, S. Peyton Jones, and W. Thaller. Extending the Haskell foreign function interface with concurrency. In Haskell '04: Proceedings of the ACM SIGPLAN workshop on Haskell, pages 57--68. URL http://www.haskell.org/~simonmar/papers/conc-ffi.pdf. Google ScholarDigital Library
- }}C. Okasaki and A. Gill. Fast mergeable integer maps. In Workshop on ML, pages 77--86, 1998.Google Scholar
- }}B. O'Sullivan. Criterion, a new benchmarking library for Haskell. http://bit.ly/rUuAa, 2009.Google Scholar
- }}L. Peng and S. Zdancewic. Combining events and threads for scalable network services. In PLDI '07: Proceedings of the 2007 ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 189--199. Google ScholarDigital Library
- }}S. Peyton Jones, A. Gordon, and S. Finne. Concurrent Haskell. In POPL '96: Proceedings of the 1996 Annual Symposium on Principles of Programming Languages, pages 295--308. Google ScholarDigital Library
- }}R. von Behren, J. Condit, and E. Brewer. Why events are a bad idea (for high-concurrency servers). In HotOS IX: 9th Workshop on Hot Topics in Operating Systems, 2003. Google ScholarDigital Library
Index Terms
- Scalable i/o event handling for GHC
Recommendations
Scalable i/o event handling for GHC
HASKELL '10We have developed a new, portable I/O event manager for the Glasgow Haskell Compiler (GHC) that scales to the needs of modern server applications. Our new code is transparently available to existing Haskell applications. Performance at lower concurrency ...
Lightweight concurrency primitives for GHC
Haskell '07: Proceedings of the ACM SIGPLAN workshop on Haskell workshopThe Glasgow Haskell Compiler (GHC) has quite sophisticated support for concurrency in its runtime system, which is written in low-level C code. As GHC evolves, the runtime system becomes increasingly complex, error-prone, difficult to maintain and ...
Comments