Accept Strategies: A Simple Knob for Big Web Server Gains
Accept Strategies: A Simple Knob for Big Web Server Gains
Paper: “accept()able Strategies for Improving Web Server Performance” by Tim Brecht, David Pariag, and Louay Gammo (USENIX Annual Technical Conference, 2004)
TL;DR
This paper demonstrates that tuning a single parameter – the accept limit, which controls how many incoming connections a server accepts at a time – can significantly improve web server performance. By applying this strategy to three different server architectures, the authors show that a user-mode event-driven server can match the performance of a kernel-mode TUX server.
Summary
The paper describes and evaluates three different web server architectures: the kernel-mode TUX server, the multi-threaded Knot server, and the event-driven userver. It shows how improving the accept strategies for incoming connections can significantly boost server performance. The authors introduce a new parameter called the accept limit, which specifies how many incoming connections can be accepted at a time. This value is varied from 1 to infinity. An accept limit of one forces the server to accept a single connection in each accept phase, while infinity causes the server to accept all currently pending connections. The authors implement this parameter in all three servers and run experiments using two different workloads: a SPECweb99-like workload and a one-packet workload.
The authors demonstrate the performance improvements by varying the accept parameter and plotting the results against the unmodified versions for different workloads. They also show that by using improved connection accept strategies, the user-mode userver performs comparably to the unmodified TUX server.
Strengths
- The paper provides a detailed overview of all three server architectures, which is important context given that the study centers on server behavior.
- The authors support their accept-parameter theory by running multiple experiments across various servers and datasets. They also demonstrate the limitations of both over-increasing and under-reducing the accept parameter.
- The comparison between the userver and TUX server is particularly compelling. While previous papers had rated TUX above the userver, this paper challenges that conventional wisdom and demonstrates that the user-mode userver can match TUX’s performance.
Weaknesses
- The authors could have included additional server architectures beyond the three studied. The analysis of the Knot server in particular feels somewhat shallow.
- Despite SPECweb99’s well-known drawbacks, the authors still use it for conducting experiments without adequately addressing its limitations.
- The experiments ran for only two minutes, and the authors acknowledge that time constraints prevented more extensive testing. Additionally, the rationale for using two separate experimental setups is unclear.
Discussion Questions
- How should pending entries in the work-pending queue (Section 6.2) be tracked efficiently?
- Time comparisons among the three servers for different workloads would have been informative. The authors report requests per second and connections accepted, but nothing about time efficiency.
- The accept-limit values in the experiments appear to have been selected without systematic methodology. There should be a principled approach to identifying the value at which performance peaks.
- What would happen if the work queue is not fully processed before returning to the accept queue? Could a machine learning algorithm be applied to selectively prioritize important workloads from the work queue and observe the effects on server performance?
- The experiments were run in a controlled environment with predefined workloads. Running these servers under real-world traffic and collecting performance data over several months would make for a valuable research experiment.
This review was written as part of CMU’s 18-845: Internet Services course.