Academia.eduAcademia.edu

Outline

Capriccio: scalable threads for internet services

2003, Operating Systems Review

https://doi.org/10.1145/1165389.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 threadbased systems can provide a simpler programming model that achieves equivalent or superior performance.

References (42)

  1. REFERENCES
  2. A. Adya, J. Howell, M. Theimer, W. J. Bolosky, and J. R. Douceur. Cooperative task management without manual stack management. In Proceedings of the 2002 Usenix ATC, June 2002.
  3. T. Anderson, B. Bershad, E. Lazowska, and H. Levy. Scheduler Activations: Effective Kernel Support for the User-Level Management of Parallelism. ACM Transactions on Computer Systems, 10(1):53-79, February 1992.
  4. 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.
  5. 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.
  6. B. N. Bershad, C. Chambers, S. J. Eggers, C. Maeda, D. McNamee, P. Pardyak, S. Savage, and E. G. Sirer. SPIN -an extensible microkernel for application-specific operating system services. In ACM SIGOPS European Workshop, pages 68-71, 1994.
  7. M. W. Blasgen, J. Gray, M. F. Mitoma, and T. G. Price. The convoy phenomenon. Operating Systems Review, 13(2):20-25, 1979.
  8. R. D. Blumofe, C. F. Joerg, B. C. Kuszmaul, C. E. Leiserson, K. H. Randall, and Y. Zhou. Cilk: An efficient multithreaded runtime system. Journal of Parallel and Distributed Computing, 37(1):55-69, 1996.
  9. D. G. Bobrow and B. Wegbreit. A model and stack implementation of multiple environments. Communications of the ACM, 16(10):591-603, Oct 1973.
  10. M. C. Carlisle, A. Rogers, J. Reppy, and L. Hendren. Early experiences with Olden. In Proceedings of the 6th International Workshop on Languages and Compilers for Parallel Computing (LNCS), 1993.
  11. 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.
  12. P. Cheng and G. E. Blelloch. A parallel, real-time garbage collector. In Proceedings of the 2001 ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI '01), 2001.
  13. J. Cordina. Fast multithreading on shared memory multiprocessors. Technical report, University of Malta, June 2000.
  14. J. R. Douceur and W. J. Bolosky. Progress-based regulation of low-importance processes. In Symposium on Operating Systems Principles, pages 247-260, 1999.
  15. R. P. Draves, B. N. Bershad, R. F. Rashid, and R. W. Dean. Using continuations to implement thread management and communication in operating systems. In Proceedings of the13th ACM Symposium on Operating Systems Principle, pages 122-136. Association for Computing Machinery SIGOPS, 1991.
  16. D. R. Engler, M. F. Kaashoek, and J. O'Toole. Exokernel: An operating system architecture for application-level resource management. In Symposium on Operating Systems Principles, pages 251-266, 1995.
  17. R. Fowler, A. Cox, S. Elnikety, and W. Zwaenepoel. Using performance reflection in systems software. In Proceedings of the 2003 HotOS Workshop, May 2003.
  18. D. Gay, P. Levis, R. von Behren, M. Welsh, E. Brewer, and D. Culler. The nesC language: A holistic approach to networked embedded systems. In ACM SIGPLAN Conference on Programming Language Design and Implementation, 2003.
  19. 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.
  20. T. Hun. Minimal Context Thread 0.7 manual. http://www.aranetwork.com/docs/mct-manual.pdf, 2002.
  21. B. LaHaise. Linux AIO home page. http://www.kvack.org/ blah/aio/.
  22. H. C. Lauer and R. M. Needham. On the duality of operating system structures. In Second Inernational Symposium on Operating Systems, IR1A, October 1978.
  23. J. Lemon. Kqueue: A generic and scalable event notification facility. In USENIX Technical conference, 2001.
  24. D. Libenzi. Linux epoll patch. http://www.xmailserver.org/ linux-patches/nio-improve.html.
  25. 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.
  26. S. S. Muchnick. Advanced Compiler Design and Implementation. Morgan Kaufmann, San Francisco, 2000.
  27. G. C. Necula, S. McPeak, S. P. Rahul, and W. Weimer. CIL: Intermediate language and tools for analysis and transformation of C programs. Lecture Notes in Computer Science, 2304:213-229, 2002.
  28. G. C. Necula, S. McPeak, and W. Weimer. CCured: Type-safe retrofitting of legacy code. In The 29th Annual ACM Symposium on Principles of Programming Languages, pages 128-139. ACM, Jan. 2002.
  29. J. K. Ousterhout. Why Threads Are A Bad Idea (for most purposes). Presentation given at the 1996 Usenix Annual Technical Conference, January 1996.
  30. 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.
  31. H. D. Pande and B. G. Ryder. Data-flow-based virtual function resolution. Lecture Notes in Computer Science, 1145:238-254, 1996.
  32. W. Pang and S. D. Goodwin. An algorithm for solving constraint-satisfaction problems.
  33. M. I. Seltzer, Y. Endo, C. Small, and K. A. Smith. Dealing with disaster: Surviving misbehaved kernel extensions. In Proceedings of the 2nd Symposium on Operating Systems Design and Implementation, pages 213-227, Seattle, Washington, 1996.
  34. M. A. Shah, S. Madden, M. J. Franklin, and J. M. Hellerstein. Java support for data-intensive systems: Experiences building the Telegraph dataflow system. SIGMOD Record, 30(4):103-114, 2001.
  35. O. Shivers. Control-Flow Analysis of Higher-Order Languages. PhD thesis, Carnegie-Mellon University, May 1991.
  36. E. Toernig. Coroutine library source. http://www.goron.de/˜froese/coro/.
  37. Unknown. Accellerating Apache project. http://aap.sourceforge.net/.
  38. Unknown. State threads for Internet applications. http://state-threads.sourceforge.net/docs/st.html.
  39. J. R. von Behren, E. Brewer, N. Borisov, M. Chen, M. Welsh, J. MacDonald, J. Lau, S. Gribble, , and D. Culler. Ninja: A framework for network services. In Proceedings of the 2002 Usenix Annual Technical Conference, June 2002.
  40. 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.
  41. T. von Eicken, A. Basu, V. Buch, and W. Vogels. U-Net: A User-Level Network Interface for Parallel and Distributed Computing. In Proceedings of the 15th ACM Symposium on Operating Systems Principles, Copper Mountain Resort, CO, USA, Decemeber 1995.
  42. M. Welsh, D. E. Culler, and E. A. Brewer. SEDA: An architecture for well-conditioned, scalable Internet services. In Symposium on Operating Systems Principles, pages 230-243, 2001.