From nobody Tue Dec 2 00:46:02 2025 Received: from PH0PR06CU001.outbound.protection.outlook.com (mail-westus3azon11021083.outbound.protection.outlook.com [40.107.208.83]) (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 4B891280A20 for ; Mon, 24 Nov 2025 02:38:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.208.83 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763951917; cv=fail; b=p9VeocQWDOEftWDR7N+cOhhVqT0JDC9huque6jbgyF544vlG+KaVqUwtrYV14P9qWfwdZtOqY9Bjv30Jg7HJEaf7a58HpgJmOtSZFH+zpc07GW2WoLSkriXT8CYaABBYOglzuYNlr97OHvjyNoRrIic6kmP2h2/Y5O6wLyrZme8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763951917; c=relaxed/simple; bh=X5IoqnbT5frwnxF0Kn14bASK5UiYcMyzQlK2/4LDYeQ=; h=From:To:Cc:Subject:Date:Message-Id:Content-Type:MIME-Version; b=tkmo/HAWH21E8IlOdnGNzwJx0HRzjZFedb5mkmE96Dwlnr4RYpTzU2RQCQm+/u7W9FMR3qEQ87zeQap3xN92XEuOpKuEQzjhzqWOveLlZtksFnVSziIvnynuL+bBGfPZRRMQJmbmuNfm3/187y+iKZ/8K4/EEjs+ZzAXM0WQ524= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=os.amperecomputing.com; spf=pass smtp.mailfrom=os.amperecomputing.com; dkim=pass (1024-bit key) header.d=os.amperecomputing.com header.i=@os.amperecomputing.com header.b=FsX+9oSJ; arc=fail smtp.client-ip=40.107.208.83 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=os.amperecomputing.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=os.amperecomputing.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=os.amperecomputing.com header.i=@os.amperecomputing.com header.b="FsX+9oSJ" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=jH5HZI0im68EfQYDGzNwvBvXJs+Dhwr/B8VB9Hwo2J47Sv38Ptz5Qbi0SXnHYs2O9njGn1APs8sb/EciVHAOm7nWoV33FqTNA5ph7cpeQXmPvE6DGV769p8FtmpdMUCyoOzgIOWJACmzw1+cahxWZyOyqi/eDWNRGib8gSAihRa24b2dzcyqgVseBuSxVBJq7nCLzzoVD0oDzPlLnIJlrAo9Y/69v0Eo9QbFPwX/l8LMqPKB60F8KXwH+1B83KvapvqqpKjr1zZ2GX/KXYbGHhNg0fRZWMirbn+udqE6xAxXTMqWQB3JN4K2Gucs1CNP7uhcEH4+cDMnX4j1/j5ugA== 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=u7b2eleXKpeIslpmgoxKDzVHXBZiH4t5jLLBTSdKpJY=; b=WYVP57RHwjvhZmnaVs8NvVyq4ysNqQTB//wANna/JfNUHGqqpj5Epx4r4cGwSsUmyoWdYiM6S82lM5s1t3dYAfH53NhJkVxx8mDTSDQ269fZ859KLB7csBLnCBA/pvdTaBxVnrQ2fEWnLtq+YP6wIqVogw2l7PquR09J8RNUi9ArBJNzPLpgbYwuLTw1n0096h6puEPXLD3XNENa4m2XjThDROBnmtn750/sioIZAORcbd9ErJfaTQUi1I8MAW4rqU7Si5feOWp9C7L9Bze7HQa9dbFmJjQ9j2oPN4qU2PVUeHzo5eJjqA0gUXUyzKYMbguMGMzkNCe5FVjJY8IdNw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=os.amperecomputing.com; dmarc=pass action=none header.from=os.amperecomputing.com; dkim=pass header.d=os.amperecomputing.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=os.amperecomputing.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=u7b2eleXKpeIslpmgoxKDzVHXBZiH4t5jLLBTSdKpJY=; b=FsX+9oSJElbAQ3W0U2ROypsyjBGS1daI9rqEhPQniAd6g4HJZAt3TwyK1o3DhO91VzXnLQBD16vb4adJBnmJZfiwv0Z9EFi7mbZ6mzECePQG7odlG4UsUO3/IE8XUIXBDe8JhIQJwB8MR8a4NblWLKyQqPrB8R3We6Pqta/F1vc= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=os.amperecomputing.com; Received: from PH0PR01MB7975.prod.exchangelabs.com (2603:10b6:510:26d::15) by MN0PR01MB7681.prod.exchangelabs.com (2603:10b6:208:378::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9343.17; Mon, 24 Nov 2025 02:38:31 +0000 Received: from PH0PR01MB7975.prod.exchangelabs.com ([fe80::6926:a627:118e:8050]) by PH0PR01MB7975.prod.exchangelabs.com ([fe80::6926:a627:118e:8050%4]) with mapi id 15.20.9343.016; Mon, 24 Nov 2025 02:38:31 +0000 From: Huang Shijie To: mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org Cc: patches@amperecomputing.com, cl@linux.com, Shubhang@os.amperecomputing.com, dietmar.eggemann@arm.com, rostedt@goodmis.org, bsegall@google.com, mgorman@suse.de, linux-kernel@vger.kernel.org, vschneid@redhat.com, Huang Shijie Subject: [PATCH] sched: update the rq->avg_idle when a task is moved to an idle CPU Date: Mon, 24 Nov 2025 10:37:45 +0800 Message-Id: <20251124023745.259267-1-shijie@os.amperecomputing.com> X-Mailer: git-send-email 2.40.1 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: KU1PR03CA0039.apcprd03.prod.outlook.com (2603:1096:802:19::27) To PH0PR01MB7975.prod.exchangelabs.com (2603:10b6:510:26d::15) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR01MB7975:EE_|MN0PR01MB7681:EE_ X-MS-Office365-Filtering-Correlation-Id: 834920d8-6012-4735-d425-08de2b028e12 X-MS-Exchange-AtpMessageProperties: SA X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|52116014|7416014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?68JjJVbIM0pkoWT+4ZvrWsUEJL2M5TTF0c+cvZmPa+quBagf2J7YeNIv+Vni?= =?us-ascii?Q?NdTm1OoJLpeplnkTr7bv71psRigedAsUp9kXA4GAS8Fv8BPwhtEB2pGOGXX8?= =?us-ascii?Q?TSQjMgcPJ1CQdrIG/wYsz3L7cbIpsvuCmotbFCxK+K1CSoxBBp1xY69f8+WY?= =?us-ascii?Q?hS0OsLhVMrEi92Vo5MxT/dI6GfkaYWVydF8n5WWeZBF/yn4ZfyOBbexemIPe?= =?us-ascii?Q?XDK2DwPDkFlG2hoxAXTcpp8k5wAmSiYPt0Slh5U/vrdO6Xrwv8118rkmjLRz?= =?us-ascii?Q?D/CG8rYyv5MCDvcBwOnsYrqIQ0XpQNqwnaTmVId1Mq4M+saRLZQUnhkHFIqR?= =?us-ascii?Q?JnWmsahykeK4weAS0V14HTrn645h8y1cACDAMdiBjCEqM482XaXDgJVMplDH?= =?us-ascii?Q?vm2PS/r7tiQDT0xO+oJEZMMCni0ia8MJLVMlfJ01yBUStO5jC69n1IasHuP6?= =?us-ascii?Q?S0jM81RLJGsTn58GQ3HXyP7zWnk/vXtVjOEL4y1LVwWPauPKK5FDa0waEX+q?= =?us-ascii?Q?+tYHGEoNWet2V+CrhIsqInqNwfV0wzxTnrwFTLxIjLjjQjNB2xrBiPJNOaZT?= =?us-ascii?Q?KYlqAq20Qasl2PxNzDBRGGaSws3Bqf/1kGK2bghYYs3aU1xWPUsi1l1+rXjZ?= =?us-ascii?Q?eG9SObqhjQd0Xzz00sOtq8mGLnxEBcmthe1aWTAUUYVjR7pcFLugCfDL8gYC?= =?us-ascii?Q?ab7TyJ4psLgKfaqEJIIpWM42iaJeG2usk1rn05KdnVQ+QRAdQeu3vjFgSpTm?= =?us-ascii?Q?mX96vnjQ8N2pZxHFhkp6x3Jly1xIqzWGuiHk53RNcXEUppkaWrJcsYv5oLAU?= =?us-ascii?Q?gwgmGWWsE8aRleI88jifBHdxW6skcsKQ27kfyFPi6VsmDnV/mhjh8qyDPNUw?= =?us-ascii?Q?64Xnz62ZAIoPZQ1oNioRu1nS5MnkejAFOiBl7NEr3s/EyqT+p+pk13XZueol?= =?us-ascii?Q?5ADZ6FxuBAodloeR8D4WHFq1ob5pVFQmc7EVxtYcKQP8HVWXYW/fQIN78dq4?= =?us-ascii?Q?r1lfwktTHHEeCoZ5h1oRQA0gLvlc5EFLl3w2TUtMtct9mSlr8UYL3ZEkzFgS?= =?us-ascii?Q?gsyAfKaEoB8jrLY7mtXK6D0lHyLrpwTBrbC49VNt0nF7NrhPN1ob8VOXB7F5?= =?us-ascii?Q?B65BxmzUotp5K2huDB0jUW0fTXCj+3zBZSxfkyIr5Ze0UDSJ7i5gAR1NwtCz?= =?us-ascii?Q?KmdWxpSzae3IkcCjoxrWaWTKPkuSWO+WBY2kBGZ8n3DaUaet/M7bDayj5ARM?= =?us-ascii?Q?ug2vuCW4Hc2GIjhGf/wYSwEdXj4YOB63o7FfgfsTtxPyDfq8lvS1abHNcn38?= =?us-ascii?Q?0mL+TIi/QY2Ph3dZmPMieDq1GKx3XkIkc24gIUoqzRnQewZ9tAGu+AHy8ScR?= =?us-ascii?Q?F018/UhzRSaJDCbE/Gf+28OzQ3eifDNeHjde7epPXq/rp2wdS0E/hCCIqggv?= =?us-ascii?Q?T1RwB55++tuBZpgWpJlOorOs6b2xfxmJYhwOKq59TjnOmEUFRLAlNrhnUgB7?= =?us-ascii?Q?tmYWSn/mvBP1ncu/EtDLKVAhyYiAobBnCytQ?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR01MB7975.prod.exchangelabs.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(52116014)(7416014)(1800799024)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?pf42tF6TUTQqQb7AUNfN79xDFTbi84fSxmUmqPjIuuIB6yRPYQlzyb/lBlve?= =?us-ascii?Q?AbhWn/7vq3quiS2m0TQp4UxZkszaPf7zPc/8rCLZOaCOxEzg+FjJblbqWmqX?= =?us-ascii?Q?LrVH8WM9nmn90087J+0Zpioh8CKoqEvhpa2lzEbpMYGrz0i2RD2wPl2NJDbo?= =?us-ascii?Q?ZRDtaiSt2nC87YTjIuByiYDNlH13t0711hbus8JRZ091N5OePOXxiCackBfu?= =?us-ascii?Q?ByuUZohsx/CbAfvI/M/c8dKDB6QdPU1T0hfyr0W0vxtFx2d7+D7Ox6x4g54Z?= =?us-ascii?Q?D83cr2mN3MLKSx4lsMlYZnyBW3hTEkl58X8pT0M4eBEBJVfAHW+C8XRnOS2B?= =?us-ascii?Q?CeVmyraUw40ney2oQ5IN5uS2oMxxJUMJ9vwoy4WZcT6xBvvh+x+NfVXrVsuZ?= =?us-ascii?Q?nr60T8xGfMRszP7f53LtKvZyD/DOVIGhCQ0lLrXBeR1uZrCl7BR4dQQzXaqA?= =?us-ascii?Q?6wIOZIfusID6BQKNKNqwj6iVG5NrN1A9qqeLB3zViq1EFhXGk7eIjb5wUPi9?= =?us-ascii?Q?MCT037Bcc5+vqJIalJu713YyML4EXyWgo0BdB87Y9i3sqU7r22LvCEREckXV?= =?us-ascii?Q?jw9kB2ilp6qHgq3wnVLv5vj2enp1aoVVO6sU+UXpF1HtjPwpTjn4uTRWCdAL?= =?us-ascii?Q?o5sZYS4tSy4jozwVDZb55+FkAN8/I15QvHulTeJvCm4icBP6ZP4JhsE6QO3j?= =?us-ascii?Q?DuLJXRIqSpkRGwfGN6hvkLXQyVIc0KnqXZpB4Ze/nIAEwTpDx4ERElyAGJc5?= =?us-ascii?Q?b2td6DU0APQF93DbIyo1SPKc3O91bcg4XtDGIQRKPjbHAW98qoGbU7E5PvwL?= =?us-ascii?Q?mMNSByU/UHt3jNShtJ5nxpRkOz54g90ahP+hwCC473Z/ZKNrZgTAocM1ciQI?= =?us-ascii?Q?BqDjUqQF+Sp2tgLqIwK3g3OCK/q5mGv9ZqTYTVnTKhVO3dNIf889pIiOLQPG?= =?us-ascii?Q?k049NcT+5huA6WaI1AW6oPR6bXCw1WQO3aXEdg4e2TxM3KtftRBXyjuC9m6D?= =?us-ascii?Q?KacQB+au2u5kaz1XKg742DO+ZzQxBAd46oJs7TAd3K+G+BXOzWti1cS1/YzU?= =?us-ascii?Q?HX+eViq4sNMCXAaxIME8Xgdbl3y80oWLllV6MU5SBDLQnWMuzSZWJDIaSdFM?= =?us-ascii?Q?SrxNMaMk8WKrDck6rMlQLd4Xps8cuP2EgGnepWht/iC0fFzdPI16wqu8Fm2a?= =?us-ascii?Q?28ItEUaiDqIWxa16CcFKbqC2MQXmzzdQADJqN8Z13tGI3oy2CCzJhvQ1tEzr?= =?us-ascii?Q?24AFiaNTXMToJSioaHVqgxXDnmCFcyZEjxRTwgvRof4hrOU9vOzlgSZhu4m0?= =?us-ascii?Q?ZYJtMzdmLihT8gqUiucg73ds4hV7aWVR/6lpmcmKUI7q9N1Lbi4UVhyX3YW5?= =?us-ascii?Q?Tr1yfdTWeqV+dy9gQmHeBUnp5KLTxwG0x9/v+6sy2Lm7dkPQWp2ur1jH/z0v?= =?us-ascii?Q?gvt+LMJYkzaEhaEwf89TK5djV89pVEwwlAp6L6QsfOeymhF03/mEH7cJUiVc?= =?us-ascii?Q?IBft6AMK6lk92YRRQfV+gtOeTqR+F4mVsWL96PWSJR9m7f4aj76MqgDZM9sv?= =?us-ascii?Q?co5sw9Mmcm/kHaSNbLD3mUdzKmWAXg8dKF9568IMI8Js3y+h2w7LY7rTc6Jj?= =?us-ascii?Q?aD4A1MlRbW2O1HO610bgnrs=3D?= X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-Network-Message-Id: 834920d8-6012-4735-d425-08de2b028e12 X-MS-Exchange-CrossTenant-AuthSource: PH0PR01MB7975.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Nov 2025 02:38:30.9561 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3bc2b170-fd94-476d-b0ce-4229bdc904a7 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: t47Fat6mxN52282gXDcfVaddVdc+7fgdwm+uqGjEeJ9LvPC8bSc7QFODMDsxHsSbN/o8Ntva/Q7kJtqDH8mVDCHipVwY0+yEoIlU+TgOnRIyamEQW0qXo8KpeQFQf3L9 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR01MB7681 Content-Type: text/plain; charset="utf-8" In the newidle balance, the rq->idle_stamp may set to a non-zero value if it cannot pull any task. In the wakeup, it will detect the rq->idle_stamp, and updates the rq->avg_idle, then ends the CPU idle status by setting rq->idle_stamp to zero. Besides the wakeup, current code does not end the CPU idle status when a task is moved to the idle CPU, such as fork/clone, execve, or other cases. This patch introduces a helper: update_rq_avg_idle(). And update the rq->avg_idle when a task is moved to an idle CPU at: -- wakeup -- fork/clone -- execve -- other cases Signed-off-by: Huang Shijie --- kernel/sched/core.c | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 9f10cfbdc228..732c6f708afc 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -2412,6 +2412,21 @@ static inline bool is_cpu_allowed(struct task_struct= *p, int cpu) return cpu_online(cpu); } =20 +static void update_rq_avg_idle(struct rq *rq) +{ + if (rq->idle_stamp) { + u64 delta =3D rq_clock(rq) - rq->idle_stamp; + u64 max =3D 2*rq->max_idle_balance_cost; + + update_avg(&rq->avg_idle, delta); + + if (rq->avg_idle > max) + rq->avg_idle =3D max; + + rq->idle_stamp =3D 0; + } +} + /* * This is how migration works: * @@ -2446,6 +2461,7 @@ static struct rq *move_queued_task(struct rq *rq, str= uct rq_flags *rf, WARN_ON_ONCE(task_cpu(p) !=3D new_cpu); activate_task(rq, p, 0); wakeup_preempt(rq, p, 0); + update_rq_avg_idle(rq); =20 return rq; } @@ -3646,17 +3662,7 @@ ttwu_do_activate(struct rq *rq, struct task_struct *= p, int wake_flags, rq_repin_lock(rq, rf); } =20 - if (rq->idle_stamp) { - u64 delta =3D rq_clock(rq) - rq->idle_stamp; - u64 max =3D 2*rq->max_idle_balance_cost; - - update_avg(&rq->avg_idle, delta); - - if (rq->avg_idle > max) - rq->avg_idle =3D max; - - rq->idle_stamp =3D 0; - } + update_rq_avg_idle(rq); } =20 /* @@ -4773,6 +4779,7 @@ void wake_up_new_task(struct task_struct *p) p->sched_class->task_woken(rq, p); rq_repin_lock(rq, &rf); } + update_rq_avg_idle(rq); task_rq_unlock(rq, p, &rf); } =20 --=20 2.40.1