From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id D1162C2BD09 for ; Fri, 12 Jul 2024 09:20:01 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4F0836B0096; Fri, 12 Jul 2024 05:20:01 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 49F416B0098; Fri, 12 Jul 2024 05:20:01 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 38D8D6B0099; Fri, 12 Jul 2024 05:20:01 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 1B18C6B0096 for ; Fri, 12 Jul 2024 05:20:01 -0400 (EDT) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id B47A6A0A2B for ; Fri, 12 Jul 2024 09:20:00 +0000 (UTC) X-FDA: 82330553760.23.967D1B8 Received: from fanzine2.igalia.com (fanzine.igalia.com [178.60.130.6]) by imf14.hostedemail.com (Postfix) with ESMTP id ABE0A100004 for ; Fri, 12 Jul 2024 09:19:58 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=igalia.com header.s=20170329 header.b=QVl3ekrY; dmarc=none; spf=pass (imf14.hostedemail.com: domain of tvrtko.ursulin@igalia.com designates 178.60.130.6 as permitted sender) smtp.mailfrom=tvrtko.ursulin@igalia.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1720775971; a=rsa-sha256; cv=none; b=OXFOoLRG5SB2Moq0M3IXW5fYI35Dv0+37MC7mA9dEF/eQp/VJpbl5vq+q7oVSh+BPMTHWJ I0DN5g31pscnV+MU2ZzTD4/Na+TTQHzHaYl9N3qVIe6soqyq0t2oqyb7zDVLviZRqYSIfm vRnu1XYexoChKkaluE3f6PcX+6RFx3A= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=igalia.com header.s=20170329 header.b=QVl3ekrY; dmarc=none; spf=pass (imf14.hostedemail.com: domain of tvrtko.ursulin@igalia.com designates 178.60.130.6 as permitted sender) smtp.mailfrom=tvrtko.ursulin@igalia.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1720775971; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=CV+7c2KCoiFZRjgIBxG8BPV9ZzjPkMf+tPSeCNTaUYY=; b=3hOuT4dKayxpBqwxbWykv+2ixnS2kPvJZmNBlbtiqJ4iZ8NChpHYuNi7CdxglBO/crbRIZ /P7PyWXzIcOlkSRMDuYEzlXYjHiYJNWbW7wCmnk7DKYK+p2eOQ+oJnIn/OMWfNkYV+rkTS MVkIhh2Vm1zEosIQNgmnIkApXIPt5kM= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From: References:Cc:To:Subject:MIME-Version:Date:Message-ID:Sender:Reply-To: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=CV+7c2KCoiFZRjgIBxG8BPV9ZzjPkMf+tPSeCNTaUYY=; b=QVl3ekrYNZ1CuEcNgpGSUVyyy1 z7rXUCBm+Y7yVtn4dEZ2OtNNiZDMaWe8LShWXyksLVQJYcbI0DGvdRZTOwHUSg2s3aBG+LM+Zh/db yqQ9Ze4dSG6yM4A/KijzF4sj/nFzVVLjRMSaXKk5OEAYvkRzlTvjMZ5CG3kXpxImtUEiBvTsAcLPq rjtFbWVWGURSYkJUeQ2QtopkFYfzAE5JAiVhuWC/FiyMiEWA/HlXd7wQnYZyeusMpUlsEz8jYnbow JboWDKr5vGJAPtE+YtHQBXihXc4dvBMJWSovzPHtI7FFTlmIAlZAC4rb7qbthIYMphKJmwvnFgnOw HGY0tVsA==; Received: from [84.69.19.168] (helo=[192.168.0.101]) by fanzine2.igalia.com with esmtpsa (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_128_GCM:128) (Exim) id 1sSCRM-00EDWr-OU; Fri, 12 Jul 2024 11:19:44 +0200 Message-ID: <916e4781-54b5-417a-be22-499739e4d818@igalia.com> Date: Fri, 12 Jul 2024 10:19:43 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v4] mm/numa_balancing: Teach mpol_to_str about the balancing mode To: "Huang, Ying" , Tvrtko Ursulin , Andrew Morton Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, kernel-dev@igalia.com, Mel Gorman , Peter Zijlstra , Ingo Molnar , Rik van Riel , Johannes Weiner , "Matthew Wilcox (Oracle)" , Dave Hansen , Andi Kleen , Michal Hocko , David Rientjes , stable@vger.kernel.org References: <20240708075632.95857-1-tursulin@igalia.com> <87ttgzaxzi.fsf@yhuang6-desk2.ccr.corp.intel.com> Content-Language: en-GB From: Tvrtko Ursulin In-Reply-To: <87ttgzaxzi.fsf@yhuang6-desk2.ccr.corp.intel.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: ABE0A100004 X-Stat-Signature: xoxzdu4nhjd1exjemzb4x7spx6bspx4a X-Rspam-User: X-HE-Tag: 1720775998-449873 X-HE-Meta: U2FsdGVkX18NnJSm+5PWOgef6MVLE3OTxbo9hNfR3AAzFMJ0deWPi8L8oMnW/LhHTPMJCrSFQoVzIBsYOWtdqXfHQdMlBxmrkuJ1IhdfSw3KN0B6jXiUA6ToKemtnSWpsug5LsjEbXFsFpkIEAZ5IpUkoS8SZ8R8W3zzaFkTD4So4erTWOh9n1ngrT5ODUhncFI7786W3cq09GUYReADxRkcbMfdxVJyAgnAS78B+fRRPO3lQKNKiCppwGNGMUkAEOWrqMMBa1x6RN2o0Nk9wtOhDhu0wC3OCKsiT7m58yROig/FgBoo5Zv2TmibjB1EOYzlj5q9BycXyaJVvGtMooVn9Sjy1RgXdytUQ2Yu9mxhBGAZYwp8iCdS+vKqxzAw2bG7Z1aPdb3s029KiLAdwfUR4zfJZVu+f+Ob58um56hQN3wEQGqEYehzrAdRm/5QBWyf0H7DyGmMjtQyVjxG52BPgeG1e/5CcOFRIaJym92UDXqvz+xjldJKVwXfOYnCqQWTEOTtktewW2Hb/H/pp4nQHGNOt8LtYL1ezhqe3equDQDifsbbDjvxOddYeSPf/8+TpWLQLi1xnrhFSusnPgP2aEUNCSLyEqgWXk6u9OPMsb+p5i7I0kI5RFTlHsp+WHxp956GZaw72ZhFpRb0CabO09lEeMbhQgS3roAW6Ultmzn9Yn1c5fgloZPWVm+91gYfyGDhaClcrH4IxJQ0IbXQJaDsg/6LwUbQruuvCcYhwTM0YXCQBvq5d4DhXHbg38stKVOD/BTa5u3z42cd2qivWbQgXQD6XKNn3d+W4DgThN7CtJJtLDqb7ki6OKuXr6D0xsOy2+o4pYRYXUIqXMeFc/K61CA10fRjl1e3WoMHgu23ljy0Vqrp5iXvJv9MEF55rMkxolqhlKfVfdhGoc/Do02RwonOME31ErhsV4B8Klgwg3HNubEHJLgg1Qupqg3xXWTbS/XEfJWwiCN MhMAFbnR osPRA3GHKMTZANcx/ItGVKfAl8k/u/MIhewpb3C74JHqAd3DAYNFgrZ1ew0fnunJSRXgy9BMTdbAkworpl32IK9qhdfyI2Tu5S2lgcpmTvYf+7sZ/KBw62TpDnhdJP6Ag5Dv3HGj4KIAA1Bw6qF//uw8QImkQnwlW6v28O6Ai/6TiuAXHBQNDmRFZx8+hpkuS1Ujj3JIonlV9l5izytkfBazMNkoUEtk65oIrBHD9+2xRCEn2ezNYwNbvcYgGWjjWwL3Xk8l4N974mFVkiEMyEwy4EWoqgpjZS0JQ7vDySdfJALSdobmDAEjcANeZvUzL9/I+X0p82CPcGpRSPXudzNLv/gE/qd0hxqzXWnLjnGpGnazs3CsTxZZaovaCisN3Ew42bOVtyRr1NhGsgFhhMFhhzAnAvo7gKBmYZA2h3OvYfkjKNz8SdqPBUEsncoaWBcf7w/H8atTdFH6/p1LVkO8VmeWy7MWxxweUZNhSLIiGuCT37mO+tSWxJ/GeGVbQXmZbiutcXa9FeuNWGaKjqDqBQyYU7T2qPsmNPG81WVAA0kaMbdf+bOAlRSrp8C0RRl4Jb3/AcGVXgEl1d4hXCqqEIJGC2rU9vvnswzWoaUN/vj0lqCTBZKkPJ9dxMcyRkKyT8Z79QDMWM8jX6r38MIGG8hOgvekHpSxQXhSqKRlg6qD18TNNOxyKEk2mN4y4+r4FBizFfYnKt+n8TbNtGWjhVw== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On 09/07/2024 07:19, Huang, Ying wrote: > Tvrtko Ursulin writes: > >> From: Tvrtko Ursulin >> >> Since balancing mode was added in >> bda420b98505 ("numa balancing: migrate on fault among multiple bound nodes"), >> it was possible to set this mode but it wouldn't be shown in >> /proc//numa_maps since there was no support for it in the >> mpol_to_str() helper. >> >> Furthermore, because the balancing mode sets the MPOL_F_MORON flag, it >> would be displayed as 'default' due a workaround introduced a few years >> earlier in >> 8790c71a18e5 ("mm/mempolicy.c: fix mempolicy printing in numa_maps"). >> >> To tidy this up we implement two changes: >> >> Replace the MPOL_F_MORON check by pointer comparison against the >> preferred_node_policy array. By doing this we generalise the current >> special casing and replace the incorrect 'default' with the correct >> 'bind' for the mode. >> >> Secondly, we add a string representation and corresponding handling for >> the MPOL_F_NUMA_BALANCING flag. >> >> With the two changes together we start showing the balancing flag when it >> is set and therefore complete the fix. >> >> Representation format chosen is to separate multiple flags with vertical >> bars, following what existed long time ago in kernel 2.6.25. But as >> between then and now there wasn't a way to display multiple flags, this >> patch does not change the format in practice. >> >> Some /proc//numa_maps output examples: >> >> 555559580000 bind=balancing:0-1,3 file=... >> 555585800000 bind=balancing|static:0,2 file=... >> 555635240000 prefer=relative:0 file= >> >> v2: >> * Fully fix by introducing MPOL_F_KERNEL. >> >> v3: >> * Abandoned the MPOL_F_KERNEL approach in favour of pointer comparisons. >> * Removed lookup generalisation for easier backporting. >> * Replaced commas as separator with vertical bars. >> * Added a few more words about the string format in the commit message. >> >> v4: >> * Use is_power_of_2. >> * Use ARRAY_SIZE and update recommended buffer size for two flags. >> >> Signed-off-by: Tvrtko Ursulin >> Fixes: bda420b98505 ("numa balancing: migrate on fault among multiple bound nodes") >> References: 8790c71a18e5 ("mm/mempolicy.c: fix mempolicy printing in numa_maps") >> Cc: Huang Ying >> Cc: Mel Gorman >> Cc: Peter Zijlstra >> Cc: Ingo Molnar >> Cc: Rik van Riel >> Cc: Johannes Weiner >> Cc: "Matthew Wilcox (Oracle)" >> Cc: Dave Hansen >> Cc: Andi Kleen >> Cc: Michal Hocko >> Cc: David Rientjes >> Cc: # v5.12+ > > LGTM, Thanks! > > Reviewed-by: "Huang, Ying" Thank you! Andrew, this appears safe to pick up now as a replacement for the identically named patch you previously picked up but then had to back out from the queue. Thanks! Tvrtko >> --- >> mm/mempolicy.c | 18 ++++++++++++++---- >> 1 file changed, 14 insertions(+), 4 deletions(-) >> >> diff --git a/mm/mempolicy.c b/mm/mempolicy.c >> index aec756ae5637..a1bf9aa15c33 100644 >> --- a/mm/mempolicy.c >> +++ b/mm/mempolicy.c >> @@ -3293,8 +3293,9 @@ int mpol_parse_str(char *str, struct mempolicy **mpol) >> * @pol: pointer to mempolicy to be formatted >> * >> * Convert @pol into a string. If @buffer is too short, truncate the string. >> - * Recommend a @maxlen of at least 32 for the longest mode, "interleave", the >> - * longest flag, "relative", and to display at least a few node ids. >> + * Recommend a @maxlen of at least 51 for the longest mode, "weighted >> + * interleave", plus the longest flag flags, "relative|balancing", and to >> + * display at least a few node ids. >> */ >> void mpol_to_str(char *buffer, int maxlen, struct mempolicy *pol) >> { >> @@ -3303,7 +3304,10 @@ void mpol_to_str(char *buffer, int maxlen, struct mempolicy *pol) >> unsigned short mode = MPOL_DEFAULT; >> unsigned short flags = 0; >> >> - if (pol && pol != &default_policy && !(pol->flags & MPOL_F_MORON)) { >> + if (pol && >> + pol != &default_policy && >> + !(pol >= &preferred_node_policy[0] && >> + pol <= &preferred_node_policy[ARRAY_SIZE(preferred_node_policy) - 1])) { >> mode = pol->mode; >> flags = pol->flags; >> } >> @@ -3331,12 +3335,18 @@ void mpol_to_str(char *buffer, int maxlen, struct mempolicy *pol) >> p += snprintf(p, buffer + maxlen - p, "="); >> >> /* >> - * Currently, the only defined flags are mutually exclusive >> + * Static and relative are mutually exclusive. >> */ >> if (flags & MPOL_F_STATIC_NODES) >> p += snprintf(p, buffer + maxlen - p, "static"); >> else if (flags & MPOL_F_RELATIVE_NODES) >> p += snprintf(p, buffer + maxlen - p, "relative"); >> + >> + if (flags & MPOL_F_NUMA_BALANCING) { >> + if (!is_power_of_2(flags & MPOL_MODE_FLAGS)) >> + p += snprintf(p, buffer + maxlen - p, "|"); >> + p += snprintf(p, buffer + maxlen - p, "balancing"); >> + } >> } >> >> if (!nodes_empty(nodes))