[pve-devel] [PATCH pve-manager 1/4] pvestatd: add broadcast_balancer_stats

Alexandre Derumier aderumier at odiso.com
Wed Jun 1 10:12:46 CEST 2022


broadcast each minute as it'll be average stats

Signed-off-by: Alexandre Derumier <aderumier at odiso.com>
---
 PVE/Service/pvestatd.pm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/PVE/Service/pvestatd.pm b/PVE/Service/pvestatd.pm
index 72445ec0..984877c1 100755
--- a/PVE/Service/pvestatd.pm
+++ b/PVE/Service/pvestatd.pm
@@ -79,6 +79,8 @@ sub hup {
 my $cached_kvm_version = '';
 my $next_flag_update_time;
 my $failed_flag_update_delay_sec = 120;
+my $balancer_stats = {};
+my $last_balancer_broadcast_time = 0;
 
 sub update_supported_cpuflags {
     my $kvm_version = PVE::QemuServer::kvm_user_version();
@@ -491,6 +493,20 @@ sub update_sdn_status {
     }
 }
 
+sub broadcast_balancer_stats {
+
+    my $ctime = time();
+
+    if($ctime >= $last_balancer_broadcast_time + 60) {
+
+	PVE::Cluster::broadcast_node_kv(
+	    'balancer-stats',
+	    encode_json($balancer_stats),
+	);
+	$last_balancer_broadcast_time = $ctime;
+    }
+}
+
 my $broadcast_version_info_done = 0;
 my sub broadcast_version_info : prototype() {
     if (!$broadcast_version_info_done) {
@@ -507,6 +523,8 @@ sub update_status {
     # correct list in case of an unexpected crash.
     my $rpcenv = PVE::RPCEnvironment::get();
 
+    $balancer_stats = {};
+
     eval {
 	my $tlist = $rpcenv->active_workers();
 	PVE::Cluster::broadcast_tasklist($tlist);
@@ -534,6 +552,12 @@ sub update_status {
     $err = $@;
     syslog('err', "lxc status update error: $err") if $err;
 
+    eval {
+	broadcast_balancer_stats();
+    };
+    $err = $@;
+    syslog('err', "balancer stats broadcast error: $err") if $err;
+
     eval {
 	rebalance_lxc_containers();
     };
-- 
2.30.2




More information about the pve-devel mailing list