From nobody Mon Dec 1 22:02:10 2025 Received: from CY7PR03CU001.outbound.protection.outlook.com (mail-westcentralusazon11020075.outbound.protection.outlook.com [40.93.198.75]) (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 2030B2E0904 for ; Fri, 28 Nov 2025 07:55:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.198.75 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764316559; cv=fail; b=fkNlUVWowN1wBIiahTdHxps4JU0EEqRxe3V8uR0J2mSkHXiedd5YQ7npovtxC0xAJsAfyephSeDlLFtOBgYAWyo+L8U7hbtKWToaemqtnXC3OeVhBMYM3YTl2XywcTe2Ps3gI/X+bvilAvOrIlJX6DCMa2DYAgGnlCCE2MoMBKg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764316559; c=relaxed/simple; bh=dSBVJhnpI85bKWVFi2kVbzYZjvvXQGx7e/SSbZ5hq1E=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=T21v3FZw7HvJUO0gNLdj/xSggld9QYsMB2kTGu8dTgNqqD/XpDeS2Jrhk08ElLAWUswxerQw34hMP+1TSxKhNHVr1z5q0t7L19KFtRliyZFcLSzBeAA73RgWGpjByNLrxgGDp6D0gLafhaFIora66NgshFu8+EaBmq+kFN7yLW4= 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=X+N1gNvu; arc=fail smtp.client-ip=40.93.198.75 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="X+N1gNvu" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=cJ8zz2mdyVdvpEaJjlWoQIZVzfKiIfrU0pbldBZXZOaPW7pm69Y2O+T02zpLDcCzEhgnlg64ZSAr7nZS3Zjn8yVnIRTeLEzuYtQ1/xU1Uw1RZJ8Ftm/1J2OLZJKUTJebD/1RAnuQ9Z/z4JI5Ps0678lydlo69mYsBwY3IlwS9tLzgj0qzrVa7pKT/Mw9G4R2ukJX4CTXyCnbmB/XUr0RaXIsDTRMY9SRuiujns0TJpNjQ2h8BpCPlr01jXAd7JHi/lOiN8OAc2RUIsQ7NqqQz1xeB6F60TycdwVYLv/73knV6PGeZk8kDe6OsXcHdxkffrfTk3e4Ps1raMapQPZvfQ== 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=SQecs7bA1OBMCWv4wynQ9ECxHFF2gBVwvDuP185Xgoc=; b=WtebH3e5Lss+isj3dIPNXTYZhbiGSWmZRM+XyTBl1uCVR6vYSXvqsz5Aro4EVPWQsZPqwn15irYeVFcHKAmZkJLqVM3s3YaA0GcvRlldX2N1379xrhAj7S/0xsQQDpEuUzbB2YthUwKhze8uLrfH4RcPbVWdMUh7XhMCHkwj2oTLSK/9vfFsVH7cIGsPQjtu6rvavyG/Bb5pTCeaFHsjTgVrmtHH32C8YL/js25eV7MSTDsQ8HVWYSGx6quzbF71BZJHcLegIFARx+rqqgWIUiuX53EyTkuGtnoRUPb2/3H8NndNvaST9h+PvIjw48RBcP0ngHZsA2Z2qQGlr0kGww== 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=SQecs7bA1OBMCWv4wynQ9ECxHFF2gBVwvDuP185Xgoc=; b=X+N1gNvuMcblWSeKqcrJjw3GpswK3Wm5XFnA+F4D9ifkZM0wwKpU7I1MEXFvifJj5aySOHQH+TVpcpCHBUPGn/7EEPlEQyQLRCfbBb4ipdf4N29iIJjpWbRU+TnlQe95sL24wlwKzmIFV0d7Q1+Cq4DRSDtBJIaXPV959RvcFh8= 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 SA1PR01MB6544.prod.exchangelabs.com (2603:10b6:806:1ab::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9366.17; Fri, 28 Nov 2025 07:55:55 +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.9366.012; Fri, 28 Nov 2025 07:55:55 +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, kprateek.nayak@amd.com, Huang Shijie Subject: [PATCH v4 2/2] sched: update the rq->avg_idle when a task is moved to an idle CPU Date: Fri, 28 Nov 2025 15:54:54 +0800 Message-Id: <20251128075454.676765-3-shijie@os.amperecomputing.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20251128075454.676765-1-shijie@os.amperecomputing.com> References: <20251128075454.676765-1-shijie@os.amperecomputing.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI2PR02CA0027.apcprd02.prod.outlook.com (2603:1096:4:195::14) 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_|SA1PR01MB6544:EE_ X-MS-Office365-Filtering-Correlation-Id: b3644f6f-72f8-4a0b-7e6b-08de2e538f45 X-MS-Exchange-AtpMessageProperties: SA X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|7416014|376014|366016|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?rgJLCCyAExKl13fMyVBKcybYMde3WcncrixhozJWocsrdjS9dbxvXDKC8Uch?= =?us-ascii?Q?h3bsZjCyptY8kqS5UdDH+mOOoickvyF5ObSE8n9RL0KtDNgBuFRAORBrW3PJ?= =?us-ascii?Q?SAZZYRnMtzPh2xkF9qDbTtTXCSpZNvgqBU+TPVhtAB0i+nb4eqa6skiYi5dc?= =?us-ascii?Q?sNkNyQ0wHiySlJv6xh5CpbcqhusCmcLPwyO6jY0B6PdWDWQ3B7BwG2HMw0W8?= =?us-ascii?Q?gEBOjvMEWpC/pUip96mz2XSHRRU0sdfu+iKaICtp5bUrLssvgGs8aicoofoo?= =?us-ascii?Q?MtmeGoX2kFNGkiv0NuxxOlS6N+fcsZDJVj3HcbPxXYhmg2HgklRzce5y/mfs?= =?us-ascii?Q?bvGFIFdLiLoBLODGp2i/WYu1tamjTzSMMmfQxqeto7xzUdt9nGtroxsCgmMS?= =?us-ascii?Q?LJIfqoE9zOil/0/sOLnknumx+p2uyS2fZ9nfkA8gcxpOhidbF9pFlj9yYjYh?= =?us-ascii?Q?uhdMXru9iuJ2x3oVBHxGK7MNYIO5Q7qyMEqG+0BkvzblHHt65FYYDOXiLEQl?= =?us-ascii?Q?sa82kuV4QsaH1JYFv/1N+6h8VMGGj6+QsZMC6uflnw8/B5eMEUqVTkdLZaJe?= =?us-ascii?Q?TSp69FYt8JSwyfxu/8nRPHTYzTEB5qZqLSi0q1TcsdDylfkbwH0nkPRi8/Uk?= =?us-ascii?Q?DF+gVG8sa/bcfvdSh0HZget0gdB6YIKw2GGjGaEx/NMpIs1JRjT5he165dbA?= =?us-ascii?Q?aM07nxVtVpTNcpeMQSyNedXRU9FAdpVB0rZbLAs9uxJoCyFzSeit3khrw3Ej?= =?us-ascii?Q?aeBRuuMOtfHxmivBpbem9ftKTGhVccxw+RVKMZ5zp7+g0rYTU4LubmdbPIrr?= =?us-ascii?Q?wfNJuiZvBfA17inSJP1giqke2VD0PQOQkPANLqsEkJrQ3EajAFqNgEjrKaz1?= =?us-ascii?Q?CdhLASJmoTCzOBUh5+/eiyNvsogxhSzusOsO3VhrK7quGQVs3kTZBtkDgrpD?= =?us-ascii?Q?hiXafvhNlB0XF+JH49QkDq0wbsnHfSRgaof5ptVN5J+BKnRGwk58ZKgIlLO7?= =?us-ascii?Q?a6d25E7fsg/AGEkjQ67IoKRdaHJAIbErBudc6lJeIvdhVnTnCOjvru3e7GaZ?= =?us-ascii?Q?+9nnG/vCYvqqN20ppTKt7rMSPJOL061Vscb967QQXtkPgUM8D+P8VDg8Q+9V?= =?us-ascii?Q?BQRdNmA3Cd+dfWKNFztO1IrH4dhtp78cydggJ27dsu9p5w+JmyO16SHVvwSG?= =?us-ascii?Q?vvmyvrDWJuwKf1UBczSQLtTTZg7BDv2t/r6tZ86Le5xoE92VZniWzADvPP3D?= =?us-ascii?Q?j8yd21vxYcHl0zVoGGtWqwMX0vi2pcU3J7zY6OxwRhg/3nMsWqEb8YLuvJ7B?= =?us-ascii?Q?eurxewyTl7CyMnMT5zHtDoq2WmcLOPWKUN9GRJXbDDO2vo4vVShSqsTw4/Th?= =?us-ascii?Q?avReiA0e1wF1AVNc47w5ta13mAOKyk2cg7aNaXoyrcUDBWcopPvfRt+xoZJ6?= =?us-ascii?Q?1uELLDT4Ozxse0ADJEiXREsXWbdzKYpDFeru53XF4njDwrmXOvMz6cJiNC5V?= =?us-ascii?Q?q3IY17Ux+6gn22w8K6L73zJdhG/+DLc+6dVw?= 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)(52116014)(7416014)(376014)(366016)(1800799024)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?mGiOC9jW9WPFiPVqgTs5PHJa+/CTfrHyfGEIfu2WtT+rH/Glf+0IH7bv4fZX?= =?us-ascii?Q?W+0G1lmbNoqb3rLMkLLxpOpbfw1nOSA6ZI43cvjBTxjAf788UFDisGn1k1+1?= =?us-ascii?Q?mTbGopcRKG1n0VoVRXlpqTF0GMvxotHbCMOtWlpRHh6yNxDBcM5ZdundGGhP?= =?us-ascii?Q?vBx+NJ1dLodYTXyC7kEfnP9XGR+F5dUX5ppPN3pguJSSp7/IUI4aIn882fEJ?= =?us-ascii?Q?s3GsSFkI43rnKcFQMm51KaCFyixZwLbUeDzuVgtipeRmsQTP171VDQ+V6w+t?= =?us-ascii?Q?QUnQbS6VjreJwVpyz+Vo/wP0QOyQlR/PTs5LwfTnG/vKkg3vfrJKiotfmHso?= =?us-ascii?Q?aVWRWJzofhmrllqyOAhIUvVDVBURtxFQCdnJX9niGIRLJNS7K7L68u6o0q+h?= =?us-ascii?Q?QyboDR3syDO2olEamA+ZgPu4zm9hvP2mIlRLgExo8AR/bama6aMymEuVpFxr?= =?us-ascii?Q?1uwSpCdFi5vyTfYxayoGxbv9jrpc7Oek1wGQ8AxyoHbH85p0Nutkn1OAgL9L?= =?us-ascii?Q?9UG/vwPvNJdz3sBMScvip8d9GDU6db7CQvym5Tj0YUxb0mOR0L+Zk1D/LBQn?= =?us-ascii?Q?ce1iXiv2Jf7MjF+fNYQx2LOtxbxAhenOSRf1XOL1KM8PG+xLligpUGS1x3jz?= =?us-ascii?Q?zUmTOu+qFTrutT2NGlV9TaEt8hu0JLDVRqYnPa+s6Nn/Lr6lxHrY4WvG2KWL?= =?us-ascii?Q?3q+inT/oKnEBpb4gInIiBEGTAF/u+sJuUXvuKTRjHOPDb21TX7q6ma5CQXUR?= =?us-ascii?Q?6qNaJiaDX9w2OmBxdPaV44WMxfFe5whIMYUvGjrymIsyKhr0tqk156DjlNOX?= =?us-ascii?Q?BJkNFlBSz8ogq1AJrntNlimu1toaRj5YmvYEkCRejVOBzYs56FsMzXP0my4y?= =?us-ascii?Q?GYf9qUgPIhgSTVEV/NNAindAO0udgVIoCNsPIj7nSUZD1L3zTTymOJF/wVP/?= =?us-ascii?Q?neZst5TKo7PtFjpUvQ4LqPZupfTHd3eFkMmk5tVQCX5GMaF/4j+gb5nh/vca?= =?us-ascii?Q?xCyTDVeB+XwxH/4LdD8LzIlPJ3QzXu3997uwL/cTraGqKUBCsdUmLFq4FjE+?= =?us-ascii?Q?43X+kt2CHYeMJLC828IVTM9dOseD4D+pjebTEZ4nChjGZZ/sDSoGVCXhgdp0?= =?us-ascii?Q?qJX2lMV+Wb2SeovLRFQLU4FCMDBKBRfBfJx31MbeYiWh72C4BMMUebu2tbsW?= =?us-ascii?Q?Na+wnPKgYbNmMn4k9Mnmvew8vs8rWZnspAqQoEDjry2+KoVcApq5t5h+p0RE?= =?us-ascii?Q?+m32kLXfWJ2yl1Mc8tFbiy7EKE+8f6u8sV1Akunes8v3ONpzDmRSByEWHv3p?= =?us-ascii?Q?vV652kBoRgXNiKJvkYXjRo/OW2QRcQaZMt8B0p4WNJiVLslXegm/SJOVY5DZ?= =?us-ascii?Q?E3OmXV+P6tto8lYJNgeFQxQexQGuDjMzreHiD+zlBCGig/F6CFI+bOJ+UFth?= =?us-ascii?Q?VHkJznNXR5kl73XY67H7BAwlJzBPYWlsk/bMuNBy89/wjocFzUGF1Qqm8P4u?= =?us-ascii?Q?Xu1ccGvdVRzOJfbHRGxuohSA3g0tjme9kogBnxeaO3BNRIAixe2gGkjVfIXU?= =?us-ascii?Q?1HbJlG5IZFYK0hakNzwgEaa1Xbr154uu5hdGSwFGEfGM+5PAjgVFNidhKKQq?= =?us-ascii?Q?bzCklcFweTXIG3sEj5YDjpQ=3D?= X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-Network-Message-Id: b3644f6f-72f8-4a0b-7e6b-08de2e538f45 X-MS-Exchange-CrossTenant-AuthSource: PH0PR01MB7975.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Nov 2025 07:55:55.7779 (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: 0tdLr+LH+kdx/J4Qvn6i5LOyMVO81Ya5eYtkP4C1nKpDyP+LI5p23hDLrtQJCGZabAIuthmRX0FniCToCscs4NWUitYDVjWXV+Dwh9jRlY0pFg4F64DfcAuyMk3ZATFF X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR01MB6544 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 enqueue_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 | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 0c4ff93eeb78..7791bc530a77 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -2078,6 +2078,21 @@ unsigned long get_wchan(struct task_struct *p) return ip; } =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; + } +} + void enqueue_task(struct rq *rq, struct task_struct *p, int flags) { if (!(flags & ENQUEUE_NOCLOCK)) @@ -2100,6 +2115,8 @@ void enqueue_task(struct rq *rq, struct task_struct *= p, int flags) =20 if (sched_core_enabled(rq)) sched_core_enqueue(rq, p); + + update_rq_avg_idle(rq); } =20 /* @@ -3645,18 +3662,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 /* --=20 2.40.1