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 D7CD4C8303D for ; Fri, 4 Jul 2025 18:18:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 560D46B026B; Fri, 4 Jul 2025 14:18:02 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 511386B026E; Fri, 4 Jul 2025 14:18:02 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4019C6B026A; Fri, 4 Jul 2025 14:18:02 -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 2A8F46B025E for ; Fri, 4 Jul 2025 14:18:02 -0400 (EDT) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id C10A2B7148 for ; Fri, 4 Jul 2025 18:18:01 +0000 (UTC) X-FDA: 83627391162.05.7893FB5 Received: from mail-qk1-f177.google.com (mail-qk1-f177.google.com [209.85.222.177]) by imf28.hostedemail.com (Postfix) with ESMTP id 04A2CC0004 for ; Fri, 4 Jul 2025 18:17:59 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=fURv0Mxv; spf=pass (imf28.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.222.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=1751653080; 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:references:dkim-signature; bh=19gtuz8pyibEGno6XM6sOP9Gh4Tb0Vhhx5W2BjE5J9g=; b=t7+wxyz9vkc5WGwSaEyZkvs1Tu1dsG65/Eu/Fvm2JE5TllVDUpywR1i+gK+vWej16Pyov4 N/ziVE2E/ERHEbPl4khXScWPYaQC7wg374CzcMV7kxke8I6IieEryF7yMnfuxZc3p27DUx 4vPigRGHvJW9oUX8mA+c7/zfuEc+v6Q= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=fURv0Mxv; spf=pass (imf28.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.222.177 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=1751653080; a=rsa-sha256; cv=none; b=FiqKTM4P19jmP3hl7Fzz3EfjSwEjDTdi8wHtQ6JdfHYXQpBal45RFu/xu3UIYGg/ZqiJP7 i1b3HGaq0Pob2/GEd/3UAEi6828D/SAlBDVkoerFikv2uqRwHZTZwhypafjDt9H77n4CLr Wfdvvwm6oXT30MxbVSFRm8kr77Jt++A= Received: by mail-qk1-f177.google.com with SMTP id af79cd13be357-7d3862646eeso80687185a.2 for ; Fri, 04 Jul 2025 11:17:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1751653078; x=1752257878; darn=kvack.org; h=content-transfer-encoding:mime-version:reply-to:message-id:date :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=19gtuz8pyibEGno6XM6sOP9Gh4Tb0Vhhx5W2BjE5J9g=; b=fURv0MxvSELhY5p16Rl5ZhOU9Ub/wJW3672jiC79qOxejDDE+XCn7SMRgZFqytADBv sJeLhdZ735cnQ+hlFSe2lBLBJvEcuS6KFeDCJinz4NJBeYB+ReLm8j4wIdSwBvbHQfNG HStvwpdEqac5W8IRNTjjA27s0FGp/p/Jpq6vqWTPjLPGDF89gGUyYKIpX3xsUYSFMe4u rzSnMi6ELNR0ERLl8KsuYLblE7ayzgKfc4NHlzVqgN4IxBAJdscXowsp+u2PKpkiyDZ+ Kdo2FiHD7wK1FsKkxLKcM+65ncQkSMPqCk1ad8URE9qC7xhspyTa3jAvaMGoMMiSrm1s TiXg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751653078; x=1752257878; h=content-transfer-encoding:mime-version:reply-to:message-id:date :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=19gtuz8pyibEGno6XM6sOP9Gh4Tb0Vhhx5W2BjE5J9g=; b=buEgl952Q8oqyCis3H73LeQ4CwY80LbrfjbT/gSDfbCBa0alTwTWpssjRoVl8VHwwz xMmVUQLUmqTUcEv7vQtjg+K3z2yj5OfD7ETYE4iMvD2aFxQSKsudGJfU3IUKYVRKAptL shN31wiAizsgbQW2uEbVGtS8Xrf90/acXf3mhL3rKCJmPv7CCaRDnI8AwY+alVCzSZ8X nxgI44wOiHBiUeEH9C12r5mfX8KLFCYNTCRilO5z26/IBnrGRL9ldX89SJDg+4jdgOJi t634SwEZxqy/fYm9ODSqgc6KLCDdYiXtIb7Wd3OX33vSZAKoUSZxUw32OELeQaqzL1gi D54w== X-Gm-Message-State: AOJu0YzCQoiEoh5mH7gBhqqoU544jNfLdUDBD6Qw4RBjTQgfey9JtxuD HImkkDD1/sr9p/zdR4f8nNFL5UxlcLfCfdL3WTsuJi0UV/p8bTHTXHKFGfZT3QZR5sQ= X-Gm-Gg: ASbGncsPsDcFgON6qBv19GGhdiFcJ276R3zceR22Q21J4MTOAOYdp7pvdIZxw8WWQlD 18E3qJhWAUocc8YN7sD3O3hBAlDYfLptkBRtR5eNt4YG2hhxUiv6JK3ke1rqZgchGmu8mscjXMW SP4jwPJ2W5uhpCKSVBbGsGNXRWbiyJ2bwxeOEnR/mXcbQyTWbNz0rJQFKcvrYWj8lhdfHnfBYX5 RVvlgytRKN1zpYYNOTZ/R9LJcJaYgQ83le/G6K/pmO3yz3olqHqJ5aU7ICRg+iYjnM2ZkVKWpdS cPQPMgDBbdZVPpkKaeYnCy+jaPbFW4iFmeLQA/qXrRSsdz2eTU+DFJOuUISz4eAK2K+ByiQ0KQ4 Alg== X-Google-Smtp-Source: AGHT+IETRsUHYAYc8lzzi3bO80ku17RkglPp6be9hVQZnrswNO8fKXEdte/rmYzGhfcYJimIPz8Pzg== X-Received: by 2002:a05:620a:708e:b0:7d3:c68e:fcf6 with SMTP id af79cd13be357-7d5df10927emr412754585a.9.1751653077920; Fri, 04 Jul 2025 11:17:57 -0700 (PDT) Received: from KASONG-MC4 ([101.32.222.185]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7d5dbe7c188sm183300585a.59.2025.07.04.11.17.53 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Fri, 04 Jul 2025 11:17:57 -0700 (PDT) From: Kairui Song To: linux-mm@kvack.org Cc: Andrew Morton , Hugh Dickins , Baolin Wang , Matthew Wilcox , Kemeng Shi , Chris Li , Nhat Pham , Baoquan He , Barry Song , linux-kernel@vger.kernel.org, Kairui Song Subject: [PATCH v4 0/9] mm/shmem, swap: bugfix and improvement of mTHP swap-in Date: Sat, 5 Jul 2025 02:17:39 +0800 Message-ID: <20250704181748.63181-1-ryncsn@gmail.com> X-Mailer: git-send-email 2.50.0 Reply-To: Kairui Song MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Stat-Signature: j8tmc771w9dxtkqbbmwz9b3y8ryp9ibc X-Rspam-User: X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: 04A2CC0004 X-HE-Tag: 1751653079-191640 X-HE-Meta: U2FsdGVkX1/fcQofFvr6MRO9mBopwDdQ+4XT8WlHSSVRffs5u4xDf4KDvWZa0Hafpdt4gVRT7VsiRb9DVk2P5h23rfBH16vEJc/SbDphMmQvaDDKc6J/OH9zeNogxtUXPZEi4Qx6oeH9WbE6wooz1kr3BxBgI1W3WjcoPi/pCrz1AWyPgwGS/PrHWwXaO7d0iqHEg+r4VPqkmI9v/vvO1/P+aZMZmhWbOo3/45wEep9iH/pmBmYd267DUVVdjp/bV8BSyN60TRPDChdqwmQRAuT/ZzRtzZBbgTqMsMoW2qDAuVpopas38N3+/Ix5iuPI8MQIbt+lVFEiAHY6CkqmXRhxKsHe/yaaKiDp3JFYyHAjdjvaOJeVrV8CVh1CuLqARk7SiDoqE9KT1Fw0+WerOO7XsBYym/UjWQlB6aHROYzK99L0P/aNBr3lBgUmSlmJuNq3MQYcR9+zSSWSmYQ0ynXV7xhNCigDx1xFxlp5FGgsV1Nvjw7Dvy6aod64pV+76oFDHrhrSnYUTzw0+sVvPmIkS2rWxD6Qt7Li2E4weXOe5k1rut8QxZm4R28EO1kvkx78iWs6LQpPpjQyACB3ebRcmnnk2h/9dnkzjn7MJ31cDk61yYSn2wSaOHmSVlI1yN1I2AHOt+zlVIqlfuerImhov19de72Ds0QKEDgSpUyvn7UCfR5Zb2qs63Gtj74xT09aSlL6noJpcdJoQBAa/qriNZrxaQiBfHVpqpocJ95w4ySLAXj4YxosTH0JJlhWUcZ5mNdpHqjuzZWCKHthWRpKhpNxYbfWfY4mLKhRrGm56dBrbHs70WKrqUMUy8UEMUWDBcfef/CbUf9aT/VU4HvBqw1/LWPemxP2eCX6rRGzRbzcO+EgxwYXeDYfbIgCuOkPQpmzBy/z3ljLyqn2oUDpR28PO1iejZSLs8SJ6ELdK2TPPn8xPYZu78yPuEWrgHUj541JizzH3IiHMkV dyLodTVt mkWsvDllhUK86nGz0u8IHUXHZ5aCuGuasZOvV/JD1pkJVToEPhOKz72dn1I1w11dSNyYLs2sfcKplWvwCMNFdHL6wAhytUtKrFG3mgvQtlHPbvNX/q2OVtgcyguIDqL07UOnlJgsuo1Vdna6AEgmaULMWi2lt6xWEx8gVvYSaXiPZZPuPsUbHSUfzP32FM27Lu6NC8GpdPKfNwnC/2X3hhSs+rxMZdRBt+csaXj0oM7TyvufOYBGbxlLuuwpoGyjxqIN6pFA1i5TfT2oSTzz4pejxwtGBkYPlsmaWfPV+ZPv1ZgvsL6bOcaYrUn+sWKgJPFt25ZLBnxIajngKYUAS+JzLiCLxaqYXmRBYDvm9VGlNvN60mbDpBXrYGZFQfI7edOz2Y0KVKxtiqAKgVOVN6EbtgQoupTWCLtbpBwb3nqlSX7gTRCCLYfRW5Jm5NmizOtSCrteTQTshIoEc1GGgRfJW5gSnaaRk+RuFAsZ7L73JBZr+GxXsIg1RtFS0jRo9ZOrPjRZAzQvUN678j7+f2U/O6kb17SOL7X7p5Zv1oB7/do9yjQX3XnqTKabTeAi+daHsGzmqbRnUs1ZKkyJgA0kDmVnZhhpvHDFHb5QRe2qNqnQLskrA1gOcaICk0Z3puqxCfamHmylah0aAsqXPfKVagA== 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 current mTHP swapin path have several problems. It may potentially hang, may cause redundant faults due to false positive swap cache lookup, and it will involve at least 4 Xarray tree walks (get order, get order again, confirm swap, insert folio). And for !CONFIG_TRANSPARENT_HUGEPAGE builds, it will performs some mTHP related checks. This series fixes all of the mentioned issues, and the code should be more robust and prepared for the swap table series. Now tree walks is reduced to twice (get order & confirm, insert folio), !CONFIG_TRANSPARENT_HUGEPAGE build overhead is also minimized, and comes with a sanity check now. The performance is slightly better after this series, sequential swap in of 24G data from ZRAM, using transparent_hugepage_tmpfs=always (24 samples each): Before: 11.02, stddev: 0.06 After patch 1: 10.74, stddev: 0.03 After patch 2: 10.72, stddev: 0.01 After patch 3: 10.73, stddev: 0.04 After patch 4: 10.72, stddev: 0.02 After patch 5: 10.74, stddev: 0.01 After patch 6: 10.13, stddev: 0.09 After patch 7: 9.95, stddev: 0.02 After patch 8: 9.88, stddev: 0.04 Each patch improves the performance by a little, which is about ~10% faster in total. Build kernel test showed very slightly improvement, testing with make -j24 with defconfig in a 256M memcg also using ZRAM as swap, and transparent_hugepage_tmpfs=always (6 test runs): Before: system time avg: 3911.80s After: system time avg: 3863.76s -- V3: https://lore.kernel.org/linux-mm/20250627062020.534-1-ryncsn@gmail.com/ Updates: - Split and reorganize a few intermediate patches [ Baolin Wang ] - Fix a duplicated fault issue that may occur in one intermediate patch [ Baolin Wang ] - Improve variable naming [ Baolin Wang ] - Fix a wrong error value problem, return proper error value when swapin failed. - No major code change from V3. V2: https://lore.kernel.org/linux-mm/20250619175538.15799-1-ryncsn@gmail.com/ Updates: - Split the clean up patch into 3 individual patches [ Baolin Wang ] - Fix a code error in the first patch [ Baolin Wang ] - I found there are some other remaining issue that can be fixed after the clean up so includes these too: fix major fault counter, and clean up the goto labels. V1: https://lore.kernel.org/linux-mm/20250617183503.10527-1-ryncsn@gmail.com/ Updates: - Improve of funtion name and variable names, also commit message [ Kemeng Shi, Dev Jain ] - Correct Fixes: tag [ Andrew Morton ] - Collect Reviewed-by. Two of the patches in this series comes from the swap table series [1], and worth noting that the performance gain of this series is independent to the swap table series, we'll see another bigger performance gain and reduce of memory usage after the swap table series. I found these issues while trying to split the shmem changes out of the swap table series for easier reviewing, and found several more issues while doing stress tests for performance comparision. Barry also mentioned that CONFIG_TRANSPARENT_HUGEPAGE may have redundant checks [2] and I managed to clean them up properly too. No issue is found with a few days of stress testing. Link: https://lore.kernel.org/linux-mm/20250514201729.48420-1-ryncsn@gmail.com/ [1] Link: https://lore.kernel.org/linux-mm/CAMgjq7AsKFz7UN+seR5atznE_RBTDC9qjDmwN5saMe+KL3b1mQ@mail.gmail.com/ [2] Kairui Song (9): mm/shmem, swap: improve cached mTHP handling and fix potential hung mm/shmem, swap: avoid redundant Xarray lookup during swapin mm/shmem, swap: tidy up THP swapin checks mm/shmem, swap: tidy up swap entry splitting mm/shmem, swap: avoid false positive swap cache lookup mm/shmem, swap: never use swap cache and readahead for SWP_SYNCHRONOUS_IO mm/shmem, swap: simplify swapin path and result handling mm/shmem, swap: simplify swap entry and index calculation of large swapin mm/shmem, swap: fix major fault counting mm/shmem.c | 273 ++++++++++++++++++++++++++++------------------------- 1 file changed, 147 insertions(+), 126 deletions(-) -- 2.50.0