Patent ID: 8875143

Claim:
A method for scheduling tasks in a computer system, the method comprising: receiving, by at least one processor, a task to be scheduled for execution within a computer system from a device, the received task including a task utility function, the task utility function being a time dependent function providing a level of usefulness that is dependent upon an execution time; determining, by the at least one processor, a time window for the received task to be scheduled for execution on the computer system based on the task utility function of the received task; identifying, by the at least one processor, a plurality of other tasks previously scheduled to be executed on the computer system within the time window of the received task, each of the plurality of other tasks including a corresponding task utility function, the computer system providing resources that are shared among the task and the plurality of other tasks; identifying, by the at least one processor, a plurality of candidate schedules, the plurality of candidate schedules including a first candidate schedule and a second candidate schedule, the first and second candidate schedules being different scheduling combinations of the received task and the plurality of other tasks; calculating, by the at least one processor, a task utility value for each task included within the first and second candidate schedules based upon the corresponding task utility function; calculating, by the at least one processor, a first overall utility value for the first candidate schedule based on the calculated task utility values for the tasks within the first candidate schedule and a second overall utility value for the second candidate schedule based on the calculated task utility values for the tasks within the second candidate schedule; selecting, by the at least one processor, a schedule among the plurality of candidate schedules based on the first and second overall utility values; and queuing, by the at least one processor, the received task for execution according to the selected schedule.