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 A7617C4332F for ; Thu, 17 Mar 2022 23:48:52 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E564E8D000C; Thu, 17 Mar 2022 19:48:51 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E061D8D0001; Thu, 17 Mar 2022 19:48:51 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C30EA8D000C; Thu, 17 Mar 2022 19:48:51 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0058.hostedemail.com [216.40.44.58]) by kanga.kvack.org (Postfix) with ESMTP id B4BBB8D0001 for ; Thu, 17 Mar 2022 19:48:51 -0400 (EDT) Received: from smtpin27.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id 6FB7D18274425 for ; Thu, 17 Mar 2022 23:48:51 +0000 (UTC) X-FDA: 79255520862.27.7C3457A Received: from mail-pj1-f45.google.com (mail-pj1-f45.google.com [209.85.216.45]) by imf08.hostedemail.com (Postfix) with ESMTP id F330F160002 for ; Thu, 17 Mar 2022 23:48:50 +0000 (UTC) Received: by mail-pj1-f45.google.com with SMTP id o68-20020a17090a0a4a00b001c686a48263so1899099pjo.1 for ; Thu, 17 Mar 2022 16:48:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=lpJtQjEfn/J2FKfZSO5FEN5nDVRpWWfEH9M+CcSvJbU=; b=RW+a9Wh2STaMT2/ByGK2Md1L8l3qKvZPNAaJhGfAVuHce7kmLxJdX9c9n536/G9P9y rvKTyft8Ed8eVecVBtxNJ2AhZb5BHkZZRQ6tIYAz7LjMedc55NDEtR/KaNFKvJJDd+P7 dy6mETgUQ3B6OTZJRO7Su7WKmvdgNXwy+9EwnZOz9NXxEQTMUvnGftE1KdHEXVH19Unr 03ZuudCFe8ibtoQLSzHvkHZddzxVkQNTFTI+HDVGugx8wRTOOgdYd3gwkGBPGeF2R8/z YER8jENcx9I+w/nKNDbx91mtq4iJfWJC/8eIMf2hu7fjepJma0HgRYdRXFf3QEkXmcBs OFnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=lpJtQjEfn/J2FKfZSO5FEN5nDVRpWWfEH9M+CcSvJbU=; b=qURvod0IJHMi79m7OWo+K8XURSZ/7mLQTTG9Rn0cef7NgdhL9XM4nSZ4C3o4IbZhhx ikDgcPrRHE5fFshqWPatrlmPulU90KgQrMjHQ2OjKSxVgBfc9G/mtk75GqZn79TOfPfE BhtIswMCHuZcV8k810btiJAym4hjE0F6KbityTUE4w7gYMrOz9AhDBKtOlYduj1yJtEm fqS6YV5RX1uqR192WP7Q3rK0IU7yETZ+o7ufdwDHMUlipJZJ+W5a+67+VjXpbx0RIZfN 70Uh2tRpZY5IxnR3hh9sJL9TDw0tweLl+/cCE9ftUSk7uQGFN8tN6JP+2/M9xgx0Qact SDyg== X-Gm-Message-State: AOAM531bUvlWpSojbkOuk/E/emfFEx2/XI3Q8esMo7gsSg8HrWh9QRww BUSAdFm1oOejFnnjLcraNZA= X-Google-Smtp-Source: ABdhPJzOSd1Yo9VoDx5vkTBlM+flQ+uJvq5hb6bD1MASZybdj0vNcol2PHZgGMYbr9bl0KDm+fi/4g== X-Received: by 2002:a17:902:aa01:b0:153:3a40:1097 with SMTP id be1-20020a170902aa0100b001533a401097mr7196864plb.107.1647560930108; Thu, 17 Mar 2022 16:48:50 -0700 (PDT) Received: from localhost.localdomain (c-67-174-241-145.hsd1.ca.comcast.net. [67.174.241.145]) by smtp.gmail.com with ESMTPSA id o7-20020aa79787000000b004f8e44a02e2sm8581329pfp.45.2022.03.17.16.48.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Mar 2022 16:48:49 -0700 (PDT) From: Yang Shi To: vbabka@suse.cz, kirill.shutemov@linux.intel.com, linmiaohe@huawei.com, songliubraving@fb.com, riel@surriel.com, willy@infradead.org, ziy@nvidia.com, akpm@linux-foundation.org, tytso@mit.edu, adilger.kernel@dilger.ca, darrick.wong@oracle.com Cc: shy828301@gmail.com, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org, linux-xfs@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [v2 PATCH 8/8] fs: register suitable readonly vmas for khugepaged Date: Thu, 17 Mar 2022 16:48:27 -0700 Message-Id: <20220317234827.447799-9-shy828301@gmail.com> X-Mailer: git-send-email 2.26.3 In-Reply-To: <20220317234827.447799-1-shy828301@gmail.com> References: <20220317234827.447799-1-shy828301@gmail.com> MIME-Version: 1.0 X-Rspamd-Queue-Id: F330F160002 X-Stat-Signature: ibjhiyq6j1685jgckgc9uciyyenhhfzn X-Rspam-User: Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=RW+a9Wh2; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf08.hostedemail.com: domain of shy828301@gmail.com designates 209.85.216.45 as permitted sender) smtp.mailfrom=shy828301@gmail.com X-Rspamd-Server: rspam02 X-HE-Tag: 1647560930-392899 Content-Transfer-Encoding: quoted-printable 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: The readonly FS THP relies on khugepaged to collapse THP for suitable vmas. But it is kind of "random luck" for khugepaged to see the readonly FS vmas (https://lore.kernel.org/linux-mm/00f195d4-d039-3cf2-d3a= 1-a2c88de397a0@suse.cz/) since currently the vmas are registered to khugepaged when: - Anon huge pmd page fault - VMA merge - MADV_HUGEPAGE - Shmem mmap If the above conditions are not met, even though khugepaged is enabled it won't see readonly FS vmas at all. MADV_HUGEPAGE could be specified explicitly to tell khugepaged to collapse this area, but when khugepaged mode is "always" it should scan suitable vmas as long as VM_NOHUGEPAGE is not set. So make sure readonly FS vmas are registered to khugepaged to make the behavior more consistent. Registering the vmas in mmap path seems more preferred from performance point of view since page fault path is definitely hot path. Reported-by: Vlastimil Babka Signed-off-by: Yang Shi --- fs/ext4/file.c | 4 ++++ fs/xfs/xfs_file.c | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/fs/ext4/file.c b/fs/ext4/file.c index 8cc11715518a..b894cd5aff44 100644 --- a/fs/ext4/file.c +++ b/fs/ext4/file.c @@ -30,6 +30,7 @@ #include #include #include +#include #include "ext4.h" #include "ext4_jbd2.h" #include "xattr.h" @@ -782,6 +783,9 @@ static int ext4_file_mmap(struct file *file, struct v= m_area_struct *vma) } else { vma->vm_ops =3D &ext4_file_vm_ops; } + + khugepaged_enter_file(vma, vma->vm_flags); + return 0; } =20 diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c index 5bddb1e9e0b3..d94144b1fb0f 100644 --- a/fs/xfs/xfs_file.c +++ b/fs/xfs/xfs_file.c @@ -30,6 +30,7 @@ #include #include #include +#include =20 static const struct vm_operations_struct xfs_file_vm_ops; =20 @@ -1407,6 +1408,9 @@ xfs_file_mmap( vma->vm_ops =3D &xfs_file_vm_ops; if (IS_DAX(inode)) vma->vm_flags |=3D VM_HUGEPAGE; + + khugepaged_enter_file(vma, vma->vm_flags); + return 0; } =20 --=20 2.26.3