From nobody Mon Dec 1 22:35:45 2025 Received: from BL0PR03CU003.outbound.protection.outlook.com (mail-eastusazon11022136.outbound.protection.outlook.com [52.101.53.136]) (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 BDB102FB632 for ; Thu, 27 Nov 2025 05:06:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.53.136 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764219985; cv=fail; b=rJOmXNUUZH8hXcyjizKHBkNd/dvxBU71c59d4a92Gm5aglBtJ70Ru79ACwK7fcXsK/dLsaDLnsKLoXy5uhrVlHvFTMwoC41o3Ee9j+uzi+pqWNW0+rQuWsk2EH4Ag+UTmG/Ygis9CHoIx6aUVdQPrFx9Ts2YdYXIslpXsP2lwXg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764219985; c=relaxed/simple; bh=TtoAUidqOuyXFf1jY7nRcUatatYShYEDVqqsOg998fw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=MGeXEE92IEFMyDQ8dqsAkW3DNNQLtqymWlncgwpm7V1IIGBUgWdFUUvzYfAjEAUBEnRscjcydp97rrJYKQhpHWX42HLCcXpji9WSBfpKhU/g0pqCKmjzOeazIQKeJ3chLmVOamUT5K/Yfi/ZIOk58JYbkzJnXWpTvFj5/HvL84g= 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=Mr1dhyJy; arc=fail smtp.client-ip=52.101.53.136 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="Mr1dhyJy" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=EIgOrUaeefNH52VyNwcNpswK2rCkCIyriCQZ4pKry/EhMJKaWu5nps65EIfeekFu7VTkYnP0Oi+5sB+q2LnS2ojdMrWXtJoPJi991Wa971zOR1KpWmqshAxmPDLdQGFNjsTJEw+aAB10vlpXMfqCNkFuqpl4AXJBUE+4XEj8+EeAZPUBpZWG1t793TUZ4WBJGOdpYS9B5gmfZjPBEfRIkIci5B7ODIrWWe+MRl1aNK1+cJ04UFlcwCQ6dTOjtI0fJk9q5Fx1jMZLQVSaAmmbsogqbQlex4LlHfdeSFxEEVrJ1G9UBhdAXndTS7DL4YB//YdxYqylDdK80w1V+FkagA== 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=nyIAgyS+OKcdVyKHci/B/4n/bzMZJStRD4wvrJ89PaU=; b=RAmHrAC0jCX5SvByCfGpzkj1lrLpSd9ooSSAWbcQBK9VovCSyVYccAske+iDl38z93M/7IXA6huWizEhoq4LlK25HWCahWXCQ0XPiy96QMEOMTYeQZXJGMTyqVjzBXWUdVP/6HO3LsSOuQcatjGCSFy0P2IVxcNtho7piKvV7Sk3YgEr0RG125/GKMKegkMJV+lbWyvMCPsNpkzFntFLshgKxQqBBuDPAxffYnbI8YRHVsVqkAafGkE+ovRhSaGYgiJ62axG3G/WHFJCAOk9xp6foOtQ73H6zNBKwaepdYIh7VFmAZY3IqpZI6ai+zQXyNCqX9txhuHsM59Hi+0qBA== 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=nyIAgyS+OKcdVyKHci/B/4n/bzMZJStRD4wvrJ89PaU=; b=Mr1dhyJyiauGxMU9IfggtMX8mktwMvZpNPFzrlaneVeOjX7Vr1QlSBoHWR46hbLLQf0srSsNaxseIFGOdWJFMIkhoDufM0dlkRVtQIMBwzt2hIaSgq3d7g0PgpCzMpfCdUerHUvupRGDWbQGXv0m4+7RmcMVV3CWFjgAgbYptl4= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=os.amperecomputing.com; Received: from SN7PR01MB7969.prod.exchangelabs.com (2603:10b6:806:34a::19) by BL1PR01MB7554.prod.exchangelabs.com (2603:10b6:208:385::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9366.12; Thu, 27 Nov 2025 05:06:19 +0000 Received: from SN7PR01MB7969.prod.exchangelabs.com ([fe80::5ca3:a44a:c242:d9eb]) by SN7PR01MB7969.prod.exchangelabs.com ([fe80::5ca3:a44a:c242:d9eb%5]) with mapi id 15.20.9366.009; Thu, 27 Nov 2025 05:06:19 +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, vineethr@linux.ibm.com, Huang Shijie Subject: [PATCH v2 2/3] sched: update the rq->avg_idle when a task is moved to an idle CPU Date: Thu, 27 Nov 2025 13:03:52 +0800 Message-Id: <20251127050353.1089724-3-shijie@os.amperecomputing.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20251127050353.1089724-1-shijie@os.amperecomputing.com> References: <20251127050353.1089724-1-shijie@os.amperecomputing.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: KL1PR01CA0019.apcprd01.prod.exchangelabs.com (2603:1096:820::31) To SN7PR01MB7969.prod.exchangelabs.com (2603:10b6:806:34a::19) 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: SN7PR01MB7969:EE_|BL1PR01MB7554:EE_ X-MS-Office365-Filtering-Correlation-Id: eab82436-6671-4957-8964-08de2d72b351 X-MS-Exchange-AtpMessageProperties: SA X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|52116014|366016|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?VFejjQ+qI5AOFiOcVhCyowBDMj46Z2aSaTtgnSC34+NrNFtPxR3RXKYO/mCV?= =?us-ascii?Q?EshuVrkDz7ILKGSBv5P7uT/UCxbYcCYGqV/3JAgSZu8wOSzWNUDhOo+spxEx?= =?us-ascii?Q?iAMnmbZG3kmc6DXREg6ZuTZuT/w0PTKVTydE5DHpB8X0529JiUeI0BoAyHDP?= =?us-ascii?Q?yUKG6AQhi71cqjrg3+siGKA+BoWaEDNTC2PAM9PLNBDJja5HBrdC3fdZl+p5?= =?us-ascii?Q?2ze+TQL2RCgURWIz5hzYUcBKNQ5U8WHfG+kohNtI7+TrGbezyr1C5ubQM+Ba?= =?us-ascii?Q?AP73m26gJiRaf0k/eQe6q37TNvziGqn2WHZD9b5R929/WKhzuF9AoHGoPEsb?= =?us-ascii?Q?erSrGamP/laxenY44TswojbR05RL1xVSdy+DzijYN46VA4a/VFced0PvVufH?= =?us-ascii?Q?wROGUPk7NEQ5EvlfSMu0evxjywkDGmRPjcuG1YfHwWw9CFzz8uaeRTgjX80v?= =?us-ascii?Q?qUx6ylb2bPZpw5LdhNzFj0X07lZ7B06wYUxRg96pyqLr0RE9acHBY15LFyDI?= =?us-ascii?Q?BhBPN1jk3n8RtL56OlnPpRD2Ri717Tgx0iQrFhcj99igdo0uRi0sFwbuURYy?= =?us-ascii?Q?fqUmaXgFYkhCUnhckmblrPzdU6sneza6TnD1Rtpn63Bq67YUAn3HUwPbbbcL?= =?us-ascii?Q?GS0HsCJpurjidwyaS09K4P9iYDPBmq/s2sr5dn3TN+cTx/qdrWwJ7d8WNsL7?= =?us-ascii?Q?sSXJJ2J02egh98iM1PX0uZWxKQk0KActmT1NrESibDFVHHGbd0EpFkKvc9ST?= =?us-ascii?Q?k/BiH/EFYKa8q9k+ujccrW5eBTdgLi4XecXxAXRg77dpkX57yBSF+Y8HqOfY?= =?us-ascii?Q?Fot2jP5ru8KUmX7QiTlr7ZRSFqmon3h5N3hyaC86MfNLmjJ8VBisVCXERgaS?= =?us-ascii?Q?H5YTIvT5xi92lFKLnJFviXTavzMGVi+EvSQw8RE2xnyk6GlguOonxuP1OpUx?= =?us-ascii?Q?no6Y55GqI3DgtaIaPCb0r5PuNETJqUnCtevUBWsrDUAaBGHO+dqON4TeuJQx?= =?us-ascii?Q?5v2zrod2+mb4zbsemVvjSSmslE5qFsVUkV8p5GMA/tULTYJ6VuPaXhwXVqNK?= =?us-ascii?Q?GUJH36kAGbIA2GYmcokAIU6Hbx4GpHfBSDbMMLBQZji0sxlQLs79+sl3OG1Z?= =?us-ascii?Q?vMF+VZZxPsvJY1rch7WRfRonueRkm+xtTOhRo1pjIh8neadujuuAAKlqMYXl?= =?us-ascii?Q?yc5leGIsuu6UZYxKWeufrbbibrLfvKoF889n61ji4AnPExOjEk4VLHloL+60?= =?us-ascii?Q?00e9BJWXRqQ+0BDYmk5xLxiuwNJC2Q8m/ZjwQchYkM5fE5nxT75ItuFc+V8m?= =?us-ascii?Q?7Lx2VWdkliWTxTIF3JyBV1gHlck7dX6PvArgik0SyFRtpLSdLXOtQwtEnMVM?= =?us-ascii?Q?XxY2/KgBaSKnOMrjBWKnwXZFggMXmTFwhwyCZPqOjAqz2CVlDCeaKmh83g1r?= =?us-ascii?Q?WX6Cg3xKcBp+uOTm+ZWcVOdhA231ps5LHGl3TF1mzr9D9/ZKXN1zObdosAQe?= =?us-ascii?Q?7d4ezurpJhMotStKTY2PajiigRdAZnfvyB+n?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN7PR01MB7969.prod.exchangelabs.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(1800799024)(52116014)(366016)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?56JcosJf+O9J+r300hYxkCGZQvXPv1grqvEuobNDAya8Eo03qVduSt+ZzrrD?= =?us-ascii?Q?FV/kgwq3iF/qris/8Qzx2YSE8HPLbgGI0P1sLHFIspE7mjCdvzRytI5qrDD7?= =?us-ascii?Q?5x5E0pSJWDgyVAs6h/+7i4yfq6gtCm1fw5I54BasngAOF7OfJh7DKCStRPhe?= =?us-ascii?Q?FDKcsKGqAaWtTSoUg4dOmGHWBsGvp9HnJ/UWzr3XJZxqDx9+KZTTS78T+yKI?= =?us-ascii?Q?WeeY3exGjJTz5epCWskaCR5x+V/2c0Hv/heGGYj3Bv7262ogCPMgWnspCEBQ?= =?us-ascii?Q?Jww1n60V5vUTUylC4JIKMuApcgMv5SgaAV3S1H6fI4bJkGrDey0aT+3EuHM1?= =?us-ascii?Q?jHZMkMCiKVE3L8PGqExhmupahMb39nfa/lctxNl6bOeucSiKNwDmLM/HRiws?= =?us-ascii?Q?HbcGzol7dK4DRiTuhTwMBtfMDgQW4n0wNerzbyT+X8+TnqPbKtxTc3nFp/ov?= =?us-ascii?Q?3ztPfAS9lXBtLcmmy83Pf4FJdedLBBEbECY0E993cfRNVvFKCLOMZ/XFbNbx?= =?us-ascii?Q?FDlu+W0wQjShUFF6B0cSExZfPZbHPgfTW61vRxXBM/x0aGCb2x3ZU1b0Nmqd?= =?us-ascii?Q?5QGP6f/xNeNDc+7ZlI5AUDYsb8JLvx+Px/ISIdGvJyUHZslxCvslaFW+n5tL?= =?us-ascii?Q?NngRaUeeUQH7YpycGvE1OoGwgxF4KpP6+XJwOrZ3zgavkRv25k7i3x8qXsMm?= =?us-ascii?Q?lbqZ7GIHASeekR/Vh5G8lQwG0F9pUMq/Uc+LNlymoi0qgtG363t9cE4RpI23?= =?us-ascii?Q?KlFTUGxDY6N/24K0+scoEh6Q4Ce2/ke3zZ5JZT1EbPOyDR4M+7s9uHueEu+X?= =?us-ascii?Q?auBdTG6ACCIpyx6ovaUn6o03hFTktBx24DVqfXXH9vDPXKOmmfIqOdKk8cYL?= =?us-ascii?Q?7xtchGYWmoMq7lzw52OieFzzzyRP3e+vi0sriCSgvn2LIwK7Mt3DORVoRpVy?= =?us-ascii?Q?GP4J9J0NDlhjctgYf/tHuCN6BcOL7sSjaZeDHDVIC5RlmgnA9A3PSUC92WQv?= =?us-ascii?Q?CPV8F1K5JFWG5aK24HhsxY+aQx1VSPcgTZraQ8YWmf9RQ4QCMfXmLsIIuIuK?= =?us-ascii?Q?/76gx9pDkzmt3av2IeFuISfO5iBHGdNJ2EvM4b7FQdKTDND+N6VPyfgu2NAn?= =?us-ascii?Q?SsjUuseM4whJSbDoWYPuybK8/1f6RBYjSXshNXkLmTw+J1uXht64VqR61XfL?= =?us-ascii?Q?z543Zctmcgr4cQCk5fXhM/5/D3YSd2znjhGbRIuN1k2QkBWxVE5ovKmSwET6?= =?us-ascii?Q?+aOptVhfUqmBIC/tWuDyfLMPXRrRxy5NrdNl+z76yGEUHem25MKScF5h3PBW?= =?us-ascii?Q?Yr4imtHRASFGx/f0DCG45DSF6bjuNovOJ3vOZslsafS3DS7rg9mtIzqdRE3d?= =?us-ascii?Q?c27T4T68NMQ8cjoNDOY8lhun3LmIsz87YDjb/pBS7iLaaoyhrRz93Uh3i6iG?= =?us-ascii?Q?CX6yRj7LHV+ARWIKBz3TOV4TWQFZcbMpqfpcey3SjFoiuFp71Vrjgca5PuSa?= =?us-ascii?Q?NwSAEqK3pgcb0tMa27Z7lOetH7InAuohK/1W17bWfIEJoPrBUicBizQ4FngV?= =?us-ascii?Q?7QrLY8NiwIyyr9um3a/goKcWgn4vdkiw3gJVKljQ2IPvdpQ8YsLHWoI4xVGQ?= =?us-ascii?Q?Aa0zz+CC9yNe6z+e4n4H8y8=3D?= X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-Network-Message-Id: eab82436-6671-4957-8964-08de2d72b351 X-MS-Exchange-CrossTenant-AuthSource: SN7PR01MB7969.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Nov 2025 05:06:19.3189 (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: 6/SHuT4OjAobROiDzepDBk+Fc+Mac8k7UHmyku6SxqXNMbQBylerdxeCs23/kZYAOYkiNgjwB+x8S3ohhJmMe2ExCtQrQ4xrZJGNsNLCOYUBO1+VPDhvE/KLfgxlJUhi X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR01MB7554 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 uses it in activate_task(), so it will update the rq->avg_idle when a task is moved to an idle CPU at: -- wakeup -- fork/clone -- execve -- idle balance -- other cases Signed-off-by: Huang Shijie --- kernel/sched/core.c | 28 ++++++++++++++++------------ kernel/sched/sched.h | 2 ++ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 0c4ff93eeb78..a946f3604548 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -2135,6 +2135,7 @@ void activate_task(struct rq *rq, struct task_struct = *p, int flags) sched_mm_cid_migrate_to(rq, p); =20 enqueue_task(rq, p, flags); + update_rq_avg_idle(rq); =20 WRITE_ONCE(p->on_rq, TASK_ON_RQ_QUEUED); ASSERT_EXCLUSIVE_WRITER(p->on_rq); @@ -2412,6 +2413,21 @@ static inline bool is_cpu_allowed(struct task_struct= *p, int cpu) return cpu_online(cpu); } =20 +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: * @@ -3645,18 +3661,6 @@ ttwu_do_activate(struct rq *rq, struct task_struct *= p, int wake_flags, p->sched_class->task_woken(rq, p); rq_repin_lock(rq, rf); } - - 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; - } } =20 /* diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index b419a4d98461..0e8aef1cef96 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -242,6 +242,8 @@ static inline void update_avg(u64 *avg, u64 sample) *avg +=3D diff / 8; } =20 +extern void update_rq_avg_idle(struct rq *); + /* * Shifting a value by an exponent greater *or equal* to the size of said = value * is UB; cap at size-1. --=20 2.40.1