Fix cpu average. Use the cpu number of host and vm.

This commit is contained in:
wescoeur 2016-03-17 11:01:12 +01:00
parent d7ed9ab64e
commit da0c1cec22

View File

@ -208,6 +208,7 @@ function computeRessourcesAverage (objects, objectsStats, nPoints) {
objectAverages.cpu = computeAverage( objectAverages.cpu = computeAverage(
mapToArray(stats.cpus, cpu => computeAverage(cpu, nPoints)) mapToArray(stats.cpus, cpu => computeAverage(cpu, nPoints))
) )
objectAverages.nCpus = stats.cpus.length
objectAverages.memoryFree = computeAverage(stats.memoryFree, nPoints) objectAverages.memoryFree = computeAverage(stats.memoryFree, nPoints)
objectAverages.memory = computeAverage(stats.memory, nPoints) objectAverages.memory = computeAverage(stats.memory, nPoints)
@ -230,9 +231,10 @@ function computeRessourcesAverageWithWeight (averages1, averages2, ratio) {
return averages return averages
} }
function setRealCpuAverageOfVms (vms, vmsAverages) { function setRealCpuAverageOfVms (vms, vmsAverages, nCpus) {
for (const vm of vms) { for (const vm of vms) {
vmsAverages[vm.id].cpu /= vm.CPUs.number const averages = vmsAverages[vm.id]
averages.cpu *= averages.nCpus / nCpus
} }
} }
@ -390,7 +392,7 @@ class Plan {
return vmsStats return vmsStats
} }
async _getVmsAverages (vms) { async _getVmsAverages (vms, host) {
const vmsStats = await this._getVmsStats(vms, 'minutes') const vmsStats = await this._getVmsStats(vms, 'minutes')
const vmsAverages = computeRessourcesAverageWithWeight( const vmsAverages = computeRessourcesAverageWithWeight(
computeRessourcesAverage(vms, vmsStats, EXECUTION_DELAY), computeRessourcesAverage(vms, vmsStats, EXECUTION_DELAY),
@ -399,7 +401,7 @@ class Plan {
) )
// Compute real CPU usage. Virtuals cpus to reals cpus. // Compute real CPU usage. Virtuals cpus to reals cpus.
setRealCpuAverageOfVms(vms, vmsAverages) setRealCpuAverageOfVms(vms, vmsAverages, host.CPUs.cpu_count)
return vmsAverages return vmsAverages
} }
@ -453,7 +455,7 @@ class PerformancePlan extends Plan {
async _optimize ({ exceededHost, hosts, hostsAverages }) { async _optimize ({ exceededHost, hosts, hostsAverages }) {
const vms = await this._getVms(exceededHost.id) const vms = await this._getVms(exceededHost.id)
const vmsAverages = await this._getVmsAverages(vms) const vmsAverages = await this._getVmsAverages(vms, exceededHost)
// Sort vms by cpu usage. (higher to lower) // Sort vms by cpu usage. (higher to lower)
vms.sort((a, b) => vms.sort((a, b) =>