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 2DE2BC04FF0 for ; Thu, 11 Apr 2024 14:08:00 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6E9F96B0088; Thu, 11 Apr 2024 10:08:00 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 672E46B008C; Thu, 11 Apr 2024 10:08:00 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 514326B0092; Thu, 11 Apr 2024 10:08:00 -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 2B35A6B0088 for ; Thu, 11 Apr 2024 10:08:00 -0400 (EDT) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 8DAB8120B6A for ; Thu, 11 Apr 2024 14:07:59 +0000 (UTC) X-FDA: 81997429878.06.0256C4D Received: from mail-lf1-f42.google.com (mail-lf1-f42.google.com [209.85.167.42]) by imf23.hostedemail.com (Postfix) with ESMTP id B5C9D140022 for ; Thu, 11 Apr 2024 14:07:55 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Li48xagO; spf=pass (imf23.hostedemail.com: domain of ioworker0@gmail.com designates 209.85.167.42 as permitted sender) smtp.mailfrom=ioworker0@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=1712844475; 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=J38jC41ZnXO8P/sDoUEYs23U4kjiSY7r3l3MjCcuEUU=; b=jyaVAdwqBvgibgRRBFKnZtTYl0tevfAVB4pxlr5i+v5X+Nt6RZqSOh7dX0rJvNepKXg9ew oAPm0YbnqSdgnqK6xAbE9o/kBv7JiCcVMDpvKyWtAXTshza2adHoF0u3MXGc4HdTK2w02B ZrKa9BzDVt7ZoTt4ggAdFwDKBr8RWuk= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Li48xagO; spf=pass (imf23.hostedemail.com: domain of ioworker0@gmail.com designates 209.85.167.42 as permitted sender) smtp.mailfrom=ioworker0@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1712844475; a=rsa-sha256; cv=none; b=erUcCSmCPm+F69ln8q0cv3njtHErY566kWn/mW1Kztnlcuwe9WHrSk5nz7R3FRQO1G0rBB T1oHsjm7Q/u+bvQlV30W1NVkrAmZo6yMulREF0kZP6PUSC61AK1FNQTjRHua9UcPJ2kTII MH8yeBW20kx0rS6n3AYuN+i/H9CUmMQ= Received: by mail-lf1-f42.google.com with SMTP id 2adb3069b0e04-516d6e23253so6751594e87.1 for ; Thu, 11 Apr 2024 07:07:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1712844474; x=1713449274; 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=J38jC41ZnXO8P/sDoUEYs23U4kjiSY7r3l3MjCcuEUU=; b=Li48xagO3JxA+ackpu7X8vOyzI5dAEWpzG3PjLGLbGSNFUVeYDbI1xv4Ubhp4jVp4F MD4uPqQ2dQ+CFIkZWhxHWe2idJBsw2cMZCZ0rPsKyolg7y+pOjatZzt0lKsieTg5bPLI bezkApCA1j0Zmpb45WXvxACAKKHZWpxOQVmuOpE6vvpmuvuw8iUJqe4eAgcDMz3dRdG0 sGR5S+rtWpyfDeREblrm22opPD4rPnQvsP96l4KmfSm91cDq3ciREpdIyzvmgWqMUH2p L0OFshQHjm18YaaAztTg+mVPUYXBpoqKCdIG0UqdWzPGg/bhRCBVtyaxd/GNTNEaJEQy 3C8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712844474; x=1713449274; 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=J38jC41ZnXO8P/sDoUEYs23U4kjiSY7r3l3MjCcuEUU=; b=V8tHs0LjXt83KV962vubSxrTQAaQdWkM+GBctgGXOpO5qgYQzosFpoixDKGAT1Ajf8 tn63/uws0JWo21o+rOlbq19u1sefxYhJa0zjYfil4kNTetg1X6A54aNfVxJKYcECnj4s kHofiwYX73lVu+T+xIvbzFZleTIV2o8CUjXopSw/q7JmBEYsyPrSi7gVivHIedmk8Moq E6m2q26x1J/bzKUXkJqcFcjKxoji2p0lkiBiULcaBdqS0T1NDxUT3qLcKfv/jD8bNdBu FV6oZLfIb6Q097wFoAysS8lRwfNDboLJbnVxRPkZxOM5vkmLDAY8FzQKrOYqnQoC57Hd wFEw== X-Forwarded-Encrypted: i=1; AJvYcCU54GZZjlRKduNV98ASha0hkvHDyEAS/0yMRrI30xHlgw4Hfa4ex7dhdehaRlHKVJu4EOX6AFL0NACSTI7mpbDnXq4= X-Gm-Message-State: AOJu0YxyuB12D4WkREJgCTPqSUJySoJfL87ebq997W00fZ1u/M93Kfrp wQrzy2GFEj832if7qazeLmO8FFvdIyyRv2rtYKIUo8Jrv+zzXzI5qW1rNJaCxCMQX30fro88YLa tiux7E2iw/Oh/C5kMdAvNGpaxKM8= X-Google-Smtp-Source: AGHT+IHlerrNBE4rq62fuxk45DgLm/ezBp+R0RfTPd1jA0utTaKgjRUNhyba8Ae4iLhdPRqsKk7DDJigP0jq+G8uEi8= X-Received: by 2002:ac2:434e:0:b0:517:87ba:aff1 with SMTP id o14-20020ac2434e000000b0051787baaff1mr2215510lfl.31.1712844473425; Thu, 11 Apr 2024 07:07:53 -0700 (PDT) MIME-Version: 1.0 References: <20240408042437.10951-1-ioworker0@gmail.com> <20240408042437.10951-2-ioworker0@gmail.com> <38c4add8-53a2-49ca-9f1b-f62c2ee3e764@arm.com> <3cda8e87-7095-4aad-beb1-6a420912df34@arm.com> In-Reply-To: <3cda8e87-7095-4aad-beb1-6a420912df34@arm.com> From: Lance Yang Date: Thu, 11 Apr 2024 22:07:42 +0800 Message-ID: Subject: Re: [PATCH v5 1/2] mm/madvise: optimize lazyfreeing with mTHP in madvise_free To: Ryan Roberts Cc: akpm@linux-foundation.org, david@redhat.com, 21cnbao@gmail.com, mhocko@suse.com, fengwei.yin@intel.com, zokeefe@google.com, shy828301@gmail.com, xiehuan09@gmail.com, wangkefeng.wang@huawei.com, songmuchun@bytedance.com, peterx@redhat.com, minchan@kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: B5C9D140022 X-Rspam-User: X-Stat-Signature: bnziyr1c5tod7sda59x9i3yjthfbnyxs X-Rspamd-Server: rspam01 X-HE-Tag: 1712844475-400649 X-HE-Meta: U2FsdGVkX1+NNrl0GXKNv40gMdSI78lZd8Co42TuDppXOmNWh3004mHmY3pVjxOZlPSKNzJuLZ1UDkjQzFzvXkuDjjJxCKte30Gq2SXlg4qQjTEsFnW63GfAWZ63eKGRoVZfZmyojfcXEKX3EWsvrd7be50FO9PFDtVJwxQjIeL47vaJpeCZMGkF7QVQ2jsCUaHSwQiS5l/7cL2p/Mq8yvPfMw5MvxCaZXNs0nijprlG7nVEMqTdeFbfnm8w8eBawxUCj8W0QbW2Ay0uTe1ko0hqFgVBRK4UQgGlV+4yT5m/9aaPDT8KPtuMip+IKMq8FpEG6aiTg3Vl/ahX4Dd1vcZCP3Nbbv5OyUBeXdE0ouuqHsbCZIWlz+AG+WJnVWEMROMRjrnKXD2pdM1eQ4Q2a8QVnWda3Dg2gLtlH4Z6zA3eB64g6BqJWNPRokEK0RrzaoLvSTDfz17xzNNK+OL3f0Zv+vGXzaYA7p8jCMRnmd1X0AfD3q4b3Dr4xaJrQNXk2/iD6n4/39sfcvVh/u9vo8NIaTtRVl3FS/tw1FKCWN9V2wdQ9uDx16Cv8DPoS/7CNMxWbeAjA59IBYCkMOGPdfEWKYnXHmiOZFUSubqUDDH4r0s3JKoxlVvgvGigKEmQhD0rT7j+7daE5FVnNTOJeALaP4ZNHq4pdpEYqfKXVNoOLGhv5c4+4mz01WvuQr1ti4zyiIrFIEpUZL5dTeELFYbNfUrAcEeCr4Pu1va3jt6NZkYz8krpPz+m2AZOEe8QCDxl6b96yZKpTh2ybhojVe4mcp5OvwQO6TJ8lT4ooscTsNqW84mbxEF6y7O1ceCTdVt2AKaBoGv3nEFxX12w7mwMfahH5OVyqKuP7wfCL8f8V1NCtlkCbaznCqwbc22PQvGjEhaGAXCUD62mcCMA9XnT1ST2wtX3PpAZHQNCVNOS4oMrDLk/LRQlvJhyvXlikbfhKBnU0HAzqYVlFay mxuWN5A7 Uf2G/aKL5r26h6qpsUqVd5HL8gks1BWbKRYmO+wzj+v+eZ961mZe9qzhFztBcssSQAqtv/ZaKqpHCZ0CqmzxYtokZnxda3EYbpGOgY14CX8EIztI+Foo6DkEBzWD87Qu2HUgZQ6iM/YDIv3qAQsC6jDEogffEYB57CJavcf5Qw6r4iG1fCHuiMrtWE4CfSJiYGEvOsB2PJLcBQWN93uqlKI/kSQ8IabSaZwZSVD8NuBZuafV/cQLj8r6Xx3XKk1FfWiEJMsL1KPGd5ByLFeMn8Holkard6ebuq6163dtGMMZQBB3dkXBvL4uyuzyJpgBd0GiS/JqL2L2ADW7nwjmJ4hkfFvynv+pJbbGBsp2NfBvJYufOmugS0zMrttPn3fLLvMAgU3TbZnysYHSwvyO+OYYK4M5DO5tJKNOIR+sC2Y06cKWavWFnb1PiSaEc/xf3Geq6/f8TvPolNpO5DZjKm8UyRs/qKsL3I3ZsnL3M2Yc7ZLMs0J/HQq3blI2JNwOCXJ7G9unv4k2k/Kny0+x5kXMVTqgHtxCp02Fb X-Bogosity: Ham, tests=bogofilter, spamicity=0.000026, 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 Thu, Apr 11, 2024 at 9:48=E2=80=AFPM Ryan Roberts = wrote: > > [...] > > >>> + > >>> + if (!folio_trylock(folio)) > >>> + continue; > >> > >> This is still wrong. This should all be protected by the "if > >> (folio_test_swapcache(folio) || folio_test_dirty(folio))" as it was pr= eviously > >> so that you only call folio_trylock() if that condition is true. You a= re > >> unconditionally locking here, then unlocking, then relocking below if = the > >> condition is met. Just put everything inside the condition and lock on= ce. > > > > I'm not sure if it's safe to call folio_mapcount() without holding the > > folio lock. > > > > As mentioned earlier by David in the v2[1] > >> What could work for large folios is making sure that #ptes that map th= e > >> folio here correspond to the folio_mapcount(). And folio_mapcount() > >> should be called under folio lock, to avoid racing with swapout/migrat= ion. > > > > [1] https://lore.kernel.org/all/5cc05529-eb80-410e-bc26-233b0ba0b21f@re= dhat.com/ > > But I'm not suggesting that you should call folio_mapcount() without the = lock. > I'm proposing this: > > if (folio_test_swapcache(folio) || folio_test_dirty(folio= )) { > if (!folio_trylock(folio)) > continue; > /* > - * If folio is shared with others, we mustn't cle= ar > - * the folio's dirty flag. > + * If we have a large folio at this point, we kno= w it is > + * fully mapped so if its mapcount is the same as= its > + * number of pages, it must be exclusive. > */ > - if (folio_mapcount(folio) !=3D 1) { > + if (folio_mapcount(folio) !=3D folio_nr_pages(fol= io)) { > folio_unlock(folio); > continue; > } IIUC, if the folio is clean and not in the swapcache, we still need to compare the number of batched PTEs against folio_mapcount(). Thanks, Lance > > What am I missing? >