Patent Document ID: 9274836
Application ID: 14519732
Patent Flag: 1

Claim One:
1. A computer program product comprising: a non-transitory computer readable storage medium having computer readable program code embodied therein, the computer readable program code comprising: computer readable program code configured to receive a plurality of parallel and independent data tasks associated with a job, each of the parallel and independent data tasks having a penalty function, wherein a sum of penalty functions measures a cost of completing the job at a particular time; and computer readable program code configured to determine a planned allocation of slot resources over time for the plurality of parallel and independent data tasks, the planned allocation being based upon penalty function costs such that the planned allocation optimizes user-entered metrics for the job, wherein the planned allocation of slot resources comprises: choosing the user-entered metrics from a menu comprising response time, makespan, stretch and any metric which rewards or penalizes job completion time as compared to deadlines by a system administrator on a cluster-wide basis, or by individual users on a job-by-job basis; optimizing the user-entered metrics while ensuring minimum job slot guarantees, and avoiding job starvation, wherein the optimizing comprises solving an aggregate objective function of all the penalty functions, the aggregate objective function being one of a minimum sum of all the penalty functions and a minimum maximum of all the penalty functions, a minimum sum optimization being used for minimizing average of one of response time, stretch, lateness, tardiness and service level agreement of the job and a minimum maximum optimization being used for minimizing a maximum of one of response time, stretch, lateness, tardiness and service level agreement of the job; and defining slot resources as an arbitrary number of hosts that can perform concurrent jobs simultaneously over a defined execution time, wherein the job is one of the concurrent jobs, the job proceeds in multiple intervals with different intervals having different allocations, each interval contributes a portion of total work required to perform the job.