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 8BF37C2BB41 for ; Tue, 16 Aug 2022 09:24:13 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DC7248D0002; Tue, 16 Aug 2022 05:24:12 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D4E7B8D0001; Tue, 16 Aug 2022 05:24:12 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BEF488D0002; Tue, 16 Aug 2022 05:24:12 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id A9E598D0001 for ; Tue, 16 Aug 2022 05:24:12 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 777A6140697 for ; Tue, 16 Aug 2022 09:24:12 +0000 (UTC) X-FDA: 79804919544.09.704730A Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) by imf04.hostedemail.com (Postfix) with ESMTP id 431B340199 for ; Tue, 16 Aug 2022 09:24:11 +0000 (UTC) Received: from dggpemm500023.china.huawei.com (unknown [172.30.72.54]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4M6Qdd3HtRzhYT9; Tue, 16 Aug 2022 17:21:57 +0800 (CST) Received: from dggpemm500001.china.huawei.com (7.185.36.107) by dggpemm500023.china.huawei.com (7.185.36.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24; Tue, 16 Aug 2022 17:24:08 +0800 Received: from [10.174.177.243] (10.174.177.243) by dggpemm500001.china.huawei.com (7.185.36.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24; Tue, 16 Aug 2022 17:24:07 +0800 Message-ID: <578084e8-bdc3-6e4e-f390-4202a8bc7c1d@huawei.com> Date: Tue, 16 Aug 2022 17:24:07 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.9.1 Subject: Re: [PATCH RFC] mm, proc: add PcpFree to meminfo Content-Language: en-US To: huang ying CC: Andrew Morton , Greg Kroah-Hartman , , , Liu Shixin , "Huang Ying" References: <20220816084426.135528-1-wangkefeng.wang@huawei.com> From: Kefeng Wang In-Reply-To: Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [10.174.177.243] X-ClientProxiedBy: dggems706-chm.china.huawei.com (10.3.19.183) To dggpemm500001.china.huawei.com (7.185.36.107) X-CFilter-Loop: Reflected ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=none; spf=pass (imf04.hostedemail.com: domain of wangkefeng.wang@huawei.com designates 45.249.212.187 as permitted sender) smtp.mailfrom=wangkefeng.wang@huawei.com; dmarc=pass (policy=quarantine) header.from=huawei.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1660641852; a=rsa-sha256; cv=none; b=TSQnJEbMC+jUqA5JwJxqsPqjSjIuBH3qFLWYyuaHaNS5oYzATxFjjBymIJVB1yxMuaLtXU FQmX83oHQj41qDFiqzu4jDfjJvVQp8N9OXjwnt+wDpYHick1BF8M1PPw2gX+ppZcHrjCnT cyfNv9fK6rXbMkKjeFexVchqgJ5ZRkM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1660641852; 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; bh=cZJTBU1QoEfj5AmtI/FDh1FG8doemrDUSMzKPLpc4z0=; b=vkF7rhWksmH7RYztnMV8O/mlybVEaWDTQR+mI7PY9P3QlwGauxtFQkWtV9YRomwdVuSCQa FcCis5/51Z9s64SLJi6wHEOaJPsLlOJUFjrHJOHlVCqjrWBZyaU1+6yJ91AmbTa5voD74D Iu/IqlqKfuqRhpDLthBL6wQakk4rKqw= Authentication-Results: imf04.hostedemail.com; dkim=none; spf=pass (imf04.hostedemail.com: domain of wangkefeng.wang@huawei.com designates 45.249.212.187 as permitted sender) smtp.mailfrom=wangkefeng.wang@huawei.com; dmarc=pass (policy=quarantine) header.from=huawei.com X-Rspam-User: X-Rspamd-Server: rspam12 X-Stat-Signature: q9ejmruu6szggmpyjg6seedo3w7dxre8 X-Rspamd-Queue-Id: 431B340199 X-HE-Tag: 1660641851-596611 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 2022/8/16 16:48, huang ying wrote: > On Tue, Aug 16, 2022 at 4:38 PM Kefeng Wang wrote: >> From: Liu Shixin >> >> The page on pcplist could be used, but not counted into memory free or >> avaliable, and pcp_free is only showed by show_mem(). Since commit >> d8a759b57035 ("mm, page_alloc: double zone's batchsize"), there is a >> significant decrease in the display of free memory, with a large number >> of cpus and nodes, the number of pages in the percpu list can be very >> large, so it is better to let user to know the pcp count. > Can you show some data? 80M+ with 72cpus/2node > > Another choice is to count PCP free pages in MemFree. Is that OK for > your use case too? Yes, the user will make policy according to MemFree, we think count PCP free pages in MemFree is better, but don't know whether it is right way. > > Best Regards, > Huang, Ying > >> Signed-off-by: Liu Shixin >> Signed-off-by: Kefeng Wang >> --- >> drivers/base/node.c | 14 +++++++++++++- >> fs/proc/meminfo.c | 9 +++++++++ >> 2 files changed, 22 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/base/node.c b/drivers/base/node.c >> index eb0f43784c2b..846864e45db6 100644 >> --- a/drivers/base/node.c >> +++ b/drivers/base/node.c >> @@ -375,6 +375,9 @@ static ssize_t node_read_meminfo(struct device *dev, >> struct sysinfo i; >> unsigned long sreclaimable, sunreclaimable; >> unsigned long swapcached = 0; >> + unsigned long free_pcp = 0; >> + struct zone *zone; >> + int cpu; >> >> si_meminfo_node(&i, nid); >> sreclaimable = node_page_state_pages(pgdat, NR_SLAB_RECLAIMABLE_B); >> @@ -382,9 +385,17 @@ static ssize_t node_read_meminfo(struct device *dev, >> #ifdef CONFIG_SWAP >> swapcached = node_page_state_pages(pgdat, NR_SWAPCACHE); >> #endif >> + for_each_populated_zone(zone) { >> + if (zone_to_nid(zone) != nid) >> + continue; >> + for_each_online_cpu(cpu) >> + free_pcp += per_cpu_ptr(zone->per_cpu_pageset, cpu)->count; >> + } >> + >> len = sysfs_emit_at(buf, len, >> "Node %d MemTotal: %8lu kB\n" >> "Node %d MemFree: %8lu kB\n" >> + "Node %d PcpFree: %8lu kB\n" >> "Node %d MemUsed: %8lu kB\n" >> "Node %d SwapCached: %8lu kB\n" >> "Node %d Active: %8lu kB\n" >> @@ -397,7 +408,8 @@ static ssize_t node_read_meminfo(struct device *dev, >> "Node %d Mlocked: %8lu kB\n", >> nid, K(i.totalram), >> nid, K(i.freeram), >> - nid, K(i.totalram - i.freeram), >> + nid, K(free_pcp), >> + nid, K(i.totalram - i.freeram - free_pcp), >> nid, K(swapcached), >> nid, K(node_page_state(pgdat, NR_ACTIVE_ANON) + >> node_page_state(pgdat, NR_ACTIVE_FILE)), >> diff --git a/fs/proc/meminfo.c b/fs/proc/meminfo.c >> index 6e89f0e2fd20..672c784dfc8a 100644 >> --- a/fs/proc/meminfo.c >> +++ b/fs/proc/meminfo.c >> @@ -38,6 +38,9 @@ static int meminfo_proc_show(struct seq_file *m, void *v) >> unsigned long pages[NR_LRU_LISTS]; >> unsigned long sreclaimable, sunreclaim; >> int lru; >> + unsigned long free_pcp = 0; >> + struct zone *zone; >> + int cpu; >> >> si_meminfo(&i); >> si_swapinfo(&i); >> @@ -55,8 +58,14 @@ static int meminfo_proc_show(struct seq_file *m, void *v) >> sreclaimable = global_node_page_state_pages(NR_SLAB_RECLAIMABLE_B); >> sunreclaim = global_node_page_state_pages(NR_SLAB_UNRECLAIMABLE_B); >> >> + for_each_populated_zone(zone) { >> + for_each_online_cpu(cpu) >> + free_pcp += per_cpu_ptr(zone->per_cpu_pageset, cpu)->count; >> + } >> + >> show_val_kb(m, "MemTotal: ", i.totalram); >> show_val_kb(m, "MemFree: ", i.freeram); >> + show_val_kb(m, "PcpFree: ", free_pcp); >> show_val_kb(m, "MemAvailable: ", available); >> show_val_kb(m, "Buffers: ", i.bufferram); >> show_val_kb(m, "Cached: ", cached); >> -- >> 2.35.3 >> >> > .