Paraio: A scalable network I/O framework for many-core systems

Many high-performance networked applications are designed using the event-driven paradigm. In many-core era, hundreds or even thousands of processor cores can be utilized to serve more clients. However, data race and load imbalance in current event-driven hybrid models will be a key bottleneck which challenges developers to fully exploit many-core resources to develop high-performance networked applications. In this paper, we extend the symmetric multi-thread event-driven model and present Paraio, a scalable network I/O framework to improve performance of networked applications such as web servers and software-defined network (SDN) controllers. In order to maximize the degree of parallelism in the event-based application execution, Paraio features the shared-data marking method that divides the event-processing logic and marks event handlers from the essential shared data perspective. In Paraio runtime, workloads are balanced among threads by an efficient work stealing, and new connection is allocated according to threads' load to obtain a fast response. Evaluation on web server and SDN controller, shows that Paraio applications with work stealing achieve better performance and scalability.

[1]  Alan L. Cox,et al.  Maestro: A System for Scalable OpenFlow Control , 2010 .

[2]  David Mazières,et al.  Separating key management from file system security , 1999, SOSP.

[3]  Samuel P. Midkiff,et al.  Expressing and exploiting concurrency in networked applications with aspen , 2007, PPoPP.

[4]  Chita R. Das,et al.  A multi-threaded PIPELINED Web server architecture for SMP/SoC machines , 2005, WWW '05.

[5]  David Mosberger,et al.  httperf—a tool for measuring web server performance , 1998, PERV.

[6]  George C. Necula,et al.  Capriccio: scalable threads for internet services , 2003, SOSP '03.

[7]  Vivien Quéma,et al.  Efficient Workstealing for Multicore Event-Driven Systems , 2010, 2010 IEEE 30th International Conference on Distributed Computing Systems.

[8]  Paul Hudak,et al.  Mio: a high-performance multicore io manager for GHC , 2013, Haskell '13.

[9]  David Erickson,et al.  The beacon openflow controller , 2013, HotSDN '13.

[10]  Roy T. Fielding,et al.  The Apache HTTP Server Project , 1997, IEEE Internet Comput..

[11]  Rob Sherwood,et al.  On Controller Performance in Software-Defined Networks , 2012, Hot-ICE.

[12]  David E. Culler,et al.  SEDA: an architecture for well-conditioned, scalable internet services , 2001, SOSP.

[13]  Milind Kulkarni,et al.  InContext: simple parallelism for distributed applications , 2011, HPDC '11.

[14]  Paul Hudak,et al.  Scaling Software-Defined Network Controllers on Multicore Servers , 2012 .

[15]  Robert Tappan Morris,et al.  Multiprocessor Support for Event-Driven Programs , 2003, USENIX Annual Technical Conference, General Track.

[16]  Noemi de La Rocque Rodriguez,et al.  A Flexible Approach to Staged Events , 2013, 2013 42nd International Conference on Parallel Processing.

[17]  Ivo Balbaert The Way to Go: A Thorough Introduction to the Go Programming Language , 2012 .

[18]  Amin Vahdat,et al.  Mace: language support for building distributed systems , 2007, PLDI '07.