From patchwork Sat Feb 17 02:25:33 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 13561204 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 A16ADC48260 for ; Sat, 17 Feb 2024 02:26:00 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9CBA06B009F; Fri, 16 Feb 2024 21:25:54 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 4DF126B00A0; Fri, 16 Feb 2024 21:25:54 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 15C196B0096; Fri, 16 Feb 2024 21:25:54 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id D19EF6B0093 for ; Fri, 16 Feb 2024 21:25:53 -0500 (EST) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 9E0EA16012A for ; Sat, 17 Feb 2024 02:25:53 +0000 (UTC) X-FDA: 81799705386.15.F8ADCEC Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf13.hostedemail.com (Postfix) with ESMTP id E479820005 for ; Sat, 17 Feb 2024 02:25:50 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=nhsBxa5G; spf=none (imf13.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1708136751; 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=zxPjxJ3sR8/tAmwn7dVHy6hIoko7fcejXVznXxtZqEE=; b=3BU2eC3nQNWHzT1mhE0ysl3JS9F+dzSaN/qCK79uQgVWRF5HGJCTaC/vG/ygytTQ3cYXVH kI7dTj0x7uKvRBWx8JEz00eGG1CHsGeGeUBlavq+rndoCrHu58d9bjj4C4ZpeJG+uim006 i58L5HPcMCsRKkVKilYukxTvKb8J/CE= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=nhsBxa5G; spf=none (imf13.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1708136751; a=rsa-sha256; cv=none; b=QX2TlgyDCSirzDIMgxwQnwHHb5/Ua6id1alVlAsapeZSqotTN/s9I2g6Mn8zhhKFozHwcb zvOY/H4FXTHlZpPiUumjAx/p14bZWiT20/7oxlmlxNN/Jp/J2mFoE5lr35LLVIqYTlsEdh Fr1ddoUS3WnCSgzc1XBKp3Odo5bLPco= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description; bh=zxPjxJ3sR8/tAmwn7dVHy6hIoko7fcejXVznXxtZqEE=; b=nhsBxa5GmjasHs7y9XXuz4lSOC qh55W/ZLqTWACzE0UNAAHrkiayh8BfTgdZBogGomTb6dh+ds1WK2bdxtXBIm5RZCd2gKF4khwEPDi xVnC+8PxTgzD7l5i1BO6WZ9n8c/NIRdX1VayJwS5lWBvP0QLCovNBONgMisfxDgwKRkzVqxVR9ufr qQJx2ehWxicFR1Qi0h/7vqFM1hRpfcR887LlqZ5JANGJwDzrJCBxQ3zLtdVQHZwlnnlKz8+4Stwga bJIrRwwXrv6iLW621cI9/fly/cfenuu/9GFNT+yVVfoEtg9SyUVBH3CpnsNk6Tw1SkVCUtcGjWU3S oafepyxw==; Received: from willy by casper.infradead.org with local (Exim 4.97.1 #2 (Red Hat Linux)) id 1rbAOi-00000006HDJ-3M6b; Sat, 17 Feb 2024 02:25:48 +0000 From: "Matthew Wilcox (Oracle)" To: Andrew Morton Cc: "Matthew Wilcox (Oracle)" , linux-mm@kvack.org Subject: [PATCH v2 07/18] mm: Use free_unref_folios() in put_pages_list() Date: Sat, 17 Feb 2024 02:25:33 +0000 Message-ID: <20240217022546.1496101-8-willy@infradead.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240217022546.1496101-1-willy@infradead.org> References: <20240217022546.1496101-1-willy@infradead.org> MIME-Version: 1.0 X-Rspamd-Queue-Id: E479820005 X-Rspam-User: X-Stat-Signature: fb8b9qsz4t6j34wm6fb43g7sbndc64o8 X-Rspamd-Server: rspam01 X-HE-Tag: 1708136750-578330 X-HE-Meta: U2FsdGVkX19q1zzTTNeMilIVZ1NvuVNnBcBl3BzhZGH5a8shZg5Y3kbuXcgDrbiEuZX2M4qXcuIwbG14ILC7rfRBsFzkU17hDbQKZpgvZerpjUNVTLngZ1F3KlNHmjuSq0po+xLzaIaD4y+FvsBUvJpDC31OQv7khQH1MgG8Uba/mkm7Ce4YcKv995Csg+EkQE8AxXBQ4aZdNOg1JbJiTPlnu+XtrdmcAvSJwPjcXT7LnaKcPNN0PHHNJldYFoveiqq66ltiTywvIOwSoiFpM9wc62jOhxwl2nztmF8akhxY2eskL8LcuG9EJ3rQh+0RXcflrIiQWOKRX/QUWOlBD+y1WUPS7dbhL/9IZ20DXpxj52CsM8HoOVkKuJxkpl3jJ63P/muVn/GOz3CmxuRF3pO3xFEkqAHgn9VGeh7XGW3Loem3Pq0N9JLQU/Yc5+59uYGtDx1aRCeD7f3rPCVwirSkdEJRQp5BnQzFWsT4AAW+KT91KhBTdt8crVF8Zr2QE5x0VYf2kWzjr/0MukjWvp0f4p4irfE754eqi73Z2KJlL/scTv9x+BUuYmZDZZPGKzP/Ee+rKA8LtSYb80AOxn9VHekJR1LFO4NrdpMbmycmrR6Lt0RDxkabZ65GftLVblm5rn5yKjoeehZm0sJZ6LsCMbElJl28yar1rOX/Cb1jNbtL2kcgXIIENfgL+ArHH87HY/N2HpM078Zq8v2wY9XdcN8BhW/8Cr3HrwZE1AAE4tsgL78Av4l9XX7OWW0AO5tSw1EeZrK9XP0vBXUYksr37zv/RP/HHXXwGAImsMOkUjggBy32+G0xch/rmnrdDhtdFdllnHGuc2ecyhV3tYi1tE9boUNCHwSFD545ZtaVKOSbiS8+KGmNB39A9qIVXWoG9v9bp1K+8xjD3sja+VF6TolHvtZNBIA0Tc5O299ys0iuwtExkca2edBCX15rMJU8FLYM3a6aptgthGz MZ+NviEa 6Ca8MdXEvqYA4OEZmdFcQCG9kXGZfktinb0WDqDkuXJ+fv7Db3Bj+qJQ3x5qSdTDmb6tOgeXd95OiG4srj3eOy7UgqnTZ3v7u5G/KtG8BX4eInZ6Mcvzv3cDxTQIoAPZbsEwowK/U3tqK+47MOoLn8biImI+BAooaAhSeZRSfiFhQpgth9/nzQce4aeCwLdULZ+M3mXHeUG8OUAIc619JnW7lz3cyFC19FegD 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: Break up the list of folios into batches here so that the folios are more likely to be cache hot when doing the rest of the processing. Signed-off-by: Matthew Wilcox (Oracle) --- mm/swap.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/mm/swap.c b/mm/swap.c index 6b2f3f77450c..fffdb48cfbf9 100644 --- a/mm/swap.c +++ b/mm/swap.c @@ -138,22 +138,25 @@ EXPORT_SYMBOL(__folio_put); */ void put_pages_list(struct list_head *pages) { - struct folio *folio, *next; + struct folio_batch fbatch; + struct folio *folio; - list_for_each_entry_safe(folio, next, pages, lru) { - if (!folio_put_testzero(folio)) { - list_del(&folio->lru); + folio_batch_init(&fbatch); + list_for_each_entry(folio, pages, lru) { + if (!folio_put_testzero(folio)) continue; - } if (folio_test_large(folio)) { - list_del(&folio->lru); __folio_put_large(folio); continue; } /* LRU flag must be clear because it's passed using the lru */ + if (folio_batch_add(&fbatch, folio) > 0) + continue; + free_unref_folios(&fbatch); } - free_unref_page_list(pages); + if (fbatch.nr) + free_unref_folios(&fbatch); INIT_LIST_HEAD(pages); } EXPORT_SYMBOL(put_pages_list);