From nobody Sun Feb 8 19:56:43 2026 Received: from APC01-TYZ-obe.outbound.protection.outlook.com (mail-tyzapc01on2078.outbound.protection.outlook.com [40.107.117.78]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1D1681D3564 for ; Thu, 26 Dec 2024 13:23:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.117.78 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735219396; cv=fail; b=hRB+ehw2QkUi5NF1iy/nE8xSpkCpgaGgf9TOPIpqiwF3HXm85Nr222dfLf9/l5diymvOB/e7IRTcit4qnLvukcTqxZ7taxqPtBx7fPzWb0rOIESiylAiqh+v4Mf0VkURcQmgGCRNBFVbcwshPbYC+cz90Bl22doviJZKsQVFZxE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735219396; c=relaxed/simple; bh=MToFmjNKLRixvekvfatfTa9JQOHntuHXzS1mpTMb0uw=; h=From:To:CC:Subject:Date:Message-ID:MIME-Version:Content-Type; b=MkAvIxy1oPxK+lmz/3E9/TqI77lWcw8OgUglfzZfUinWPtQqjCxDBjvafKgZe91SUTkCAgS957IrG3HkbqY71jwpd72G8IW9iOhwRglA1lHczX4akqeHBPolcGNPZlFGTbTesLRNrX7LR5LUoLW65SLsDuAU009Y0QDdinSc7Lk= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=oppo.com; spf=pass smtp.mailfrom=oppo.com; dkim=pass (1024-bit key) header.d=oppo.com header.i=@oppo.com header.b=ncPmJtSq; arc=fail smtp.client-ip=40.107.117.78 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=oppo.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oppo.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=oppo.com header.i=@oppo.com header.b="ncPmJtSq" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=fPGRzjfGHJ8+Y6npR8gJbC3THDQoC6URSOPXfAcDjSmxtusU6P+R+6EsTaTL0sS6RtiDVaACoBZJIcy3mXQhHpDBM9rzp2f+0Tu6496pBm9wAQ7kSazpZT60zncSscjtfT0lep3PoNKRMcHyCcznTdRZhBFgneYBN8hi1PU0lcmjaRDES3kPs5owlKCPvo+fT0RHSfBi/FucvxplzqFcdw5QM9tHG1CjWr/gpt47MYIYHtPorkQVImJbDa+Dg6lFIVioG0QVQTCtFODPPYap7L95TNTdetI6I3Z+W336szY+zxfZGTGaFcMyl6s/sDc8lH0OjMszFhwWKxaGZIHH/g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=4z9TptuwOQsDNmfFmpVozoNCWJs9pU/Qbnj3y1Ep0Is=; b=s9V5p8sn3JL4UerrQooIHPruw3sVX/QgNfcRMY+UiAEYlSKIGl0q8E/MLyXD2YR7V9kpjX3sJkYQ0ztoWFfH19hj5BhUYSznZ10QuwS7PP70NjR6Lf/l1PK1NnkF/Sh6vNykH7s/aDt7KHll6cLTruNlTJ1zRB7eE3Vpn87izs1EChHxyqRxiSpOlsIC6OT0harRs9Bx4JlegXAAzL03s+FBm17eZ0vrLuzVDLJE8UEWnIrHuvXrZ1NiJ3iwmlYk3+9ItyBWvIc4L0fW4RitVioBzFu4dMJ69pG8liI/f7fesXLV13PZZM39vJvovwCpVq0Hw0TulGCjlyM/Mk3BtA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 58.252.5.68) smtp.rcpttodomain=linux-foundation.org smtp.mailfrom=oppo.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=oppo.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oppo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4z9TptuwOQsDNmfFmpVozoNCWJs9pU/Qbnj3y1Ep0Is=; b=ncPmJtSqHwBwhEuPTHAi3G0sG4F8jaXjtTTDAshooXbby1WGgbCMS97nzoDt1ie7W1dyRnScd3mTPjAB5tEAKXwFXhPAyInz6Z++BPLg3m/Y/oIMemlEamj1Y/6jpnKUclDaZPVRj6KlxZCF5eM+lMo/UHoPVbrIWUxvD+nGCa8= Received: from SI2PR06CA0008.apcprd06.prod.outlook.com (2603:1096:4:186::23) by KL1PR02MB7311.apcprd02.prod.outlook.com (2603:1096:820:11b::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8293.14; Thu, 26 Dec 2024 13:23:10 +0000 Received: from SG2PEPF000B66CD.apcprd03.prod.outlook.com (2603:1096:4:186:cafe::23) by SI2PR06CA0008.outlook.office365.com (2603:1096:4:186::23) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8293.14 via Frontend Transport; Thu, 26 Dec 2024 13:23:10 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 58.252.5.68) smtp.mailfrom=oppo.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=oppo.com; Received-SPF: Pass (protection.outlook.com: domain of oppo.com designates 58.252.5.68 as permitted sender) receiver=protection.outlook.com; client-ip=58.252.5.68; helo=mail.oppo.com; pr=C Received: from mail.oppo.com (58.252.5.68) by SG2PEPF000B66CD.mail.protection.outlook.com (10.167.240.27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8293.12 via Frontend Transport; Thu, 26 Dec 2024 13:23:09 +0000 Received: from PH80250894.adc.com (172.16.40.118) by mailappw31.adc.com (172.16.56.198) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Thu, 26 Dec 2024 21:23:09 +0800 From: hailong To: , CC: , , , , <21cnbao@gmail.com>, Hailong Liu Subject: [RFC PATCH] mm/madvise: enable files from read-only block for MADV_PAGEOUT Date: Thu, 26 Dec 2024 21:22:59 +0800 Message-ID: <20241226132259.7975-1-hailong.liu@oppo.com> X-Mailer: git-send-email 2.25.1 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: mailappw30.adc.com (172.16.56.197) To mailappw31.adc.com (172.16.56.198) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SG2PEPF000B66CD:EE_|KL1PR02MB7311:EE_ X-MS-Office365-Filtering-Correlation-Id: ba01107f-e77b-4480-dd8a-08dd25b07132 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|82310400026|1800799024|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?1nhWuQBFT3VL0ytfMlsSjaNJvq42mSoIs+ff4Bvu8/0bBkhWlYXG2LnE5lv+?= =?us-ascii?Q?h3edS/20txORnlt2noIHl7xksmm1OTZYhjnDXsQ3pxqJS5MiitGLAxrH7vvj?= =?us-ascii?Q?88dr125cGvKA1AJhOLI8uvk6BBvhoUuxw1CiYMurjSal5kGLLMuukT59U7kR?= =?us-ascii?Q?GNSrR7St0olChxRPuyyGXMGWhoBxf3v02o7Erefh0tvWlvIPzX69sTTAqkkp?= =?us-ascii?Q?IxbSgPOgmZagQ8H8xwe3HZsz9WxkLMw8NoXLXxpOV5WJVjVLUwhHoxIn86TG?= =?us-ascii?Q?pj8nxhueVIKt9Hbj8tm9tn1L8TnciT5tZ2QnM2ozV5Qjrk81AaN9RYwgsp+T?= =?us-ascii?Q?7KxEvrEYvlkn4wUVPxTQ05nerh/3wsdFVHDHrpPiRMi95kww7K4OP/sumkB7?= =?us-ascii?Q?wxvLYodYFQ7UEheoctdEXUVtqpcX3MvMVRx+daUHCXSfpxRLtjxhNFBVyP1r?= =?us-ascii?Q?ypOBkPvDY8eUF3jS3Jqa2psXiLyax1yINw2+0ABPuEZZXIJZY186+XGthNtg?= =?us-ascii?Q?V91OoAMi3tus/FfrnjP1wQTLw4W7D6v/27OoK8mMUEKf9D7OzjDEMURam3Hz?= =?us-ascii?Q?xTs27HfItjwaWmqY2sCnKFRjrR4NhG2TRgBfM+Ry4GL6o7fA2nPtqtG+RIO0?= =?us-ascii?Q?ueo+EWDGQ9ClEcEhSLb/1IFVXSidlj/NxxF9P1+0pMFt1Muo9oGbYJaQ/KKh?= =?us-ascii?Q?kPddZ1kKSy4hf1S5NquOShDRtNhmrLJrmhqPVA0hTn7+SshgvAJo7ZzTqQzh?= =?us-ascii?Q?WCe/wwKTFbJzuKVX9k+Rdm1iALirzkiqOiG7t5MA+DZ1q9XrfPxzlKqiiTOM?= =?us-ascii?Q?RnVeEQKIq9oi1lWR7lyLrrTrPrG6nbGWxr0CxSL9/GYyVA3PBdI1fdFPw/x4?= =?us-ascii?Q?k+vQQwvP6VjQ1Ww+gHMGWEfyo2cgvs3DgLAtyUnaS4fengGfsa/7x6FVYPCC?= =?us-ascii?Q?nq1Cyv7B+E5Yz51wAATfGvyRK43Oe0/oGWHi/Wc23cfBoM9e2iBNw6fIs8Ru?= =?us-ascii?Q?Ml7wQD8x+MtG43cbipmOBVZE2VsWDLgYddGz2ucidBWUAE+Fk92GSo87PU3w?= =?us-ascii?Q?K24xru2gk9oQ/J7xlur+6n3ATj7UkG26ZtU040gqRVKjWS6BaSOiruWDG5Yu?= =?us-ascii?Q?3W/PdpkoqWmTyeHKMqNEGaZceRyRpjrG9ZGz1Cz2xmEAtezghuxqxPFx4aPn?= =?us-ascii?Q?VCnomOGzF3h18dr1FxL9qPGUvKopz4PMwrkkrp6BtXMPVJiudPYF2AkYngj7?= =?us-ascii?Q?no1jS9iawqrYPMjMbAbaK6f4hPSuh/2waEQV0Eg7Zml6PKPAejpQ8eFsyfVx?= =?us-ascii?Q?fHhe8gWE4zBRiLxa8dphEjP1D3rYFHE6m2UMz2Qw+4dpgTr3Gg3GFR6KeZtY?= =?us-ascii?Q?D31PIjjEgtT+xniyDwyVXnwKa0MfCsrQ1b8u3WiJuYQlKj5NRJXBlW3qmCzD?= =?us-ascii?Q?15kwAgS0giJ0XkTChlsPy5Y3LZforZcFTvX4WQl4g7s6+YsHukCOIMTdI+sZ?= =?us-ascii?Q?S+n4zOR2FAkoG2Y=3D?= X-Forefront-Antispam-Report: CIP:58.252.5.68;CTRY:CN;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.oppo.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(82310400026)(1800799024)(36860700013);DIR:OUT;SFP:1101; X-OriginatorOrg: oppo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Dec 2024 13:23:09.9171 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ba01107f-e77b-4480-dd8a-08dd25b07132 X-MS-Exchange-CrossTenant-Id: f1905eb1-c353-41c5-9516-62b4a54b5ee6 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f1905eb1-c353-41c5-9516-62b4a54b5ee6;Ip=[58.252.5.68];Helo=[mail.oppo.com] X-MS-Exchange-CrossTenant-AuthSource: SG2PEPF000B66CD.apcprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: KL1PR02MB7311 Content-Type: text/plain; charset="utf-8" From: Hailong Liu Apps may load files from a read-only block after startup and then switch to the background. In this case, the system daemon reclaim page cache using process_madvise(vmas, MADV_PAGEOUT). However, currently only inode_owner_or_capable() or file_permission(vma->vm_file, MAY_WRITE) = =3D=3D 0 meet the conditions of can_do_file_pageout(). In fact, for read-only block devices, we can directly discard these pages and free up memory. The test results are as follows: Before Pss Private Private SwapPss Rss Heap Hea= p Heap Total Dirty Clean Dirty Total Size Allo= c Free ------ ------ ------ ------ ------ ------ -----= - ------ .so mmap 199 0 0 128 27616 .jar mmap 748 0 88 0 39444 .apk mmap 6818 0 6188 0 8076 .dex mmap 102 0 80 44 1120 .oat mmap 148 0 0 0 11836 .art mmap 341 0 8 652 30748 Other mmap 42 0 0 4 2228 Unknown 5 0 0 1012 1528 TOTAL 17984 0 6372 9412 138096 31023 1362= 8 17394 After Pss Private Private SwapPss Rss Heap Hea= p Heap Total Dirty Clean Dirty Total Size Allo= c Free ------ ------ ------ ------ ------ ------ -----= - ------ .so mmap 206 0 0 132 27332 .jar mmap 625 0 0 0 39288 .apk mmap 613 0 0 0 1668 .dex mmap 22 0 0 44 1040 .oat mmap 151 0 0 0 11836 .art mmap 340 0 0 636 30756 Other mmap 44 0 0 4 2248 Unknown 6 0 0 1004 1532 TOTAL 11801 0 8 9624 131336 28939 1348= 5 15453 From above we can see the *.apk mmap* is reclaimed. Signed-off-by: Hailong Liu --- mm/madvise.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mm/madvise.c b/mm/madvise.c index 8e5bf11af1b2..503ee5e03b7e 100644 --- a/mm/madvise.c +++ b/mm/madvise.c @@ -337,12 +337,13 @@ static inline bool can_do_file_pageout(struct vm_area= _struct *vma) return false; /* * paging out pagecache only for non-anonymous mappings that correspond - * to the files the calling process could (if tried) open for writing; - * otherwise we'd be including shared non-exclusive mappings, which - * opens a side channel. + * to the files the calling process could (if tried) open for writing or + * file from read-only super block; otherwise we'd be including + * shared non-exclusive mappings, which opens a side channel. */ return inode_owner_or_capable(&nop_mnt_idmap, file_inode(vma->vm_file)) || + sb_rdonly(file_inode(vma->vm_file)->i_sb) || file_permission(vma->vm_file, MAY_WRITE) =3D=3D 0; } -- 2.30.0