[pve-devel] [PATCH manager] fix #1030: calculate correct cpu usage of pools
Dominik Csapak
d.csapak at proxmox.com
Mon Jun 20 12:36:01 CEST 2016
we only added the % of the vms in a pool
which lead to wrong results
e.g. having a pool with 3 vms with 4 cores each and a
cpu usage of 50% each (2 cores at 100%)
lead to :
vm1 50%
vm2 50%
vm3 50%
pool 150%
instead we new calculate the percentage for the whole pool
Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
PVE/API2/Cluster.pm | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/PVE/API2/Cluster.pm b/PVE/API2/Cluster.pm
index 008674d..aeba934 100644
--- a/PVE/API2/Cluster.pm
+++ b/PVE/API2/Cluster.pm
@@ -203,7 +203,13 @@ __PACKAGE__->register_method({
$pe->{maxmem} = 0 if !$pe->{maxmem};
$pe->{maxmem} += $entry->{maxmem};
$pe->{cpu} = 0 if !$pe->{cpu};
- $pe->{cpu} += $entry->{cpu};
+ # explanation:
+ # we do not know how much cpus there are in the cluster at this moment
+ # so we calculate the current % of the cpu
+ # but we had already the old cpu % before this vm, so:
+ # new% = (old%*oldmax + cur%*curmax) / (oldmax+curmax)
+ $pe->{cpu} = $entry->{cpu} if !$pe->{maxcpu};
+ $pe->{cpu} = (($pe->{cpu} * $pe->{maxcpu}) + ($entry->{cpu} * $entry->{maxcpu})) / ($pe->{maxcpu} + $entry->{maxcpu});
$pe->{maxcpu} = 0 if !$pe->{maxcpu};
$pe->{maxcpu} += $entry->{maxcpu};
}
--
2.1.4
More information about the pve-devel
mailing list