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