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 905F6C3ABA5 for ; Wed, 30 Apr 2025 00:54:36 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 41DAC6B00C5; Tue, 29 Apr 2025 20:54:32 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3A2296B00C6; Tue, 29 Apr 2025 20:54:32 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1D07D6B00C7; Tue, 29 Apr 2025 20:54:32 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id E64336B00C5 for ; Tue, 29 Apr 2025 20:54:31 -0400 (EDT) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 451E5BC36F for ; Tue, 29 Apr 2025 23:39:02 +0000 (UTC) X-FDA: 83388699324.04.6F23C79 Received: from mail-yb1-f178.google.com (mail-yb1-f178.google.com [209.85.219.178]) by imf07.hostedemail.com (Postfix) with ESMTP id A935F40003 for ; Tue, 29 Apr 2025 23:39:00 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=JtauphNL; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf07.hostedemail.com: domain of nphamcs@gmail.com designates 209.85.219.178 as permitted sender) smtp.mailfrom=nphamcs@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1745969940; 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=JFhHSkDxJzypIaqtTPtajYYCWi+xgmJi1aAEQUZ9t58=; b=p6IwLi5EFiip4kTr/zvTiv28eSDyfe0CRtTDF3+BYn5ftagcOiPWQ3haLNoFAh4j6DBbKW b3gAa9fN4f4Lehnc6lZ620XtXTuxf2m7XOLEcqqsqqUuSl5L1US6hhutPY7cw1nM7sTHXO ZkZo0FlCpPR4EzBeShg0jOBFcoDEOAE= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1745969940; a=rsa-sha256; cv=none; b=De6F0vKtk+pv9bKWOZV0tmg+YND3bT+x798vw/x27AysDtHQcnQV/Spv6IZeiI/qkIfZhp yjFBCaErkLqMZ3zeWegQY3Hk+b2nUTOIXUcmOTRqKbnhdz9/7qQkn3DLbH/grcJfCkm5WJ W7ujU+hGWIy+EGuNrelna93QU5jCnOc= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=JtauphNL; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf07.hostedemail.com: domain of nphamcs@gmail.com designates 209.85.219.178 as permitted sender) smtp.mailfrom=nphamcs@gmail.com Received: by mail-yb1-f178.google.com with SMTP id 3f1490d57ef6-e72cc45d99cso5892221276.3 for ; Tue, 29 Apr 2025 16:39:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745969939; x=1746574739; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=JFhHSkDxJzypIaqtTPtajYYCWi+xgmJi1aAEQUZ9t58=; b=JtauphNLr7mzBu9Ng8Bt6bCAu2zSYeqWIZo3ZemBM63DpidBfrmiF3iIhOJqZrgA4c VBigrDSxNGE8hHQlaciwFN0BdezCzpOs2rlOFf0PBquXyuC/5HyAbh01AIBKTMWJsqFE SaP3kZcaKmiWV2BkbK4NfsQhJhZWMxcN06WhS4vqyy+TzlOcmjC3vbB8cq4XO2qBTJNz 5yduOR4tXtWV8j4iMUHctTa/cZQnbSqO9+HA0Xem1Q9iOgpHlO/NSjqThd0oTr6MULEh RzXHK5Ogr3HAdOhBXQhnWQMy9P8j941ht+uJVNCwaJuLh2B33VonH9PnCSl8mLv7jshq +CbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745969939; x=1746574739; h=content-transfer-encoding:mime-version: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=JFhHSkDxJzypIaqtTPtajYYCWi+xgmJi1aAEQUZ9t58=; b=fS0lElXIythvDVCYJcvbk5PUqzgj76AzGbyiIaK1Sr+zIot0zEFktSMog54IKUB8g4 CKPZLqdERGiFJE4KJ2ywoUczSmL6wYQ1tpscN3kzbs39h01+gNeGckgCziJcW9cPoEat LBwr8mhcwlz/gUwEyUBNKoIcR3h8PpseSJW60rzIklRZGIvQHQ7a9MjAEr9pslFi3Jzt j4CbMJGJPWe92pqA99uvEaRFoOrtakIm2JSce+e+euuAiJBo955n/aSpneWTccfDJ99Z CPBVLv7n2fS21uPFMAIgzhmroIJ2KTzye0XjYvZQwFdjs+0TKp7FO4T8qeuqEiyiVFdS C6bg== X-Gm-Message-State: AOJu0YzxjWe+Hr+lJJr4rfk+qC97TUPEqxhxB+QZ66LBKd992lf4bQkW avi7AcGwq+07eeXn/MzMMJtuAglRPLq31NzHnYagrOZblNSHN6GA3QYA7Q== X-Gm-Gg: ASbGnct7jUPSS7CF6A7FoGzUTjEwwBKDzDOOThDIjItuJxKDifICY69HVLGqAnUvEPL 2EbQYkS1piva1s/+fv98tEtQOHgr0Caeg+C2/lipdfI+l0uqSlTrBrUTUtg3TM/IxtU64uRd7kF HIwlcuqS9OC1oukp6Yty/09z1Cx73tq3ixUGnnmb4lbMKJ1V/RuDfE3sjJMICH/KDNw9oE9BDoy oFoo5F9KUEE8H5WwbzrP/yNbtlIHpvTldWhQAXNYTFQSMruI6PJiPzfo859HqGLF+LfnRxJMY71 70lEdreWPzGPsSkdmdXsW+W7FISvAnc= X-Google-Smtp-Source: AGHT+IHTUZTqhcYgGJbQPuDnVTu9sU6OrQRADCC7lMuDWvnweWgrgBFJr5UsG76GOWcxTplwIkyh3g== X-Received: by 2002:a05:690c:6a05:b0:702:5920:c3c8 with SMTP id 00721157ae682-708ad5c4c7emr9892907b3.8.1745969939647; Tue, 29 Apr 2025 16:38:59 -0700 (PDT) Received: from localhost ([2a03:2880:25ff:9::]) by smtp.gmail.com with ESMTPSA id 00721157ae682-708ae1b429esm724327b3.74.2025.04.29.16.38.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 29 Apr 2025 16:38:59 -0700 (PDT) From: Nhat Pham To: linux-mm@kvack.org Cc: akpm@linux-foundation.org, hannes@cmpxchg.org, hughd@google.com, yosry.ahmed@linux.dev, mhocko@kernel.org, roman.gushchin@linux.dev, shakeel.butt@linux.dev, muchun.song@linux.dev, len.brown@intel.com, chengming.zhou@linux.dev, kasong@tencent.com, chrisl@kernel.org, huang.ying.caritas@gmail.com, ryan.roberts@arm.com, viro@zeniv.linux.org.uk, baohua@kernel.org, osalvador@suse.de, lorenzo.stoakes@oracle.com, christophe.leroy@csgroup.eu, pavel@kernel.org, kernel-team@meta.com, linux-kernel@vger.kernel.org, cgroups@vger.kernel.org, linux-pm@vger.kernel.org, peterx@redhat.com Subject: [RFC PATCH v2 11/18] mm: swap: temporarily disable THP swapin and batched freeing swap Date: Tue, 29 Apr 2025 16:38:39 -0700 Message-ID: <20250429233848.3093350-12-nphamcs@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250429233848.3093350-1-nphamcs@gmail.com> References: <20250429233848.3093350-1-nphamcs@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: A935F40003 X-Rspam-User: X-Stat-Signature: k1ndfu8ahgo74waoebz46turo6y9qxfy X-HE-Tag: 1745969940-54088 X-HE-Meta: U2FsdGVkX1+lMv/TZN0OVI3NPczRn7XSGc4a3Kw4b9Uh97PQhHNIL+9N2KZyJTV7Sqa9/1OLB33NwjYXcRpYOyoM5pfzre9zR3vs9uuP/FbgMqUHkbVKdA3xApzNb8Zv86CtHt4XNrAOpA1IIxq7MjH49eQnjFN8S/4QAEfxRmCO2eeIyMKYF497ZJaXNbfUwxmJBOhSK/ZbP0ghIOeTstTRz+ENbHfb9dquQ4HhgSZH4vN+SK2q0e2hBFumcfTa7iOtrX43rfnwF9/41woFhdl9jIDAR/IKybV2YU4+Tzz2ovrIsBbfsj9f69eg7ZIhNjC37DlQOwNQAw9oi8utJNqgauf+sRf1ayab2fgbW0hqRvH4Qkim1E+qhfXsEjR9Hwftw1nu1jog0yp2a1Tk4013tzNzz53ILhyCebsHQ/tOI6PxKm1xArwFbG100c12aZR/XkBs7V1KDpgbHDsS99FTC3xSnbng5nSQVLEeYNWQIkp1jHUZ2cJl/putChiOh+MwvYTvVPBZxcAV+dXXLG+WPuArXQPUQdzHn4BU+yPwNZqlGXjj//31ZGHw+/M48+2WbZ35/NK8OBOcgREoi2as81AzE4+VPsZPssg6gOiaQ1q9L6NWGvqZXvLI1ojzIEX4aFBzg7EUKK3FMNuYQ4NRZGMvYwNYK24r9rzKQGwcV9V5GXLDqUHMuw3Ag+MPSFgAf61mM0AEoUJq39BHRNAtBOcl2ovbMkddhlKPspcCYrg1aWKJMUO7jXmxlhdaAG8CrDtTCZ8y+B5A3zesygzIeaqs5xOZO3TQf2RVAJuCJ1a8I3mw2ZEXihr/TCpD2/4ExpoxZf7MKOv4xI4w6WFGKUv7q1Dxe4n5+kEuRjCvEgxVvH38rfjm7JJGsGLq54jlofAv3CA3gMgcEpX+X2Ic77RxwHTFwHh/RYHWZHpizgT7SakDNm2ULVAAtycXjXpdRWoVEJ8Mzl7XSFU R+pIXZro FtnRnjpaSdImx4wwFSNkxfc3b8yjPJj/kM1IQydpxTS55Y/adcxAxL1OYPgIorQcLt55hJPBggwHXIFUa+u0JN6jokOOlgf/o+UWWdlv3UyVxizZQgAQ51o3T0DYozBtek6/Qz0QHtDZFZQQ= 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: Disable THP swapin on virtual swap implementation, for now. Similarly, only operate on one swap entry at a time when we zap a PTE range. There is no real reason why we cannot build support for this in the new design. It is simply to make the following patch, which decouples swap backends, smaller and more manageable for reviewers - these capabilities will be restored in a following patch. Signed-off-by: Nhat Pham --- mm/internal.h | 16 ++++++++-------- mm/memory.c | 4 +++- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/mm/internal.h b/mm/internal.h index ca28729f822a..51061691a731 100644 --- a/mm/internal.h +++ b/mm/internal.h @@ -268,17 +268,12 @@ static inline swp_entry_t swap_nth(swp_entry_t entry, long n) return (swp_entry_t) { entry.val + n }; } -/* similar to swap_nth, but check the backing physical slots as well. */ +/* temporary disallow batched swap operations */ static inline swp_entry_t swap_move(swp_entry_t entry, long delta) { - swp_slot_t slot = swp_entry_to_swp_slot(entry), next_slot; - swp_entry_t next_entry = swap_nth(entry, delta); - - next_slot = swp_entry_to_swp_slot(next_entry); - if (swp_slot_type(slot) != swp_slot_type(next_slot) || - swp_slot_offset(slot) + delta != swp_slot_offset(next_slot)) - next_entry.val = 0; + swp_entry_t next_entry; + next_entry.val = 0; return next_entry; } #else @@ -349,6 +344,8 @@ static inline pte_t pte_next_swp_offset(pte_t pte) * max_nr must be at least one and must be limited by the caller so scanning * cannot exceed a single page table. * + * Note that for virtual swap space, we will not batch anything for now. + * * Return: the number of table entries in the batch. */ static inline int swap_pte_batch(pte_t *start_ptep, int max_nr, pte_t pte) @@ -363,6 +360,9 @@ static inline int swap_pte_batch(pte_t *start_ptep, int max_nr, pte_t pte) VM_WARN_ON(!is_swap_pte(pte)); VM_WARN_ON(non_swap_entry(entry)); + if (IS_ENABLED(CONFIG_VIRTUAL_SWAP)) + return 1; + cgroup_id = lookup_swap_cgroup_id(entry); while (ptep < end_ptep) { pte = ptep_get(ptep); diff --git a/mm/memory.c b/mm/memory.c index a8c418104f28..2a8fd26fb31d 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -4230,8 +4230,10 @@ static struct folio *alloc_swap_folio(struct vm_fault *vmf) * A large swapped out folio could be partially or fully in zswap. We * lack handling for such cases, so fallback to swapping in order-0 * folio. + * + * We also disable THP swapin on the virtual swap implementation, for now. */ - if (!zswap_never_enabled()) + if (!zswap_never_enabled() || IS_ENABLED(CONFIG_VIRTUAL_SWAP)) goto fallback; entry = pte_to_swp_entry(vmf->orig_pte); -- 2.47.1