From patchwork Fri Apr 5 01:35:47 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yosry Ahmed X-Patchwork-Id: 13618352 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 AA37ACD1292 for ; Fri, 5 Apr 2024 01:36:05 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B52026B00B5; Thu, 4 Apr 2024 21:36:01 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id ADC586B00B7; Thu, 4 Apr 2024 21:36:01 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8E1656B00B8; Thu, 4 Apr 2024 21:36:01 -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 5D30D6B00B5 for ; Thu, 4 Apr 2024 21:36:01 -0400 (EDT) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 274991602D6 for ; Fri, 5 Apr 2024 01:36:01 +0000 (UTC) X-FDA: 81973762122.14.EBD8723 Received: from mail-yw1-f202.google.com (mail-yw1-f202.google.com [209.85.128.202]) by imf29.hostedemail.com (Postfix) with ESMTP id 59AC212001E for ; Fri, 5 Apr 2024 01:35:59 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=r+G1woGu; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf29.hostedemail.com: domain of 3flUPZgoKCJ0VLPOV7EJBADLLDIB.9LJIFKRU-JJHS79H.LOD@flex--yosryahmed.bounces.google.com designates 209.85.128.202 as permitted sender) smtp.mailfrom=3flUPZgoKCJ0VLPOV7EJBADLLDIB.9LJIFKRU-JJHS79H.LOD@flex--yosryahmed.bounces.google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1712280959; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=LZ1QXrjwhIal4gIkbl9SlMnvEbBP+lXyDn0RpoWpImY=; b=FEc4HCZyu2qj8ym8CSDiUX+wAKnMclCI/Juk2aY4MsSpWYhtamNWJjTvBpClFeW+eAkRBZ ThIZk1s0fQ+9rcDzW4vdwhUUAgdqqQjjTwAQSC+nyHCvnIhHyrJml4c/KQnilrVnxlXF6q Ja5wG5jb+Vfs0JSLFjambELKGuyyFNk= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=r+G1woGu; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf29.hostedemail.com: domain of 3flUPZgoKCJ0VLPOV7EJBADLLDIB.9LJIFKRU-JJHS79H.LOD@flex--yosryahmed.bounces.google.com designates 209.85.128.202 as permitted sender) smtp.mailfrom=3flUPZgoKCJ0VLPOV7EJBADLLDIB.9LJIFKRU-JJHS79H.LOD@flex--yosryahmed.bounces.google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1712280959; a=rsa-sha256; cv=none; b=s8NkZc1eusm/AaDyjhCNp1Mw06/6qQN0XJmNQwQ34SKMgw1yJk0VhtR22XcbWwiYF4JHKD CUZk67kGfXAwBGPRtwTpCK2lx1BrfQeHLePbmOaD6/UyujdU90xG/TaZmrsJPloHxjbvnL qydbsWxoE18YHeeUMfTSSEoh5HfJ/PY= Received: by mail-yw1-f202.google.com with SMTP id 00721157ae682-617bd0cf61fso19984197b3.3 for ; Thu, 04 Apr 2024 18:35:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1712280958; x=1712885758; darn=kvack.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=LZ1QXrjwhIal4gIkbl9SlMnvEbBP+lXyDn0RpoWpImY=; b=r+G1woGubVqf4g0oyLp8ZstRQT3bVwHIOFoAbdmi6E60AqJASLcZ/mFHY1xL6KwKPG 4fPzzBaATDMmMxqNYoEEroQkGqNA1fw3DruJkObriude2spZo5ss4zNLBnYF4cYzhh2X toj0OnlsIJGVrctOwtVSNAuvnglZyTnqvWqYv8RiXDMDojPnexzSIL2IpEwiLVMH6ykS SbItFqTniPFTENY9diyEoPcvSyuwKIOlZPeDkk5geJ/aIZzJ8MQ5qnCY1FVFOgzpGpwd vmIlttWVouy0oecx5HwnQqZ6+AkhV681LHx2ferpKwoqV5Vt6eSmyoUjLu/3rga/amW5 Sjkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712280958; x=1712885758; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=LZ1QXrjwhIal4gIkbl9SlMnvEbBP+lXyDn0RpoWpImY=; b=cykOgUWkaozrTPUNVS1X+pIRr/5miQYNr2EoQUkNPMPJ0yIJg6Fp4qrc3ZK+SqOnpq JRdVK44w1rKMrfDarzbZFI5P39uHZfV8bek3wJxlNEMkIfkYw13U2JshbJD15wQu+Kf0 UPblR9AcN6aiuAB9/x1KUGCrxJrXjuJ/NtEutR5T3ZHBtQQXmruL15j+c/RnYcO6bNwz DToQDQgyJDPA0BUQMJW+LiFPbWWpi+Iythgm/cpTNGSTqXuiW6kdpBHe0FAjtjJpwze+ 6oMmPLWNvLH1hs82aq8LNHaQJU2aO1HVRf+UaEhZBhR+fovTNtmuX3juVtWutw8ZrEox DRMQ== X-Forwarded-Encrypted: i=1; AJvYcCVlylfpnhDG52zZM77TKwJiezfkop5PR1vJ+J/IhqpSA4ECFQwsLJpfCP0UyR3QbskpcFqBRoPShwC7Fmj0RVpKG8w= X-Gm-Message-State: AOJu0YxtAXFtutkNxjmcMJQsQ+1JDQml/0q9pmfVp/3umkh80P43QR6n qwBCQ4efjx3J8amdG1XyOBD82E5J13q9Bo3I49MgLBU716krvmLDzJMUqCE0XCoyGmthCjTFdMr o0VtlnFdvwazhr+BdQA== X-Google-Smtp-Source: AGHT+IF08nd+KBQE70LXZSIBvDA4LHuHsKmvLNuPmdBMBqFS4+vTxuqxYNRCiDtgu7m3HgM9JubMSqb0OVDe26Bd X-Received: from yosry.c.googlers.com ([fda3:e722:ac3:cc00:20:ed76:c0a8:29b4]) (user=yosryahmed job=sendgmr) by 2002:a05:6902:2b05:b0:dc6:e1ed:bd1a with SMTP id fi5-20020a0569022b0500b00dc6e1edbd1amr351076ybb.2.1712280958518; Thu, 04 Apr 2024 18:35:58 -0700 (PDT) Date: Fri, 5 Apr 2024 01:35:47 +0000 In-Reply-To: <20240405013547.1859126-1-yosryahmed@google.com> Mime-Version: 1.0 References: <20240405013547.1859126-1-yosryahmed@google.com> X-Mailer: git-send-email 2.44.0.478.gd926399ef9-goog Message-ID: <20240405013547.1859126-6-yosryahmed@google.com> Subject: [PATCH v1 5/5] mm: zswap: do not check the global limit for same-filled pages From: Yosry Ahmed To: Andrew Morton Cc: Johannes Weiner , Nhat Pham , Chengming Zhou , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Yosry Ahmed X-Rspamd-Queue-Id: 59AC212001E X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: dapmmuu3qx9dz4tn4j57iu8q45hu4ra5 X-HE-Tag: 1712280959-669335 X-HE-Meta: U2FsdGVkX1/cmRrc68KKFLrV38GOmMQ6F7nNVmVOkI1CAqGuEmBFVzNWe5UXPpNvfCXap2LwVT5/0LS2UXLy7VQ9DPk97rJRBVnrOLA2et2iH09Gu5ilWYDw/bM9ZTKexrSVvhP7AOo8A/Rlq7jjs4hkD6EPBGDto8zY38JBs4vi4HNRgzes+qOYTMePWMxQx17qSbEhBAoQsqpmbjAW0Rs/E4DZk8IWZu+YJf3cp1hTslnpPeljks+39vTZXb4ON9wrSwi468UAbnfTrmIZl5WaSK2QNQ9QJyEyiA8H4OPgU7aOTlmvG9HvzO4397Op+9R4lD1tgosN3TVLxL7rH7bK1nwIrC9VH+Dcx+GYNkyM3yDJQ2mbdDmOZUakpXN4LDBWnIkH5lC/Z3IMkiBQTPvvER5OX5SB//3zhrJFSB0HhJYcxptMVKKwu1eRP02HXpWgqqYsM8g/63kFuXMQoksMrbDJzJXwJ8VTG8BfbuBI+RYlAon6hNW2vwpBJeklVZ+oyZQ5GBqHF2NEkY0Z0VYKMe8CKyJT72H/PVlj2F1PGnezHapjnn4LxhS5dr8oAPV3VkHMc9OuVYJ4NsgscUyeuDsyfsf6Zsc1+MG2RDehMJpbRHqQ4EKyzeyriU6DHTV/d4l2KUzsaAWvkPRNvV1g0ZDXcAjY0lvOmQT67+3vOrk/YiAwoaPEA39SwjSMchhmzzPI0RCk2RMaa7z4hAqg1oe174c9B5P8Pi8lDZflG2vccDaGCiuaziBc43xcrM7XCksB79/Ee6a6MuZneb/1P7GxfdLtLqkrEhBHhZZpkvYP6Va8en6qGTjX92tVVKFIXL6DXWP0LfDx/Qxu/2x5LYxMWeXM3J/USb9xUtLKCN7QwIH2Y3ZQ0GpUd2xzTJq7YPLnkFe1c5FYf5j1aqT7SnpD7FqTpMPMTRux8Oz8hfF6DNI+Zcfd4FBgqPKVc94mK0mP1jWz7s5ysAA MEDPCdVX fNyI/o5v5c0Nm16/odxhFWQyMiJhdusvPUGV6Xik4/VGlc/f5VQEqVe8XbvRFS7zzwJEBWy3lgpYCqngEAippODgVXhMGZeibM2zGpthth2wMXGjifnEBMCD9+AVkWdeD7u8uRKzzi5fqoYl8bWHZzOFgpkkUvcwoyov75u5QZ2irCyOZl/bMBY350q3lS7wYQ0suU10cspB+/gG2CP+9hAfdNC7ezLKFMnx1wJGXjfK7te/PlcypVaI9NBfVFF2vviAYJd6HUBizN7bfw3w5HUM/lb7kiPGEO4vsNC3jET1uBk2IQ77p0q3dczPCDQCrj4m2+nkWYwv058f4ktHgbT3fSsw/MShroHmQVG1PJsrJkhuxzsUTA8nx7lxnFCkZ7bAsMQN0PUdZN9f+Sp6kpy2kZ96TY/oak14FWFni0M9rYz2tFt5mVzOc2lRwJa1RvdTWXYRSbC7RjczpWzGqtrfiuKUP47DhlJ8KJl1WqREPjbjetqNkHtZQiKUea2YirmAgi7NWkbokfR+NUsM3Ppl3MvE/WOD3sBSTgnPMXTAn0+F5gynAyaXGv3QgfNW+laenvGlesA5AigR/uuqlWmnevlODjk+Kr5hxU+Fn2uyPUEl0bWpN8ctPV5M29r5v1U6w 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: When storing same-filled pages, there is no point of checking the global zswap limit as storing them does not contribute toward the limit Move the limit checking after same-filled pages are handled. This avoids having same-filled pages skip zswap and go to disk swap if the limit is hit. It also avoids queueing the shrink worker, which may end up being unnecessary if the zswap usage goes down on its own before another store is attempted. Ignoring the memcg limits as well for same-filled pages is more controversial. Those limits are more a matter of per-workload policy. Some workloads disable zswap completely by setting memory.zswap.max = 0, and those workloads could start observing some zswap activity even after disabling zswap. Although harmless, this could cause confusion to userspace. Remain conservative and keep respecting those limits. Signed-off-by: Yosry Ahmed --- mm/zswap.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mm/zswap.c b/mm/zswap.c index a85c9235d19d3..8763a1e938441 100644 --- a/mm/zswap.c +++ b/mm/zswap.c @@ -1404,6 +1404,7 @@ bool zswap_store(struct folio *folio) struct zswap_entry *entry, *old; struct obj_cgroup *objcg = NULL; struct mem_cgroup *memcg = NULL; + bool same_filled = false; unsigned long value; VM_WARN_ON_ONCE(!folio_test_locked(folio)); @@ -1427,7 +1428,8 @@ bool zswap_store(struct folio *folio) mem_cgroup_put(memcg); } - if (zswap_check_full()) + same_filled = zswap_is_folio_same_filled(folio, &value); + if (!same_filled && zswap_check_full()) goto reject; /* allocate entry */ @@ -1437,7 +1439,7 @@ bool zswap_store(struct folio *folio) goto reject; } - if (zswap_is_folio_same_filled(folio, &value)) { + if (same_filled) { entry->length = 0; entry->value = value; atomic_inc(&zswap_same_filled_pages);