From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from BYAPR05CU005.outbound.protection.outlook.com (mail-westusazon11010060.outbound.protection.outlook.com [52.101.85.60]) (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 E165A428472 for ; Tue, 28 Apr 2026 14:44:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.85.60 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777387460; cv=fail; b=iPiWN1kgOQRvWmc0DDwNj3DZdO5LNrZIIl34ezYpCuWShIme6zycNVeLOo5imawzWHZfFUEX7qRwnhqk0yFejndTuwgPcft0yAI2NNMhFU1qw7Tw1DhhP9dQyzDYiazz6pcYZTnhV/4E0O+MMrtqsgcuAtTV2XWkrHnTR8DCwZg= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777387460; c=relaxed/simple; bh=vAL/9tHqlGcCc08nIKCvrpJuU9vrbKPHGXAXawVAxZI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=UgIOaWirf1dark5gJnyIJ0zOxtKUQF624/IuEJdJ5erB6gYwCYu2nYY/4sWL70MXxmYovVYjuAMzL+JGZ3PSxWQhH0clxd5mPRuxSpP3QQylaTnQPc6jLnPOQI8Gv8Z/woKIRTPeuAEP/MqoNJj9aRhiZu1TVgwztrFIawrT2fo= 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=dmMNEKj7; arc=fail smtp.client-ip=52.101.85.60 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="dmMNEKj7" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=erQagVifQ5HRmRh6pyGz3qVKBzBr7nuhTGyw1sK/yGn8qJlg12GkyGn3jFb31QPu7oeNw4LNkfbqU/HcmHAL5QaxQZurjos35ZXzlo6I4EWPXRKaFOmPy5xg1D3f3CDbUMe9Ogs3HImNj42PGlgNq913E0S98FZjehUEXF0VYAXjYCWWPcWW9MEvlSfg4GmWC6lnACcYv+Pv8Co4dVpDdN/drnJuT6fwPlH9fOUJpRMR2A8pozsTk8pTeiroy4GtsMrGlZAuhGURp2pmayAmOuBEs4rorQDGZVKw4MN7iTHrBt/9Gg75qf3rZpAHtKb3fEelOfXZUORUUOJVUAZbIA== 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=wDyRiWwcDjm9YcG5z2ke52Q7YNSpc/mlVRVL6rJOD7M=; b=LmsFJNtbqAMxFmXySL0lzVo5Iv6HOcF9TBKqS2hWnajobm+WlOVDSrx0TyfBUsxTZEMkG7XfncGYvjYhiHoNkfjHK8YrbN264hLSjNS++zo3XSk59ICxEWx88drJm1ErSlfX9fFsGLhNievytG2jKWTSHgOkINgMfP+x2nDy0RhT3Z5iWyadkH3Sg2WSm20yqoiA34u3MKJh1gZ3V8gHtlEsea+VadToT+APw7UoOHoR4mQa+qhdmbNW/uabztyoklZ6bhbBKO6EVpKMhj+fJqqV0clBAJwWniSlxh+A8hWvUs63zyo/TW8dkzzTcw2GgA9s8zrqz+m3k39u+OtWeA== 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=wDyRiWwcDjm9YcG5z2ke52Q7YNSpc/mlVRVL6rJOD7M=; b=dmMNEKj7vEWnPT6NUYzSCpBCxv8MK4AiBskXzyn5MdaIBZkCZo02etN76U5bG4mkUThhjnHfeVKr61Aoc8lo63/zL5Rw/miUK+Y8Q9enjRaOqMyNmyAMPNxjkNHY6wjxg6UeHhcuJZBbVO1J+FFMlmkzr3YwXtiYUqENxwWeKZyM9KybSuIRz71lHR1zA5pX5JqJT50J8AzE6ZteQpqbbzl8ze2E3iPBEflPjTyEd0JhvCT4jXoW7t0CeA2odQK9soiiTOM9id7EVJNeGnwiJURd7ZfVx5bfnkBKId7gn4tyhTcz+Q66fxWODFlQJfdEOmgNHVq5FQ2BiVm8OdOlrQ== 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 IA1PR12MB6211.namprd12.prod.outlook.com (2603:10b6:208:3e5::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.15; Tue, 28 Apr 2026 14:44:09 +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.9870.013; Tue, 28 Apr 2026 14:44:09 +0000 From: Andrea Righi To: Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot Cc: Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , K Prateek Nayak , Christian Loehle , Koba Ko , Felix Abecassis , Balbir Singh , Joel Fernandes , Shrikanth Hegde , linux-kernel@vger.kernel.org Subject: [PATCH 1/5] sched/fair: Drop redundant RCU read lock in NOHZ kick path Date: Tue, 28 Apr 2026 16:41:07 +0200 Message-ID: <20260428144352.3575863-2-arighi@nvidia.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260428144352.3575863-1-arighi@nvidia.com> References: <20260428144352.3575863-1-arighi@nvidia.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: BYAPR11CA0081.namprd11.prod.outlook.com (2603:10b6:a03:f4::22) 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_|IA1PR12MB6211:EE_ X-MS-Office365-Filtering-Correlation-Id: 9a5cba2b-963c-4693-620a-08dea5349b05 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|1800799024|376014|366016|18002099003|22082099003|56012099003; X-Microsoft-Antispam-Message-Info: qcWFXyfG03fQC9v/Vcsft3eceLqNMnjbKsRfbw3va9gjj2g7WEczUDXDODKlp/pneWhEyQqeUap85z+D0XK1RCm0VkqhiLbc6caFKVu/cMiiMpZ5DNIdSwtmEuHkbqJ46NY2Ly2Kj9VKDiW/u3is2otoNjR/iS2mnvUN+G+1nfjWvhjdYYzgQOF16kj44vqXdkYsBKYAe0/Pxp0UkOmNC8OlUNqRz3JQ5rAjZcsh3OsGI3YabG/XgfwXJoEOiMPYBMjWy6LNn7eYZfew3GQC4a86rojRgDKJVLAYgoPsgAdxQhLfSzMPL7dLafS7VlAiBd/A9MoMDt0JVp6Wc+AodEQYMJj0oJiVFBc+L3hy7thSsw7R9bmFjd7UiT+odkr5myvwL3Xlb80akF0/OF+ZTsgU2CNHBtBI3cLF0BNv6uBtAR/cXHPTLtpr+iZQPnVuJrYdrc8JawAM0iKOrnTtnE+zzqEkNM4vETctUsjWcSyH67EqQKUF6lSaL6YQVRuxXRqMKGA+BAbzRgbzQ5hgr9Ayu7eSbBKKiWUXZfl/AM6ACfI6VwBqeCBvIlgzk7dG3eZdoSU128dL6B1MSBAsrBHn/DzzeQq8NqNIKW1wBvaQfYNX/DvvYkEMGicQ+lm2BXInHEgNT9Nw2rF+b/92+7NAYnV5jpOOLGtqzWr97mIb8W5/nDeqkgVyEYfEXU9cCh1m2K3fWf01DkihBun+RBfKdGqHeezWRx/QzlSQzIE= 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)(7416014)(1800799024)(376014)(366016)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?eeXxhrip5h0kLtP5lcyr2iSAzddxgFMA0keofo20VcTY9uKHpoc6A8X/fh5T?= =?us-ascii?Q?0b2rlV11c/uhcK9onN81BOUjfu71DUfyLG0hqWP1m/IyG8LpZOUdVNubJ1GY?= =?us-ascii?Q?fB/S2vLcHnHAe98CdwGWygJWkzlgoAwz7eYRsxbGVN9KlDMflP/dmuESGcDv?= =?us-ascii?Q?2v1zwQnusrWvfhVfNCi4nrElAUj3QCLjC6Q4uI1BO1kUdXypyOCWZaCOJm1j?= =?us-ascii?Q?u/oXBuk8vq9Xlo7Ge4DgMU3Zk8p8L6UyV+NRt4EebNwG5mjcpAYMbF4e32Hr?= =?us-ascii?Q?1LnXGQiTHcVe/vWbq4RaE3AotSpBm2D7m4kSsdCuh7cL2q1Lh2bV4olyCJMt?= =?us-ascii?Q?BM/3LMRnanPmGAgf0em0WndJwGHW1n0OVaJw/cX2Nj/YG4aN7e297/HJTwtP?= =?us-ascii?Q?qKTLm3CAwo2mfiGWGuUuwhr/6/5T+DUm21vnFXFcsI0ISn1A1vt536oowMd5?= =?us-ascii?Q?JiJQ5JUbXk393b7lK1CxTzIuyPLYD+tVxIXYYNIdoJj/U/w4PIj90ZnCkPnD?= =?us-ascii?Q?v4I0w6/tW78sTBBkgq9/TX6OkZghWZGmTzJFwGPcpWLIGt1ieIY/ELFZLKR/?= =?us-ascii?Q?IxGB30YI4eukYTFPyE7eglzo80V0+uu7aPSx+oKWqSP9lRMuxc+zSe8P4J57?= =?us-ascii?Q?k8jp+w2+nvIlppIKU0pIET+DWyX7Td6DKBAMJTL/hnT9O3QJyrfIDmhZJVyo?= =?us-ascii?Q?UWzMEWqgM1M0W9gldahROw0VG3emrOnM00tZJm9A5bDvJnxOjTtslkCAmOD+?= =?us-ascii?Q?lgdgAcsrLQKe8E2NYtvK712QRx5VJ45P3eM/S+5cjwxc19mnelkKqhuVV+fP?= =?us-ascii?Q?6I9v3qKCXOBimJs/NTSSQJpWBd/L4hWy6xzYBNOO/RzJPOWIRpUwW64RHin2?= =?us-ascii?Q?lb2H/VbcDOjaC881xN8G/m8kW+tRkNbGup9FCVk5AeNxLaC9p3amle2D/PlL?= =?us-ascii?Q?wOcktPRsB13Dba6ttN1whDxXlrJdptFNfi5yxIno89XT8herhfo8cer6Neqc?= =?us-ascii?Q?KsfaehJUT0l7ys9SVVKp0mg1oFtEk/hsJCvM25PcNguoOJ8KPnZrl3miDXCu?= =?us-ascii?Q?2FryjwFrMO6nUtub2BYJxtBCtZqefO++1rxLHFfT7NU9VMyMydfm0HG59v88?= =?us-ascii?Q?CLe64zG4EA0cMOe7Vtcn5gI1OHO14Ld7JtKGRUnIVIbZ1VZgjkpDhUjN3sGz?= =?us-ascii?Q?i6H8SUYTqptCMa6f0gLGWzMJ3zkh4Ubr5L5eh6Ax8UD0/PH+MAPyWAnvGQcu?= =?us-ascii?Q?sipeHh1pStHAdrp8W6Gxo+ZNSVtUGv1BN+IFS0LBQkUNb6oMY6iKNYEB8lxN?= =?us-ascii?Q?Jd2XmoHYjQlQ749SsjS8ZI7UzBz8E2ZyfsmHR6JDv16DnYJ0FZQj4Cls9eTn?= =?us-ascii?Q?GvSM8l3tfFZedLoCTgsHF9HUKF0TXwD2r+p8/31tzJJUI2xIU/zsxjLwYuJj?= =?us-ascii?Q?ks0TwBgHjZF8YMptMe5sqyYJXTY0PelgBdStZAz3gpoCMXgDej0tX/zWHcaL?= =?us-ascii?Q?v6XDPjtPHwe2YE1iyLy2kNR2mSGMBEDYZwnQAVxT4zrX03uUOxwMmpEHCZWo?= =?us-ascii?Q?6KY0klKWbLHsx3Yt7VfBIYMdoeueEFLezWZ1qzjGR1NNCLTZj95HA0FokbfI?= =?us-ascii?Q?YI8NHthHFdrRp10gCI5ofMIb2A99b0KZpmwbrZ6aNunpZwh6cDnKqfrAopqv?= =?us-ascii?Q?8XdQaaHGnFbEx6y4abhqROgsUvUbU9yO0yYwWxmbbE2FvB/6KyDTsxQ+V8HL?= =?us-ascii?Q?4GETkMHZ9A=3D=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9a5cba2b-963c-4693-620a-08dea5349b05 X-MS-Exchange-CrossTenant-AuthSource: LV8PR12MB9620.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2026 14:44:09.2763 (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: jaP33jBWaW6KTJDtW8psSQdHEoeM+L6+qcs/1b9Np+Jvi9ZqZTRGBjKzq9ZQLSYoEY9muL4gOynmVuB9/aEexw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB6211 nohz_balancer_kick() is reached from sched_balance_trigger(), which is called from sched_tick(). sched_tick() runs with IRQs disabled, so the additional rcu_read_lock/unlock() used around sched_domain accesses in this path is redundant. Rely on the existing IRQ-disabled context (and the rcu_dereference_all() checking) instead. No functional change intended. Suggested-by: K Prateek Nayak Signed-off-by: Andrea Righi --- kernel/sched/fair.c | 40 ++++++++++++---------------------------- 1 file changed, 12 insertions(+), 28 deletions(-) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 69361c63353ad..e0f75dedc8456 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -12749,8 +12749,6 @@ static void nohz_balancer_kick(struct rq *rq) goto out; } - rcu_read_lock(); - sd = rcu_dereference_all(rq->sd); if (sd) { /* @@ -12758,8 +12756,8 @@ static void nohz_balancer_kick(struct rq *rq) * capacity, kick the ILB to see if there's a better CPU to run on: */ if (rq->cfs.h_nr_runnable >= 1 && check_cpu_capacity(rq, sd)) { - flags = NOHZ_STATS_KICK | NOHZ_BALANCE_KICK; - goto unlock; + flags |= NOHZ_STATS_KICK | NOHZ_BALANCE_KICK; + goto out; } } @@ -12775,8 +12773,8 @@ static void nohz_balancer_kick(struct rq *rq) */ for_each_cpu_and(i, sched_domain_span(sd), nohz.idle_cpus_mask) { if (sched_asym(sd, i, cpu)) { - flags = NOHZ_STATS_KICK | NOHZ_BALANCE_KICK; - goto unlock; + flags |= NOHZ_STATS_KICK | NOHZ_BALANCE_KICK; + goto out; } } } @@ -12787,10 +12785,8 @@ static void nohz_balancer_kick(struct rq *rq) * When ASYM_CPUCAPACITY; see if there's a higher capacity CPU * to run the misfit task on. */ - if (check_misfit_status(rq)) { - flags = NOHZ_STATS_KICK | NOHZ_BALANCE_KICK; - goto unlock; - } + if (check_misfit_status(rq)) + flags |= NOHZ_STATS_KICK | NOHZ_BALANCE_KICK; /* * For asymmetric systems, we do not want to nicely balance @@ -12799,10 +12795,10 @@ static void nohz_balancer_kick(struct rq *rq) * * Skip the LLC logic because it's not relevant in that case. */ - goto unlock; + goto out; } - sds = rcu_dereference_all(per_cpu(sd_llc_shared, cpu)); + sds = rcu_dereference_all(per_cpu(sd_balance_shared, cpu)); if (sds) { /* * If there is an imbalance between LLC domains (IOW we could @@ -12814,13 +12810,9 @@ static void nohz_balancer_kick(struct rq *rq) * like this LLC domain has tasks we could move. */ nr_busy = atomic_read(&sds->nr_busy_cpus); - if (nr_busy > 1) { - flags = NOHZ_STATS_KICK | NOHZ_BALANCE_KICK; - goto unlock; - } + if (nr_busy > 1) + flags |= NOHZ_STATS_KICK | NOHZ_BALANCE_KICK; } -unlock: - rcu_read_unlock(); out: if (READ_ONCE(nohz.needs_update)) flags |= NOHZ_NEXT_KICK; @@ -12832,17 +12824,13 @@ static void nohz_balancer_kick(struct rq *rq) static void set_cpu_sd_state_busy(int cpu) { struct sched_domain *sd; - - rcu_read_lock(); sd = rcu_dereference_all(per_cpu(sd_llc, cpu)); if (!sd || !sd->nohz_idle) - goto unlock; + return; sd->nohz_idle = 0; atomic_inc(&sd->shared->nr_busy_cpus); -unlock: - rcu_read_unlock(); } void nohz_balance_exit_idle(struct rq *rq) @@ -12861,17 +12849,13 @@ void nohz_balance_exit_idle(struct rq *rq) static void set_cpu_sd_state_idle(int cpu) { struct sched_domain *sd; - - rcu_read_lock(); sd = rcu_dereference_all(per_cpu(sd_llc, cpu)); if (!sd || sd->nohz_idle) - goto unlock; + return; sd->nohz_idle = 1; atomic_dec(&sd->shared->nr_busy_cpus); -unlock: - rcu_read_unlock(); } /* -- 2.54.0