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.
programming languages parallel programming network servers resource management