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 B700BCF9C73 for ; Tue, 24 Sep 2024 01:55:59 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0B9856B0085; Mon, 23 Sep 2024 21:55:59 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 068A76B0088; Mon, 23 Sep 2024 21:55:59 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E71B96B0089; Mon, 23 Sep 2024 21:55:58 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id C8F1E6B0085 for ; Mon, 23 Sep 2024 21:55:58 -0400 (EDT) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 8471A1A16EC for ; Tue, 24 Sep 2024 01:55:58 +0000 (UTC) X-FDA: 82597965996.23.F1B6E4F Received: from out30-133.freemail.mail.aliyun.com (out30-133.freemail.mail.aliyun.com [115.124.30.133]) by imf02.hostedemail.com (Postfix) with ESMTP id 2C3598000D for ; Tue, 24 Sep 2024 01:55:53 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=linux.alibaba.com header.s=default header.b=JSNMTjSo; spf=pass (imf02.hostedemail.com: domain of baolin.wang@linux.alibaba.com designates 115.124.30.133 as permitted sender) smtp.mailfrom=baolin.wang@linux.alibaba.com; dmarc=pass (policy=none) header.from=linux.alibaba.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1727142837; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=QK7m63y5+dM5qtwR3OerysVuM/WrkXtW1Hv0gD6hl6k=; b=CpXPwODk5fboeDTxAwINs3K/d0gymKUUrpfueC+Pk9u8aM2f/SnHKByK6VVZ7hO/psRc0u UnU+QEOXNfvFbKiASu0/wKp7QOKLZrt8CwJz6b+0DW077eZAhBGXhzMyl97YYznWajDppw cJpZdCdBijAv8m89MJURKnAL4Jc3zVY= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1727142837; a=rsa-sha256; cv=none; b=0mNXRRuwn8ttM2kDVx2zCE0vBXuHbrh7l00oYQbPqUaqL/N6/0KRPo/2kp7d65zcBSwZmG IgvmzAqGoxD0yCguk6JJLR8mjEJS66ECFopJG40LafJ80NY7WEMFTJpLOMSICmF04nn/bt STZAM5LZeGz28wMC/U/t4WueyO65Mqs= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=linux.alibaba.com header.s=default header.b=JSNMTjSo; spf=pass (imf02.hostedemail.com: domain of baolin.wang@linux.alibaba.com designates 115.124.30.133 as permitted sender) smtp.mailfrom=baolin.wang@linux.alibaba.com; dmarc=pass (policy=none) header.from=linux.alibaba.com DKIM-Signature:v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1727142943; h=Message-ID:Date:MIME-Version:Subject:To:From:Content-Type; bh=QK7m63y5+dM5qtwR3OerysVuM/WrkXtW1Hv0gD6hl6k=; b=JSNMTjSoSXTN8SE+KZOPhXrM1OBYtUAJMK0HxfOgDrHSccRZg6MxSbhH5KvRqx0mgMa8gDzzUtFTr5GkKJWFRZKhSR9u9eRFdGnXAOxT7n0wQcmCS8YBD0dPYhJWXNtTxkPX5VBfiLxOULR0NvYj7sxXmOuYrGUBsVTalg+pRpk= Received: from 30.74.144.117(mailfrom:baolin.wang@linux.alibaba.com fp:SMTPD_---0WFe6d.J_1727142941) by smtp.aliyun-inc.com; Tue, 24 Sep 2024 09:55:42 +0800 Message-ID: <4d38c65d-760c-43a5-bb47-8e0235c13a51@linux.alibaba.com> Date: Tue, 24 Sep 2024 09:55:39 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [RFC PATCH 0/2] remove SWAP_MAP_SHMEM To: Nhat Pham , akpm@linux-foundation.org Cc: hannes@cmpxchg.org, yosryahmed@google.com, hughd@google.com, shakeel.butt@linux.dev, ryan.roberts@arm.com, ying.huang@intel.com, chrisl@kernel.org, david@redhat.com, kasong@tencent.com, willy@infradead.org, viro@zeniv.linux.org.uk, baohua@kernel.org, chengming.zhou@linux.dev, linux-mm@kvack.org, kernel-team@meta.com, linux-kernel@vger.kernel.org References: <20240923231142.4155415-1-nphamcs@gmail.com> From: Baolin Wang In-Reply-To: <20240923231142.4155415-1-nphamcs@gmail.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 2C3598000D X-Stat-Signature: xagfhuertxir1e6i94rfmzwzqehts8eq X-HE-Tag: 1727142953-639372 X-HE-Meta: U2FsdGVkX19AcT05gz0RKxFyvH+KMnmLxTH36E2Un5zOFBZEdQ+jBKoCPiPS2lv5sZqR//s8tTYGBLFv8fSaFxk/LxCJ2dtWUJ5Wux2prCew3eh3R+VPTDoLRgh8tdNI9vjCQnPy2A47i8QpS/2y8cMZymGXwK9ET1PYK3G9OwVBQpIezyrjivN5QYADHJwKqFMb2V5pCdEGO15vDw8udEbkz9MhUe0G2AXmjVphBamEkIVb2IaBrku6SR09E5X1VIjjGdS4X19u9MP1R0lHOH+JFXhZYiDKXYf2+rvMaU2UXlPhGuq85pq1E5qSU97ZU5+HqohAzS6xNp7nRiu/BWD5d7QnhUeXsnN+QevRr12DS60Vef7u+8rAcFa1+6v6z0wHGH9AsWCSUhkvpWkwkPIeJRJ3FdCTYaoN24F0oDlbkJ9ghpE3adwVHTALAyC8SvEzGgtNMjyr+sOKiYdDTOGumHCcfvoIZGZT+u6+f4w/81BY3adRny29jTYljNKk9mJ1t/Aj4Dtx9SLBkVVRk0XEnWqu9tMyjHsgkUaVVC86GIQzUTt/s8MdD0LyxeTBSV42nDzYS1LThfZpNFFHtLMfOqayrG+zfbsKlVwnnWfj0SBl0Fs84iP22vZD8AJ2TpTy86c8qDILD20jmyqP4YcT7edrFsGwfr4Y27wQGYXwaBzcTXrzpx4kkMQTBTzwEmIDQeuNzGU69Ta7fVHPzFGCt5ltprhkaHcOa2mXannugyL/aOmPhiKLbvb1bdx7syB1f93zafVOvumPPSSCYCz244Bj1n+0rL1z7p2E/FPZVYpgyk0Y7KppGrL1bcj6lGTf8DQPPbYat8XUyouJPggywu97jYmhMBbZXCekrNk1MytKZMJu4bXMvnerVkblATzcH6KlOv7j1rPUlEGmHXckI5c/D6A2bLdxmvun6awZbNqFFHq3+O49W4B8LbhL4CpWkqupdf6fNGPgHMU koUZigjs ZupyQ2c8FZ1Vli+F6GuqCeYPGJfj/Au3TFatUh/XI1wu7Nztv+YMnMaZD8Uj9U6ztxtujOdDjIDHXfUXcEd6Q87zM2mbOh+83UDmVXCW4mEmUAjfMvqDMKmOlluy3jATlSVIOxAmNJw3T2tw7M//TE7TNLABc7fXWswX5L/RUWcML3lcGmxQjsGDVzg8jELL68sMGwBZCbdjnveEvAS1eqkUO820n/Red4/qlT2ZwUS3XWgwCEaziEYZNeSI1bfc4/KLygJJTA8rU+yqXC9/f8zE/0eU10O9ybDBom4YjD59cvvc= 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 2024/9/24 07:11, Nhat Pham wrote: > The SWAP_MAP_SHMEM state was originally introduced in the commit > aaa468653b4a ("swap_info: note SWAP_MAP_SHMEM"), to quickly determine if a > swap entry belongs to shmem during swapoff. > > However, swapoff has since been rewritten drastically in the commit > b56a2d8af914 ("mm: rid swapoff of quadratic complexity"). Now > having swap count == SWAP_MAP_SHMEM value is basically the same as having > swap count == 1, and swap_shmem_alloc() behaves analogously to > swap_duplicate() > > This RFC proposes the removal of this state and the associated helper to > simplify the state machine (both mentally and code-wise). We will also > have an extra state/special value that can be repurposed (for swap entries > that never gets re-duplicated). > > Another motivation (albeit a bit premature at the moment) is the new swap > abstraction I am currently working on, that would allow for swap/zswap > decoupling, swapoff optimization, etc. The fewer states and swap API > functions there are, the simpler the conversion will be. > > I am sending this series first as an RFC, just in case I missed something > or misunderstood this state, or if someone has a swap optimization in mind > for shmem that would require this special state. The idea makes sense to me. I did a quick test with shmem mTHP, and encountered the following warning which is triggered by 'VM_WARN_ON(usage == 1 && nr > 1)' in __swap_duplicate(). [ 81.064967] ------------[ cut here ]------------ [ 81.064968] WARNING: CPU: 4 PID: 6852 at mm/swapfile.c:3623 __swap_duplicate+0x1d0/0x2e0 [ 81.064994] pstate: 23400005 (nzCv daif +PAN -UAO +TCO +DIT -SSBS BTYPE=--) [ 81.064995] pc : __swap_duplicate+0x1d0/0x2e0 [ 81.064997] lr : swap_duplicate_nr+0x30/0x70 [......] [ 81.065019] Call trace: [ 81.065019] __swap_duplicate+0x1d0/0x2e0 [ 81.065021] swap_duplicate_nr+0x30/0x70 [ 81.065022] shmem_writepage+0x24c/0x438 [ 81.065024] pageout+0x104/0x2e0 [ 81.065026] shrink_folio_list+0x7f0/0xe60 [ 81.065027] reclaim_folio_list+0x90/0x178 [ 81.065029] reclaim_pages+0x128/0x1a8 [ 81.065030] madvise_cold_or_pageout_pte_range+0x80c/0xd10 [ 81.065031] walk_pmd_range.isra.0+0x1b8/0x3a0 [ 81.065033] walk_pud_range+0x120/0x1b0 [ 81.065035] walk_pgd_range+0x150/0x1a8 [ 81.065036] __walk_page_range+0xa4/0xb8 [ 81.065038] walk_page_range+0x1c8/0x250 [ 81.065039] madvise_pageout+0xf4/0x280 [ 81.065041] madvise_vma_behavior+0x268/0x3f0 [ 81.065042] madvise_walk_vmas.constprop.0+0xb8/0x128 [ 81.065043] do_madvise.part.0+0xe8/0x2a0 [ 81.065044] __arm64_sys_madvise+0x64/0x78 [ 81.065046] invoke_syscall.constprop.0+0x54/0xe8 [ 81.065048] do_el0_svc+0xa4/0xc0 [ 81.065050] el0_svc+0x2c/0xb0 [ 81.065052] el0t_64_sync_handler+0xb8/0xc0 [ 81.065054] el0t_64_sync+0x14c/0x150 > Swap experts, let me know if I'm mistaken :) Otherwise if there is no > objection I will resend this patch series again for merging. > > Nhat Pham (2): > swapfile: add a batched variant for swap_duplicate() > swap: shmem: remove SWAP_MAP_SHMEM > > include/linux/swap.h | 16 ++++++++-------- > mm/shmem.c | 2 +- > mm/swapfile.c | 28 +++++++++------------------- > 3 files changed, 18 insertions(+), 28 deletions(-) > > > base-commit: acfabf7e197f7a5bedf4749dac1f39551417b049