Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
article

Comparing the performance of web server architectures

Published: 21 March 2007 Publication History

Abstract

In this paper, we extensively tune and then compare the performance of web servers based on three different server architectures. The μserver utilizes an event-driven architecture, Knot uses the highly-efficient Capriccio thread library to implement a thread-per-connection model, and WatPipe uses a hybrid of events and threads to implement a pipeline-based server that is similar in spirit to a staged event-driven architecture (SEDA) server like Haboob.
We describe modifications made to the Capriccio thread library to use Linux's zero-copy sendfile interface. We then introduce the SY mmetric Multi-Processor Event Driven (SYMPED) architecture in which relatively minor modifications are made to a single process event-driven (SPED) server (the μserver) to allow it to continue processing requests in the presence of blocking due to disk accesses. Finally, we describe our C++ implementation of WatPipe, which although utilizing a pipeline-based architecture, excludes the dynamic controls over event queues and thread pools used in SEDA. When comparing the performance of these three server architectures on the workload used in our study, we arrive at different conclusions than previous studies. In spite of recent improvements to threading libraries and our further improvements to Capriccio and Knot, both the event-based μserver and pipeline-based Wat-Pipe server provide better throughput (by about 18%). We also observe that when using blocking sockets to send data to clients, the performance obtained with some architectures is quite good and in one case is noticeably better than when using non-blocking sockets.

References

[1]
A. Adya, J. Howell, M. Theimer, W. J. Bolosky, and J. R. Douceur. Cooperative task management without manual stack management or, event-driven programming is not the opposite of threaded programming. In Proceedings of the 2002 USENIX Annual Technical Conference, June 2002.
[2]
G. Banga and P. Druschel. Measuring the capacity of a web server. In Proceedings of the USENIX Symposium on Internet Technologies and Systems (USITS), Monterey CA, December 1997.
[3]
G. Banga, J. Mogul, and P. Druschel. A scalable and explicit event delivery mechanism for UNIX. In Proceedings of the 1999 USENIX Annual Technical Conference, Monterey, CA, June 1999.
[4]
P. Barford and M. Crovella. Generating representative web workloads for network and server performance evaluation. In Proceedings of ACM SIGMETRICS 1998, Madison, Wisconsin, 1998.
[5]
T. Brecht, D. Pariag, and L. Gammo. accept()able strategies for improving web server performance. In Proceedings of the 2004 USENIX Annual Technical Conference, June 2004.
[6]
B. Burns, K. Grimaldi, A. Kostadinov, E. Berger, and M. Corner. Flux: A language for programming high-performance servers. In Proceedings of the 2006 USENIX Annual Technical Conference, pages 129--142, 2006.
[7]
R. Cunningham and E. Kohler. Making events less slippery with eel. In 10th Workshop on Hot Topics in Operating Systems (HotOS X), 2005.
[8]
F. Dabek, N. Zeldovich, M. F. Kaashoek, D. Mazires, and R. Morris. Event-driven programming for robust software. In Proceedings of the 10th ACM SIGOPS European Workshop, pages 186--189, September 2002.
[9]
K. Elmeleegy, A. Chanda, A. L. Cox, and W. Zwaenepoel. Lazy asynchronous i/o for event-driven servers. In Proceedings of the 2004 USENIX Annual Technical Conference, June 2004.
[10]
H. Franke, R. Russell, and M. Kirkwood. Fuss, futexes and furwocks: Fast user-level locking in linux. In Ottawa Linux Symposium, June 2002.
[11]
L. Gammo, T. Brecht, A. Shukla, and D. Pariag. Comparing and evaluating epoll, select, and poll event mechanisms. In Proceedings of the 6th Annual Ottawa Linux Symposium, July 2004.
[12]
J. Hu, I. Pyarali, and D. Schmidt. Measuring the impact of event dispatching and concurrency models on web server performance over high-speed networks. In Proceedings of the 2nd Global Internet Conference. IEEE, November 1997.
[13]
H. Jamjoom and K. G. Shin. Persistent dropping: An efficient control of traffic aggregates. In Proceedings of ACM SIGCOMM 2003, Karlsruhe, Germany, August 2003.
[14]
P. Joubert, R. King, R. Neves, M. Russinovich, and J. Tracey. High-performance memory-based Web servers: Kernel and user-space performance. In Proceedings of the USENIX 2001 Annual Technical Conference, pages 175--188, 2001.
[15]
H. Lauer and R. Needham. On the duality of operating systems structures. In Proceedings of the 2nd International Symposium on Operating Systems, IRIA, October 1978.
[16]
D. Mosberger and T. Jin. httperf: A tool for measuring web server performance. In The First Workshop on Internet Server Performance, pages 59--67, Madison, WI, June 1998.
[17]
J. Ousterhout. Why threads are a bad idea (for most purposes), January 1996. Presentation given at the 1996 USENIX Annual Technical Conference.
[18]
V. S. Pai, P. Druschel, and W. Zwaenepoel. Flash: An efficient and portable Web server. In Proceedings of the USENIX 1999 Annual Technical Conference, Monterey, CA, June 1999.
[19]
K. Park and V. S. Pai. Connection conditioning: Architecture-independent support for simple, robust servers. In Network Systems Design and Implementation, 2006.
[20]
B. Schroeder, A. Wierman, and M. Harchol-Balter. Closed versus open system models: a cautionary tale. In Network System Design and Implementation, 2006.
[21]
Standard Performance Evaluation Corporation. SPECWeb99 Benchmark, 1999. http://www.specbench.org/osg/web99.
[22]
R. von Behren, J. Condit, and E. Brewer. Why events are a bad idea for high-concurrency servers. In 9th Workshop on Hot Topics in Operating Systems (HotOS IX), 2003.
[23]
R. von Behren, J. Condit, F. Zhou, G. C. Necula, and E. Brewer. Capriccio: Scalable threads for internet services. In Proceedings of the 19th ACM Symposium on Operating Systems Principles, 2003.
[24]
M. Welsh, D. Culler, and E. Brewer. SEDA: An architecture for well-conditioned, scalable Internet services. In Proceedings of the Eighteenth Symposium on Operating Systems Principles, Banff, Oct. 2001.
[25]
N. Zeldovich, A. Yip, F. Dabek, R. T. Morris, D. Mazieres, and F. Kaashoek. Multiprocessor support for event-driven programs. In Proceedings of the USENIX 2003 Annual Technical Conference, June 2003.

Cited By

View all
  • (2023)Ditto: End-to-End Application Cloning for Networked Cloud ServicesProceedings of the 28th ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Volume 210.1145/3575693.3575751(222-236)Online publication date: 27-Jan-2023
  • (2021)Comparison of performance of the popular approaches to implementing parallel crawlers2021 IEEE 16th International Conference on Computer Sciences and Information Technologies (CSIT)10.1109/CSIT52700.2021.9648837(349-352)Online publication date: 22-Sep-2021
  • (2020)DoubleFaceADProceedings of the 21st International Middleware Conference10.1145/3423211.3425684(430-444)Online publication date: 7-Dec-2020
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM SIGOPS Operating Systems Review
ACM SIGOPS Operating Systems Review  Volume 41, Issue 3
EuroSys'07 Conference Proceedings
June 2007
386 pages
ISSN:0163-5980
DOI:10.1145/1272998
Issue’s Table of Contents
  • cover image ACM Conferences
    EuroSys '07: Proceedings of the 2nd ACM SIGOPS/EuroSys European Conference on Computer Systems 2007
    March 2007
    431 pages
    ISBN:9781595936363
    DOI:10.1145/1272996
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 21 March 2007
Published in SIGOPS Volume 41, Issue 3

Check for updates

Author Tags

  1. events
  2. performance
  3. scalability
  4. threads
  5. web servers

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)72
  • Downloads (Last 6 weeks)7
Reflects downloads up to 15 Oct 2024

Other Metrics

Citations

Cited By

View all
  • (2023)Ditto: End-to-End Application Cloning for Networked Cloud ServicesProceedings of the 28th ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Volume 210.1145/3575693.3575751(222-236)Online publication date: 27-Jan-2023
  • (2021)Comparison of performance of the popular approaches to implementing parallel crawlers2021 IEEE 16th International Conference on Computer Sciences and Information Technologies (CSIT)10.1109/CSIT52700.2021.9648837(349-352)Online publication date: 22-Sep-2021
  • (2020)DoubleFaceADProceedings of the 21st International Middleware Conference10.1145/3423211.3425684(430-444)Online publication date: 7-Dec-2020
  • (2020)RocketBufsProceedings of the 14th ACM International Conference on Distributed and Event-based Systems10.1145/3401025.3401744(121-132)Online publication date: 13-Jul-2020
  • (2020)A server-side accelerator framework for multi-core CPUs and Intel Xeon Phi co-processor systemsCluster Computing10.1007/s10586-019-03030-z23:4(2591-2608)Online publication date: 1-Dec-2020
  • (2019)Mitigating Tail Response Time of n-Tier ApplicationsACM Transactions on Internet Technology10.1145/334046219:3(1-25)Online publication date: 25-Jul-2019
  • (2019)The Impact of Event Processing Flow on Asynchronous Server EfficiencyIEEE Transactions on Parallel and Distributed Systems10.1109/TPDS.2019.2938500(1-1)Online publication date: 2019
  • (2017)A Study of Long-Tail Latency in n-Tier Systems: RPC vs. Asynchronous Invocations2017 IEEE 37th International Conference on Distributed Computing Systems (ICDCS)10.1109/ICDCS.2017.32(207-217)Online publication date: Jun-2017
  • (2017)Semantic Interoperability at Big-Data Scale with the open62541 OPC UA ImplementationInteroperability and Open-Source Solutions for the Internet of Things10.1007/978-3-319-56877-5_11(173-185)Online publication date: 5-Apr-2017
  • (2016)Towards an Event-Driven Programming Model for OpenMP2016 45th International Conference on Parallel Processing Workshops (ICPPW)10.1109/ICPPW.2016.44(240-249)Online publication date: Aug-2016
  • Show More Cited By

View Options

Get Access

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media