Patent ID: 7406689

Claim:
A computer-implemented planning process for scheduling multiple jobs in a digital data processing system while considering changes in a network and a plurality of processing resources, each of the multiple jobs having a user-assigned priority and a weight, the planning process comprising: identifying all jobs in the digital data processing system; for each job, calculating a pickiness by estimating a job's runtime, determining a job's time frame, determining a number of machines in the digital data processing system having a sufficient capacity to execute a job within the job's time frame, and dividing the number of machines having the sufficient capacity by a total number of machines in the digital data processing system; for each job determining a preferred path between each pair of machines in the digital data processing system, determining a maximum bandwidth of each preferred path, determining a maximum tick value of each preferred path, identifying each machine that could execute the job, calculating a data transfer time between each machine that could execute the job and any remote machine with which the job must exchange data, multiplying the data transfer time by the maximum tick value of each preferred path to obtain a network centricity for each machine, and averaging the network centricity for all machines that could execute the job; for each job, calculating a job rank by adding together the job's pickiness, the network centricity and the user assigned priority; scheduling an assignment of resources for executing each job according to its job rank; evaluating a schedule's fitness based on a plurality of resources assigned to a first job and a second job, re-evaluating the schedule's fitness with the plurality of resources switched, and comparing the schedule's fitness with the resources switched and the schedule's fitness before switching resources; and retaining an assignment of resources that produces a best schedule fitness by assigning an initial value to a fitness of a job, multiplying a priority of the job by a weight of the job, subtracting a resulting product from an initial value, adding a value to the resulting product that is proportional to a time between a predicted end of an execution of the job and a user specified job deadline, and subtracting a value from a resulting sum that is proportional to the tick value of the preferred path between the machine assigned to execute the job and any remote machine with which the job must exchange data; wherein the planning process is dynamically adapted to an addition of one or more new ad hoc jobs and any unexpected interruptions in resource availability.