package org.ovirt.engine.core.bll.scheduling.utils; import java.io.Serializable; import java.util.Comparator; import org.ovirt.engine.core.bll.scheduling.SlaValidator; import org.ovirt.engine.core.common.businessentities.VDS; /** * Comparator that compares the CPU usage of two hosts, with regard to the number of CPUs each host has and it's * strength. */ public class VdsCpuUsageComparator implements Comparator<VDS>, Serializable { boolean countThreadsAsCores; public VdsCpuUsageComparator(boolean countThreadsAsCores) { this.countThreadsAsCores = countThreadsAsCores; } @Override public int compare(VDS o1, VDS o2) { return Integer.compare(calculateCpuUsage(o1), calculateCpuUsage(o2)); } private int calculateCpuUsage(VDS o1) { return o1.getUsageCpuPercent() * SlaValidator.getEffectiveCpuCores(o1, countThreadsAsCores) / o1.getVdsStrength(); } }