From: "Daniel Kral" <d.kral@proxmox.com>
To: "Dominik Rusovac" <d.rusovac@proxmox.com>, <pve-devel@lists.proxmox.com>
Subject: Re: [PATCH proxmox-perl-rs 06/15] fix #7993: pve-rs: resource-scheduling: add weights to pve bindings
Date: Thu, 22 Oct 2026 11:26:52 +0200 [thread overview]
Message-ID: <DMB9D3X3NGO9.5RNJU3731048@proxmox.com> (raw)
In-Reply-To: <20261021085932.1196302-7-d.rusovac@proxmox.com>
The same applies here as in the changes for proxmox_resource_scheduling,
this would need a versioned break, e.g., if users have a newer libpve-rs
but an older ha-manager, the HA Manager would fail calling these as the
function signature was changed.
Though here, we could probably add options structs at the end of the
function parameter list instead of having extra weighted_ versions,
e.g.:
#[derive(Deserialize, Debug)]
struct BruteforceOptions {
#[serde(default = "1")]
cpu_weight: usize,
#[serde(default = "1")]
mem_weight: usize,
}
#[export]
pub fn score_best_balancing_migration_candidates(
#[try_from_ref] this: &Scheduler,
candidates: Vec<CompactMigrationCandidate>,
limit: usize,
options: BruteforceOptions,
) -> Result<Vec<ScoredMigration>, Error> {}
AFAIK this shouldn't cause old pve-ha-manager versions failing to call
this as there's a default value for each parameter. Could also be a
struct with all fields being some Option<T> and then doing the default
thing in the function body itself.
Haven't tested this yet though.
On Wed Oct 21, 2026 at 10:59 AM CEST, Dominik Rusovac wrote:
> Add weights for weighted load balancing.
>
> Adjust existing resource scheduling test to explicitly use same weights
> as before.
>
> Signed-off-by: Dominik Rusovac <d.rusovac@proxmox.com>
> ---
> .../resource_scheduling/pve_dynamic.rs | 27 +++++++++++++++----
> .../resource_scheduling/pve_static.rs | 25 +++++++++++++----
> pve-rs/test/resource_scheduling.pl | 3 ++-
> 3 files changed, 44 insertions(+), 11 deletions(-)
>
> diff --git a/pve-rs/src/bindings/resource_scheduling/pve_dynamic.rs b/pve-rs/src/bindings/resource_scheduling/pve_dynamic.rs
> index 8e066e0..d6b6f9b 100644
> --- a/pve-rs/src/bindings/resource_scheduling/pve_dynamic.rs
> +++ b/pve-rs/src/bindings/resource_scheduling/pve_dynamic.rs
> @@ -166,10 +166,16 @@ pub mod pve_rs_resource_scheduling_dynamic {
> ///
> /// See [`proxmox_resource_scheduling::scheduler::Scheduler::node_imbalance`].
> #[export]
> - pub fn calculate_node_imbalance(#[try_from_ref] this: &Scheduler) -> f64 {
> + pub fn calculate_node_imbalance(
> + #[try_from_ref] this: &Scheduler,
> + cpu_weight: usize,
> + mem_weight: usize,
> + ) -> f64 {
> let usage = this.inner.lock().unwrap();
>
> - usage.to_scheduler::<IdentityAggregator>().node_imbalance()
> + usage
> + .to_scheduler::<IdentityAggregator>()
> + .node_imbalance(cpu_weight as f64, mem_weight as f64)
> }
>
> /// Method: Scores the given migration `candidates` by the best node imbalance improvement with
> @@ -181,6 +187,8 @@ pub mod pve_rs_resource_scheduling_dynamic {
> #[try_from_ref] this: &Scheduler,
> candidates: Vec<CompactMigrationCandidate>,
> limit: usize,
> + cpu_weight: usize,
> + mem_weight: usize,
> ) -> Result<Vec<ScoredMigration>, Error> {
> let usage = this.inner.lock().unwrap();
>
[ -->8- snip -8<-- ]
next prev parent reply other threads:[~2026-10-22 9:26 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-21 8:59 [RFC PATCH-SERIES cluster/ha-manager/manager/proxmox{,-perl-rs} 00/15] fix #7993: implement weighted auto rebalancing Dominik Rusovac
2026-10-21 8:59 ` [PATCH proxmox 01/15] resource-scheduling: scheduler: fix typos Dominik Rusovac
2026-10-21 8:59 ` [PATCH proxmox 02/15] resource-scheduling: scheduler: abstract post-migration stats logic Dominik Rusovac
2026-10-21 12:49 ` Daniel Kral
2026-10-21 8:59 ` [PATCH proxmox 03/15] fix #7993: resource-scheduling: lift to weighted load balancing Dominik Rusovac
2026-10-22 9:15 ` Daniel Kral
2026-10-22 11:34 ` Daniel Kral
2026-10-21 8:59 ` [PATCH proxmox 04/15] workspace,resource-scheduling: add proptest crate Dominik Rusovac
2026-10-21 8:59 ` [PATCH proxmox 05/15] resource-scheduling: scheduler: proptest weights Dominik Rusovac
2026-10-21 8:59 ` [PATCH proxmox-perl-rs 06/15] fix #7993: pve-rs: resource-scheduling: add weights to pve bindings Dominik Rusovac
2026-10-22 9:26 ` Daniel Kral [this message]
2026-10-21 8:59 ` [PATCH pve-manager 07/15] fix #7993: ui: form: crs options: add weights Dominik Rusovac
2026-10-21 8:59 ` [PATCH pve-manager 08/15] ui: form: crs options: make options advanced Dominik Rusovac
2026-10-21 8:59 ` [PATCH pve-ha-manager 09/15] manager: remove obsolete argument Dominik Rusovac
2026-10-22 9:29 ` Daniel Kral
2026-10-21 8:59 ` [PATCH pve-ha-manager 10/15] fix #7993: manager,usage: implement weighted auto rebalancing Dominik Rusovac
2026-10-22 9:58 ` Daniel Kral
2026-10-21 8:59 ` [PATCH pve-ha-manager 11/15] sim: hardware: enable datacenter config changes at runtime Dominik Rusovac
2026-10-21 8:59 ` [PATCH pve-ha-manager 12/15] manager: log changes to crs settings Dominik Rusovac
2026-10-22 12:05 ` Daniel Kral
2026-10-21 8:59 ` [PATCH pve-ha-manager 13/15] test: add auto rebalance with weights test cases Dominik Rusovac
2026-10-22 12:20 ` Daniel Kral
2026-10-21 8:59 ` [PATCH pve-ha-manager 14/15] manager: rename update_crs_scheduler_mode Dominik Rusovac
2026-10-21 8:59 ` [PATCH pve-cluster 15/15] fix #7993: datacenter config: add ha-auto-rebalance-{cpu,mem}-weight Dominik Rusovac
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=DMB9D3X3NGO9.5RNJU3731048@proxmox.com \
--to=d.kral@proxmox.com \
--cc=d.rusovac@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox