Expressing and exploiting concurrency in networked applications with aspen

This paper presents Aspen, a high-level programming language thattargets both high-productivity programming and runtime support formanaging resources needed by a computation. Programs in Aspen arerepresented as directed graphs, where the edges are well-definedunidirectional communication channels and the nodes are instances of computational modules that process the incoming data. The resulting representation of a program closely resembles a flow chart describing the flow of computation in a server application and exposing the communicationat a high level of abstraction. This strategy for program composition naturally allows parallelism and data sharing to be factored out of the core computational logic of a program, facilitating a division of labor between parallelism expertsand application experts and also easing code development and maintenance. Aspen automatically and transparently supports task-level parallelism among module instancesand data-level parallelism across different flows in an application or, in some cases, across different work items within a flow. Aspen automatically and adaptively allocates threads to modules according to the dynamic workload seen at those modules. Aspen is tested using a web server and a video-on-demand (VoD)server. Both servers are compared to serverapplications coded in other languages (such as C, C++, and Java). The Aspen programs achieve the same functionality despiteusing 54--96% fewer lines of user code. Nevertheless, the Aspen version always performs competitively, with performance that is always similar to or better than previous web server implementations and that sees never more than a 10% performance degradation in the VoD server. On the other hand, some work loads see superior performance with Aspen: Aspen's runtime thread allocation strategy allows the video-on-demand server to support up to 36% more simultaneous 1 Mbps video streams than a hand-tuned C++ version.

[1]  Michael K. Chen,et al.  Shangri-La: achieving high performance from compiled network applications while enabling ease of programming , 2005, PLDI '05.

[2]  Erich M. Nahum,et al.  Performance issues in WWW servers , 1999, TNET.

[3]  James R. Larus,et al.  Using Cohort-Scheduling to Enhance Server Performance , 2002, USENIX Annual Technical Conference, General Track.

[4]  William Thies,et al.  StreamIt: A Language for Streaming Applications , 2002, CC.

[5]  Sumit Gulwani,et al.  WebCaL - a domain specific language for web caching , 2001, Comput. Commun..

[6]  Willy Zwaenepoel,et al.  Flash: An efficient and portable Web server , 1999, USENIX Annual Technical Conference, General Track.

[7]  EDDIE KOHLER,et al.  The click modular router , 2000, TOCS.

[8]  David E. Culler,et al.  The nesC language: A holistic approach to networked embedded systems , 2003, PLDI.

[9]  Eddie Kohler,et al.  The Click modular router , 1999, SOSP.

[10]  P. H. Welch An OCCAM approach to transputer engineering , 1988, C3P.

[11]  David E. Culler,et al.  SEDA: An Architecture for Scalable, Well-Conditioned Internet Services , 2001 .

[12]  George C. Necula,et al.  Capriccio: scalable threads for internet services , 2003, SOSP '03.

[13]  Sumit Mittal,et al.  An efficient threading model to boost server performance , 2003 .

[14]  Santosh K. Shrivastava,et al.  An overview of the Arjuna distributed programming system , 1991, IEEE Software.

[15]  Brendan Burns,et al.  Flux: A Language for Programming High-Performance Servers , 2006, USENIX Annual Technical Conference, General Track.

[16]  Philippe A. Palanque,et al.  Formal specification of CORBA services: experience and lessons learned , 2000, OOPSLA '00.

[17]  Roberto Salama,et al.  Software experience with concurrent C and LISP in a distributed system , 1988, CSC '88.

[18]  Arvind,et al.  Executing a Program on the MIT Tagged-Token Dataflow Architecture , 1990, IEEE Trans. Computers.

[19]  Jerry L. Archibald,et al.  Addendum to the proceedings on Object-oriented programming systems, languages, and applications (Addendum) , 1991, OOPSLA 1991.

[20]  Peter Thiemann,et al.  An embedded domain-specific language for type-safe server-side web scripting , 2005, TOIT.

[21]  Matthias Blume,et al.  Taming the IXP network processor , 2003, PLDI.

[22]  Peter Dickman Objects in large distributed applications (OLDA-II) , 1992, OOPSLA '92.

[23]  David I. August,et al.  Microarchitectural exploration with Liberty , 2002, MICRO 35.

[24]  William J. Dally,et al.  Programmable Stream Processors , 2003, Computer.

[25]  Scott Rixner,et al.  Network interface data caching , 2005, IEEE Transactions on Computers.

[26]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.

[27]  David E. Culler,et al.  Ninja: A Framework for Network Services , 2002, USENIX Annual Technical Conference, General Track.

[28]  David E. Culler,et al.  SEDA: an architecture for well-conditioned, scalable internet services , 2001, SOSP.

[29]  Edward A. Lee,et al.  Ptolemy: A Framework for Simulating and Prototyping Heterogenous Systems , 2001, Int. J. Comput. Simul..

[30]  eva Kühn,et al.  General purpose work flow languages , 1995, Distributed and Parallel Databases.