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 AB6E4C282EC for ; Thu, 13 Mar 2025 17:01:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 500AD280009; Thu, 13 Mar 2025 13:01:43 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 4AEF6280001; Thu, 13 Mar 2025 13:01:43 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 350B7280009; Thu, 13 Mar 2025 13:01:43 -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 15C2A280001 for ; Thu, 13 Mar 2025 13:01:43 -0400 (EDT) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id B99E816038F for ; Thu, 13 Mar 2025 17:01:44 +0000 (UTC) X-FDA: 83217144528.15.CD26B4F Received: from mail-pl1-f175.google.com (mail-pl1-f175.google.com [209.85.214.175]) by imf08.hostedemail.com (Postfix) with ESMTP id 8208D160037 for ; Thu, 13 Mar 2025 17:01:41 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=HsrtzI1T; spf=pass (imf08.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.214.175 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=1741885301; 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=16176wl+Bq4nvhP8cCENJp3OqZKTVE/qLPzCvGc5ZPA=; b=EH4FU/3eIOCzwIfHE62bloTN5rDHt98TYMItbL3+hoQ0GHCM1J67TkPXY/RVNeuaWK//35 zLpMUEPjsmyMwSsqXCo2cXswP/jGbMLTPmrygSZY8chptHQYFQaMX0WUgui3SUpyfFgAtm WBny0xWXHcyprsBkzT53x8FkzGzhaMw= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741885301; a=rsa-sha256; cv=none; b=15q9I3AcOA+74roDEKum7gk/lklAfvSVqvjFiB93Us6/jhyL+CaauTBQ3ZZ5gC1H05i9vd 4RohziJcO8388ZXpWf6w82cTba5hTrJyquT7TDxOohdFN4XLdtIga3tO4jgmqt/bP6WML2 1xrylKt2g5odiDoVFtjL6GOhE3IU28A= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=HsrtzI1T; spf=pass (imf08.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.214.175 as permitted sender) smtp.mailfrom=ryncsn@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-pl1-f175.google.com with SMTP id d9443c01a7336-225b5448519so23580105ad.0 for ; Thu, 13 Mar 2025 10:01:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741885297; x=1742490097; 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=16176wl+Bq4nvhP8cCENJp3OqZKTVE/qLPzCvGc5ZPA=; b=HsrtzI1TR45QbhjIb64g5MGTAdJfGBXtYCGJow0ADzhdGLX1zbAMCW5ALZPZ+BTOw1 5W3yBsi4JRxt/THTKUZU+++mbXnM3ovKFmIX8GIBrT1ZetrB8X7lHKr04wvehZdn5EoZ 6c4aQNTqCDvGySlNs9FQj0fa0oBeleCZkGf8kl3oZuu4+wT+0JjempbF7LHir1yjd2ha 7lic9t/rwRVlClEcoSOZpBWl0+z/JfkjQBBcWF/oxiscUytg6i5Zh5rM+vbA2A0wTBFy Gp5pO4bG82L/0bjkaVQyERkPcjNNcCcl4uRk/aAcnrTAF5u5MzcRnS2uzDyoOYTaYpnY As+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741885297; x=1742490097; 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=16176wl+Bq4nvhP8cCENJp3OqZKTVE/qLPzCvGc5ZPA=; b=EIuowQu0WMFQs75XeFeumDZG5d0UpdJyPjNtEkBW457geC/kYdb6K9mGEUUax5VNEE RxNRe03PHU649uc7Zc5XlIOtB6NsPACG9Rk8oJXXeWzmIBQvWk/bYuk8jZfPqnKl1dx4 pT12XhjUV6WBugefL8zReEQjauxNyQI9mG3HYXFEGWnb4ibfR1+oj6d7JoodE4zCoiRQ 3FlYAlEjq/3aYAIRq2Z06prF7LlKByN/ZZEPAZOzd1fB4/i0M//uZ5dYm36M9UdGtbsI EHZsLu3AYYHoOh8f7bf27HJPDbFbNmCInw73xkSVcWSBn1I8tf20yz6/UUBL0U+v/quG G2CQ== X-Gm-Message-State: AOJu0YxsFKybK1ANYKSF43zjEmyBoda18oqFhA5J1Y9Nv7HE6WVb/mYq RumAggI8xjHy9l287e0FLu+CclBq+minqSXrcTiSj8ao6J1RGA7b/KjE57k6OX4= X-Gm-Gg: ASbGncstklc9V1BM+oxNycyjArVe9puhPzPFj3Ko7QeNYiMI510dFtbXRCaiYJypzoC 4qy3+nEFbfO97XApatAgFkAeXjVmDYuSHGPMk4bGJhiL0EyDUiCenMiS8skQ+O68G4wttBoCSn/ poBau7XlMSMhnLiqjqNoEWYCmKhe/H7QKPNcRprLlNWmK69jrYGq0NGiKAIFWsfXF4HNCEiQuqJ Qcx5cFSt3pXqMsTxzDnxtQ1He9EAA7iDEdky5qNqtA0RLVrLiIWi+Q8k9GmKpNgslSmmOHODyyK otCJY0NlICHm75W04REFD10E1Bmj2laqwLsivIVrtD7DvQC66B+v+wbleiu+kTXHKQ== X-Google-Smtp-Source: AGHT+IELVJnU/2w6JxSBVbjYpEvdIkIJJfwul5CyfHieaSFU0AM6vT3TQ+4+KXAwtNXc5aJfM4hBKQ== X-Received: by 2002:a05:6a00:1885:b0:736:5725:59b4 with SMTP id d2e1a72fcca58-7371f0cc2b1mr361404b3a.3.1741885296524; Thu, 13 Mar 2025 10:01:36 -0700 (PDT) Received: from KASONG-MC4.tencent.com ([106.37.123.220]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7371167df0esm1613529b3a.93.2025.03.13.10.01.31 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 13 Mar 2025 10:01:36 -0700 (PDT) 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 v3 4/7] mm, swap: don't update the counter up-front Date: Fri, 14 Mar 2025 00:59:32 +0800 Message-ID: <20250313165935.63303-5-ryncsn@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250313165935.63303-1-ryncsn@gmail.com> References: <20250313165935.63303-1-ryncsn@gmail.com> Reply-To: Kairui Song MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: 8208D160037 X-Stat-Signature: ogh51kawphh9j1bgcp5s3thz437tzufh X-HE-Tag: 1741885301-819522 X-HE-Meta: U2FsdGVkX1+Jcw6MVR9IpLSWu3mVUhnKCXAdTBDd3CY+K64FNf6EmmcFL1nqLpGSUtgM1LahBdo8yHCZXSGgHeHmnXtbp8bDDrlmg35ePAYDyXZNZsyoRRyHANMmn9qK3azZNsIufBLRPgRIbcezzfAGmN4EkXwVUsnJj/mRXnwuKOAl6/SoWA8w9J+h5oFjdDqkq3RJa2Rx28Af/FOgS19tADLJTbJ6mIWl+8RObyZknT0KvE5haAAljc1E4y7kcsdOW+1qbXYLSszqJFsuOrM7qB7J3M8IKCPDYIGiHehOpnLmJ/x2GeW7Xq3x1DYukA8G9ht0nUDn+JUPkPOVJ/XiiiEtCwiHYbXo74fKJ+yK5MLdWYGqkRoMXo5XEI5NU5ZzECJCWuXckzSBZkZ+/hheiAPljWqklFEE5YufcMRjRYz91DHwRm8l5s0ko+7tPhv7DiACYYaxdmFm+w82OwttWi2WLbcEXiJyeTzbdl9CeieqIE+fBSquezdqC0hrX/mTYWAw1fymp8MDXlzCbco6WcPfhfndWKaQijw4C9qTdGBUjJzlqyVdonHnnIswvwqhLMxaZdgYbyZC/9MMUB2YxWr54gCtByNNRPLjDu5wh/+p1VQiEbPXUK7M7XKp8Mcv5Josy99aiTE5twJLhZ/u032i4IICmd4VH/6B3e3RRWibrG0jM2cR4JonCIpMRS6Mu6iPqc785lBTcKBtwuK87nzsCG1Ve4gtxI7wYqpGdvTtTJTMOLLsWwHwIjEEatSdOhFQX0AUfNds6uid/I+5JZdhLpnR6B/q/W90mtMR1u7kWr6BCa840M91F4ivG1L7ywv6GlSGHGsLHfRH3rj3BXkeTXTZ46belHbsUXrtQatGR01eB1wEvQxSDDES8M+cIvDIgwV8SCQvVJhQ6IN+BxT5lcZlRFJ6Abr4PsxkpsnqeWKeV/rs+7EF3tJXN/KtoyP7h7Y5E8cCDiq 5DRv7XG6 gcI8dgOw9+RBLp2v38pFRntSC7NU+Lqw5Ed3U/xKOIvX7dWS/wCHtjeY0q4WtwSZnQW8Lbo8RI6j8eZwZK17h2jmNPbCjI435/hVxBvg1q701v13J58CtCOflJY0AV0QEV4sFznbez7PdhBi2erIGU956hgtdhKGT1xDU7lyG3gzDTI1h3In3fSlKNCUW7MgylumG910imMeybUQY6gCZr1PXZA== 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 Reviewed-by: Baoquan He --- 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; } -- 2.48.1