On 07/05/22 14:25, Andrew Morton wrote: > On Tue, 5 Jul 2022 17:21:19 +0800 Gang Li <ligang.bdlg@xxxxxxxxxxxxx> wrote: > > > show_free_areas() allows to filter out node specific data which is > > irrelevant to the allocation request. But hugetlb_show_meminfo() still > > shows hugetlb on all nodes, which is redundant and unnecessary. > > > > Use show_mem_node_skip() to skip irrelevant nodes. And replace > > hugetlb_show_meminfo() with hugetlb_show_meminfo_node(nid). > > It would be helpful to include before-and-after sample output text in > the changelog to help others assess the proposed change. > > > --- a/mm/page_alloc.c > > +++ b/mm/page_alloc.c > > @@ -6202,7 +6202,11 @@ void show_free_areas(unsigned int filter, nodemask_t *nodemask) > > printk(KERN_CONT "= %lukB\n", K(total)); > > } > > > > - hugetlb_show_meminfo(); > > + for_each_online_node(nid) { > > + if (show_mem_node_skip(filter, nid, nodemask)) > > + continue; > > + hugetlb_show_meminfo_node(nid); > > + } > > > > Does this mean that potentially useful info about presently-offline > nodes will no longer be available? > I do not believe that is possible. IIUC, all memory blocks of a node must be offline for the node to be marked offline. To offline a memory block, all hugetlb pages must be removed from the memory block. So, an offline node should have no hugetlb pages. And, if there are no hugetlb pages it makes no sense to call hugetlb_show_meminfo_node. Also, previous code in show_free_areas skips offline nodes. So, this new code would be consistent with existing code. -- Mike Kravetz