From patchwork Fri Feb 14 17:57:06 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kairui Song X-Patchwork-Id: 13975439 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 0C00BC02198 for ; Fri, 14 Feb 2025 17:58:47 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 934D8280007; Fri, 14 Feb 2025 12:58:46 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 8BEA3280002; Fri, 14 Feb 2025 12:58:46 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 75EB7280007; Fri, 14 Feb 2025 12:58:46 -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 54B8A280002 for ; Fri, 14 Feb 2025 12:58:46 -0500 (EST) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id F0F264684C for ; Fri, 14 Feb 2025 17:58:45 +0000 (UTC) X-FDA: 83119310610.18.DEE81DC Received: from mail-pl1-f169.google.com (mail-pl1-f169.google.com [209.85.214.169]) by imf07.hostedemail.com (Postfix) with ESMTP id 1885640006 for ; Fri, 14 Feb 2025 17:58:43 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Lw4yQ36a; spf=pass (imf07.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.214.169 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=1739555924; 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=J7iAvbK5JG/d4lmxGQvSkQ18V+/XQNNBtKhwiIbpkLY=; b=iVKA4dBQnW9ZhBW65+FcxadvjMiF/yGDILklHIdHpqvzSpujSR69ZGYLDyCObTlH7AgfCC IZrK7ZVhl+QF0zcTGbMNqrbJpIKuEgg4qfcWZAiRgQXfd2Snz6WOTotFZHK0DUHBmQO5gf xT7hvIP/T3r2s4m1gytz0/9h4CHwF+c= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Lw4yQ36a; spf=pass (imf07.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.214.169 as permitted sender) smtp.mailfrom=ryncsn@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1739555924; a=rsa-sha256; cv=none; b=1NmtwbXaCij2HkByPta35q9El+6uXaHRTXmmHjCjZ1Qn65sSnj05IRt5vAbhkGSAapyOtp Kgm9IwODQ+2XB8EemgXwmnNVQrT2MY3JHrDB4GI5pM9WeT0DTJgKjFTP9IfNyGN3hPaYw4 9gu8JEbSyZzvTe4omwlspNmicmOWQpk= Received: by mail-pl1-f169.google.com with SMTP id d9443c01a7336-21f818a980cso38355835ad.3 for ; Fri, 14 Feb 2025 09:58:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739555922; x=1740160722; 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=J7iAvbK5JG/d4lmxGQvSkQ18V+/XQNNBtKhwiIbpkLY=; b=Lw4yQ36aoApNfnlDLF2zxex/gnRlWtPialnZGTFmzlz0yrLo7ggi5NIBJRFGzlmlu9 EUrPQPrCGw0k33FROYXsOlKIcyYn+B7f4f0fN/WiwQAp6J3GlkZnb0vjc3fcXpt6ZNt8 mFSAamEdoAiRwZMTIcPYCuOyIc1cpz1Sg5WiV3lVUlRg6o1ELgvvVVzvgBY3AGUnwQpc MK6Ke8H8GZwnlrNm6QgRpEcEZjLMAK3qdtSe5pvg3PoMlliAzB/nD0qMhnxrWZ7VOhQW EYGlqGUkTNvGYdA4W5lvoh3OA8VK7YNBzMi2m8JoSZvav+xjmiSPJe2cJkkzpn4PwAuA LlMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739555922; x=1740160722; 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=J7iAvbK5JG/d4lmxGQvSkQ18V+/XQNNBtKhwiIbpkLY=; b=BcUBElPAE5cSEqQAy9qv+Cbe2sWogsiIAVM2XOxAJwtPvxkOlYRk9vQUesa/NwSz5d tEfd04BXTubPtKJbNSUpFZpUGd/ZAouMFbubzfHE/lfsNoNsredeEKjH7LEuF3isgZFJ 1+jRzxk9nFMw1pObYeEc5tjbrBqimd2gAmgb1HHlbAaVVADAg8uVZeUOKOPqN3HAdRe5 GisgneukwItc9dSZ5NPMi9xINnSp8RB7NZKBVorJLZHEbuWsygXcSMHBqWoWdX+BeAUs asfmlNdhoqkzKCAn1h/ta9oesfZTldqGxqNKFMyNBJaq4us5XDHQZCitvo+QjhCy93MH rSzg== X-Gm-Message-State: AOJu0YyfC4MIMmFryaNGylEgDp85PFcHJ1wxp7oSAav2t4u/tC8XOuaf Qot989eOV4OSNnbC+5xidLZ8TVq3jBWP0mID/WVUJl3tRb79AZsj57UNz0SO5f4= X-Gm-Gg: ASbGncsfuHqEse7CaTpdfEAV3xWYOMbobTn//Ce/eJ+ehB6dM+SaJuFjJr7e8BcGRHU GWw7RBIorONITan8fskosoBRAuvh6byso7msBJDmKXVJ/EKodiwLonDNyU3XmekOHqNu1EL3A5t kBiHmMY8Tmb7DKO9ZEqOm50YuP8m2cvRbHYQ+/YUP8HSRXPNw0gx7Z+KAkqZztkpH5aa6M2z05N PJ7J2K3obj47zxmX44SaoOHljooK3ufAys0R2RBorzxerWqnHpDSQWMUrXwjumgrDFrGozii2oE BINld6gHWk08H21MCH7z0UC59ahNVy/GW1M1 X-Google-Smtp-Source: AGHT+IH9ha70sbHLOmBa5PHjMDHnw1Ok3lpm5sqNiv2eKZSkk6HsPl/5KsZl/aumE/hwSF+8y4tPBg== X-Received: by 2002:a17:902:ea11:b0:220:f4db:98b4 with SMTP id d9443c01a7336-22104012399mr3146705ad.24.1739555922552; Fri, 14 Feb 2025 09:58:42 -0800 (PST) Received: from KASONG-MC4.tencent.com ([106.37.120.226]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-220d55943b5sm31216605ad.246.2025.02.14.09.58.37 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Fri, 14 Feb 2025 09:58:42 -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 , Kalesh Singh , linux-kernel@vger.kernel.org, Kairui Song Subject: [PATCH 4/7] mm, swap: don't update the counter up-front Date: Sat, 15 Feb 2025 01:57:06 +0800 Message-ID: <20250214175709.76029-5-ryncsn@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250214175709.76029-1-ryncsn@gmail.com> References: <20250214175709.76029-1-ryncsn@gmail.com> Reply-To: Kairui Song MIME-Version: 1.0 X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 1885640006 X-Stat-Signature: bxnk7rnri7a1zkjp4aubsrbyegysdeqz X-Rspam-User: X-HE-Tag: 1739555923-538325 X-HE-Meta: U2FsdGVkX18rtowZHuLTmKzJOJavWmD7+eM7GKSI+qlQt6pZLCX9f2c15ZDfOzCkgkXExlj3Wu4ShYj0tLGvZae2apUdgLQxbzDSAz5AX3sHk/iBLe/ZxjfV5b5NqO5DxgnlSPQy155M0jLBZB+HUHeKqYzzADhxVZBuUJCqrqIYUopI46ZX9CQ1cMpFTDvXKaAl7bKj8EtBfouaCvoOWbrOJHpNWYXfjtD/JyS4iSgV72o/Jo9xRVHU7uwvBFjUgg/gBDC9GHCxTRFQad3AiX3eVBT/cVJvqc2zXLL5p4s4jFmHfhjTuV+S24U7TG7nM9YWvPbLIx3Qw9VVMjyvvypw6Sw5dRC7evv3jGRhGw2S4xcc268b3pzjfx1juJvlPveftyfAfRdbXOSa1BETqtueL7YOGYwI4C4KQQOxCE+XPG0lIPdUiE/MFi9ODKde0pvv2iCbBb2Bp7GXocAoTReua3jhxsM05decZ9SNmGwnPHULCWyR0Bo7PBcTBumxxoW7zvE5FKkVLBEeIBmVc24fAzz0V4rtNK/5xGHyiaiZlmtPJGwQngfvbyKHV15nULmwvKYNOlDlDYInZ4kqDmyLdEpqbXfU8ECwwJVwc4GE5Mw1SSAP1QO2JXB7iD964yNnThIn7IG1X2MSCQuhZRTSt22CVzxBWP2firg8NgKatdUfsRBaOXbv/VlvrvMcYg3pTSlsczpvFS2btygirZLAnhkSub3UAcYGmKh8q1JUTSy0zkVJywGvmuvIvih/n+ai3qYU3e8ydH/4XLZa1vTTwUItwbZSbklhCdIH8qDQjYV9cZtLrMmB5uXFNY3QSigmzyvhzPjnKpjwLiGE0UcsFUufs8XcGqOZ4iu6HYMZDTRPFbxf1Cx9KWmBgFjYiP9I4hZZ8V80kyPU4dgr9vN5OGLgiGz3eu6VzJ823s71zGS5PMwuJNiu5AOaWXt7ZymnFPNU+TCYv9nJZVn LH1j9g2Q kY4lbWAXR31YJHMxsB7HX2JWBhaxZoSTrONGjTobuCxM/Z4V3jj4SPG4Bq8zFCOCSI/I/HOKoElYpALPVRB7kjD4/BmNMCKraPP5GXvw40lY0ln+7hHDpAZignZDQkH1bFgQTZsczIVDhJXeCzQ/q2ywOCVPZpPs8Y25RtAvGj3GEEQHUhUtNHymbwSgumbp5y1KDIf5h7q6+iF/xQ4bSxQIpeqFQXpPiQIqgFE19K6IMK6jxoK4RzDixHo9Lfa58KE+Vz2ZbYmSQ82wT2wHH2O108oeDckbxM1ryRDdg5MU4uUceRKWm2SSz+xEDRqXTKoxVmw1wvuvqSMEABwlWecvp52quzkAXbr+CO2jL+PhWXg6Ad9t+k+R2U7UADEnpHrjZ+Pu/69xBXMfRL0S6qV5CxkT4tS+FR49BRzcq3XQZlzRnRcVPXxMSJXBqsiEnwGVP51Eh7MXxPuFLm/4ffYUhZMtvyfBp3h3mIzS6NtgZOZVeGOnC/+G7NiXha9O4ysPswWMMeKMoRlVibf6xn6SRoBTdaCQkiNWtTaYjrds1ZPcgvBL3bcyd1gTut6N+iSCr 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 was useful to avoid unnecessary scan when device is full, so it will abort early if the counter indicated 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 449e388a6fec..ae3bd0a862fc 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -1208,22 +1208,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]) { @@ -1257,10 +1245,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; }