From patchwork Mon Feb 24 18:02:09 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kairui Song X-Patchwork-Id: 13988665 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 BDE06C021A4 for ; Mon, 24 Feb 2025 18:03:10 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 50484280014; Mon, 24 Feb 2025 13:03:10 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 4B50528000C; Mon, 24 Feb 2025 13:03:10 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2DF6E280014; Mon, 24 Feb 2025 13:03:10 -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 0BC9A28000C for ; Mon, 24 Feb 2025 13:03:10 -0500 (EST) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 83CE4121435 for ; Mon, 24 Feb 2025 18:03:09 +0000 (UTC) X-FDA: 83155609698.14.5F049D1 Received: from mail-pl1-f177.google.com (mail-pl1-f177.google.com [209.85.214.177]) by imf30.hostedemail.com (Postfix) with ESMTP id 9483F80014 for ; Mon, 24 Feb 2025 18:03:07 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=gl5IjUgI; spf=pass (imf30.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.214.177 as permitted sender) smtp.mailfrom=ryncsn@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=1740420187; 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:in-reply-to:references:references:dkim-signature; bh=XyR+PRc/eBOLkBnPi/9fuJnUVozTaiV4/upc2f3YPZU=; b=qqPXqFIhkYUErsHdoU5+/ULE8BvHyC4DiTb4IaQzIDZU3OHAKjq/NPCGYgAfRRRBun9PN9 HWepoA7Cuq32UYHwYzWa2Wjx1F+sMUaSkagU5xUtvcZoDApbabzayUh0+bo1m4GUwYhTcm ICOXR6AZjjvsWUm4Vgo+7CWCiofztV0= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740420187; a=rsa-sha256; cv=none; b=nbNnusQubLAaDVl/wljNxaLf/ZmoRi1hZWDg35zyoNxcwKDNe76oZ+qH294pB6YxY+v04D 3EdChmMntA38Cdrsl72O7yaHaJBmrfdWhkxqzaj5kt8aKL2tUH0il/gaSmu1AZHMw8WED5 RnmtooL54WpSjfTcwmkzZWP8vvqyhrY= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=gl5IjUgI; spf=pass (imf30.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.214.177 as permitted sender) smtp.mailfrom=ryncsn@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-pl1-f177.google.com with SMTP id d9443c01a7336-222e8d07dc6so22084975ad.1 for ; Mon, 24 Feb 2025 10:03:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740420185; x=1741024985; darn=kvack.org; h=content-transfer-encoding:mime-version:reply-to:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to; bh=XyR+PRc/eBOLkBnPi/9fuJnUVozTaiV4/upc2f3YPZU=; b=gl5IjUgIgVXBU+R46aF8HGa4vHlrsmF1HKP9jeD+7As8IixYOFCR/lwM2jrbdhTk6/ TZZiRhXTrXw+sX326mrKZttsyaSqAi0uFGMlwGGbuGnPCv3NNRqQyCVcFajXcBGJ6/i9 xbHr2ETT9JzOwOJHC9a4jcshSltdTBBeh+uxccFsSgsGQSL68IgDuuPKATEu9LKQB5zu hR7DxUhxUYQJefY2uyCpliAdNep0+C7Rw+MGPqGYY2NdP86tuTuq2ddCh4Bgqmz49T5p cZyDwIVQLE2/BXjMaFR0eWmhRKz0sSgm8g5z3PgkWg9p5QbW767YYk1WTLUgnXKmk1Rg B+Yw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740420185; x=1741024985; h=content-transfer-encoding:mime-version:reply-to:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=XyR+PRc/eBOLkBnPi/9fuJnUVozTaiV4/upc2f3YPZU=; b=hlJJ6tD1wKvRjP24wqPdvy0pF+GihSbRmRpev8ijm+maQSDMen+hP1OmLqo8XJu7BA glbkRhVmi7TVyiTq1CJG6sUcxHyRD9x6O8+lVYFy/IVtrV6bgugOK+3kRA5XNPw67mdA 3ESh07qMRU38Mx9ruJ7BWADOqGdZIUE72hnvMqFdclKAUGnq8b1XBr2uTya/Ko+dE7oT UbDNEPJ+iazVqpS7+PsNLgdlHoV0+iv54Bd2Gt5Wc7UOYZt5LmSAkN9tsNNjHjJQPVOo IisUcrShRk+OVRdaTmR9rERS114vlwS2/0wD9MEqwjO3PxJho8jHkghy77fsolHzeVEz 4btA== X-Gm-Message-State: AOJu0YyCMiLjXMtO50nyeKi4UVTYpzpnpsipEMu/zNP2pnLVfjYoL8Nd eHx683CGeoBybK+8GEo+qObxTtq+gq2573ninwQERZaVXQhlqeanhaUcHy/MZVw= X-Gm-Gg: ASbGnctLuTaL1hZYCIiZGeybx+l4mAKCIJDuYGu8OwCZF+PR5z76OpcldBr3wFQDFgD 8EL8/CmgfMK6DOQbiswBW2Fzq0yvaX+0lsJk06sMFfwGfx7q7Ysd5v4qrXCXozAp88mJf1e8oM+ GVDIrxo2Pae0LbHaz7vUf0Exu92k3+wEi9c449ZRmEE9l/72gAf671EuQn0+Co6VFTGktS0o+H+ MsM2+lWJnwqmIF7bv4xztwOcL3ITIWegJhIwPvXIIwSHTxmwBl71Wv+W9L/WrTJ5jcFyR/n8NmE /+PMioXFayMvTNwUD6KGJASvnxZxI4f1fvNShy1JC5M2 X-Google-Smtp-Source: AGHT+IEWFKdxJ4VlDrM+6lJej0/o+uztgn5SKjZ2meUIah0cwkjkOUeetzc3bGXlgudO6SvyG97xhQ== X-Received: by 2002:a17:903:2312:b0:221:1eac:bf7a with SMTP id d9443c01a7336-2218c765b1amr310546725ad.24.1740420185393; Mon, 24 Feb 2025 10:03:05 -0800 (PST) Received: from KASONG-MC4.tencent.com ([1.203.117.88]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-220d556e15esm184834695ad.190.2025.02.24.10.03.01 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Mon, 24 Feb 2025 10:03:04 -0800 (PST) From: Kairui Song To: linux-mm@kvack.org Cc: Andrew Morton , Chris Li , Barry Song , Hugh Dickins , Yosry Ahmed , "Huang, Ying" , Baoquan He , Nhat Pham , Johannes Weiner , Baolin Wang , Kalesh Singh , Matthew Wilcox , linux-kernel@vger.kernel.org, Kairui Song Subject: [PATCH v2 4/7] mm, swap: don't update the counter up-front Date: Tue, 25 Feb 2025 02:02:09 +0800 Message-ID: <20250224180212.22802-5-ryncsn@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250224180212.22802-1-ryncsn@gmail.com> References: <20250224180212.22802-1-ryncsn@gmail.com> Reply-To: Kairui Song MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Queue-Id: 9483F80014 X-Rspamd-Server: rspam07 X-Stat-Signature: 3oteu4prs9znszb37hhn8pc749o6qmti X-HE-Tag: 1740420187-678472 X-HE-Meta: U2FsdGVkX18pzivHT4WFut/9Q7RDB+1nfP8FXTxGTT8w7ZayjZMNk3KqwI8lt/CxVSSty37sjV2/m3p3tt7/rjS5dGJy2fUFYB9v47kjseswIfr6hmiAElcAA+bx0H6swisJVltlt9zHQwvzriivOlqBg3pcr0+blm+iR3upyG96zpCbJyerpmz+NY4vVu+QDV0414mD/w10QI4ogCzEn/o0fD02bmb4YW8aMmSOHeJ/RTMSZorojvFp/y0ApdO9urvf832ahL7OkM1/MYzmxe5IBUsYUGKfpOX+hYQnUoAdlXE9StG96TkMexR8QGuQRaC2l7Lnuh3XAX9MjTDoYNLY6N+xjdly8Q06SNn2L/NjDRGjvqL0CD3iGFVJjcSa1ev88/r7vpCrdW8PPIQQ9830pO3heXGZb4u1qvW5pTko8PYn7fgzbelkR08Ll0CJ4mPde+S9ZlfQFMiaeQcBVdq1wvlFRBmkF/jEefHqXuDFsGXvVR/xnuHr7Dp1PxXqvtVqCpD4pP0/9oim6FBZFWje09BqdcKkh0XlRMy9RhdY6FcM+Wfi64pzIP6ZY0JnOuoamTl3I9T536xX0QJU3C+d4gUEpo2wCFF00CAsPK2vps3R6rKcpJV8lDw7hRqWvnJvUTbC1Lk4ggZxLOhzwKYJf26VaWCGGPgrtgME62Kgxmd9RYTYEc7W/ypjfExvypxYJkjfVEQ4ZY5pROQbG76igoLAYxPTdvXwy8kJgv3EbG1O7VupFGB8ZygqDnynsLrrz2aTMF6BVkuStVHLVNcebTyFvqS1ThRACwu0XqNZYur1at/nS/1bkRUizCC2Pcvon+VGWXW3smbB5u1q9dx3YaW9cGwxMgGJHJvB+RWOqHLfcsxewDJ2qb9NZN/ZNMOvm+jd+Rxjqdh0fG8fPax4moHfSyYpaNxnwvwz1GVNRiVv9YybZx2GR852KN8Q2aHJ+ewB5MTFwwPpsIQ rqTy8AJM HWFs4evGQflevYAJHEJP21bjpK0bN7uY/b1TGGAsD84yntOP5Nc6AvaMtkCk8UkMTeiU729B43gHgxH03FvwyV38cuSCexmQteUGgjjbF/eJZAFaX5kmDMfjtjyQKDU4jqK2CZnlKQRX8iCK3w84hNQsIHh4vkyyb/EhD4ZyuNyKJfgKRTwHsQMb6PFOn+827Vfj+7+IDK6MbhU+s05cneLz/7XiZTL7EdaWnaUxbZ6V5UGbPJYZC6QqOGhOTXtSFnK5atSSmaShYrJUMA1dt+WrDfiuiC3NFp6e2C68Rx2cr2GNhBhc+pkLud4o6Wg/cbeNmkVRkzJk1OhCHBqw2TbanqkFRiJZo25g8IroBDxOa8wM30ZF27GidGtTMK828i2nsbJ6/OfZcifT2p/qtdFjZp9JPDB4Pe3NiZCcz344obSYn+zon5BXevQQVPHE60Px8s86bpp4eSNaIaGC1oFg5o0MKL58OcCHMHHKoKfZi83V3KejU7eob4nBWYF9jotskyqzy9sf2H4LTa7W0XsWdsvDc0UiU6XugdPwsQLGObbhyrUIqV1XV+aohsLtZF/89 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: Kairui Song The counter update before allocation design was useful to avoid unnecessary scan when device is full, so it will abort early if the counter indicates the device is full. But that is an uncommon case, and now scanning of a full device is very fast, so the up-front update is not helpful any more. Remove it and simplify the slot allocation logic. Signed-off-by: Kairui Song --- mm/swapfile.c | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/mm/swapfile.c b/mm/swapfile.c index 6f2de59c6355..db836670c334 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -1201,22 +1201,10 @@ int get_swap_pages(int n_goal, swp_entry_t swp_entries[], int entry_order) int order = swap_entry_order(entry_order); unsigned long size = 1 << order; struct swap_info_struct *si, *next; - long avail_pgs; int n_ret = 0; int node; spin_lock(&swap_avail_lock); - - avail_pgs = atomic_long_read(&nr_swap_pages) / size; - if (avail_pgs <= 0) { - spin_unlock(&swap_avail_lock); - goto noswap; - } - - n_goal = min3((long)n_goal, (long)SWAP_BATCH, avail_pgs); - - atomic_long_sub(n_goal * size, &nr_swap_pages); - start_over: node = numa_node_id(); plist_for_each_entry_safe(si, next, &swap_avail_heads[node], avail_lists[node]) { @@ -1250,10 +1238,8 @@ int get_swap_pages(int n_goal, swp_entry_t swp_entries[], int entry_order) spin_unlock(&swap_avail_lock); check_out: - if (n_ret < n_goal) - atomic_long_add((long)(n_goal - n_ret) * size, - &nr_swap_pages); -noswap: + atomic_long_sub(n_ret * size, &nr_swap_pages); + return n_ret; }