From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from BL2PR02CU003.outbound.protection.outlook.com (mail-eastusazon11021143.outbound.protection.outlook.com [52.101.52.143]) (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 D40D71EE7B7 for ; Wed, 4 Feb 2026 02:08:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.52.143 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770170921; cv=fail; b=Btt4M5G1pGiy7JKT8VX8rsR5MD+/lSANE8t0dYPselTQElZth8c2cRXzRixf68PvMCD/6qTz4fcRDC4Huf2zI+Jg1c+UiGZmK7vJxwgEz2AxjpK/vaLxjZCdFU0adMuXNzN79DPJNKNCV7nMfEGfFJipSkueoTLoQ9dbZ4iszPI= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770170921; c=relaxed/simple; bh=bYJA/TktbIifXoP8uB4AfvduRSTY6VUSXIU2okd14Gk=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References: Content-Type:MIME-Version; b=ThtOlHeR0cRZMu77gdOpnv/tenP8QIvr4YFwpLBex+0mi7FfsTf2QPI4sGXI817jOV/RCIFF7dLaY7J7DN4x+6ugwtF3On+6nJPwVuMYm9XJVVIM+Hj6Idz+IKN+bNzk7G5x1zVdmxWmSc1cTjqtn7U6AOV9nWM1hMTIFjfEEog= 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=a+qYyPLE; arc=fail smtp.client-ip=52.101.52.143 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="a+qYyPLE" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=yaJEj+0ZOU4UjCCoE03Ac1NT8TLC5S4xlc/pURy/YF/b3If5PskQ+Dy3FF+Ui3emhqrduhwv0nVYElPp6AVftDwIcpN99o1AonrjAiXvrJekeWlI2EqE9L8SbvvMhw9Sjaevoa62jyA5mPHyfDlDtx4JOZtSPWULv8fWwWLss4TKBoLkRXhCfKjXvVIHFd3hGpQAe3/ViNyDp0J9pFr/PQFRW4OVSUHOaALhxb/YI62DSJzSCz6IuTS9sYWUeYC/ZnWHW54CH5mBtub22ogEB4JgFNalURPlulJmZ4tGuz2vdNW0ixGI3yXL6jzuvvAg44ydyyicQsRgECNyx9pMLQ== 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=BxR70HO/ggAGwm73JX5EHUHXR+SSr59sJEZw36y382Y=; b=l9Ng8cQDar5CasIeFtCNTIs7yWT1p7XbBY+vZRDVNLmpG9Oq8hJ7wLCq5aPNBMbO5lshrWknxz10uueKZX7/fYQISKtn6aWV6yVVzAS0624GtH+/LTmFkpoamUuOKa06q+XnfyUtrQg6sMoszVMf9RbROXNulO+P9gdS8QEvtjm1vAvBSVxG4d+LRR3GWXnJkX+8bPMfJiyFGM65sQEX8yRNAslMw/AXKNuTg4j1CMgDfMEAI0U3789vnluJXZSa6QRdQMPZeisOU7/hP9AgE2hVFBtD/6d4Ll7W/KcmrKr9oZ7sHR+8zS4wOiNrT7HsyY6P+N83Ew3gdLpamKzp8Q== 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=BxR70HO/ggAGwm73JX5EHUHXR+SSr59sJEZw36y382Y=; b=a+qYyPLEseJ/plSxJ9tsqYPowuuP4d+uMcuiWaEfmCfr7fl9e3AHVSvFe+IjA/4TJOreKDmSgDeTcVYCpz8a1+K/vZZ5uJ1jgrh4gBSYYwXG+E+6xOdmfDfe+NHJDtuWnxqlHrxxXPz09NnxhogceDDbHdqqhmD05XMQUbA/BTY= 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 MW6PR01MB8627.prod.exchangelabs.com (2603:10b6:303:23e::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.16; Wed, 4 Feb 2026 02:08:36 +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.9564.016; Wed, 4 Feb 2026 02:08:36 +0000 Date: Tue, 3 Feb 2026 18:08:33 -0800 (PST) From: Shubhang Kaushik To: Christian Loehle , linux-kernel@vger.kernel.org, peterz@infradead.org, mingo@redhat.com, vincent.guittot@linaro.org cc: juri.lelli@redhat.com, dietmar.eggemann@arm.com, kprateek.nayak@amd.com, pierre.gondois@arm.com Subject: Re: [PATCHv2] sched/fair: Skip SCHED_IDLE rq for SCHED_IDLE task In-Reply-To: <20260203184939.2138022-1-christian.loehle@arm.com> Message-ID: <6895a358-c993-74d5-d804-3b7130ee1559@os.amperecomputing.com> References: <20260203184939.2138022-1-christian.loehle@arm.com> Content-Type: multipart/mixed; boundary="1275739760-1662836722-1770170915=:142762" X-ClientProxiedBy: DS7P220CA0010.NAMP220.PROD.OUTLOOK.COM (2603:10b6:8:1ca::8) 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_|MW6PR01MB8627:EE_ X-MS-Office365-Filtering-Correlation-Id: 18a9bbb7-5f6d-4977-b628-08de63924e10 X-MS-Exchange-AtpMessageProperties: SA X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|366016|7053199007; X-Microsoft-Antispam-Message-Info: =?utf-8?B?UVdhckxHZW5pZXBaSFg0QWtENGIzZCtzSG5Bc2laOFZSN1FDSGRoOFBjWnQ4?= =?utf-8?B?VzhQcFFZaUZQNndKRml0VHgwU3l5ZE84MWg2UkFyT2Uxb1pudXptTFFTWjI5?= =?utf-8?B?MExtd3FMTG5hR1JsNDlzWERXeGxWTlN3RlZpZXFmaXhaL1RpNzJkd3p6UmQ2?= =?utf-8?B?YldNWkVsK0RUbG93RlVudHp0SUp3eTcvclJ2cWFlNUFwejcycWw1Rkdic1B0?= =?utf-8?B?WlpHemJkTE0rU2FkNGZwaFEvMzE2NHRVZ0NYWTBrSE9FVWs1S3FKU1E3Y1pX?= =?utf-8?B?Y1FzVGV5dFR3cCtpeWY2UGxpanhsVGpLUDFUTFhvb1hGUUhiM2duTWUxcVM4?= =?utf-8?B?dWdVK0xGL3BtQThFYko5NmlBN2NTVU53bGJrMHloMFlONG4yWDhaM0xVeWtG?= =?utf-8?B?WDhTdjdwbnY5bkNKWit5cDNrZVl0b3NMbDcwUUVTR1F5QVhPNGFhbWJHYXhU?= =?utf-8?B?STAxYm5ydG4yTGV3dGhSVlloN2lITzJncUpVVFFWQnFjdkEvSjkxRld2OUtp?= =?utf-8?B?ZmlqTURWQ1oxRG9kMEJBUElIdkh2S0FSakdWYWh2UmhPV0s1WjVVa2YxanBR?= =?utf-8?B?MmY3aHpyeE11YVNqanNUSHk4L3lhRmt4RElCU1kwZjBCRnQ1WDRDa3FrT0F3?= =?utf-8?B?a0ZxK3JONXZCZ3c5Z1paY051eStpc2cvUTdHanYxNnJCQXRjazNGQ0V3ZWMy?= =?utf-8?B?cGN4VWF5UFFWSFJLK2U3ZzFNa1BOd3hlb000Z2pKekRlcDJqeEo1QmRBbFpt?= =?utf-8?B?aGtGd0lLbldZNVdwRVc4QjN5UlY5NFdFOTRrY3F1QUl4TWc3ZUxMaUdtWE1N?= =?utf-8?B?NXRmVWFIeVAzVTZMdUVTK3o2YmtNZ05CZ3dUMUIxMnk0QklrN1JNeHFrcW5D?= =?utf-8?B?RlN3Q1hvMmkwanVQMEJQTWZhaERIZVk2UVM1ZkRjTmRPU2ppQmY2ZUJKendr?= =?utf-8?B?eUJkVzFjRVBWWHpDemM4UExWZG9UWlhocU90S0FEblpFZWJ0Z1pEYTB0bHZ4?= =?utf-8?B?MlJFaGNjeElZWXpYa3lzMU45R1RjbWF2cjNwTVhvMHVEdTVsUjR4ME53Z1VI?= =?utf-8?B?bWtBcmxNN3dlalJ2MW12RTA5WEdzYk55d25xWmV4bXkxWjg0VDNQSWVNM21m?= =?utf-8?B?eWxOaWlhWWFKcUhKNlFveUQzYzRUd1MyQUlIWG9IcitlNG9jd1VwRURrTXZk?= =?utf-8?B?VmhQVkNUQzBpSkZZWkxZQllMVnBHSUg5eUIvUFVLNlN6cTB4ajZPQXBUdjI3?= =?utf-8?B?QnJKVGRZbStwb0hVVUNNaGJIM1RlZ1hKOG1KYkFGTDFZMHBHQ2RvZlFXeTJU?= =?utf-8?B?MzFYQWRtR1JRZ0ZiNkdvZytEeDdZZU5IQldqbjNqOFZST3ArdE84OUFRcVNR?= =?utf-8?B?R3EzV0hoWHljVWV6SjFjcFRCd2J2NUJLMUFXc0x0YWJOQjVhVUNFYlF3RkNs?= =?utf-8?B?NVlKMTBjbmJaM0RQYi8zaXZRbUY4Rk9wTmpSNG5BQlM5QWt1Qnh6UVFrd0FT?= =?utf-8?B?b1p4R3l1YllyV09EMEthenRYakliRERESlZSa0ZPckVGQjBMeUFTYTJkcXF3?= =?utf-8?B?bWcyZERIK1FxVUwrcW1mb2tmL21Tc2lHYWhPNXVUaTJ4bktuSnB5R1dUd1Ft?= =?utf-8?B?ZE9NTzNkamJKRFV2a0lZUllGaUoxT1ZNaUxyQ3JzNWg3dDVpT2RSNU05Rmly?= =?utf-8?B?cWhXeEFRMVBQQlpWc1pSU1hvcWNDY2ZMcXdhYWVVbVRMbkRzUFNNY2FqWTVj?= =?utf-8?B?NU5SVXd3LzdhK0ZZZy8rb0lyQUN3dWo5TWthWmxTTkI3NG1iSFRLRHVZNGhq?= =?utf-8?B?SnVvOXBTeDh4QUVoT3hySkxjN2JrL2NPZlRLUk1HRnNRWjB4NFBCYmZ1bkFl?= =?utf-8?B?Z05pVllNODhrcFQyV0hsSVRtQXlNQjRSTWFWU0w0THkyZFZWQjgrSkMyTjB0?= =?utf-8?B?WmFWZHlLQ1VNeU5tWUtFdllaVFlXTEZkamM2M0V4Qy9RV2hZbms4djRxZHgy?= =?utf-8?B?djg3SUtCbVhWQXJIS0NoTi9SWHNIV1FkSlowRVRFU0ZITDBvcFBYVHlJWkI0?= =?utf-8?B?LytDRUFmaGVhZlc4VTZYdHBBRUdoWUNkNFVGSkZ2dFNoK1g1QVVkcnlUVDZE?= =?utf-8?Q?p0Pw=3D?= 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)(1800799024)(376014)(366016)(7053199007);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?T0x5cUZUWUZFZzFtRVZ0VTN4aTdvZkFzYzlUV3JEbFlFUEVKVFlVM284QlAy?= =?utf-8?B?MzRSanU5cTQvamNYQkVHSUphM0YyUHpvdElVNDI3Vm5pMURNQjdhWG5Sd0ds?= =?utf-8?B?S0NYRFcra0wrN2Z0WWpQRi9QUjdGczY4ZkFtTGdVVXk5clRrbWYvNVlXSUVO?= =?utf-8?B?VVArN1Rmc2Y1T0JFaDY3Q1hFTkJpeHc3NThpYmtYTzJTMndmbnpVM0VtNzl2?= =?utf-8?B?MitmSytYeG13Z1B6T1ZDdVZINWlXeXFZZVJ0Sk5BNTZteDg5bzBsMy90OFRw?= =?utf-8?B?T25Pd2FHSlVPaW5Dbzk1MEdGQVlteUZVR1o1dmJYK2hiUFJCMzdnYmhUV2p3?= =?utf-8?B?SE9MQ3lKY0UrMDVkNTF5aWF4YXJ2dXNMeUlHQlFQMytJeE9qbXNPQjdpTTBL?= =?utf-8?B?eUtmMGFBaWdNaXBTK1RlYUNhRTVFZGFUQ0lFL2g3UE96TlNWSnpMdGFPSllL?= =?utf-8?B?MTZWTGxZcVVHZ2ppOGMzOVJ3RmZKSzJpaG96TGI1RFJuVmpucXJkZG16ZTV2?= =?utf-8?B?K3ZGbFhLZlhtZGwwWFZaY2YrWjZkb3NFc3VZcVhIcXdYK1VCcXpHNkJ2aklu?= =?utf-8?B?TmpRL0pwVTVmajNmNWM5UXp1dlRZTGJUbTV1ZGtadnlCS1J1c0o4RlNvd0ty?= =?utf-8?B?SHJaNng2V29rQzZUNkh5bjBwa2hMSzc0UmgwU3FHYTI1UGtWZGRxKzV2b0Ja?= =?utf-8?B?OUZzcWVUL09NUXdvampPY0R4c3FpdXlXSUNKTmE1TkRMT0czajduMlFSU1RE?= =?utf-8?B?YlpWK3NoMmNUMUM0SWhuSjV3VzlQa2Z0MS9EendKYkdxUnd1OTVqMjlubWps?= =?utf-8?B?LzMwd2VveUdiazZndkVpUUcyODlQTnhmMFRUbEtlUmxRWFR0cW1iOEZLbjhx?= =?utf-8?B?VUVGR0Q0UUFlRFdDMjFNZ01qcXJIYklldkZqOWNHSnliTHZCYXhsdmxPT2pr?= =?utf-8?B?RlIrcGsvaEc3dFFxNi9qZ1c4YXg0TFhLTE16MVNkS0EwSlFWVThlQlFtTjls?= =?utf-8?B?RkZ6c21ncHdhdzZVM3U4VjRxOGxNcndsWkoyc3YxNGlheVFCS29zREx0ajdN?= =?utf-8?B?YnBvQWxGVFdKdFhpL1NmNTQzdklHY2w1eTBvRWxFTGU1VjgvZi9pRE1mSEFP?= =?utf-8?B?TmVFcVJiSGV3Nkl6K1h2N1hLOEZINWxEM2kzSmh4dHdxVnNrU1FTeFIyM1dX?= =?utf-8?B?QmdSb1pvUDlyTVhiRmh2THJmakpZMnZ2VFFkdHNIL1JiRHdudm0wcFE5eXgx?= =?utf-8?B?djJkaER6cGxjSkgvRjdtTVN2RWpGeTBKMkQ2ZVhGQzgxQ3VaTzRTVXlZYVpa?= =?utf-8?B?TW8rdFhUTTYyNmVEMzlmRmRtMVpCWFNyVG9wZldKTmluYkNpa0VQZmFBMlJO?= =?utf-8?B?aVBCRVlLZXp0em83YlBOaHBvSzh0aEV2R1ZkYVJEL092dkFnR3VSSGdMcDN2?= =?utf-8?B?S3Y0djFpZ2RsNWc5UGp6VHNjd2R0a3hhNFFGQytxNitlelZwRVY4T1ZEciti?= =?utf-8?B?UHZ4NzNISHFBT0tBZVBacHpVSmZ0RG14eFhzTldORlprTjN5MkNRcHVKN2ZE?= =?utf-8?B?NWpVUzZlc3pTdmh4N1hidExiYjQ5N21hQzVCZ1hab1p3aDdQNmpHai9JanJo?= =?utf-8?B?MHZTSFhQZ25yZmFOYXlsZHh4ODd4QThqalRMQWU5cGlpYXRqZjgxcjZQemlx?= =?utf-8?B?NEF1cTdDVVNnMDRCMm5UL1dmeVRseFlVQlN4WFBrTmhUZldmek9FRWRpcWJw?= =?utf-8?B?bWExWHRHWXdkU1VOZkdIbTNuTlFBWXdFNVJuRFhBUUFQRkpxYXJYTHE0bkY5?= =?utf-8?B?aTl4Z1hRKzdqSk9VSkZ5RUk4aXkxN2pWR2J1M2JVVzZyRkcxelF1MHZEWm1S?= =?utf-8?B?RDVFWGlXaWRpYnF3TGtURzBTZEJZZEJTaHlDTy9NVDJCRzNBYjk1T2J4NTFC?= =?utf-8?B?bktMbUdOcWlLTVBNc3JnMG9WTHBoVi9KbThEdWE0MHdhWDhzTmhBQlZpQWQy?= =?utf-8?B?K0lOQ2FoMTZqYk8vL1BZVWY4cXlFSjJXZlFhbE1TWno0L3JHYk1OVFk4Z1F1?= =?utf-8?B?TkRjT0gva2NSalpvaHF1UkJERkkrY0U1S1p2bVhZMTFZQlo4VXQ0dlJBVVRU?= =?utf-8?B?OG02Zks0QkZmWDF2Yk9CSjFkaXU4SU0xOFJMMXJ2QnZvNUdXTVVTaXJXTmFQ?= =?utf-8?B?VDBVVDRRZDBKUEJ2aTdIWW5kS282T0Y0Tklobk9xcEl3VlJHaFZMUkJtYXlp?= =?utf-8?B?QXFJcml5ZGZRRWpJR3BkZm9tdWNHZ1AxdXpOQmpLaXorUE0rS1NTekN6aUhr?= =?utf-8?B?cjlNbWo3Q3puMkVmcjVyTThrQVZUS2k0OU1VZ28vY0pzTUR6YkVlR0dscWRR?= =?utf-8?Q?EExQsf1PkenMcZl/znuOPWsK02o0Gm+qAhchw?= X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-Network-Message-Id: 18a9bbb7-5f6d-4977-b628-08de63924e10 X-MS-Exchange-CrossTenant-AuthSource: DM2PR01MB9464.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Feb 2026 02:08:36.1950 (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: gBv7o2kwCJf6+OVZrAfTw63NBlE5TlXaWwWGr6kD5wJZBsJHJ9EsYg0jzHFFsyBXv9h8PDern3Qj0RAEVHcaSnzNhf7uoXX2C1UQWeQvYntzOc8OCP2luNftVk9hT99q X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW6PR01MB8627 --1275739760-1662836722-1770170915=:142762 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8BIT Hi Christian Loehle, On Tue, 3 Feb 2026, Christian Loehle wrote: > CPUs whose rq only have SCHED_IDLE tasks running are considered to be > equivalent to truly idle CPUs during wakeup path. For fork and exec > SCHED_IDLE is even preferred. > This is based on the assumption that the SCHED_IDLE CPU is not in an > idle state and might be in a higher P-state, allowing the task/wakee > to run immediately without sharing the rq. > > However this assumption doesn't hold if the wakee has SCHED_IDLE policy > itself, as it will share the rq with existing SCHED_IDLE tasks. In this > case, we are better off continuing to look for a truly idle CPU. > > On a Intel Xeon 2-socket with 64 logical cores in total this yields > for kernel compilation using SCHED_IDLE: > > +---------+----------------------+----------------------+--------+ > | workers | mainline (seconds) | patch (seconds) | delta% | > +=========+======================+======================+========+ > | 1 | 4384.728 ± 21.085 | 3843.250 ± 16.235 | -12.35 | > | 2 | 2242.513 ± 2.099 | 1971.696 ± 2.842 | -12.08 | > | 4 | 1199.324 ± 1.823 | 1033.744 ± 1.803 | -13.81 | > | 8 | 649.083 ± 1.959 | 559.123 ± 4.301 | -13.86 | > | 16 | 370.425 ± 0.915 | 325.906 ± 4.623 | -12.02 | > | 32 | 234.651 ± 2.255 | 217.266 ± 0.253 | -7.41 | > | 64 | 202.286 ± 1.452 | 197.977 ± 2.275 | -2.13 | > | 128 | 217.092 ± 1.687 | 212.164 ± 1.138 | -2.27 | > +---------+----------------------+----------------------+--------+ > > Signed-off-by: Christian Loehle > --- > v2: Reword commit message, SCHED_IDLE aren't always preferred, > but rather equivalent > Factor out choose_sched_idle_rq() too (Both Vincent) > > kernel/sched/fair.c | 32 +++++++++++++++++++------------- > 1 file changed, 19 insertions(+), 13 deletions(-) > > diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c > index 3eaeceda71b0..6510ab6eb44b 100644 > --- a/kernel/sched/fair.c > +++ b/kernel/sched/fair.c > @@ -6832,9 +6832,15 @@ static int sched_idle_rq(struct rq *rq) > rq->nr_running); > } > > -static int sched_idle_cpu(int cpu) > +static int choose_sched_idle_rq(struct rq *rq, struct task_struct *p) > { > - return sched_idle_rq(cpu_rq(cpu)); > + return sched_idle_rq(rq) && !task_has_idle_policy(p); > +} > + > +static int choose_idle_cpu(int cpu, struct task_struct *p) > +{ > + return available_idle_cpu(cpu) || > + choose_sched_idle_rq(cpu_rq(cpu), p); > } > > static void > @@ -7400,7 +7406,7 @@ sched_balance_find_dst_group_cpu(struct sched_group *group, struct task_struct * > if (!sched_core_cookie_match(rq, p)) > continue; > > - if (sched_idle_cpu(i)) > + if (choose_sched_idle_rq(rq, p)) > return i; > > if (available_idle_cpu(i)) { > @@ -7491,8 +7497,7 @@ static inline int sched_balance_find_dst_cpu(struct sched_domain *sd, struct tas > > static inline int __select_idle_cpu(int cpu, struct task_struct *p) > { > - if ((available_idle_cpu(cpu) || sched_idle_cpu(cpu)) && > - sched_cpu_cookie_match(cpu_rq(cpu), p)) > + if (choose_idle_cpu(cpu, p) && sched_cpu_cookie_match(cpu_rq(cpu), p)) > return cpu; > > return -1; > @@ -7565,7 +7570,8 @@ static int select_idle_core(struct task_struct *p, int core, struct cpumask *cpu > if (!available_idle_cpu(cpu)) { > idle = false; > if (*idle_cpu == -1) { > - if (sched_idle_cpu(cpu) && cpumask_test_cpu(cpu, cpus)) { > + if (choose_sched_idle_rq(cpu_rq(cpu), p) && > + cpumask_test_cpu(cpu, cpus)) { > *idle_cpu = cpu; > break; > } > @@ -7600,7 +7606,7 @@ static int select_idle_smt(struct task_struct *p, struct sched_domain *sd, int t > */ > if (!cpumask_test_cpu(cpu, sched_domain_span(sd))) > continue; > - if (available_idle_cpu(cpu) || sched_idle_cpu(cpu)) > + if (choose_idle_cpu(cpu, p)) > return cpu; > } > > @@ -7722,7 +7728,7 @@ select_idle_capacity(struct task_struct *p, struct sched_domain *sd, int target) > for_each_cpu_wrap(cpu, cpus, target) { > unsigned long cpu_cap = capacity_of(cpu); > > - if (!available_idle_cpu(cpu) && !sched_idle_cpu(cpu)) > + if (!choose_idle_cpu(cpu, p)) > continue; > > fits = util_fits_cpu(task_util, util_min, util_max, cpu); > @@ -7793,7 +7799,7 @@ static int select_idle_sibling(struct task_struct *p, int prev, int target) > */ > lockdep_assert_irqs_disabled(); > > - if ((available_idle_cpu(target) || sched_idle_cpu(target)) && > + if (choose_idle_cpu(target, p) && > asym_fits_cpu(task_util, util_min, util_max, target)) > return target; > > @@ -7801,7 +7807,7 @@ static int select_idle_sibling(struct task_struct *p, int prev, int target) > * If the previous CPU is cache affine and idle, don't be stupid: > */ > if (prev != target && cpus_share_cache(prev, target) && > - (available_idle_cpu(prev) || sched_idle_cpu(prev)) && > + choose_idle_cpu(prev, p) && > asym_fits_cpu(task_util, util_min, util_max, prev)) { > > if (!static_branch_unlikely(&sched_cluster_active) || > @@ -7833,7 +7839,7 @@ static int select_idle_sibling(struct task_struct *p, int prev, int target) > if (recent_used_cpu != prev && > recent_used_cpu != target && > cpus_share_cache(recent_used_cpu, target) && > - (available_idle_cpu(recent_used_cpu) || sched_idle_cpu(recent_used_cpu)) && > + choose_idle_cpu(recent_used_cpu, p) && > cpumask_test_cpu(recent_used_cpu, p->cpus_ptr) && > asym_fits_cpu(task_util, util_min, util_max, recent_used_cpu)) { > > @@ -12261,7 +12267,7 @@ static void sched_balance_domains(struct rq *rq, enum cpu_idle_type idle) > { > int continue_balancing = 1; > int cpu = rq->cpu; > - int busy = idle != CPU_IDLE && !sched_idle_cpu(cpu); > + int busy = idle != CPU_IDLE && !sched_idle_rq(rq); > unsigned long interval; > struct sched_domain *sd; > /* Earliest time when we have to do rebalance again */ > @@ -12299,7 +12305,7 @@ static void sched_balance_domains(struct rq *rq, enum cpu_idle_type idle) > * state even if we migrated tasks. Update it. > */ > idle = idle_cpu(cpu); > - busy = !idle && !sched_idle_cpu(cpu); > + busy = !idle && !sched_idle_rq(rq); Usually sched_idle_rqs were treated as not-busy in several balancing decisions to avoid yielding to background load. Does this change alter that interpretation at the domain balancing level ? > } > sd->last_balance = jiffies; > interval = get_sd_balance_interval(sd, busy); > -- > 2.34.1 > > Regards, Shubhang Kaushik --1275739760-1662836722-1770170915=:142762--