From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from BL2PR02CU003.outbound.protection.outlook.com (mail-eastusazon11021091.outbound.protection.outlook.com [52.101.52.91]) (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 9B91A28314B for ; Wed, 3 Dec 2025 05:32:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.52.91 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764739932; cv=fail; b=jIMNpLTzTuqST39w2Z8rnPaZyZFbsEW3bqoO6Qvq5NWeJcj2M3Jchm/ePnWypbWNwR3hnkVzqHyqeWsRxpp9qXwUdT9notwf59E38OxnhmLOtBREfQCxL4zCR9WC5XOF+kKQeLpC1Ry1PqGOGKJcgSLDlDguSx31xkihYu5zHr0= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764739932; c=relaxed/simple; bh=82R6SrMgnXcmeLSw9G2xDkOjkTE6lm68CDwZbxrIe80=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=DKGis7CB09pme15Ny1SMkXyVqNgonDhVWQrJ8UwMvYPtgCZocDolWNtghR70e/Pq/KDXRQ36PzT30VNxJhtqFsbAqh9+sCIGboEH0Po7ipRVBm/vzXx5d8V3LXnxQnVeC2zuCn8UDbgXf6GFz+0MjgTcz1AgFP3tLvRSzRXGTps= 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=Y9Jgmk1M; arc=fail smtp.client-ip=52.101.52.91 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="Y9Jgmk1M" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=mzlKHNWggv6QQHyGEYkscfLcBHQu7LW1QPMwNVvcTcyomFdxXlIYNqTULNn36WAeL1yoKwQWtOJzoJGM/aosd9Nk1OrNYOYxsszILKOpQ9gGhen49s3mog1apv4Q5IoB3NqW9zxYj1IMYEBYP6K6RiYbohWsfinE+2A/Cdexdbqwbq8uABQi+gI481fWopirherngZlKOjDKStZRxGBbWJjX5HGnzWsQO4WdsqA+YDmob/jiKirHwWyflJuFX86Tzfu9sKD8hSIc/ykszTjcp7XALbBVQ/tC1bwgCN9JIfmWDBamzt+uyEZbM9lM0I10qj2IMStWzKktnob/oYj2yQ== 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=m2eiIPAXVhzK+Oj56QEWashonR/mFhEYhQYcOWvNrt4=; b=eVdB6WLAB8z7WNkoY+ymcpnclU6Sq4q1DmDb0MFQH33czPWyJeKhmzLh2BZW4AyM4oAtzMdvmwAlxDzxOFNnH9H9p3LuGMWOwBwK83+m/sFqXLHMdtCcdGayqy3Pq8FGkU47D3OFd0Si+BU8YPXdI0IUHUCR1j/OAQnOSGHS1o5DAvY3cj8RqGT6I0R10HbUPRu3zGz59m/NGj7SxKFhHdS/11rs2F4yN+kkuH8vP5RhlkEExHNAp4oZepRBnSTNRA4CLqlwfYHxYaYQ3lvJY2evKQ4Oxa8mg2jncosJrlbm44kViDjHhCGArFzrkOacztiU+BTZxqBoOgYSKzMwpQ== 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=m2eiIPAXVhzK+Oj56QEWashonR/mFhEYhQYcOWvNrt4=; b=Y9Jgmk1MpJopIVTCKGEGhGTgFelVuefDpEav95BY0cTwKalpbvmP3XKDE/dqr47N/7T/rGi+rAkMfg21nJt8dnrJz8IAUL2jxOaiQ5QUxwbdUBsUq0xViyQQbxEWcRKEoWpCFYAHt4y7z61fIDOFCFh5M9Qs69ND2pEAED8+UQg= 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 IA4PR01MB9425.prod.exchangelabs.com (2603:10b6:208:557::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9366.17; Wed, 3 Dec 2025 05:32:04 +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.9388.003; Wed, 3 Dec 2025 05:32:04 +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 v5 2/2] sched: update the rq->avg_idle when a task is moved to an idle CPU Date: Wed, 3 Dec 2025 13:30:56 +0800 Message-Id: <20251203053056.4128-3-shijie@os.amperecomputing.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20251203053056.4128-1-shijie@os.amperecomputing.com> References: <20251203053056.4128-1-shijie@os.amperecomputing.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: TPYP295CA0039.TWNP295.PROD.OUTLOOK.COM (2603:1096:7d0:7::10) 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_|IA4PR01MB9425:EE_ X-MS-Office365-Filtering-Correlation-Id: a3b88110-778f-45ad-556f-08de322d4b03 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|1800799024|52116014|7416014|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?cgjHt9aI9XGz0upWCgp9xluA1irBQGgVd1VIWJSpAGTrOp3/F2RS6wJ+vTUQ?= =?us-ascii?Q?00dwgpW8IOFhHV3cd8rypPVKCYbviLpymrm7CLwGwxACwvQxNF7UiwPw31rq?= =?us-ascii?Q?ZbGyy3taXVbRlfMlOGawR06qzjzt9gLETlpmaieJOe8+bLkF6yriJY58lCk1?= =?us-ascii?Q?VxNg2VuO1I+alT9iemhBDEyPFd9zJQqjOC8EpQXXbxFNZ2U67TNHYPWwd1k7?= =?us-ascii?Q?RpoZu7OyLvbnt6CpNGO6xkWt9bHk2Qd7yWVlNdU9XZIo2XpQRU0Hfph7AvrX?= =?us-ascii?Q?A87errbvEju1eFalHR8UWzayKrR3NUUPPLu02A+uuM6x3LZ6g2b1n+tf7d+U?= =?us-ascii?Q?cuuaNCrjjBnUDeESr4pPl4Z4BEF0Jrzl7+jdGO1XvBnUfnwGVUk4Y05c88N2?= =?us-ascii?Q?JIURl98oQghTS2nW1fUl+SEr5dDcmIUcw4/xPJ9/+D+YLdAce2lUKrFtQbco?= =?us-ascii?Q?QagCK3aG2/e/ANCks6DbjUPGfHR6lDYymXGoeMQJ93vZC/WwV0+IKeyXp8lT?= =?us-ascii?Q?EXWlIzf+Br6Z4DB8ZYPFjr/LdgznIQm8k+cmJXHY5padTNQSoGJaZpyxUQi+?= =?us-ascii?Q?yaRjsrLEThv5HiVAl5G2BAAtZ9gpsUbn+EWLlQEh6TT56dZ/uQtrabe/wJ3Z?= =?us-ascii?Q?7ACXYygHtV1WWe83uJe1iLID+0u9bqeQsEJBbBttYit5/hvlAU/+vcrfNE2s?= =?us-ascii?Q?Qdre8f3PSGU29ypzKo4XbsivTMe8lcJBSXfZGnVVhtuLjAqsGEHcmc6DaFxT?= =?us-ascii?Q?SFLYKVSCpZ5spBkcrA6Gm8LEmw2HyvbYCgTNP5F9ztg3ixPkyisGLU0FDvXZ?= =?us-ascii?Q?xPT9LchOsc7U2MYpOWJZB83tdsSAsTxbrZzuSVRwFxecYuxDKUwPWZ8BVuye?= =?us-ascii?Q?oC9wlRAT8VWdb6aJOD+IscPzfrbz5QgzRxtQ7lQrYDcGB7aLn/MkxXxw72lE?= =?us-ascii?Q?LGckZj8PqOgQgN6KYe2lVQ/qvo3eiBf/PJvFyYXTHVx+YP/V/9hIMujucOAk?= =?us-ascii?Q?E0cK3JtZPNl2DE5sZgjrv8qMZwWregh8+jYwjXkK32x3xdgMJZHIdOvMOw3s?= =?us-ascii?Q?4ztIrMk0UamvHtZFr/XGWKL//N5E/ZMnNxX+Fa06ygiFLwoqy+VLe2c6xRym?= =?us-ascii?Q?7SUITMoQ1Yd57oORdHQsU430JrfTSneYcnyENAPTND6SBPR/s4h3g0PCFlYA?= =?us-ascii?Q?VYAzdt4QbXTV539/VQ34KoKLGRN4+v/aRAoFFHs2VikDw5OOFmS+r4/KUlFg?= =?us-ascii?Q?OaluGwd28ghHe2HwHYsmaWIzfgPtHgg5OqEksikH/tSc/uOj0TOpPYf4absf?= =?us-ascii?Q?udRAF7N46k2x3DOeBMthp03KpbQXuvrdOnVpxGJVilpVRqGiFJBS1wItlyiL?= =?us-ascii?Q?/TWWmozpvmAbinL30lTJboX7TYygvX2IVtPca0LT67i0+g626q2SSjJ8N+t/?= =?us-ascii?Q?EJo9i+wLLehhr7LzAH9VK4SoeYZSNPS4NpIZIxba5C26YpJkvZ6y3bhDqQ2h?= =?us-ascii?Q?sKVWq5/qMS8QAh36ptrlWJdeOflJZvnlfDEa?= 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)(1800799024)(52116014)(7416014)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?UlUOAhkXlGpQtjBXFtFxwARUh00jzrAO+PsPwVJGIOmiQJSwqNhrgVKOWilG?= =?us-ascii?Q?W0kLuaD7K35ooaW9slP3bHoQbY+kOH6wR7ADv3df6xkqn86xqmD7zaxiwrLt?= =?us-ascii?Q?2RWLndr6MMWTiYgj+TwJyPrg1poMJLJp+TlU0IA1L7JAyUbL1EqHg0WayBLS?= =?us-ascii?Q?9A9/UU4Xt1gbqRZaQhu2M9O1e2lXnd1r6EcDwYRcGUHwBRZcTc+hwwHJqIpZ?= =?us-ascii?Q?gXj8Dw2gVSl0NRTRxVtkfVPqoxSCzMGrhbJdi+A1O5QpDW2jU0he59AGwkBa?= =?us-ascii?Q?msr8Bl9r0EoldP6HJm04zaKkZMRmiHTa8+JWkdTnaQNuc/Y8kISyH78s0Z3z?= =?us-ascii?Q?O4s9w3v4EJRR4pjXJkv19JVtcr8l6ePODJfiwfqC45k+YT3tdaApWBpgmXDL?= =?us-ascii?Q?Z5L5fLDFnPl+izaITeqCeP+868etv97RoVoBtF4QngACzjl5FYlLag//Eow2?= =?us-ascii?Q?tUvFltrJr08ePRXgXk+2IapbcfnaQDXEqJRHcW31hrUU/EY/6RcT4zWm10j0?= =?us-ascii?Q?6B2uKETD8rzu032LOd4XYgl9EQLew9dI785RRxchc+YgtIm1Xvq/y8H6NFcQ?= =?us-ascii?Q?7hMl0Yxm/mBUMtn2KoYqnOmnvvz053H62cv6RHaBWdJ9E/QBItcSDnCJQRqZ?= =?us-ascii?Q?r5lzwIbmNGkv+KhqX+Hx7L+L/6KZA7P4+z8ncI7fPsILA/ujft2n0lx3I7yd?= =?us-ascii?Q?rMlGvLfuWVjQjv7dmIdCWdhv2wCuzRNek2eQAUj0XU8/sldbCnktNJAHDFrQ?= =?us-ascii?Q?u9Y2H7G7+5niWnXnvRuPMDGaZIvDtileMwLDu1ab2ik90Vy5rRJSE/JxRWrJ?= =?us-ascii?Q?C570pAqJ1Q+8bLO5/j8+VAps/gR8yjoEUKNFvOHr0qg3SOCaBd88RMspHNHc?= =?us-ascii?Q?5iLSaERHcYg+SNcNudB7BdA5KwQVv9FACPZ7j4VOYHlO1VjWwrSbIvXZJXk+?= =?us-ascii?Q?+1OfPl/s+GbGTu/GsGRB3bVv4tjzPjqtKAU53ZrlJozIy4Pn6vY3EM3/OSAg?= =?us-ascii?Q?z4Zc7v7myQh0+5pIEIYzmfcT6UEvhvD2CURGZupdwnANYKcTHlK4B+q3UDFL?= =?us-ascii?Q?xzpZiSqxHyasRnYUw3pO6HkwtokiSxMC+yOxFzfGNmNLxbWnlnVEgIN/IBan?= =?us-ascii?Q?44ul1amkobFNSZT2hLCsI8AF6FIe+bBa1BXiBOXu9q4FqvEYMgMN6+WDRGTt?= =?us-ascii?Q?dwf9Zi3mYGsLHCPegqBwcjVh1wUoDzGWHOkpSg7jXvbmkRKzSxhzIXZ7NBMb?= =?us-ascii?Q?36PvgFZxQq1+xswYM7SC+M398fAQNTk6pBrDmUPVzTO52hMgOks8XojwSIDD?= =?us-ascii?Q?LDX8yoe40pxK/zcUNyFvvtJgTuDp6eNtvOjDWilowcMwu5GtNqK8vAGbgEO4?= =?us-ascii?Q?RztM4Q0OYQPgHyglPirUfNJSKgn5+O31ybg+dXox7BvC+yOEiKO8ZE2CcaA3?= =?us-ascii?Q?dLTkwFYVkz7h1TjjQTsMCgbY1lSZlhtrS7cGbGDHUmGDOiws/ONV2ri0HAUq?= =?us-ascii?Q?IbeX4INJy2Lp4w1g571SU3uWjbyskhQQmxw39XR92PJ0HZ24oifk1aOd7kxX?= =?us-ascii?Q?nU53HVzzO1YPk6DSXCq7odG1uusEFGk8deheMlVaWc5SyP1woPTrEK+dND7q?= =?us-ascii?Q?gzITvHzMNe54EN/h3RWgQJc=3D?= X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-Network-Message-Id: a3b88110-778f-45ad-556f-08de322d4b03 X-MS-Exchange-CrossTenant-AuthSource: PH0PR01MB7975.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Dec 2025 05:32:04.8040 (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: UCc9x1X+4bUbq8zNuLiWWtdHC7EZsZSh9JlkD7cAa/tq4sRe05Ba8cWcvP0/1wCH45IltAbQJtJIDDN3oYAo08qeJpeqZRovIKKWj9T/GJQER4UvrRQFBF6emelTYnvn X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA4PR01MB9425 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. In order to get more accurate rq->avg_idle, we need to update it at more places(not only the wakeup). 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 9f10cfbdc228..2e3c4043de51 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; } +static void update_rq_avg_idle(struct rq *rq) +{ + if (rq->idle_stamp) { + u64 delta = rq_clock(rq) - rq->idle_stamp; + u64 max = 2*rq->max_idle_balance_cost; + + update_avg(&rq->avg_idle, delta); + + if (rq->avg_idle > max) + rq->avg_idle = max; + + rq->idle_stamp = 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) if (sched_core_enabled(rq)) sched_core_enqueue(rq, p); + + update_rq_avg_idle(rq); } /* @@ -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 = rq_clock(rq) - rq->idle_stamp; - u64 max = 2*rq->max_idle_balance_cost; - - update_avg(&rq->avg_idle, delta); - - if (rq->avg_idle > max) - rq->avg_idle = max; - - rq->idle_stamp = 0; - } } /* -- 2.40.1