ACM Home Page
Please provide us with feedback. Feedback
Capriccio: scalable threads for internet services
Full text PdfPdf (313 KB)
Source ACM Symposium on Operating Systems Principles archive
Proceedings of the nineteenth ACM symposium on Operating systems principles table of contents
Bolton Landing, NY, USA
SESSION: Revising old friends table of contents
Pages: 268 - 281  
Year of Publication: 2003
ISBN:1-58113-757-5
Also published in ...
Authors
Rob von Behren  University of California, Berkeley
Jeremy Condit  University of California, Berkeley
Feng Zhou  University of California, Berkeley
George C. Necula  University of California, Berkeley
Eric Brewer  University of California, Berkeley
Sponsors
SIGOPS: ACM Special Interest Group on Operating Systems
ACM: Association for Computing Machinery
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 33,   Downloads (12 Months): 200,   Citation Count: 45
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/945445.945471
What is a DOI?

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.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

 
1
2
 
3
A. W. Appel and D. B. MacQueen. Standard ML of New Jersey. In Proceedings of the 3rd International Symposium on Programming Language Implementation and Logic Programming, pages 1--13, 1991.
 
4
A. W. Appel and Z. Shao. An empirical and analytic study of stack vs. heap cost for languages with closures. Journal of Functional Programming, 6(1):47--74, Jan 1996.
5
6
 
7
8
 
9
 
10
A. Chankhunthod, P. B. Danzig, C. Neerdaels, M. F. Schwartz, and K. J. Worrell. A Hierarchical Internet Object Cache. In Proceedings of the 1996 Usenix Annual Technical Conference, January 1996.
11
 
12
J. Cordina. Fast multithreading on shared memory multiprocessors. Technical report, University of Malta, June 2000.
13
14
 
15
S. C. Goldstein, K. E. Schauser, and D. E. Culler. Lazy Threads, Stacklets, and Synchronizers: Enabling primitives for compiling parallel languages. In Third Workshop on Langauges, Compilers, and Run-Time Systems for Scalable Computers, 1995.
 
16
T. Hun. Minimal Context Thread 0.7 manual. http://www.aranetwork.com/docs/mct-manual.pdf, 2002.
 
17
B. LaHaise. Linux AIO home page. http://www.kvack.org/blah/aio/.
 
18
H. C. Lauer and R. M. Needham. On the duality of operating system structures. In Second Inernational Symposium on Operating Systems, IR1A, October 1978.
 
19
 
20
D. Libenzi. Linux epoll patch. http://www.xmailserver.org/linux-patches/nio-improve.html.
 
21
D. McNamee and K. Armstrong. Extending the Mach external pager interface to accommodate user-level page replacement policies. Technical Report TR-90-09-05, University of Washington, 1990.
 
22
 
23
24
 
25
J. K. Ousterhout. Why Threads Are A Bad Idea (for most purposes). Presentation given at the 1996 Usenix Annual Technical Conference, January 1996.
 
26
V. S. Pai, P. Druschel, and W. Zwaenepoel. Flash: An Efficient and Portable Web Server. In Proceedings of the 1999 Annual Usenix Technical Conference, June 1999.
 
27
 
28
W. Pang and S. D. Goodwin. An algorithm for solving constraint-satisfaction problems.
29
30
 
31
 
32
E. Toernig. Coroutine library source. http://www.goron.de/froese/coro/.
 
33
Unknown. Accellerating Apache project. http://aap.sourceforge.net/.
 
34
Unknown. State threads for Internet applications. http://state-threads.sourceforge.net/docs/st.html.
 
35
 
36
R. von Behren, J. Condit, and E. Brewer. Why events are a bad idea (for high-concurrency servers). In Proceedings of the 2003 HotOS Workshop, May 2003.
37
38

CITED BY  45

Collaborative Colleagues:
Rob von Behren: colleagues
Jeremy Condit: colleagues
Feng Zhou: colleagues
George C. Necula: colleagues
Eric Brewer: colleagues