From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 2E60A1FF133 for ; Mon, 27 Apr 2026 15:21:19 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 57DB61E9C6; Mon, 27 Apr 2026 15:21:11 +0200 (CEST) From: Dominik Rusovac To: pve-devel@lists.proxmox.com Subject: [RFC PATCH-SERIES cluster/ha-manager/manager/proxmox 0/7] clamp load imbalance to unit interval Date: Mon, 27 Apr 2026 15:20:24 +0200 Message-ID: <20260427132031.220468-1-d.rusovac@proxmox.com> X-Mailer: git-send-email 2.47.3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1777295941322 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.462 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Message-ID-Hash: QEKUET3A22LSH354YOQM4NXJOMBKSP6P X-Message-ID-Hash: QEKUET3A22LSH354YOQM4NXJOMBKSP6P X-MailFrom: d.rusovac@proxmox.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Proxmox VE development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: # TL;DR clamp load imbalance to value between 0 and 1, and display the value as percentage in HA Status panel of PVE UI. # Details The currently used load imbalance value is given as the so-called coefficient of variation (CV), a value that may exceed 1. As such, the CV value alone lacks meaning. A CV value of 0.0 means no imbalance, but what does a value of, say, 1.7 mean? Relative to the number of nodes in a cluster, it is possible to determine the upper bound of the CV value [0][1]. By dividing the CV value by its upper bound, the load imbalance can be represented as a value that varies between 0 and 1. Expressing the CV as a percentage makes the concept of load imbalance easier to interpret. # Summary of Changes This series: - represents load imbalance as a value between 0 and 1; - adds a maximum value of 1.0 for load scheduler options; and - integrates the load imbalance value within the HA status endpoint; this is to provide feedback on the prevailing load imbalance in the PVE UI. # Refs [0] https://repositorio.ipbeja.pt/server/api/core/bitstreams/8ed9a444-dbe0-402f-9d2f-90c5bf6e418c/content [1] https://stats.stackexchange.com/questions/18621/maximum-value-of-coefficient-of-variation-for-bounded-data-set proxmox: Dominik Rusovac (2): resource-scheduling: clamp imbalance value to unit interval resource-scheduling: re-adjust hardcoded imbalance values proxmox-resource-scheduling/src/scheduler.rs | 33 ++++++++++++------- .../tests/scheduler.rs | 8 ++--- 2 files changed, 25 insertions(+), 16 deletions(-) pve-manager: Dominik Rusovac (1): ui: from/CRSOptions: add maximum for threshold www/manager6/form/CRSOptions.js | 1 + 1 file changed, 1 insertion(+) pve-ha-manager: Dominik Rusovac (3): test: re-adjust logged imbalance values manager: add load imbalance to status api: status: add load imbalance to status src/PVE/API2/HA/Status.pm | 4 +- src/PVE/HA/Manager.pm | 1 + .../log.expect | 4 +- .../log.expect | 38 +++++++++---------- .../log.expect | 4 +- .../log.expect | 29 +++++--------- .../log.expect | 2 +- .../log.expect | 2 +- .../log.expect | 4 +- .../log.expect | 4 +- .../log.expect | 4 +- .../log.expect | 22 +---------- 12 files changed, 47 insertions(+), 71 deletions(-) pve-cluster: Dominik Rusovac (1): datacenter config: add maxima for load scheduler options src/PVE/DataCenterConfig.pm | 2 ++ 1 file changed, 2 insertions(+) Summary over all repositories: 16 files changed, 75 insertions(+), 87 deletions(-) -- Generated by murpp 0.11.0