The π-calculus gains simplicity by removing all distinction between variables and constants communication links are identified by names, and computation is represented purely as the communication of names across links. The calculus is an extension of the process algebra CCS, following work by Engberg and Nielsen, who added mobility to CCS while preserving its algebraic properties. Not only may the component agents of a system be arbitrarily linked, but a communication between neighbours may carry information which changes that linkage. We present the π-calculus, a calculus of communicating systems in which one can naturally express processes which have changing structure. 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. 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 also present resource-aware scheduling, which allows thread scheduling and admission control to adapt to the system's current resource usage. A compiler analysis makes our stack implementation efficient and sound. 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. 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. As a result, we can take advantage of cooperative threading, new asynchronous I/O mechanisms, and compiler support. By implementing Capriccio as a user-level thread package, we have decoupled the thread package implementation from the underlying operating system. 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. This paper presents Capriccio, a scalable thread package for use with high-concurrency servers.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |