RSS++ : load and state-aware receive side scaling

Barbette, Tom;Katsikas, Georgios P.;Maguire, Gerald Q.;Kostić, Dejan
(2019) CoNEXT ’19: The 15th International Conference on emerging Networking EXperiments and Technologies — Location: Orlando Florida

Files

RSSPP.pdf
  • Open Access
  • Adobe PDF
  • 2.39 MB

Details

Authors
  • Barbette, Tomorcid-logoUCLouvain
    Author
  • Katsikas, Georgios P.KTH Royal Institute of Technology
    Author
  • Maguire, Gerald Q.KTH Royal Institute of Technology
    Author
  • Kostić, DejanKTH Royal Institute of Technology
    Author
Abstract
While the current literature typically focuses on load-balancing among multiple servers, in this paper, we demonstrate the importance of load-balancing within a single machine (potentially with hundreds of CPU cores). In this context, we propose a new load-balancing technique (RSS++) that dynamically modifies the receive side scaling (RSS) indirection table to spread the load across the CPU cores in a more optimal way. RSS++ incurs up to 14x lower 95th percentile tail latency and orders of magnitude fewer packet drops compared to RSS under high CPU utilization. RSS++ allows higher CPU utilization and dynamic scaling of the number of allocated CPU cores to accommodate the input load while avoiding the typical 25% over-provisioning. RSS++ has been implemented for both (i) DPDK and (ii) the Linux kernel. Additionally, we implement a new state migration technique which facilitates sharding and reduces contention between CPU cores accessing per-flow data. RSS++ keeps the flow-state by groups that can be migrated at once, leading to a 20% higher efficiency than a state of the art shared flow table.
Affiliations

Citations

Barbette, T., Katsikas, G. P., Maguire, G. Q., & Kostić, D. (2019). RSS++ : load and state-aware receive side scaling. Proceedings of the 15th international conference on emerging networking experiments and technologies, p. 318-333. https://doi.org/10.1145/3359989.3365412