A Programming Interface for Scalable Network Socket I/O
Sangjin Han
EECS Department, University of California, Berkeley
Technical Report No. UCB/EECS-2016-125
June 30, 2016
http://www2.eecs.berkeley.edu/Pubs/TechRpts/2016/EECS-2016-125.pdf
We present MegaPipe, a new API for efficient, scalable network I/O for message-oriented workloads. The design of MegaPipe centers around the abstraction of a channel – a per- core, bidirectional pipe between the kernel and user space, used to exchange both I/O requests and event notifications. On top of the channel abstraction, we introduce three key concepts of MegaPipe: partitioning, lightweight socket (lwsocket), and batching.
We implement MegaPipe in Linux and adapt memcached and nginx. Our results show that, by embracing a clean-slate design approach, MegaPipe is able to exploit new oppor- tunities for improved performance and ease of programmability. In microbenchmarks on an 8-core server with 64 B messages, MegaPipe outperforms baseline Linux between 29% (for long connections) and 582% (for short connections). MegaPipe improves the per- formance of a modified version of memcached between 15% and 320%. For a workload based on real-world HTTP traces, MegaPipe boosts the throughput of nginx by 75%.
Advisors: Sylvia Ratnasamy
BibTeX citation:
@mastersthesis{Han:EECS-2016-125, Author= {Han, Sangjin}, Title= {A Programming Interface for Scalable Network Socket I/O}, School= {EECS Department, University of California, Berkeley}, Year= {2016}, Month= {Jun}, Url= {http://www2.eecs.berkeley.edu/Pubs/TechRpts/2016/EECS-2016-125.html}, Number= {UCB/EECS-2016-125}, Abstract= {We present MegaPipe, a new API for efficient, scalable network I/O for message-oriented workloads. The design of MegaPipe centers around the abstraction of a channel – a per- core, bidirectional pipe between the kernel and user space, used to exchange both I/O requests and event notifications. On top of the channel abstraction, we introduce three key concepts of MegaPipe: partitioning, lightweight socket (lwsocket), and batching. We implement MegaPipe in Linux and adapt memcached and nginx. Our results show that, by embracing a clean-slate design approach, MegaPipe is able to exploit new oppor- tunities for improved performance and ease of programmability. In microbenchmarks on an 8-core server with 64 B messages, MegaPipe outperforms baseline Linux between 29% (for long connections) and 582% (for short connections). MegaPipe improves the per- formance of a modified version of memcached between 15% and 320%. For a workload based on real-world HTTP traces, MegaPipe boosts the throughput of nginx by 75%.}, }
EndNote citation:
%0 Thesis %A Han, Sangjin %T A Programming Interface for Scalable Network Socket I/O %I EECS Department, University of California, Berkeley %D 2016 %8 June 30 %@ UCB/EECS-2016-125 %U http://www2.eecs.berkeley.edu/Pubs/TechRpts/2016/EECS-2016-125.html %F Han:EECS-2016-125