|
|
|
C10M is an Internet scalability problem
regarding how to handle 10 million simultaneous TCP
connections on a web server. Although kernel- and user-
level approaches have been proposed to increase TCP
stack scalability on multicore systems, C10M is still an
open problem.
In this paper we present Janus, a high-performance
user-level TCP stack that focuses on serving massive
TCP connections. In addition to adopting well-known
techniques, our design (1) separates packet I/O cores
from TCP processing cores to achieve high scalability
and flexibility on a multicore system and (2) lets each
application run as a per-connection coroutine together
with a packet processing loop, which greatly improves
cache affinity and saves memory. We demonstrate that
Janus can accept 1.86 million new connections per
second while maintaining 40 million concurrent connec-
tions and significantly outperforms Linux and state-of-
the-art user-space network stacks in both throughput
and connection concurrency.
|