1. A method comprising: instantiating a plurality of virtual machines on a plurality of virtual machine hosts (“hosts”), each virtual machine being associated with a recovery time objective (RTO) value and a maximum number of RTO violations (MRV) value, wherein identifying the M virtual machines is further based on an MRV value associated with each powered-on virtual machine; and responding to a failed host by restarting failed virtual machines from the failed host on remaining functioning hosts, including: identifying M virtual machines from among a plurality of powered-on virtual machines running on the remaining functioning hosts based on an RTO value associated with each of the powered-on virtual machines; identifying N virtual machines from among the failed virtual machines based on an RTO value associated with each of the failed virtual machines; suspending the M virtual machines; and restarting the N virtual machines on one or more of the remaining functioning hosts.