Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.5555/1364385.1364392guideproceedingsArticle/Chapter ViewAbstractPublication PagesConference Proceedingsacm-pubtype
Article

Events can make sense

Published: 17 June 2007 Publication History
  • Get Citation Alerts
  • Abstract

    Tame is a new event-based system for managing concurrency in network applications. Code written with Tame abstractions does not suffer from the "stack-ripping" problem associated with other event libraries. Like threaded code, tamed code uses standard control flow, automatically-managed local variables, and modular interfaces between callers and callees. Tame's implementation consists of C++ libraries and a source-to-source translator; no platform-specific support or compiler modifications are required, and Tame induces little runtime overhead. Experience with Tame in real-world systems, including a popular commercial Web site, suggests it is easy to adopt and deploy.

    References

    [1]
    {1} A. Adya, J. Howell, M. Theimer, W. J. Bolosky, and J. R. Douceur. Cooperative task management without manual stack management. In Proc. 2002 USENIX Annual Tech. Conference, June 2002.
    [2]
    {2} A. Birkett. Parsing C++. http://www.nobugs.org/developer/parsingcpp.
    [3]
    {3} T. Brecht, D. Pariag, and L. Gammo. accept()able strategies for improving Web server performance. In Proc. 2004 USENIX Annual Tech. Conference, June 2004.
    [4]
    {4} B. Callaghan, B. Pawlowski, and P. Staubach. NFS version 3 protocol specification. RFC 1813, Network Working Group, June 1995.
    [5]
    {5} K. Claessen. A poor man's concurrency monad. Journal of Functional Programming, 9(3), May 1999.
    [6]
    {6} R. Cunningham and E. Kohler. Making events less slippery with eel. In Proc. HotOS-X, June 2005.
    [7]
    {7} F. Dabek, M. F. Kaashoek, D. Karger, R. Morris, and I. Stoica. Wide-area cooperative storage with CFS. In Proc. 18th SOSP, October 2001.
    [8]
    {8} G. L. Davies. Teaching concurrent programming with Pascal-FC. SIGCSE Bulletin, 22(2), 1990.
    [9]
    {9} U. Drepper. The native POSIX thread library for Linux. http://people.redhat.com/drepper/nptl-design.pdf.
    [10]
    {10} T. Duff. Duff's device. http://www.lysator.liu.se/c/duffs-device.html.
    [11]
    {11} A. Dunkels, O. Schmidt, T. Voigt, and M. Ali. Protothreads: Simplifying event-driven programming of memory-constrained embedded systems. In Proc. 2006 SenSys, Nov. 2006.
    [12]
    {12} R. S. Engelschall. Portable multithreading: The signal stack trick for user-space thread creation. In Proc. 2000 USENIX Annual Tech. Conference, June 2000.
    [13]
    {13} M. J. Freedman, E. Freudenthal, and D. Mazières. Democratizing content publication with Coral. In Proc. 1st NSDI, March 2004.
    [14]
    {14} C. A. R. Hoare. Monitors: an operating system structuring concept. Communications of the ACM, 17(10), 1974.
    [15]
    {15} P. Hudak et al. Report on the programming language Haskell: a non-strict, purely functional language version 1.2. SIGPLAN Not., 27(5), 1992.
    [16]
    {16} Humor Rainbow, Inc. OkCupid.com. http://www.okcupid.com.
    [17]
    {17} G. Jones. Programming in Occam. Prentice Hall International (UK) Ltd., 1986.
    [18]
    {18} M. Krohn. Building secure high-performance web services with OKWS. In Proc. 2004 USENIX Annual Tech. Conference, June 2004.
    [19]
    {19} J. Lemon. Kqueue: A generic and scalable event notification facility. In Proc. 2001 FREENIX, 2001.
    [20]
    {20} P. Li and S. Zdancewic. Combining events and threads for scalable network services. In Proc. 2007 PLDI, Jun 2007.
    [21]
    {21} D. Mazières. A toolkit for user-level file systems. In Proc. 2001 USENIX Annual Tech. Conference, June 2001.
    [22]
    {22} Microsoft. Inside I/O completion ports. http://www.microsoft.com/technet/sysinternals/ information/IoCompletionPorts.mspx.
    [23]
    {23} MySQL AB. MySQL. http://www.mysql.com.
    [24]
    {24} V. S. Pai, P. Druschel, and W. Zwaenepoel. Flash: An efficient and portable Web server. In Proc. 1999 USENIX Annual Tech. Conference, June 1999.
    [25]
    {25} D. Pariag, T. Brecht, A. Harji, P. Buhr, and A. Shukla. Comparing the performance of web server architectures. In Proc. 2007 EuroSys, March 2007.
    [26]
    {26} K. Park and V. S. Pai. Connection conditioning: Architecture-independent support for simple, robust servers. In Proc. 2006 NSDI, May 2006.
    [27]
    {27} N. Provos. libevent--an event notification library. http://www.monkey.org/~provos/libevent.
    [28]
    {28} N. Provos. A virtual honeypot framework. In Proc. 13th USENIX Security Symposium, Aug 2004.
    [29]
    {29} B. Ramkumar and V. Strumpen. Portable checkpointing for heterogeneous architectures. In Proc. 27th International Symposium on Fault-Tolerant Computing, June 1997.
    [30]
    {30} J. H. Reppy. CML: A higher concurrent language. In Proc. 1991 PLDI, June 1991.
    [31]
    {31} Silicon Graphics, Inc. State threads for Internet applications. http://state-threads.sourceforge.net/docs/st.html.
    [32]
    {32} D. B. Skillicorn and D. Talia. Models and languages for parallel computation. ACM Computing Surveys, 30(2), 1998.
    [33]
    {33} G. Steele. Common Lisp. Digital Press, Jun 1984.
    [34]
    {34} J. Stribling, J. Li, I. G. Councill, M. F. Kaashoek, and R. Morris. OverCite: A distributed, cooperative CiteSeer. In Proc. 2006 NSDI, May 2006.
    [35]
    {35} C. Thekkath, T. Mann, and E. K. Lee. Frangipani: A scalable distributed file system. In Proc. 16th SOSP, October 1997.
    [36]
    {36} N. Tolia, M. Kaminsky, D. G. Andersen, and S. Patil. An architecture for Internet data transfer. In Proc. 2006 NSDI, May 2006.
    [37]
    {37} R. von Behren, J. Condit, and E. Brewer. Why events are a bad idea (for high-concurrency servers). In Proc. HotOS-IX, May 2003.
    [38]
    {38} R. von Behren, J. Condit, F. Zhou, G. C. Necula, and E. Brewer. Capriccio: scalable threads for Internet services. In Proc. 19th SOSP, October 2003.
    [39]
    {39} M. Walfish, M. Vutukuru, H. Balakrishnan, D. Karger, and S. Shenker. DDoS Defense by Offense. In Proc. 2006 NSDI, May 2006.
    [40]
    {40} M. Welsh, D. Culler, and E. Brewer. SEDA: An architecture for well-conditioned, scalable Internet services. In Proc. 18th SOSP, October 2001.
    [41]
    {41} N. Zeldovich et al. Multiprocessor support for event-driven programs. In Proc. 2003 USENIX Annual Tech. Conference, June 2003.

    Cited By

    View all
    • (2019)LXDsProceedings of the 2019 USENIX Conference on Usenix Annual Technical Conference10.5555/3358807.3358831(269-284)Online publication date: 10-Jul-2019
    • (2019)Reaping the performance of fast NVM storage with udepotProceedings of the 17th USENIX Conference on File and Storage Technologies10.5555/3323298.3323300(1-15)Online publication date: 25-Feb-2019
    • (2019)Mitigating Tail Response Time of n-Tier ApplicationsACM Transactions on Internet Technology10.1145/334046219:3(1-25)Online publication date: 25-Jul-2019
    • Show More Cited By

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image Guide Proceedings
    ATC'07: 2007 USENIX Annual Technical Conference on Proceedings of the USENIX Annual Technical Conference
    June 2007
    31 pages
    ISBN:9998888776

    Publisher

    USENIX Association

    United States

    Publication History

    Published: 17 June 2007

    Qualifiers

    • Article

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)0
    • Downloads (Last 6 weeks)0

    Other Metrics

    Citations

    Cited By

    View all
    • (2019)LXDsProceedings of the 2019 USENIX Conference on Usenix Annual Technical Conference10.5555/3358807.3358831(269-284)Online publication date: 10-Jul-2019
    • (2019)Reaping the performance of fast NVM storage with udepotProceedings of the 17th USENIX Conference on File and Storage Technologies10.5555/3323298.3323300(1-15)Online publication date: 25-Feb-2019
    • (2019)Mitigating Tail Response Time of n-Tier ApplicationsACM Transactions on Internet Technology10.1145/334046219:3(1-25)Online publication date: 25-Jul-2019
    • (2019)Optimizing N-Tier Application Scalability in the CloudACM Transactions on Modeling and Performance Evaluation of Computing Systems10.1145/33261204:2(1-27)Online publication date: 13-Jun-2019
    • (2018)AutoPA: automatically generating active driver from original passive driver codeProceedings of the 2018 International Symposium on Code Generation and Optimization10.1145/3168809(288-299)Online publication date: 24-Feb-2018
    • (2016)GPUnetACM Transactions on Computer Systems10.1145/296309834:3(1-31)Online publication date: 17-Sep-2016
    • (2016)A type-and-effect system for asynchronous, typed eventsProceedings of the 15th International Conference on Modularity10.1145/2889443.2889446(42-53)Online publication date: 14-Mar-2016
    • (2016)Lightweight Capability DomainsACM SIGOPS Operating Systems Review10.1145/2883591.288360149:2(44-50)Online publication date: 20-Jan-2016
    • (2015)Lightweight capability domainsProceedings of the 8th Workshop on Programming Languages and Operating Systems10.1145/2818302.2818307(8-14)Online publication date: 4-Oct-2015
    • (2015)GatlingACM Transactions on Information and System Security10.1145/271456517:4(1-34)Online publication date: 24-Apr-2015
    • Show More Cited By

    View Options

    View options

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media