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 1D4ADC25B76 for ; Sat, 8 Jun 2024 15:53:29 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 66DBF6B0088; Sat, 8 Jun 2024 11:53:29 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 61D736B0089; Sat, 8 Jun 2024 11:53:29 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 498376B008C; Sat, 8 Jun 2024 11:53:29 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 25ED26B0088 for ; Sat, 8 Jun 2024 11:53:29 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id B961C1A0ACA for ; Sat, 8 Jun 2024 15:53:28 +0000 (UTC) X-FDA: 82208166096.02.73A343F Received: from mail-pf1-f179.google.com (mail-pf1-f179.google.com [209.85.210.179]) by imf01.hostedemail.com (Postfix) with ESMTP id E68F140003 for ; Sat, 8 Jun 2024 15:53:26 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=VAZ5DAHi; spf=pass (imf01.hostedemail.com: domain of flintglass@gmail.com designates 209.85.210.179 as permitted sender) smtp.mailfrom=flintglass@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1717862007; 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:references:dkim-signature; bh=b9VRrAeGIH91nbJ+l+6EogIiaTtVPhZdGtuhQM+K29k=; b=7RNx+CedpIR/MyKgPCakYm3430kPF0nQdIx6i7zEHHbW/fe4K6w7qlzno0dcLtIWXMP/Ik ixEnUlOL+9rqC9kWEtGkUS7n+DwFomEI/yEd5v16C+1ogDDzeDO4j7pw6rNDDS6RUVH4bX 0wGtfQw+taRYbRn2cKj5L5nQTwkrv7U= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=VAZ5DAHi; spf=pass (imf01.hostedemail.com: domain of flintglass@gmail.com designates 209.85.210.179 as permitted sender) smtp.mailfrom=flintglass@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1717862007; a=rsa-sha256; cv=none; b=FMCl+H9drA/IKaWL24K6XO5T/pi3hGps8LK87QbRe+TiLe4So/bKHT8pffbcxKUVglUy2A CIsHVBRV8jbT9yNu8t8dhq1k7iPl/r/1Zo4vvIGKkySVNVSTCHgybcMFKa7l6AHgyRyAcD 0h2pu0OMJiY5WSHQDwfsN6SUydVUUCo= Received: by mail-pf1-f179.google.com with SMTP id d2e1a72fcca58-70421e78edcso693135b3a.3 for ; Sat, 08 Jun 2024 08:53:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717862006; x=1718466806; darn=kvack.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=b9VRrAeGIH91nbJ+l+6EogIiaTtVPhZdGtuhQM+K29k=; b=VAZ5DAHiVc3ZmhyAmxz1JAYwasonXfp0Y2DAz46ejAoob8V5gMiThQRF/iBFlsPCxr yR6q5+rXvJoUV8p0iEy7kEIH85w6tWzZkbJRx9LWWupIYi82xxZ2jcGiEImuOB22OfeZ dn4A+8uk5J5J4sPMXSb+zanin1sOKHlHozxsuMvgLnZnuR0SGgwi4pwfEJIdgLkxMHbP DAYtS1BUSKNTO0eOEFySEkhFEQeq8sAHdjbPWJJjAPyVugE1MKkk0BSVIOyq5ZGhLMkZ 0ehZSfMzdfVXmB5N0mA15DpC9w8KudmCRsILPp1GcKOZyRoxxu6wFKYqc/xK0KguXeys HTMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717862006; x=1718466806; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=b9VRrAeGIH91nbJ+l+6EogIiaTtVPhZdGtuhQM+K29k=; b=X8PXXJmwmvylRlYjL6cYGh1SQMVN67+14RAkXFHSaWZ9T+IsgofSlymn4FE5gTtonQ l+By72w/6lHwFQkicYLx0nPOGU0idqPn5mqcdWXSPDonDNIn1FrLQVu1hh/EAYrdpqjH upunTY1gRBnAm4wDy7OtCYNFMEreyCkwI5A95PJWZAqJLSBWMnkMt9Ber68kpUXWX9m8 eTrpqkNWZFD2ITnEq6VVnkKUnI1sUwtOgJLB0Gvt5Es2V8sDPRZ+7LFBNhKJBHtMOLg3 HVu/UZI5IJz67735hBn7LtJypu4TM5xt/LDi8gvO4lM3twACGYJDbNIm5sRJ7I9NcFxE 3E7w== X-Forwarded-Encrypted: i=1; AJvYcCXXJDjy4adv2IMvS4mip36DOMK/ThX7DL2IK2Og0Q7UO7O9XkEk4RbWBg2OflIYH8bPpDAXHW80oi3489X8NzQpyac= X-Gm-Message-State: AOJu0YzaZMhVn8Zq1k9NgDFEHQbTSIyMoAT/tB/KZpTajHGLh82a2mrT 8RHtrXYQAsVAklm68JDydcA3fsinVo8HFLs9JYq+UlA5FdHASx5ufMeZMVBp X-Google-Smtp-Source: AGHT+IFpTRsmPHwSEMhSYb9qhAwknvo0q5iq6AgwuXLmiBVIA78tWwc33X4OMQqkuR/sfFDPXkrUAA== X-Received: by 2002:a05:6a00:1396:b0:6ed:de30:9e43 with SMTP id d2e1a72fcca58-7040c754e29mr7200418b3a.32.1717862005667; Sat, 08 Jun 2024 08:53:25 -0700 (PDT) Received: from cbuild.srv.usb0.net (uw2.srv.usb0.net. [185.197.30.200]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-703fd4d9d8fsm4335209b3a.149.2024.06.08.08.53.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 08 Jun 2024 08:53:25 -0700 (PDT) From: Takero Funaki To: Johannes Weiner , Yosry Ahmed , Nhat Pham , Chengming Zhou , Jonathan Corbet , Andrew Morton , Domenico Cerasuolo Cc: Takero Funaki , linux-mm@kvack.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v1 0/3] mm: zswap: global shrinker fix and proactive shrink Date: Sat, 8 Jun 2024 15:53:07 +0000 Message-ID: <20240608155316.451600-1-flintglass@gmail.com> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: E68F140003 X-Stat-Signature: j9atuzsapmw93my8ryk9o4co57nfn6yd X-HE-Tag: 1717862006-156261 X-HE-Meta: U2FsdGVkX1/j99gInvWaDrGbHCLeXRfja4X6AZuG9vjPlslWrbfqwMdnmSK9uOWsAwN8Sg83Cbj4YSHzGSXWrVgchn/rM8g0oFBeRjunjHv/dvRb9SN89MNbFhTvMFxcYI7OZ3a4yGYLYQGWylDNHMAsYuyma0g4Ck+1kqOaMWzSOvc/d/NbU+oy6FrdcuKygU3DqWHH7+3zlOl/7lxVGjrY1T4LkfL2BHB5kGR7nf4CJborxpm7+oKLFswk0j1yk3/M+dkxLcU2Eiun/muUtn+zN+hfsZVPH2nWlS05ZK2ELPVznYLuTpJ0ZR9UabXkQnM5u9Zlaj19pnEn47+Ug2jwTiELSzA1NFdgRwuN/sBWRIXbI8KL0P8YhWTpwoDW8LZPS6lCN9oyyyZnYCxWv8rfDoBVfSyBezQ9iCzQpmqBBXSA6DbvObTtKb9Fqt2Zgtigq1ooafCJjhBkLRgHIRONTmOvBlEa0uwtSj7updQ5UA/yqgPIUu35jH7/T0vsnCNSyY148nTWOicUdM10R35yEWNLbEZzn0pgbbnpO/ejEDqOV2+OE5mgoK/qBTdjOzMefPd5UHK2Y6oXx69BuMguU5HsZw1OR9gUmHHHVX4avGefjRB24k3EHnZsMuNstWRWcSprqsKVdUQEbjV4N7avBqzUmwl7w36fb7YXXRwvFCvUaKzI45OXQS5qrREShBPalz8PRsGapniT+CQkxAzulvSxiNCiv+Vb1980lVHF5P4JN5AqzydvrI+1zyY28HQCT+TczCgNC9HjG1uqG/PlBR9t4ZIgDuBlbm0qd0XO5s79KCieXMLUWnaDsF2EaucRskBPwhcZfJgkM+2UTdAZb1muD15I47vDQYwX9MZCUAxQMD/rcV0KdNxLxhpIF1A5fJ/Zuq6s4J5wyU2z/vxENJZnbD/nRjC7MMAj6KcLOiiOWHSPzQQ758SPoKDFt2m+R/Fczph9FY2h69C NPbJIJjz m8zPWsNCEooeVHF7N7JZYSV62Emi+Xk3sgjd9x1z1991+WS/NHXe87lbA6Fdl11fL/anwx0dpFD7PB3tB+Gm/rIT7/lO3l+/2f4lgKsYGcpOLJVaXAgI3Om0ncsObrtmmHzV/Dawvl+CzKU8W9HKlyV/7UcCE6+R9BeXDvqQ7gDgk8Z9BtKvrJengRqqo4zOUNAYgUMKeWpKrpK7SW02cRPGutHjJbULveFzHYqho9BfvTqCd0wO1PsB6S+IR1ZNE+SFESqAhN1QGBpEPLP9nTHsiGQKEEh+d7GQ+y12vFK6PBHazdBWWTWLyryvLKJC1Wwudw7qflbwJ17JJHBRay6Usl3FeOQs62HQsd2AHftuHWQLWtSa9Exhezeg4SftxgZZe7SwMmo7WqQmZ9aBiykp5hE2VUu6+kdCm0DpP+kCrWuE= 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: This series addresses two issues and introduces a minor improvement in zswap global shrinker: 1. Fix the memcg iteration logic that breaks iteration on offline memcgs. 2. Fix the error path that aborts on expected error codes. 3. Add proactive shrinking at 91% full, for 90% accept threshold. These patches need to be applied in this order to avoid potential loops caused by the first issue. Patch 3 can be applied independently, but the two issues must be resolved to ensure the shrinker can evict pages. Previously, the zswap pool could be filled with old pages that the shrinker failed to evict, leading to zswap rejecting new pages. With this series applied, the shrinker will continue to evict pages until the pool reaches the accept_thr_percent threshold proactively, as documented, and maintain the pool to keep recent pages. As a side effect of changes in the hysteresis logic, zswap will no longer reject pages under the max pool limit. With this series, reclaims smaller than the proative shrinking amount finish instantly and trigger background shrinking. Admins can check if new pages are buffered by zswap by monitoring the pool_limit_hit counter. Changes since v0: mm: zswap: fix global shrinker memcg iteration - Drop and reacquire spinlock before skipping a memcg. - Add some comment to clarify the locking mechanism. mm: zswap: proactive shrinking before pool size limit is hit - Remove unneeded check before scheduling work. - Change shrink start threshold to accept_thr_percent + 1%. Now it starts shrinking at accept_thr_percent + 1%. Previously, the threshold was at the midpoint of 100% to accept_threshold. If a workload needs 10% space to buffer the average reclaim amount, with the previous patch, it required setting the accept_thr_percent to 80%. For 50%, it became 0%, which is not acceptable and unclear for admins. We can use the accept percent as the shrink threshold directly but that sounds shrinker is called too frequently around the accept threshold. I added 1% as a minimum gap to the shrink threshold. ---- Takero Funaki (3): mm: zswap: fix global shrinker memcg iteration mm: zswap: fix global shrinker error handling logic mm: zswap: proactive shrinking before pool size limit is hit Documentation/admin-guide/mm/zswap.rst | 17 ++- mm/zswap.c | 172 ++++++++++++++++++------- 2 files changed, 136 insertions(+), 53 deletions(-) -- 2.43.0