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 6E4F2C83F22 for ; Sun, 20 Jul 2025 07:07:34 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CEA866B009B; Sun, 20 Jul 2025 03:07:33 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id CC2A36B009C; Sun, 20 Jul 2025 03:07:33 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BD82C6B009E; Sun, 20 Jul 2025 03:07:33 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id A60CE6B009B for ; Sun, 20 Jul 2025 03:07:33 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id D7595140480 for ; Sun, 20 Jul 2025 07:07:32 +0000 (UTC) X-FDA: 83683762344.10.E8154EF Received: from mail-pl1-f172.google.com (mail-pl1-f172.google.com [209.85.214.172]) by imf28.hostedemail.com (Postfix) with ESMTP id 10FC1C0005 for ; Sun, 20 Jul 2025 07:07:30 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=RJC44Nsl; spf=pass (imf28.hostedemail.com: domain of rientjes@google.com designates 209.85.214.172 as permitted sender) smtp.mailfrom=rientjes@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1752995251; a=rsa-sha256; cv=none; b=hl392d7D0dDMnQfpKJqF3rEC08557PSo+ht4WKiItypqOJGI1/GFabSdgQrthozRwbKqBx nJcwn2/2JMk2Gak1/prVzmwb59n1oV+I9XLfvoPusDyS/tjIDTztq1zG7XP9f8ormInaTL JRhz3QuKIk/EveZ4dejcsftwZ8yhzTs= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=RJC44Nsl; spf=pass (imf28.hostedemail.com: domain of rientjes@google.com designates 209.85.214.172 as permitted sender) smtp.mailfrom=rientjes@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1752995251; 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-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=+Omj6cKltDINOcd+LjxZrx4pcU4/bzBfskgiaVRZ4nI=; b=T2UTO3npBhM8/tQnDAB3X3dDd1R6BULfyAcSLmNdBPczHMJCTE9dVpLPSNlC1ZSWE5itOJ 1vjrUcIVjIcoPmo+7TF5FoQu+mvjs7AkHX5i0GIJHmYS0owplamQ7tTcy6fTp6l/ztD45A ZyPvGaM7Jpdo+4TfDLcgnQLDKpKtIFc= Received: by mail-pl1-f172.google.com with SMTP id d9443c01a7336-2357c61cda7so100135ad.1 for ; Sun, 20 Jul 2025 00:07:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1752995250; x=1753600050; darn=kvack.org; h=mime-version:references:message-id:in-reply-to:subject:cc:to:from :date:from:to:cc:subject:date:message-id:reply-to; bh=+Omj6cKltDINOcd+LjxZrx4pcU4/bzBfskgiaVRZ4nI=; b=RJC44Nsl6r/G+IuKb0UfyM1KdSPEoPPwPe6yAG3xNoPCdunjghziCBJz2VE9JiKM+8 NUbCHyi2JdaW/W2bRfGZ/95eELUvuzlltcPVn8QzmJa/7seVWj0UNyUpmuFMBHfSDbEl g+Zq5ttFk1alU+Q5TeLcSICvDqBZlcsS/+wKsY50kcekfexYMjzYMH/MuuuJmKgvhWwk 5fBWBocvWo4nE7WLLRCzg6TcFa+2yDDfU5X+EbY94gtwtvki4eEd34XYGpZcqaZcr90h EPscWhvHQtY9hBNjUe62xPgBH/A3vlam9yCkHyjpFnEOqONYjsEIgDGAusk0MsNXwtDi HC5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752995250; x=1753600050; h=mime-version:references:message-id:in-reply-to:subject:cc:to:from :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=+Omj6cKltDINOcd+LjxZrx4pcU4/bzBfskgiaVRZ4nI=; b=AJC+GarezOepQLlzytMKMocBvOR+ckAodmN0LZ9m38PBFTuJSiWi3R8mjEPlhNAg+d QE74KQ0xXZebUFWEsmRlBb04W0UJqR9IArx8qjbsBOhTpekQdHS080Y5OaLhSu/aE8k9 aUgIfwLYHjIxDwZPIEnTfcVH5n6w5ZNuBudo8gh7995Zz8gqd9e3NphPa/UcDRjNofeb OREGz1nxb42uFRCNYsJXLinnXFNug4lGS7ViV+LzHDwJK52hhAVnIFwFyehi8XFpUXam R6bbRHRokkLCNpXioCv1cwWbLgTSigNU233CBfKlQVkMH+F5AOobs4khq086n+zqQpQV dCAA== X-Forwarded-Encrypted: i=1; AJvYcCW5nmADnxMV+jzvHr1d/Ys7Wdk3kDDcvs1Lc4tz5ehAptfQOktFOHxHbmkfNAv6tBs1W2XAKUN5Rw==@kvack.org X-Gm-Message-State: AOJu0YyYn/k3qktG6YfYCnd5b4Sa4tQpNtdYdozl+eLEV6uu+3QOYWEo r8++bpEbmQwfNhHQu0OA3Ll83HoNPbuUqJ3QvG/9QEsVEZrgYFB/QQWUR/H04SkntQ== X-Gm-Gg: ASbGncuzpH6IZB7I9Mp290mZwJk/kI15taZtStVjXFpZhLlz0MYjVs85rPzLQTtSvHZ MMJk/rozmejyPC88cOVwYT36MHKT5J6Fw7rMuUEIzvOJI8x7ImuFlaBg6L6VW6C8PR8KYUD/JWF SUXQwRRwQGwXst/Cb7KUs4mosDbbP792H0F1lJqCzamKs8L7eoB5xEn7B8tDiFHMQ3v0JpL9ZNS nKNA9DFhkgyWCebVwjsSe7uOJ13sdRCfnTEbVdvXL1GAGOeBbQtJ+6/ezbLd78kGTits0CFCa/A ZX82W5glGS8q2m0x6GBY2JlT5EH+Ilww1n0/8+09SUA9ZjkjIGjSTDlBuH5xi7vfMxQdfstMKjT RJmom/JVqc34jMF6DlHErK9RQVGGgaceeFL8+kp98Qh7UwEEUVF9F/zAjnv5j04+fdPHU8AGfEO dZAE42L6RLXFRSWDM6 X-Google-Smtp-Source: AGHT+IE96A4Tu2HRyclAkumC6G+QjI3lPLSjFvgKqKO6zW5rPBBd44SGMBsNN/cIaCIyyoJ3VoF8Pw== X-Received: by 2002:a17:903:3bad:b0:23c:7be2:5a05 with SMTP id d9443c01a7336-23f72bebdf1mr1509585ad.21.1752995249330; Sun, 20 Jul 2025 00:07:29 -0700 (PDT) Received: from [2a00:79e0:2eb0:8:bb44:24b7:f6ea:9972] ([2a00:79e0:2eb0:8:bb44:24b7:f6ea:9972]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-23e3b6ef21bsm37786955ad.197.2025.07.20.00.07.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 20 Jul 2025 00:07:28 -0700 (PDT) Date: Sun, 20 Jul 2025 00:07:27 -0700 (PDT) From: David Rientjes To: Hugh Dickins cc: Andrew Morton , Baolin Wang , Baoquan He , Barry Song <21cnbao@gmail.com>, Chris Li , Kairui Song , Kemeng Shi , Shakeel Butt , linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: Re: [PATCH mm-new 1/2] mm/shmem: hold shmem_swaplist spinlock (not mutex) much less In-Reply-To: <87beaec6-a3b0-ce7a-c892-1e1e5bd57aa3@google.com> Message-ID: <6c9a1261-1256-0239-72bd-a713c959ce85@google.com> References: <87beaec6-a3b0-ce7a-c892-1e1e5bd57aa3@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII X-Rspam-User: X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 10FC1C0005 X-Stat-Signature: 9tbzrogjednzyotsf8zbuq4knxs8uuyq X-HE-Tag: 1752995250-575287 X-HE-Meta: U2FsdGVkX1+I9WB80bsBLqqW4epOyWZZmfts+117CNKbYWOAviqW2nysnRYsjvZA4AXswiExxF17uT5fhpaDM535JdVoZ+VkUpC/OK0dCAt/5q2kNTvhLFr/NdTodIzkaifT2vBP2WZHwPn2x0C66vQ1C1UHIk3GKKQNFmYcJaADR9ONCkkAQ9txh+qsuJiat1qvxvQ7U34BgBvirRt2LoRW5kkhBzjGjKTuqCfm2U2FrMsEFaBUFk79D+S/fcyHwH1hLv0YgU/EfcVDKOET1FT3N+Z82AIYRrAGZfIvw9me8DOoeA5Clz1K0+nMnj1WlKYICBsZvEz470Bfi/f2bKMJIvvws1+z9h1ApeqLTjx1uQEZGTyDh2KkwxwKFm5H+jpErxwgaayKcBHIE/37WyNSvvZX0+1HzEzCg2CqXPYZNjcusLqpQHSDFr/DpJPjRENJ8reb1SSuud1OjfgU+G89kjUqBRcWSvXNgep9SH9WjucmoxxwN7VWQqeFZOREiN4jfRR+ni5suZFUeCT+sZAthfFZDTWSwuaH3PMkoNa8i7Ry9FTP6jqhrD7htiLVw3pY3vCb1MBntdYWiMfsJ87kyVKorXJc9WQ2Lr+qf0CI2SIkFcx66vfKslO5m82eLUCui/1f0nzXLQTb6Hz30TxKHFFVE34imqHIQalGP+29YN2s/tozJrV6LtRXAlVxfPKgg+H2Iyi2i39rCTwb9g2Omp1X9895qMgm4mf+M5dkWkRbCRns89x92kQd+LG5XhKBVSRHHsK3xPS/+iguICLeiR+bHhx/c0Ce3sWRcy9NEn/YigjnBQDUXcEGWMsEg9RFMI5mK1RxP3z5Q6rpJyHh1JoU+3iXbWRJzbbcsIhHmzwrEWC8a65sFYmFRf7vzsLm1OtuL4HNx4GMqTd/jmKhL+PxmzqYwFWyYPljZF2qYn7eJJi6A0Apb02xrWD+nzHPSi++gLh4RHiO5r0 R81WHtaH Wf+saNBO27qvbS/47n4eJs2rCBwANXne4qfaPr8yjlqcIsJOeOFeDdYSR9SKmg7mWI9DOOQrkXZHn3Owm4WwGQkM2aaqjjbl8KUws6vSf5WmoxN/lUUZ7vHjRIUnuZWjkXJRqnCaFI76oWerqgtg5ss1pwveUcTgWGW1ULTzJAoxZEuLrQrLBYFcNPelMT2A0zxp5SBd31k1UZtSuFNdYhCtOiCjoMdEAwan3HFdpDvoWmjlROXLDWEvWLgoo8rv3yag5Z8D7fkHKLxO9LJTf1kM9+eI91swYzsZcThotA7EhcjvBQ6u7XyHSupa534IpLnu5C+LdzxA4FGpAlBhWvQTNEzQaBE7TZ9lG/XRrK09dNBgb1fkOueyWhLwslh9MIXyQiL8wJ1d4z9s3V3yKD0wZuA== 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: On Wed, 16 Jul 2025, Hugh Dickins wrote: > A flamegraph (from an MGLRU load) showed shmem_writeout()'s use of the > global shmem_swaplist_mutex worryingly hot: improvement is long overdue. > > 3.1 commit 6922c0c7abd3 ("tmpfs: convert shmem_writepage and enable swap") > apologized for extending shmem_swaplist_mutex across add_to_swap_cache(), > and hoped to find another way: yes, there may be lots of work to allocate > radix tree nodes in there. Then 6.15 commit b487a2da3575 ("mm, swap: > simplify folio swap allocation") will have made it worse, by moving > shmem_writeout()'s swap allocation under that mutex too (but the worrying > flamegraph was observed even before that change). > > There's a useful comment about pagelock no longer protecting from eviction > once moved to swap cache: but it's good till shmem_delete_from_page_cache() > replaces page pointer by swap entry, so move the swaplist add between them. > > We would much prefer to take the global lock once per inode than once per > page: given the possible races with shmem_unuse() pruning when !swapped > (and other tasks racing to swap other pages out or in), try the swaplist > add whenever swapped was incremented from 0 (but inode may already be on > the list - only unuse and evict bother to remove it). > > This technique is more subtle than it looks (we're avoiding the very lock > which would make it easy), but works: whereas an unlocked list_empty() > check runs a risk of the inode being unqueued and left off the swaplist > forever, swapoff only completing when the page is faulted in or removed. > > The need for a sleepable mutex went away in 5.1 commit b56a2d8af914 > ("mm: rid swapoff of quadratic complexity"): a spinlock works better now. > > This commit is certain to take shmem_swaplist_mutex out of contention, > and has been seen to make a practical improvement (but there is likely > to have been an underlying issue which made its contention so visible). > > Signed-off-by: Hugh Dickins Tested-by: David Rientjes