From nobody Sun Feb 8 00:26:11 2026 Received: from MW6PR02CU001.outbound.protection.outlook.com (mail-westus2azon11022117.outbound.protection.outlook.com [52.101.48.117]) (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 2C2B939901A for ; Wed, 21 Jan 2026 09:32:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.48.117 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768987982; cv=fail; b=q02BgdsixORbXWvDCbin8x5odNfD3jLpjW1D60QuLtMIiFSreIYsZGEIJcr2sXw10i6nralXvjICrptw64o9KKGWR+y76ZHtcKfuqs9fBy2Z6Aba4pf38TfYGlOXU4yOkmrZmyT1f8xcNqmuyvAwoH83ebDVT18MbpNShzfHe7c= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768987982; c=relaxed/simple; bh=akKA0+I8q9JBd9JiSUpxoIjJQICTQW0HTQIBx56snHI=; h=From:Date:Subject:Content-Type:Message-Id:To:Cc:MIME-Version; b=o1eoU+HPHTtw6i9alfTWEb/3OL2WNo9qRCjiGTFR466PJnb+L8AawxLjhlo0PQTqBqsWrHJe9oBEki/DWMWCUpkWguvDKZfr6orY2bdWXDfYNKSSaiVCZxThgXAoyqJlushyobc+YtDcRkkYZ1e/EY/mXW/XIyirItIGafOdvB0= 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=ERztCj3q; arc=fail smtp.client-ip=52.101.48.117 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="ERztCj3q" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=DWmls7aW83fy+a/VD7S3QO/0/bOcCjF8kloa95ng+BK8mPPwgTRM+qiVxNw9RzXz0+G96bXUG/fu2QwTcKBY2MVcijjrrxNhN0kaXVShof0Rm60TbTVrCGN3RXFvaIyFwqU6ol9C+GKuc7PjqAbot0F4wZWWSdexsuiS9QtStRXtyPyXhalE/0ylGeA3ZgFRosLFF9LG9NPdUiOmJGfV6kokkzPsBhXi9kgakoJDptNp4FfQQo/xDRx4+L+eppKJBE6AaDHTxFE/8/5YTyOolavrnC7BCtIDGJCznmFCVYnxB2TradOKva+Kcqx3uD5OOoJkvdVeK7s92UyaaWQk7w== 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=uEaHk1rXKvmBaRVUoTDB5EfDqapW1+oGviOsdBMtJnc=; b=s3w2a93VObQV7O7PBztsD1BW6Mo/qKvau2q9LT/nywKM5iUzTrAMPA4SITCpE/STEV0s7Y5CCC4D3t2kRAT2Lwm6SuYdJNMPboYNZOirIzUQI3J7KxlHOKvdPCAhKgjf6X+sSUZQkc2muoziaCSXxpbAJyXfSfgK5QzzwzTd+uVEIwaD8YuZxdXlHUwy/CK4pFwevAnEy6JiUuU4A5WaibidaV5Mt2qdtGA6hcJAXiyRjrFsKyFrsffvXtbR3hrLRObuCy3DJ8tSqNN/OXjxJ1WgvqyHhDFY4shrK1nENOh6eD6v2rq//eeQgryWOe6k7+1KZ+6++nKf1G2zc+PXxw== 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=uEaHk1rXKvmBaRVUoTDB5EfDqapW1+oGviOsdBMtJnc=; b=ERztCj3qwwDon5YHeGUzJ6wVmxJQsw6FYO5yOekQ/ULliWe3V8yeypCvu+ts01qZCLwK4tqasTMZkGlLV7zsp1eovgJ5Ce0Dl5zMcmAOUjUsASG3ZHpU8kJP2Ppi5NdGm2R+QWvKW0YyY77bcbw2WcXSOn65QJUf6YUsKRCAk/A= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=os.amperecomputing.com; Received: from DM2PR01MB9464.prod.exchangelabs.com (2603:10b6:8:2e4::17) by DS1PR01MB9040.prod.exchangelabs.com (2603:10b6:8:21e::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9520.10; Wed, 21 Jan 2026 09:32:57 +0000 Received: from DM2PR01MB9464.prod.exchangelabs.com ([fe80::8b41:b64c:97d4:ed48]) by DM2PR01MB9464.prod.exchangelabs.com ([fe80::8b41:b64c:97d4:ed48%4]) with mapi id 15.20.9520.010; Wed, 21 Jan 2026 09:32:56 +0000 From: Shubhang Kaushik Date: Wed, 21 Jan 2026 01:31:53 -0800 Subject: [PATCH v8] sched: update rq->avg_idle when a task is moved to an idle CPU Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260121-v8-patch-series-v8-1-b7f1cbee5055@os.amperecomputing.com> X-B4-Tracking: v=1; b=H4sIAAidcGkC/6tWKk4tykwtVrJSqFYqSi3LLM7MzwNyLHQUlJIzE vPSU3UzU4B8JSMDIzMDQ0Mz3TIL3YLEkuQMXYhGXdO0NEvDJAsjw+QUEyWgroKi1LTMCrCJ0bG 1tQAF4f+bYQAAAA== X-Change-ID: 20260116-v8-patch-series-5ff91b821cd4 To: Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Shubhang Kaushik , Valentin Schneider , K Prateek Nayak Cc: Huang Shijie , linux-kernel@vger.kernel.org, Shubhang Kaushik X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1768987975; l=5234; i=shubhang@os.amperecomputing.com; s=20251010; h=from:subject:message-id; bh=akKA0+I8q9JBd9JiSUpxoIjJQICTQW0HTQIBx56snHI=; b=IR891gJ2vLkQ4X2qjDGiFDKxf780GnhB16Euc7ga+iQlgq8aWsFSgTQhZqcEKB1ZpZopH7aMZ LHNzvvvq8B6BA8xOb3g/G5vbNgohM/jlsDnbJ4479l+DfDl0tuw+0w5 X-Developer-Key: i=shubhang@os.amperecomputing.com; a=ed25519; pk=jc8YIRvxPSyJaBRe5y+a4N0RXKBUEcAh8+OFhlROXPY= X-ClientProxiedBy: CY5PR19CA0125.namprd19.prod.outlook.com (2603:10b6:930:64::24) To DM2PR01MB9464.prod.exchangelabs.com (2603:10b6:8:2e4::17) 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: DM2PR01MB9464:EE_|DS1PR01MB9040:EE_ X-MS-Office365-Filtering-Correlation-Id: 5d75b22c-bda6-4553-8923-08de58d00f5d X-MS-Exchange-AtpMessageProperties: SA X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|52116014|376014|7416014|1800799024|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?c2M4Tncvc0lkVjFZK3YxRjVEdlgyNEtrL2k0NlJXRHk1cThVV3JaWmZNejBm?= =?utf-8?B?VWswNUhCemwzSXNZczJwUDk0V01TNE1TejFDdGJMcXR3cUlVV0RNT0lyRmRL?= =?utf-8?B?QjRZMDJ4WVRYbGxlM2g0ZTRZanVSRmNsRjREUHV6bmtGWFgxaGovNXZVQXZG?= =?utf-8?B?TmZ3Zm5xVGJoKy8wbktZdy9LQ09uM2tQZkxqbzF0RjVZNFBMTDJsTXhXeUpW?= =?utf-8?B?THNIMS9rclJpeFdhbWVqWTZIVlBOM3pkWmNrcmlPcGZLNUwzTFplNXYxdU1x?= =?utf-8?B?MzVaS3VLZDNiUVVIQzhxb0pudTgxcUV5KytKN2dZWktIQTM5RXhBaDlTaU1U?= =?utf-8?B?WXcxcFM4ZVpTRUhEYlJWOHJacVFqQUZFZHJvRDJBUitCa1ZoM2k5VGJBQ1Fj?= =?utf-8?B?OHJJVU5MU2NrRkg4UUI2MzJ5d2hLVWRTU0tkSkVmQmpzWk53TGxiK01taWJv?= =?utf-8?B?QmM5OFphWURFK2dreW9wVEk2bmE0dkRBTFBRVkFQTDFJbE5iSmZ2bitwelJa?= =?utf-8?B?TVpNRExXRlVwSHJteG92T1RtV2NJbjVMV3pwRVhPU09hTlRaNHp2REhUU3dY?= =?utf-8?B?UktrNzVhS2Qwc3YyNjVDNjgvVnNtejBTdjNPeThVNkYya0F1Q1BKWnhGZzJa?= =?utf-8?B?N0pYejJhdk44cFJ2YUMxbVFtYVhMaFBsV1JmZjhWTGRzVW4xT09IS3JzN3oy?= =?utf-8?B?YWNhN0NmWjUwVDNQZW55SjV4dE43WGNnTHU2SjNNWEY1MEpwUXhNK2RweklW?= =?utf-8?B?aFlTY0J6T1NpZ3VFdkMrc3JvaDd6MTB6Y0VmQ0VBYi9yY1ViekFPODRXajFq?= =?utf-8?B?RkpvTDE5bTQxbVM2VElvaDlDa3hlN0VCVWErOEJoYW9iaStyTlFQZnY2NWdn?= =?utf-8?B?SEFDMWMyTVJSMENOeExYMTk2cVc1U0k1QUJFS0xUYjA5c2JoK09jOVlaZXl1?= =?utf-8?B?WSt3Y3ArMlRjb1dHc1U2Q3VHd0pITXNtaHBjQkx2cXQyQkw3THJiUnQ4NjRC?= =?utf-8?B?WHBuWUZUbGVYbGVlSnVjSG45SmVjSERGU01jdThQQy9XakFrWFd6UkpHcFJa?= =?utf-8?B?d2dTQVFpUjVpb2pEa3ZwQVRDZ0ZiTG1pVkJpcGh2NUd5dStzOGVtOXpTVG5u?= =?utf-8?B?Y05XTVhUaUZNNkt3R20ycmNtbkdYSTR4TTlpcFhSTVFiQlJkNXUrYlJ4cXkw?= =?utf-8?B?a2p0cmpDWXdzSUsxcSt6SEE2OXJqbXhSVkd6MDFwMTZxUTFtb1NSdWpkUGM3?= =?utf-8?B?QlpiNlZhOElGaUJtOVNzcVlkd21NbVZMQjFJNldzdnR2SEo0Z2xEbDJNT3pK?= =?utf-8?B?YStQNnQycGkrTHNnRWREZ2p1RnZEc1lneHZiYVdqaWZ2YkpSOFdhbGI1OGUz?= =?utf-8?B?SCs4TnNmeFlpaVBJK1pibk9ObGI1V3pxS1JIbTUrV09qd2FiMlB3cGNMU2Fp?= =?utf-8?B?ZlBTNndib2I5emJMdnFEczNjV05nQ1R2OVpxVnQrVkxraFYvWmR5YU9OcUhx?= =?utf-8?B?Z2RkbmJrdUl2UUVnYVZBTFdZcEhBYS9vTVNMa2hBOUxNbWNXdWdvT3lpelFi?= =?utf-8?B?RWZGdTIvK3ZkNi9YMUNlRERlYWRTcWNySm90dWJ6THdqUkhobkNDMHRmbFgr?= =?utf-8?B?T3FoaVMvYW5vb0lia0U2VkNkdFJSKzEvQkcxcFZ2QmxyaDVmdWlTMW5vYUlq?= =?utf-8?B?Y1kzYzlhS1gyMWk4VHpXUThUV1ZFemUzY21DRzdDYzFJa2VFV0pRaUQ5RkQ2?= =?utf-8?B?ZWg5VnRVV3U3TTFWNUZFdWljNTlmd05UeVN1c25uaUY5YnA5RmJnZ0QvOHRv?= =?utf-8?B?NUoxQ0dXcm5jWFg0SEhQemVVWHR5S2hSbHdib0ZpRiswblo4Qjc5cldDUDBH?= =?utf-8?B?eDlnd0R1bkw0aGp3a3hPcW9QV2pnUWNMME9GSmRsOWFJUWNhMjdIQm5rTmla?= =?utf-8?B?WGtKYjF3VThQelVQQjR6WWVsUDd6dUlaSjdXeUpnLzNqYXBLOXlleWVGVUZT?= =?utf-8?B?NklLZGo4aW1UTEUrWjVaNnRRQVp5V3Fhd2k3VGpDOU10OTZFd0VRUWoxckor?= =?utf-8?B?TWZnNW9DcjNnMHg1R3pod1lIOXpETnZ6Y0kwOHFSM3VlZG1BTXdSYmlYcU9H?= =?utf-8?B?OXVKaDhsNkFtSXk4L1VXVUJYdWovU0JJOXZuNUVqQy9UZFdzVWNnOUNMdTRW?= =?utf-8?Q?MU18fQEndlAePb3fKa6oKJgR2EC0/+1UQuJiZkozyT5D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM2PR01MB9464.prod.exchangelabs.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(52116014)(376014)(7416014)(1800799024)(38350700014)(921020);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?b3N2Z0pVL2JWZE51cGJyRExKN2xjZHFFVERuZGdUeFNjaGRNVWxUZDl2Uk5i?= =?utf-8?B?Q3NXU2tBM3hwYXBPUG9sQWNtdmJrWmdtZTllOVlucU92TGt3a0JYQWk3K0NB?= =?utf-8?B?MVFielFYRCtJRVpqSHUvV3VDdVVpZVl2RHZHbStSVEwwdFhKL1VXMHpzQTJ6?= =?utf-8?B?bjdEeDJZSTVCZWp0bWwwMkxCemtyOFFNb1hSTkU3a3RLOWJKdjdtUERrM2Nr?= =?utf-8?B?d09yL3BtZGFSV1FTOUxPRE1ZM0hPL1hPeXlqazM4cEFXSU1pbk5PcnRTdlZV?= =?utf-8?B?MDJlZVUySEhEcGJqam91bTFQN0tnb09pWUdBU3dRNHc3bHFZRVNGRDV6RTFq?= =?utf-8?B?Smt6cjljdSs1OUcyOUFIL2t0SGYwRzNlSGV4UmErVlpWZFpuMnQyY2lkZ2NU?= =?utf-8?B?dXlNdEVvdWZoN1ozSU53c3BGT0V4czdZMS9Ca0dEWm12OEtnR2cwNTZLd2F4?= =?utf-8?B?WmkwSVdNYzg4UWVXNHZSSnZ1UHJYSSt5Rnl3VXIvdkE4LzlkV3lyQTMwSmZo?= =?utf-8?B?MkZnVktCcEFiS2xKMHNWK1d2Q1JRbFUvblpoQzhteDJSRzBnVlRiMnJkMFFx?= =?utf-8?B?dTkyTmllUWZpRi95TDA1UVk1RWZ1QU1CTGcrbG1QUVc1cG1CaFNJbnJsdHN0?= =?utf-8?B?dS9tTy9DZWtIVU9qY3h1U2ZvSEIwa3EzWHVVVnJ0YmhrbWdiOXVaemZwdmdX?= =?utf-8?B?dHNrTWhOR0oxaEMyTDFKOUc4Q01UVFJIdndrOHp1R1ZqdjZtVnExNFJ4RGFT?= =?utf-8?B?QUE1WjBjMFNsZWdYTTFZWGlMVXZGODZYdnhtVmRnaGhWV0tDeTVPWmJEUnlL?= =?utf-8?B?cDlHMGZKQUJtTjZyQTJPWWtGVks1cUNFaldJdUN3QXQ2STR4WHNRcDRaUXAy?= =?utf-8?B?ZUJOWllZSlVZcGU4Nk9WOFowN2ZLUHoxdXFhcXZmcXFtK0ZNdkVTTHkwU3hN?= =?utf-8?B?Z2pWRHZSbE9aUXBkM1dabnE3emUvNmc0c01EMzF2UVJ4VXJNencvZmIrL1R2?= =?utf-8?B?ekxpUlZSL2dlcGxoSmFrK0N6WDExdEJNT2VUOE9VcTZEa0E0ejNwdGIwOHBu?= =?utf-8?B?Qm1lVmYrL0tsQjN5Wmt4NGgySkhKMTQrNS9abkIvT3JwdnFxWlVNSEp1Tm52?= =?utf-8?B?djFVUGZDeUhvbjAwSEtlaHVMbWFuWjA0a29wT1hVbGZoUGxIQUtJem9kNkZ1?= =?utf-8?B?c3pEcTNVeEFnblVxMy9rUDlFUldFeUdyNVZxSFJScXNzSVFFRGR0bTFQaTRq?= =?utf-8?B?cGZneDd4U1JJZzZPZk5reXZCVWNOaVJxVUJNUVhjdFY2Qzc4MkxqNWZnNVh4?= =?utf-8?B?RTBPYnN2Rzk3bUtMUU9WVEYyRi9HMWI4cUxpSlMweHhpODRUNDcwc1FUNkFt?= =?utf-8?B?Z2R3QzNLSVZWVnRSRW1nalhJbVdrL3VQR2h4KzRyRW1zTnovR2FVZ0JJR1ZR?= =?utf-8?B?aExZV00vdnhJRW1PZTRJci92WnpIVEVPcUpLMW9KdDlZRlJ2MkdjcFhYMnJS?= =?utf-8?B?L3lpcWYzN29kemx3L3lGRHBiQUozVFRWQlgwZytzSGhWWjJCb2hUWEJaQkUw?= =?utf-8?B?bWpCcjJ6MTlNSitGNENEc3diYlEycWRLbTJ1ZzlMeUtjRmx3RmhDL2l0UXZl?= =?utf-8?B?WHJiTlN3Uy9IRng0T1lzTmNzTXZObitqVlovaVFTVzBncEk4blZSMFdocmww?= =?utf-8?B?dXJubXh4QzByYk1JYjdRZThQNTFkcnpxZlZxSkUrSDFkeWgzL2hTWlZhZ25M?= =?utf-8?B?aE42cTJBZmkrT1E0WDVjZDVrc1FhSkMvaUNSNHRxQmduRFZVYlJUck1OdXho?= =?utf-8?B?Ty85TlIyNzNpRURURkhxeGhLOGFCTnUxTGRlNGdLd0xKemR1b2RCa2gwMndh?= =?utf-8?B?QWEzSFh4WC9RWjdhOHlvRVNQdVFLOHJsbUlBT1hyS2ptd0dRK2pTaVA4OGc2?= =?utf-8?B?TnJNME1nYjQ1M1R1Rkw4S0dOZ1hhMWREdkhla3BVcnMxWjRzYUp2UHdmZEFO?= =?utf-8?B?S3hhbS9KM1kwd0tWZGJZYW5UalBUakVUVmNaMjd5OXJ4clNuZklzays5c3Ji?= =?utf-8?B?aE1aZGd1dDNsVG5ER1F6cERiODVnc3RlTnE0dzRicmovSTQ0MUxJNUhxSGor?= =?utf-8?B?Sm1ZK1dJa3lxMFczRGtNOWRlUmtKTmxJMk81YndCUzcyNlFmeW96R1BZN2Ex?= =?utf-8?B?TW1icjY0Y2JQNVFnWUp4RVovMUVJaFl4RXNDTDg2aTNVSjhRMGRISEk0cmVZ?= =?utf-8?B?RHp5NDBKZHNuYm9MNS8xeEx0NGhaRVlqVDZqK3VqOVl1N3RqWWZ0ZEdJMEZG?= =?utf-8?B?emFERGQ1VUZBYVNPY3YwUHdadzBKQ0doMFBGTVBoZHJ5T3BrU3AzZi9Gc3Yw?= =?utf-8?Q?ZWu9fXcITmRYzNdUBHOhaWwNe1N0OXUU43st1?= X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5d75b22c-bda6-4553-8923-08de58d00f5d X-MS-Exchange-CrossTenant-AuthSource: DM2PR01MB9464.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Jan 2026 09:32:56.8695 (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: bT+bRpQpGiBqs6bu1Z/yv0ci1W2WOWqVaaF5OEfDtway761jK+MGtU/Ng2RyJ9JuIReYMUN3HK4iSwZKwOTnSVJH63ONucr806IL+ai7WltSFZKcpjJsIuJ9utQdzRcd X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS1PR01MB9040 Currently, rq->idle_stamp is only used to calculate avg_idle during wakeups. This means other paths that move a task to an idle CPU such as fork/clone, execve, or migrations, do not end the CPU's idle status in the scheduler's eyes, leading to an inaccurate avg_idle. This patch introduces update_rq_avg_idle() to provide a more accurate measurement of CPU idle duration. By invoking this helper in put_prev_task_idle(), we ensure avg_idle is updated whenever a CPU stops being idle, regardless of how the new task arrived. Changes in v8: - Removed the 'if (rq->idle_stamp)' check: Based on reviewer feedback, tracking any idle duration (not just fair-class specific) provides a more universal view of core availability. Testing on an 80-core Ampere Altra (ARMv8) with 6.19-rc5 baseline: - Hackbench : +7.2% performance gain at 16 threads. - Schbench: Reduced p99.9 tail latencies at high concurrency. Tested-by: Shubhang Kaushik Signed-off-by: Shubhang Kaushik Reviewed-by: Vincent Guittot Tested-by: K Prateek Nayak --- This series improves the accuracy of rq->avg_idle by ensuring the CPU's idle duration is updated whenever a task moves to an idle CPU. The rq->idle_stamp is only cleared during wakeups. This leaves other paths that move a task to an idle CPU, such as fork, exec, or load balancing migrations, unable to end the CPU's idle status in the scheduler's view. This architectural gap produces stale avg_idle values, misleading the new idle balancer into incorrectly skipping task migrations and degrading overall throughput on high core count systems. v7--> v8: Remove the 'if (rq->idle_stamp)' condition check in update_rq_avg_idle(). --v7:https://lkml.org/lkml/2025/12/26/90 v6--> v7: Call the update_rq_avg_idle() in the put_prev_task_idle(). Remove the patch 1 in the original patch set. --v6:https://lkml.org/lkml/2025/12/9/377 v5--> v6: Remove "this_rq->idle_stamp =3D 0;" in patch 1. Update the test result with Specjbb. --v5:https://lkml.org/lkml/2025/12/3/179 v4--> v5: Modify the changelog. --v4:https://lkml.org/lkml/2025/11/28/300 v3--> v4: Remove the code for delayed task. --v3: https://lkml.org/lkml/2025/11/27/456 v2--> v3: -- merge patch 3 into patch 2: move update_rq_avg_idle() to enqueue_task(). --v2: https://lkml.org/lkml/2025/11/27/214 v1--> v2: -- Put update_rq_avg_idle() to activate_task() -- Add Delay-dequeue task check. --v1: https://lkml.org/lkml/2025/11/24/97 kernel/sched/core.c | 23 +++++++++++------------ kernel/sched/idle.c | 1 + kernel/sched/sched.h | 1 + 3 files changed, 13 insertions(+), 12 deletions(-) -- 2.52.0 sched/core: update rq->avg_idle when a task is moved to an idle CPU --- kernel/sched/core.c | 24 ++++++++++++------------ kernel/sched/idle.c | 1 + kernel/sched/sched.h | 1 + 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 045f83ad261e25283d290fd064ad47cd2399dc79..81a841e22c961ff04ad291eeeed= 81147fd464324 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -3607,6 +3607,18 @@ static inline void ttwu_do_wakeup(struct task_struct= *p) trace_sched_wakeup(p); } =20 +void update_rq_avg_idle(struct rq *rq) +{ + 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; +} + static void ttwu_do_activate(struct rq *rq, struct task_struct *p, int wake_flags, struct rq_flags *rf) @@ -3642,18 +3654,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/idle.c b/kernel/sched/idle.c index c174afe1dd177a22535417be0de1fc1b690c0368..36ddc5bcfa0383bd4d07d3c8b73= 2ee5b8567d194 100644 --- a/kernel/sched/idle.c +++ b/kernel/sched/idle.c @@ -460,6 +460,7 @@ static void put_prev_task_idle(struct rq *rq, struct ta= sk_struct *prev, struct t { update_curr_idle(rq); scx_update_idle(rq, false, true); + update_rq_avg_idle(rq); } =20 static void set_next_task_idle(struct rq *rq, struct task_struct *next, bo= ol first) diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index 93fce4bbff5eac1d4719394e89dfae886b74d865..7edf8600f2c3f45afa32bc73db2= 155ea6e0067f0 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -1676,6 +1676,7 @@ static inline struct cfs_rq *group_cfs_rq(struct sche= d_entity *grp) =20 #endif /* !CONFIG_FAIR_GROUP_SCHED */ =20 +extern void update_rq_avg_idle(struct rq *rq); extern void update_rq_clock(struct rq *rq); =20 /* --- base-commit: 24d479d26b25bce5faea3ddd9fa8f3a6c3129ea7 change-id: 20260116-v8-patch-series-5ff91b821cd4 Best regards, --=20 Shubhang Kaushik