An apparatus comprising a non-transitory computer readable medium having encoded thereon software for controlling operation of a host computer system, the computer software comprising a set of instructions executable by one or more processors of the host system to perform one or more operations, the set of instructions comprising:
- instructions for establishing two-way communications between an orchestrator of a virtual machine environment, which is established within the host computer system, and one or more applications running on one or more virtual machines provisioned by a hypervisor separate from the orchestrator in the virtual machine environment, wherein the two-way communications include a system pre-congestion notification from the orchestrator to the one or more applications to begin load shedding prior to reaching a limit on available resources of the host computer system, an application pre-congestion notification from the one or more applications to the orchestrator indicating increase in resource usage of the one or more applications that may result in congestion, or a low utilization notification from the one or more applications to the orchestrator indicating that resources of the one or more applications are being under-utilized;
- instructions for determining, with the orchestrator, whether mass congestion indicators are present, wherein the mass congestion indicators include indications of resource usage of the host computer system exceeding a threshold level;
- instructions for, in response to a determination that the mass congestion indicators are present, sending, with the orchestrator, the system pre-congestion notification to at least a first application of the one or more applications to begin load shedding and to reduce use of resources running on the one or more virtual machines in the virtual machine environment;
- instructions for, in response to the orchestrator receiving the low utilization notification from at least a second application and the application pre-congestion notification from at least a third application of the one or more applications, sending, with the orchestrator, signals to recover resources from at least the second application, and signals at least the third application to increase resource usage;
- and
- instructions for modifying, with the orchestrator, an allocation of resources of the host computer system by decreasing allocation to at least the first application and the second application of the one or more applications and increasing allocation to at least the third application of the one or more applications, based on the two-way communication between the orchestrator of the virtual machine environment and the one or more applications.