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.
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- R. Cunningham and E. Kohler. Making events less slippery with eel. In 10th Workshop on Hot Topics in Operating Systems (HotOS X), 2005. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- H. Franke, R. Russell, and M. Kirkwood. Fuss, futexes and furwocks: Fast user-level locking in linux. In Ottawa Linux Symposium, June 2002.Google Scholar
- 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 Scholar
- 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 Scholar
Cross Ref
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
- 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 Scholar
Digital Library
- J. Ousterhout. Why threads are a bad idea (for most purposes), January 1996. Presentation given at the 1996 USENIX Annual Technical Conference.Google Scholar
- 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 Scholar
Digital Library
- K. Park and V. S. Pai. Connection conditioning: Architecture-independent support for simple, robust servers. In Network Systems Design and Implementation, 2006. Google Scholar
Digital Library
- B. Schroeder, A. Wierman, and M. Harchol-Balter. Closed versus open system models: a cautionary tale. In Network System Design and Implementation, 2006. Google Scholar
Digital Library
- Standard Performance Evaluation Corporation. SPECWeb99 Benchmark, 1999. http://www.specbench.org/osg/web99.Google Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Index Terms
Comparing the performance of web server architectures
Recommendations
Comparing the performance of web server architectures
EuroSys '07: Proceedings of the 2nd ACM SIGOPS/EuroSys European Conference on Computer Systems 2007In 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 ...
Split protocol client/server architecture
ISCC '12: Proceedings of the 2012 IEEE Symposium on Computers and Communications (ISCC)Protocol splitting has been used to enable protocols to be split at a server level without client involvement. We describe a novel split protocol client/server architecture that completely separates connections and data transfers within a typical ...
Scalable Web Server Architectures
ISCC '97: Proceedings of the 2nd IEEE Symposium on Computers and Communications (ISCC '97)A scalable web server architecture is key to enabling WWW sites to handle the ever increasing traffic loads. There is empirical evidence that, for the current generation of web server applications, multiprocessor platforms do not provide the needed ...






Comments