Patent ID: 8458720

Claim:
A method for choosing non-continual jobs to run in a stream-based distributed computer system, comprising: determining a total amount of processing resources to be consumed by non-continual jobs, based on priorities of both continual and non-continual work; determining a priority threshold by incrementally increasing the priority threshold; accepting non-continual jobs to be executed based on the priority threshold, wherein non-continual jobs having a priority higher than the priority threshold will be accepted, and non-continual jobs having a priority lower than the priority threshold will be rejected; associating a penalty function with each process element of the accepted non-continual jobs, wherein the penalty function is a non-decreasing objective function with respect to a completion time of the associated process element of the accepted non-continual jobs; creating one or more execution templates for each accepted non-continual job, each of the one or more execution templates having different relative start times and resource allocations for the one or more processing elements of each accepted non-continual job; forming a system execution template by selecting an execution template and a start time for each of the accepted non-continual jobs, wherein the selected execution template and the start time for each of the accepted non-continual job are selected such that the system execution template minimizes the overall penalties based on estimated completion times of the process elements of the accepted non-continual jobs by minimizing a sum of penalty functions across the processing elements of the accepted non-continual jobs; and applying system constraints to the accepted non-continual jobs so that the accepted non-continual jobs meet set criteria such that the accepted non-continual jobs are scheduled to meet the set criteria and minimize overall penalties using the total amount of resources.