1.3. Scheduling Policies A scheduling policy is a set of rules that defines the logic by which virtual machines are distributed amongst hosts in the cluster that scheduling policy is applied to. Scheduling policies determine this logic via a combination of filters, weightings, and a load balancing policy. The filter modules apply hard enforcement and filter out hosts that do not meet the conditions specified by that filter. The weights modules apply soft enforcement, and are used to control the relative priority of factors considered when determining the hosts in a cluster on which a virtual machine can run. The Red Hat Virtualization Manager provides five default scheduling policies: Evenly_Distributed , Cluster_Maintenance , None , Power_Saving , and VM_Evenly_Distributed . You can also define new scheduling policies that provide fine-grained control over the distribution of virtual machines. Regardless of the scheduling policy, a virtual machine will not start on a host with an overloaded CPU. By default, a host's CPU is considered overloaded if it has a load of more than 80% for 5 minutes, but these values can be changed using scheduling policies. See Section 8.2.5, "Scheduling Policy Settings Explained" for more information about the properties of each scheduling policy. Figure 1.4. Evenly Distributed Scheduling Policy The Evenly_Distributed scheduling policy distributes the memory and CPU processing load evenly across all hosts in the cluster. Additional virtual machines attached to a host will not start if that host has reached the defined CpuOverCommitDurationMinutes , HighUtilization , or MaxFreeMemoryForOverUtilized . The VM_Evenly_Distributed scheduling policy virtual machines evenly between hosts based on a count of the virtual machines. The cluster is considered unbalanced if any host is running more virtual machines than the HighVmCount and there is at least one host with a virtual machine count that falls outside of the MigrationThreshold . Figure 1.5. Power Saving Scheduling Policy The Power_Saving scheduling policy distributes the memory and CPU processing load across a subset of available hosts to reduce power consumption on underutilized hosts. Hosts with a CPU load below the low utilization value for longer than the defined time interval will migrate all virtual machines to other hosts so that it can be powered down. Additional virtual machines attached to a host will not start if that host has reached the defined high utilization value. Set the None policy to have no load or power sharing between hosts for running virtual machines. This is the default mode. When a virtual machine is started, the memory and CPU processing load is spread evenly across all hosts in the cluster. Additional virtual machines attached to a host will not start if that host has reached the defined CpuOverCommitDurationMinutes , HighUtilization , or MaxFreeMemoryForOverUtilized . The Cluster_Maintenance scheduling policy limits activity in a cluster during maintenance tasks. When the Cluster_Maintenance policy is set, no new virtual machines may be started, except highly available virtual machines. If host failure occurs, highly available virtual machines will restart properly and any virtual machine can migrate. 1.3.1. Creating a Scheduling Policy You can create new scheduling policies to control the logic by which virtual machines are distributed amongst a given cluster in your Red Hat Virtualization environment. Creating a Scheduling Policy Click Administration Configure . Click the Scheduling Policies tab. Click New . Enter a Name and Description for the scheduling policy. Configure filter modules: In the Filter Modules section, drag and drop the preferred filter modules to apply to the scheduling policy from the Disabled Filters section into the Enabled Filters section. Specific filter modules can also be set as the First , to be given highest priority, or Last , to be given lowest priority, for basic optimization. To set the priority, right-click any filter module, hover the cursor over Position and select First or Last . Configure weight modules: In the Weights Modules section, drag and drop the preferred weights modules to apply to the scheduling policy from the Disabled Weights section into the Enabled Weights & Factors section. Use the + and - buttons to the left of the enabled weight modules to increase or decrease the weight of those modules. Specify a load balancing policy: From the drop-down menu in the Load Balancer section, select the load balancing policy to apply to the scheduling policy. From the drop-down menu in the Properties section, select a load balancing property to apply to the scheduling policy and use the text field to the right of that property to specify a value. Use the + and - buttons to add or remove additional properties. Click OK . 1.3.2. Explanation of Settings in the New Scheduling Policy and Edit Scheduling Policy Window The following table details the options available in the New Scheduling Policy and Edit Scheduling Policy windows. Table 1.12. New Scheduling Policy and Edit Scheduling Policy Settings Field Name Description Name The name of the scheduling policy. This is the name used to refer to the scheduling policy in the Red Hat Virtualization Manager. Description A description of the scheduling policy. This field is recommended but not mandatory. Filter Modules A set of filters for controlling the hosts on which a virtual machine in a cluster can run. Enabling a filter will filter out hosts that do not meet the conditions specified by that filter, as outlined below: CpuPinning : Hosts which do not satisfy the CPU pinning definition. Migration : Prevent migration to the same host. PinToHost : Hosts other than the host to which the virtual machine is pinned. CPU-Level : Hosts that do not meet the CPU topology of the virtual machine. CPU : Hosts with fewer CPUs than the number assigned to the virtual machine. Memory : Hosts that do not have sufficient memory to run the virtual machine. VmAffinityGroups : Hosts that do not meet the conditions specified for a virtual machine that is a member of an affinity group. For example, that virtual machines in an affinity group must run on the same host or on separate hosts. VmToHostsAffinityGroups : Group of hosts that do not meet the conditions specified for a virtual machine that is a member of an affinity group. For example, that virtual machines in an affinity group must run on one of the hosts in a group or on a separate host that is excluded from the group. InClusterUpgrade : Hosts that are running an earlier operating system than the host that the virtual machine currently runs on. HostDevice : Hosts that do not support host devices required by the virtual machine. HA : Forces the Manager virtual machine in a self-hosted engine environment to run only on hosts with a positive high availability score. Emulated-Machine : Hosts which do not have proper emulated machine support. Network : Hosts on which networks required by the network interface controller of a virtual machine are not installed, or on which the cluster's display network is not installed. HostedEnginesSpares : Reserves space for the Manager virtual machine on a specified number of self-hosted engine nodes. Label : Hosts that do not have the required affinity labels. Compatibility-Version : Runs virtual machines only on hosts with the correct compatibility version support. CPUOverloaded : Hosts that are CPU overloaded. Weights Modules A set of weightings for controlling the relative priority of factors considered when determining the hosts in a cluster on which a virtual machine can run. InClusterUpgrade : Weight hosts in accordance with their operating system version. The weight penalizes hosts with earlier operating systems more than hosts with the same operating system as the host that the virtual machine is currently running on. This ensures that priority is always given to hosts with later operating systems. OptimalForHaReservation : Weights hosts in accordance with their high availability score. None : Weights hosts in accordance with the even distribution module. OptimalForEvenGuestDistribution : Weights hosts in accordance with the number of virtual machines running on those hosts. VmAffinityGroups : Weights hosts in accordance with the affinity groups defined for virtual machines. This weight module determines how likely virtual machines in an affinity group are to run on the same host or on separate hosts in accordance with the parameters of that affinity group. VmToHostsAffinityGroups : Weights hosts in accordance with the affinity groups defined for virtual machines. This weight module determines how likely virtual machines in an affinity group are to run on one of the hosts in a group or on a separate host that is excluded from the group. OptimalForCPUPowerSaving : Weights hosts in accordance with their CPU usage, giving priority to hosts with higher CPU usage. OptimalForEvenCpuDistribution : Weights hosts in accordance with their CPU usage, giving priority to hosts with lower CPU usage. HA : Weights hosts in accordance with their high availability score. PreferredHosts : Preferred hosts have priority during virtual machine setup. OptimalForMemoryPowerSaving : Weights hosts in accordance with their memory usage, giving priority to hosts with lower available memory. OptimalForMemoryEvenDistribution : Weights hosts in accordance with their memory usage, giving priority to hosts with higher available memory. Load Balancer This drop-down menu allows you to select a load balancing module to apply. Load balancing modules determine the logic used to migrate virtual machines from hosts experiencing high usage to hosts experiencing lower usage. Properties This drop-down menu allows you to add or remove properties for load balancing modules, and is only available when you have selected a load balancing module for the scheduling policy. No properties are defined by default, and the properties that are available are specific to the load balancing module that is selected. Use the + and - buttons to add or remove additional properties to or from the load balancing module.

Commands: