Flash: A Web Server Built on the AMPED Architecture
Flash: A Web Server Built on the AMPED Architecture
Paper: “Flash: An Efficient and Portable Web Server” by V. Pai, P. Druschel, and W. Zwaenepoel (USENIX Annual Technical Conference, 1999)
TL;DR
This paper introduces the AMPED (Asymmetric Multi-Process Event-Driven) architecture for web servers and evaluates it through the Flash web server. Flash combines the efficiency of event-driven designs with helper processes to handle blocking disk operations, achieving up to 50% better performance than Apache and Zeus across a variety of workloads.
Summary
The paper first describes three existing web server architectures: single-process event-driven (SPED), multi-process (MP), and multi-threaded (MT). It then proposes a new architecture called AMPED – Asymmetric Multi-Process Event-Driven – and evaluates the performance of the Flash web server, which implements this design. The paper discusses several server performance characteristics, including disk operations, memory effects, and disk utilization, as well as server features like information gathering, application-level caching, and long-lived connection handling.
The paper then details how Flash is designed and implemented, highlighting features such as pathname translation caching, response header caching, memory-mapped files, and byte position alignment. Flash’s performance is compared against two widely used web servers – Apache and Zeus – and the authors demonstrate that Flash performs up to 50% better across many workloads. Flash nearly matches the performance of SPED servers on cached workloads while simultaneously matching or exceeding the performance of MP and MT servers on disk-intensive workloads.
Strengths
- The authors provide a clear overview of all three existing server architectures (SPED, MP, MT), thoroughly explaining how each one works before introducing their own design.
- The Flash web server’s AMPED architecture uses only standard APIs available in modern operating systems, making it highly portable – a genuinely valuable feature.
- The authors openly discuss the limitations of the AMPED architecture, which adds credibility to their evaluation.
Weaknesses
- The paper does not go into sufficient detail about memory-mapped files and how to use the
mmapfunctionality effectively. - More information on application-level caching would have been valuable, especially given that the application cache competes with the filesystem cache for physical memory.
- More extensive experiments on real-world workloads would have strengthened the evaluation.
Discussion Questions
- The choice of operating system has a significant impact on web server performance. The authors use FreeBSD and Solaris as examples – it would be interesting to see whether these findings hold on Linux, macOS, or Windows.
- Zeus uses a two-process configuration in the experiments, while Flash-SPED is single-process. It would have been more informative to compare both as single-process architectures.
- Pathname translation caching provides a large benefit to server performance. What other caching techniques could further improve throughput?
- How can disk-bound server performance be improved as dataset sizes grow and cache hit rates decline?
- What is the performance difference when the helper processes in AMPED are implemented as kernel threads versus separate processes?
This review was written as part of CMU’s 18-845: Internet Services course.