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 10D25C71157 for ; Tue, 17 Jun 2025 18:35:26 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A53736B007B; Tue, 17 Jun 2025 14:35:25 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A2B166B00A5; Tue, 17 Jun 2025 14:35:25 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9410D6B00A8; Tue, 17 Jun 2025 14:35:25 -0400 (EDT) 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 872A96B007B for ; Tue, 17 Jun 2025 14:35:25 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id D8C59160A71 for ; Tue, 17 Jun 2025 18:35:24 +0000 (UTC) X-FDA: 83565745368.29.2617C4E Received: from mail-pl1-f174.google.com (mail-pl1-f174.google.com [209.85.214.174]) by imf29.hostedemail.com (Postfix) with ESMTP id 10CC4120006 for ; Tue, 17 Jun 2025 18:35:22 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=IokFxBLz; spf=pass (imf29.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.214.174 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=1750185323; 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=7djLTOtEoUl9hyAVxr+uOJrVUsIiPRKfKPff6GsCZXY=; b=4mBnMUc7gyWsuLdAmJLKYUEntsyXpB3NkPE8hRCe79ROqDah8aRdylQAJVJ61a0uqSS8C8 /jnDJWXEFLaJ/VCN8TYP9lWPk8ipMWeRmROVexwxAgKEfQp0yBWe4YK7wnjzvL3omVDgxM uq682HCG4hcVp2DCbz2Bp4rTeANqPE8= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=IokFxBLz; spf=pass (imf29.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.214.174 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=1750185323; a=rsa-sha256; cv=none; b=4+jEOM205Q6Y4b1g0eeJRKZ/UzNMFCkmf+QREr/dcd1AXXecspkmX20tm64Z9s1tYWhOuZ dQace8Tj5dCY304nBhP1YyIQp7qa1SPCiP/hjivTIGjaAib4Hvhpvm5oJewpkX1ZjWKTtZ lF+sb9BN50xtTmxvvj8D+YYnQ5+8m7Q= Received: by mail-pl1-f174.google.com with SMTP id d9443c01a7336-23508d30142so71501365ad.0 for ; Tue, 17 Jun 2025 11:35:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750185321; x=1750790121; 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=7djLTOtEoUl9hyAVxr+uOJrVUsIiPRKfKPff6GsCZXY=; b=IokFxBLz9M2gYrEzCShFkWYL5YEXr2irlXbnnXagutX48LdvE0Ym0o1EuQy6Ner4Vs bMIWHWhgnM1Q18Ja3Tmi8TE25pEreAnak+37ac3YfajMASltmTKkP/2BOB0HA33NpR5i cj1hZMtdMRNwO54bktIChK4SZTQMS9pGvSVJVCwUSWDvPCuO0W+zrZimBIzXt38vQXzd 8N+VO79hxhl4LT0n3HfUjuc+ggwi7DdHPSTJsPT/VD2aUuAzQ8JnF0cDjTEjlSRdVbFw gjYIScyVSwpF0UajWWqUjulp/ZQrOpJ+f7gHVTgc97P8FYW9TvVTPEg9Pf7UWl3DHCsc gxmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750185321; x=1750790121; 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=7djLTOtEoUl9hyAVxr+uOJrVUsIiPRKfKPff6GsCZXY=; b=l2qxs+rA9AkUYBC8DO4mXDfliHP5mTxCod3GOsyTVzSBy0+kf6EwSNqPqMSciez589 o1NGKQz1oAkHJBclr7dWXcnbyIK9ntq31zQHHOUhbneYg/B6ocP4Jj27p05FY2iwljKj td+3LSxt6p8iL9L4Vs0DU9OSOBifMxtzPrxSSsHrLZ9vP9IeEQHXj48rSmx4IZZRYLXK 63rg+azljz8bz8jKLKiCIwDHTsxby3o5XQS5vcNr8+pb2vH99fpnPRBy91G2CH2WVryI wGIMALS7v+l0NPLxEN1plRcophVatz8uGI5bwlqQIUzdSg/Zp17/tSkiKd3Sl1nhXH9j qfoA== X-Gm-Message-State: AOJu0YzWE4ezHGgdhFNmpIanU7IXUXDmbZ0PoNTWUJbWbW2ifX+8XDWO Revnqjz+SFtGfPOBWEg/xfYCQB7rts5zrIl8motsfyP8eEDfcik9nTAqdsy0+w3r0hU= X-Gm-Gg: ASbGncs/qOT8zDt/stc4IktXFKAF9dcYR2kWih4mYPKKadEqfkx03waX4IPzfFb9F/C AsdLvd3QT4hlYVmgA3nqRoA94/qVdiRRG7nCHJS/S3pIwDWTu/PhDKKFyyJ/THeYmf5Je1aPtiP 20Y9inEe8Xf2ibCETcVHIiBH3FQ9/liaCodOt2rh1CtCzKXuDYywviOMiJwFQr/ATd0TSKy4AC0 FaQFO3/fsgRfjtmyUr49Cqq9PbA50xo/cW2IyB3y31tcGn9/oCnFKmBR9ZMgRkJCmhVvVpJmTCO cP+rkjK5afowvtK8fJMjKLZZmdy1t4TEXmtIARd9+3nfYirjAQAfMFB/2/yV+lbXIyz0D8WsiMA Sh0uordrzRFKG45dZPw== X-Google-Smtp-Source: AGHT+IH/fhCnjvjyePjXry73lNt5hxWzhjJkG1DFqaSWhRwCDAVL4uXMyva6j3FGR4B0I7uhRFXz2A== X-Received: by 2002:a17:902:f544:b0:235:a9b:21e0 with SMTP id d9443c01a7336-2366aef565amr226952075ad.0.1750185320716; Tue, 17 Jun 2025 11:35:20 -0700 (PDT) Received: from KASONG-MC4.tencent.com ([106.37.123.168]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2365de781c7sm83753715ad.128.2025.06.17.11.35.15 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 17 Jun 2025 11:35:20 -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 0/4] mm/shmem, swap: bugfix and improvement of mTHP swap in Date: Wed, 18 Jun 2025 02:34:59 +0800 Message-ID: <20250617183503.10527-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-Rspamd-Queue-Id: 10CC4120006 X-Stat-Signature: qgks9z9yo3pb7m4jt585sohb3sr7am16 X-Rspam-User: X-Rspamd-Server: rspam04 X-HE-Tag: 1750185322-646626 X-HE-Meta: U2FsdGVkX1+SkXIbdmTYKEr4DdQBof31iuxtEBpegVe5IIqSgHa95e7hIHY80VER6g8o3EWNF4CPV67TbS9+gI4noqdvm5Zi7nZ0egnH6qJ4kK6klCoxr/sA/sCIr+dq4nEyHaWBhYCDF1c0+lQLsesf41Fey2zTMrYrKKcEwV3mukrtKdfL8w3UQg+H8toIynpQFkDBFdYaj1HOXm7QhOv0SFyjH6cE7JPt7GK0jg5kQbTvgu6m0SqjONqDE8mEgZfNaJjAL9Z/x27D7PwHnRKC9zbu3WLByP7CcoJh2/tOYDear98aXrDOx4XUvwsAYRxgC5784pN/bR+DlbYHn3zcIo8BmqfJt7vOYBX4XDhU49R+5Flwmb2URaXZO/QsG1l7RDoi4LFwxR2T8c1SbQtyhA7fYeTQ0mjuvDQTEPIE70bEYEtO6jvZLZZSiE6vM17Rk4jjkOg2pCBC3U8rzTKwCbl8TcsSuJugHeUAUUsNh6mIr+FRXGxHEUYwVI1Fha23Furs+rb0wC9cY7zsyJ8OY2dq7F2oQ4bwCdfRsEwYvoOWdqYDp5UY+EwuVLlmW/HeCBBm33YXsIz7n2XqoAHpm5TstugljkUwcZOnAwGkBELLRsnTLV4+siE8dInLTRvZBCLwuBVUh9Cg+WRbozgD6c57kzn5iXU7Wbk12s+CvMRky+YKz6PMpSqJZwjV4GFEZrwLy2WAQHe7WYr4m4FsdugO4jZUK6CJe/nrYFvEjtVOsbb4mE0NEgViRF86x1MyK3mP9FDTpGVG5VBkza5f9muhHZ358drkFW7iP2+DiRCIGhtJRaTdz3UR6fwZcDYWSotVU12tkDtnBmKjtHm8P1+M+t2hp8GnI7YZPuHZ+eb4aTf9koUNjpGu2j52gNjVW9JUEktcaMA7MGRAn8IZPOOstLPe8k5naZNemGO/rnosiXw74fBvn/1P/7fnhjxHvFkf1cjG74bkRT9 s/s3vCMG ucBZa54thSo9kNIXlJp/F4sld3f2ZMSnfsdGKiErBwgOZzl9rkVj0vvj3JvK6hvfNJlyMGCOs/M0m166u0Lsu8LZ7ysgf/h4lGrhz0S494J1x2fhgD4OQ2QoY7cHQxTTKoxbknzBC8bXiB0zxSGmQtwo6sriw9dKfi9oWCHO4LkDCwPPDrv3eGmyLKnLsYLffktwo/Db1iXWu0dokUM95tGE7EAlD7zbFQnggE0o3JjpcsiRnuYGlAe4jCijxrC2kER6tE997yMPpZoef9noXkIo2AgBxKVhvm1+P6mUJ8NbnO8bMj9p5eOIP75gG/lguYHiK2B8w9u2Avb9aGEdoVgZzOwPK6IcWzoU8sckhwv4Z1IqvICRr6oVVUDFhUwTiS1JPyp0O0Bk1iS3kjeceDlipmqtIvZz2RBVyGvFGDlHn8VE1C6Azb3zRKYFLpUQpn6DFN2E3hqRf0GCS1S3NHGiyhN9SXs7hv1YycelYIl+YwL4FNWv0aJNN4hwTvOW0JP/qPcAvV45MyvAoLu3JxTXISWxS3DRTHU3yH+8nNj7FIUmvKxeh8HROviGX7yVJIkIYOWFr5/ky6VtzFkI25NOG7lqfZUU/yJ5QgtaK2PESmWo= 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) and added more sanity checks and comments. !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 (36 samples each): Before: avg: 11.23s, stddev: 0.06 After patch 1: avg: 10.92s, stddev: 0.05 After patch 2: avg: 10.93s, stddev: 0.15 After patch 3: avg: 10.07s, stddev: 0.09 After patch 4: avg: 10.09s, stddev: 0.08 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 samples each): Before: system time avg: 3945.25s After patch 1: system time avg: 3903.21s After patch 2: system time avg: 3914.76s After patch 3: system time avg: 3907.41s After patch 4: system time avg: 3876.24s Slightly better than noise level given the number of samples. --- 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 (4): mm/shmem, swap: improve cached mTHP handling and fix potential hung mm/shmem, swap: avoid redundant Xarray lookup during swapin mm/shmem, swap: improve mthp swapin process mm/shmem, swap: avoid false positive swap cache lookup mm/shmem.c | 247 +++++++++++++++++++++++++++-------------------------- 1 file changed, 126 insertions(+), 121 deletions(-) -- 2.50.0