Peak resource analysis of concurrent distributed systems
Abstract Traditional cost analysis frameworks have been defined for cumulative resources which keep on increasing along the computation. Examples of cumulative resources are execution time, number of executed steps, and energy consumption. Non-cumulative resources are acquired and (possibly) released along the execution. Examples of non-cumulative cost are number of connections established that are later closed, or resources requested to a virtual host which are released after using them. We present a static analysis framework to infer the peak cost for non-cumulative types of resources in concurrent distributed systems. Our framework is generic w.r.t. the type of resource and can be instantiated with any of the above mentioned resources as well as with any other resource that is measurable by inspecting the instructions of the program. The concurrent distributed language that we consider allows creating distributed locations dynamically within the program and spawning tasks that execute concurrently at any of the existing locations. Our analysis infers, for the different distributed locations, the maximum (or peak) amount of resources that they may require along any execution. This information can be used, among other applications, to detect bottlenecks in the system and to efficiently dimension the processing capacity and storage that the locations of the concurrent distributed system require.