From patchwork Thu Feb 1 12:52:26 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lance Yang X-Patchwork-Id: 13541032 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 71F42C47DDB for ; Thu, 1 Feb 2024 12:53:20 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 06A356B007E; Thu, 1 Feb 2024 07:53:20 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 019E46B0080; Thu, 1 Feb 2024 07:53:19 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E23066B0081; Thu, 1 Feb 2024 07:53:19 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id D2D166B007E for ; Thu, 1 Feb 2024 07:53:19 -0500 (EST) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 8EC17140E21 for ; Thu, 1 Feb 2024 12:53:19 +0000 (UTC) X-FDA: 81743225718.01.51D9452 Received: from mail-il1-f180.google.com (mail-il1-f180.google.com [209.85.166.180]) by imf21.hostedemail.com (Postfix) with ESMTP id D7D791C0017 for ; Thu, 1 Feb 2024 12:53:16 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=dOyuPLrO; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf21.hostedemail.com: domain of ioworker0@gmail.com designates 209.85.166.180 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=1706791996; 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-transfer-encoding:content-transfer-encoding: in-reply-to:references:dkim-signature; bh=+dIpEuHcsVA+p6HpZJFPK5u2p7oWDuiKjAseXCAiZTo=; b=HO6+MzqQiafyuFrD8YN/hgFR4Gs+K6xcPXwbIU1VjwghOHbQM6GZ5ObGWh06exsQ0rt917 rJ8AFFrZCIcC5X0hih7du20Cm9D29W5/X7TmPF0F+deAqBRx6F9fzkHr1IoVvoqR4iNTWq y/IGqp2Sb3Utn8ftfkT1RuUxW8s+f3I= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=dOyuPLrO; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf21.hostedemail.com: domain of ioworker0@gmail.com designates 209.85.166.180 as permitted sender) smtp.mailfrom=ioworker0@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1706791996; a=rsa-sha256; cv=none; b=tyE38CvLHtl329/P4Ab8wDPzDNFYUs6q3UQoR/SnSWB40zNRt32BAr4hlLhQGVUxFwS79m lYmPXeKOTKZbpLgr4EQtKc1eMmMmiVA3I2/hIsO4ufeyxf1wctQLEGmjl8LtKHbvUJdcpC qaLWmmuX2srJspaoqMzb3/K3Gxm7QE0= Received: by mail-il1-f180.google.com with SMTP id e9e14a558f8ab-363a76d0c42so754045ab.3 for ; Thu, 01 Feb 2024 04:53:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1706791996; x=1707396796; darn=kvack.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=+dIpEuHcsVA+p6HpZJFPK5u2p7oWDuiKjAseXCAiZTo=; b=dOyuPLrOsEnjb/NSk/8w6s3e8ixckjNhlIvqKP5CB90ve9V3fhUz0VgQNbGBm3kK84 Q1cFtMfZAa7xaM92PKoz5R2ekrIZbxrfH4eg47DSj3hzfGTmzr7KP+2rXKATs4Q07KID kMEtqw7ekDsldbOzWPaF8oGLbwWUid8+skGltEgwraP1PEJnLUa6X9FGMP7JW+qZYslg GvDL6H3QhTV4G6R+0OYUDwJbwziZP+j8UKSkjy53c+pnh2z3FJ1TnxxRPdxDPyYU16IK 778P76Z9Pfo28Bp6R/XRHd5aOlOAcPLJEgeuYo5A8plEfIOhFNGOaJhHpRmssqwtvoXu yOvg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706791996; x=1707396796; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=+dIpEuHcsVA+p6HpZJFPK5u2p7oWDuiKjAseXCAiZTo=; b=Y7GTbMFVXH2IwJXwR3VWK6gN3ejDkUq9ycpzzHG2rnDjX66YrGuCfodJ7jz21AatpQ hd9v/lh47o4T8CdH42DXFK2/uILoA5f+r+IcDbxhGFaD1ATj826u5hINW2cRPO/Gjwh3 7BCGdCPO/IXiMLl06xFs4kLzyCCUvpJa2OpqUsaV50Ik1I/MENMamKNx4tCEir1LkScY HrEgBtYECq5pNRTzwMKBiH3R4NN0LKRemst9Sad26gIFOma6wPmAG2fWgjf63PvieWhB 18CAZUojBmKUnYVhGvIdsYMdKfADxpWPtx/DnxZOxVPjcx3xQIQTVfZzrIMWvYemjPYj dR1w== X-Gm-Message-State: AOJu0YzYTnzurv/gLblXg2y8B75kFJRPbCYwbO1dxD2/vjrjVGyKGy2V ckv6pj4YleQgcT0qi7JEAVNYwp0wRovhgLTG1iqg4wxG4ENKm7ss X-Google-Smtp-Source: AGHT+IG9rtFkIqzbFdbCc8UCLsLfITRXKzQzKEPG60fxsRW3huj2RDpqksiISbxY3tV787PqINAdnA== X-Received: by 2002:a92:d44c:0:b0:363:7a04:548e with SMTP id r12-20020a92d44c000000b003637a04548emr4612091ilm.9.1706791995971; Thu, 01 Feb 2024 04:53:15 -0800 (PST) X-Forwarded-Encrypted: i=0; AJvYcCUQmbzvwjjuar5/jjMYvrUfyQqXab4b3OcMUL5T6Ss1INNhxyM/EtSEtESt8NBceTbbqBw+exoQkoGSxIXlWYk9A6fm4vSBbVM4TGBGBYv1jEUsE2LIYM4raJEJQbIg91R+vXrspkuys7H+WdjiG5pCXXdycCqMtjyUGqg9OBJoQ2ZLPTAaXVlkVf60qmWPCqeN/0Z47xRoIJyNXO7MdPN5l35ojzS3wrt339yLwDcWBflMmKnZ5bWc/Y+lOPfbZs7chGjFduDN6/XTx01BxIg6o+bpGfBlXkYU9gNxb+k3a649thcqK5Vmvdw+BNkFqm8n Received: from LancedeMBP.lan ([112.10.240.49]) by smtp.gmail.com with ESMTPSA id k30-20020a63ba1e000000b005c661a432d7sm10863637pgf.75.2024.02.01.04.53.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 01 Feb 2024 04:53:15 -0800 (PST) From: Lance Yang To: akpm@linux-foundation.org Cc: mhocko@suse.com, zokeefe@google.com, david@redhat.com, songmuchun@bytedance.com, shy828301@gmail.com, peterx@redhat.com, minchan@kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Lance Yang Subject: [PATCH 1/1] mm/khugepaged: skip copying lazyfree pages on collapse Date: Thu, 1 Feb 2024 20:52:26 +0800 Message-Id: <20240201125226.28372-1-ioworker0@gmail.com> X-Mailer: git-send-email 2.33.1 MIME-Version: 1.0 X-Rspamd-Queue-Id: D7D791C0017 X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: sg5icjc3jnhkr4t3dwpkysyatedn7hpz X-HE-Tag: 1706791996-126595 X-HE-Meta: U2FsdGVkX1+NPyB6ydRoZoHFQbwSb+Mvn5fDkeLzJXeG/mRlIKtoZ6YEvkwJyCZHFhBcYbCaEC6cxt9TsGvuvDF8ZzYA7np2a9a83x3yTwJqi5/7HxkJuWz2fP9P8FZDlvN1Y98ojjUXkNmqq1r60l/qK4lGr6RPvdz8i1Oeo8/kWxRjs7+bwL0R+SMdUow4lremvgHKJO9YPB5CXF+N1yqDf0GSVX+POjYHbx1p2eYlQTCza4J77FCG7abPKCg09oVgJnfFbBHpBCPtK5VaO3ItDnd8Q4sKWnJiUTN44jADWXkQ4FIonkg+JDY1yjuu1cNoMClpmkFzJCqdMYtomr+eQSxCfcYP6bFx+ALEyQfZbGZ7a+1BixDOCa4qYiUAJEyCgGtNGHLCnYR6aGsOBedoTTws4xkN2j4isdOV3Zs7ByQu3jjaGZHH0rgteccc4kxqsqJCtH0Tx+Z+ppku9FbAErwYBNxYqY8h5EN7jGNMAn+W73Dl9RaIH6WzLyqkF5ffSYXHSO3OfgYvM1UjhUHSiYXMoipwwBca2OWXIgq73dYAlu/6OH4TbhkdCMOqwOUDRx5QgDuCpuD+ZaglSSE9FVkRJ3iTAISl30qctTfg9+TBea5jzXp1t/0pe31RMPBVCkvBxVUCTbU3EEiEAUEqnE9A+FUfbzms7wqm89zgryKERopY7zdojtj9zj/DWE3jmWCtXxmGHBfPk7Ds5tnuJcW35ZL8N+NO+Afjr49Z2lncOVSLkKZ/tSuCuZERJ4CHAK/RFAFk5k8kIqPO69Jqa2cwgoRM6KYz+ckjYmOLUojpuZ/rxz2iRbMZPBPxqZdRWCIMTfrUkoxngvU3FDWzJiioogh2dnc/T4qeeAJ7rS0o8LjuLoIB0l4+hJUqbLqzGi651jPnZwvYVOoqc3eXXM8R92aXf6c8xRnRWQDZoiIjHUmlRRHKP7FGLXTG7OmsfEnDsGLu5wGfUf/ iu0blLLL wKeap+qrE6ZZn1hH9uVDlo6d31EsYiV3B7TQCbLUd4ajjg0MBhzh+Gh5Z+BW0my5+juqswH7wgiJcPbQO1vyOJmkx0oqj/PpQnQNu3QF+GYlEglMvkKvtLXjlbKUUAr8IVWs7odFtUI07mbTbh6+bdGyXuORUPj/kYNxQXpuo4GoB8POWoKNcHGvjtQ6cNCGXzhXtnMPVlbPlHOZ2cenasV+fq7mcb8u3XT3DhKcdS9uI+gWj8hH0AYeUEQTZ/FD9eAdnBSS4tGXolqr6T+IsiJ6grxkEvMYkAgW2n4dJBYfO+VjM3i5rX8sSlXW0bPU9p+mQqETo/tTXHzk0Mjr9J/2JLV7UpeO0Cb4njcRKIWELtKL6f029SQ0pR2y0anUoWxkDtZt5La28479WuBveQyb8jH9X1sVzSTp3v7C3G3QptTySF+cK8bJNZi7/Dh0zcHiI 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: 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 = 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 = 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 = __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 != SCAN_SUCCEED))