From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from CO1PR03CU002.outbound.protection.outlook.com (mail-westus2azon11010049.outbound.protection.outlook.com [52.101.46.49]) (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 1D23433A9C4 for ; Tue, 21 Apr 2026 12:31:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.46.49 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776774716; cv=fail; b=RxNz6PWdJFG82WZo+42hC4KpjO7mmFJghXPsPtwpDjBimJbZ4iup4gSNkRtkRQjLaWI+XZ697QlCnFkU09v4wcfAYtHrUoGIhIpPEyGoS4BIATNlo7S4FOXSXXnQTNNFO26GYswa8M38bvFanE73hydGN5u3a/QPYBNWevzO/g4= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776774716; c=relaxed/simple; bh=8v9Z54JauWCGHQuzVFtJLXpLgcwHx6G3wLCjlr3nABI=; h=Date:From:To:Cc:Subject:Message-ID:References:Content-Type: Content-Disposition:In-Reply-To:MIME-Version; b=JwSInZzLP51uRADn9f0BC3AGvNjgjjOuqqtT2LETieUClBU84EDOZpMBXsVNWz5JYoGi4zUZK4c4OltoQtkkGoRr/c7m2eHy7BQMSkXnj1kgKk3JBhuokzfKo/M3+RV1QH80PpjKjPT1yQPtEOxoRrN4CBY7PDmX5diAdmny6Do= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=aanEkvAj; arc=fail smtp.client-ip=52.101.46.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="aanEkvAj" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=FIjFHKvA0MwIEQ5s1LN2lARnx1KVRwd0Uazb7eNL34LrwzvdfbTOiCIGEaMhpAh7Edl3NYbhIlChq9eEk0POsQBppITo6d+Us1wSbWoOe83bbB+bvrI4oN3338JvEnhj9weVTWSzrS3ZJtdpqBhZLg6A08HhbD0DOU27iZ5RT3fcAEY35u7Gn5WTbtTD4T+PQl5ymrcGgmePfi28HFZ12n8NPbEQKCuSjUM/c3MdS5oTvE7kJgzsiu4DJKvv8CyooE/VSg33k+D+YW4G3iSvaIgruYa47CMxdh2lKpWSr3pPQhE9vZbS/gYNYR6u/oAKAAk6XFWfA5ZvLaCLE+gwmQ== 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=3zvWtu+bhmR5xy0V9LK+S0NJymfA+VaGhntlkUn4OZA=; b=welra5E6a3oATBMHaLwpUnPAmOq5h6Cp7cywwbsQ385OZWO9jqAL91/eEHR+pXiNS5WF19un3SPMvU04Rrvjhfvd/ZSxpxGEZm2lFc7UvutQNJtiJEfb6mfiS0usj5PPjXSKMBhyhmvGgQ5t4uklgt+oSqhA3jjfqPuJs8tIw4XtK/7WiAnzWBPZUQROdWcN22f6gF7XGkW1pvIocNMd0g77vphBZd55ByCen/0LS2WenDg6fkBRH3ODy977qEE2FzmsiJw0Shq3vn2f4AgKrHs71t5TEy7W8gGu+tyo7tRGq8ze0cHpgYY35Nj0s77uRUgCCo9XvzHseDUoTknTlw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3zvWtu+bhmR5xy0V9LK+S0NJymfA+VaGhntlkUn4OZA=; b=aanEkvAjEXkOKrcjCD0+Z55ret4CB5pLqYMSMKGyEspTRmXUyhJnLudHrNF3Gd8MuR1I5SJv5lme2aZd81chYPx9q9hInOLRNW6LLlqWDpPIY4ZNC9ZmmpUh8rdHuFrSQ4fpdyt/fOZ1mq/KD2j+Ful8Q5fxagYqd+duL12ebW/PHMe1xABHE+dHF+sjflfMMoz6amI6h50qD52oq4Sj6BWfXVflnxNan+0BzbzmDMtGZ4G7WEHRReGXOGiqNVZ79J6SB1qEwvKXI8TmotGdnNXEb12Uu+CUUQ6Ya8WJEunwv69dQWEZKf9q38NLtvDiNcLQ2UPPKWAx1GKolsTlfQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from LV8PR12MB9620.namprd12.prod.outlook.com (2603:10b6:408:2a1::19) by IA0PR12MB8253.namprd12.prod.outlook.com (2603:10b6:208:402::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.16; Tue, 21 Apr 2026 12:31:47 +0000 Received: from LV8PR12MB9620.namprd12.prod.outlook.com ([fe80::299d:f5e0:3550:1528]) by LV8PR12MB9620.namprd12.prod.outlook.com ([fe80::299d:f5e0:3550:1528%5]) with mapi id 15.20.9846.016; Tue, 21 Apr 2026 12:31:47 +0000 Date: Tue, 21 Apr 2026 14:31:37 +0200 From: Andrea Righi To: K Prateek Nayak Cc: Dietmar Eggemann , Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , Christian Loehle , Koba Ko , Felix Abecassis , Balbir Singh , Shrikanth Hegde , linux-kernel@vger.kernel.org Subject: Re: [PATCH 1/2] sched/fair: Prefer fully-idle SMT cores in asym-capacity idle selection Message-ID: References: <20260403053654.1559142-2-arighi@nvidia.com> <64fe32e0-d428-42bb-beb4-2656d8781b0f@arm.com> <7313ba07-7b87-447c-9c48-2f6b2b53ac94@amd.com> <1230f5df-470a-4e59-8c8e-fa159a6fc093@amd.com> <3cc4d887-f44d-4fe8-a57a-73f595647eab@amd.com> Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <3cc4d887-f44d-4fe8-a57a-73f595647eab@amd.com> X-ClientProxiedBy: ZR0P278CA0052.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:1d::21) To LV8PR12MB9620.namprd12.prod.outlook.com (2603:10b6:408:2a1::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: LV8PR12MB9620:EE_|IA0PR12MB8253:EE_ X-MS-Office365-Filtering-Correlation-Id: 8f164395-766f-4256-a24d-08de9fa1f417 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|376014|1800799024|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: 2yQptIgPap06fiqhOvPXkW2P82zGXXC2L7P2KnoiN1QUWzVaY/fQJaapjET7M3PFrMCjuocALzPE+/UXoEzRbPPKw/OUEOEghii3x+x5ctqXXV0Dr9J8fEoQG/GeY4z1IuJ66ODT2nRdch7EJIM3elKR1uLulb3BwT1CjuU07VIHYmy/OCYSgVCFLsVz3evKnXSPeQh3cip7QjleSMuROMwMVnWxDvTFYdBpXS5J3jcPQnKK8LsflOrSW/LT8BDSmzHpu8Akz58WR9yIKkad0W20JzHINCsTpfgs7yDwTz50P7GcXtOEogmQC3wwshXIbLlILziMAcBSW7uEyI7CbWbu4d2jievE74/d3ym8o/ZCOyP/qSxZLZLy38rTKK6Y6yzM/2YDBkuZCMcbcGhVkeaWNB/d50KTslWy4iJNc2kbFv6z0CrmLmhnAIiMX3KY64+TL7Q499L6nPVQZx59jNajPB93qVLmI58jj141hMFgDSnXByJmsbgs/RE8a8YA6DeGZrqPPCHaMMiwXBAoRGE5xe+DCIuoFEf8Zkp9OKMdfaeIRotKqIp1UUtV4Pm4dRELxS7mTvLgRbVTSu2nmkMwt78Kq+3get0nT7M84wURnwB4Ha4cc4q9M7nBsRqeaNd0tdg3zNOOwnSID9EDlxVqAf/w8liOcUSO2TZEoXdYtFWipUvgQ5ASDAui+EOOfOLezjmnVCu71/9jYO8IDfOuQ4BSf0vhZDixDcOT2ps= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LV8PR12MB9620.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?kPSspAQmnJliFxQdxxGiyP1Qfa7U7U/MPkfN7JSDHeTVEabWd0bUZcoTTYzU?= =?us-ascii?Q?wavjajuqMRNDwyccyJrIAB/w8sIRie3rePZbzVUc3gZp4np9gud/ElhAc0jU?= =?us-ascii?Q?EU7nac4JVblF+wOZoxqgcovHPW20R7ABrY2xu63aYOLdwySuJr/Y4N0SGUcT?= =?us-ascii?Q?YJwd5KqNeq7Y5Ax3BuZMONbsTCq8FAOxEYALMkfj8CkofkC28Fa9EJGfrY8z?= =?us-ascii?Q?7V4uZj1gvX47/BDznnAANqqY5bxCLNMXQUIXAxdEY/T9yfpLLNv0LI2se1JF?= =?us-ascii?Q?uojN+zd01z6ya6Fspw4IrVkSAJGhl2zQpZCxkSLdsrqT3yKALIDpI6WW1kYT?= =?us-ascii?Q?D2FRglPPLZUOb3LNWLsQF5h/IJ/WlzJKh2GKXREeScLRMzOtMmCLnzBCsm+K?= =?us-ascii?Q?VdD1TeF4MzpioF//XXGsq3ItoyAofRCKAv4Gr+Bq2qF5Q31mGqecok2O6OCX?= =?us-ascii?Q?TcnlIdbJ5T3ehQT2I29j4SLMvQmSMVhn7fQd5N16hJfWscJpGOXq1xbaZZZc?= =?us-ascii?Q?HooDQqlmJtNaW1bYtQ/D4u9R0Dht/17EyJICrOmM2x/l3LgmL5w3EmoXXVsl?= =?us-ascii?Q?O7psemr0U6XiZ7XR/ERhcbcUfSwY6k8Rbaspn184F3HUT8w0QpFs1YElD2sg?= =?us-ascii?Q?xI5z8OlzEASujZfB1X/gA7zP+LPzfMBKCSH9IryKwRX6ojp7er0eYca989kv?= =?us-ascii?Q?LVAOMNRxR/GgNk2Ii5340eeVddBNkytxfHEsfeQNVzCMjE68uAOXE1Iu7x/M?= =?us-ascii?Q?WQtYBsrUxfBWjnNKmT8Po1dd3/sj8TuBlJl1CBkLWPbViSG6qzWTjf8GA1Yc?= =?us-ascii?Q?VWVMhfYBP5prAlixb5iTGXjj6KEfCiPrs0GSftC0HkAN53pFO5cv7V1ZaM2v?= =?us-ascii?Q?PuHaDOI5s+FBLGqLI+2Uo9K2WPcgROQBY8WL5p0JUGWEVrAx1vdKHw6GnNal?= =?us-ascii?Q?jYLRX3LksiMSHj/vdghIwgO8Q7wXdv64it3Cp07iqk2MzGr5gU0Kssy5kdPV?= =?us-ascii?Q?hivUl2e2fKMMXV3Sstv4sAZ5ja/yvE9bXeTJPDrtPPlcAW72B/i9/ckLVY1A?= =?us-ascii?Q?KEDTfMsUaBEbjV8MfNPkxZvCzaZrnNXP/7C9hXcTjiBOFody0xKJeOAVVngB?= =?us-ascii?Q?0TxfHIawzz3iN/3cJzfgDskdmXcB+wdD7KFdgc+zjBw9K0ERgw2Y9/m5uNUI?= =?us-ascii?Q?5LPm23TG3c02djeT+Btk4ifYavJLTAWMW4MFYzDWsETeEMobn0j8HW57vK8x?= =?us-ascii?Q?cMD0O/e+T4mnVLDsWSiSyo78tpyrXt4qqhbAuRgHi5b/6dNsNVQi5oD+KE6J?= =?us-ascii?Q?4kw3eVROA7vQ3R9aPpcSP0xtNTBQMINFXDjfir0d0AFP1kVYp91sQLzwQ1Kp?= =?us-ascii?Q?IZTbnWViXCJXRZYlpXWz0pecCSQiICkMJrKbbRPG3tX4KWE1EYC+jKtLWEIB?= =?us-ascii?Q?JhbtFZpdp0FXZA6P5+oZPzG/8jXoYDYALFozxPPXIYuBdKixNyZ3MDR1uL9b?= =?us-ascii?Q?UpRwzvj1mhVFb1ZXsoCXEbf+OPLDw3o/NA3Wny8tUx3ag4iK+/dcVnkSKcF7?= =?us-ascii?Q?rXJC9zDfHuafdsSHvA+h+pm+lD+LQIX39smvtiktkANtpCPk3Btiakzjfpqk?= =?us-ascii?Q?0pogsIRnMHOqL2nRmxWqsfyCm9QT/8pqsB0W3x9qUE56zN2uaL5YIklG6bUN?= =?us-ascii?Q?GXdTuzSWYBcvBEla2g22ANCdRp9cSx3W0Aqf0oq1d2tSYt/Hz7I+6uYdlkfD?= =?us-ascii?Q?aN+ftwlZoQ=3D=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8f164395-766f-4256-a24d-08de9fa1f417 X-MS-Exchange-CrossTenant-AuthSource: LV8PR12MB9620.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2026 12:31:47.1760 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: +kiY7m1Oqpt7PF2AZ9TAWYyZRBWoDIIKszP8YRcD+sfaTP3nkn3amRidJZY0+mY9lsP0bbUSWfoAh7zxf6Yv+Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR12MB8253 On Tue, Apr 21, 2026 at 04:52:46PM +0530, K Prateek Nayak wrote: > Hello Andrea, > > On 4/21/2026 3:05 PM, Andrea Righi wrote: > > Actually... while preparing the series I realized that in select_idle_capacity() > > we may end up clearing the has_idle_cores hint even when the failure is due to > > affinity constraints (no fit CPU in the allowed cpumask), not only when no fully > > idle core is found in the system and this can lead to false has_idle_cores > > hints. > > This is also the case with select_idle_cpu() but any core turning > idle will again reset the indicator so it should be fine for most > part where there is a lot of blocking + wakeup. You're right, select_idle_cpu() is also iterating on the allowed CPUs. So, nevermind, we definitely want to use the has_idle_cores hint. > > > > > At this point I'm wondering if it's better to just ignore the has_idle_cores > > hint completely in the smt+asym-cpu-capacity scenario (which would also simplify > > the exotic topology cases). > > > > I did some quick tests with this on Vera and I'm getting pretty much the same > > performance results. Opinions? Am I missing something? > > I don't think so. Generally it is counterproductive to search a lot > in a busy system but I guess just making the path SMT aware give a > much better result compared to the baseline that it doesn't matter. > > Can I trouble you to test the SIS_UTIL bailout with your series + > the topology changes: > > diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c > index 78f2d2c4e24f..1356bbdbccd4 100644 > --- a/kernel/sched/fair.c > +++ b/kernel/sched/fair.c > @@ -7990,6 +7990,7 @@ select_idle_capacity(struct task_struct *p, struct sched_domain *sd, int target) > int fits, best_fits = 0; > int cpu, best_cpu = -1; > struct cpumask *cpus; > + int nr = INT_MAX; > > cpus = this_cpu_cpumask_var_ptr(select_rq_mask); > cpumask_and(cpus, sched_domain_span(sd), p->cpus_ptr); > @@ -7998,10 +7999,30 @@ select_idle_capacity(struct task_struct *p, struct sched_domain *sd, int target) > util_min = uclamp_eff_value(p, UCLAMP_MIN); > util_max = uclamp_eff_value(p, UCLAMP_MAX); > > + if (sched_feat(SIS_UTIL) && sd->shared) { > + /* > + * Increment because !--nr is the condition to stop scan. > + * > + * Since "sd" is "sd_llc" for target CPU dereferenced in the > + * caller, it is safe to directly dereference "sd->shared". > + * Topology bits always ensure it assigned for "sd_llc" abd it > + * cannot disappear as long as we have a RCU protected > + * reference to one the associated "sd" here. > + */ > + nr = READ_ONCE(sd->shared->nr_idle_scan) + 1; > + /* overloaded LLC is unlikely to have idle cpu/core */ > + if (nr == 1) > + return -1; > + } > + > for_each_cpu_wrap(cpu, cpus, target) { > bool preferred_core = !prefers_idle_core || is_core_idle(cpu); > unsigned long cpu_cap = capacity_of(cpu); > > + /* We have found a good enough target. Just use it. */ > + if (--nr <= 0 && best_fits == -4) > + return best_cpu; > + > if (!choose_idle_cpu(cpu, p)) > continue; > > --- > > You can also try "best_fits <= -3" in that last bailout condition and > see if that help. Sure, will test in a bit! Thanks, -Andrea