Abstract
We present a high performance multicore I/O manager based on libuv for Glasgow Haskell Compiler (GHC). The new I/O manager is packaged as an ordinary Haskell package rather than baked into GHC's runtime system(GHC RTS), yet takes advantage of GHC RTS's comprehensive concurrent support, such as lightweight threads and safe/unsafe FFI options. The new I/O manager's performance is comparable with existing implementation, with greater stability under high load. It also can be easily extended to support all of libuv's callback-based APIs, allowing us to write a complete high performance I/O toolkit without spending time on dealing with OS differences or low-level I/O system calls.
- Nirmala. R. Deshpande, Erica Sponsler, and Nathaniel Weiss. 2012. Analysis of the Go runtime scheduler.Google Scholar
- Louay Gammo, Tim Brecht, Amol Shukla, and David Pariag. 2004. Comparing and Evaluating epoll, select, and poll Event Mechanisms. (01 2004).Google Scholar
- Tim Harris, Simon Marlow, Simon Peyton Jones, and Maurice Herlihy. 2005. Composable Memory Transactions. In Proceedings of the Tenth ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP ’05). ACM, New York, NY, USA, 48–60. Google Scholar
Digital Library
- Jonathan Lemon. 2001. Kqueue - A Generic and Scalable Event Notification Facility. In Proceedings of the FREENIX Track: 2001 USENIX Annual Technical Conference. USENIX Association, Berkeley, CA, USA, 141–153. http://dl.acm.org/citation.cfm?id=647054.715764 Google Scholar
Digital Library
- Simon Marlow, Simon Peyton Jones, and Wolfgang Thaller. 2004. Extending the Haskell Foreign Function Interface with Concurrency. In Proceedings of the 2004 ACM SIGPLAN Workshop on Haskell (Haskell ’04). ACM, New York, NY, USA, 22–32. Google Scholar
Digital Library
- Simon Marlow, Simon Peyton Jones, and Satnam Singh. 2009. Runtime Support for Multicore Haskell. SIGPLAN Not. 44, 9 (Aug. 2009), 65–78. Google Scholar
Digital Library
- Simon Peyton Jones, Andrew Gordon, and Sigbjorn Finne. 1997. Concurrent Haskell. In Proceedings of the 24rd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL ’97). ACM, New York, NY, USA, 296–308.Google Scholar
- Alastair Reid. 1994. Malloc Pointers and Stable Pointers: Improving Haskell's Foreign Language Interface. In Draft Proceedings of the Glasgow Functional Programming Workshop.Google Scholar
- Andreas Richard Voellmy, Junchang Wang, Paul Hudak, and Kazuhiko Yamamoto. 2013. Mio: A High-performance Multicore Io Manager for GHC. SIGPLAN Not. 48, 12 (Sept. 2013), 129–140. Google Scholar
Digital Library
Index Terms
A high-performance multicore IO manager based on libuv (experience report)
Recommendations
A high-performance multicore IO manager based on libuv (experience report)
Haskell 2018: Proceedings of the 11th ACM SIGPLAN International Symposium on HaskellWe present a high performance multicore I/O manager based on libuv for Glasgow Haskell Compiler (GHC). The new I/O manager is packaged as an ordinary Haskell package rather than baked into GHC's runtime system(GHC RTS), yet takes advantage of GHC RTS's ...
Mio: a high-performance multicore io manager for GHC
Haskell '13Haskell threads provide a key, lightweight concurrency abstraction to simplify the programming of important network applications such as web servers and software-defined network (SDN) controllers. The flagship Glasgow Haskell Compiler (GHC) introduces a ...
Mio: a high-performance multicore io manager for GHC
Haskell '13: Proceedings of the 2013 ACM SIGPLAN symposium on HaskellHaskell threads provide a key, lightweight concurrency abstraction to simplify the programming of important network applications such as web servers and software-defined network (SDN) controllers. The flagship Glasgow Haskell Compiler (GHC) introduces a ...







Comments