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 5402A1FF15E for ; Mon, 24 Nov 2025 10:11:22 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 6A5991B9B5; Mon, 24 Nov 2025 10:11:31 +0100 (CET) Mime-Version: 1.0 Date: Mon, 24 Nov 2025 10:11:27 +0100 Message-Id: From: "Daniel Kral" To: "Thomas Lamprecht" , "Proxmox VE development discussion" , "Daniel Kral" X-Mailer: aerc 0.21.0-10-gf12c391cb5b4 References: <20251103151823.387984-1-d.kral@proxmox.com> <20251103151823.387984-3-d.kral@proxmox.com> <1bf34a63-00ed-4a09-9c10-dfc166b9c256@proxmox.com> In-Reply-To: <1bf34a63-00ed-4a09-9c10-dfc166b9c256@proxmox.com> X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1763975452669 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.015 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 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_RPBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_SAFE_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [resourceaffinity.pm] Subject: Re: [pve-devel] [PATCH ha-manager 2/2] fix #6801: only consider target node during positive resource affinity migration X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox VE development discussion Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" On Thu Nov 20, 2025 at 6:53 PM CET, Thomas Lamprecht wrote: > Am 03.11.25 um 16:18 schrieb Daniel Kral: >> When a HA resource with positive affinity to other HA resources is moved >> to another node, the other HA resources in positive affinity are >> automatically moved to the same target node as well. >> >> If the HA resources have significant differences in migration time >> (more than the average HA Manager round of ~10 seconds) the already >> migrated HA resources in 'started' state will check for better node >> placements while the other(s) are still migrating. > > >> This search includes whether the positive resource affinity rules are >> held and will query where the other HA resources are. When HA resources >> are still migrating this will report that these are both on the source >> and target node, which is correct from a accounting standpoint, but will >> add equal weights on both nodes and might result in the already started >> HA resource to be migrated to the source node. > > So, just to confirm, this does not change the accounting part at all, or? > > Patch looks OK to me in general though, but would like to recheck with > a slightly fresher mind tomorrow, maybe we could have a quick chat too > for clearing this up. Correct, the accounting part does not change at all, which is separate from the resource affinity logic here. Essentially, this part goes through a HA resource's positive affinitive HA resources (this is a bit of a mouthful) and counts on which nodes these put load on, so we can determine the common node these HA resources should converge to. Before this change, a "still" HA resource counted its current node, while a moving HA resource counted its source and its target node. This change limits the moving HA resource to only count its target node. This is only possible now as before we couldn't make a distinction what was the source and target node in use (this part was introduced in the granular accounting series). Hope this clears it up a bit, I haven't found a better word for "positive affinitive HA resources" yet.. If there's something I can add here to make it clearer for others too, I'd be happy to. > >> >> Therefore, only consider the target node for positive affinity during >> migration or relocation to prevent this from happening. >> >> As a side-effect, two test cases for positive resource affinity rules >> will result in a slightly quicker convergence to a steady state as these >> now will get the information about the common target node sooner. >> >> Signed-off-by: Daniel Kral >> --- >> src/PVE/HA/Rules/ResourceAffinity.pm | 6 ++-- >> .../log.expect | 25 +++-------------- >> .../log.expect | 28 +++++++++---------- >> .../README | 3 -- >> .../log.expect | 28 +++---------------- >> 5 files changed, 26 insertions(+), 64 deletions(-) >> >> diff --git a/src/PVE/HA/Rules/ResourceAffinity.pm b/src/PVE/HA/Rules/ResourceAffinity.pm >> index 4f5ffca5..9303bafd 100644 >> --- a/src/PVE/HA/Rules/ResourceAffinity.pm >> +++ b/src/PVE/HA/Rules/ResourceAffinity.pm >> @@ -517,8 +517,10 @@ sub get_resource_affinity { >> for my $csid (keys $positive->%*) { >> my ($current_node, $target_node) = $get_used_service_nodes->($csid); >> >> - $together->{$current_node}++ if defined($current_node); >> - $together->{$target_node}++ if defined($target_node); >> + # consider only the target node for positive affinity to prevent already >> + # moved HA resources to move back to the source node (see #6801) >> + my $node = $target_node // $current_node; >> + $together->{$node}++ if defined($node); >> } >> >> for my $csid (keys $negative->%*) { _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel