Re: [PATCH proxmox v3 09/40] resource-scheduling: implement rebalancing migration selection

Michael Köppl
2026-03-31T12:42:33Z

On Mon Mar 30, 2026 at 4:30 PM CEST, Daniel Kral wrote:

[snip]

>
> + /// Adds the resource stats to the node stats as if the resource is running on the node.
> + pub fn add_running_resource(&mut self, resource_stats: &ResourceStats) {
> + self.cpu += resource_stats.cpu;
> + self.mem += resource_stats.mem;
> + }
> +
> + /// Removes the resource stats from the node stats as if the resource is not running on the node.
> + pub fn remove_running_resource(&mut self, resource_stats: &ResourceStats) {
> + self.cpu -= resource_stats.cpu;

>From what I can gather, due to how the stats are collected, it could
occur here that self.cpu < 0. I think it could make sense to do
something like

self.cpu = f64::max(0.0, self.cpu - resource_stats.cpu);

here to avoid it affecting the node imbalance calculation.

> + self.mem = self.mem.saturating_sub(resource_stats.mem);
> + }
> +
> /// Returns the current cpu usage as a percentage.
> pub fn cpu_load(&self) -> f64 {
> self.cpu / self.maxcpu as f64
> @@ -38,6 +50,11 @@ impl NodeStats {
> pub fn mem_load(&self) -> f64 {
> self.mem as f64 / self.maxmem as f64
> }
> +
> + /// Returns a combined node usage as a percentage.
> + pub fn load(&self) -> f64 {
> + (self.cpu_load() + self.mem_load()) / 2.0
> + }
> }

[snip]