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 1029FC71157 for ; Tue, 24 Jun 2025 05:58:22 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 87A346B00B9; Tue, 24 Jun 2025 01:58:22 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 851666B00BA; Tue, 24 Jun 2025 01:58:22 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 719806B00BC; Tue, 24 Jun 2025 01:58:22 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 5DBB86B00B9 for ; Tue, 24 Jun 2025 01:58:22 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 12ED1141A1B for ; Tue, 24 Jun 2025 05:58:22 +0000 (UTC) X-FDA: 83589239244.28.A7AB1A1 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2068.outbound.protection.outlook.com [40.107.93.68]) by imf20.hostedemail.com (Postfix) with ESMTP id 09D851C0009 for ; Tue, 24 Jun 2025 05:58:18 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=amd.com header.s=selector1 header.b="QzN4QK/B"; spf=pass (imf20.hostedemail.com: domain of Raghavendra.KodsaraThimmappa@amd.com designates 40.107.93.68 as permitted sender) smtp.mailfrom=Raghavendra.KodsaraThimmappa@amd.com; dmarc=pass (policy=quarantine) header.from=amd.com; arc=pass ("microsoft.com:s=arcselector10001:i=1") ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1750744699; 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=npimcWnWmW3Czx8tRelspzT5xqxVtPyB2JuYUhRJ0Q4=; b=77fqf+iL7vg3biVrtZkf4LRfSqg8yDrxkSpd4QbvtcSYPbWRjuv1KEuYGNcJjfw+WPQ74k 8Q8JI7fuUy8wvcd77J6V8ICVvyg8svaGilwNNCrck/Wla3ArtCTy3nAdTMc6bxWCV23MBl 6LBhkBtJdyOGhVeGZRLTnBuDbaV5qQw= ARC-Authentication-Results: i=2; imf20.hostedemail.com; dkim=pass header.d=amd.com header.s=selector1 header.b="QzN4QK/B"; spf=pass (imf20.hostedemail.com: domain of Raghavendra.KodsaraThimmappa@amd.com designates 40.107.93.68 as permitted sender) smtp.mailfrom=Raghavendra.KodsaraThimmappa@amd.com; dmarc=pass (policy=quarantine) header.from=amd.com; arc=pass ("microsoft.com:s=arcselector10001:i=1") ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1750744699; a=rsa-sha256; cv=pass; b=VA7hG4/Z02p05FmLOYFd6QVmxZ/Vw422vjXyXisSjhwnVs1UKXtADbFeKKo2UTZnbIje9R JVZ6xAYYc2UtVlefnmiO2WPXJfm9ukGc+YS18A+kq8nG5IRw5eCI78dQUX497QLPLhJwEl OrTngygVc4sdZDEGNyOsUfp+E4QWBCo= ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=tVtIEjj2X04uqrrlA9HtJcZypqQYtBqZ8nsy9ejLWfkP8/E2fPSTszFn7LHhYOKivdcHvDozPLStesSyyJF+fXqu6WoSUUq+7mRSR5DGQzfI14OTbd/jumSvQ2KlqgOwHiP3nqtPl8ECkQcTlsf27i4vvJlIhwUtilLrnEXFtEA9SoQ5WRAVzlp2oXZNodi8keRIcMMttvFhAezd1eeo343XIAQqTSKgEh778jeSDPGnL1cCRR1JMgTDXVnKtRanTlVjtfNv66Nm8YQFNVBjoYb7P3q/Qgk5650PBTfPTc05CPAC5O/rEC+pBVX8ikANc4eJkdEI9gjuPFiBb5HBBw== 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=npimcWnWmW3Czx8tRelspzT5xqxVtPyB2JuYUhRJ0Q4=; b=rTuF4KNP75TI4ald/CrfFXA401h5iNMa3g4Zxx0OtPNPoWdv9adqm9omTC23bT0D4pOvutedk+R5hukQP+j6qZ6947FzSMyhUeG6cm73Iv0lFVsV9v+8WjhYG8OO3woiXQNUoXtP6AxDX2fALvZZOK1S919KhdNdIAGIyPLeZEUUKtvpORSNJZ3sVlXOP9DN18AQlYtVrE6Z2kNKEByq4YPsiQiVVAtsI1bZA1vLhDj3z6+BuGW8dRNgRId1vGiztcYKAPQ3EKrEJT70sW/qk3VaXPBtpNI1luA6ZuEKAmsXMtwUlGrKtUMf0ifJYt+9C9O5LTB6OC2C0qzq/Pnhaw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=arm.com smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=npimcWnWmW3Czx8tRelspzT5xqxVtPyB2JuYUhRJ0Q4=; b=QzN4QK/B9iiuyg4qNVnznUTGN7m/mTW+3xLtrvNNs/4AO8PApIOdGjKRnjzdRFKaYr24hnbSS46SoiGXWQz1+rjokCYEaRPLVp4vH83th8OXFQKAD3joOUACKeTNLUzL0zy49g19lkg9XtGdxtL8cGDpeX6d7AWUxyRD8fttquc= Received: from MW4PR03CA0352.namprd03.prod.outlook.com (2603:10b6:303:dc::27) by DS0PR12MB8293.namprd12.prod.outlook.com (2603:10b6:8:f3::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.35; Tue, 24 Jun 2025 05:58:14 +0000 Received: from SJ5PEPF00000209.namprd05.prod.outlook.com (2603:10b6:303:dc:cafe::9d) by MW4PR03CA0352.outlook.office365.com (2603:10b6:303:dc::27) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8857.29 via Frontend Transport; Tue, 24 Jun 2025 05:58:14 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by SJ5PEPF00000209.mail.protection.outlook.com (10.167.244.42) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8880.14 via Frontend Transport; Tue, 24 Jun 2025 05:58:14 +0000 Received: from tunga.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Tue, 24 Jun 2025 00:57:55 -0500 From: Raghavendra K T To: CC: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , Subject: [RFC PATCH V2 07/13] mm: Add throttling of mm scanning using scan_size Date: Tue, 24 Jun 2025 05:56:11 +0000 Message-ID: <20250624055617.1291159-8-raghavendra.kt@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250624055617.1291159-1-raghavendra.kt@amd.com> References: <20250624055617.1291159-1-raghavendra.kt@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ5PEPF00000209:EE_|DS0PR12MB8293:EE_ X-MS-Office365-Filtering-Correlation-Id: 228ec93d-0a35-4ac5-e8cf-08ddb2e41ba6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|1800799024|36860700013|376014|7416014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?I1/aSF0walt6ErTnmuSSaplkvZOgq3P5H8qzE35mfE6uwpeeSfI2WIrMeMvn?= =?us-ascii?Q?Lrj5Bicz3cqdYVrGtOOtCYSdRN5KZls1djA/I2vIV161F0ZyRmpD68lqblkh?= =?us-ascii?Q?AwgUyaziUdqTuYy+OxBndeQaOsclBjMtrPltgBMxgecAuuxzLEFbcuEG5hyB?= =?us-ascii?Q?Lzhbd9uCdfUDY1yW8mJGWNgm9jBiQ7IszgJBTlQwNjOZla9WYbH20bYJdFaH?= =?us-ascii?Q?QulF/4+K41I3GrLpduKfjGRkUF5BBKkJ2AWurxTdYz5mIM6zeha6MUlPjvoc?= =?us-ascii?Q?hpZDn0v9BiEVUrlNLjg3JwL3Kct13rQF7lS744WDeXAXE58BjPB9zevJtMTt?= =?us-ascii?Q?735uHVtJebIvSIccnzRHCvwBvGYxtWTYUKEqxz5R2VgpHZa2YC1+t4Fgn1jv?= =?us-ascii?Q?C+3Mo05p7dLf9pLKJue/qvZGOVxqk9yfv70DXm0+C5sIv+CNCCPnGqxTQRDa?= =?us-ascii?Q?N6Mbi4LV3uN/nJJTtSeEgZi1J9YfZBwMksJDnyFWWZ6xkLUPfb/eHhV6HY75?= =?us-ascii?Q?k1LZSwsxNZ/U3hDXSJw8KKWpIBrE88hu3/u/JGm9CrZQwMW5NI5jaOxEmxPr?= =?us-ascii?Q?yfQ9Ii3n6gY461GYYtwt4ROrCSjmaigERaFZOzSUbQ+61Gb95y0HfcurFQ+Q?= =?us-ascii?Q?F7AkehA2RKSvN+X3MxFyMXoapvuHkgD+dyFY/UGC9YzVWa8BziNiAFMyZq5e?= =?us-ascii?Q?WQWC9YY8/z2qrRVuPuTmTlpNP5VKo/UCEwnxjVg159EzhFJXDJKUT5UVfU5s?= =?us-ascii?Q?7EvTm90E4LUvlD2f7RvojCrYQoBwbZamj16r2SJdAU2QQ+LvyKnG81zxhTym?= =?us-ascii?Q?fBeba7BZMKven/he0ZNZCXo0MIbfgTKYXlfZ8d1KmxhIjo7t6ozCRi9A+UMw?= =?us-ascii?Q?RPy0FDktn1EWRcqDtCttLNCf36MOgbmFkJ4iAS5NUUKPBmgmjww/pKnMESAw?= =?us-ascii?Q?5HtvD+ltkykLU5HmfmSnaJez7/e0P56Mo4wNGUmrpLI/UEThSEUXNuH56Vow?= =?us-ascii?Q?771byr4NpK7EKzqh0wFcDAb7ibqUjQpeS3x2qCWJnadigWzaobxB0tD3by57?= =?us-ascii?Q?S/dBS2uwLtj+C2kz6KCZ7FDDrWzkaY3nVLSMnO5QGr7jgTcUfC7OrdX6bgkD?= =?us-ascii?Q?uhsSkYqz9ha9TyOB+poPCYpTvACbPZskGA9jka7uUEyUz3tBnaCnPGnokPCW?= =?us-ascii?Q?aOI+BEw5eUikViy4silOumzPVOeCF3rvd0tqOKJ5LmA+q5EhRn/h3p4E+cqY?= =?us-ascii?Q?VW1HjABUmcXDcO84rMz6Tb0inR5dJD5WUEh9G8cCtFNepaIeEIkD9GmdTznj?= =?us-ascii?Q?7GbHIx98QoA3qw+TbB0L+qJmG3iDnjWye4Aj+to3gMl0ezimC1uFTW1vg5Gb?= =?us-ascii?Q?DGLZputMRkbuBN6Cx1kXvIRdO6i24u+9qAdmLDpvsVMsrBcIVBQ+S47EKkAs?= =?us-ascii?Q?JY6BIE3Azo3FNtxQvhLuZh6e/oN40z4I2xyuRPKCr+CusYpMlpMGyytF3oSd?= =?us-ascii?Q?kGtxwp6xEd9GfYDGybM9wzjggAiQJNotVEFT?= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(1800799024)(36860700013)(376014)(7416014);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jun 2025 05:58:14.1397 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 228ec93d-0a35-4ac5-e8cf-08ddb2e41ba6 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SJ5PEPF00000209.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB8293 X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 09D851C0009 X-Stat-Signature: aw5q5hk1r6nd5ppjs9tgueig3tf4wyzs X-Rspam-User: X-HE-Tag: 1750744698-845575 X-HE-Meta: U2FsdGVkX18S9StwG48y814pgpg5ALodtAp/e7XaChMOyDPUU+DVtpPZs9DD2J3/AMl39a1mdAT4cF372cdlDkAa07vIjof0Fr34i5SxHDWDX+F1EHpiU8t/+Vqf5Eo841LL19TRPOiK74e29LEga9Qq2XJxvDw7tXzKOWCEcUSS3K97pJC6jaZwU1uKxp2J99cgm9DtLwmDNqYf0XIoG8km27K/4VGzSlvAZWwkLmlpDdrAKzEO4zGCEpSQVZHreeQi02Q6KcGG098tpwEmpItOqKxfiRXqDI/Jfaowo54U9hY0ziaVWNMlGyHqASm57da3+gelLQRgednSQ9kCS9UQDEFCRzLOB/GBeViezEbyMx4s0PULgtJqwhcKW/i7dOBrk7DpklMQPBQiBT4eKzA2CVZoO8WAWor+froJEL9xG/0QGiyRdxTDR10qZVe8dwy8u/XIcjl0zwrLFz3hwTj53dtevMrJiIZsUXL9YUJ09VgxoTxe1wNuO5vu6KUw2Q5qbB0+TMN84PCEkF4/FjB3gt8CPXDQo+t4/pcSLVAaqFwWpBuXE8zAWyyUXB3QI5CEOW+DN3cGuHyu11bpg2IhsGqY6NYrAX1PmO0Yj/X1rR3bohciVssut9IGyY/xTVZuE6gyPEseIcq92xumLoxo71/dWZWt7FvDzgnGar7uTIcbHauiOsA/oW4rS62fPPGeszdR6bmiLFtVHssSdyKeOaH/NQTnDt6PHDlQw7iGyFmmpRwXuZpIJH2Blwh90QZqMQ143akaTUBi8BuSC8sGhPRNOdgu7x5n2EFtwfQ5pUQKnjp63xSMKsg/WNN4ZD+8rczK0M3tL94mwVyQAqKR9b89rKMd4VC1dWCUbR08Vbrjiba8HQ+wPKlMUQOewPoVScwNIxLpIbubZ5r8N7gCykjIZLOZ7DdJlNif92t/NKkdnDtN0MBsC7WlzXmC5JoI6zBlBOepjShpQUI 3RIqY1Ed paUjKV9KY1O4y0S2Y9bmOdAJDGnqdP3ttMq+oICVXH7ROoH8vZDrxpS7thbcc5kGk4PHt7wknyHEHY/SSHKB4el5eVoey2qkHyJPwY1JZI2CaUqZKm1JSzfryEsJ1qLG1enIAboGlu90DIxI1XoNP3WacIgn+mqZEzUaq26VYPian8c+4wHqt9Dbiuc36GFIrENZ/3QejoLDjafMruSE0TR3rjROQI/LxsL12lNEN8VLw32o6BAKyle/idQ3arn0dzDwdajSAlAKR9XlTz4AvSS9RHUoLq0bj0g4KqxU20JYpXFINyHF5MWtPx4S3Ku7VBQkXeaAzLMct6dH8qjXd7GSgPeA5fUzIijL913exyAOC5iZGYGlftKImyMfXq7/VZgRFe23olxuDPXOQQGo2ORZ8gpZJot7CPIGYZAUi1sWWqa3VrD+RlyaDu5xKvvrbToXQ97YAs8KV5hIxPggVOPJb6lGb0XbIg1pBXyNu0DiO/i2FEygzj0/c/RGa0r14mfg1+MrWWEb+HAqChj6d/uAEQu75+ToEMHm1FJ4lvKvBFfpm29T3CxZ7cJveJqgC35GCBGRuvQYxkp6MqMlrsN1cZBUsKooAIxn9/BmimZPkh9K5tvij08oc40Nx2041AH9Vx+szkJIYfXTdZJIJL0WR0MRPRhQH7n8rJmHw/eQOTM45UuFx1b3gsNHv7IacwoRaOccxQZWMb8evS2KnD2Bh4gYElMnNzCtPCOIL/13TtOoKLoRuRAgnfKb4FeFoT5ziNjNm5buqo3L90rLQt0j3cZL3oq3vGAlNUtz0aa4JkYv0/l11rnX6/RGkIjv2w0tkpwAfKMmvuX7a/1/LGQ3KJl4FImLVluXRfrfVbe+r4sfCGINmuEEedw== 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: Before this patch, scanning is done on entire virtual address space of all the tasks. Now the scan size is shrunk or expanded based on the useful pages found in the last scan. This helps to quickly get out of unnecessary scanning thus burning lesser CPU. Drawback: If a useful chunk is at the other end of the VMA space, it will delay scanning and migration. Shrink/expand algorithm for scan_size: X : Number of useful pages in the last scan. Y : Number of useful pages found in current scan. Initial scan_size is 1GB case 1: (X = 0, Y = 0) Decrease scan_size by 2 case 2: (X = 0, Y > 0) Aggressively change to MAX (4GB) case 3: (X > 0, Y = 0 ) No change case 4: (X > 0, Y > 0) Increase scan_size by 2 Scan size is clamped between MIN (256MB) and MAX (4GB)). TBD: Tuning based on real workloads Signed-off-by: Raghavendra K T --- mm/kscand.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/mm/kscand.c b/mm/kscand.c index fca4b7b4a81f..26b40865d3e5 100644 --- a/mm/kscand.c +++ b/mm/kscand.c @@ -28,10 +28,15 @@ static struct task_struct *kscand_thread __read_mostly; static DEFINE_MUTEX(kscand_mutex); + /* * Total VMA size to cover during scan. + * Min: 256MB default: 1GB max: 4GB */ +#define KSCAND_SCAN_SIZE_MIN (256 * 1024 * 1024UL) +#define KSCAND_SCAN_SIZE_MAX (4 * 1024 * 1024 * 1024UL) #define KSCAND_SCAN_SIZE (1 * 1024 * 1024 * 1024UL) + static unsigned long kscand_scan_size __read_mostly = KSCAND_SCAN_SIZE; /* @@ -94,6 +99,8 @@ struct kscand_mm_slot { unsigned long next_scan; /* Tracks how many useful pages obtained for migration in the last scan */ unsigned long scan_delta; + /* Determines how much VMA address space to be covered in the scanning */ + unsigned long scan_size; long address; bool is_scanned; }; @@ -744,6 +751,8 @@ static void kmigrated_migrate_folio(void) */ #define KSCAND_IGNORE_SCAN_THR 256 +#define SCAN_SIZE_CHANGE_SHIFT 1 + /* Maintains stability of scan_period by decaying last time accessed pages */ #define SCAN_DECAY_SHIFT 4 /* @@ -759,14 +768,26 @@ static void kmigrated_migrate_folio(void) * Increase scan_period by (2 << SCAN_PERIOD_CHANGE_SCALE). * case 4: (X > 0, Y > 0) * Decrease scan_period by SCAN_PERIOD_TUNE_PERCENT. + * Tuning scan_size: + * Initial scan_size is 4GB + * case 1: (X = 0, Y = 0) + * Decrease scan_size by (1 << SCAN_SIZE_CHANGE_SHIFT). + * case 2: (X = 0, Y > 0) + * scan_size = KSCAND_SCAN_SIZE_MAX + * case 3: (X > 0, Y = 0 ) + * No change + * case 4: (X > 0, Y > 0) + * Increase scan_size by (1 << SCAN_SIZE_CHANGE_SHIFT). */ static inline void kscand_update_mmslot_info(struct kscand_mm_slot *mm_slot, unsigned long total) { unsigned int scan_period; unsigned long now; + unsigned long scan_size; unsigned long old_scan_delta; + scan_size = mm_slot->scan_size; scan_period = mm_slot->scan_period; old_scan_delta = mm_slot->scan_delta; @@ -787,20 +808,25 @@ static inline void kscand_update_mmslot_info(struct kscand_mm_slot *mm_slot, if (!old_scan_delta && !total) { scan_period = (100 + SCAN_PERIOD_TUNE_PERCENT) * scan_period; scan_period /= 100; + scan_size = scan_size >> SCAN_SIZE_CHANGE_SHIFT; } else if (old_scan_delta && total) { scan_period = (100 - SCAN_PERIOD_TUNE_PERCENT) * scan_period; scan_period /= 100; + scan_size = scan_size << SCAN_SIZE_CHANGE_SHIFT; } else if (old_scan_delta && !total) { scan_period = scan_period << SCAN_PERIOD_CHANGE_SCALE; } else { scan_period = scan_period >> SCAN_PERIOD_CHANGE_SCALE; + scan_size = KSCAND_SCAN_SIZE_MAX; } scan_period = clamp(scan_period, KSCAND_SCAN_PERIOD_MIN, KSCAND_SCAN_PERIOD_MAX); + scan_size = clamp(scan_size, KSCAND_SCAN_SIZE_MIN, KSCAND_SCAN_SIZE_MAX); now = jiffies; mm_slot->next_scan = now + msecs_to_jiffies(scan_period); mm_slot->scan_period = scan_period; + mm_slot->scan_size = scan_size; mm_slot->scan_delta = total; } @@ -812,6 +838,7 @@ static unsigned long kscand_scan_mm_slot(void) unsigned int mm_slot_scan_period; unsigned long now; unsigned long mm_slot_next_scan; + unsigned long mm_slot_scan_size; unsigned long vma_scanned_size = 0; unsigned long address; unsigned long total = 0; @@ -841,6 +868,7 @@ static unsigned long kscand_scan_mm_slot(void) mm_slot->is_scanned = true; mm_slot_next_scan = mm_slot->next_scan; mm_slot_scan_period = mm_slot->scan_period; + mm_slot_scan_size = mm_slot->scan_size; spin_unlock(&kscand_mm_lock); if (unlikely(!mmap_read_trylock(mm))) @@ -992,6 +1020,7 @@ void __kscand_enter(struct mm_struct *mm) kscand_slot->address = 0; kscand_slot->scan_period = kscand_mm_scan_period_ms; + kscand_slot->scan_size = kscand_scan_size; kscand_slot->next_scan = 0; kscand_slot->scan_delta = 0; -- 2.34.1