From nobody Sun Feb 8 03:57:29 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.15]) (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 ADD02163 for ; Tue, 13 Jan 2026 03:09:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.15 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768273779; cv=none; b=gHI4TpDRZJrhQT10oDw8GkblsaIm7YH+//wm/eeHA/lwBOO/5l5d8DieAGpuyh5JqCMiZRjo4jBQuA8iTq9M/8/864hV7vSfEGf5IJekJdDbPT0LbHC/zQuUNxq4rq4sGtNa6Xg8Hl8RLV9ahtXTjusv9WEVemQEvNPnSAavdgA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768273779; c=relaxed/simple; bh=FKstiV14+hUkXRJhvMteWJy252bEm0Te5TSjfyOMww0=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=NyZZ1Z9wlpRrc+w59fumnU6eUZbB0budfDLD9TI1W0iLDtgsYcezDIWjKpNwKwnk1SajsK62i+6NdRb2ge4F9utDsihJbwXt42caX2zjGhcTtkAqKThE2i2S/1qRt7Q5ZsSkPQBNF32UU/gpxuQH+sYoNx+CI7DeBZ2dEgB76qo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=jRiNZJnO; arc=none smtp.client-ip=192.198.163.15 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="jRiNZJnO" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1768273778; x=1799809778; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=FKstiV14+hUkXRJhvMteWJy252bEm0Te5TSjfyOMww0=; b=jRiNZJnOyAJFgfMljmGNomjFpb+rXKiTt341HMw60B0r3vIQVf2vugXN VnsBjUSXUrD37GzM3NmJ6S91gvHENtZtzJ0tebq8HXURA+Q9VRUtS24SB TVG99oN595IDNzbNAKapdk0Z+4b3MpvkdOzV6tMBg7YMNTtkZhAkzzg0E ZkMJPUVV4cmTwGnyHJQ3toyu4JD+x/Rqxhl7gv7nx4SQZRdVOAYMn+B4U B4OQKr/bhlkTreRkUfQTLZdsYtBCvSjRB9a3zI4WdPzMBCvCqwcxxdrM3 m7EkGT4Mp7geClU4kw+sissBpRYWNerWMpXQzGjoWtQ3BrfqN2glDnzcv g==; X-CSE-ConnectionGUID: Juh3A0FSRl20B7n0iK8+WA== X-CSE-MsgGUID: mT/2yonHQW+wJTXhiOWD+Q== X-IronPort-AV: E=McAfee;i="6800,10657,11669"; a="69632301" X-IronPort-AV: E=Sophos;i="6.21,222,1763452800"; d="scan'208";a="69632301" Received: from orviesa004.jf.intel.com ([10.64.159.144]) by fmvoesa109.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Jan 2026 19:09:38 -0800 X-CSE-ConnectionGUID: oIym/YiOTSGLIlGBQ2alZA== X-CSE-MsgGUID: ZDxscyWTQsqm/fi2obLcCg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.21,222,1763452800"; d="scan'208";a="208779390" Received: from linux-pnp-server-11.sh.intel.com ([10.239.176.178]) by orviesa004.jf.intel.com with ESMTP; 12 Jan 2026 19:09:35 -0800 From: Wangyang Guo To: Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider Cc: linux-kernel@vger.kernel.org, Wangyang Guo , Shrikanth Hegde , Benjamin Lei , Tim Chen , Tianyou Li Subject: [PATCH] sched/clock: Avoid false sharing for sched_clock_irqtime Date: Tue, 13 Jan 2026 11:06:34 +0800 Message-ID: <20260113030634.3419465-1-wangyang.guo@intel.com> X-Mailer: git-send-email 2.47.3 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Read-mostly sched_clock_irqtime may share the same cacheline with frequently updated nohz struct. Make it as cache aligned to avoid false sharing issue. Details: We observed ~3% cycles hotspots in irqtime_account_irq when running SPECjbb2015 in a 2-sockets system. Most of cycles spent in reading sched_clock_irqtime, which is a read-mostly var. perf c2c (cachelien view) shows it has false sharing with nohz struct: Num RmtHitm LclHitm Offset records Symbol 6.25% 0.00% 0.00% 0x0 4 [k] _nohz_idle_balance.isra.0 18.75% 100.00% 0.00% 0x8 14 [k] nohz_balance_exit_idle 6.25% 0.00% 0.00% 0x8 8 [k] nohz_balance_enter_idle 6.25% 0.00% 0.00% 0xc 8 [k] sched_balance_newidle 6.25% 0.00% 0.00% 0x10 31 [k] nohz_balancer_kick 6.25% 0.00% 0.00% 0x20 16 [k] sched_balance_newidle 37.50% 0.00% 0.00% 0x38 50 [k] irqtime_account_irq 6.25% 0.00% 0.00% 0x38 47 [k] account_process_tick 6.25% 0.00% 0.00% 0x38 12 [k] account_idle_ticks Offsets: * 0x0 -- nohz.idle_cpu_mask (r) * 0x8 -- nohz.nr_cpus (w) * 0x38 -- sched_clock_irqtime (r), not in nohz, but share cacheline The layout in /proc/kallsyms can also confirm that: ffffffff88600d40 b nohz ffffffff88600d68 B arch_needs_tick_broadcast ffffffff88600d6c b __key.264 ffffffff88600d6c b __key.265 ffffffff88600d70 b dl_generation ffffffff88600d78 b sched_clock_irqtime With the patch applied, irqtime_account_irq hotspot disappear. Previous Discussion: https://lore.kernel.org/all/20251211055612.4071266-1-wangyang.guo@intel.com= /T/#u Suggested-by: Shrikanth Hegde Reported-by: Benjamin Lei Reviewed-by: Tim Chen Reviewed-by: Tianyou Li Signed-off-by: Wangyang Guo --- kernel/sched/cputime.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/sched/cputime.c b/kernel/sched/cputime.c index 7097de2c8cda..34d15972f5fb 100644 --- a/kernel/sched/cputime.c +++ b/kernel/sched/cputime.c @@ -25,7 +25,7 @@ */ DEFINE_PER_CPU(struct irqtime, cpu_irqtime); =20 -int sched_clock_irqtime; +int sched_clock_irqtime __cacheline_aligned; =20 void enable_sched_clock_irqtime(void) { --=20 2.47.3