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 41726CF9C73 for ; Tue, 24 Sep 2024 02:16:29 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7CF816B0085; Mon, 23 Sep 2024 22:16:28 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 77EA26B0088; Mon, 23 Sep 2024 22:16:28 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 66DAA6B0089; Mon, 23 Sep 2024 22:16:28 -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 425CD6B0085 for ; Mon, 23 Sep 2024 22:16:28 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id E5E19C17C3 for ; Tue, 24 Sep 2024 02:16:27 +0000 (UTC) X-FDA: 82598017614.13.0E7E2D3 Received: from mail-ej1-f54.google.com (mail-ej1-f54.google.com [209.85.218.54]) by imf22.hostedemail.com (Postfix) with ESMTP id 1F400C000C for ; Tue, 24 Sep 2024 02:16:25 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=b4HdAWr0; spf=pass (imf22.hostedemail.com: domain of yosryahmed@google.com designates 209.85.218.54 as permitted sender) smtp.mailfrom=yosryahmed@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=1727144068; 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=0k1FN4MxEmeH8y9wuYWDQg/1jQnyip2ukqCSef53R4k=; b=6jsq4nM9mWupHCUzK9A5R119KjXzYzjKr0vd0pxnbQcsK8rsw0Sh0nzBZ92N4wpLATlIjq hbTpXLFF5Dov2QWFNWk2aOrynEOiBAvn4376jZ/UyzISNMu+VHJiL2dzwIv+ZzDfpx2UZP L7gfD4A4exYxpqh7nHB/ug0sPx4j6tQ= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1727144068; a=rsa-sha256; cv=none; b=kNf6UjCUauiCidjGFH/zXp0Fw7ZnfXKxpE+68JmRzIZmIjC7UqbX+OBxEDduJlDu5V4BOG mFw3YjEgy6weULphOy6E4v01Qi7XKGCFINAoKfeKQmDBL8OuejS+cpU1L1Hg+URGHh5OOj i5GJnmlq2sbnBuUbOfpDsp/s8HgWvGs= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=b4HdAWr0; spf=pass (imf22.hostedemail.com: domain of yosryahmed@google.com designates 209.85.218.54 as permitted sender) smtp.mailfrom=yosryahmed@google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-ej1-f54.google.com with SMTP id a640c23a62f3a-a7aa086b077so653885366b.0 for ; Mon, 23 Sep 2024 19:16:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1727144184; x=1727748984; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=0k1FN4MxEmeH8y9wuYWDQg/1jQnyip2ukqCSef53R4k=; b=b4HdAWr0x6kSKUeXePRwQanyhU2tDSUa6qyrUI2lXIIgD9TrDPYqV812z5gcMthfSG eLptZRtvsiIGDwk76XoEr4VhNphwpgAgOVEgxbblzsEER3dYmNz4RK+FRU+SeAnNxy+B UQ2KaAHeh2WJcjgUEY5g+fDO7uk4BHKAHq/iX/sWNrh7JMzyUQrue29/zhLNpD2yoftQ zkU8xvCJFBFn9nLEjoa1JFVGBueDb53nksMq1EwzfpXMtQYb4ZEbVMjtOIL5ENRo55BC pMJrt1zyzyPGujHHmI4LMGEOjZjaz50/bqCO3W35zDaI0uf9fBNp4ioittLjQwRt7Su3 qstw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1727144184; x=1727748984; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0k1FN4MxEmeH8y9wuYWDQg/1jQnyip2ukqCSef53R4k=; b=IWUUPc2NHLLhz77t2yPNwfrUh7b/7HrDLBU/ehAjbkL/IVRDCnpS2qe19ISQNIN8hF g0zV8LJpmrYl+2N2mBGI5U3jKIj3Tv9NO6YP0XYcgwAFD7dN4ry7NEGuUSo7v0BvXQBj Z7zGRbgKg2WH5L0Y0Xeyes1MfBAbAnwJzwnLVlLZMfslhc60/4sdmFMMZhUnM++yFRm0 TdQcW3sNTdQgS5CACART7yeqFcwU0ADutkyE348Pbv0K5P9Fb9gnfxJcawaU/+juVdLu JARznOdGKru2/z2oGqaRPTOnewdQo+mzZy1WgjL6OaSRxj9ApiKEN+Q5FW49uvMbkRC6 lIQA== X-Forwarded-Encrypted: i=1; AJvYcCVudcEThLn450ozrbph+8E9TpbqSYzByFCNMoafu6gGJhR7G6SnlCLUTIGArSbmPZcELHRB+ecy+w==@kvack.org X-Gm-Message-State: AOJu0Yx00VgAs7Fduo7L2mTlJL42mKKcj2+MrF4tyQZUPlUwZjQ27aB6 67ctaWNGigAQdgJJw5F2PrOUKuW6WfWJt/oMwIf+tchl5dWsZXdERX8Zgq9PJp33vf8XlL8PJND sgyWnQerAJqlHuRBzyfQ+rVDNwQ5Y5egWWucw X-Google-Smtp-Source: AGHT+IHae7upEiBlqxLXCl/vPI4DXcCUvTiJ/wdUkT34X2pIpquKBp57tEW3ErNn+Mag6pVUk7mxHJ21ZhE1zZOW8NY= X-Received: by 2002:a17:906:bc12:b0:a8f:f799:e7d1 with SMTP id a640c23a62f3a-a90d503430cmr1239116266b.38.1727144184322; Mon, 23 Sep 2024 19:16:24 -0700 (PDT) MIME-Version: 1.0 References: <20240923231142.4155415-1-nphamcs@gmail.com> <4d38c65d-760c-43a5-bb47-8e0235c13a51@linux.alibaba.com> In-Reply-To: <4d38c65d-760c-43a5-bb47-8e0235c13a51@linux.alibaba.com> From: Yosry Ahmed Date: Mon, 23 Sep 2024 19:15:47 -0700 Message-ID: Subject: Re: [RFC PATCH 0/2] remove SWAP_MAP_SHMEM To: Baolin Wang Cc: Nhat Pham , akpm@linux-foundation.org, hannes@cmpxchg.org, 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 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 1F400C000C X-Stat-Signature: 7tw6cz5kgd87q6kr1tb1ctsf43wi9ht9 X-Rspamd-Server: rspam09 X-Rspam-User: X-HE-Tag: 1727144185-319051 X-HE-Meta: U2FsdGVkX1+QNzmWeBrNFkUcXypojIJVBhno/R6BdNFceFgvv/igoxf2l2KHOXLLDFz8S1AQ3/EwLStgBDGNdPnSDSPA3F4lJ4VnJgVt0eD+iGD7ghEqm6Q7iYz9teGQah7HkKetx9LGahITqXsI6evF3GAC9xRAvnYhD3iXSw4F3l/w3xDwCLtUi+5bCpNDGmDdD1sSIm6j63za5mh3vJK7zcJ6RCP6wE2aJFPY4xzjGxeJYx5vCl9k0lrkMxs7lp4GOK13I6SuquK7YxkyFVUGn0fHcBiEdHvQ1yPFutHMybXisj/EdAPTakzFLIBy7nQTjK2PUn38huxEq97R3XITC/g/3Ivx/DK103Gw/6nhqKKz35P4iHdMJIuuhQdMwJiAZVpbsOELa1KGbuSXND+dBc5llW5LyLOqY/w+qhxYCD5PiacQo6CahKZDMj4YVHPAN+/aJdcAHzVXBLvqyT2mkQcbbhHcKJhdPmRtu2sdNU1qsW+7o9TuRJp/O5ipJ9JGL6kA3X7FviaRRVInz8Fz2DH97JsNun0ha6uStoGlwFHydgKaLbCmkB90RDqTs2E2snfCjWiRz84AQVHtLbnRmcclJsU8LzP6v/ruzHk0jb33dZI1ykaXnabkyUAxZXZdeZS71I5MPaZszuGrFrD/b5u/U1XTFm0R4PtO7B7ioIwJqzddD+YBQXTN9AUChvMvT2Y/Bu48W7ZX6ET1goM2rRayIl2DB2Cr3ozyGGUdQG2xZrJMRuMthS/EiJgJojPZNvayuZ+yQneRdVai9ODAq5/8EcZDj650LlhuAXzYmlDlH00XjTwqH+omVwlUsoXEq01+BKz30Qj0SsCdfVyAAZpCAe7euqv0mUgQSGW8F/QDc38MEngdaCxcyok1dNCfcfQ6mWXKrhmvgn7r6XkNxj62Ir7agF35JaKjN63aLkLYkgvXLljT1mz/1t6XodtLcukYRcOHnAoQOeC 3TZ9+K7R 5YfnTmjmGQl96sQvCWS+r1BKDl2ACdN9pnmUBQ71Z4pH5PzCil//UAx1EAbPAg6KE3Or2IOuuc4C1fBIdL/EMRCkfDTh8sniwH9xHMrSHK2Ak1XCJjylp4Smjx+mRi9pT4pi2tlUQA1eXhTCcWYNwu+i00kXz+7gdRbzqxlnkwy9X26gKXkNCBAV5G1MzyvazSidHBgFIO09+3+WRe9y00Tf79CF1J3I+3Z0tTKKKw2mmHNna71L0zenKV2OtEDlPZC118N+w1+BbYv0= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000003, 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 Mon, Sep 23, 2024 at 6:55=E2=80=AFPM Baolin Wang wrote: > > > > 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 i= f 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 =3D=3D SWAP_MAP_SHMEM value is basically the same as = having > > swap count =3D=3D 1, and swap_shmem_alloc() behaves analogously to > > swap_duplicate() > > > > This RFC proposes the removal of this state and the associated helper t= o > > simplify the state machine (both mentally and code-wise). We will also > > have an extra state/special value that can be repurposed (for swap entr= ies > > that never gets re-duplicated). > > > > Another motivation (albeit a bit premature at the moment) is the new sw= ap > > 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 somethi= ng > > or misunderstood this state, or if someone has a swap optimization in m= ind > > 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 =3D=3D 1 && nr > 1)' in __swap_duplicate(). Apparently __swap_duplicate() does not currently handle increasing the swap count for multiple swap entries by 1 (i.e. usage =3D=3D 1) because it does not handle rolling back count increases when swap_count_continued() fails. I guess this voids my Reviewed-by until we sort this out. Technically swap_count_continued() won't ever be called for shmem because we only ever increment the count by 1, but there is no way to know this in __swap_duplicate() without SWAP_HAS_SHMEM. > > [ 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=3D--) > [ 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