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 47D3EC4828C for ; Thu, 1 Feb 2024 13:50:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C27226B007D; Thu, 1 Feb 2024 08:50:01 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id BD7716B0085; Thu, 1 Feb 2024 08:50:01 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AC7006B0087; Thu, 1 Feb 2024 08:50:01 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 9BE1C6B007D for ; Thu, 1 Feb 2024 08:50:01 -0500 (EST) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 239B51A0EA7 for ; Thu, 1 Feb 2024 13:50:01 +0000 (UTC) X-FDA: 81743368602.05.B3E144A Received: from mail-yb1-f178.google.com (mail-yb1-f178.google.com [209.85.219.178]) by imf01.hostedemail.com (Postfix) with ESMTP id 6007F40014 for ; Thu, 1 Feb 2024 13:49:59 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Kh7QTBCy; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf01.hostedemail.com: domain of ioworker0@gmail.com designates 209.85.219.178 as permitted sender) smtp.mailfrom=ioworker0@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1706795399; 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=hhhpValrnXg9wEmbJjid2X14ibj0VJ0zXjyvvq0lkME=; b=JTbn4j9xyjvTonYO20z83J8F+Z2iGhlOGVQURK92L2I4ARlF/FmaZYeJWCFPH4fE+5U+bZ 61NJOr+RGuCyXmClUbApq45bdhIGfiwTsIW10/3webYlcxBqLXp/jVd73IRVi3yG1UfKWJ qboHwwwRTJSpxfL1RmVuOVMDKZuTZwo= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Kh7QTBCy; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf01.hostedemail.com: domain of ioworker0@gmail.com designates 209.85.219.178 as permitted sender) smtp.mailfrom=ioworker0@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1706795399; a=rsa-sha256; cv=none; b=Rw/6+pG54pKs+eGnV+Uj5zvezgT6EB2xQRYPUEylQjNYHdWDOLwgoREHvmdRWdR9gUG0+H NeJli6meWnl4OREhsypLJV308AXyWyYekc1g/osl6DQdzQzLSvxjNxB14X5SJEMsifcTBT l2fLxZx18sYPRvG39YhvbLt73TaLw7g= Received: by mail-yb1-f178.google.com with SMTP id 3f1490d57ef6-dc6d5267cceso834318276.1 for ; Thu, 01 Feb 2024 05:49:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1706795398; x=1707400198; 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=hhhpValrnXg9wEmbJjid2X14ibj0VJ0zXjyvvq0lkME=; b=Kh7QTBCyqeQJQrzL8R+HAhQKfF+22i3HEc3Ah2s7gpX4IUdsU7/UFQImaIvuUGzFT5 ZxQnS2SdLO88gzflGHamNgEMVNJ5OW0DQxa2XOIWxs1xp+6X8zPKiKi6QZbvbIfPCiOG QIL5WjcyOG4ufxYBy1L+eVK2+pFPyqC6YEgwDyF2HasRPp3tjiLv6AmgPTKDjCcPeJuH IqGvEAEIQKzjg38KJbFNRwkk9ABMFRvWErEjOHgXTGNRKGaHdbiMINoQ9JLgB8to2vXr 5hC1reZ5tGiQfhncFTcL2JjZ4L7h0HvPsdYVKDiiwseVStSRT7p1PM4RhIufX5h9yCNz w7jw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706795398; x=1707400198; 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=hhhpValrnXg9wEmbJjid2X14ibj0VJ0zXjyvvq0lkME=; b=p1miMc1qE2HOfqdsxa5IU1oGQGTfE5DFna2j0ylN70oxeQseqVp0FjJwqfKvO3cgeO tHyRZ3YJ3yVlCdhkW1dRKUQjvDSbzv3p3+9c8p7SanPF5rYE03lemVq+PgxomYLZA9cp CWgYuR8hpvx41H+/RVDVV4W0xfwHbC4z7KB2eM6eMV9DS0TML1GscJU64ZQpkRFjBNXk bR9c7pp2Cg3+YOOUCfsUcaAUUphiPzr4k2QOxrodS1VurIDeVtVzfh92Bh9BuLxaV613 GxSrWT1xvUtaWb5IhMDtdqcVp8kPOz0orwghSS/yVFpMabxwYZQigSI6iPrGkLKI8vV2 d9BQ== X-Gm-Message-State: AOJu0Yzi1LMj8x6mButwU46W93HJNPifr3uhpUEtE8CTbzMr53O90M3+ q/NIZKmTnsMyu6oy9tCeuGXgFaQ+El/t8HPSVScFS7JH6EER1zQjzwR2Sr2LPGp08TB62YtMxDi nas8mvDj8qvD8dQ5ZDU+WYe5Poso= X-Google-Smtp-Source: AGHT+IGjTaMc5KjjiL3/0HwpFMHOhMgLuhuLwIv43KYtBIRreoAaNLZkjmD+IzgcJCeZN9iWJORu44qhuEEAStymN7k= X-Received: by 2002:a25:acc1:0:b0:db9:8670:5a7f with SMTP id x1-20020a25acc1000000b00db986705a7fmr4926802ybd.14.1706795398274; Thu, 01 Feb 2024 05:49:58 -0800 (PST) MIME-Version: 1.0 References: <20240201125226.28372-1-ioworker0@gmail.com> In-Reply-To: <20240201125226.28372-1-ioworker0@gmail.com> From: Lance Yang Date: Thu, 1 Feb 2024 21:49:47 +0800 Message-ID: Subject: Re: [PATCH 1/1] mm/khugepaged: skip copying lazyfree pages on collapse To: Andrew Morton Cc: Michal Hocko , David Hildenbrand , Minchan Kim , "Zach O'Keefe" , Peter Xu , Muchun Song , Yang Shi , linux-kernel@vger.kernel.org, linux-mm@kvack.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 6007F40014 X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: i3mjmy73k7zsypcxhacygmu17hedszkd X-HE-Tag: 1706795399-123714 X-HE-Meta: U2FsdGVkX19swROfl1RfV+Y6hjndIBYRSDv/rYZ/FXe6fmv1MSg+XyJTCcT73O6cSRP662gXFTA14RK9ej9LJfefnNvvpOZ33ob4MqBfsC7l8iiQCC344BOXnBAdTxG3Ztk29tDqZtO+LnE3nQnl0Gb0YZ1hTOoBvUdC8QgxyVCSbVBnHphfwuS9GB6mPRdMqdosBUku13j6+vx8bKp2D6acXF9ViUHh2x5fsurTtYB6cf4bVgyHWeKWsfW9yG/nzWX9f4a/WI9jEuaJaYeOYQv6Jwck0wWRxATfKz4ojmao4Z8lFOOjfzVLomD6YonV3g7pvVzOPh4X0C41+tEW0i7FZdJHGca9cRVKN2+TLekQoitkxIZn0VUeBuzsNI/pIpAWnWLVMhdrNJW91QDOo3EFldF5DB70Cp+rWlTQgNr3YVoxrLH3xE4ASG31U4x6ftfmt4GZnzOO4GuSKFBzvO6K5fxqtv446nZ8cXOS1Ty3paNZpOnG6vblMmJJNyclVyQFSxcvf+SS1dxpZFeDd9E+A5oLqrWOOkm1fow0uvtjI8oaNqinoKex/559yqgYRgjULredO81VRgkT+V5wB68DcPahrbrdcWvKJLPC0lrHlh6lnv0rqb0lX7ycuw/Lr/T4loXTvw58z2S7MIwxlKqb0TxXnQJHw8kIWpESMKIDZknDgVFHNh+94qJKJ77Vmb4kIsN/nxtTkrjGZHLZK1PVQv8AcRTNna7BjT1ZChDniXqA0EGFqUeP/RAS9xSTS32GWXmYpB6f6+opewEhuXXWTb2b6ZXPPsvIbOCl5nO8IUgC5VpAHXG8Rjoq6v1c7K/d+PpGU4tqokuJMbUy+JNdMQg17ck9qLPXSYUUEZOQOli6nWXJQmGqIysLEouolRi9/Ff5ABND7WHBV1EN+rvxHJjcJWFj25Jsu2XLOwMpc8/w6848mSKDeEhR7ZhLRxmaq5cdXbYcECJJyDr w2je7h7D iz/ImfSfkVaJSHpq3GjD1PZfCNyDhXaUHL8TY7v3wD+u4/Gj2dGG5C+rxrE1+9othKDjGJt1P4SuPFYlsGZRPHxqqPnqP62BCypW9yGLKbBgAwd0W3L/i16ysErtOzYZR39MlepYukBGsecsOFQ+C4oksmveFUTdA2w9nRLjiu72TMSK1iRAVtgdrZC9Je5n5VpufSUwjWSSXld126QAbRTopMCUeNsaVhthHJVZZe6dgBw2TsGMZjwVIohVSUyCjD41bp48yEppK6ELUDT06sv9GLkuN4stqRpI/SomszhRbWFz0q/7floePMFPG4VNKgdvdJMGbteL+wWQfUP2JCiWCHzi0eNVLFOr/Dm5YCKnhsTaciTPsENknjxLVgPQRAaG/bM3yV3zWlW3xE8WkkGrhLQ== 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: THP: enable=3Dmadivse defrag=3Ddefer max_ptes_none=3D511 scan_sleep_millisecs=3D1000 alloc_sleep_millisecs=3D1000 Test code: // allocate a 2MB chunk using mmap and later // release it by MADV_FRE Link: https://github.com/ioworker0/mmapvsmprotect/blob/main/test5.c root@x:/tmp# ./a.out | grep -B 23 hg 7f762a200000-7f762a400000 rw-p 00000000 00:00 0 Size: 2048 kB Anonymous: 2048 kB LazyFree: 2048 kB AnonHugePages: 0 kB THPeligible: 1 VmFlags: rd wr mr mw me ac sd hg // allocate a 2MB chunk using mmap and later // some pages marked as lazyfree with MADV_FREE Link: https://github.com/ioworker0/mmapvsmprotect/blob/main/test4.c root@x:/tmp# ./a.out | grep -B 23 hg 7f762a200000-7f762a400000 rw-p 00000000 00:00 0 Size: 2048 kB Anonymous: 2048 kB LazyFree: 0 kB AnonHugePages: 2048 kB THPeligible: 1 VmFlags: rd wr mr mw me ac sd hg root@x:/tmp# ./a.out [...] root@x:/tmp# echo $? 2 On Thu, Feb 1, 2024 at 8:53=E2=80=AFPM Lance Yang wro= te: > > The collapsing behavior of khugepaged with pages > marked using MADV_FREE might cause confusion > among users. > > For instance, allocate a 2MB chunk using mmap and > later release it by MADV_FREE. Khugepaged will not > collapse this chunk. From the user's perspective, > it treats lazyfree pages as pte_none. However, > for some pages marked as lazyfree with MADV_FREE, > khugepaged might collapse this chunk and copy > these pages to a new huge page. This inconsistency > in behavior could be confusing for users. > > After a successful MADV_FREE operation, if there is > no subsequent write, the kernel can free the pages > at any time. Therefore, in my opinion, counting > lazyfree pages in max_pte_none seems reasonable. > > Perhaps treating MADV_FREE like MADV_DONTNEED, not > copying lazyfree pages when khugepaged collapses > huge pages in the background better aligns with > user expectations. > > Signed-off-by: Lance Yang > --- > mm/khugepaged.c | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > diff --git a/mm/khugepaged.c b/mm/khugepaged.c > index 2b219acb528e..6cbf46d42c6a 100644 > --- a/mm/khugepaged.c > +++ b/mm/khugepaged.c > @@ -777,6 +777,7 @@ static int __collapse_huge_page_copy(pte_t *pte, > pmd_t orig_pmd, > struct vm_area_struct *vma, > unsigned long address, > + struct collapse_control *cc, > spinlock_t *ptl, > struct list_head *compound_pagelist) > { > @@ -797,6 +798,13 @@ static int __collapse_huge_page_copy(pte_t *pte, > continue; > } > src_page =3D pte_page(pteval); > + > + if (cc->is_khugepaged > + && !folio_test_swapbacked(page_folio(src_= page))) { > + clear_user_highpage(page, _address); > + continue; > + } > + > if (copy_mc_user_highpage(page, src_page, _address, vma) = > 0) { > result =3D SCAN_COPY_MC; > break; > @@ -1205,7 +1213,7 @@ static int collapse_huge_page(struct mm_struct *mm,= unsigned long address, > anon_vma_unlock_write(vma->anon_vma); > > result =3D __collapse_huge_page_copy(pte, hpage, pmd, _pmd, > - vma, address, pte_ptl, > + vma, address, cc, pte_ptl, > &compound_pagelist); > pte_unmap(pte); > if (unlikely(result !=3D SCAN_SUCCEED)) > -- > 2.33.1 >