From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (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 42C3C31619D for ; Tue, 21 Apr 2026 05:06:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.165.32 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776748019; cv=none; b=J/W+TLNC2A/xjHFJSpYNaTGVclEu+oDh9UOuhMCGXn2HZt3FC+emv6cFdn2M3E1nmiL2RRgSYCVEZIDu4PEWcrvHnep7kwGIRRwvhrKkM0AzxdQpjhuR1oAy5Wg7ef3BwctIvsk+SNsI5QOCNRxaaDlyQikIVUdhBbxD5cKjDw4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776748019; c=relaxed/simple; bh=ZXmKW59+fw8iFMPT2b+bukd9FH1QxaY0qqpUB2UHAS0=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=uqe5TbLztIa+iIt28O61WFvn3F7X1R4qNvkVnKUeAPj47lz+KqJ3yck9kTXoVL3eUdYpLM1coXJ2qjdt5VeZv2RuVejlpPiAW0a7qMIO6VlIpxF/ykqtSYj0gtqzt0D76d6CAfKPlmuFm7/iJvzus7xxhvtPQlJBFjAkS0Ooatc= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=q6a+RWAs; arc=none smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="q6a+RWAs" Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 63KLtM9O208749; Tue, 21 Apr 2026 05:06:36 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:date:from:message-id:mime-version :subject:to; s=corp-2025-04-25; bh=+9zfY3x4lfHXOlvUtolD7hGPPm2gt foJKcmOkP/eBVY=; b=q6a+RWAs8+Z0W2qhP1eu2GgT1PxAGcbU0vDop0MajtZ7G v+aDr0L22fbOlKQ0StQ4YJyEYC9YDBi7/SNMGiKBKslXDRggO8XKg2HItC+drykf 7QsShLRVTS3WOCkt2RT2coPXP1K2ghp95YTceYpP7JQ5wbk5o2Q3sQORUmRKo5Dm ohKgd71QEdFCr/oKxqmgNt1+JSLjw3RqvGjGqoKldNY1bh1uU0QMv6gb+PBT/qBy fdrD4XRKz+gv7Rd4bLdJ+tDSaVK04u5jJk+edlWcLPyushRIo5XsEMwP0uCZ/mUV pxr0hUDMA4RBfMkf3pbOL37BvRdxbZhS56icr/7Vg== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4dm2grcq1g-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 21 Apr 2026 05:06:36 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.7/8.18.1.7) with ESMTP id 63L56RIZ005544; Tue, 21 Apr 2026 05:06:35 GMT Received: from imran-metabox.au.oracle.com (dhcp-10-191-74-155.vpn.oracle.com [10.191.74.155]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTP id 4dn1afjjd1-1; Tue, 21 Apr 2026 05:06:35 +0000 (GMT) From: Imran Khan To: mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org Cc: dietmar.eggemann@arm.com, rostedt@goodmis.org, bsegall@google.com, mgorman@suse.de, vschneid@redhat.com, linux-kernel@vger.kernel.org Subject: [PATCH 0/2] sched/fair: Reduce nohz_idle_balance CPU overhead on large systems Date: Tue, 21 Apr 2026 13:06:20 +0800 Message-Id: <20260421050622.19869-1-imran.f.khan@oracle.com> X-Mailer: git-send-email 2.34.1 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-21_01,2026-04-20_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 lowpriorityscore=0 bulkscore=0 spamscore=0 malwarescore=0 suspectscore=0 phishscore=0 mlxscore=0 mlxlogscore=748 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2604070000 definitions=main-2604210048 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDIxMDA0OCBTYWx0ZWRfX0e7sdFTPczb4 iVlq9a6JFJ0hNreybnDn/3XFFt6HxfEMS5QlFb5bzPv3wpnHMo3v+ZFf7Ikrpd85BsSaIeXSiF0 sNTLkmZZd83+gF9QhKc5qGNMM+OigycovUeuuICSrJqG+gmymBCyfGD8+vsqS5xRCz6C/e21vGB xe98lCM1p3u5f0oO5wfCUKJzJ99y6SSLb9TlBrtzR+012xCm25e0FZM1v7n6oKRAax1YMllJhFv QkAEvyW0rJ/UG6i+q00OVMZtNMUQdTkGvl/dN7taCmqGmQlSky3kfEJCeNrNn/4AD6tw7NS6j07 PrqroNxbkIJ3OkItL5D2jq+exb3v9a/Hdn+1bva9fGOoY2yiCS5603OgXvfMYjXZg6M+FeJxT/u +Xb2+h63K8rdBUBpl3bAynbcACCYSkp2GAaIme/mKaG7eEmj8iWanc0PoFuNYRTcTOTEqwSkE3k 3GdKXXW8Tvdi7iRC31g== X-Authority-Analysis: v=2.4 cv=TN51jVla c=1 sm=1 tr=0 ts=69e705dc b=1 cx=c_pps a=WeWmnZmh0fydH62SvGsd2A==:117 a=WeWmnZmh0fydH62SvGsd2A==:17 a=A5OVakUREuEA:10 a=VkNPw1HP01LnGYTKEx00:22 a=jiCTI4zE5U7BLdzWsZGv:22 a=7Gl3-_t3PgB9XO-mQDs3:22 a=SGBj7qICQj7attbHHyYA:9 X-Proofpoint-ORIG-GUID: PzmsgkyVvtSZlnCp-YXtPjwgqxMKFrA6 X-Proofpoint-GUID: PzmsgkyVvtSZlnCp-YXtPjwgqxMKFrA6 On large systems (700+ CPUs, 350+ CPUs in root sched_domain/cpuset), nohz idle balancing can consume significant amount of CPU due to two independent problems. First, due to large number of CPUs there is a very good chance of nohz.next_balance always being same or very close to current jiffies, causing nohz idle balance work to happen on almost each tick. Second, find_new_ilb() uses for_each_cpu_and() to iterate idle_cpus_mask from the lowest bit, so the lowest-numbered idle CPU in the cpuset bears the full burden of nohz ILB work and most of the times it's the same CPU. Again on large scale systems this work becomes significant and unfairly consumes cycles of same CPU most of the times. Patch 1 addresses the first issue by advancing nohz.next_balance based on the number of idle CPUs and patch 2 addresses the second issue by distributing the nohz ILB work across eligible idle CPUs. Imran Khan (2): sched/fair: scale nohz.next_balance according to number of idle CPUs. sched/fair: distribute nohz ILB work across idle CPUs. kernel/sched/fair.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) base-commit: 591cd656a1bf5ea94a222af5ef2ee76df029c1d2 -- 2.34.1