From patchwork Fri Feb 9 11:59:50 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chengming Zhou X-Patchwork-Id: 13551157 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 2DB91C48297 for ; Fri, 9 Feb 2024 12:00:48 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 76C866B0075; Fri, 9 Feb 2024 07:00:47 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 71CCF6B0078; Fri, 9 Feb 2024 07:00:47 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5E3BC6B0080; Fri, 9 Feb 2024 07:00:47 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 496326B0078 for ; Fri, 9 Feb 2024 07:00:47 -0500 (EST) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 7DF15C1048 for ; Fri, 9 Feb 2024 12:00:46 +0000 (UTC) X-FDA: 81772123692.22.17787F2 Received: from out-180.mta0.migadu.com (out-180.mta0.migadu.com [91.218.175.180]) by imf06.hostedemail.com (Postfix) with ESMTP id 787C418002A for ; Fri, 9 Feb 2024 12:00:44 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=wR6BtmIv; spf=pass (imf06.hostedemail.com: domain of chengming.zhou@linux.dev designates 91.218.175.180 as permitted sender) smtp.mailfrom=chengming.zhou@linux.dev; dmarc=pass (policy=none) header.from=linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1707480044; 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=H8vjJet6cEqjnm/AF8gtjZ0cWAGZljlA0TlT1cQYzHE=; b=vLq+9X4NWNSrdiZ5bjw9ai6kSCYgW+RYhdCfB6j3/Pmc55QSloOzIOYRrD96MCcXTGbEMK kFxWBfr4BEmoH0zVnvT2O0nBEVxA2smHkeqHh8Wg6ECuHCrhHGYQXgOXMl9LKmBLH+rO12 foR03HKN4FGDV/dBBQl0H3QUJy7j85A= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=wR6BtmIv; spf=pass (imf06.hostedemail.com: domain of chengming.zhou@linux.dev designates 91.218.175.180 as permitted sender) smtp.mailfrom=chengming.zhou@linux.dev; dmarc=pass (policy=none) header.from=linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1707480044; a=rsa-sha256; cv=none; b=seZTF1luwzat5PxmpuXhKtHPlCHhWs+XvK6Wklu+x3vE7QT6rSvVeInVZvH676EYDpUd50 qRMHeY6kdlimpjDXMq/R1zUmpzgP7h/YsKO7DPvksBNEGCAZlJk78YUDJM7m4hvvJQ0dS8 ADmLiZ/9mgZBn9AHoaAWyJhk2g7dZM0= X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1707480043; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=H8vjJet6cEqjnm/AF8gtjZ0cWAGZljlA0TlT1cQYzHE=; b=wR6BtmIvXYaNDb25zKYBYPeL0CPBfaQZ6v/7Gr9UKiDDQsSWzzxx4NdEmrRZKajRv9ME6N YsugFwG1wpt+u3qF0D4YGlMz3v4TtSyRVvNUgXu4jBEGgLtudbwWMSYJdnGOcP8klAr4e6 uQsskjmJ2Pdx40q3SmNvSRxSqYIGhG8= From: chengming.zhou@linux.dev To: willy@infradead.org, hannes@cmpxchg.org, yosryahmed@google.com, nphamcs@gmail.com, akpm@linux-foundation.org Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, chengming.zhou@linux.dev, Chengming Zhou Subject: [PATCH RFC 1/1] mm/swap: queue reclaimable folio to local rotate batch when !folio_test_lru() Date: Fri, 9 Feb 2024 11:59:50 +0000 Message-Id: <20240209115950.3885183-2-chengming.zhou@linux.dev> In-Reply-To: <20240209115950.3885183-1-chengming.zhou@linux.dev> References: <20240209115950.3885183-1-chengming.zhou@linux.dev> MIME-Version: 1.0 X-Migadu-Flow: FLOW_OUT X-Rspamd-Queue-Id: 787C418002A X-Rspam-User: X-Stat-Signature: 86obj7jhftgi84t4fattnr7rns1czp7r X-Rspamd-Server: rspam01 X-HE-Tag: 1707480044-152981 X-HE-Meta: U2FsdGVkX19x7ayW8Tfvy7vFBNi+xsnG3tcN6opRq68k+1oEW/G59GD+vnM3FY+AYmJZrkV/dJCr4lyQx7MYRNQNsYi+uL0ordlmDVg4XdGNltCQbHu6gxo33udDaqdAEjrWMAslrsDjIz6WRpt/FIVMmunk9Ih1lhlSv3sY09YMQZHFW3sRWCJn8dN3ZaYpPHAJOHxZjRvWpx8DYg4AEoZFFCtocnDEi2LvV6w1e3/md1uGRhLfkFNCfOiWYiptSwXUWjwr4NgmLVRcIWFf6c0kZwmnO6LitpRua80Nw22FYL4POONgM+DubCitesl48ADKIkGZLKea37cqW7QPX4m7woYLlxYChAbhq6ryZHYwgwLoaHSxVjb6OJX+HapOb7DU2+9BSfTjuRl30qL26KWrjDhs/3y5OwSkBntcopNM487YiictxFrtqWEzryIPs2EWyidl1IMqJk01niIQDnaH/h+aeuzQamFhU+kqi5RTW9XRhNoF/uT/k/ufKSWA/r7ziYKGlbGnlM0Sem/bInoRjrdfYAaDBLdPzqsHQtTa+dU9MdC+lUnKpM7vg4pHoSV+wi3o1HyyJnWfUPmR4VTLFkLRlFSVe2muJOs0RcsrFT0ZqiLAPa6fgTX7bL+HFZX6h0b7+Bhqe4qlC5gflup42IjnQODBk59q3oddtbhVZUKAfL++izEimC87+ZAZEtYMHuTGHTM4i2VUOIxDlEHkRzRrcfZS/RHrTZXdbuXREW3HsF6W2M+W89KJgxJCkXM0etVak444MF620kONZF+E1NsSgg4o2W1MJoo4OtlA4IFsdn3k0HynytvoRPF2DvFeip0mNgSCc2CsRMcZWvHqMEDdcnlemKrGZEibUD6zR92unqwgu5tmE7Ee3nec428NFITY/zozgGX4VsC/jUymZSHGT+BDt2Z6KVkTw3oxQ2nMo6pmch38ZmKS0IQDS7+tJcfhMyjnDNw5A4V xXWx8g4T dxiysy0kB3ocRE7gHGzrH1QNR475p06aQHfWLyD7dFBuA2WDG1I2eE9sbKE7iMOckG9N56HHDQSWaoHtxJrgQIIKVguxG6S0vJzFmaMGIgyL0e9jBQYM2dG9RHy+9RJDqKFnOGQFTHDqJhXuXXYcvQL2SgAgPXRZgjYKuhtIQq6Z1ksXG6eXKl/MBQmTizGZONgZOWAwwxUD5F3vYWpDJG0uFGUbLW+AZeMaq 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: Chengming Zhou All LRU move interfaces have a problem that it has no effect if the folio is isolated from LRU (in cpu batch or isolated by shrinker). Since it can't move/change folio LRU status when it's isolated, mostly just clear the folio flag and do nothing in this case. In our case, a written back and reclaimable folio won't be rotated to the tail of inactive list, since it's still in cpu lru_add batch. It may cause the delayed reclaim of this folio and evict other folios. This patch changes to queue the reclaimable folio to cpu rotate batch even when !folio_test_lru(), hoping it will likely be handled after the lru_add batch which will put folio on the LRU list first, so will be rotated to the tail successfully when handle rotate batch. Signed-off-by: Chengming Zhou --- mm/swap.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mm/swap.c b/mm/swap.c index cd8f0150ba3a..d304731e47cf 100644 --- a/mm/swap.c +++ b/mm/swap.c @@ -236,7 +236,8 @@ static void folio_batch_add_and_move(struct folio_batch *fbatch, static void lru_move_tail_fn(struct lruvec *lruvec, struct folio *folio) { - if (!folio_test_unevictable(folio)) { + if (!folio_test_locked(folio) && !folio_test_dirty(folio) && + !folio_test_unevictable(folio) && !folio_test_active(folio)) { lruvec_del_folio(lruvec, folio); folio_clear_active(folio); lruvec_add_folio_tail(lruvec, folio); @@ -254,7 +255,7 @@ static void lru_move_tail_fn(struct lruvec *lruvec, struct folio *folio) void folio_rotate_reclaimable(struct folio *folio) { if (!folio_test_locked(folio) && !folio_test_dirty(folio) && - !folio_test_unevictable(folio) && folio_test_lru(folio)) { + !folio_test_unevictable(folio) && !folio_test_active(folio)) { struct folio_batch *fbatch; unsigned long flags;