From: Greg KH <gregkh@linuxfoundation.org>
To: Qi Zheng <zhengqi.arch@bytedance.com>
Cc: akpm@linux-foundation.org, rafael@kernel.org, linux-mm@kvack.org,
linux-kernel@vger.kernel.org, songmuchun@bytedance.com
Subject: Re: [PATCH 1/2] mm: add MemAvailable to per-node meminfo
Date: Thu, 16 Dec 2021 16:37:06 +0100 [thread overview]
Message-ID: <YbtdIpJal3keEWf8@kroah.com> (raw)
In-Reply-To: <34cc2f26-9fba-f7c6-5dae-d21498ccbe2d@bytedance.com>
On Thu, Dec 16, 2021 at 11:31:36PM +0800, Qi Zheng wrote:
>
>
> On 12/16/21 9:16 PM, Greg KH wrote:
> > On Thu, Dec 16, 2021 at 08:46:54PM +0800, Qi Zheng wrote:
> > > In /proc/meminfo, we can show the sum of all the available memory
> > > as "MemAvailable". Add the same counter also to per-node meminfo
> > > under /sys.
> > >
> > > With this counter, some processes that bind nodes can make some
> > > decisions by reading the "MemAvailable" of the corresponding nodes
> > > directly.
> > >
> > > Signed-off-by: Qi Zheng <zhengqi.arch@bytedance.com>
> > > ---
> > > drivers/base/node.c | 4 ++++
> > > include/linux/mm.h | 1 +
> > > include/linux/mmzone.h | 5 +++++
> > > mm/page_alloc.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
> > > 4 files changed, 59 insertions(+)
> > >
> > > diff --git a/drivers/base/node.c b/drivers/base/node.c
> > > index 87acc47e8951..deb2a7965ae4 100644
> > > --- a/drivers/base/node.c
> > > +++ b/drivers/base/node.c
> > > @@ -375,8 +375,10 @@ static ssize_t node_read_meminfo(struct device *dev,
> > > struct sysinfo i;
> > > unsigned long sreclaimable, sunreclaimable;
> > > unsigned long swapcached = 0;
> > > + long available;
> > > si_meminfo_node(&i, nid);
> > > + available = si_mem_available_node(&i, nid);
> > > sreclaimable = node_page_state_pages(pgdat, NR_SLAB_RECLAIMABLE_B);
> > > sunreclaimable = node_page_state_pages(pgdat, NR_SLAB_UNRECLAIMABLE_B);
> > > #ifdef CONFIG_SWAP
> > > @@ -386,6 +388,7 @@ static ssize_t node_read_meminfo(struct device *dev,
> > > "Node %d MemTotal: %8lu kB\n"
> > > "Node %d MemFree: %8lu kB\n"
> > > "Node %d MemUsed: %8lu kB\n"
> > > + "Node %d MemAvailable: %8lu kB\n"
> >
> > You just changed a user/kernel api without documenting it anywhere, or
> > ensuring that you did not just break anything.
>
> Hi greg k-h,
>
> The MemAvailable has long existed in the /proc/meminfo, it's meaning
> has been described in the Documentation/filesystems/proc.rst. Since
> the semantics of per-node MemAvailable has not changed, so I did not
> add a new document description.
This is not a proc file, it is in sysfs.
And it violates all of the sysfs rules, and has all of the problems that
proc files have. So the worst of both worlds :(
> > Also, this api is crazy, and not ok, please never add anything new to
> > it, it is broken as-is.
>
> The consideration of adding per-node MemAvailable is that some processes
> that bind nodes need this information to do some decisions.
>
> Now their approach is to read other information in per-node meminfo
> and /proc/sys/vm/watermark_scale_factor, and then approximate this
> value. With this counter, they can directly read
> /sys/devices/system/node/node*/meminfo to get the MemAvailable
> information of each node.
>
> And MemTotal, MemFree and SReclaimable(etc.) all have corresponding
> per-node versions, so I think that adding per-node MemAvailable might
> also make sense. :)
Please no, I do not want new things added to this file, as you might
break parsers of this file.
Also, again, you did not document this at all in Documentation/ABI/ so
for that reason alone it is not ok.
thanks,
greg k-h
next prev parent reply other threads:[~2021-12-16 15:37 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-16 12:46 [PATCH 0/2] add MemAvailable to per-node meminfo Qi Zheng
2021-12-16 12:46 ` [PATCH 1/2] mm: " Qi Zheng
2021-12-16 13:16 ` Greg KH
2021-12-16 15:31 ` Qi Zheng
2021-12-16 15:37 ` Greg KH [this message]
2021-12-16 15:43 ` Qi Zheng
2021-12-16 12:46 ` [PATCH 2/2] mm: reimplement si_mem_available() Qi Zheng
2021-12-16 13:17 ` Greg KH
2021-12-16 15:39 ` Qi Zheng
2021-12-16 15:06 ` kernel test robot
2021-12-16 15:06 ` kernel test robot
2021-12-16 18:21 ` kernel test robot
2021-12-16 18:21 ` kernel test robot
2021-12-16 21:05 ` kernel test robot
2021-12-16 21:05 ` kernel test robot
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=YbtdIpJal3keEWf8@kroah.com \
--to=gregkh@linuxfoundation.org \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=rafael@kernel.org \
--cc=songmuchun@bytedance.com \
--cc=zhengqi.arch@bytedance.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.