public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
From: Fiona Ebner <f.ebner@proxmox.com>
To: Proxmox VE development discussion <pve-devel@lists.proxmox.com>,
	Daniel Kral <d.kral@proxmox.com>
Subject: Re: [pve-devel] [PATCH ha-manager 5/9] rules: resource affinity: decouple get_resource_affinity helper from Usage class
Date: Fri, 17 Oct 2025 13:14:51 +0200	[thread overview]
Message-ID: <2416d9fd-c47f-48c9-ac0b-c7f8e4d754ab@proxmox.com> (raw)
In-Reply-To: <20250930142021.366529-9-d.kral@proxmox.com>

Am 30.09.25 um 4:21 PM schrieb Daniel Kral:
> The resource affinity rules need information about the other HA
> resource's used nodes to be enacted correctly, which has been proxied
> through $online_node_usage before.
> 
> The get_used_service_nodes(...) reflects the same logic to retrieve the
> nodes, where a HA resource $sid currently puts load on, as in
> recompute_online_node_usage(...).
> 
> Signed-off-by: Daniel Kral <d.kral@proxmox.com>

Reviewed-by: Fiona Ebner <f.ebner@proxmox.com>

with some comments:

> ---
> I wanted to put this information in PVE::HA::Usage directly, but figured
> it would make Usage much more dependent on $ss / $sd.. We can still do
> that later on or move the helper elsewhere, e.g. making ServiceStatus
> its own class?

I think having the get_used_service_nodes() helper in PVE::HA::Usage is
better than in PVE::HA::Tools, because to me, "tools" sounds sounds like
things that should not be concerned with concrete HA state logic. You
could adapt the signature to take e.g.
($state, $online_nodes, $node, $target)
rather than $sd to avoid any need to know about its internal structure.

> diff --git a/src/PVE/HA/Manager.pm b/src/PVE/HA/Manager.pm
> index 468e41eb..0226e427 100644
> --- a/src/PVE/HA/Manager.pm
> +++ b/src/PVE/HA/Manager.pm
> @@ -121,12 +121,12 @@ sub flush_master_status {
>  
>  =head3 select_service_node(...)
>  
> -=head3 select_service_node($rules, $online_node_usage, $sid, $service_conf, $sd, $node_preference)
> +=head3 select_service_node($rules, $online_node_usage, $sid, $service_conf, $ss, $node_preference)
>  

Pre-existing, but is this duplicate heading intentional?

> diff --git a/src/PVE/HA/Tools.pm b/src/PVE/HA/Tools.pm
> index 71eb5d0b..7f718e25 100644
> --- a/src/PVE/HA/Tools.pm
> +++ b/src/PVE/HA/Tools.pm
> @@ -188,6 +188,35 @@ sub count_fenced_services {
>      return $count;
>  }
>  
> +sub get_used_service_nodes {
> +    my ($sd, $online_nodes) = @_;
> +
> +    my $result = {};
> +
> +    my ($state, $node, $target) = $sd->@{qw(state node target)};
> +
> +    return $result if $state eq 'stopped' || $state eq 'request_start';
> +
> +    if (
> +        $state eq 'started'
> +        || $state eq 'request_stop'
> +        || $state eq 'fence'
> +        || $state eq 'freeze'
> +        || $state eq 'error'
> +        || $state eq 'recovery'
> +        || $state eq 'migrate'
> +        || $state eq 'relocate'
> +    ) {
> +        $result->{current} = $node if $online_nodes->{$node};
> +    }
> +
> +    if ($state eq 'migrate' || $state eq 'relocate' || $state eq 'request_start_balance') {
> +        $result->{target} = $target if defined($target) && $online_nodes->{$target};
> +    }
> +
> +    return $result;

Returning ($current, $target) seems to better match what callers need.



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


  reply	other threads:[~2025-10-17 11:14 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-09-30 14:19 [pve-devel] [RFC ha-manager/perl-rs/proxmox/qemu-server 00/12] Granular online_node_usage accounting Daniel Kral
2025-09-30 14:19 ` [pve-devel] [PATCH qemu-server 1/1] config: only fetch necessary default values in get_derived_property helper Daniel Kral
2025-10-15 14:31   ` Fiona Ebner
2025-10-16  9:07     ` Daniel Kral
2025-09-30 14:19 ` [pve-devel] [PATCH proxmox 1/1] resource-scheduling: change score_nodes_to_start_service signature Daniel Kral
2025-09-30 14:19 ` [pve-devel] [PATCH perl-rs 1/1] pve-rs: resource_scheduling: allow granular usage changes Daniel Kral
2025-10-16 10:32   ` Fiona Ebner
2025-10-16 15:34     ` Daniel Kral
2025-10-17 10:55       ` Fiona Ebner
2025-09-30 14:19 ` [pve-devel] [PATCH ha-manager 1/9] implement static service stats cache Daniel Kral
2025-10-16 11:12   ` Fiona Ebner
2025-10-16 15:15     ` Daniel Kral
2025-10-17 10:02       ` Fiona Ebner
2025-10-17 10:08         ` Fiona Ebner
2025-10-17 16:18           ` Daniel Kral
2025-09-30 14:19 ` [pve-devel] [PATCH ha-manager 2/9] manager: remove redundant recompute_online_node_usage from next_state_recovery Daniel Kral
2025-10-16 11:25   ` Fiona Ebner
2025-09-30 14:19 ` [pve-devel] [PATCH ha-manager 3/9] manager: remove redundant add_service_usage_to_node " Daniel Kral
2025-10-16 11:33   ` Fiona Ebner
2025-09-30 14:19 ` [pve-devel] [PATCH ha-manager 4/9] manager: remove redundant add_service_usage_to_node from next_state_started Daniel Kral
2025-10-16 11:39   ` Fiona Ebner
2025-09-30 14:19 ` [pve-devel] [PATCH ha-manager 5/9] rules: resource affinity: decouple get_resource_affinity helper from Usage class Daniel Kral
2025-10-17 11:14   ` Fiona Ebner [this message]
2025-10-17 15:46     ` Daniel Kral
2025-10-20 15:18       ` Fiona Ebner
2025-09-30 14:19 ` [pve-devel] [PATCH ha-manager 6/9] manager: make recompute_online_node_usage use get_service_nodes helper Daniel Kral
2025-10-17 11:25   ` Fiona Ebner
2025-09-30 14:19 ` [pve-devel] [PATCH ha-manager 7/9] usage: allow granular changes to Usage implementations Daniel Kral
2025-10-17 11:57   ` Fiona Ebner
2025-09-30 14:19 ` [pve-devel] [PATCH ha-manager 8/9] manager: make online node usage computation granular Daniel Kral
2025-10-17 12:32   ` Fiona Ebner
2025-10-17 16:07     ` Daniel Kral
2025-09-30 14:19 ` [pve-devel] [PATCH ha-manager 9/9] manager: make service node usage computation more granular Daniel Kral
2025-10-17 12:42   ` Fiona Ebner
2025-10-17 15:59     ` Daniel Kral
2025-10-20 16:50 ` [pve-devel] superseded: [RFC ha-manager/perl-rs/proxmox/qemu-server 00/12] Granular online_node_usage accounting Daniel Kral

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=2416d9fd-c47f-48c9-ac0b-c7f8e4d754ab@proxmox.com \
    --to=f.ebner@proxmox.com \
    --cc=d.kral@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
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal