skip to main content
article

Comparing the performance of web server architectures

Authors Info & Claims
Published:21 March 2007Publication History
Skip Abstract Section

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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. R. Cunningham and E. Kohler. Making events less slippery with eel. In 10th Workshop on Hot Topics in Operating Systems (HotOS X), 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. H. Franke, R. Russell, and M. Kirkwood. Fuss, futexes and furwocks: Fast user-level locking in linux. In Ottawa Linux Symposium, June 2002.Google ScholarGoogle Scholar
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle ScholarCross RefCross Ref
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. J. Ousterhout. Why threads are a bad idea (for most purposes), January 1996. Presentation given at the 1996 USENIX Annual Technical Conference.Google ScholarGoogle Scholar
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. K. Park and V. S. Pai. Connection conditioning: Architecture-independent support for simple, robust servers. In Network Systems Design and Implementation, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. B. Schroeder, A. Wierman, and M. Harchol-Balter. Closed versus open system models: a cautionary tale. In Network System Design and Implementation, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Standard Performance Evaluation Corporation. SPECWeb99 Benchmark, 1999. http://www.specbench.org/osg/web99.Google ScholarGoogle Scholar
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle Scholar

Index Terms

  1. Comparing the performance of web server architectures

            Recommendations

            Comments

            Login options

            Check if you have access through your login credentials or your institution to get full access on this article.

            Sign in

            Full Access

            • 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

              Copyright © 2007 ACM

              Publisher

              Association for Computing Machinery

              New York, NY, United States

              Publication History

              • Published: 21 March 2007

              Check for updates

              Qualifiers

              • article

            PDF Format

            View or Download as a PDF file.

            PDF

            eReader

            View online with eReader.

            eReader
            About Cookies On This Site

            We use cookies to ensure that we give you the best experience on our website.

            Learn more

            Got it!