Publication | Closed Access
Capriccio
133
Citations
17
References
2003
Year
Unknown Venue
Cluster ComputingCooperative Thread PackageEngineeringProgram AnalysisConcurrent ProgrammingComputer ArchitectureComputer EngineeringParallel ProgrammingComputer ScienceThread SchedulingConcurrent SystemParallel ComputingCompilersConcurrent Data StructureWeb ServerSystem Software
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.
| Year | Citations | |
|---|---|---|
Page 1
Page 1