1. A method comprising the steps of: running a set of instances on at least one cloud for a first time interval for a given processing job, each of the instances in the set of instances comprising a bundle of virtualized resources; evaluating one or more performance characteristics of each of the instances in the set of instances over the first time interval; separating the set of instances into a first subset of the set of instances to maintain for a second time interval and a second subset of the set of instances to terminate for the second time interval responsive to the evaluating step; starting at least one additional instance on the at least one cloud for the second time interval to replace at least one of the instances in the second subset; and migrating at least one of the instances in the second subset to the at least one additional instance; wherein evaluating the one or more performance characteristics comprises determining an average performance level of the set of instances over the first time interval; wherein separating the set of instances into the first subset and the second subset comprises: determining a migration cost for migrating a given instance in the set of instances, the migration cost being amortized across an expected amount of time remaining for completion of the given processing job; and placing the given instance in the second subset based at least in part on determining that a performance level of the given instance, taking into account the migration cost, is below the average performance level of the set of instances over the first time interval; and wherein the steps are performed by at least one processing device comprising a processor coupled to a memory.