From patchwork Wed Apr 9 07:06:18 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhongkun He X-Patchwork-Id: 14044181 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 5899FC369A1 for ; Wed, 9 Apr 2025 07:07:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1C69B6B013B; Wed, 9 Apr 2025 03:07:03 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 177036B013C; Wed, 9 Apr 2025 03:07:03 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 03D916B013D; Wed, 9 Apr 2025 03:07:02 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id D90366B013B for ; Wed, 9 Apr 2025 03:07:02 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 0A3A3BC677 for ; Wed, 9 Apr 2025 07:07:03 +0000 (UTC) X-FDA: 83313623526.26.79A16F0 Received: from mail-pf1-f169.google.com (mail-pf1-f169.google.com [209.85.210.169]) by imf21.hostedemail.com (Postfix) with ESMTP id 24DA31C0006 for ; Wed, 9 Apr 2025 07:07:00 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=k1XdgAB7; dmarc=pass (policy=quarantine) header.from=bytedance.com; spf=pass (imf21.hostedemail.com: domain of hezhongkun.hzk@bytedance.com designates 209.85.210.169 as permitted sender) smtp.mailfrom=hezhongkun.hzk@bytedance.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1744182421; a=rsa-sha256; cv=none; b=YLmi9+Mr4188m910I7wYXeMX9L1+Kc07A6Zscqu7s4L9QJue5qX4YOqy46w5tMlMqJS2dM 58MbPYP5wBLw/Sk6uqSIJSqO7z0Y7Kni8f3DqvEqKtwsMeos/yWz3IOp+VCyF7HF38mqQE jqbOkrBnTzpxAAreL6ZdUB+OlpCMSuw= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=k1XdgAB7; dmarc=pass (policy=quarantine) header.from=bytedance.com; spf=pass (imf21.hostedemail.com: domain of hezhongkun.hzk@bytedance.com designates 209.85.210.169 as permitted sender) smtp.mailfrom=hezhongkun.hzk@bytedance.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744182421; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=ujmYaz1xhzgQruKX3gsS9ChwvjKO75yxs6+zEFvJeXQ=; b=MyUMb5pGmHjJ970hODuVs05UjmMj5v6BD7bn1qOo5J6GPSYen0qZuLH1ax0hIGn13SMz0A s9NntT0KQs7PXPJ4p9LAljzNA0yOIKpQ8DUDtgWPIKEN24+HmJ8TGuYWKy6CtS2rf/7w4N Y11yf5YyArVvX8MDTfJy4XDXz8vNfxk= Received: by mail-pf1-f169.google.com with SMTP id d2e1a72fcca58-739be717eddso5021340b3a.2 for ; Wed, 09 Apr 2025 00:07:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1744182420; x=1744787220; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ujmYaz1xhzgQruKX3gsS9ChwvjKO75yxs6+zEFvJeXQ=; b=k1XdgAB7RlvGuKQH/IqJbO6RgKRpm4cPMk4mldB3RrGcnktbo8Fy0HULTUsPWq5/hu W5uFsJ5MGAvzyWZonO1E4ERJVx+i6Ju7jFAl4KZg8w/9lCOTuodRIOvaqAOanvsXwq9u Rm9QBnFOJiN4pXPEN6Jvtg6Z+bSiV/kveAVqESBZIdGYrIzh+Qv5a6qsztxip2wcIDGS SRQM7N8dghQJNXwesTdCIxvrhdKANpJnc03aVGSQotoDospyQz5kV4gJybNKqqIcxHPX lMBIZQKNiubsyFPPWuDHe4lB8qQjkPkeuCiNHZbZTZYZJLmeDYMu2+pQfJKVFDV9JJEr vSLA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744182420; x=1744787220; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ujmYaz1xhzgQruKX3gsS9ChwvjKO75yxs6+zEFvJeXQ=; b=BeEBxOImUWNaph0TgUk1+8q8wExXgUNvpkuxs3Y4WVR3x7dTGr0irSGdRsnz4KgO+T SwrJUpN+s+BILcuUc7CRhyK0buUOU9dCxACpFMWHohFgcMwGmJJ45NSsg+3NjSX3oXn9 uvc2qj6pIVvRid/mNJXiFi7/Z9BfIFx1WYepCB+IDrDQTIX5f8tCYqktRxeaJAtU8kBO gbVObuErg/PmK12jxeVQQxAHPBUVcflM/cllytijgBtosVjjr+ATbVreObmFcDYDJ6dV krGiXt5pp9K682DWVRopS8pw5/maZF+E2ai+0GUwN3byrTc7Jh02x+YR2WvQbhMSG8Qq cO/w== X-Forwarded-Encrypted: i=1; AJvYcCXV97p57XuQVz7snKjCxGRzHFYdDr50bhkNCZ4Tu5rmjluGBqH9n+IwPlhQr7vNTxIkULaS0Cxbkw==@kvack.org X-Gm-Message-State: AOJu0Yz5GyhHo7sjddWYz32lLWT0PqjnN9fqXzkepYTMUT/dLCQ9aYHw 5KErFErtqX1VbqKOBXSRFIUbeWAfBEKBKLg+v5xfcEjDOQKswdiTYU8UNZXV4K4= X-Gm-Gg: ASbGncvyo63jkiVDCS3a8WnhBznim0ziannlmar2iYsjr9xbmDtp+1dMrlwzfhWrohH IwlT4TOBXKnQRCk9YKMgyqaqu37P184Bd0etjfcTD5IDy57rf6LfdvRmHl9GQKcDDtetd7mYrFd lov1CGw4IlVUJlAjjhPImADfG9QwbAuBYu0Mluz5712zFveoiz5lwgkpKWLAvN3b6F9YmHcNs4c AQWIjtb8ovaAGI/h1BaJGIuoimCeZgzvSYjtxPPGInDO/M/i4/WQ4raI4kTAhbVrhjpHlUE642w EZfBtNet4/18WzNrrICxLL3t2F1V1Z3GMPDiTjOEXBC3JOU5C6UaRbYyB5ZrjvIMMA== X-Google-Smtp-Source: AGHT+IF7GDjhZRQpVU8yYUwePq+oEDguHY3UMiaiTFMPBsZnqmwOAVKFg5rczv+LKfHVkKSU2/h6og== X-Received: by 2002:a05:6a21:9106:b0:1f5:7366:2a01 with SMTP id adf61e73a8af0-201592fdfe1mr2896234637.37.1744182419773; Wed, 09 Apr 2025 00:06:59 -0700 (PDT) Received: from n37-069-081.byted.org ([115.190.40.13]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-73bb1d44800sm565754b3a.37.2025.04.09.00.06.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 09 Apr 2025 00:06:59 -0700 (PDT) From: Zhongkun He To: akpm@linux-foundation.org Cc: hannes@cmpxchg.org, mhocko@suse.com, yosry.ahmed@linux.dev, muchun.song@linux.dev, yuzhao@google.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Zhongkun He Subject: [PATCH V3 1/3] mm: add swappiness=max arg to memory.reclaim for only anon reclaim Date: Wed, 9 Apr 2025 15:06:18 +0800 Message-Id: <720e8e2c5b84efed5cf9980567794e7c799d179a.1744169302.git.hezhongkun.hzk@bytedance.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: References: MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 24DA31C0006 X-Stat-Signature: 71c14ru6uaye5m93er87b7wdkrbzadyz X-HE-Tag: 1744182420-581382 X-HE-Meta: U2FsdGVkX19wFAC8P7Ewezho4cE8xtFRF7lWszXB9dF7RHpc555ki3NTurMlAJelpFHpJ3sC0M3/p788+W6BQcYUb3ez3qe1u0aB6X+em2WyHU0lrYLWJobOV0jRca61o5PlVHzBQS4eHZgHg8OnHoPJR0H+MOLi+0EVHE2Gafy6MFVnqoisOCLFjHpzbvF9jtg/WjSWeUrlJJrIo1fd+p5oH3wAtztDhENls7I4pPliHt6lQpOPaJTTpomE0ADtRcznMIFWl7sfZx2m7mKeIOrmI3TIES2Yx8oH+RWLZPaeItZacuqri99MDJXYQplNDdQbupqQCwJ9SOqTTqKkqRUz/3XabvWSkrq7jg5HKOtTz2erC2iF/31iQ7arQeT37RWM+KFGoq5H0XAGnoV2Wyr7iN098T4ebb6t1fa7GMMQuN5OoLV1NtLz/CSZysOIGZsvtgB7q5UC711A6B0IPY1/7ZIx8tWgd35MhoucJgs2D3iKw6SCcpSWiWlVNmT05vWUuJZGX4HWfpp+U6YE8kc4PvI8V5NosUo/14sKTw7WZw+1QaWSqTpWZ0mjUiXExvq2GMmvn3PjQSTda/bQ0UT1u7bSn78MXxf4qh3gqGw158Uod+HcaTSLNnV6Z1EjH6oaAfKfUNtbNcXy3mL2mGErQmp3I4TWN9/qZQuLzhM/hWN7BHg3klaaFfvEXlGm9DRehueZ9PXRjr8TFtvw3vwA6Fzt2S+lq+42VjaNMSe/v64OiZsjc4UQ5snE32qxbIkJ5srQ5DMGBFupjdE5B1doOW4514Havlz2UVQVD4XtvakShUkQXCTwGIiEWSG8AKYa3rYk6qmqK0Mi+N/ThtOQDAk6jsfL4yXdz9pAR+iT2ui1JI0iam9fR0uKcFdpGjMk8WEn7kgpntza+onW80zEU/2dM6WI8p492nYoYqdHmKllkmx1JGZiv4yqNVXZjJ29nxbTtIcCsdAlRV+ 33PzLvZe l72QFvWdWUCryabmvbk/fqbU/AhK47Ae84iyEgnEoq87DO20S/iL/2wZwiFhos+JFNA6Hv5tATOlFbqXbkZrPSQIfgTfoDNjZcCsZLiDaEUsHi4W0WV4k9YxUOIjZCKlr5rbqA8bTYVsN0USNgEzBvjvJW1iznoyQgcsrd2aBUJ/lBn5ZotOBDPYe5G8pbJ9qFrstSaCkOkbfVhV/9NvUxLlXWIk22qwtX6lZzu9+tXDDiy5YHqbqeVXUjkmH36HlIQWZwnbjHd5UPmAFA2TzsXEez4LiqmrOEn454wdm0WaP/TpCdO0UqGNVX+FfSOak2GZT3wU0Qz3FDbk= 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: List-Subscribe: List-Unsubscribe: With this patch 'commit <68cd9050d871> ("mm: add swappiness= arg to memory.reclaim")', we can submit an additional swappiness= argument to memory.reclaim. It is very useful because we can dynamically adjust the reclamation ratio based on the anonymous folios and file folios of each cgroup. For example,when swappiness is set to 0, we only reclaim from file folios. However,we have also encountered a new issue: when swappiness is set to the MAX_SWAPPINESS, it may still only reclaim file folios. So, we hope to add a new arg 'swappiness=max' in memory.reclaim where proactive memory reclaim only reclaims from anonymous folios when swappiness is set to max. The swappiness semantics from a user perspective remain unchanged. For example, something like this: echo "2M swappiness=max" > /sys/fs/cgroup/memory.reclaim will perform reclaim on the rootcg with a swappiness setting of 'max' (a new mode) regardless of the file folios. Users have a more comprehensive view of the application's memory distribution because there are many metrics available. For example, if we find that a certain cgroup has a large number of inactive anon folios, we can reclaim only those and skip file folios, because with the zram/zswap, the IO tradeoff that cache_trim_mode or other file first logic is making doesn't hold - file refaults will cause IO, whereas anon decompression will not. With this patch, the swappiness argument of memory.reclaim has a new mode 'max', means reclaiming just from anonymous folios both in traditional LRU and MGLRU. Here is the previous discussion: https://lore.kernel.org/all/20250314033350.1156370-1-hezhongkun.hzk@bytedance.com/ https://lore.kernel.org/all/20250312094337.2296278-1-hezhongkun.hzk@bytedance.com/ https://lore.kernel.org/all/20250318135330.3358345-1-hezhongkun.hzk@bytedance.com/ Suggested-by: Yosry Ahmed Signed-off-by: Zhongkun He --- Documentation/admin-guide/cgroup-v2.rst | 3 +++ include/linux/swap.h | 4 ++++ mm/memcontrol.c | 5 +++++ mm/vmscan.c | 7 +++++++ 4 files changed, 19 insertions(+) diff --git a/Documentation/admin-guide/cgroup-v2.rst b/Documentation/admin-guide/cgroup-v2.rst index 1a16ce68a4d7..472c01e0eb2c 100644 --- a/Documentation/admin-guide/cgroup-v2.rst +++ b/Documentation/admin-guide/cgroup-v2.rst @@ -1348,6 +1348,9 @@ The following nested keys are defined. same semantics as vm.swappiness applied to memcg reclaim with all the existing limitations and potential future extensions. + The valid range for swappiness is [0-200, max], setting + swappiness=max exclusively reclaims anonymous memory. + memory.peak A read-write single value file which exists on non-root cgroups. diff --git a/include/linux/swap.h b/include/linux/swap.h index db46b25a65ae..f57c7e0012ba 100644 --- a/include/linux/swap.h +++ b/include/linux/swap.h @@ -414,6 +414,10 @@ extern unsigned long try_to_free_pages(struct zonelist *zonelist, int order, #define MEMCG_RECLAIM_PROACTIVE (1 << 2) #define MIN_SWAPPINESS 0 #define MAX_SWAPPINESS 200 + +/* Just recliam from anon folios in proactive memory reclaim */ +#define SWAPPINESS_ANON_ONLY (MAX_SWAPPINESS + 1) + extern unsigned long try_to_free_mem_cgroup_pages(struct mem_cgroup *memcg, unsigned long nr_pages, gfp_t gfp_mask, diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 421740f1bcdc..b0b3411dc0df 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -4396,11 +4396,13 @@ static ssize_t memory_oom_group_write(struct kernfs_open_file *of, enum { MEMORY_RECLAIM_SWAPPINESS = 0, + MEMORY_RECLAIM_SWAPPINESS_MAX, MEMORY_RECLAIM_NULL, }; static const match_table_t tokens = { { MEMORY_RECLAIM_SWAPPINESS, "swappiness=%d"}, + { MEMORY_RECLAIM_SWAPPINESS_MAX, "swappiness=max"}, { MEMORY_RECLAIM_NULL, NULL }, }; @@ -4434,6 +4436,9 @@ static ssize_t memory_reclaim(struct kernfs_open_file *of, char *buf, if (swappiness < MIN_SWAPPINESS || swappiness > MAX_SWAPPINESS) return -EINVAL; break; + case MEMORY_RECLAIM_SWAPPINESS_MAX: + swappiness = SWAPPINESS_ANON_ONLY; + break; default: return -EINVAL; } diff --git a/mm/vmscan.c b/mm/vmscan.c index b620d74b0f66..c99a6a48d0bc 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -2503,6 +2503,13 @@ static void get_scan_count(struct lruvec *lruvec, struct scan_control *sc, goto out; } + /* Proactive reclaim initiated by userspace for anonymous memory only */ + if (swappiness == SWAPPINESS_ANON_ONLY) { + WARN_ON_ONCE(!sc->proactive); + scan_balance = SCAN_ANON; + goto out; + } + /* * Do not apply any pressure balancing cleverness when the * system is close to OOM, scan both anon and file equally From patchwork Wed Apr 9 07:06:19 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhongkun He X-Patchwork-Id: 14044182 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 7BDE9C369A1 for ; Wed, 9 Apr 2025 07:07:09 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5A5DE6B013D; Wed, 9 Apr 2025 03:07:08 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 556566B013E; Wed, 9 Apr 2025 03:07:08 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3F7286B013F; Wed, 9 Apr 2025 03:07:08 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 1B7926B013D for ; Wed, 9 Apr 2025 03:07:08 -0400 (EDT) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 6AE7CB88F5 for ; Wed, 9 Apr 2025 07:07:08 +0000 (UTC) X-FDA: 83313623736.19.1F5BE49 Received: from mail-pl1-f174.google.com (mail-pl1-f174.google.com [209.85.214.174]) by imf25.hostedemail.com (Postfix) with ESMTP id 8C7BBA0008 for ; Wed, 9 Apr 2025 07:07:06 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=i6+7EajL; spf=pass (imf25.hostedemail.com: domain of hezhongkun.hzk@bytedance.com designates 209.85.214.174 as permitted sender) smtp.mailfrom=hezhongkun.hzk@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744182426; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=A2hnt1J4L3olEEgVeJYpHiMUYT2gnH0FfIQaw5NdEjY=; b=rSu3S6NA3Z5LdrAjGzYfAVhmXNR+94tD6gn9rsLSh9A+9dyQYQYiSVLJg9WjnqW1nKAvou eEWmGAmwvnonZ1OcktcGUhHvr6Osy+pWgO/ORsJkbJAii0yuifBP5ivT0hYvaC3c1FU/aG ZxyiUbuScoC/3LdVsAjVZADVsPjtOZM= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=i6+7EajL; spf=pass (imf25.hostedemail.com: domain of hezhongkun.hzk@bytedance.com designates 209.85.214.174 as permitted sender) smtp.mailfrom=hezhongkun.hzk@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1744182426; a=rsa-sha256; cv=none; b=VW2VbizF3P+jCbi7woVGea8Sv8I/qrMQM8CjNzhlEf7HG0SyufvQO9JBjAKM5WXYCoJbq8 MJt6/xGe26YcsOCyGMMQK2XRoemquMQ1xN12RSUsNiOFMPu8UB0q5lC4BSzCamY+ecrVw/ 8vWAwKsjRRPIfBQMfZ0dQTo2smL3lLg= Received: by mail-pl1-f174.google.com with SMTP id d9443c01a7336-22928d629faso65356055ad.3 for ; Wed, 09 Apr 2025 00:07:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1744182425; x=1744787225; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=A2hnt1J4L3olEEgVeJYpHiMUYT2gnH0FfIQaw5NdEjY=; b=i6+7EajLgiFeDLQ0+EO3HtyGThmEjWrEc0Wpl29WVZ4swZWHhku7AJKpoaEyKHChOq YDzo8audRiAXswReQhQCOgplcskBNO7CbNj3iMSyKMrXb7bMUdLCWOLJ3aXjIGYoXCWx i7lWDZKuRxCCJd+teIv7bY0XBsGjoa07CdDNECGd8R4yOPL+DD6XajeMA/ZZqnZxnCo7 uhfE8C/4EsAqYFgHi472b39EZe2ugqipDDWypdE7pG6xbKeYc5kow+6RoQJZpmjph0DI XdNVtqJ2G5EDdXSZUtw0qeSGKAferz/jjkaJRuYCDvKu2P8Gd3iRxxhBthtbPm7+cXkq PzEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744182425; x=1744787225; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=A2hnt1J4L3olEEgVeJYpHiMUYT2gnH0FfIQaw5NdEjY=; b=AorA8h2UBMdHF6opkwMzMs0FCgBb4jW564zi1WxxCej6sGUnVaZrIgTDiHV9IBCbuR kCH1Eq9sQyBDCR0A9CeanHmTl3RjOt8mL3Ofk8lBGjjzB+o6j8wj3YEOeqjTbYL8gKNV 6T1wQBUws3enPlEvHsTi1y5ayIsdkelgKxpYxFYiaISYyHcCTOwmRTExCYbc/piC7X3I verD0+DtCnmuYPE9eV7+Y8eXf9JQ53s5HJsgVt2ShwgZdeeXJr4lIeczCeAam2fmo/Jq NDstekcJkPlVqrMlXP8UWYKZI+duV8Io2Y6nqkOgBmPQqBHvaOnKxzvUxFlfSemBXEdV yUyA== X-Forwarded-Encrypted: i=1; AJvYcCXOTKgQ8Fn6MGcX0LrDoLoq5a2TtWqFmIipCcMYANuX9Bw1PBLqHW+IzqmTYWaL6P9aVXnAzN63Ow==@kvack.org X-Gm-Message-State: AOJu0YwlKz4cH4dj0jwgfqS9NyMCT7wzSnwAkkHms0XlefTEUN9nuHMi MmtF+gf67ITSs1Qgb1RakwPUlQfWK4TuQ8TwzF0CUP7M3K1lMoCG7XtEvCvh/74= X-Gm-Gg: ASbGncuW8nWV+b73SeAaTfaoMAOSrEAU7+4DfCj/sFDigSAhnwsLR74D9OwaX6Q/Fis ze9o/Ftz7wzAVl4t3h8ePL6gVsEvu70smAtGEYsmHk4LAynQx+zX6aKJ0s56Wfk8nRkEQuE7owW i0XLk4bhqyRJx1dbbPRBJ7UD2NoOzW7Fc7uk06/s/K6pgFqnsV3F1kyQHi+fLD+dLam3LPSPVNx l49HsMeTrDccAzeHN+8tcv7kSeGjhh1Hnt2S1W+3yHTThk/aTpmxtepiPYfJkj3NR5pfRak6uAt cVc+LZ9RMm4P3YTtDVaXGbG5k6ZY1YzCv5QB4cjUUY44NgkIlP4BeIFSzvkRT7AITQ== X-Google-Smtp-Source: AGHT+IEqzbVgFBQGm2kJbpgwtHwR6FDnzEvHZ2VCmuE1rmHyw8CkVPDDJbNjbPVqYOiqi6Mf2+tk+g== X-Received: by 2002:a17:903:22c6:b0:225:b718:4dff with SMTP id d9443c01a7336-22ac2c36a0amr33086715ad.53.1744182425144; Wed, 09 Apr 2025 00:07:05 -0700 (PDT) Received: from n37-069-081.byted.org ([115.190.40.13]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-73bb1d44800sm565754b3a.37.2025.04.09.00.07.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 09 Apr 2025 00:07:04 -0700 (PDT) From: Zhongkun He To: akpm@linux-foundation.org Cc: hannes@cmpxchg.org, mhocko@suse.com, yosry.ahmed@linux.dev, muchun.song@linux.dev, yuzhao@google.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Zhongkun He Subject: [PATCH V3 2/3] mm: add max swappiness arg to lru_gen for anonymous memory only Date: Wed, 9 Apr 2025 15:06:19 +0800 Message-Id: X-Mailer: git-send-email 2.39.5 In-Reply-To: References: MIME-Version: 1.0 X-Rspamd-Queue-Id: 8C7BBA0008 X-Stat-Signature: kas6tw5shga7rcsxuttnbn1ysec7hart X-Rspam-User: X-Rspamd-Server: rspam12 X-HE-Tag: 1744182426-828889 X-HE-Meta: U2FsdGVkX1+k4p7CPGRUfBozIvIix2Bn6XpwoeTu7LHT85mO7+pCeVVUqoWxWWki9VeePPnMRyGfLrBeM/N4GP2SPq/8rKQAZmYUkjMf16ZnZUlMsm5OHGvb/zSYDZzZJqmiksnw+INsBFARDp5iH+AqtfwIOHVidTZmnJl00+524AlXLF0TjRhzGreARq6IRyVSbxRgVl4h1dQ+VS0UYu8XtL14jEVree3rJ9OPCAGYsjGzt+VeHpBpn6Rh9vpzJhkiDn+OBvM5Jo8eZIhXI6uW3aZEMhAErZnGlxnqm43O8sQIS7mwnBhjtOiejWBfQ8YelWbMoT9tEEsGrU6TsS3JI2etMsoH30HFfkjpCr4oJ0GTMKtaG//erlcnmwIon7XUm7mNKUPMDrif4Jr7aTaGr5n6d/mF1I6hkbI69vW2OuIk1XwGvwnmqfgevgJ3PKft7m9RJ+Gb5Suu3ZW1svhOZTGFos+4T9Wi8Hu/Ms3o9PToMYv3u5YpBuyla2eXH/0BOWWDNRMzM2BrXKKu2WSXI6PhX/Et4MoH6wlTZgxWyhqHy5qLQRkha1b6KW5RCW0Xs4ujC1SCYKIUUCnaZjC+l+N5Yj1lJDDqI5HZUpNpG9xEA8JIWvC3OHtrRabxM5YR7gdRuAJqP/baSOPta0JISYeigkRXsTXFpzXw0xug4LxYwjwWAxO72wdhscnUbl1u1U+MtEr2cUgKqVbTJRubjaQ1Kwi72lw+fZN4K3Kjtb0RdaGcPkcSUYD6ZdlMk7bcHOw7aD/wzl6wxYEJb5Mjzl7YaPaiOAEekGQub6iVfrcK0+VEY1Su4gv0IsZvlS8E1Lu5aphZeQdTTmyf/iu/z0mQFvEeS0t1MSXpwbHCJNzz2fIEemoilH8mYlwmOFZYkogxPW+ZDB4usV2Q7l2l+gTsJV3yHOTNVFm9QT9eMD0Xeq5gcmzGJBrnaKfELrd7YCC2JAFakvKJ3rq /JxKvDKA CmHOKxNAsyuP3w0hI3G9N0BRw1fFycxJbhBvvAtCcj982cgakvUsNbHTMUNOeZlFwGLBp+NrsGxIMCjSpgumcTTqmZeW2YEIY8ngAgnpYxkc/rfXJoFNMRT+5FuCb6ZQLERtazyyOAqqNP04H9cItEmP7dXjCMCEar4CvW9FYOVYDh50UfzsJ2LuO0tKkvqruM1U3tXAz9n8dgqiyE3B+3x4XS8vX8mqQ4rhKVUFBJnJnNGyPAwpp12s90j9hvaYLMAitHAsBLiLt7FhrcXiVcRdlcWeoLGBnhfE7I6V0sGP0Vib5nxebfJtJ5X5GHmx49/BYWjPkBFk/OZiabk19pyS3HY/QY4ZLhJfBiYoLPAF9zH8= 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: List-Subscribe: List-Unsubscribe: The MGLRU already supports reclaiming only from anonymous memory via the /sys/kernel/debug/lru_gen interface. Now, memory.reclaim also supports the swappiness=max parameter to enable reclaiming solely from anonymous memory. To unify the semantics of proactive reclaiming from anonymous folios, the max parameter is introduced. Additionally, the use of SWAPPINESS_ANON_ONLY in place of 'MAX_SWAPPINESS + 1' improves code clarity and makes the intention more explicit. Signed-off-by: Zhongkun He --- Documentation/admin-guide/mm/multigen_lru.rst | 5 ++-- mm/vmscan.c | 26 ++++++++++++++----- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/Documentation/admin-guide/mm/multigen_lru.rst b/Documentation/admin-guide/mm/multigen_lru.rst index 33e068830497..9cb54b4ff5d9 100644 --- a/Documentation/admin-guide/mm/multigen_lru.rst +++ b/Documentation/admin-guide/mm/multigen_lru.rst @@ -151,8 +151,9 @@ generations less than or equal to ``min_gen_nr``. ``min_gen_nr`` should be less than ``max_gen_nr-1``, since ``max_gen_nr`` and ``max_gen_nr-1`` are not fully aged (equivalent to the active list) and therefore cannot be evicted. ``swappiness`` -overrides the default value in ``/proc/sys/vm/swappiness``. -``nr_to_reclaim`` limits the number of pages to evict. +overrides the default value in ``/proc/sys/vm/swappiness`` and the valid +range is [0-200, max], with max being exclusively used for the reclamation +of anonymous memory. ``nr_to_reclaim`` limits the number of pages to evict. A typical use case is that a job scheduler runs this command before it tries to land a new job on a server. If it fails to materialize enough diff --git a/mm/vmscan.c b/mm/vmscan.c index c99a6a48d0bc..18a175752b57 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -2697,8 +2697,11 @@ static bool should_clear_pmd_young(void) READ_ONCE((lruvec)->lrugen.min_seq[LRU_GEN_FILE]), \ } +#define max_evictable_type(swappiness) \ + ((swappiness) != SWAPPINESS_ANON_ONLY) + #define evictable_min_seq(min_seq, swappiness) \ - min((min_seq)[!(swappiness)], (min_seq)[(swappiness) <= MAX_SWAPPINESS]) + min((min_seq)[!(swappiness)], (min_seq)[max_evictable_type(swappiness)]) #define for_each_gen_type_zone(gen, type, zone) \ for ((gen) = 0; (gen) < MAX_NR_GENS; (gen)++) \ @@ -2706,7 +2709,7 @@ static bool should_clear_pmd_young(void) for ((zone) = 0; (zone) < MAX_NR_ZONES; (zone)++) #define for_each_evictable_type(type, swappiness) \ - for ((type) = !(swappiness); (type) <= ((swappiness) <= MAX_SWAPPINESS); (type)++) + for ((type) = !(swappiness); (type) <= max_evictable_type(swappiness); (type)++) #define get_memcg_gen(seq) ((seq) % MEMCG_NR_GENS) #define get_memcg_bin(bin) ((bin) % MEMCG_NR_BINS) @@ -3857,7 +3860,7 @@ static bool inc_min_seq(struct lruvec *lruvec, int type, int swappiness) int hist = lru_hist_from_seq(lrugen->min_seq[type]); int new_gen, old_gen = lru_gen_from_seq(lrugen->min_seq[type]); - if (type ? swappiness > MAX_SWAPPINESS : !swappiness) + if (type ? (swappiness == SWAPPINESS_ANON_ONLY) : !swappiness) goto done; /* prevent cold/hot inversion if the type is evictable */ @@ -5523,7 +5526,7 @@ static int run_cmd(char cmd, int memcg_id, int nid, unsigned long seq, if (swappiness < MIN_SWAPPINESS) swappiness = get_swappiness(lruvec, sc); - else if (swappiness > MAX_SWAPPINESS + 1) + else if (swappiness > SWAPPINESS_ANON_ONLY) goto done; switch (cmd) { @@ -5580,7 +5583,7 @@ static ssize_t lru_gen_seq_write(struct file *file, const char __user *src, while ((cur = strsep(&next, ",;\n"))) { int n; int end; - char cmd; + char cmd, swap_string[5]; unsigned int memcg_id; unsigned int nid; unsigned long seq; @@ -5591,13 +5594,22 @@ static ssize_t lru_gen_seq_write(struct file *file, const char __user *src, if (!*cur) continue; - n = sscanf(cur, "%c %u %u %lu %n %u %n %lu %n", &cmd, &memcg_id, &nid, - &seq, &end, &swappiness, &end, &opt, &end); + n = sscanf(cur, "%c %u %u %lu %n %4s %n %lu %n", &cmd, &memcg_id, &nid, + &seq, &end, swap_string, &end, &opt, &end); if (n < 4 || cur[end]) { err = -EINVAL; break; } + /* set by userspace for anonymous memory only */ + if (!strncmp("max", swap_string, sizeof("max"))) { + swappiness = SWAPPINESS_ANON_ONLY; + } else { + err = kstrtouint(swap_string, 0, &swappiness); + if (err) + break; + } + err = run_cmd(cmd, memcg_id, nid, seq, &sc, swappiness, opt); if (err) break; From patchwork Wed Apr 9 07:06:20 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhongkun He X-Patchwork-Id: 14044183 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 3D78EC369A1 for ; Wed, 9 Apr 2025 07:07:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1E1726B013F; Wed, 9 Apr 2025 03:07:14 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 192736B0140; Wed, 9 Apr 2025 03:07:14 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 00E626B0141; Wed, 9 Apr 2025 03:07:13 -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 D5D276B013F for ; Wed, 9 Apr 2025 03:07:13 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 0948FBCD8A for ; Wed, 9 Apr 2025 07:07:14 +0000 (UTC) X-FDA: 83313623988.20.A1D7213 Received: from mail-pl1-f175.google.com (mail-pl1-f175.google.com [209.85.214.175]) by imf10.hostedemail.com (Postfix) with ESMTP id 19BF2C0008 for ; Wed, 9 Apr 2025 07:07:11 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=WIyF4r9U; dmarc=pass (policy=quarantine) header.from=bytedance.com; spf=pass (imf10.hostedemail.com: domain of hezhongkun.hzk@bytedance.com designates 209.85.214.175 as permitted sender) smtp.mailfrom=hezhongkun.hzk@bytedance.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1744182432; a=rsa-sha256; cv=none; b=EtUs38xVBXK4Ox6sELexk5WYNVWLvxw412EgZFoGn8kXS3MkHuprsSR79BM3QhQ078lUPj EVuic/DNVwGO4+JN2RJR05GtfUUA7MCo2OTHQAf0GwdYAVI+ZhUQEcsnMVg3m+HNK1uQt6 tfnz5RctvtUGKUdMl1+CEYdDvSND3hQ= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=WIyF4r9U; dmarc=pass (policy=quarantine) header.from=bytedance.com; spf=pass (imf10.hostedemail.com: domain of hezhongkun.hzk@bytedance.com designates 209.85.214.175 as permitted sender) smtp.mailfrom=hezhongkun.hzk@bytedance.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744182432; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=ZGgz6xKguZo73gIegFHe3380kA1CkAroxTUvqvSKdkU=; b=AfdkPTJQtOgwzy+LVKEwqQSsp6GoqTeIaYMLNedA8pQH6P5spZwhkM7g/0UFoJKUoxNXk4 xIKOhVB7vu+HM/wIXX7HwWQcbTQgZYqrHC4hD+SEjalF1RwSveaATy/6knuDiEMUNSwwyx FJwmCByJWag2PaPd71cHUyTP9xOM5GM= Received: by mail-pl1-f175.google.com with SMTP id d9443c01a7336-223f4c06e9fso4155295ad.1 for ; Wed, 09 Apr 2025 00:07:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1744182431; x=1744787231; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ZGgz6xKguZo73gIegFHe3380kA1CkAroxTUvqvSKdkU=; b=WIyF4r9U6VFgSSWeht3QHe3NjL2s3eDuwwf9CbRB3hnVftwTbd2tC8uVNiIMf+7h3a VRNJfmUg/gT4mQf2xpAp5bsNAy08PxTCCflFMu0pGve4cBh3CMxLApOL2WslTs6IdU9G WFwEL5k+EZCp5JnyQmHGiUb59VSoBc3OmG68chlMUdAangnZ2nqCQPNEpcZOjNrpueGd ddq92WkWehE77PaBcFLXuWihm7ib6BfM+bt6C/BnKFqZYWzNiEmx5LLFQidtuVeVMD/+ l2aCqIEmfBpMDabQS5zEAQOp/kGS207iPkxApyHEQ84rNTkzunyKgCYM3GpNxvfOHjew pe7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744182431; x=1744787231; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ZGgz6xKguZo73gIegFHe3380kA1CkAroxTUvqvSKdkU=; b=qMM7NCXGUm9yHMjFccF+93esg6iH5uLMahZrNL4el9/8MMqX9Itft1zVXDzhb0Dtoe LCRkkEm3umJgHnC9KvoLy7hn2sCtwwMnpSMTX+0/IYAxH8s/2tIarVp4S5drqe3Ctklv KYP53sgSdNyPjK2HENPgNjFCE4iQ1+/rnHKQ88PSP+150HnRa1P2a929HiUzgmTWSvv/ Ok7i1o9m7csJYmTgJ4QsiHlkZzuTzVsuhkLrkboXt2zTjPtnWbdA/OXPDsg72nkNfNbp 8ij3XcgJNhtMxw/jgqwBlCsDRVCaJlVzXDgeHgkx213vqCYco9QFOSjsdyVWMOxEzziR XS9g== X-Forwarded-Encrypted: i=1; AJvYcCUyPXgYGWwrMhjSM7Xbtdgghc3Obv+VucHwC/uAMq4DtiEHvp6oMhth2AKoknfM1BWRMj1rt97l0Q==@kvack.org X-Gm-Message-State: AOJu0Yx9/AIGcszeso9pPChp86jem09hqyGk29HhM8eOXPx7+4Bth7J3 6JNT5BW7ft3NohGqvtUABOrzR+s0vPOi5YTmPLHXuNCmk+ZAoLAjrEcj3zi7x6c= X-Gm-Gg: ASbGncuTyKZp5DGanPB2lkgzdw3dkn7Vpu8hCpQ5w9gcGjj01Jhu5/VM22mQlNnWzPl wD9ojDhhYTJhWy52mqF+PIrvQ9cQ1hhWsz7wi7wS/u6aBW5C5R5rgC/cH8R3ZJO03F3HpfgPpks z+Ax+R4hR9SfqDOARNaZ8u/5CJsiR3vJL7Chk7Ej52JNLOXYntIrh8I0KL3bo/C1DMxNsefjiT+ 5iCVGBsxRLNKMGCHUaE4gLbLsWy+Y8OX5U9qftKF8uvVEr+qyeoXmZSMfkDBs66AkSUZPYfwts5 eJ5dx3CvlDe9QASfwOsF8lvLtSoW8DVMM6YfGBhTBo/m03RS2mRYz3HFGJHvXj2sOw== X-Google-Smtp-Source: AGHT+IHABMwtjqmmieKI3RgcYrIM7iJvexJ35Gwmv62BjCpUbJQAiujfgxfk+8VnN0ON/EEnhjbz0Q== X-Received: by 2002:a17:902:ef12:b0:21f:53a5:19e0 with SMTP id d9443c01a7336-22ab5e28003mr95050925ad.12.1744182430953; Wed, 09 Apr 2025 00:07:10 -0700 (PDT) Received: from n37-069-081.byted.org ([115.190.40.13]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-73bb1d44800sm565754b3a.37.2025.04.09.00.07.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 09 Apr 2025 00:07:10 -0700 (PDT) From: Zhongkun He To: akpm@linux-foundation.org Cc: hannes@cmpxchg.org, mhocko@suse.com, yosry.ahmed@linux.dev, muchun.song@linux.dev, yuzhao@google.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Zhongkun He Subject: [PATCH V3 3/3] mm: vmscan: add more comments about cache_trim_mode Date: Wed, 9 Apr 2025 15:06:20 +0800 Message-Id: <6a27dbcfe0c3014261380baa111adf3a7aa15847.1744169302.git.hezhongkun.hzk@bytedance.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: References: MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 19BF2C0008 X-Stat-Signature: g93kj38jarunyn8ej1bj7pps99moi3qu X-HE-Tag: 1744182431-67693 X-HE-Meta: U2FsdGVkX193Gh87ou/KP1WCh+j+moyMOpaZAmN7Q3in6OHxO0UkddrGK8mHp1Rx55hTgjVT1EkGE/Ar7HZv9wYAmSEFlP62R7mtDtSVjhT/mpsvnFYV+to3WB7vutWjWzofZ/wiJ6sqL8Kcz/JujsxiUySnhnvYOpeK6EvVaCIPq2GWMABOFgNC3U75gIhM89zZEvqAAS/ZhTpEPosbhMx6S4t4j2bR9h45F67So0J0gVPavxHDRV5mHbbQ8HNyjBdxuYjZZtwfR6mxkUtfhGPR9LXQ5kBk+Xo9i2DRhQzM3P1YHkGFwDJ1Ktxm4N5OlKqX2H0LSUFtH/OxdRjASmL3Sb4XwEenlmnf/thag89bqtrnLm2Vyf4hLL7j9iZJcAUz7a/G7nfVtcnu/JIdTgqffj4OyaF/YRo7PEr+VkxwW8jz1xcX64OF8unPjI6l5b/yEt8N/dD/i6iQv4/25aoy2B2iUOg2hrmEZWK7lfu04tmBf1a+ghamB0+Iujv5wOn5QvRVGjAlHnugPWo/OY7GdFNeuLINOtJf+PoDKBbps/iDSOpEf1Zt/+txubrufNeAsXVJrJsOdSW/xqdxccsJ/lAND+0E6Aw61R303hcAYI00BlRZFSh+wmb+5zLyKtO6OgA/SIX7ZeMy43UayDHQmTRoikwXwnMcvra6dIDR6KkpXg5GqKsHeF7KzT/TYWrrSAOB/pIyQXL9ejQbtdbtNYkXo0GXYTS5PB/wIuc3ZpJg3U0wwfABT50gfHJ2fzse4WkPr73hMmnzl2Sun0nKsK4YAd7y80YPnPJ36DK0nGC6aAtjqBlgNG4Vh4k2z51yYmjNCbuI+PIE8iTP+eJCTsk55laJaDnDj/fCMqJ8KCCi1rmSO9BolrKkYmBk3GuofS/uZSUmg0RvKgR2xDtRpOC/H7jR//jzP6ubpGAu240+VBAp0c0Bbb3qJEcZoOZXPeOvFpFtJ5sOAKh fcOH6ECP WdmDVVzFnMV7+S6CTDP2hBkTd7BbH2r8TYSF3Ls2GnS3DjQJvOGZCnR1iYqWFiGAlxQc32wxXC4h41WyOQCd9cNGOQ8lcYmYGUmUDgqKpkZ+qVbWg6543CJ1XHuMxIIzxv0rLgYqt/R0KSEM8BRk0XDlNx3GtWCgzOpzr1BYTh7BAcOXLc17QMiDfuWtyCjhDj1myRQGKx3mJwkNth6AS4ULzK70X8FqOM+IVPa3NRh7ng7Z1JkTGsBPfoPZsJxKurD5amVEAxyhD7fSWZmRhqkafMozeHtZ0JMnCv/cj1OhAIlnNuS4xrABKOKRo5Ex/gv/7GZttuV/7Yfe3/ZzoRWWWsL51nEXZnbDWa4wW3qJCJvizTIXaJeQ3R6Q7LnIUikyXjEvdscWAx27UjH927RrQHyMrrPsvr3o+Z+hFpVrFSqwLMout86scHXnS/aVqpDgsm5UBp/KIOV8/+EGKfwc4iA== 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: List-Subscribe: List-Unsubscribe: Add more comments for cache_trim_mode, and the annotations provided by Johannes Weiner in [1]. [1]: https://lore.kernel.org/all/20250314141833.GA1316033@cmpxchg.org/ Signed-off-by: Zhongkun He --- mm/vmscan.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mm/vmscan.c b/mm/vmscan.c index 18a175752b57..ffa8a7a97c8f 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -2530,7 +2530,8 @@ static void get_scan_count(struct lruvec *lruvec, struct scan_control *sc, /* * If there is enough inactive page cache, we do not reclaim - * anything from the anonymous working right now. + * anything from the anonymous working right now to make sure + * a streaming file access pattern doesn't cause swapping. */ if (sc->cache_trim_mode) { scan_balance = SCAN_FILE;