All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Li,Rongqing" <lirongqing@baidu.com>
To: Yury Norov <ynorov@nvidia.com>
Cc: Yury Norov <yury.norov@gmail.com>,
	Rasmus Villemoes <linux@rasmusvillemoes.dk>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	"linux-mm@kvack.org" <linux-mm@kvack.org>
Subject: 答复: [????] Re: [PATCH v2] nodemask: reduce bitmap width to nr_node_ids in __nodemask_pr_numnodes()
Date: Mon, 27 Jul 2026 11:56:35 +0000	[thread overview]
Message-ID: <91008c9df2984342af5dc887ae13939f@baidu.com> (raw)
In-Reply-To: <alY1Rm7n8DmEzqAd@yury>



> -----邮件原件-----
> 发件人: Yury Norov <ynorov@nvidia.com>
> 发送时间: 2026年7月14日 21:11
> 收件人: Li,Rongqing <lirongqing@baidu.com>
> 抄送: Yury Norov <yury.norov@gmail.com>; Rasmus Villemoes
> <linux@rasmusvillemoes.dk>; linux-kernel@vger.kernel.org; Andrew Morton
> <akpm@linux-foundation.org>; linux-mm@kvack.org
> 主题: [????] Re: [PATCH v2] nodemask: reduce bitmap width to nr_node_ids in
> __nodemask_pr_numnodes()
> 
> On Mon, Jul 13, 2026 at 03:51:04PM +0800, lirongqing wrote:
> > From: Li RongQing <lirongqing@baidu.com>
> >
> > __nodemask_pr_numnodes() currently returns MAX_NUMNODES as the field
> > width for '%*pb[l]' nodemask printing. MAX_NUMNODES is a compile-time
> > upper bound and can be much larger than the runtime node id range,
> > resulting in excessive zero padding in bitmap-form output.
> >
> > For example, /proc/<pid>/status prints Mems_allowed with '%*pb' using
> > the nodemask_pr_args() helper. On systems built with MAX_NUMNODES=1024
> > but booted with a much smaller possible-node range, this produces:
> >
> >   Mems_allowed: 00000000,00000000,...,00000003
> >
> > Switch to nr_node_ids, matching the behavior of cpumask_pr_args()
> > which uses nr_cpu_ids. This reduces the output width from MAX_NUMNODES
> > bits to the runtime node id range:
> >
> >   Mems_allowed: 3
> >
> > Visible impact on in-tree users:
> > - Bitmap format ('%*pb') users:
> >   * /proc/<pid>/status Mems_allowed (format changes as shown above)
> 
> OK, let me take it for testing. If no complains from users, it's a nice cleanup.
> 

Hi Yury Norov:

Gentle ping on this change. It has been under testing for about two weeks since your last comment. Have there been any user reports or other concerns?

Thanks.

[Li,Rongqing] 


> > - List format ('%*pbl') users, output is unchanged, as list formatter
> >   only prints set bit ranges:
> >   * /sys/devices/system/node/{possible,online,has_normal_memory, ...}
> >   * NVMe multipath sysfs numa_nodes
> >   * memory tier sysfs nodelist
> >   * cpuset cgroup mems and effective_mems files
> >   * /proc/<pid>/status Mems_allowed_list
> >   * mempolicy strings in /proc/<pid>/numa_maps
> >   * SLUB debugfs output
> >   * Kernel log messages printing nodemasks
> >
> > Move nr_node_ids and nr_online_nodes declarations earlier in the file
> > to allow __nodemask_pr_numnodes() to use nr_node_ids.
> >
> > Cc: Yury Norov <yury.norov@gmail.com>
> > Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk>
> > Cc: Andrew Morton <akpm@linux-foundation.org>
> > Cc: linux-mm@kvack.org
> > Signed-off-by: Li RongQing <lirongqing@baidu.com>
> > ---
> > Changes from v1:
> > - List the unaffected '%*pbl' users explicitly, noting that their
> >   visible output is unchanged since the list formatter only prints
> >   set bit ranges regardless of field width.
> > - Move the nr_node_ids and nr_online_nodes declarations earlier
> >
> > include/linux/nodemask.h | 15 +++++++++------
> >  1 file changed, 9 insertions(+), 6 deletions(-)
> >
> > diff --git a/include/linux/nodemask.h b/include/linux/nodemask.h index
> > b842aa5..607373b 100644
> > --- a/include/linux/nodemask.h
> > +++ b/include/linux/nodemask.h
> > @@ -95,6 +95,14 @@
> >
> >  extern nodemask_t _unused_nodemask_arg_;
> >
> > +#if MAX_NUMNODES > 1
> > +extern unsigned int nr_node_ids;
> > +extern unsigned int nr_online_nodes;
> > +#else
> > +#define nr_node_ids		1U
> > +#define nr_online_nodes		1U
> > +#endif
> > +
> >  /**
> >   * nodemask_pr_args - printf args to output a nodemask
> >   * @maskp: nodemask to be printed
> > @@ -105,7 +113,7 @@ extern nodemask_t _unused_nodemask_arg_;
> >  				__nodemask_pr_bits(maskp)
> >  static __always_inline unsigned int __nodemask_pr_numnodes(const
> > nodemask_t *m)  {
> > -	return m ? MAX_NUMNODES : 0;
> > +	return m ? nr_node_ids : 0;
> >  }
> >  static __always_inline const unsigned long *__nodemask_pr_bits(const
> > nodemask_t *m)  { @@ -438,9 +446,6 @@ static __always_inline unsigned
> > int next_memory_node(int nid)
> >  	return next_node(nid, node_states[N_MEMORY]);  }
> >
> > -extern unsigned int nr_node_ids;
> > -extern unsigned int nr_online_nodes;
> > -
> >  static __always_inline void node_set_online(int nid)  {
> >  	node_set_state(nid, N_ONLINE);
> > @@ -480,8 +485,6 @@ static __always_inline int num_node_state(enum
> node_states state)
> >  #define first_memory_node	0
> >  #define next_online_node(nid)	(MAX_NUMNODES)
> >  #define next_memory_node(nid)	(MAX_NUMNODES)
> > -#define nr_node_ids		1U
> > -#define nr_online_nodes		1U
> >
> >  #define node_set_online(node)	   node_set_state((node), N_ONLINE)
> >  #define node_set_offline(node)	   node_clear_state((node), N_ONLINE)
> > --
> > 2.9.4

  reply	other threads:[~2026-07-27 11:56 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-13  7:51 [PATCH v2] nodemask: reduce bitmap width to nr_node_ids in __nodemask_pr_numnodes() lirongqing
2026-07-14 13:10 ` Yury Norov
2026-07-27 11:56   ` Li,Rongqing [this message]
2026-07-28  1:30     ` 答复: [????] " Yury Norov

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=91008c9df2984342af5dc887ae13939f@baidu.com \
    --to=lirongqing@baidu.com \
    --cc=akpm@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux@rasmusvillemoes.dk \
    --cc=ynorov@nvidia.com \
    --cc=yury.norov@gmail.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.