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 963FFC433F5 for ; Thu, 16 Dec 2021 15:32:05 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 166C86B0071; Thu, 16 Dec 2021 10:31:55 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 1214D6B0073; Thu, 16 Dec 2021 10:31:55 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id F21506B0074; Thu, 16 Dec 2021 10:31:54 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (relay030.a.hostedemail.com [64.99.140.30]) by kanga.kvack.org (Postfix) with ESMTP id E6BC16B0071 for ; Thu, 16 Dec 2021 10:31:54 -0500 (EST) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay11.hostedemail.com (Postfix) with ESMTP id B1E5580C1D for ; Thu, 16 Dec 2021 15:31:44 +0000 (UTC) X-FDA: 78924047328.03.1E566CB Received: from mail-pj1-f41.google.com (mail-pj1-f41.google.com [209.85.216.41]) by imf25.hostedemail.com (Postfix) with ESMTP id 8DB6AA001D for ; Thu, 16 Dec 2021 15:31:37 +0000 (UTC) Received: by mail-pj1-f41.google.com with SMTP id y16-20020a17090a6c9000b001b13ffaa625so419116pjj.2 for ; Thu, 16 Dec 2021 07:31:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance-com.20210112.gappssmtp.com; s=20210112; h=message-id:date:mime-version:user-agent:subject:to:cc:references :from:in-reply-to:content-transfer-encoding; bh=l6LvE0tdF/ri+A9zgAE580bkzjjff8YwYMCAYxHLAzE=; b=mvOdgs8ysGAbyp7kwJo0T2wfPEL8nOZFTDV1Tnc0v0NJMLV3AHJpFONGmI6pQtX7gA AWlPBvlx9uY8166HJKOjHkoitFySnuaPr0ieOqxyatwT31mAQMfpdzHW28N5NZu+WD24 R2wBQhcWs7CdjLddFZyLw1fPgFVfjrEwHKaZ+lo7m9e9O51718RJ+sS3lKXzxLyWCrfc aixARH4dzBrMVsD7zRxo9+iSMX5TgaZu8S3/P+mTi4WO6Bh8XN7YEtCPHsLgRHsGQrmF lMPhNa9Z7IDBzpPniaXtNDtaK3drXmSnPgxAZueJSGEEJW1Vr3r+/aCwulEXGFR3g/Gk LTtA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent:subject :to:cc:references:from:in-reply-to:content-transfer-encoding; bh=l6LvE0tdF/ri+A9zgAE580bkzjjff8YwYMCAYxHLAzE=; b=zRoh+Lj/zOQOsAcdEf6wIhINxRiMLWMGYHFsqTx9CkicuT5xs9IWeOI1PfenFb+/v6 wu2JYQkHmjTTqrN+siFn1Br/8rjobt/DXW+KHBAqa7NT85mVcBGMwnH70xN6AVIIH3hq Gne2hzoF0quQ5Ug7vDcbp06fr9qMdb16bd8mFJE9rbrLOoJJzMZWbChCwcTXo2qoNroY hz6S8MfmCz5fiqexcv7+x7kmfZvEtZGaQnFu++uDqNF1XU6V4Uerk5NrEXBd9j5SVBEC JDQyvhVc9yFZ7rFeNJqrkUpRmAhdW20Wwz+CF9CUFXL3IkhTylgOLID0ehxHu2XlQz7Z AYqA== X-Gm-Message-State: AOAM532Y7uMeYci5+FRTVn8quot2conBqMqEJPqSnn3Oq+c0ZvzUDjPr D0Q6FYa7kONoWARDNiBsZMuXAw== X-Google-Smtp-Source: ABdhPJyB7csupnNgQv6T0IUbYKW6vNSHYJMhs8CvsQBg79ExMKklWow9wrwx8W3a3lGXUelF1IOaKg== X-Received: by 2002:a17:903:1208:b0:143:e4e9:4ce3 with SMTP id l8-20020a170903120800b00143e4e94ce3mr16458248plh.21.1639668701217; Thu, 16 Dec 2021 07:31:41 -0800 (PST) Received: from [10.255.28.103] ([139.177.225.243]) by smtp.gmail.com with ESMTPSA id q10sm6869782pfk.180.2021.12.16.07.31.38 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 16 Dec 2021 07:31:40 -0800 (PST) Message-ID: <34cc2f26-9fba-f7c6-5dae-d21498ccbe2d@bytedance.com> Date: Thu, 16 Dec 2021 23:31:36 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.3.2 Subject: Re: [PATCH 1/2] mm: add MemAvailable to per-node meminfo To: Greg KH Cc: akpm@linux-foundation.org, rafael@kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, songmuchun@bytedance.com References: <20211216124655.32247-1-zhengqi.arch@bytedance.com> <20211216124655.32247-2-zhengqi.arch@bytedance.com> From: Qi Zheng In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Stat-Signature: dnk757rr9whzzwq1scdddbn7s3e66gkf X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: 8DB6AA001D Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=bytedance-com.20210112.gappssmtp.com header.s=20210112 header.b=mvOdgs8y; spf=pass (imf25.hostedemail.com: domain of zhengqi.arch@bytedance.com designates 209.85.216.41 as permitted sender) smtp.mailfrom=zhengqi.arch@bytedance.com; dmarc=pass (policy=none) header.from=bytedance.com X-HE-Tag: 1639668697-88433 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: 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 >> --- >> 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. > > 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. :) Thanks, Qi > > thanks, > > greg k-h > -- Thanks, Qi