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 B90D6C7115D for ; Thu, 19 Jun 2025 17:55:50 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5AAD56B008C; Thu, 19 Jun 2025 13:55:50 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 587D16B0093; Thu, 19 Jun 2025 13:55:50 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 498236B0095; Thu, 19 Jun 2025 13:55:50 -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 3E2926B008C for ; Thu, 19 Jun 2025 13:55:50 -0400 (EDT) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id DD2F5140809 for ; Thu, 19 Jun 2025 17:55:49 +0000 (UTC) X-FDA: 83572903218.05.103FD59 Received: from mail-pl1-f176.google.com (mail-pl1-f176.google.com [209.85.214.176]) by imf30.hostedemail.com (Postfix) with ESMTP id 123B28000E for ; Thu, 19 Jun 2025 17:55:47 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=DS5vRA4+; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf30.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.214.176 as permitted sender) smtp.mailfrom=ryncsn@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1750355748; a=rsa-sha256; cv=none; b=I2dvkoFvb7O/IOBd97D5CeEHOIDPt4u9wdW/YqMK4SQEjovkin3eWP3MalQ29lAZIcYG2J dxnEmKlXJmCf2eJe5nnILdrCB5kt8LGD5a3ODatf2ZAustzGeTvWsFh959TLO+DHt+1rBm nv9EKWlE5Wal+G4l407dxIJxKFDQrpg= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=DS5vRA4+; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf30.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.214.176 as permitted sender) smtp.mailfrom=ryncsn@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1750355748; 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=YFPkl141gY0e+eTLDBsaY8gxEuG35+5FTBscLDZNXqs=; b=4zCSFjC5//HK5msJrKuKfKGrsnmJzXL/twH69i1J4lGfjHWJ2BZAbqVj0aupCU1ZTMe2/4 HIWf+poPT6w4KQEp0D4EZ1VGpA2+kfFonTXuPHhm7or+cuShtC0He2LoAfEJfobx1QPPxR whtMZ2J9jBlDVCAJB627z2P3Jpf+VFw= Received: by mail-pl1-f176.google.com with SMTP id d9443c01a7336-234bfe37cccso14045125ad.0 for ; Thu, 19 Jun 2025 10:55:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750355746; x=1750960546; 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=YFPkl141gY0e+eTLDBsaY8gxEuG35+5FTBscLDZNXqs=; b=DS5vRA4+BMuIt5hnk2O1WF3OXrfBX89bVvKofsUG1ew0MS1OBEtHjz3WA0o2P76+04 qDoVjd+pYiW4mKtNKS6PJKgjtQGd5+qFmEmHL+5olMb+gA9p61iBaIbxWLTAqNYS2Lgm QUEEbE2AXdAoYA3otGUQn0bU3SOIWdi8K013Kx594DEp77IlOOsFejOZNCNYIO8fvmeG yp3k00JLOdhzCLqZqg+wnKrp8naxdiZrjtE0OOsj9kjfu3G34HGR5Gy0JoqbNA1Fp8V8 GZFOuSSeiEOwm4uvevkktEs2r/vtSllGb6GQmcjFVv9jMLbLy7RIp6KK4EyfkZmVgU4N TD+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750355746; x=1750960546; 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=YFPkl141gY0e+eTLDBsaY8gxEuG35+5FTBscLDZNXqs=; b=ry5+mYt0aCxsHH88l38VqoChcezW0VrnYoJ7lQIWWMyVPyOmU5GTpzG6HiHcCaV6ZN 4qkb1bTcWDMEkYmRHKwsfgDN4ePf5mviea1WS0jHFWellwcrI8E0dPlzJOZ+wjM8Zacc U5b67aQVB84m7SRs4WPbxy4ktOomLyJVeovq54xB+YgveW71B7Nxn77QFnjUt2cO7JoO oqqrYkf5eSBNgQqQZ+yVZN2iz1pNxX8oqgJxalqX1s2imhSnvNT6OuJnnNS91iHaKrGH IrjKhUS9nD1zjzFdMDFJ3oYGudXOeFGfqwkuigDmPjFEEemUd1339hXro77YfurSm6YS Y9eQ== X-Gm-Message-State: AOJu0YxjBS+StLVjiAfuOTV34SRAEwML03qnQPtY6Bmi//8xWoC8MmvH 6ut0lfI2GQ0x7OO0xWchKb9Q1zL9TAx+qUyKsdzqulVeJgYbxV7uFrO9KfeAF2JfTSQ= X-Gm-Gg: ASbGncsO4rarAlM3bSd9mU/kItQ3Fu2uhZAWfOQs5F7TtvCjpq2vgWjfbTD4lVc8Znz FYZSOVWyOy8myM5O8kl14SzwAC7Z6ZrgWjZpEYAol8Myp3jzlZ3ECJbqX19YOjJX6pU/jgDhder WCa1UkXbab2n7WaORYQeB1ms7VSpvmUR1JKxf3iYPw3ZIXc3LTjxNz3vaz/azquxkEw0MIYZMbi H9w10R6GqmGUvbwJC0y+q1U/gbqDIUl/jHuMK0j/DLssUHsSlBLgjGqt96JZO3hSUyBhsbSORut eFDudPohFsMfP+rj/J55NzDvD6T1JuVL/NcntYGesIKKH3s+1z9Iwn/I+rBp52crC/ew60QCsQ0 wFGxWYNI= X-Google-Smtp-Source: AGHT+IHZG2DsQE7KI7a0qG8bvIP1lFFEqaDMNKiSef79DOmEDLMlC2VDLDNE2Aj/g+ItUbW6KkURsw== X-Received: by 2002:a17:903:19cc:b0:234:ef42:5d75 with SMTP id d9443c01a7336-2366b00ee6bmr315670375ad.20.1750355745820; Thu, 19 Jun 2025 10:55:45 -0700 (PDT) Received: from KASONG-MC4.tencent.com ([101.32.222.185]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-237d83efa44sm255215ad.77.2025.06.19.10.55.42 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 19 Jun 2025 10:55:45 -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 v2 0/4] mm/shmem, swap: bugfix and improvement of mTHP swap in Date: Fri, 20 Jun 2025 01:55:34 +0800 Message-ID: <20250619175538.15799-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-Rspam-User: X-Stat-Signature: kqkpn41185zimu91tuddbbbp4mko88ng X-Rspamd-Queue-Id: 123B28000E X-Rspamd-Server: rspam02 X-HE-Tag: 1750355747-430988 X-HE-Meta: U2FsdGVkX1/aG3sHnqLoqPyh3ekl3UZ4IAfMe0liJQAzX1VZd+H9ohUrF+QpDh2J4ktAkpN7+YkIjsU07IEyMqYDmX7tiUWdWEUGXYdAVwAY9wN8GRpcvYImniT5m/D7Aumy1ZGMs5KvlEXwGiDqfJiOhCkKab3ogZs952LrDlyqMhn1ezfe+ON1RdZHV5TvGcn9cjZmgSBtEJciGZNZgJAO3DJudFf/NsMmu3QwNj5uWwygm1fWwc57T/AXAPD4B5SNpkw8OeFhBLHlmYF2fn9tc2Ko8/gi760BQsZTmeq7mEgrOoAIToLONr6oQlynSS8NZRsszs+HLP9Vz5ica90eMzXx4L76EoNB4RfUzd+Kd1GJKgbMOqDMy28WRDWIII2ctwlRamHyiejMRFjwo0Gb2oCXy371hJ6TYvAnPM/fFnF59JHghhroKXKl/zccxe2eLnSxYd7ZFe0z/A/BhshSStrqcTp7Jz2nCzvqIt3h7UjX/aY1zgf3kiZQWp0Pf8BD43Ss6AmkTS9OzsZzMI4mNsfb+j+jHq915LNet1BVGrMdjyj3pVbGfGC3t3+krR8ueoOyXeOD1LyJ7mKFL0SIgEieq2oYPLDigAVCnp4nFsXD+D1yIpaQ+8s4wsSOjoNWtIEeARkOg9nUV9q8puuLrg8FBL25VEcBJkGjcA/p5elRDgY7NzYXTDp6WOKObzjhOAZUteVsCv2fgtTQTWBWUgdbZ0xV+5OEUDTE1+Thn8egM26lVfOjRuY0B3Tnj6U48YFi/CeXEgzQEYy3HTgUkY8s0ci4vivSdn4sYdBvqGKOJVAgeXsP5usJE928bvmNJopOfrfQ9A0VXZkRlpM/ym8rgmRyieABEkGjoLBNcGOju2b+AE0ZAeMU8wLrvztCnyVsxHpa6hw0wVG/4KfpBfwpUq9F9oxH+uyIcjZkqZG+IrgQUuEaXK/M8LuqFrjMoMkwQBy2Z4kZVbj /ufi+9aO uDDqNMrEC9U+J1zux6TgrDHOWN3MLXgU4+Y6oto57x69bDcvxL5px3c/e17fuwtGPcJEHxFArUgrxRGWd8Yi3Yvh0NqDuXc8IXbhnxobc0Uk+MDUE7VUGrqVa0OV+ITktF8rLoreWKHliC1BHGR6JrbrdgfgDzVMD2+me7dgxNnzNOHO1KRxFkA8psrmtuoycivIZU3dP/QoGxQ60JFdd7LYfmZx+QgI4hvH9pGkhMku7pj7sLGsUZUu2rtS/UtwnWt+1oiL2hxkTBTSPOp7XQIGvriZ5NBhkGS+vwM0h6/3FExKzBE9aeSGqn3FPnwaRKsxYg5O8ZTlzkpc6e16LjS295x6v0RkOtQSvRJgZvhXtVSUXIL8pJ6N0JJPHl4kTrQP1HZ2e04ow8KrjuDp5CY0IFD21zrHPkPYIsAC23sePkYLod03f4tSiZUK/wTsRj535aAifdQOOxSbfecz5B63XZUfSKe5Ba9XAYtQ2LkR6dg9yPrxEfIwjvOqBSFJ8Du0A90bR552pCoHxkDUy7mIPiZNq+JaRM7pyRBQ5/hu4lHsw+pVK2FEMp++NElCB1PcYUVg+0veKw0HDOxXQQIBsLNARWPyrSwCfS5q6UIU8vLY= 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. --- 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 with 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