From patchwork Wed Mar 19 06:41:43 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: jingxiang zeng X-Patchwork-Id: 14022134 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 9B531C35FF1 for ; Wed, 19 Mar 2025 06:42:14 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 74585280003; Wed, 19 Mar 2025 02:42:12 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6F4F6280001; Wed, 19 Mar 2025 02:42:12 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5BD85280003; Wed, 19 Mar 2025 02:42:12 -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 40145280001 for ; Wed, 19 Mar 2025 02:42:12 -0400 (EDT) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id D06D6AC803 for ; Wed, 19 Mar 2025 06:42:12 +0000 (UTC) X-FDA: 83237356104.27.46A530B Received: from mail-pl1-f177.google.com (mail-pl1-f177.google.com [209.85.214.177]) by imf28.hostedemail.com (Postfix) with ESMTP id 164ADC0006 for ; Wed, 19 Mar 2025 06:42:10 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Q+26ZgiT; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf28.hostedemail.com: domain of jingxiangzeng.cas@gmail.com designates 209.85.214.177 as permitted sender) smtp.mailfrom=jingxiangzeng.cas@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1742366531; a=rsa-sha256; cv=none; b=pwA5CLCK1zfHhM3P64VQ/Mm8XykZFJNywVVYLZLgW0K8u0GYuCoVWjEvZDX9rJWQRpyQlK bsc2hlRcLI2TM4h0URe0mPa9grtGFTla85FQAILrJ7Lf0g0fLvt7tOxfZHBTDsU0c1bAjk gpY1P55ak6sV94PAwitUR2TCt1f1iUs= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Q+26ZgiT; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf28.hostedemail.com: domain of jingxiangzeng.cas@gmail.com designates 209.85.214.177 as permitted sender) smtp.mailfrom=jingxiangzeng.cas@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1742366531; h=from:from:sender:reply-to: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:references:dkim-signature; bh=LHND0BFDJrs+LhTa/QjvhqDJDaewhVkAVpjoUp3x2hQ=; b=WEFZ3WBLgrdQ4Nt9QPoVN6XlvuwGFbi1QH1U8paTq5PVnKIjjognaNEVITOmPptytoF3Al LcE5lVcj6XgiIgas03idk+glUn39V97bUHCcZQKTRQ5HzY3KxNgdRKgny1zSyKJc2o4voe Yn67yTnm4PhDXeheiejB8y9rqk4f14g= Received: by mail-pl1-f177.google.com with SMTP id d9443c01a7336-2243803b776so13118425ad.0 for ; Tue, 18 Mar 2025 23:42:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1742366530; x=1742971330; darn=kvack.org; h=content-transfer-encoding:mime-version:reply-to:message-id:date :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=LHND0BFDJrs+LhTa/QjvhqDJDaewhVkAVpjoUp3x2hQ=; b=Q+26ZgiTi7PVmYp+jY7OjZbzmz2orx57tcbQm9Llxr9OO4XnX+SyH0zR/G9GVuuw9i 8GLwdsad0bh6NulEKW/4fXMyq9sGBOxA/PoXVcFwgDvXA86Y9HyxyFU7SeF/Q8cdw9bH AktqHkVY8U50Az0UeigESmtsBukZl6+9TukSNWBWG2USDjkG90Qy9yCtyEAjatraAOJy of7v3Bk/tP5XnSrvIwRX6AS60lATvskDNaeXgh3frCsYHuNgpBclSM8bQ3VBS+MGA3D4 KWiVdAYzr8MezvsiUPzl8kL+JmGX1XqlnYi4Q/6hIXb9namIYft4MGm7vtyxe24QMwRU 8/YA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742366530; x=1742971330; h=content-transfer-encoding:mime-version:reply-to:message-id:date :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=LHND0BFDJrs+LhTa/QjvhqDJDaewhVkAVpjoUp3x2hQ=; b=eBo5281nLKLmtYCdMrBYTwR56ktsHXugPYffGhjSroRlLsbGgNzLYrRtSHa/MepC6c esfEpH9lT+TbrLKckvYEQfvaxJUqXQeESm41hczU0nXj79Z5yG6lBx8Og8KlomzeCwge xUrWgsd6nhFpgkZF+L904PAUHe+FtkUTLnwcuuSlBDUQqLJzKKY4wgkJ5A9Padxu/X/V umDdIfFIiCDCWqUvIMsbzqyUr2llB7FYt97Je0Rf7+7Nd/m9qCeGHtnMOnxE1hSMgphd 6TmuLSzAAlxiVoG1q8FcIG99dyTJpUeGaW8AP/bE24G9yO1dfzcSOkue0id0bCItp7R2 Ku2Q== X-Gm-Message-State: AOJu0Yz08N7j59AJ19GHrpbK6JkuUsPP+21Uaby7OfDzdE6Vi6dfDBXt NbDOEjXDHoaS7zLI5u2oHbLJm8ez+N/VarOIKWhDMg6EJmtfV2kp X-Gm-Gg: ASbGncupF+fnNJfnZhP6vyxSqxgyHobq5MABLyFf/sNrJPOEpTThd3aYpy/W73lEXr7 sE0iP8rzP6LtMT99fxQhW31XJQmGqjszQ4iE9wIWi1LlAO6cHrkzFDWnNXNyD4gRkBZkKjnTii7 j7F1JuqQdwYmCPeE8wLDVH5rCc+jiNmJjN8WQxTl6jA45SYjdEnwIqSMD/vwKGj60GghbmF8rk3 XCW4pVhGUtGkCEy9HWhSZRtZuIGs8DiN6UW0jMb2mb5mIDdpzIgBy5E6TsfbiT4xztVhPdv2Rxy 2JqGG/n2mPnFN2jwBgUVAgjl8nBlx09qdEyMFjaaL4jIlUmiTAIyActvZYSUWHGCxZxjp4CxDOu 6ny/0Y2mKXpKYMw== X-Google-Smtp-Source: AGHT+IFktIe+A5IhTeUDyIJit0JKK1UZdcIDVORGTdzTwsLhLw/GycGscvhNGbqoJ16QaVO1cH0eNA== X-Received: by 2002:a17:903:41d0:b0:224:24d3:6103 with SMTP id d9443c01a7336-22649a80c3fmr27939045ad.35.1742366529832; Tue, 18 Mar 2025 23:42:09 -0700 (PDT) Received: from localhost.localdomain ([14.116.239.35]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-225c68a4876sm106191835ad.70.2025.03.18.23.42.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Mar 2025 23:42:09 -0700 (PDT) From: Jingxiang Zeng To: akpm@linux-foundation.org Cc: linux-mm@kvack.org, cgroups@vger.kernel.org, linux-kernel@vger.kernel.org, hannes@cmpxchg.org, mhocko@kernel.org, roman.gushchin@linux.dev, shakeel.butt@linux.dev, muchun.song@linux.dev, kasong@tencent.com, Zeng Jingxiang Subject: [RFC 0/5] add option to restore swap account to cgroupv1 mode Date: Wed, 19 Mar 2025 14:41:43 +0800 Message-ID: <20250319064148.774406-1-jingxiangzeng.cas@gmail.com> X-Mailer: git-send-email 2.41.1 Reply-To: Jingxiang Zeng MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Queue-Id: 164ADC0006 X-Stat-Signature: qqt7p5nd1xdtj7jk7n1biwo3nkdw1exi X-Rspamd-Server: rspam06 X-HE-Tag: 1742366530-544366 X-HE-Meta: U2FsdGVkX1/hGM5zKGIciyGlGFai1Gz3Zgc91WRQ68uFMxJ3vAhM6G7BLxsXytUA4oIYLW/hfSfQ+o1aaV0RLkmeQGo3uh54qC27weiSCS2onNq1GzqmaVoasmBL79ZaRYQYsEVXYgtHlEbGeiVUNFf4FK/MayoSJ5hf97c9RRJouW3Eme9DUD6inAGRLwRP40Fyp3Xm9cFKk3ESxX7KiFmAMosEKXJ+M3H3bkamTy+xWXqxl893+Ob0HWl/UlaKYND4Udg79Doluv0NbCfyW1ePru991IyoPQNfRSZMCS66SnHdstdM0jqdqyB+hTkLQ36rQ3TEtZ9FoU5gaq5YB6CiJhGUY4P7Vj7BNd+iEuRCd8lL656s7o0VAhGulspjr+XnYK/yM+7Eb3bkiDxqkjYBYzYE3uY7USk98M+8mHxlLisj5CKhi7xCLSeSAqVgNE8DU2cvZCk595+u6CgaABXJIkN4XIT6gA5vH5I4d2s3/ZFp0wRp+1EeIoy11ID8O6v8n9Mt91rkYzuDbhrKoQspr4eG4GayZK33Lf7da/KyF1BI23MzNUU5GC3HhEIs7FNK6HeEnmsy1kUN8JRJYuC3fH5JNL5y/TcMR96IPaE6Lr1QNUFGkVF1fREE+ti4Z05m+eKx0TQyONl2EAer+F605PikSYNa+lojtfIafZ5v7M92izdVG+3ELTUmonMx5NTsofZSXueTpaJaubQK+KSx9EuUKF2shO+29SbETfjJp3QknJa9mCkEvzTuAwWpuAuGnur8pwZy0JFnPWN/gq8pl/4IHlCJXmbnPAVHmMu21NhDjWLq6YBvs7NAmzGUebI6vIpDtsuc4BMcOTrdOMUjZpEM855x5dqyyFxPLiHR3YsZpnOikBA1DC+iwqWnl80S4idfmdcCgDRWWDTtg0Yitw69JMMuCEGrUvbtUa8aBMqFFm+QtnbGbxmo/dQ3srjzGL+9ZrLhD7brpQl Ca1ZkDWs nBGG9xp5GGnGCKDbpM9XYem3nWWPYU/MGXlwDeZ7OK3GVL4BGREGxXFP1ans+KDtnkSJzShOs1YaeW0fV4mQmUVigxZu6LJLNG5jsz0sg7cYkuX+NjJP8jo5XRB9eMh2r6y0W62cdhXUZV0wv5Du448iCF2oA+TQAUrXG+p/jpVdarC4YP0y6NkEnsYUdAZhnH5LKm5y43GFz7KDXP98MHMfixxH5kH4dyj4T+WTGqz46zR1GxmI2gqoDWsMCsPay8raQoqldKVWHV5K1h2sXsM5dd+s69wOY7Erv/YeSbnDNSML/s2LfPZgK9L2OK/8BY3bOX6e4kFODyLdlRZgdGDP0ud6PyjEtgq+cpfOKPHiuCgjMm6DdbadTOozzRE1knYGMWZcpZnYJwuAerfoCQmw39Hj2a2zcXu7+ktFJ9x9lbQDlPScBblniza1ViVJfWxi/S2tC3Cu9yfC5ZDaEtNS/aCRNyfKZDo6PwmjN4QQ5B37yGjRqsx9Zrs4E2jCsFyTtdqPDZ/cu3JpzFp2wfQ1+XhnpTcrZfgdVv6Gw4yma/bKKkOEeyRPtLkaUzshKwJoOn+fKTMSZQN856CRIH8i9qCqtR3ujvUBb64iQvGswzZZRaJJIIRuAlS6szvcGCCse 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: From: Zeng Jingxiang memsw account is a very useful knob for container memory overcommitting: It's a great abstraction of the "expected total memory usage" of a container, so containers can't allocate too much memory using SWAP, but still be able to SWAP out. For a simple example, with memsw.limit == memory.limit, containers can't exceed their original memory limit, even with SWAP enabled, they get OOM killed as how they used to, but the host is now able to offload cold pages. Similar ability seems absent with V2: With memory.swap.max == 0, the host can't use SWAP to reclaim container memory at all. But with a value larger than that, containers are able to overuse memory, causing delayed OOM kill, thrashing, CPU/Memory usage ratio could be heavily out of balance, especially with compress SWAP backends. This patch set adds two interfaces to control the behavior of the memory.swap.max/current in cgroupv2: CONFIG_MEMSW_ACCOUNT_ON_DFL cgroup.memsw_account_on_dfl={0, 1} When one of the interfaces is enabled: memory.swap.current and memory.swap.max represents the usage/limit of swap. When neither is enabled (default behavior),memory.swap.current and memory.swap.max represents the usage/limit of memory+swap. As discussed in [1], this patch set can change the semantics of of memory.swap.max/current to the v1-like behavior. Link: https://lore.kernel.org/all/Zk-fQtFrj-2YDJOo@P9FQF9L96D.corp.robot.car/ [1] linuszeng (5): Kconfig: add SWAP_CHARGE_V1_MODE config memcontrol: add boot option to enable memsw account on dfl mm/memcontrol: do not scan anon pages if memsw limit is hit mm/memcontrol: allow memsw account in cgroup v2 Docs/cgroup-v2: add cgroup.memsw_account_on_dfl Documentation Documentation/admin-guide/cgroup-v2.rst | 21 +++++-- .../admin-guide/kernel-parameters.txt | 7 +++ include/linux/memcontrol.h | 8 +++ init/Kconfig | 16 ++++++ mm/memcontrol-v1.c | 2 +- mm/memcontrol-v1.h | 4 +- mm/memcontrol.c | 55 ++++++++++++++----- 7 files changed, 93 insertions(+), 20 deletions(-) Nacked-by: Johannes Weiner