skip to main content
article

A high-performance multicore IO manager based on libuv (experience report)

Published:17 September 2018Publication History
Skip Abstract Section

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.

References

  1. Nirmala. R. Deshpande, Erica Sponsler, and Nathaniel Weiss. 2012. Analysis of the Go runtime scheduler.Google ScholarGoogle Scholar
  2. Louay Gammo, Tim Brecht, Amol Shukla, and David Pariag. 2004. Comparing and Evaluating epoll, select, and poll Event Mechanisms. (01 2004).Google ScholarGoogle Scholar
  3. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  4. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  5. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  6. Simon Marlow, Simon Peyton Jones, and Satnam Singh. 2009. Runtime Support for Multicore Haskell. SIGPLAN Not. 44, 9 (Aug. 2009), 65–78. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. 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 ScholarGoogle Scholar
  8. Alastair Reid. 1994. Malloc Pointers and Stable Pointers: Improving Haskell's Foreign Language Interface. In Draft Proceedings of the Glasgow Functional Programming Workshop.Google ScholarGoogle Scholar
  9. 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 ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. A high-performance multicore IO manager based on libuv (experience report)

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in

      Full Access

      • Article Metrics

        • Downloads (Last 12 months)13
        • Downloads (Last 6 weeks)1

        Other Metrics

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader
      About Cookies On This Site

      We use cookies to ensure that we give you the best experience on our website.

      Learn more

      Got it!