MetaCartSign in to MyCiteSeer

Include Citations | Advanced Search | Help

Include Citations | Advanced Search | Help

  Abstract Multiprocessor Support for Event-Driven Programs

Download:
Download as a PDF
by Nickolai Zeldovich, Er Yip, Frank Dabek, Robert T. Morris, David Mazières, Frans Kaashoek
http://www.scs.cs.nyu.edu/~dm/papers/zeldovich:async-mp.pdf
Add To MetaCart

Abstract:

This paper presents a new asynchronous programming library (libasync-smp) that allows event-driven applications to take advantage of multiprocessors by running code for event handlers in parallel. To control the concurrency between events, the programmer can specify a color for each event: events with the same color (the default case) are handled serially; events with different colors can be handled in parallel. The programmer can incrementally expose parallelism in existing event-driven applications by assigning different colors to computationally-intensive events that do not share mutable state. An evaluation of libasync-smp demonstrates that applications achieve multiprocessor speedup with little programming effort. As an example, parallelizing the cryptography in the SFS file server required about 90 lines of changed code in two modules, out of a total of about 12,000 lines. Multiple clients were able to read large cached files from the libasync-smp SFS server running on a 4-CPU machine 2.5 times as fast as from an unmodified uniprocessor SFS server on one CPU. Applications without computationally intensive tasks also benefit: an event-driven Web server achieves 1.5 speedup on four CPUs with multiple clients reading small cached files. 1

Citations

2113 Chord: A scalable peer-to-peer lookup service for internet applications – Stoica, Morris, et al.
581 Wide-area cooperative storage with CFS – Dabek, Kaashoek, et al. - 2001
409 Scheduler Activations: Effective Kernel Support for the User-Level Management of Parallelism – Anderson, Bershad, et al. - 1992
236 SEDA: An architecture for wellconditioned, scalable internet services – Welsh, Culler, et al. - 2001
199 Flash: An efficient and portable Web server – Pai, Druschel, et al. - 1999
145 Separating key management from file system security – Mazières, Kaminsky, et al. - 1999
119 Fast and secure distributed read-only file system – Fu, Kaashoek, et al.
114 Using Continuations to Implement Thread Management and Communication in Operating Systems – Draves, Bershad, et al. - 1991
107 On the Duality of Operating System Structures – Lauer, Needham - 1979
95 A toolkit for user-level file systems – Mazieres - 2001
93 An Introduction to Programming with Threads – Birrell - 1989
72 Haskell—The Craft of Functional Programming – Thompson - 1999
60 Using cohort scheduling to enhance server performance – Larus, Parkes - 2002
46 Executing functional programs on a virtual tree of processors – Burton, Sleep - 1981
34 Cooperative task management without manual stack management or, event-driven programming is not the opposite of threaded programming – Adya, Howell, et al. - 2002
34 Lambda - The Ultimate Imperative – Steele, Sussman - 1976
29 Interface and execution models in the Fluke kernel – Ford, Hibler, et al. - 1999
28 Understanding the Linux Kernel. O’Reilly – Bovet, Cesati - 2002
18 The Convoy Phenomenon – Blasgen, Gray, et al. - 1979
8 threads are a bad idea (for most purposes). Invited talk at the 1996 USENIX technical conference – Ousterhout - 1996
7 Experiences Implementing BIND, A Distributed Name Server for the DARPA Internet – Dunlap, Bloom - 1986
5 Simple and general statistical profiling with pct – Blake, Bauer - 2002