Capriccio
Top Cited Papers
- 19 October 2003
- proceedings article
- Published by Association for Computing Machinery (ACM)
- Vol. 37 (5) , 268-281
- https://doi.org/10.1145/945445.945471
Abstract
This paper presents Capriccio, a scalable thread package for use with high-concurrency servers. While recent work has advocated event-based systems, we believe that thread-based systems can provide a simpler programming model that achieves equivalent or superior performance.By implementing Capriccio as a user-level thread package, we have decoupled the thread package implementation from the underlying operating system. As a result, we can take advantage of cooperative threading, new asynchronous I/O mechanisms, and compiler support. Using this approach, we are able to provide three key features: (1) scalability to 100,000 threads, (2) efficient stack management, and (3) resource-aware scheduling.We introduce linked stack management, which minimizes the amount of wasted stack space by providing safe, small, and non-contiguous stacks that can grow or shrink at run time. A compiler analysis makes our stack implementation efficient and sound. We also present resource-aware scheduling, which allows thread scheduling and admission control to adapt to the system's current resource usage. This technique uses a blocking graph that is automatically derived from the application to describe the flow of control between blocking points in a cooperative thread package. We have applied our techniques to the Apache 2.0.44 web server, demonstrating that we can achieve high performance and scalability despite using a simple threaded programming model.Keywords
This publication has 15 references indexed in Scilit:
- The nesC languagePublished by Association for Computing Machinery (ACM) ,2003
- Java support for data-intensive systemsACM SIGMOD Record, 2001
- SEDAPublished by Association for Computing Machinery (ACM) ,2001
- Dealing with disasterPublished by Association for Computing Machinery (ACM) ,1996
- Cilk: An Efficient Multithreaded Runtime SystemJournal of Parallel and Distributed Computing, 1996
- Empirical and analytic study of stack versus heap cost for languages with closuresJournal of Functional Programming, 1996
- Scheduler activationsACM Transactions on Computer Systems, 1992
- Standard ML of New JerseyPublished by Springer Nature ,1991
- The convoy phenomenonACM SIGOPS Operating Systems Review, 1979
- A model and stack implementation of multiple environmentsCommunications of the ACM, 1973