Mio: A High-Performance Multicore IO Manager for GHC

Mio: A High-Performance Multicore IO Manager for GHC

Postby 8l » Thu Aug 15, 2013 10:14 pm

http://haskell.cs.yale.edu/wp-content/u ... oellmy.pdf

Abstract
Haskell threads provide a key, lightweight concurrency abstrac-
tion to simplify the programming of important network applica-
tions such as web servers and software-defined network (SDN)
controllers. The flagship Glasgow Haskell Compiler (GHC) intro-
duces a run-time system (RTS) to achieve a high-performance mul-
ticore implementation of Haskell threads, by introducing effective
components such as a multicore scheduler, a parallel garbage col-
lector, an IO manager, and efficient multicore memory allocation.
Evaluations of the GHC RTS, however, show that it does not scale
well on multicore processors, leading to poor performance of many
network applications that try to use lightweight Haskell threads. In
this paper, we show that the GHC
IO manager
, which is a crucial
component of the GHC RTS, is the scaling bottleneck. Through a
series of experiments, we identify key data structure, scheduling,
and dispatching bottlenecks of the GHC IO manager. We then de-
sign a new multicore IO manager named
Mio
that eliminates all
these bottlenecks. Our evaluations show that the new Mio manager
improves realistic web server throughput by 6.5x and reduces ex-
pected web server response time by 5.7x. We also show that with
Mio, McNettle (an SDN controller written in Haskell) can scale ef-
fectively to 40+ cores, reach a throughput of over 20 million new
requests per second on a single machine, and hence become the
fastest of all existing SDN controller
8l
 
Posts: 173
Joined: Mon Dec 17, 2012 3:23 am

Return to Haskell

Who is online

Users browsing this forum: No registered users and 1 guest