1. A method of operating a computing cluster to execute a job, the method comprising: building a model of execution of the job based on dependencies among tasks of the job, the model relating time to complete the job to resources allocated to the job; and at each time of a plurality of times: assessing processing remaining on the job at the time; accessing the model based on the processing remaining; and adjusting resources allocated to the job based on the access to the model and a utility function.