Patent ID: 8321558

Claim:
A computer-implemented method for monitoring distributed execution of programs, the method comprising: receiving, by one or more configured computing systems of a distributed program execution service, configuration information from a user regarding executing an indicated program in a distributed parallel manner on an indicated quantity of computing nodes, the indicated program including a plurality of execution jobs; selecting, by the one or more configured computing systems, multiple computing nodes to use as part of a cluster for executing the indicated program, the selected multiple computing nodes being of the indicated quantity and having an aggregate quantity of each of multiple types of computing resources that are allocated for the executing of the indicated program; initiating the executing of the indicated program in a distributed parallel manner on the multiple computing nodes of the cluster at a first time by initiating execution of at least one of the execution jobs of the indicated program on each of the multiple computing nodes of the cluster; and at a second time subsequent to the first time, determining, by the one or more configured computing systems, an actual aggregate quantity of computing resources of one of the multiple computing resource types that are being used for the executing of the indicated program as part of the cluster, and determining that the actual aggregate quantity exceeds the allocated aggregate quantity of computing resources of the one computing resource type for the executing of the indicated program; determining, by the one or more configured computing systems, that one or more bottlenecks exist with respect to executing one or more programs other than the indicated program based at least in part on the determined actual aggregate quantity of the computing resources of the one computing resource type; and initiating, by the one or more configured computing systems, an attempt to reduce the one or more bottlenecks by throttling the use of the computing resources of the one computing resource type on the multiple computing nodes of the cluster.