From nobody Fri Jun 12 13:56:07 2026 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (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 600E0407562 for ; Thu, 14 May 2026 15:23:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.156.1 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772223; cv=none; b=Edl0M2hdNUJRjqO3LsRhLnSCfrm9NRyhVe4PvXNeyS3a/JFLfoY5z06rkIKGLQnhVkKgorhRhxZl4V+8fqrEGi3XeA98rtE9iPo/QFfXSFSc/eDl1Os8ChE8Fbd/FmIJXXemjvS4NDjIZ7QEojOAdnUaHtOftLmFDzOZKAYnvuU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772223; c=relaxed/simple; bh=EaAo2AtmrGlvfuCton3b7AufUd7oMbhzx1PhUNLrGx0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=h4ZUh+fpkrc8ytiGjXUgmWThuh2tTkNxdJ35CD0qKuRr7FPHHrD6lvHIAVF1RsvshKUGfEWLAFl5flR4uROGZxyMTB2PFwi7TSzP6Nk6HEFQcRJSB3mAxta/Xr+CNH2bnWdmxlUW/0Ag3pyqKlN4gq7WL9L/rF2M/SL/UXw0whc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=FQI735ne; arc=none smtp.client-ip=148.163.156.1 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="FQI735ne" Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64E75fLv3185884; Thu, 14 May 2026 15:23:20 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=FDC1yZd8ruVpQlW2G U6IAv+zDuCFk7BZllpWNMRo4pM=; b=FQI735nejIo8Pq7xYwZDHVGRLigYe8ea2 SHOquQAj0BfU/lGmRiGSkmEEto0epVpLqU0yjchzV0wo6NbjkdvMwTaqDJRUNwSV jujbX9rKus0xP02f+GT9ZmdsKyTaaYCGGZZa3QDWYKpIHBdQi0HwkwZ09mR/b+Oi WET7+tMOngDa4j8i65gSa76hxDe+b8n7HwibH4VbuiAlO+49sut8Wtygn1itpaa+ oUNRHm3/pwoEkNJSRsit4svoICVu7JmK+P0hbdKdw5FFeRc66piN0ARr2s/yIbys K+ntjvcGA2fiv52VPhAPKmx36QcDFMsCbl0UidXGIZeJHdoG/Kb5w== Received: from ppma21.wdc07v.mail.ibm.com (5b.69.3da9.ip4.static.sl-reverse.com [169.61.105.91]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4e3nv5n5j7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:23:19 +0000 (GMT) Received: from pps.filterd (ppma21.wdc07v.mail.ibm.com [127.0.0.1]) by ppma21.wdc07v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 64EF9UmQ024308; Thu, 14 May 2026 15:23:18 GMT Received: from smtprelay06.fra02v.mail.ibm.com ([9.218.2.230]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4e3nfgvxjr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:23:18 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay06.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 64EFNErY23069176 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 14 May 2026 15:23:14 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 6C3F020043; Thu, 14 May 2026 15:23:14 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 1BFD420040; Thu, 14 May 2026 15:23:07 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.124.213.185]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Thu, 14 May 2026 15:23:06 +0000 (GMT) From: Shrikanth Hegde To: linux-kernel@vger.kernel.org, mingo@kernel.org, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, yury.norov@gmail.com, kprateek.nayak@amd.com, iii@linux.ibm.com Cc: sshegde@linux.ibm.com, tglx@kernel.org, gregkh@linuxfoundation.org, pbonzini@redhat.com, seanjc@google.com, vschneid@redhat.com, huschle@linux.ibm.com, rostedt@goodmis.org, dietmar.eggemann@arm.com, mgorman@suse.de, bsegall@google.com, maddy@linux.ibm.com, srikar@linux.ibm.com, hdanton@sina.com, chleroy@kernel.org, vineeth@bitbyteword.org, frederic@kernel.org, arighi@nvidia.com, pauld@redhat.com, christian.loehle@arm.com, tj@kernel.org, tommaso.cucinotta@gmail.com, maz@kernel.org, rafael@kernel.org Subject: [PATCH v3 01/20] sched/debug: Remove unused schedstats Date: Thu, 14 May 2026 20:51:45 +0530 Message-ID: <20260514152204.481115-2-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260514152204.481115-1-sshegde@linux.ibm.com> References: <20260514152204.481115-1-sshegde@linux.ibm.com> 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 X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Authority-Analysis: v=2.4 cv=cPHQdFeN c=1 sm=1 tr=0 ts=6a05e8e8 cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=NGcC8JguVDcA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=iQ6ETzBq9ecOQQE5vZCe:22 a=VnNF1IyMAAAA:8 a=NlpiSR-wqh4DhfsiYFIA:9 X-Proofpoint-ORIG-GUID: tU9RZM0ktKrrk1DPl4n65tyYe0ZbrivW X-Proofpoint-GUID: 2dc5jQkCUNb9KXUr1jVPAtbubPL56rC0 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTE0MDE1MyBTYWx0ZWRfXwrSluaHBHL7j vMA+/vqIoI0uLEvJhGo7S7hFM6P0w5pvEEV2anAv8uaqZG7Gt2fowg7j6v2JATRmusw5qXrWOnA 4s5MXB4cySTHkYntSoXKOUNLUXiJ96grpPtwuoTstjcj5g+QQcCXaTjRPxLDzxZyj+NPZxyhhj/ qhm3y3VW+nQTmYANVr8mQ2e2TrZ4felp//lWF8fJUMheAY9rsjzs3K6kQ32SlwVplqT23i6Uvo6 fB0nEnhtRoDg53mLO7Y0cTvu7T7VKiba8EiqtMnjCzXcj7tsUMxbGqY33cVKiYyHzBABF1u4JVL 4Sh6Ch+wLmUxV3Toi6wJZYzSIokWB9bML/MLKPmNY+kuwBnCj9PqyGPtMYK9Awq5N8DXpPy3vT5 Wvl/2TUiNr1EauMI3I1MxHA9rc9nnMBRaJHV1InbPyzZH9qwyENGywESMnuod649nXu5Vr28HR4 8xfab8/DmrN/j6jKnHA== 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-05-14_03,2026-05-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 bulkscore=0 phishscore=0 clxscore=1015 spamscore=0 impostorscore=0 lowpriorityscore=0 adultscore=0 suspectscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605140153 Content-Type: text/plain; charset="utf-8" nr_migrations_cold, nr_wakeups_passive and nr_wakeups_idle are not being updated anywhere. So remove them. These are per process stats. So updating sched stats version isn't necessary. Signed-off-by: Shrikanth Hegde Reviewed-by: K Prateek Nayak Tested-by: K Prateek Nayak --- include/linux/sched.h | 3 --- kernel/sched/debug.c | 3 --- 2 files changed, 6 deletions(-) diff --git a/include/linux/sched.h b/include/linux/sched.h index 368c7b4d7cb5..2c3ad3e0edb5 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -550,7 +550,6 @@ struct sched_statistics { s64 exec_max; u64 slice_max; =20 - u64 nr_migrations_cold; u64 nr_failed_migrations_affine; u64 nr_failed_migrations_running; u64 nr_failed_migrations_hot; @@ -563,8 +562,6 @@ struct sched_statistics { u64 nr_wakeups_remote; u64 nr_wakeups_affine; u64 nr_wakeups_affine_attempts; - u64 nr_wakeups_passive; - u64 nr_wakeups_idle; =20 #ifdef CONFIG_SCHED_CORE u64 core_forceidle_sum; diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c index 74c1617cf652..f8a43fc13564 100644 --- a/kernel/sched/debug.c +++ b/kernel/sched/debug.c @@ -1301,7 +1301,6 @@ void proc_sched_show_task(struct task_struct *p, stru= ct pid_namespace *ns, P_SCHEDSTAT(wait_count); PN_SCHEDSTAT(iowait_sum); P_SCHEDSTAT(iowait_count); - P_SCHEDSTAT(nr_migrations_cold); P_SCHEDSTAT(nr_failed_migrations_affine); P_SCHEDSTAT(nr_failed_migrations_running); P_SCHEDSTAT(nr_failed_migrations_hot); @@ -1313,8 +1312,6 @@ void proc_sched_show_task(struct task_struct *p, stru= ct pid_namespace *ns, P_SCHEDSTAT(nr_wakeups_remote); P_SCHEDSTAT(nr_wakeups_affine); P_SCHEDSTAT(nr_wakeups_affine_attempts); - P_SCHEDSTAT(nr_wakeups_passive); - P_SCHEDSTAT(nr_wakeups_idle); =20 avg_atom =3D p->se.sum_exec_runtime; if (nr_switches) --=20 2.47.3 From nobody Fri Jun 12 13:56:07 2026 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (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 E2DDD426EA7 for ; Thu, 14 May 2026 15:23:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.156.1 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772227; cv=none; b=cCCKnQs7vLPhGw1MSCg0WtO9SJ9yAGFxOMUpBcKKfC+h0H+2SwHO1a6WWtx3WfNvXoIhsBHnDJnklXCm+pW3TwCLnU++Y31gfES0rLBKhQ8juWyEswXo246AqiP3a9KkJiAsCqKs1gpXU+Cgsu0yKntOEsm/pKANjx+n/f93UyE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772227; c=relaxed/simple; bh=DLX3x7QBLYuhQPs3alW8JTDdhaTVScW105u/yxi1GHQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=QHJf81dZRj1FDHkaMkQZbLAuvZOXAkmf2GCo9FCWjhKHxzHflpBMXP7Y0dUuG/jI1Kv5jN8CI0IyIm17cFw/DGPBGaLnx3OElGlrYwZiiA1/Z7i7vuDBWLTjKtunLgRIG9Fv2Bgpb4MpJHCuDAAohNsp5bzCZgYXx1P18ztG3UE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=rW7MH0Di; arc=none smtp.client-ip=148.163.156.1 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="rW7MH0Di" Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64E7awtn3185040; Thu, 14 May 2026 15:23:27 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=B2C9EO8uCfds7b1U3 HEXiKHl4h7eezG+WFm9cdBqxAE=; b=rW7MH0Diqw6Xn6paso1BFPDf1g+VehQrf 3m9EdZgpLNlM4UVWYXGXr4Jr/lJXr90ESzS+qsrCvVIRaBmmfmLlcElgdk8tqpP7 UP5mGF605IDCs4I1sL+pSqQUBlRUCd73IVNZlOgNlvfWHTau+ARyGwVI3bmyVMrw fekeiowDOvrZ+BQy3JoYOcivfa/gysTriBU99RNouq/KVE00g/4ZiTwkq+IcZIdr Av8tlvcONKKp56iqPX+cW7G7ojcqAwnKPYNQ/WbZ8nJQyCMrlwykKddDprVFpb6b QKXEm7aDoqEkzglMwBr72GQbnxP6ux8gd1o51CRTrcxE5wrxcVhUg== Received: from ppma11.dal12v.mail.ibm.com (db.9e.1632.ip4.static.sl-reverse.com [50.22.158.219]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4e3nv5n5jk-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:23:26 +0000 (GMT) Received: from pps.filterd (ppma11.dal12v.mail.ibm.com [127.0.0.1]) by ppma11.dal12v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 64EF9cDf008403; Thu, 14 May 2026 15:23:25 GMT Received: from smtprelay07.fra02v.mail.ibm.com ([9.218.2.229]) by ppma11.dal12v.mail.ibm.com (PPS) with ESMTPS id 4e3nfgmxpd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:23:25 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay07.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 64EFNMr928443110 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 14 May 2026 15:23:22 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 3594C20043; Thu, 14 May 2026 15:23:22 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id DE9A120040; Thu, 14 May 2026 15:23:14 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.124.213.185]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Thu, 14 May 2026 15:23:14 +0000 (GMT) From: Shrikanth Hegde To: linux-kernel@vger.kernel.org, mingo@kernel.org, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, yury.norov@gmail.com, kprateek.nayak@amd.com, iii@linux.ibm.com Cc: sshegde@linux.ibm.com, tglx@kernel.org, gregkh@linuxfoundation.org, pbonzini@redhat.com, seanjc@google.com, vschneid@redhat.com, huschle@linux.ibm.com, rostedt@goodmis.org, dietmar.eggemann@arm.com, mgorman@suse.de, bsegall@google.com, maddy@linux.ibm.com, srikar@linux.ibm.com, hdanton@sina.com, chleroy@kernel.org, vineeth@bitbyteword.org, frederic@kernel.org, arighi@nvidia.com, pauld@redhat.com, christian.loehle@arm.com, tj@kernel.org, tommaso.cucinotta@gmail.com, maz@kernel.org, rafael@kernel.org Subject: [PATCH v3 02/20] sched/docs: Document cpu_preferred_mask and Preferred CPU concept Date: Thu, 14 May 2026 20:51:46 +0530 Message-ID: <20260514152204.481115-3-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260514152204.481115-1-sshegde@linux.ibm.com> References: <20260514152204.481115-1-sshegde@linux.ibm.com> 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 X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Authority-Analysis: v=2.4 cv=cPHQdFeN c=1 sm=1 tr=0 ts=6a05e8ef cx=c_pps a=aDMHemPKRhS1OARIsFnwRA==:117 a=aDMHemPKRhS1OARIsFnwRA==:17 a=NGcC8JguVDcA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=iQ6ETzBq9ecOQQE5vZCe:22 a=VnNF1IyMAAAA:8 a=f0vDFc08jm7PY2BpABoA:9 X-Proofpoint-ORIG-GUID: dYpD5L28GWXgLMetWfv_ZGatEtYAZP7Y X-Proofpoint-GUID: 7rROQoyzzKfbgYuow1hQCO_O7xkz5NHt X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTE0MDE1MyBTYWx0ZWRfX0/ZtGVvmskFe PI6fSUmmgjZfnP6SuOTbc6RKVC9hFRwd60/aNVFCjzqJoD2zO3VHTBd68Dfa795PX+ckg7b4+S3 +6qPDVNqoi43TmaDLUdT+RKjAcqJoPcywXJCm1LF0CeAbYaURUrUdfSKOsWSgO11Oh6FEtMOHYS Oy9ufnaNtfTL7EM0dEy9WV5xnWb6I+RI2CCTzDUmdQErWAQHYQjOYS0Mt4TlnN2L1uf3LPImsKl bwQIlCQzYcs/AqaI63WRQzN3JsFtUxOWlisJkefZSKK6699YiXwZATmzCnqi2GCzpxLNc0608tQ eVYsybBy/CALOmu9ZqIVjSGWOspsqNqjYzwJmJ7zkC6CmaxKmMmAG5wIWqCyzrFQ7iqFIxM5ACB l+/XmTBPnyKfKojrY3gG7IsUzC7XVS6xb+DlgHBZfRmGDZNzuD7lwBa+qOtZlWneHzpJBUKOKE+ ZRZ+Tm3liCSzdgD0J+g== 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-05-14_03,2026-05-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 bulkscore=0 phishscore=0 clxscore=1015 spamscore=0 impostorscore=0 lowpriorityscore=0 adultscore=0 suspectscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605140153 Content-Type: text/plain; charset="utf-8" Add documentation for new cpumask called cpu_preferred_mask. This could help users in understanding what this mask and the concept behind it. Document how to enable it and implementation aspects of it. Signed-off-by: Shrikanth Hegde --- Documentation/scheduler/sched-arch.rst | 49 ++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/Documentation/scheduler/sched-arch.rst b/Documentation/schedul= er/sched-arch.rst index ed07efea7d02..3f7de70dc97f 100644 --- a/Documentation/scheduler/sched-arch.rst +++ b/Documentation/scheduler/sched-arch.rst @@ -62,6 +62,55 @@ Your cpu_idle routines need to obey the following rules: arch/x86/kernel/process.c has examples of both polling and sleeping idle functions. =20 +Preferred CPUs +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +In virtualised environments it is possible to overcommit CPU resources. +i.e sum of virtual CPU(vCPU) of all VM's is greater than number of physical +CPUs(pCPU). Under such conditions when all or many VM's have high utilizat= ion, +hypervisor won't be able to satisfy the CPU requirement and has to context +switch within or across VM. i.e hypervisor need to preempt one vCPU to run +another. This is called vCPU preemption. This is more expensive compared to +task context switch within a vCPU. + +In such cases it is better that VM's co-ordinate among themselves and ask = for +less CPU by not using some of the vCPUs. vCPUs where workload can be safely +scheduled which won't increase any contention for pCPU are called as +"Preferred CPUs". + +In most cases preferred CPUs will be same as online CPUs, when there is pC= PU +contention, Preferred CPUs will reduce based on the amount of steal time. +When the pCPU contention goes away as indicated by steal time, Preferred C= PUs +will become same as online CPUs again. One has to enable the feature by +writing 1 to /sys/kernel/debug/sched/steal_monitor/enable + +One of the design construct is preferred CPUs is always subset of online C= PUs. +With CONFIG_PREFERRED_CPU=3Dn, it is same as online CPUs. + +For scheduling decisions such as wakeup, pushing the task etc, needs this +CPU state info. This is maintained in cpu_preferred_mask. + +vCPUs which are not in cpu_preferred_mask should be treated as vCPUs which +should not be used at this moment provided it doesn't break user affinity. +This is achieved by +1. Selecting only a preferred CPU at wakeup. +2. Push the task away from non-preferred CPU at tick. +3. Only select preferred CPUs for load balance. + +/sys/devices/system/cpu/preferred prints the current cpu_preferred_mask in +cpulist format. + +Notes: +1. This feature is available under CONFIG_PREFERRED_CPU +2. This feature works for FAIR/RT class. +3. A task pinned, which can't be moved to preferred CPUs will continue + to run based on its affinity. But no load balancing happens +4. If needed, steal time based governors/arch dependent method + could be used to cater to different types of cpu numbers. + Arch can do so by implementing its own hooks. +5. Decision to use/not use is driven by kernel. Hence it shouldn't + break user affinities. One of the main reason why CPU hotplug + or Isolated cpuset partitions was not a solution. =20 Possible arch/ problems =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --=20 2.47.3 From nobody Fri Jun 12 13:56:07 2026 Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) (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 8E41B410D23 for ; Thu, 14 May 2026 15:23:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.158.5 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772236; cv=none; b=i8SoEkrRWuABtzls3AkgbTrYGBnPajvEZOO1L0EUNLgEdY1V1/2oSRaKT/EbYzDDxSxaC6wkGfz31PJQ1g6lauwdYRT0Rghkme8mS9cDKrNmYLSuNeF3/0FcFhmPbcwkXbP1Y/mfWkwGzIIMPoxWJcYuY6omOT5KIFtS7WpxekI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772236; c=relaxed/simple; bh=8p7g/vtVZJfouoOglo4oDpL5QrW5K7qN3B5mDMobHAU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Wt1cDt5f582+m/RnBujrzNjaVmJyPC0fYSSA394sGrdpzKQenE5bu3oNLMhvP158tOGz5QyOA8TjKOBrbzc+fF/nv92ooaSaKM0ZIruyA7nar5LGs3kYIS6K+1d4P1/3HPGC9QfoasAcyj8wzUe1E2Ni5b+oO68hmI06RDFxbnw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=Kv52A/7m; arc=none smtp.client-ip=148.163.158.5 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="Kv52A/7m" Received: from pps.filterd (m0356516.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64E7ClvP3179988; Thu, 14 May 2026 15:23:35 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=EYlELJeYcYRelgXoh T/7x2GeicCmP9VbQ96uFudAuTc=; b=Kv52A/7m9gxRpVToJT0R/HQtaOUMJ7WAa MOewJJLBn2Gz49gAXl+nTKED3JV+PdHyyV8HdCRRr4TJ5WNH/7MbtLmJp3lFdxwQ GzXOQ/AMSjfAsgJhYFzEjubNsD79WrbIecqzdUI/NmQeAPUpvi0XJsChO8DDaOsz SY37KXqDWHr4uw42OIuaUQFhinid7k5VsEPH7NJs1fVHxolXYWlT9MqQ0+E+dIYE QcdgIiB6yaWlqHLhoope7oVyzPpXGXpiCG/D9cc1cOzt2CmpDIIdwQ3AFrVRo7pP ih42dEty2kWhW5nTpS0b3idzYiIE+TWGHXssWEA+KtWg2md9t5rdQ== Received: from ppma13.dal12v.mail.ibm.com (dd.9e.1632.ip4.static.sl-reverse.com [50.22.158.221]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4e3nv6vgsw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:23:34 +0000 (GMT) Received: from pps.filterd (ppma13.dal12v.mail.ibm.com [127.0.0.1]) by ppma13.dal12v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 64EF9TSr012590; Thu, 14 May 2026 15:23:33 GMT Received: from smtprelay03.fra02v.mail.ibm.com ([9.218.2.224]) by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 4e3nfgvxfw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:23:33 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay03.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 64EFNUb941877808 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 14 May 2026 15:23:30 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 183ED20043; Thu, 14 May 2026 15:23:30 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 9978020040; Thu, 14 May 2026 15:23:22 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.124.213.185]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Thu, 14 May 2026 15:23:22 +0000 (GMT) From: Shrikanth Hegde To: linux-kernel@vger.kernel.org, mingo@kernel.org, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, yury.norov@gmail.com, kprateek.nayak@amd.com, iii@linux.ibm.com Cc: sshegde@linux.ibm.com, tglx@kernel.org, gregkh@linuxfoundation.org, pbonzini@redhat.com, seanjc@google.com, vschneid@redhat.com, huschle@linux.ibm.com, rostedt@goodmis.org, dietmar.eggemann@arm.com, mgorman@suse.de, bsegall@google.com, maddy@linux.ibm.com, srikar@linux.ibm.com, hdanton@sina.com, chleroy@kernel.org, vineeth@bitbyteword.org, frederic@kernel.org, arighi@nvidia.com, pauld@redhat.com, christian.loehle@arm.com, tj@kernel.org, tommaso.cucinotta@gmail.com, maz@kernel.org, rafael@kernel.org Subject: [PATCH v3 03/20] kconfig: Provide PREFERRED_CPU option Date: Thu, 14 May 2026 20:51:47 +0530 Message-ID: <20260514152204.481115-4-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260514152204.481115-1-sshegde@linux.ibm.com> References: <20260514152204.481115-1-sshegde@linux.ibm.com> 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 X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Authority-Analysis: v=2.4 cv=Us1T8ewB c=1 sm=1 tr=0 ts=6a05e8f7 cx=c_pps a=AfN7/Ok6k8XGzOShvHwTGQ==:117 a=AfN7/Ok6k8XGzOShvHwTGQ==:17 a=NGcC8JguVDcA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=Y2IxJ9c9Rs8Kov3niI8_:22 a=NEAV23lmAAAA:8 a=VnNF1IyMAAAA:8 a=CgApyjHX8VSDXvJVescA:9 X-Proofpoint-GUID: 9HII3Ub_euRVgk4aURQ8-MptGmczvzD1 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTE0MDE1MyBTYWx0ZWRfX2hfzTg06RwKe 5T58twTlXVgbPe976LIPw38CefYXkT/cPddCuXvDOgqku2JIeSeVt1BwRn/XtyFbXL6sBy3WE1Q A0aqB3JTrdUR71OrnniHFgdcy19KG73O0jmOSiqvUTUAIKT0sw6RdsP1rQAf/IklNIqY/CVwDtY /sRuiFLgFU+4G/AFgXL9f/4Lbk5To8PDVW5JzNreRCPYK1CHmKKutTKMpEOkSAvzFQM/kRvX80z JobGfHMPnMRtCjuO78PQEM1N8imQNjpXj5VJFc73xDn4v4uZL6gJFLVf6yyJarEpZ/vcE9SrXEt XFrKNpalqBzPAC4UZdqkV8iph9uM60ZeuViUz51bSmxulvETYuWMljgClaDPSt8pYu7sE9PVp0L RsZcQ6GOTsI/snBVzTbSCx4N5DE9i4HjQHkTi9YXHq+OiyVZsr7xRqdpSX918R0DqOWeF/c1Zj3 LHTlaT3iSBBbS4VmYcg== X-Proofpoint-ORIG-GUID: o0HIW19zM4T2YnCMpvYyvdVuPJXa2g3u 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-05-14_03,2026-05-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 priorityscore=1501 impostorscore=0 lowpriorityscore=0 bulkscore=0 suspectscore=0 spamscore=0 malwarescore=0 clxscore=1015 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605140153 Content-Type: text/plain; charset="utf-8" Introduce a new config named PREFERRED_CPU. This helps to: - Avoid the code bloat when PREFERRED_CPU=3Dn. In that cases preferred is same as online. - Avoid the ifdeffery around PREFERRED_CPU in many files. Since par-avirtual use case is the main driving force of this feature, make it default for kernels with PARAVIRT=3Dy Signed-off-by: Shrikanth Hegde --- kernel/Kconfig.preempt | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/kernel/Kconfig.preempt b/kernel/Kconfig.preempt index 88c594c6d7fc..495252fef768 100644 --- a/kernel/Kconfig.preempt +++ b/kernel/Kconfig.preempt @@ -192,3 +192,16 @@ config SCHED_CLASS_EXT For more information: Documentation/scheduler/sched-ext.rst https://github.com/sched-ext/scx + +config PREFERRED_CPU + bool "Dynamic vCPU management based on steal time" + default y if PARAVIRT && SMP + help + This feature helps to reduce the steal time in paravirtualised + environment, there by reducing vCPU preemption. Reducing vCPU + preemption provides improved lock holder preemption and reduces + cost of vCPU preemption in the host. + + By default preferred CPUs will be same as online CPUs. Depending + on the steal time when steal monitor is enabled, preferred CPUs + could become subset of online CPUs. --=20 2.47.3 From nobody Fri Jun 12 13:56:07 2026 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (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 77FEA42B73D for ; Thu, 14 May 2026 15:24:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.156.1 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772243; cv=none; b=KLNDgy7nNdEs3H3LwKVdhF4lzHPRe59MPwXjW8Egwv9nVTNim3EHyKgdhcGy544eHfPFhQ6qEfTpXIyWzlZHCmbTY8MNV6nqLNLjODtajwjfNtDRdHfD2RhRNkKgoSU5nL0T5U3VuX/XjmvklSwSUsC/W14WpGvL1igj9mfLMSY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772243; c=relaxed/simple; bh=+YVtiV401SXmd7F8CnIx4BAHEsv1eYAQS4aEEvvX3lY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=kpHWkc/NZnfkTPkuA5QZVHYqP/VownhTB+0B9Hwhj7L+78cdXKqL39IZXzCJhGHh6TPzAnmLcBdLwSdFUodMXAp+r8aTd305i/jJDjM7Ta3IGUq5at0q3FOH8GrdkwH4+tR9XRCkAhjCraCpyAJMIz1uMMzjC92Wc+8bmsHskY0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=LcwkMQEo; arc=none smtp.client-ip=148.163.156.1 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="LcwkMQEo" Received: from pps.filterd (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64E7UHjh2611786; Thu, 14 May 2026 15:23:42 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=CtVkOH3e9OjgDTnPv QMoOITqrFHDlNiTjwNeN43Hzd8=; b=LcwkMQEoOvTFlQaI0EJ2t8yMTvKQMHIDr wgil0wETCtt5PzOyupk9ck6Yq/PXFPHsOMS4YXjNnavdecpE0mV0/Hr/7KHz4y6q 3MM7Cn/JxF+sd/b0TBkyylpBQmHiXlk5nWRCnoZEawug/h3kdnTn66lLOVq0H5iN cC1TzcdNIS1gt1L5nxff8zPf/lCNJEm5oo+zCJ4u5UysktygamzC5ZCzT0cummjS NTjv8ubP6sxdeJdUXWRdDooVbapFHShFFkTpMPve75KJQaS4dNCRvXgkmoV6L9Pg 1wQot2oc8MbIS8QTKDZ5WePrtqLkSAOWrmrx6wbwwdSa/eAaZfgIA== Received: from ppma11.dal12v.mail.ibm.com (db.9e.1632.ip4.static.sl-reverse.com [50.22.158.219]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4e3nve54c4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:23:42 +0000 (GMT) Received: from pps.filterd (ppma11.dal12v.mail.ibm.com [127.0.0.1]) by ppma11.dal12v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 64EF9U5T007925; Thu, 14 May 2026 15:23:41 GMT Received: from smtprelay03.fra02v.mail.ibm.com ([9.218.2.224]) by ppma11.dal12v.mail.ibm.com (PPS) with ESMTPS id 4e3nfgmxqh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:23:41 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay03.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 64EFNbj344892638 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 14 May 2026 15:23:37 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 8ABE120043; Thu, 14 May 2026 15:23:37 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 7F61820040; Thu, 14 May 2026 15:23:30 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.124.213.185]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Thu, 14 May 2026 15:23:30 +0000 (GMT) From: Shrikanth Hegde To: linux-kernel@vger.kernel.org, mingo@kernel.org, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, yury.norov@gmail.com, kprateek.nayak@amd.com, iii@linux.ibm.com Cc: sshegde@linux.ibm.com, tglx@kernel.org, gregkh@linuxfoundation.org, pbonzini@redhat.com, seanjc@google.com, vschneid@redhat.com, huschle@linux.ibm.com, rostedt@goodmis.org, dietmar.eggemann@arm.com, mgorman@suse.de, bsegall@google.com, maddy@linux.ibm.com, srikar@linux.ibm.com, hdanton@sina.com, chleroy@kernel.org, vineeth@bitbyteword.org, frederic@kernel.org, arighi@nvidia.com, pauld@redhat.com, christian.loehle@arm.com, tj@kernel.org, tommaso.cucinotta@gmail.com, maz@kernel.org, rafael@kernel.org Subject: [PATCH v3 04/20] cpumask: Introduce cpu_preferred_mask Date: Thu, 14 May 2026 20:51:48 +0530 Message-ID: <20260514152204.481115-5-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260514152204.481115-1-sshegde@linux.ibm.com> References: <20260514152204.481115-1-sshegde@linux.ibm.com> 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 X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Authority-Analysis: v=2.4 cv=Y/XIdBeN c=1 sm=1 tr=0 ts=6a05e8fe cx=c_pps a=aDMHemPKRhS1OARIsFnwRA==:117 a=aDMHemPKRhS1OARIsFnwRA==:17 a=NGcC8JguVDcA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=U7nrCbtTmkRpXpFmAIza:22 a=VnNF1IyMAAAA:8 a=aPx0SrB3icYvFU3L0J8A:9 X-Proofpoint-GUID: QEWx0-lyQjIjpynOzpgG5UvqKS9T3Ixl X-Proofpoint-ORIG-GUID: 3dhhSr9sPSCjQbn50DssNFIHBKPklYX9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTE0MDE1MyBTYWx0ZWRfX23XOkQ/crMli UVlz43ZZTw17uPYd60J6qnbR1EcGt2EjiU8JBIFYCIOwTN2kXK4D4UJoyZwuJAKXb9IOOPi34O0 dMOpfqYYB3xtz8EiX0Y1LU3iYunvDZYuIPbsxmL/o12QWXF1WDfgsa5V1SHzkHEpPGJs86EG4Yg eFfT5bLI1YAB/RctUZE7sngs9XBY8q2CMcEJnPxVj9YIvlnWpfjVdg3Xqt0E8H9OaHDZqe5unB1 6NizcMP0PEHcUJVUMJil1kRlQJtcwJHYMWqYzAglIgAYPJLilmv5gNjJjg9fvfV1ltpzDAsuIRj fKUPm8qH/avwq+yoIZ2EuoMaJkGwapyg0Vi56VGI1SD2rAT6v609uANzlDZnTtHzOasAbv3cSDK eaEHaJyywuw133yFvPn61y1ntw7DOPuH6JRRgjisLCyrKb8dj5GgqfIHeR13YPRkcp+/M0bmXs+ vaWbLhWwMEjojpg/3/A== 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-05-14_03,2026-05-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 priorityscore=1501 lowpriorityscore=0 phishscore=0 malwarescore=0 suspectscore=0 bulkscore=0 spamscore=0 adultscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605140153 Content-Type: text/plain; charset="utf-8" This patch does - Declare and Define cpu_preferred_mask. - Get/Set helpers for it. Values are set/clear by the scheduler by detecting the steal time values. A CPU is set to preferred when it comes online. Later it may be marked as non-preferred depending on steal time values with steal monitor being enabled. Always maintain design construct of preferred is subset of online. Signed-off-by: Shrikanth Hegde --- include/linux/cpumask.h | 21 ++++++++++++++++++++- kernel/cpu.c | 16 ++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h index 80211900f373..025ad7778a6c 100644 --- a/include/linux/cpumask.h +++ b/include/linux/cpumask.h @@ -120,12 +120,20 @@ extern struct cpumask __cpu_enabled_mask; extern struct cpumask __cpu_present_mask; extern struct cpumask __cpu_active_mask; extern struct cpumask __cpu_dying_mask; + +#ifdef CONFIG_PREFERRED_CPU +extern struct cpumask __cpu_preferred_mask; +#else +#define __cpu_preferred_mask __cpu_online_mask +#endif + #define cpu_possible_mask ((const struct cpumask *)&__cpu_possible_mask) #define cpu_online_mask ((const struct cpumask *)&__cpu_online_mask) #define cpu_enabled_mask ((const struct cpumask *)&__cpu_enabled_mask) #define cpu_present_mask ((const struct cpumask *)&__cpu_present_mask) #define cpu_active_mask ((const struct cpumask *)&__cpu_active_mask) #define cpu_dying_mask ((const struct cpumask *)&__cpu_dying_mask) +#define cpu_preferred_mask ((const struct cpumask *)&__cpu_preferred_mask) =20 extern atomic_t __num_online_cpus; extern unsigned int __num_possible_cpus; @@ -1164,6 +1172,7 @@ void init_cpu_possible(const struct cpumask *src); =20 void set_cpu_online(unsigned int cpu, bool online); void set_cpu_possible(unsigned int cpu, bool possible); +void set_cpu_preferred(unsigned int cpu, bool preferred); =20 /** * to_cpumask - convert a NR_CPUS bitmap to a struct cpumask * @@ -1256,7 +1265,12 @@ static __always_inline bool cpu_dying(unsigned int c= pu) return cpumask_test_cpu(cpu, cpu_dying_mask); } =20 -#else +static __always_inline bool cpu_preferred(unsigned int cpu) +{ + return cpumask_test_cpu(cpu, cpu_preferred_mask); +} + +#else /* NR_CPUS <=3D 1 */ =20 #define num_online_cpus() 1U #define num_possible_cpus() 1U @@ -1294,6 +1308,11 @@ static __always_inline bool cpu_dying(unsigned int c= pu) return false; } =20 +static __always_inline bool cpu_preferred(unsigned int cpu) +{ + return cpu =3D=3D 0; +} + #endif /* NR_CPUS > 1 */ =20 #define cpu_is_offline(cpu) unlikely(!cpu_online(cpu)) diff --git a/kernel/cpu.c b/kernel/cpu.c index bc4f7a9ba64e..819167cb8bed 100644 --- a/kernel/cpu.c +++ b/kernel/cpu.c @@ -3107,6 +3107,11 @@ EXPORT_SYMBOL(__cpu_dying_mask); atomic_t __num_online_cpus __read_mostly; EXPORT_SYMBOL(__num_online_cpus); =20 +#ifdef CONFIG_PREFERRED_CPU +struct cpumask __cpu_preferred_mask __read_mostly; +EXPORT_SYMBOL(__cpu_preferred_mask); +#endif + void init_cpu_present(const struct cpumask *src) { cpumask_copy(&__cpu_present_mask, src); @@ -3137,6 +3142,9 @@ void set_cpu_online(unsigned int cpu, bool online) if (cpumask_test_and_clear_cpu(cpu, &__cpu_online_mask)) atomic_dec(&__num_online_cpus); } + + /* preferred is always subset of online */ + set_cpu_preferred(cpu, online); } =20 /* @@ -3154,6 +3162,14 @@ void set_cpu_possible(unsigned int cpu, bool possibl= e) } } =20 +void set_cpu_preferred(unsigned int cpu, bool preferred) +{ + if (!IS_ENABLED(CONFIG_PREFERRED_CPU)) + return; + + assign_cpu((cpu), &__cpu_preferred_mask, (preferred)); +} + /* * Activate the first processor. */ --=20 2.47.3 From nobody Fri Jun 12 13:56:07 2026 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (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 2C181428494 for ; Thu, 14 May 2026 15:24:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.156.1 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772263; cv=none; b=MduXfpPTP7JsKzctAwJuhNCMdp2myHEjGmFEUg9YQrQR6XPKyxGjpH1b6wTPcEy8O9ott1mD255VseMoSMO7okCJgHNmNHqDwQsD3lqXRdY4d4Q3MufukTXxPDBhXAz0SHLIHgIFACYhw87QQkRq3UnaOiVlxkZoUVDngaxwsRY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772263; c=relaxed/simple; bh=zJxzGEtaMTGEejCH5zSI1EaUMbu0tJGJjtrt+3d2moo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=jTBV5xOysqLKhhI7lupMeRgLPwR0j880e7KVxEqnQ5FzODXpDFUfu8N7tghjmzI+orc9aM0vOFEcU8vzF6+YjFiezEyP4EbX+pB11zolUF8P3dhHQ22UigF71YWMxykKGh42TzPdi8LUq5GMyHiEkoA4TNl1G0b/79rStVTvjvk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=XHuNT/9U; arc=none smtp.client-ip=148.163.156.1 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="XHuNT/9U" Received: from pps.filterd (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64E6ovli2611836; Thu, 14 May 2026 15:23:51 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=1wyUE/Vf+QvEfbbo0 1k/AR2Fe1WshRgZPA1M/cqOgzw=; b=XHuNT/9UqGe6IDRGdFW7CF2ODdkP+liKh vH+i39hXZnHciQzrfF4qJhjyU6+9iXU9jarmNHQBPS1PkwLY71Su8q/KH9u5AL7R 0PS9FLSFr0lPu5QyQ58z34bqC0sg1ck5CZ6HNYbuDeg8Zve4a/IOMBWL5fbW9kjo OnEtE0RsxN7SZMG+pqkrBvgA/znrNUn1KGvx/2+tOX+RD3jZE+zWetJuI3TkIl5N aN6Tq+QI+0AOulMiIvAoeYKMDkXaRJ5qLuKqw3wFQQmr38z7WTVfIuCTLAk8Dm61 RCn2CzYTE0s5rvTx/L5amLibh8/BA6KH6jR4yejCZevUdqrjXPkZQ== Received: from ppma21.wdc07v.mail.ibm.com (5b.69.3da9.ip4.static.sl-reverse.com [169.61.105.91]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4e3nve54ch-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:23:50 +0000 (GMT) Received: from pps.filterd (ppma21.wdc07v.mail.ibm.com [127.0.0.1]) by ppma21.wdc07v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 64EF9WSi024570; Thu, 14 May 2026 15:23:49 GMT Received: from smtprelay04.fra02v.mail.ibm.com ([9.218.2.228]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4e3nfgvxmj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:23:48 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay04.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 64EFNj7m13304300 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 14 May 2026 15:23:45 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 0E77C20043; Thu, 14 May 2026 15:23:45 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 0074520040; Thu, 14 May 2026 15:23:37 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.124.213.185]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Thu, 14 May 2026 15:23:37 +0000 (GMT) From: Shrikanth Hegde To: linux-kernel@vger.kernel.org, mingo@kernel.org, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, yury.norov@gmail.com, kprateek.nayak@amd.com, iii@linux.ibm.com Cc: sshegde@linux.ibm.com, tglx@kernel.org, gregkh@linuxfoundation.org, pbonzini@redhat.com, seanjc@google.com, vschneid@redhat.com, huschle@linux.ibm.com, rostedt@goodmis.org, dietmar.eggemann@arm.com, mgorman@suse.de, bsegall@google.com, maddy@linux.ibm.com, srikar@linux.ibm.com, hdanton@sina.com, chleroy@kernel.org, vineeth@bitbyteword.org, frederic@kernel.org, arighi@nvidia.com, pauld@redhat.com, christian.loehle@arm.com, tj@kernel.org, tommaso.cucinotta@gmail.com, maz@kernel.org, rafael@kernel.org Subject: [PATCH v3 05/20] sysfs: Add preferred CPU file Date: Thu, 14 May 2026 20:51:49 +0530 Message-ID: <20260514152204.481115-6-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260514152204.481115-1-sshegde@linux.ibm.com> References: <20260514152204.481115-1-sshegde@linux.ibm.com> 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 X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Authority-Analysis: v=2.4 cv=Y/XIdBeN c=1 sm=1 tr=0 ts=6a05e906 cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=NGcC8JguVDcA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=U7nrCbtTmkRpXpFmAIza:22 a=VnNF1IyMAAAA:8 a=VwQbUJbxAAAA:8 a=usQfwybhv0jOAWjiEAgA:9 X-Proofpoint-GUID: ZJP5Nr7rWEDrDLdy6B5U5NCWtLWO8Lbi X-Proofpoint-ORIG-GUID: HKNiChaFyvwuQaM85H-18RIGBImU4jLm X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTE0MDE1MyBTYWx0ZWRfX0xWggG8Dyke0 50LPHmCl9VskXRtZT0gdXohktEM+/znRhmjdCFY+NX1e3Er4lg+pJgQGBAo6mLtTRDhdO8HdFDE 8tRX2UU6fSyfW5nUKctAFz69gvCT32nrEoUB/yUaQBLB5s2bJITpiVyMbThj3xXeTfPooQhiBfL nZ1W28UcbrCysokGbe39W20ZnR5LwNvjDHUGORa+6xwU4RNWqj/KytmHbm7lErAGNeuxR6LTmdI gEgL8/4s0J72g+ZWCz4oMd7DpTrfMFdhZnNjpUJTwLTXPkvcR5Ab24i730QYU+K62FftEu/ztXp Ix907tYiscdxk+/RaKUYfdE871lOyfjK96FE6cGvVIPLpMKqBUKO6vJw+m3By3M77RIXliV5ovq BNlU81209ET3TATGyvROtZjWzB3eg07wwTMXHSuKIv5f1e1LKYYAjdIDLNt8XOeHxbS4QnvA7IM 5fpgb2t3bNfDMXpe+Cw== 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-05-14_03,2026-05-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 priorityscore=1501 lowpriorityscore=0 phishscore=0 malwarescore=0 suspectscore=0 bulkscore=0 spamscore=0 adultscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605140153 Content-Type: text/plain; charset="utf-8" Add "preferred" file in /sys/devices/system/cpu This offers - User can quickly check which CPUs are marked as preferred at this moment. - Userspace algorithms irqbalance could use this mask to send irq into preferred CPUs. For example: cat /sys/devices/system/cpu/online 0-719 cat /sys/devices/system/cpu/preferred 0-599 <<< Implies 0-599 are preferred for workloads and 600-719 should be avoided at this moment. cat /sys/devices/system/cpu/preferred 0-719 <<< All CPUs are usable. There is no preferrence. Signed-off-by: Shrikanth Hegde --- Documentation/ABI/testing/sysfs-devices-system-cpu | 11 +++++++++++ drivers/base/cpu.c | 8 ++++++++ 2 files changed, 19 insertions(+) diff --git a/Documentation/ABI/testing/sysfs-devices-system-cpu b/Documenta= tion/ABI/testing/sysfs-devices-system-cpu index 82d10d556cc8..354058c07d65 100644 --- a/Documentation/ABI/testing/sysfs-devices-system-cpu +++ b/Documentation/ABI/testing/sysfs-devices-system-cpu @@ -806,3 +806,14 @@ Date: Nov 2022 Contact: Linux kernel mailing list Description: (RO) the list of CPUs that can be brought online. + +What: /sys/devices/system/cpu/preferred +Date: May 2026 +Contact: Linux kernel mailing list +Description: + (RO) the list of preferred CPUs at this moment. + These are the only CPUs meant to be used at the moment. + Using CPU outside of the list could lead to more + contention of underlying physical CPU resource. Dynamically + changes based on steal time. With CONFIG_PREFERRED_CPU=3Dn it + is same as online CPUs. See sched-arch.rst for more details. diff --git a/drivers/base/cpu.c b/drivers/base/cpu.c index 875abdc9942e..0c6647805805 100644 --- a/drivers/base/cpu.c +++ b/drivers/base/cpu.c @@ -391,6 +391,13 @@ static int cpu_uevent(const struct device *dev, struct= kobj_uevent_env *env) } #endif =20 +static ssize_t preferred_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + return sysfs_emit(buf, "%*pbl\n", cpumask_pr_args(cpu_preferred_mask)); +} +static DEVICE_ATTR_RO(preferred); + const struct bus_type cpu_subsys =3D { .name =3D "cpu", .dev_name =3D "cpu", @@ -532,6 +539,7 @@ static struct attribute *cpu_root_attrs[] =3D { #ifdef CONFIG_GENERIC_CPU_AUTOPROBE &dev_attr_modalias.attr, #endif + &dev_attr_preferred.attr, NULL }; =20 --=20 2.47.3 From nobody Fri Jun 12 13:56:07 2026 Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) (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 7A0333A0E8A for ; Thu, 14 May 2026 15:24:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.158.5 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772259; cv=none; b=AlsuGteMg7Qbpv77DmglOLTT9O/4k4yR0BOY1thvp/eYhRntnp64Y/PN0IxpI2E6kFOaPNUoBll8gfjcmYQmc3e1zsTpxkcAzhBgtXc50gc61uNTPzCyiuZih4xFTeEbOJ3Ij+o8zSZ4ipFPHu2dE8P+5L5R/q2NZyVJzWvYTUA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772259; c=relaxed/simple; bh=7TCwsMWNKq41/GhWtehE57RhhGLiMTCzYf4LFhs4pFk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=UPXfwfln1QeOZGVK20N+kfd+RbBfUhroLix6pu0MdrIQSgFdy49aCO7ualBQ+ipOtQ+xehh0fPtn65wGMf4RcYkaL4MtJE6/9L3yrKrw+sasybkZKUUjc2UA7MjepDhLor2T4NwOqA6KGdqEzi61Tqiejbnr4ni76ssfMEOGyPs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=PL6pPquw; arc=none smtp.client-ip=148.163.158.5 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="PL6pPquw" Received: from pps.filterd (m0353725.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64E6tFsw3775727; Thu, 14 May 2026 15:23:57 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=iO/LAHUgFZT6df56d KHDGZwDOg23P7gMS4V5h/OMLs8=; b=PL6pPquwiJ9jXqikXC8u4IsT7OarQN38b AOoFHEOkQp8RjSrPxypJBBvom/iPmunlW43wmlZJmWEHwuH0YJTLzytawxGK4Cl8 s7shnA5BUJaylGJgy+8dQ140Q6qAGFFemv2IV+NVs4Ng3aotA1EM2QBvwQKrAQRh 5OSNlYuDAmskjcU6YSToP0khT9oVkXNg06EZSMJyIrrY7+o4HLhty3+NUTrpoYUZ zDAA8bi/Eyi4YzRhjHVVfpRU5sn14UiFs5HzWriFF95xJaz66/E8DVzThNR6LTvq fwhj/W6WjJ6A4B5id5f7Tn1ObslaGeT0L77Ao89cmvPhiNAmCuAsw== Received: from ppma12.dal12v.mail.ibm.com (dc.9e.1632.ip4.static.sl-reverse.com [50.22.158.220]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4e3nv6vh0r-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:23:57 +0000 (GMT) Received: from pps.filterd (ppma12.dal12v.mail.ibm.com [127.0.0.1]) by ppma12.dal12v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 64EF9Xv3003483; Thu, 14 May 2026 15:23:56 GMT Received: from smtprelay04.fra02v.mail.ibm.com ([9.218.2.228]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 4e3nfgmx7q-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:23:56 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay04.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 64EFNqPk31523522 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 14 May 2026 15:23:52 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 938CB20043; Thu, 14 May 2026 15:23:52 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 741AB20040; Thu, 14 May 2026 15:23:45 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.124.213.185]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Thu, 14 May 2026 15:23:45 +0000 (GMT) From: Shrikanth Hegde To: linux-kernel@vger.kernel.org, mingo@kernel.org, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, yury.norov@gmail.com, kprateek.nayak@amd.com, iii@linux.ibm.com Cc: sshegde@linux.ibm.com, tglx@kernel.org, gregkh@linuxfoundation.org, pbonzini@redhat.com, seanjc@google.com, vschneid@redhat.com, huschle@linux.ibm.com, rostedt@goodmis.org, dietmar.eggemann@arm.com, mgorman@suse.de, bsegall@google.com, maddy@linux.ibm.com, srikar@linux.ibm.com, hdanton@sina.com, chleroy@kernel.org, vineeth@bitbyteword.org, frederic@kernel.org, arighi@nvidia.com, pauld@redhat.com, christian.loehle@arm.com, tj@kernel.org, tommaso.cucinotta@gmail.com, maz@kernel.org, rafael@kernel.org Subject: [PATCH v3 06/20] sched/core: allow only preferred CPUs in is_cpu_allowed Date: Thu, 14 May 2026 20:51:50 +0530 Message-ID: <20260514152204.481115-7-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260514152204.481115-1-sshegde@linux.ibm.com> References: <20260514152204.481115-1-sshegde@linux.ibm.com> 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 X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Authority-Analysis: v=2.4 cv=KbvidwYD c=1 sm=1 tr=0 ts=6a05e90d cx=c_pps a=bLidbwmWQ0KltjZqbj+ezA==:117 a=bLidbwmWQ0KltjZqbj+ezA==:17 a=NGcC8JguVDcA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=V8glGbnc2Ofi9Qvn3v5h:22 a=VnNF1IyMAAAA:8 a=h5kyaPOYuMV5y32J0wcA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTE0MDE1MyBTYWx0ZWRfX7WLnvIG23hDa 0CzwJWnSzbQ/eEKxs54nSwRXFkgD1AturMYU8OyD0DAtAp2804fJ2TfGJYN37PyWaxcnfTYMyKq zmE11gGOWOwBhUn4X4ZKpJiW+h1/eOpBSS8BnKwQS0QCq9G0Lbz+XalQYAH1KceQ1Z7kMgnpvwn BIquikwrR+iFRAC3OpOaife29hByHejLC6IkJ42hwvToOaXXj7N9W5Gr9tXaHXRce0BUO936Nu2 pCnoOlhakMVpDB5YD3UEUBGUXhdbu0+hsw/zBjYn4Zgsyxq6uS2/LYpSHq6rUxIU7MkUiYVhWhr 1D8u4sPdeZeOt59dw/QXN1byHa8HLrZGK8Pcq2ImYFmDJNwJoGUrI9vlNmKYqlM6oJH11/1/FOL MstwHr+euZT3qKSTov1767NKOKhrPf1TUFYCh7NqbkSfbpy9q0f5X0lt8C3R2oz5qWCua4ql+aH 5pJSGghZac3gwHzSMOg== X-Proofpoint-GUID: uvgmOl2ivjrBKjLTYr6_0gvMn-K81C8K X-Proofpoint-ORIG-GUID: qhvfmHTNm6wXsjofDRfkwNSN2Y1k8qQ0 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-05-14_03,2026-05-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 bulkscore=0 impostorscore=0 malwarescore=0 lowpriorityscore=0 phishscore=0 spamscore=0 suspectscore=0 clxscore=1015 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605140153 Content-Type: text/plain; charset="utf-8" When possible, choose a preferred CPUs to pick. Push task mechanism uses stopper thread which going to call select_fallback_rq and use this mechanism to pick only a preferred CPU. When task is affined only to non-preferred CPUs it should continue to run there. Detect that by checking if cpus_ptr and cpu_preferred_mask intersect or not. Signed-off-by: Shrikanth Hegde --- kernel/sched/core.c | 27 +++++++++++++++++++++++++-- kernel/sched/sched.h | 5 +++++ 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 3ae5f19c1b7e..292d4e7db0fd 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -2468,6 +2468,8 @@ static inline bool rq_has_pinned_tasks(struct rq *rq) */ static inline bool is_cpu_allowed(struct task_struct *p, int cpu) { + bool task_has_preferred_cpu =3D false; + /* When not in the task's cpumask, no point in looking further. */ if (!task_allowed_on_cpu(p, cpu)) return false; @@ -2476,9 +2478,26 @@ static inline bool is_cpu_allowed(struct task_struct= *p, int cpu) if (is_migration_disabled(p)) return cpu_online(cpu); =20 + /* + * This is essential to maintain user affinities when preferred + * CPUs change. A task pinned on non-preferred CPU should continue + * to run there, since this is non-user triggered. + * + * For majority of the cases this would still keep select_fallback_rq + * as O(N). task_has_preferred_cpus which is O(N) is called only if + * !cpu_preferred. Then task running there is expected to move out. + * So subsequent it should run on preferred CPU. This becomes O(N**2) + * only for tasks pinned only non preferred CPUs. That is rare case. + */ + task_has_preferred_cpu =3D !cpu_preferred(cpu) && task_has_preferred_cpus= (p); + /* Non kernel threads are not allowed during either online or offline. */ - if (!(p->flags & PF_KTHREAD)) - return cpu_active(cpu); + if (!(p->flags & PF_KTHREAD)) { + if (!cpu_active(cpu)) + return false; + if (task_has_preferred_cpu) + return false; + } =20 /* KTHREAD_IS_PER_CPU is always allowed. */ if (kthread_is_per_cpu(p)) @@ -2488,6 +2507,10 @@ static inline bool is_cpu_allowed(struct task_struct= *p, int cpu) if (cpu_dying(cpu)) return false; =20 + /* Try on preferred CPU first if possible*/ + if (task_has_preferred_cpu) + return false; + /* But are allowed during online. */ return cpu_online(cpu); } diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index ffe77b2b6296..faf36bc7bd12 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -4130,4 +4130,9 @@ DEFINE_CLASS_IS_UNCONDITIONAL(sched_change) =20 #include "ext.h" =20 +static inline bool task_has_preferred_cpus(struct task_struct *p) +{ + return cpumask_intersects(p->cpus_ptr, cpu_preferred_mask); +} + #endif /* _KERNEL_SCHED_SCHED_H */ --=20 2.47.3 From nobody Fri Jun 12 13:56:07 2026 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (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 96AF5426D1D for ; Thu, 14 May 2026 15:24:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.156.1 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772268; cv=none; b=Iuf3Yk5q4d+JU31uPYip2FZZfYKAJiTy3z6JCxBVux8+rXS27iciFKrdm74s7YCV73ir9KXyEEkzME6tZCjmsDPU2kVFs8zE5T/Kmf9djzHcCXHAtQhpNrcyyCzqhzBnmafl7qJZuQTA/eIIVWWCgoOSkQdMb+mk6p7dezLd1Xs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772268; c=relaxed/simple; bh=Apoh5CjAe65nfwMwlgvczSmECc3r+00F0XU5oT+S3pQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=RMcYYGHzlaxYAo0eFn6UBgyrenCDGabpLbCBz4Xi8XyYwlTJSpY3pn9KRJZluMLnuToyh4cfI8VQHOO5eARTm5OfY/RcNkaVkrUgMPd0ISpoqZ970SgqSjMudg2FhyfuzuefLWaxNYV3nzf/5XzKlAiqzSQefcZwpqyo1TbHwsQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=dCF8RYpn; arc=none smtp.client-ip=148.163.156.1 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="dCF8RYpn" Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64E7wxSb3185718; Thu, 14 May 2026 15:24:06 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=nzVv7cfMUaTRT2Suh xdCXdPuq1ykLne1IUb1AGkRbHo=; b=dCF8RYpna2AURv5GAVqbmh9DfoUQXpt87 FcEEvPZHeepGP1Imm9QwzYyTv+IcXUbMlQCs1i+CHBErV7dJPp8nyhfsW1T/5D0T 6FTcR+bMY8gFXo/8CngBtJrPbt7IXQQfJz+0hxs7p3vfYM3fkOqbZI5NxycZO9if k7p+oq1VtMwRI+PbG3/tdCiUe5nvBEc86aAmoo7MWa99+HP/gOXHM1In52u0GWje KwPwtjSSdrp7cYQIyGlIw26NMA0MOHur86QSn61nZU83D0qB+krzez8C83Nx6fgG O0V6l18zBYp1r4twG0zkVS6iaO+kKJprs0XZ342eDA/4FbEM4CVaA== Received: from ppma21.wdc07v.mail.ibm.com (5b.69.3da9.ip4.static.sl-reverse.com [169.61.105.91]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4e3nv5n5ma-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:24:05 +0000 (GMT) Received: from pps.filterd (ppma21.wdc07v.mail.ibm.com [127.0.0.1]) by ppma21.wdc07v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 64EF9XqN024587; Thu, 14 May 2026 15:24:04 GMT Received: from smtprelay01.fra02v.mail.ibm.com ([9.218.2.227]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4e3nfgvxn3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:24:03 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay01.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 64EFO0ir46399868 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 14 May 2026 15:24:00 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 1BA932004B; Thu, 14 May 2026 15:24:00 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 0735620040; Thu, 14 May 2026 15:23:53 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.124.213.185]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Thu, 14 May 2026 15:23:52 +0000 (GMT) From: Shrikanth Hegde To: linux-kernel@vger.kernel.org, mingo@kernel.org, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, yury.norov@gmail.com, kprateek.nayak@amd.com, iii@linux.ibm.com Cc: sshegde@linux.ibm.com, tglx@kernel.org, gregkh@linuxfoundation.org, pbonzini@redhat.com, seanjc@google.com, vschneid@redhat.com, huschle@linux.ibm.com, rostedt@goodmis.org, dietmar.eggemann@arm.com, mgorman@suse.de, bsegall@google.com, maddy@linux.ibm.com, srikar@linux.ibm.com, hdanton@sina.com, chleroy@kernel.org, vineeth@bitbyteword.org, frederic@kernel.org, arighi@nvidia.com, pauld@redhat.com, christian.loehle@arm.com, tj@kernel.org, tommaso.cucinotta@gmail.com, maz@kernel.org, rafael@kernel.org Subject: [PATCH v3 07/20] sched/fair: Select preferred CPU at wakeup when possible Date: Thu, 14 May 2026 20:51:51 +0530 Message-ID: <20260514152204.481115-8-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260514152204.481115-1-sshegde@linux.ibm.com> References: <20260514152204.481115-1-sshegde@linux.ibm.com> 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 X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Authority-Analysis: v=2.4 cv=cPHQdFeN c=1 sm=1 tr=0 ts=6a05e915 cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=NGcC8JguVDcA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=iQ6ETzBq9ecOQQE5vZCe:22 a=VnNF1IyMAAAA:8 a=j9sfLVbiRzlE9PmvVxMA:9 X-Proofpoint-ORIG-GUID: NwBuW-RWtvqcIr20SegexxpyzIS8hFwo X-Proofpoint-GUID: iFywkw3rSGirHwJobKkjxwZds7vhmpy5 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTE0MDE1MyBTYWx0ZWRfX1mBTZJeiUBy/ V+TZCX0hvvl7366b3MfV3uCgTmtur+WHKcPNgQqtBgIy6+D0e6AOvWpS86zpex/vtv3K3j+8oKX o6l9dJDmRlD6lCM3xOzwLGozJmJrrE4qtRpEKWZQXIjDPxJbe78fSRCAVm2jHi0qjuD8BV3xm3J wLXq0jYueQyfKumviPBJ8jd1hNurw4m/hv01WOHAdHNrDqvzn4OVrffstoIZ4zYLawu6OwJL1Q5 cSnmfoDaFabL9pDdGUjKVlnzdZEUbcgINAsevjehdJjngdNKCZ8j/bHbnTxpU5nrMsWAQTHCy/w eIo1fD0e7MWiBVd8+j7AzqEyDUrJXOueSmjA8k/yXt9uxx0PmRb85H+g5Ya6dHatZtt62WFPzdd DmZU3L4VMTFanc5w/eGqi0NNA+AtHPUKatKlLtCC6A7ruRwXfTMIqsLKknvClriCm2gLH8YgR73 W5nvNuUOHOUC/FSePsQ== 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-05-14_03,2026-05-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 bulkscore=0 phishscore=0 clxscore=1015 spamscore=0 impostorscore=0 lowpriorityscore=0 adultscore=0 suspectscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605140153 Content-Type: text/plain; charset="utf-8" Update available_idle_cpu to consider preferred CPUs. This takes care of lot of decisions at wakeup to use only preferred CPUs. There is no need to put those explicit checks everywhere. Only other place where prev_cpu was not preferred and could possibly return was sched_balance_find_dst_cpu. Put the check there. Signed-off-by: Shrikanth Hegde --- kernel/sched/fair.c | 3 ++- kernel/sched/sched.h | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 29fbb5287cfc..a704285ac55a 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -7743,7 +7743,8 @@ static inline int sched_balance_find_dst_cpu(struct s= ched_domain *sd, struct tas { int new_cpu =3D cpu; =20 - if (!cpumask_intersects(sched_domain_span(sd), p->cpus_ptr)) + if (!cpumask_intersects(sched_domain_span(sd), p->cpus_ptr) && + cpu_preferred(prev_cpu)) return prev_cpu; =20 /* diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index faf36bc7bd12..90743b9e5add 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -1418,6 +1418,9 @@ static inline bool available_idle_cpu(int cpu) if (!idle_rq(cpu_rq(cpu))) return 0; =20 + if (!cpu_preferred(cpu)) + return 0; + if (vcpu_is_preempted(cpu)) return 0; =20 --=20 2.47.3 From nobody Fri Jun 12 13:56:07 2026 Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) (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 D4CD842B725 for ; Thu, 14 May 2026 15:24:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.158.5 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772273; cv=none; b=IbNuexSYNdKBepWDa+K4Sps3udGaoBRKvE6LAKbE9YikjyidmIfh2fOMOeziLBGTj75GdHeJUfCc8A3AYtR1aR6+gKUWmljKkYj+3ZrYCXoRskpOVJQqNesXVLhGsgrHkb60wQXL6lQ98rdT/VaBXikLOJgzWXsDle7jCeE/xNo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772273; c=relaxed/simple; bh=aoLM8uGVMRjLxemOwjQOO0u1hcfuLTbf8Avc8HWIIiw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=V5kOCA0yoIodAvIU6/b/MlsTGJTVXFuhCNzr4z0NMIfc342Li8zjg1bPi3PDCIBvrEN/1sJAtn2AN6M6eGFpoCQeAs+WlinkCvOI9jxshDEhQMWZ6yP3IFzAB+qR8oXCP237RADA0tnqtSwa8LJ1M3cbvB3TTvlaC5DFMqiSESg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=l68KyaAF; arc=none smtp.client-ip=148.163.158.5 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="l68KyaAF" Received: from pps.filterd (m0353725.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64E61hgw3776368; Thu, 14 May 2026 15:24:13 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=hYIC5TzNS3LoyrbvH Nm8B7YOP8HmhDz4EvxjSaZttNs=; b=l68KyaAFtLuq82yORzPt/eg4Zf+32e0S0 Dy/WLuvmNy7Oe+RJ6/PTF6dKWLNQY2bLXcJldlE6wtPnn1GpeUniKcqLtT08PK0R JXxqyLo7cIFApCReIGUWYY+g9POEQYbpRxkOuTIVtW3WfRIVApm46h/SLI8eywKT FBCJAsT4+tYAKWD0iTLw/AMnKi+4onJoF7fQdeYkVC0Pdyp69taA/co60WfQCTLJ AoYAUx1gx1qlgTp9HLwRjM0FaXeBG5o0b0+6KkqBMD9sV8CA5c4toBS76Umvxazj tusa+m3DcwsogOwp0inW+KcPWZ/tuvgJ4DNqQO6tXNSgRHaA9paaA== Received: from ppma11.dal12v.mail.ibm.com (db.9e.1632.ip4.static.sl-reverse.com [50.22.158.219]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4e3nv6vh1j-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:24:12 +0000 (GMT) Received: from pps.filterd (ppma11.dal12v.mail.ibm.com [127.0.0.1]) by ppma11.dal12v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 64EF9StB007917; Thu, 14 May 2026 15:24:11 GMT Received: from smtprelay01.fra02v.mail.ibm.com ([9.218.2.227]) by ppma11.dal12v.mail.ibm.com (PPS) with ESMTPS id 4e3nfgmxrm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:24:11 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay01.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 64EFO7vC60817702 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 14 May 2026 15:24:07 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id B151E2004B; Thu, 14 May 2026 15:24:07 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 8142620040; Thu, 14 May 2026 15:24:00 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.124.213.185]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Thu, 14 May 2026 15:24:00 +0000 (GMT) From: Shrikanth Hegde To: linux-kernel@vger.kernel.org, mingo@kernel.org, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, yury.norov@gmail.com, kprateek.nayak@amd.com, iii@linux.ibm.com Cc: sshegde@linux.ibm.com, tglx@kernel.org, gregkh@linuxfoundation.org, pbonzini@redhat.com, seanjc@google.com, vschneid@redhat.com, huschle@linux.ibm.com, rostedt@goodmis.org, dietmar.eggemann@arm.com, mgorman@suse.de, bsegall@google.com, maddy@linux.ibm.com, srikar@linux.ibm.com, hdanton@sina.com, chleroy@kernel.org, vineeth@bitbyteword.org, frederic@kernel.org, arighi@nvidia.com, pauld@redhat.com, christian.loehle@arm.com, tj@kernel.org, tommaso.cucinotta@gmail.com, maz@kernel.org, rafael@kernel.org Subject: [PATCH v3 08/20] sched/fair: load balance only among preferred CPUs Date: Thu, 14 May 2026 20:51:52 +0530 Message-ID: <20260514152204.481115-9-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260514152204.481115-1-sshegde@linux.ibm.com> References: <20260514152204.481115-1-sshegde@linux.ibm.com> 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 X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Authority-Analysis: v=2.4 cv=KbvidwYD c=1 sm=1 tr=0 ts=6a05e91c cx=c_pps a=aDMHemPKRhS1OARIsFnwRA==:117 a=aDMHemPKRhS1OARIsFnwRA==:17 a=NGcC8JguVDcA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=V8glGbnc2Ofi9Qvn3v5h:22 a=VnNF1IyMAAAA:8 a=5ICBfrR2l7P1yX5hQRsA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTE0MDE1MyBTYWx0ZWRfX1E3julhN+G+M t5Ji/WnRsOXiUQLKpUIrennRXo+9L/PIAyaHrFaLX3JHCY0NFfZVIz79WcWlE4HTGFTgk7AuYDR KFrvQdeFX3lP9DWBMHiJgBsMLFXNRsQeVMkpNY9N1lM6YOitn8BAnej7ycn30FCZV3MLq0dyY2N gPRU7fuGV35QBTInqUTcAi4YZO9SP11mjhpBuHwKAn3k6CymEYicVPCAoaY6VIfTJOSMZDBC4u8 4JzxjTr8pk96KBXWP4qzGqiUeun24RdyQ5IxmEG4mEcJymHoUDLxu8Mpnb5WkkTgMWcgDEdcOlo d/06jXomoenGPOYogTitOpxMWNG4C8Oc+9XezhVQyIbRA3VX1+W5+bMGYinQ365wo8mxtj5cRos OY6z4eZvevJMjq5bVk5JYHAuBsYglrv104mijVIK8rRvFB0pxilmXdoeijSknvwwGQq75kGdGcq 5GowkMZw4PCx5ifq+nQ== X-Proofpoint-GUID: ebDrOF06tegTG3nOYh5debUsqXfoMkvP X-Proofpoint-ORIG-GUID: _rOFioNK5S3k0QEsJsU3c2vZVL8DxQpP 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-05-14_03,2026-05-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 bulkscore=0 impostorscore=0 malwarescore=0 lowpriorityscore=0 phishscore=0 spamscore=0 suspectscore=0 clxscore=1015 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605140153 Content-Type: text/plain; charset="utf-8" Consider only preferred CPUs for load balance. With this, load balance will end up choosing a preferred CPUs for pull. This makes it not fight against the push task mechanism which happens at tick. Also, this stops active balance to happen on non-preferred CPU pulling the load. This means there is no load balancing if the task is pinned only to non-preferred CPUs. They will continue to run where they were previously running before the CPUs was marked as non-preferred. Signed-off-by: Shrikanth Hegde --- kernel/sched/fair.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index a704285ac55a..0a851d4b0d7e 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -12087,6 +12087,9 @@ static int sched_balance_rq(int this_cpu, struct rq= *this_rq, =20 cpumask_and(cpus, sched_domain_span(sd), cpu_active_mask); =20 + /* Spread load among preferred CPUs */ + cpumask_and(cpus, cpus, cpu_preferred_mask); + schedstat_inc(sd->lb_count[idle]); =20 redo: --=20 2.47.3 From nobody Fri Jun 12 13:56:07 2026 Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) (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 80FE042B747 for ; Thu, 14 May 2026 15:24:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.158.5 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772276; cv=none; b=CfQ3TifUuzC5oZWD4ZV2gkHcZbFrQt0ZqUZ7+gIrdQdBIXUcqJ1mcewlWUPd6p9nn+lM6tMn971q8I6dCMCJseOiUhwbcNmG3P9EzpdIitEgGU7YazhqA6/DqnDYbWoTsIqslyy2U0OBGHdQPnyvUI9oytYZLVvU6KN3p31DmNc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772276; c=relaxed/simple; bh=YDTLJZzBoG5Qta1WKjoru5sEsKhOZKVj/Rqn+At2Cg0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=chXpGP91c6McCAs6akxKx3ti8ABQrtUakgjMNIFjtecPKKvoUbE4/1MwG8lhsdBeS9rxbc9ZRgvtZNQmMKCN68kAH9zoI3jTxzCqfCF7Q3qLhyKu/3clsy/0w1mOjQXhD7RKUAfpYELX8Ef/31gzLEmHC3FWfJxhWOtTTKzAn5Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=TKA4d4c4; arc=none smtp.client-ip=148.163.158.5 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="TKA4d4c4" Received: from pps.filterd (m0360072.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64E8eXdA2760546; Thu, 14 May 2026 15:24:20 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=xnwxjOtChhOvpxYSa jPEADyvWYdQ+RuaQ13C50Y4BbU=; b=TKA4d4c4zHKCqtQTt0PiGW/2cRcKDKAqk h88t7hHY8w9XqbzFO3Q/V1xW4eYe3XXSzpZ6uKUMAeIe4TdbWX/6QSVH4uMXQUer lUIU/6R2aK7QSwOvI/xFcNR2IiWMpOd6VvNBw3RuFus0sk08kl2jGdhfb9Tx9QxH 7ta1sECoeWUO2vLPIbjqdLQQyA0Ub1hX+2hhpd7opGj+AAJI8+tId2t9gshkZXKr tjpzGdxyqOiQwhD8Wi5qXugB4FqqPUzVfnS4glEKS1QJAJm5bBFC1QJIAVi59Qx2 uZHGTTzFlIt2/BT2dSj1Wlx5lgDpasZj+t9O0B5L71qfvXBG58Iaw== Received: from ppma22.wdc07v.mail.ibm.com (5c.69.3da9.ip4.static.sl-reverse.com [169.61.105.92]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4e3nv6vj1q-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:24:19 +0000 (GMT) Received: from pps.filterd (ppma22.wdc07v.mail.ibm.com [127.0.0.1]) by ppma22.wdc07v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 64EF9Qer012916; Thu, 14 May 2026 15:24:19 GMT Received: from smtprelay02.fra02v.mail.ibm.com ([9.218.2.226]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4e3nfh4yjr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:24:19 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay02.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 64EFOFOc46072266 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 14 May 2026 15:24:15 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 59E4120043; Thu, 14 May 2026 15:24:15 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 228EB20040; Thu, 14 May 2026 15:24:08 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.124.213.185]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Thu, 14 May 2026 15:24:07 +0000 (GMT) From: Shrikanth Hegde To: linux-kernel@vger.kernel.org, mingo@kernel.org, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, yury.norov@gmail.com, kprateek.nayak@amd.com, iii@linux.ibm.com Cc: sshegde@linux.ibm.com, tglx@kernel.org, gregkh@linuxfoundation.org, pbonzini@redhat.com, seanjc@google.com, vschneid@redhat.com, huschle@linux.ibm.com, rostedt@goodmis.org, dietmar.eggemann@arm.com, mgorman@suse.de, bsegall@google.com, maddy@linux.ibm.com, srikar@linux.ibm.com, hdanton@sina.com, chleroy@kernel.org, vineeth@bitbyteword.org, frederic@kernel.org, arighi@nvidia.com, pauld@redhat.com, christian.loehle@arm.com, tj@kernel.org, tommaso.cucinotta@gmail.com, maz@kernel.org, rafael@kernel.org Subject: [PATCH v3 09/20] sched/rt: Select a preferred CPU for wakeup and pulling rt task Date: Thu, 14 May 2026 20:51:53 +0530 Message-ID: <20260514152204.481115-10-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260514152204.481115-1-sshegde@linux.ibm.com> References: <20260514152204.481115-1-sshegde@linux.ibm.com> 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 X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Proofpoint-ORIG-GUID: r-uPNztcsrVTGAGbtMtUb14wg_YPV4q8 X-Proofpoint-GUID: DFMdI8A7NTGI6UMNKH4614DETiddPQow X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTE0MDE1MyBTYWx0ZWRfX3lekjNnrnIxe oQFDpHwO5c2jveaH3Xyhqhsc9eRQ7RwB2cG9L7AF2FeFdfRekTuS4Mb9f1PxU0625Z8p/Ze2RlF KKLU8sEThEedzrvpzenEFnURQ/c6F2dwF1RPXSnuQsMrczMtM25ryeJdHWsILoVQ9h5D15qbiev B0jkEgBpFFYDL0MDEv4h50iRmHLmoB126jVmcrojnUFwOOa025gVQ4jsjdrd7bQXT3lzwrM5cjF 6vk4lRviaecwna2eD5D7O0SK3GTv665/qsEeRCj0QU+/ZW+yVU31j1AfvmoSr/NnR8bBsAxV9Ye ixL52rVDw5UIxyPrhI4fD+9XqrNLTZo/xtaUxkVDduTgHczabTHJ1yGwPnLEylkSx2mE4BBbmqT bdHgDHSFq/QdTkG3PuWcf59uFZYJLQtkm6Okr4IcWOrlE7gDVnb7j6zKQZFJVMrYtnBao+B5NZ3 OeYaRSp2KXG+pHJggbA== X-Authority-Analysis: v=2.4 cv=P8UKQCAu c=1 sm=1 tr=0 ts=6a05e924 cx=c_pps a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==:17 a=NGcC8JguVDcA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=RzCfie-kr_QcCd8fBx8p:22 a=VnNF1IyMAAAA:8 a=TGOP_VNwvARlp5vGIUEA:9 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-05-14_03,2026-05-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 priorityscore=1501 phishscore=0 bulkscore=0 clxscore=1015 malwarescore=0 spamscore=0 lowpriorityscore=0 suspectscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605140153 Content-Type: text/plain; charset="utf-8" For RT class, - During wakeup choose a preferred CPU. - For push_rt framework, limit pushing to preferred CPUs - Pull the rt task only if CPU is preferred. Signed-off-by: Shrikanth Hegde --- kernel/sched/cpupri.c | 1 + kernel/sched/rt.c | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/kernel/sched/cpupri.c b/kernel/sched/cpupri.c index 8f2237e8b484..24eb26ea9a91 100644 --- a/kernel/sched/cpupri.c +++ b/kernel/sched/cpupri.c @@ -103,6 +103,7 @@ static inline int __cpupri_find(struct cpupri *cp, stru= ct task_struct *p, if (lowest_mask) { cpumask_and(lowest_mask, &p->cpus_mask, vec->mask); cpumask_and(lowest_mask, lowest_mask, cpu_active_mask); + cpumask_and(lowest_mask, lowest_mask, cpu_preferred_mask); =20 /* * We have to ensure that we have at least one bit diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c index 4ee8faf01441..62c53f10de24 100644 --- a/kernel/sched/rt.c +++ b/kernel/sched/rt.c @@ -2262,6 +2262,10 @@ static void pull_rt_task(struct rq *this_rq) if (likely(!rt_overload_count)) return; =20 + /* No point in pulling the load, just to push it next tick again */ + if (!cpu_preferred(this_cpu)) + return; + /* * Match the barrier from rt_set_overloaded; this guarantees that if we * see overloaded we must also see the rto_mask bit. --=20 2.47.3 From nobody Fri Jun 12 13:56:07 2026 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (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 0EABF25B0B7 for ; Thu, 14 May 2026 15:24:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.156.1 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772289; cv=none; b=fE1fCc4xCzpWoa+NBMlvlpxzYVcu7lAjjhyL8NAJqYgdqcWyKzHq6v26xFIbxfQEV/IwGbvA6KfNgYGC86gVdiqUaruJWFxfbArAI71w1SwINjmQqEBQHcDfaskmb8tPv+XWwYcQ3xrHe4UBf/QvMmiuAmomYrnGSSF/tNYbv10= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772289; c=relaxed/simple; bh=DB5RPqCrVXKBAC5lmVflLxw/tOq2EH+aiG+u/Tk6iiI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=aX1SJ8H/cgsBc8s7uZYqkS+L3CzERRhiRwx36RxSHSOPMveC+m8E3pmZ0DUePlWf43+kV5EY1dXJeE9lgwFAM40VNtIXflq+T/qPgE1Sz7aNzCVrI2CrNkrgUeMmJenOcFkWmY0uj7OH307VtLNoPdPPbuRdfOdB9hY15K2CH+U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=phDjZTQp; arc=none smtp.client-ip=148.163.156.1 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="phDjZTQp" Received: from pps.filterd (m0353729.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64E8K3pA2608088; Thu, 14 May 2026 15:24:29 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=4NKtUTzKw9qC6Ggcv vJwh7XknIjM79wyecAk8NeGnzs=; b=phDjZTQpoj39uTr+iusfnlvHBZ9P3qcUS tEL7wa+oSKALci4bnet2ppTuM6Drld3SYwoZLuz4/DK/cL/BqKG040oqs/DzTlKH VDgzwM+HZF4rGEalMTeOLacusQ98ezRG55/4BnFBkKMmhRV6yU4EU7BtC5klZRSO BjvHSlxUJ9BwwjPNHEgj9rNhxk/MO1gQfPiHSkIJ9ihbBM3ZhMU60snqpfo0Z4Xj 330WrBYWRo9ykdNWeYRcKdBcLggiSYAXMgZ4Ckc4xvWKrtwItxJa6vYw+h689/P0 wbjzbmh9nR2Rfci3zwlo6Zx85SQKpZPkhyjc2XwwXQZohnvJ5evog== Received: from ppma23.wdc07v.mail.ibm.com (5d.69.3da9.ip4.static.sl-reverse.com [169.61.105.93]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4e3nv5d4a0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:24:28 +0000 (GMT) Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 64EF9PaQ002119; Thu, 14 May 2026 15:24:27 GMT Received: from smtprelay05.fra02v.mail.ibm.com ([9.218.2.225]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4e3nfgvw23-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:24:27 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay05.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 64EFONu140305066 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 14 May 2026 15:24:23 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 6102820043; Thu, 14 May 2026 15:24:23 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id BE92920040; Thu, 14 May 2026 15:24:15 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.124.213.185]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Thu, 14 May 2026 15:24:15 +0000 (GMT) From: Shrikanth Hegde To: linux-kernel@vger.kernel.org, mingo@kernel.org, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, yury.norov@gmail.com, kprateek.nayak@amd.com, iii@linux.ibm.com Cc: sshegde@linux.ibm.com, tglx@kernel.org, gregkh@linuxfoundation.org, pbonzini@redhat.com, seanjc@google.com, vschneid@redhat.com, huschle@linux.ibm.com, rostedt@goodmis.org, dietmar.eggemann@arm.com, mgorman@suse.de, bsegall@google.com, maddy@linux.ibm.com, srikar@linux.ibm.com, hdanton@sina.com, chleroy@kernel.org, vineeth@bitbyteword.org, frederic@kernel.org, arighi@nvidia.com, pauld@redhat.com, christian.loehle@arm.com, tj@kernel.org, tommaso.cucinotta@gmail.com, maz@kernel.org, rafael@kernel.org Subject: [PATCH v3 10/20] sched/core: Keep tick on non-preferred CPUs until tasks are out Date: Thu, 14 May 2026 20:51:54 +0530 Message-ID: <20260514152204.481115-11-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260514152204.481115-1-sshegde@linux.ibm.com> References: <20260514152204.481115-1-sshegde@linux.ibm.com> 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 X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTE0MDE1MyBTYWx0ZWRfX2R6QYtiXu7cx 6PSbmZtMjMQ0KKwsft61NgFsJi49Dq8GJfcVVA//Bo3cFq/ATeC+3+zAJkvLp5ErMaHYYOwkgeC 3YwU3TFmi6hOiSXSu8aAt+oi4UjP05tBG25undYKHHgk7A+Gc2tP+pnbOmfhh++6DrPw3PgL+Qv pbK2FRHW3udLIvBevXmRGIzLKGtWRBmc9hvrJ8akxy+6H96Niuo3N8TwmybS3ZU+wRVnyemk4QL 8lPFcbGzn8f1WMT7kxWxcJ9SSwUDRgR6YK7D2GGHAxEGefOBHBigh1moZbr6QLZquMxKATLi9Tx uxNWKbvkpZ3VSKHn11g97VdvtPWP5UhUz6ArlyL7cO4dpCBYo+09eenWY9EE38VQ8Dl0DJ7dR76 SdDRLdYKK2Pr5kHK9d+OB3yQxXBLE9Ki2C8OU67bFC+ewp5XAm+FnoDhTP1yQdIQRPtdSF0OO2p mfgIA7ONUQ/ogl8Csvg== X-Proofpoint-ORIG-GUID: apwbAT36qg0xZdX8eV9aXCRV2gF2s6mZ X-Authority-Analysis: v=2.4 cv=Jc6Ma0KV c=1 sm=1 tr=0 ts=6a05e92d cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=NGcC8JguVDcA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=uAbxVGIbfxUO_5tXvNgY:22 a=VnNF1IyMAAAA:8 a=QWx9vYyWXuU5Gb4Iy2kA:9 X-Proofpoint-GUID: nmh802J1SknqAxEXRQDCQNtv0Qgv0xNf 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-05-14_03,2026-05-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 priorityscore=1501 malwarescore=0 bulkscore=0 clxscore=1015 phishscore=0 adultscore=0 lowpriorityscore=0 suspectscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605140153 Content-Type: text/plain; charset="utf-8" Enable tick on nohz full CPU when it is marked as non-preferred. If there in no CFS/RT running there, disable the tick to save the power. Steal time handling code will call tick_nohz_dep_set_cpu with TICK_DEP_BIT_SCHED for moving the task out of nohz_full CPU fast. Signed-off-by: Shrikanth Hegde --- kernel/sched/core.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 292d4e7db0fd..86fa4bfaead0 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -1420,6 +1420,10 @@ bool sched_can_stop_tick(struct rq *rq) if (rq->dl.dl_nr_running) return false; =20 + /* Keep the tick running until both RT and CFS are pushed out*/ + if (!cpu_preferred(rq->cpu) && (rq->rt.rt_nr_running || rq->cfs.h_nr_queu= ed)) + return false; + /* * If there are more than one RR tasks, we need the tick to affect the * actual RR behaviour. --=20 2.47.3 From nobody Fri Jun 12 13:56:07 2026 Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) (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 A559B31ED7C for ; Thu, 14 May 2026 15:24:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.158.5 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772295; cv=none; b=oYuBG0eEhtPmqIj8TwuAaMltthU3EUPYuAgm74dN58SxwDYRa+UX1+Ds7Iia2TL3dC2xm2okcA3DUmPWg7OnaJnQY4YKWpjULJy5eb8tLGsw0g8Yw1aAZ3rO948YfMOEWwWLwIjX29UPcFpn/DhA/clRLEp50q6yA/hpillyMT8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772295; c=relaxed/simple; bh=hgy+3ZiDjdqxN8cuejdMSyZahxxxGz3Kg0WJEqYZeP8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=q2FVSiOSbWfYCQJxpifYh6j5y3HdVaFexCSBOrHIePwrKGdgEEzWjjZuuHGCbo7viAuYCubCHDlDmZwrzagtQen03JmElQ1q61m1h58mVt2p5xCSr0pUuGsXyx2mcBTteBDcyShYjyfJBMnpwDdykesMpeVQlUXsyHGAeEQ2yqk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=MQp0FNAw; arc=none smtp.client-ip=148.163.158.5 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="MQp0FNAw" Received: from pps.filterd (m0356516.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64E9WOGb3178621; Thu, 14 May 2026 15:24:37 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=dac8C0mDbvJmUm7fm PAMctVFX35zhHm+Z0V++2GVJwk=; b=MQp0FNAwIZGHetCr4MtDOZRCfMHhaklYr MSMPnSHEghKVMhYEaQ0I/eEFAqW7TLS0PP9SfXrK5q6lOi8iMF+f/jk+jpEjypN1 eaBfOCsm5Y42/qHKJeJGjZhAYfKTBSGiNvkWgJF/m45OS6OLPSy+NMrmi1ZnOHT9 5HnVTx64C6PXaxV0BEZKFO/Wd5WnHB5/kyKcrLgEM6c+xrnMjhs+mMgpf/JYsuAL x0ddPuJBebusyZ1kHhJNbF50/uuT/v2h3RBMnVXKsVAsiVB9CekcVJbruHInmbHT DsmWBofEI9Kfd7vTonhx2OmbJM1U6PPUib+AVqWKgkZMMKrh4HM/g== Received: from ppma12.dal12v.mail.ibm.com (dc.9e.1632.ip4.static.sl-reverse.com [50.22.158.220]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4e3nv6vgwv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:24:36 +0000 (GMT) Received: from pps.filterd (ppma12.dal12v.mail.ibm.com [127.0.0.1]) by ppma12.dal12v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 64EF9QkV002913; Thu, 14 May 2026 15:24:35 GMT Received: from smtprelay07.fra02v.mail.ibm.com ([9.218.2.229]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 4e3nfgmxa0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:24:35 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay07.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 64EFOW6E28443032 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 14 May 2026 15:24:32 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id EA7092004D; Thu, 14 May 2026 15:24:31 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id C5A9D20040; Thu, 14 May 2026 15:24:23 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.124.213.185]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Thu, 14 May 2026 15:24:23 +0000 (GMT) From: Shrikanth Hegde To: linux-kernel@vger.kernel.org, mingo@kernel.org, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, yury.norov@gmail.com, kprateek.nayak@amd.com, iii@linux.ibm.com Cc: sshegde@linux.ibm.com, tglx@kernel.org, gregkh@linuxfoundation.org, pbonzini@redhat.com, seanjc@google.com, vschneid@redhat.com, huschle@linux.ibm.com, rostedt@goodmis.org, dietmar.eggemann@arm.com, mgorman@suse.de, bsegall@google.com, maddy@linux.ibm.com, srikar@linux.ibm.com, hdanton@sina.com, chleroy@kernel.org, vineeth@bitbyteword.org, frederic@kernel.org, arighi@nvidia.com, pauld@redhat.com, christian.loehle@arm.com, tj@kernel.org, tommaso.cucinotta@gmail.com, maz@kernel.org, rafael@kernel.org Subject: [PATCH v3 11/20] sched/core: Push current task from non preferred CPU Date: Thu, 14 May 2026 20:51:55 +0530 Message-ID: <20260514152204.481115-12-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260514152204.481115-1-sshegde@linux.ibm.com> References: <20260514152204.481115-1-sshegde@linux.ibm.com> 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 X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Authority-Analysis: v=2.4 cv=Us1T8ewB c=1 sm=1 tr=0 ts=6a05e935 cx=c_pps a=bLidbwmWQ0KltjZqbj+ezA==:117 a=bLidbwmWQ0KltjZqbj+ezA==:17 a=NGcC8JguVDcA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=Y2IxJ9c9Rs8Kov3niI8_:22 a=VnNF1IyMAAAA:8 a=t2TxufUTn63SgxZdg_oA:9 X-Proofpoint-GUID: O2tym8StsBQ1Iex0bYhDB2GYXHPi0DL0 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTE0MDE1MyBTYWx0ZWRfX6AveXdWqq5ye uh+UeVGi5Jl+b89WS0qoRpeRcMn9mqJAs6CRjqa+1So8mv9xj5R90BZTJuqK9o/xXHJGbzr7QKb TygWhqVZEYuTn2zDz1tNK5aiAMrWA9/h6HLTaI69MXZUkY7eUx21jrCUkekcGz8wE8PrzNEHNfd TruTadme8p9QSHkfJAt7Dd9WGYwcs28DnlEB8jlrxqWT3s0hr9Dkv3Bl1gnELVClPHIPeWqYtqC AtNdSyJ43KhtD2bPQgN70qa+246l0hB8vOvfbiyKVPpB1nZnO1bWMGkhmtL8ulAJeHtKAicPrSz Es5H4g9xqUJZmHudQ/WocXlSKdkAaQOayQZs35H6NircSftKmOYX5e+l2T9spnP3Yckz95EVZ9O PYicDZ/FyEukYZB92Kn0ZJ5fP5poE6roq3Cr6/4MCOQM+0BR2JrtJ+rb7mhUiIIZtebCdfJ0GXM /PQ5YRXH8v4VtaP/uMg== X-Proofpoint-ORIG-GUID: ul84zmTeJtXUctUo_m-u8TIDdfEfBr0N 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-05-14_03,2026-05-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 priorityscore=1501 impostorscore=0 lowpriorityscore=0 bulkscore=0 suspectscore=0 spamscore=0 malwarescore=0 clxscore=1015 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605140153 Content-Type: text/plain; charset="utf-8" Actively push out task running on a non-preferred CPU. Since the task is running on the CPU, need to stop the cpu and push the task out. However, if the task in pinned only to non-preferred CPUs, it will continue running there. This will help in maintaining the userspace affinities unlike CPU hotplug or isolated cpusets. Though code is almost same as __balance_push_cpu_stop and quite close to push_cpu_stop, it is being kept separate as it provides a cleaner implementation w.r.t CONFIG_HOTPLUG_CPU. Add push_task_work_done flag to protect work buffer. Works for all classes. Best results today with FAIR/RT. Signed-off-by: Shrikanth Hegde --- kernel/sched/core.c | 87 ++++++++++++++++++++++++++++++++++++++++++++ kernel/sched/sched.h | 7 ++++ 2 files changed, 94 insertions(+) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 86fa4bfaead0..508773e71929 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -5678,6 +5678,9 @@ void sched_tick(void) unsigned long hw_pressure; u64 resched_latency; =20 + if (!cpu_preferred(cpu)) + sched_push_current_non_preferred_cpu(rq); + if (housekeeping_cpu(cpu, HK_TYPE_KERNEL_NOISE)) arch_scale_freq_tick(); =20 @@ -11263,3 +11266,87 @@ void sched_change_end(struct sched_change_ctx *ctx) p->sched_class->prio_changed(rq, p, ctx->prio); } } + +#ifdef CONFIG_PREFERRED_CPU +/* npc - non preferred CPU */ +static DEFINE_PER_CPU(struct cpu_stop_work, npc_push_task_work); + +static int sched_non_preferred_cpu_push_stop(void *arg) +{ + struct task_struct *p =3D arg; + struct rq *rq =3D this_rq(); + struct rq_flags rf; + int cpu; + + raw_spin_lock_irq(&p->pi_lock); + rq_lock(rq, &rf); + rq->push_task_work_done =3D 0; + + update_rq_clock(rq); + + if (task_rq(p) =3D=3D rq && task_on_rq_queued(p)) { + cpu =3D select_fallback_rq(rq->cpu, p); + rq =3D __migrate_task(rq, &rf, p, cpu); + } + + rq_unlock(rq, &rf); + raw_spin_unlock_irq(&p->pi_lock); + put_task_struct(p); + + return 0; +} + +/* + * Push the current task running on non-preferred CPU. + * Using this non preferred CPU will lead to more vCPU preemptions + * in the host. So it is better not to use this CPU. + * + * Since task is running, call a stopper to push the task out. This is + * similar to how task moves during hotplug. In select_fallback_rq a + * preferred CPU will be chosen and henceforth task shouldn't come back to + * this CPU again. + * + * Works for FAIR/RT class only + * + * If task is affined only non-preferred CPUs, it can't be moved out + */ +void sched_push_current_non_preferred_cpu(struct rq *rq) +{ + struct task_struct *push_task =3D rq->curr; + unsigned long flags; + struct rq_flags rf; + + /* sanity check */ + if (cpu_preferred(rq->cpu)) + return; + + /* Push only if it is FAIR/RT class */ + if (push_task->sched_class !=3D &fair_sched_class && + push_task->sched_class !=3D &rt_sched_class) + return; + + if (kthread_is_per_cpu(push_task) || + is_migration_disabled(push_task)) + return; + + /* Is there any preferred CPU in the affinity list */ + if (!task_has_preferred_cpus(push_task)) + return; + + /* There is already a stopper thread for this. Dont race with it */ + if (rq->push_task_work_done =3D=3D 1) + return; + + local_irq_save(flags); + + get_task_struct(push_task); + + rq_lock(rq, &rf); + rq->push_task_work_done =3D 1; + rq_unlock(rq, &rf); + + stop_one_cpu_nowait(rq->cpu, sched_non_preferred_cpu_push_stop, + push_task, this_cpu_ptr(&npc_push_task_work)); + local_irq_restore(flags); +} +#endif diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index 90743b9e5add..96870021a842 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -1244,6 +1244,7 @@ struct rq { =20 unsigned char nohz_idle_balance; unsigned char idle_balance; + bool push_task_work_done; =20 unsigned long misfit_task_load; =20 @@ -4138,4 +4139,10 @@ static inline bool task_has_preferred_cpus(struct ta= sk_struct *p) return cpumask_intersects(p->cpus_ptr, cpu_preferred_mask); } =20 +#ifdef CONFIG_PREFERRED_CPU +void sched_push_current_non_preferred_cpu(struct rq *rq); +#else /* !CONFIG_PREFERRED_CPU */ +static inline void sched_push_current_non_preferred_cpu(struct rq *rq) { } +#endif + #endif /* _KERNEL_SCHED_SCHED_H */ --=20 2.47.3 From nobody Fri Jun 12 13:56:07 2026 Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) (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 4DCDF3A0E8A for ; Thu, 14 May 2026 15:25:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.158.5 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772303; cv=none; b=lAzmg3sKs8qt1OnzRzxt9yojXTRWPZiCa15KW3dOppAYJ+WFmuN7kXM4a/oKqeBQ3nuGBVqVUUdXS68VdC7Q4qJGr6g1nJPW5XXTkvEYeIpdYInRO4rS604rPz2QnaQKqQeFbzhhzxQ9eL+siebD9QDXlRZVrNjKJm/QUIMXxbE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772303; c=relaxed/simple; bh=5bfZvsk7AnfNsCosJoTuAX2dzjv7ThEs3Dh+tj9zrdU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Ik7zLvBA7JvAj5KvjhGw+yYulFbAL27T/MRrGpA7XVOo8HrnD001lmjs82TkkNTM+XLMIVqe3TeZAxPVNq+NJ89dnW0GDql/jrGpM3LRl+4D1sxhKDi9ycG69QJFzxVHaYZmei6qJC/d6QQcX4Y/Vm+coryJPzbK5oRc/rQ876A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=ViZvp1OE; arc=none smtp.client-ip=148.163.158.5 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="ViZvp1OE" Received: from pps.filterd (m0360072.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64E87o532759839; Thu, 14 May 2026 15:24:45 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=0QgkZC6ehpnTn9ilU aJRWJ1W5NUevTQ4tb4bR0ElnS4=; b=ViZvp1OEPyD19QTUywmTRYDf/w7uJWd89 LEfXH+wgRjEcfFy2FIl7CY1G3q1bWeMrzn/nCBH6jiOdCo+uq77plc5nHRjKxIIn PqelicfYSBp7M+YgMGQTcZKmCZyiRXRw5sBAFNcbKJKiLdiKyo/FWM/Duuo9kKrN u+HO8kh/EmEwNbFGS4EHji2r1SOJyeXs7oFZAiSTbEQcFtnktY0q744ugc/Pu9xL 0Q3IzF6SLi+n0PCjtS9f2aOHklK61lmP1EZ2sP7wNZc3hbJmPmtPanmFcG0rqH1h ubqPkWayFw/C0ead+GY/w1yOrWfh9sGWzxpztgcINAUu8gAvNbAGw== Received: from ppma11.dal12v.mail.ibm.com (db.9e.1632.ip4.static.sl-reverse.com [50.22.158.219]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4e3nv6vj5e-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:24:44 +0000 (GMT) Received: from pps.filterd (ppma11.dal12v.mail.ibm.com [127.0.0.1]) by ppma11.dal12v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 64EF9gJr008419; Thu, 14 May 2026 15:24:43 GMT Received: from smtprelay03.fra02v.mail.ibm.com ([9.218.2.224]) by ppma11.dal12v.mail.ibm.com (PPS) with ESMTPS id 4e3nfgmxvs-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:24:43 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay03.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 64EFOe2m41877986 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 14 May 2026 15:24:40 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 23B742004B; Thu, 14 May 2026 15:24:40 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 7223D20040; Thu, 14 May 2026 15:24:32 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.124.213.185]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Thu, 14 May 2026 15:24:32 +0000 (GMT) From: Shrikanth Hegde To: linux-kernel@vger.kernel.org, mingo@kernel.org, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, yury.norov@gmail.com, kprateek.nayak@amd.com, iii@linux.ibm.com Cc: sshegde@linux.ibm.com, tglx@kernel.org, gregkh@linuxfoundation.org, pbonzini@redhat.com, seanjc@google.com, vschneid@redhat.com, huschle@linux.ibm.com, rostedt@goodmis.org, dietmar.eggemann@arm.com, mgorman@suse.de, bsegall@google.com, maddy@linux.ibm.com, srikar@linux.ibm.com, hdanton@sina.com, chleroy@kernel.org, vineeth@bitbyteword.org, frederic@kernel.org, arighi@nvidia.com, pauld@redhat.com, christian.loehle@arm.com, tj@kernel.org, tommaso.cucinotta@gmail.com, maz@kernel.org, rafael@kernel.org Subject: [PATCH v3 12/20] sched/debug: Add migration stats due to non preferred CPUs Date: Thu, 14 May 2026 20:51:56 +0530 Message-ID: <20260514152204.481115-13-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260514152204.481115-1-sshegde@linux.ibm.com> References: <20260514152204.481115-1-sshegde@linux.ibm.com> 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 X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Proofpoint-ORIG-GUID: 3eTLqQqSJl2KQHQKdPwJfLFLBrFLx_v8 X-Proofpoint-GUID: Z4GjLyej7u2G24cvm52iak5ZvehzZAOM X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTE0MDE1MyBTYWx0ZWRfXxndfJ1aUOe+R 0K6cl+GUlUtP9pShBD30QrOclSiLkcwiwdVPVv69oIt7PixsLa9bMnBR6RgaDhgAZFlDAdMD3Z1 8+o6fIznvbIZRWKjgg7akqwlSyLadWfw+2dSN3jGblydzBPVk4WG4gZrH8J7npD8qdEy0PeBztc k2QRcdtjLDy3hcSqLnm+rBCbWg/wIlqqlq7QcFDiv6z43oD5sGS2oVlyrXvDEHUzlH5h8uQg8Ow D4XjP08u/sDD9uBZ7DgDYmpDzRlwkS7L3Ay5yFOMdJOmhmrSrAJ2HqbN58NIV8dGj6Om864FV9Q FuJuLo2iXEDHogCObclubQ4GIlVYqnC3WjSniHA2DVNB78rvnO/m4+RcOliKrcY0qJU5vdmgYmk g0BI77lJjTAGrBhDoILzdm5mJWpas0zhLtnJtPY3TexzlalefMs8x6INdi/R39NPnnuU9fpVZ8y iHB3qJkI2CU7jwUQbew== X-Authority-Analysis: v=2.4 cv=P8UKQCAu c=1 sm=1 tr=0 ts=6a05e93d cx=c_pps a=aDMHemPKRhS1OARIsFnwRA==:117 a=aDMHemPKRhS1OARIsFnwRA==:17 a=NGcC8JguVDcA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=RzCfie-kr_QcCd8fBx8p:22 a=VnNF1IyMAAAA:8 a=-i9lZGrASMRMKgkbeRgA:9 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-05-14_03,2026-05-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 priorityscore=1501 phishscore=0 bulkscore=0 clxscore=1015 malwarescore=0 spamscore=0 lowpriorityscore=0 suspectscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605140153 Content-Type: text/plain; charset="utf-8" Add new stats. - nr_migrations_cpu_non_preferred: number of migrations happened since a CPU was marked as non preferred due to high steal time. Signed-off-by: Shrikanth Hegde --- include/linux/sched.h | 1 + kernel/sched/core.c | 1 + kernel/sched/debug.c | 1 + 3 files changed, 3 insertions(+) diff --git a/include/linux/sched.h b/include/linux/sched.h index 2c3ad3e0edb5..dcfb57c90850 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -554,6 +554,7 @@ struct sched_statistics { u64 nr_failed_migrations_running; u64 nr_failed_migrations_hot; u64 nr_forced_migrations; + u64 nr_migrations_cpu_non_preferred; =20 u64 nr_wakeups; u64 nr_wakeups_sync; diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 508773e71929..0d1995c65ce6 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -11287,6 +11287,7 @@ static int sched_non_preferred_cpu_push_stop(void *= arg) if (task_rq(p) =3D=3D rq && task_on_rq_queued(p)) { cpu =3D select_fallback_rq(rq->cpu, p); rq =3D __migrate_task(rq, &rf, p, cpu); + schedstat_inc(p->stats.nr_migrations_cpu_non_preferred); } =20 rq_unlock(rq, &rf); diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c index f8a43fc13564..482c86a0ff80 100644 --- a/kernel/sched/debug.c +++ b/kernel/sched/debug.c @@ -1305,6 +1305,7 @@ void proc_sched_show_task(struct task_struct *p, stru= ct pid_namespace *ns, P_SCHEDSTAT(nr_failed_migrations_running); P_SCHEDSTAT(nr_failed_migrations_hot); P_SCHEDSTAT(nr_forced_migrations); + P_SCHEDSTAT(nr_migrations_cpu_non_preferred); P_SCHEDSTAT(nr_wakeups); P_SCHEDSTAT(nr_wakeups_sync); P_SCHEDSTAT(nr_wakeups_migrate); --=20 2.47.3 From nobody Fri Jun 12 13:56:07 2026 Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) (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 0F5233A0E8A for ; Thu, 14 May 2026 15:25:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.158.5 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772314; cv=none; b=aNicGqO9+81yD3sNFsaD8pwe5pT9/d+/VumR6fEgAExyyxYE5CYfou4JI74J0NBWLtNfaXtDF+jmsmPi9jBJjWJvd6jO6q+XjVbPn6/g+6lldRv+eGaBZS2Uwftdsq+B+f+Jp2c09tR1fWa0T5bDzvXEf0VibnSPYG7VC9mPMJQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772314; c=relaxed/simple; bh=dhrSC6BcoyoQKA07ZKFzy0VQhbjNrsQef6CqiyemCJM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=n2F/vk+Dr6M95VlZYdTz/V+B1bStJ6bu03LLRPVpykJq11K3IgoAW4gi0f3tzCxAvTPXi8AtpgjEC9QRwl2/b0adXIIPuR614ZN1e+ESr6Mq3VB/mvPxzBgX54gnsX8l7o+hwEB/t+eq9UvaLSzDoOqVxPwyuLUKR2jRnSDzrXI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=s3d4RNNP; arc=none smtp.client-ip=148.163.158.5 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="s3d4RNNP" Received: from pps.filterd (m0360072.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64E8nnww2760071; Thu, 14 May 2026 15:24:54 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=ueLoDMh/ueefd0uWS OomzHeJ5iJ6JKDSW5JJ2mU6p5Q=; b=s3d4RNNP82cYzBxZnU1WRbQ8+V6+tKHJE J9Ptvi8T+PiBiv2rGPvWhIF9LRUR/sCHnvf1P6zDaUPymcz9xtPjAZDCkTQuLXhc 1f+93upf9z06mkbfHaiC5QKIfIXc7FJtynaD0JPmez2o4Vq+vog6ucLDhj4AEJiq 2GL2apgoGlyN+TTiEWl/3nYKMydwOL8eEx0eC/DW6ZAKFgYuWec7Uy6A7bPv52+L IERIb4hXtDUmRnbbuhKe42IgpQLRADAOcge5dgrZ60exohhxK54QkF+5RtIeATcT b2rP3DSbanh9rlv2+XoADd/xI0u9fMmgzJh59e4BL52YyPWIl17rw== Received: from ppma21.wdc07v.mail.ibm.com (5b.69.3da9.ip4.static.sl-reverse.com [169.61.105.91]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4e3nv6vj69-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:24:53 +0000 (GMT) Received: from pps.filterd (ppma21.wdc07v.mail.ibm.com [127.0.0.1]) by ppma21.wdc07v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 64EF9TeR024303; Thu, 14 May 2026 15:24:52 GMT Received: from smtprelay04.fra02v.mail.ibm.com ([9.218.2.228]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4e3nfgvxt9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:24:52 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay04.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 64EFOm3g31523390 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 14 May 2026 15:24:48 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 9EFFE20043; Thu, 14 May 2026 15:24:48 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id A103E20040; Thu, 14 May 2026 15:24:40 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.124.213.185]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Thu, 14 May 2026 15:24:40 +0000 (GMT) From: Shrikanth Hegde To: linux-kernel@vger.kernel.org, mingo@kernel.org, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, yury.norov@gmail.com, kprateek.nayak@amd.com, iii@linux.ibm.com Cc: sshegde@linux.ibm.com, tglx@kernel.org, gregkh@linuxfoundation.org, pbonzini@redhat.com, seanjc@google.com, vschneid@redhat.com, huschle@linux.ibm.com, rostedt@goodmis.org, dietmar.eggemann@arm.com, mgorman@suse.de, bsegall@google.com, maddy@linux.ibm.com, srikar@linux.ibm.com, hdanton@sina.com, chleroy@kernel.org, vineeth@bitbyteword.org, frederic@kernel.org, arighi@nvidia.com, pauld@redhat.com, christian.loehle@arm.com, tj@kernel.org, tommaso.cucinotta@gmail.com, maz@kernel.org, rafael@kernel.org Subject: [PATCH v3 13/20] sched/debug: Create debugfs folder steal_monitor Date: Thu, 14 May 2026 20:51:57 +0530 Message-ID: <20260514152204.481115-14-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260514152204.481115-1-sshegde@linux.ibm.com> References: <20260514152204.481115-1-sshegde@linux.ibm.com> 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 X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Proofpoint-ORIG-GUID: jF2jqTTMDpaDSrJAkaQH1XOWBlm1qgDr X-Proofpoint-GUID: RdWtgBXt6yYFuAB04A8OKjmYbvd3tPPG X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTE0MDE1MyBTYWx0ZWRfX3rl0A6X7C7FB hBwZ+OGxOoj6jgegK59brQEXJcIhw5Mm8pTvh2AQQe5WAj/R7ti6kj0W4svwJu/W9Xag5fSdOxz UtgiiMmWRoKxU5RA8eUgIDYcCoxdh0rt0wnl25YM8Q4b5Rsw3sfCRmfY+adq/SvxUqgxoFqJ0aH M+7FEhEh0JqZE3Kxv7R6Bq9BP5vr6hA4q3DtuNAb4Sl42cpFdEPLATuXzMa+fTEHcgOhwpzHWYl SfzSc2cijO0yC3eIRoy8EPR0Dq9fEw6uKQ2F7CCq3KIWHblUpoDB4t7r70nrastDWcG/6UUCDN9 AHdjxh1uerkLBT4py5zcg33bV7aXeJij/VE00rGwEL8HJxP9FG2U17bNpfN7lquo5a/uw8mjr7P kWgqqXDxqn1z+uPo65WPzaK7+62iGf1dJDG55ucQeHQg5q6rLpFDiNBxbAz4GaNTNvfF3B3CSAc NjOB+meeETxbTA/JT3Q== X-Authority-Analysis: v=2.4 cv=P8UKQCAu c=1 sm=1 tr=0 ts=6a05e945 cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=NGcC8JguVDcA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=RzCfie-kr_QcCd8fBx8p:22 a=VnNF1IyMAAAA:8 a=Wx6S8-2tUkkEJfYxAh0A:9 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-05-14_03,2026-05-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 priorityscore=1501 phishscore=0 bulkscore=0 clxscore=1015 malwarescore=0 spamscore=0 lowpriorityscore=0 suspectscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605140153 Content-Type: text/plain; charset="utf-8" Create a debugfs folder called steal_monitor in /sys/kernel/debug/sched This is going to host debugfs knobs needed for generic steal monitor that will be introduced in subsequent patches. Signed-off-by: Shrikanth Hegde --- kernel/sched/debug.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c index 482c86a0ff80..b1abfdc168bf 100644 --- a/kernel/sched/debug.c +++ b/kernel/sched/debug.c @@ -591,6 +591,17 @@ static void debugfs_ext_server_init(void) } #endif /* CONFIG_SCHED_CLASS_EXT */ =20 +#ifdef CONFIG_PREFERRED_CPU +static void sched_steal_monitor_debugfs_init(void) +{ + struct dentry __maybe_unused *sm; + + sm =3D debugfs_create_dir("steal_monitor", debugfs_sched); + if (!sm) + return; +} +#endif + static __init int sched_init_debug(void) { struct dentry __maybe_unused *numa; @@ -632,6 +643,9 @@ static __init int sched_init_debug(void) #ifdef CONFIG_SCHED_CLASS_EXT debugfs_ext_server_init(); #endif +#ifdef CONFIG_PREFERRED_CPU + sched_steal_monitor_debugfs_init(); +#endif =20 return 0; } --=20 2.47.3 From nobody Fri Jun 12 13:56:07 2026 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (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 8D24D341ADD for ; Thu, 14 May 2026 15:25:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.156.1 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772328; cv=none; b=ccmSwh34I4hrUTk8a3x/rJoF/bIua5gke/cFv4YaRRe9/wQLwWLmj/TDwWKlSN6xh5JnWpTRjUdoaQqqZRYfANcuspGsxTiHTI0aeUDoEBUF0wcxkohBjuSlbsXx5ozFxV6gdsHL5FqNn4+D24QM5a6JaQeusPCoOGatEuG6X/s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772328; c=relaxed/simple; bh=ZqKMTCfJLNbGI/XUu6KnD5Pw1zHHMh3KVKpykjbutlU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=XuOiSFopzGz7os7erUKv24drdAC/NKZKMcsQzGhtL303IKgH00FFjeQ9LoWnxAoGDVdRtpHlP6z1cSYbI74ZMG7xt0WQFSV4CUP7k56bTeCSVZ8lPLIpm4r8gxn0ii3h4P4tS1N68/HjdmvyvvvuIfppvrKzudlpzudVx3HOSos= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=DhVz+GHr; arc=none smtp.client-ip=148.163.156.1 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="DhVz+GHr" Received: from pps.filterd (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64E9PdZ92826335; Thu, 14 May 2026 15:25:03 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=AZNzf4p9MR1x1zu6u yuTE9bnp4vRz1KW/w/b9qS33bU=; b=DhVz+GHragMrZ8M+Nr6uknACDpIZ3PyAG UMGV7wUJ+lGaNTyDo2D7CmgeMU4mAZFKVxXMpUCVoB2gyecr8+YgNaABuJMLrTa+ LkLmhWWhpFSr15TlhFGFI4X2JiFpnYPH/JvOWs1O55Y2BHOnIqyMFGorS07FkALb hzmNHY6J0jHre26UTTUerMjmRhH6g39+eeWL1tFnMiGnmcEJB8R+EC5JatGcjQDI e4ihxIpfAAPDhXHp8Ex49maPcHqCIIINJc/RGxSJtdndzI/8vvP9WWaBXmYVPt4l suT6DimqnM4t/XqH/KnQIBNVUc9XhNSxhKJXY3R9u9yc4TWHdbOzg== Received: from ppma23.wdc07v.mail.ibm.com (5d.69.3da9.ip4.static.sl-reverse.com [169.61.105.93]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4e3nve54kh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:25:02 +0000 (GMT) Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 64EF9arH002642; Thu, 14 May 2026 15:25:01 GMT Received: from smtprelay02.fra02v.mail.ibm.com ([9.218.2.226]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4e3nfgvw6g-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:25:01 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay02.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 64EFOvjc46072158 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 14 May 2026 15:24:57 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id A1B5E20043; Thu, 14 May 2026 15:24:57 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 29E4220040; Thu, 14 May 2026 15:24:49 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.124.213.185]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Thu, 14 May 2026 15:24:48 +0000 (GMT) From: Shrikanth Hegde To: linux-kernel@vger.kernel.org, mingo@kernel.org, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, yury.norov@gmail.com, kprateek.nayak@amd.com, iii@linux.ibm.com Cc: sshegde@linux.ibm.com, tglx@kernel.org, gregkh@linuxfoundation.org, pbonzini@redhat.com, seanjc@google.com, vschneid@redhat.com, huschle@linux.ibm.com, rostedt@goodmis.org, dietmar.eggemann@arm.com, mgorman@suse.de, bsegall@google.com, maddy@linux.ibm.com, srikar@linux.ibm.com, hdanton@sina.com, chleroy@kernel.org, vineeth@bitbyteword.org, frederic@kernel.org, arighi@nvidia.com, pauld@redhat.com, christian.loehle@arm.com, tj@kernel.org, tommaso.cucinotta@gmail.com, maz@kernel.org, rafael@kernel.org Subject: [PATCH v3 14/20] sched/debug: Provide debugfs to enable/disable steal monitor Date: Thu, 14 May 2026 20:51:58 +0530 Message-ID: <20260514152204.481115-15-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260514152204.481115-1-sshegde@linux.ibm.com> References: <20260514152204.481115-1-sshegde@linux.ibm.com> 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 X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Authority-Analysis: v=2.4 cv=Y/XIdBeN c=1 sm=1 tr=0 ts=6a05e94f cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=NGcC8JguVDcA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=U7nrCbtTmkRpXpFmAIza:22 a=VnNF1IyMAAAA:8 a=AGdzPjPON9MHgwMSPg0A:9 X-Proofpoint-GUID: wSIvUvqChgeaExC_VlS1LTL5f6-lVF6R X-Proofpoint-ORIG-GUID: enEnf4L6FM09B2x2D3JUdYmLUtTzpJFx X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTE0MDE1MyBTYWx0ZWRfX7f5X0G3vckZO lG2RjU3BHKdOjiDZgumv5ZJEsaBhKP4Rf1rXcQ6SfyJ2kdlsYGce2VUgAObOMdOOnht2riojee6 sBnTqPAmw9KTP00TZbv2lR884ZVeK4dJfVu8A4PhhawcF+0e+SxDCrPDEM5Hq9B8Ub0JZjwD1rQ iCwq7iBMc9knziZt2KCj2FUNcwbkbO0Si2kWWAR06Ize2xA0ZzSocZKlwTykKP63W1+OFwt045l EGOIDB1USe0ZbHkKYHckBQc0FCu5N5XHY7t9xo/fmqVqxfjYRbXGrpBE4bSFsFP+vn42z6fl9se 7jUFyPJzayIcklqY6OqUAljOQJcl0LdYJr3aQzEs3oyGbGTe+R7ZYoZ0HENqS5QQq8VJJEajsWG Z6UMk5IVAwnWR9xYTpZw7aRPptQODyq1HHNRIIojOV3BaTfHDyHvSVVj7JXmK36TsSLJzdyRcvL gRB1agHoYG1OkqWPfzA== 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-05-14_03,2026-05-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 priorityscore=1501 lowpriorityscore=0 phishscore=0 malwarescore=0 suspectscore=0 bulkscore=0 spamscore=0 adultscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605140153 Content-Type: text/plain; charset="utf-8" Add a debugfs "enable" file to enable steal time monitor. Computing steal time and acting on it periodically are to be opted by the user. This helps to avoid any overhead when the feature is disabled. It is disabled by default. Signed-off-by: Shrikanth Hegde --- kernel/sched/core.c | 1 + kernel/sched/debug.c | 29 +++++++++++++++++++++++++++++ kernel/sched/sched.h | 2 ++ 3 files changed, 32 insertions(+) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 0d1995c65ce6..1533a44d1a6b 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -11270,6 +11270,7 @@ void sched_change_end(struct sched_change_ctx *ctx) #ifdef CONFIG_PREFERRED_CPU /* npc - non preferred CPU */ static DEFINE_PER_CPU(struct cpu_stop_work, npc_push_task_work); +DEFINE_STATIC_KEY_FALSE(__sched_sm_enable); =20 static int sched_non_preferred_cpu_push_stop(void *arg) { diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c index b1abfdc168bf..be8d223b43fd 100644 --- a/kernel/sched/debug.c +++ b/kernel/sched/debug.c @@ -592,6 +592,33 @@ static void debugfs_ext_server_init(void) #endif /* CONFIG_SCHED_CLASS_EXT */ =20 #ifdef CONFIG_PREFERRED_CPU +__read_mostly bool sched_sm_wr_enable; + +static ssize_t sched_sm_en_write(struct file *filp, const char __user *ubu= f, + size_t cnt, loff_t *ppos) +{ + bool orig =3D sched_sm_wr_enable; + ssize_t result; + + result =3D debugfs_write_file_bool(filp, ubuf, cnt, ppos); + + if (sched_sm_wr_enable && !orig) { + static_branch_enable(&__sched_sm_enable); + } else if (!sched_sm_wr_enable && orig) { + static_branch_disable(&__sched_sm_enable); + cpumask_copy(&__cpu_preferred_mask, cpu_online_mask); + } + + return result; +} + +static const struct file_operations sched_sm_en_fops =3D { + .read =3D debugfs_read_file_bool, + .write =3D sched_sm_en_write, + .open =3D simple_open, + .llseek =3D default_llseek, +}; + static void sched_steal_monitor_debugfs_init(void) { struct dentry __maybe_unused *sm; @@ -599,6 +626,8 @@ static void sched_steal_monitor_debugfs_init(void) sm =3D debugfs_create_dir("steal_monitor", debugfs_sched); if (!sm) return; + + debugfs_create_file("enable", 0644, sm, &sched_sm_wr_enable, &sched_sm_en= _fops); } #endif =20 diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index 96870021a842..bcc65c8b4ac6 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -4140,6 +4140,8 @@ static inline bool task_has_preferred_cpus(struct tas= k_struct *p) } =20 #ifdef CONFIG_PREFERRED_CPU +DECLARE_STATIC_KEY_FALSE(__sched_sm_enable); + void sched_push_current_non_preferred_cpu(struct rq *rq); #else /* !CONFIG_PREFERRED_CPU */ static inline void sched_push_current_non_preferred_cpu(struct rq *rq) { } --=20 2.47.3 From nobody Fri Jun 12 13:56:07 2026 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (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 11B7F3DD52E for ; Thu, 14 May 2026 15:25:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.156.1 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772336; cv=none; b=DjVYw/DxAwR6hV1kvhYf0CGNDc45sFznfmspb6fUoE0PFlFGdaVptf5+NTnKLZwzSar4VDfhrwFAmMy5UkoVtI0TrDoOfgxIh4pOe0yYlL6PwEGFG8e2916vEuQ87do2j7va32zffyMigiluFBqfRIJk8JdMcz3dGDRdFJZIK4g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772336; c=relaxed/simple; bh=eCzUDZ5NQtrmgg90m9O7Km0EQTCzTUh6BPQlxgbymK4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=iZtjzVOE3IWrklFy4IwUebZbb6Oe+8w84ElnW3JWu5PXgaJlB2AoTxyAKRc1o00OGMf8ZufIRy6hxYqFlTU+I0HY5qL77jt+PqpRP937AwoowDrYtgOSrYm/iwmPaR/GyFV21d9il9GfCF4gzD/FZBFW48mSn5dnwAGWLd+WJUU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=cl1mGum1; arc=none smtp.client-ip=148.163.156.1 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="cl1mGum1" Received: from pps.filterd (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64E7V9EY2611889; Thu, 14 May 2026 15:25:12 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=/HsVO+n/0ATuEKuPL +OZdM5zpZyT/u0rhYOyqCYH0rM=; b=cl1mGum19ivDGP0v25j9qLDU7dfxhMG2p 1KyOCpjZqktcEIkIgkjp0GJMUjANIug1L09LxfK/NG1x4hy5i3MRt9VTx6b7N4J8 EvxxtSlelVZ0UWEzWrwi3r8L5EbrpBDS5T2wl7HMIqE2JjnCqSUZ+qf2CUWr0cgu AIzztsNCHwdhBZEVvnlaNqadkgTFk4JMhc+yt6F4r4+OLmbYtZHvcJ5nochXzO2e hrsn1BFGUeMUpxm8xavKKXf1NHYfHtqOgWIk4KVXrjuoAcii84372gjAjMpXFOUE d5IV7Ym/pANiPh53yx6DhrxrwGCgcz0C6E4ENYfB/pPDBy1ReiwyA== Received: from ppma21.wdc07v.mail.ibm.com (5b.69.3da9.ip4.static.sl-reverse.com [169.61.105.91]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4e3nve54pc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:25:11 +0000 (GMT) Received: from pps.filterd (ppma21.wdc07v.mail.ibm.com [127.0.0.1]) by ppma21.wdc07v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 64EF9Tef024303; Thu, 14 May 2026 15:25:10 GMT Received: from smtprelay06.fra02v.mail.ibm.com ([9.218.2.230]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4e3nfgvxvy-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:25:10 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay06.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 64EFP65527918724 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 14 May 2026 15:25:06 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 705ED20043; Thu, 14 May 2026 15:25:06 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 428DC20040; Thu, 14 May 2026 15:24:58 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.124.213.185]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Thu, 14 May 2026 15:24:57 +0000 (GMT) From: Shrikanth Hegde To: linux-kernel@vger.kernel.org, mingo@kernel.org, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, yury.norov@gmail.com, kprateek.nayak@amd.com, iii@linux.ibm.com Cc: sshegde@linux.ibm.com, tglx@kernel.org, gregkh@linuxfoundation.org, pbonzini@redhat.com, seanjc@google.com, vschneid@redhat.com, huschle@linux.ibm.com, rostedt@goodmis.org, dietmar.eggemann@arm.com, mgorman@suse.de, bsegall@google.com, maddy@linux.ibm.com, srikar@linux.ibm.com, hdanton@sina.com, chleroy@kernel.org, vineeth@bitbyteword.org, frederic@kernel.org, arighi@nvidia.com, pauld@redhat.com, christian.loehle@arm.com, tj@kernel.org, tommaso.cucinotta@gmail.com, maz@kernel.org, rafael@kernel.org Subject: [PATCH v3 15/20] sched/core: Introduce a simple steal monitor Date: Thu, 14 May 2026 20:51:59 +0530 Message-ID: <20260514152204.481115-16-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260514152204.481115-1-sshegde@linux.ibm.com> References: <20260514152204.481115-1-sshegde@linux.ibm.com> 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 X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Authority-Analysis: v=2.4 cv=Y/XIdBeN c=1 sm=1 tr=0 ts=6a05e958 cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=NGcC8JguVDcA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=U7nrCbtTmkRpXpFmAIza:22 a=VnNF1IyMAAAA:8 a=OdSMrRaz63idaxcbYwMA:9 X-Proofpoint-GUID: 9TVJhQ6OMU9R9ozC2IZdFySqP_SFOP_j X-Proofpoint-ORIG-GUID: kd2gFW5_TIcQ-UFtHScNmjpg1CEU0xAC X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTE0MDE1MyBTYWx0ZWRfX6R5qujLiE4aZ MrytIdjcq1IQU7MpfR6GFpGaFpJoiec0uZPPKt8Zh8j/FrjDrV+BEyRtSSGC4AVSsXkr/Pa6fts dtRR3MOdjzVpWJ2qGJ3AdW8aUQK2yXETF9MgFb7vEbOBGhFLPUYQl3MMxt/ShrgTXhEOgn9GHXR zjA5Io0uLCR2JPt4HoVd0EMYoK86EkZ95OHc3Evnw1PMefZG6ooG+WyirjyhuqR6cMEJ28oB5Cl PtB8JaF8VK6y+EDemQCiSOhVS0K6nGoo0XmGEvOpyZ5kjFOo+21lYiAP/4J7cZOsyB6BitMbql8 oGbeB/Zpey8R1EVflSU8jgKlPiqzoY/ujdbqoSnb5+a/KJewg6URz6y0CuuwlB9tjoBjTepzV1q 7VD1epy42/alKuOh8EK4QEWg+yEUXodhRvodSTQYYUrBsPyi9JbbhXSOKTYip3kcu3E+vSyQtAG O3/luALAB6gM46tQz7w== 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-05-14_03,2026-05-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 priorityscore=1501 lowpriorityscore=0 phishscore=0 malwarescore=0 suspectscore=0 bulkscore=0 spamscore=0 adultscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605140153 Content-Type: text/plain; charset="utf-8" Start with a simple steal monitor. It is meant to look at steal time and make the decision to reduce/increase the preferred CPUs. It has - work function to execute the steal time calculations and decision making periodically. - temporary cpumask, which will be used in the work function. This helps to avoid cpumask allocation in periodic work function. - low and high thresholds for steal time. - sampling period to control the frequency of steal time calculations. - cache the previous decision to avoid oscillations Signed-off-by: Shrikanth Hegde --- include/linux/sched.h | 13 +++++++++++++ kernel/sched/core.c | 24 ++++++++++++++++++++++++ kernel/sched/sched.h | 3 +++ 3 files changed, 40 insertions(+) diff --git a/include/linux/sched.h b/include/linux/sched.h index dcfb57c90850..ee5f19a96118 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -2516,4 +2516,17 @@ extern void migrate_enable(void); =20 DEFINE_LOCK_GUARD_0(migrate, migrate_disable(), migrate_enable()) =20 +#ifdef CONFIG_PREFERRED_CPU +struct steal_monitor_t { + struct work_struct work; + cpumask_var_t tmp_mask; + ktime_t prev_time; + u64 prev_steal; + int previous_decision; + unsigned int low_threshold; + unsigned int high_threshold; + unsigned int sampling_period_ms; +}; +#endif + #endif diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 1533a44d1a6b..907c6b38460b 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -9102,6 +9102,8 @@ void __init sched_init(void) =20 preempt_dynamic_init(); =20 + sched_init_steal_monitor(); + scheduler_running =3D 1; } =20 @@ -11351,4 +11353,26 @@ void sched_push_current_non_preferred_cpu(struct r= q *rq) push_task, this_cpu_ptr(&npc_push_task_work)); local_irq_restore(flags); } + +struct steal_monitor_t steal_mon; + +void sched_init_steal_monitor(void) +{ + INIT_WORK(&steal_mon.work, sched_steal_detection_work); + zalloc_cpumask_var(&steal_mon.tmp_mask, GFP_KERNEL); + steal_mon.low_threshold =3D 200; /* 2% steal time */ + steal_mon.high_threshold =3D 500; /* 5% steal time */ + steal_mon.sampling_period_ms =3D 1000; /* once per second */ +} + +/* This is only a skeleton. Subsequent patches introduce more of it */ +void sched_steal_detection_work(struct work_struct *work) +{ + struct steal_monitor_t *sm =3D container_of(work, struct steal_monitor_t,= work); + ktime_t now; + + /* Update the prev_time for next iteration*/ + now =3D ktime_get(); + sm->prev_time =3D now; +} #endif diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index bcc65c8b4ac6..d674f8e8e854 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -4143,8 +4143,11 @@ static inline bool task_has_preferred_cpus(struct ta= sk_struct *p) DECLARE_STATIC_KEY_FALSE(__sched_sm_enable); =20 void sched_push_current_non_preferred_cpu(struct rq *rq); +void sched_init_steal_monitor(void); +void sched_steal_detection_work(struct work_struct *work); #else /* !CONFIG_PREFERRED_CPU */ static inline void sched_push_current_non_preferred_cpu(struct rq *rq) { } +static inline void sched_init_steal_monitor(void) { } #endif =20 #endif /* _KERNEL_SCHED_SCHED_H */ --=20 2.47.3 From nobody Fri Jun 12 13:56:07 2026 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (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 896F13DD52E for ; Thu, 14 May 2026 15:25:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.156.1 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772347; cv=none; b=DfZ+oQ1bHwnppJ9QCJ4blZFW7cInd+qZhG5vwFIAEs0g3OhSsaQGrWfGkWvopCi5gPIalXFayOFMZK/K+p5Ow4t+Dg2POUT9ixVzt7npBVHvuYKB2R6BukT1/ICz7hxgN5mnimewrD6XhgcM6Nu+9eZ65m0z0+p4dq3Lso7bEP0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772347; c=relaxed/simple; bh=w6caHVt9jsKLPsxr9XBCriehGfxDLLCrr1df7VwO4sE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=GJCDQDyDdHa343NuzcgmUAHix9rqWt5lLSOUwwxiCCVpPvSUAh5UDr0/di9Y72iRo0D+TTMDbx4RZZMpobb3riHKo7M0JZb2UgrvftRuokcQiLqSCwpkY0j5GYGRMNfYLwUbAOzj0D9RMbtJ5KTpThCayjbAA+IiqnRRbGl6+lE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=FyzPBo23; arc=none smtp.client-ip=148.163.156.1 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="FyzPBo23" Received: from pps.filterd (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64E8iOem2612159; Thu, 14 May 2026 15:25:20 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=tT0RyB+Bs1ihnP5LB z2nC5Kf4FH7i7zqVZageBkTbA4=; b=FyzPBo23rSNn4R8Vrx7e4O0yPtbksB4Hk ctJQ9cBxbmhdwydFKLDv637Xn3fk7YjOQCuqcfFAHb4kTZUCDadBgm0gYnR+7Dvx kFYNfhBNVFhecV+4pRGTGU915LvHpUFIiFHcZTIXuZ8zAi5gjo/V+Wb0UOeOG3df CjJZEA6JhLt1pA8A8on+/bFtqaVaIo6LiibB7pLtHROI5Vc9jhT/PoPCzmc3KeV8 B8fEVHmenEKVWDqy0OVncheAqlLzwN7CWXks4Xbe9KLnGMfq0s3vVxxCCZjQuEr4 xXT/ug0a3weJ8tNoNSHvSj7DpKeToM/6ypM0R/EYKrXstQlabrl0Q== Received: from ppma23.wdc07v.mail.ibm.com (5d.69.3da9.ip4.static.sl-reverse.com [169.61.105.93]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4e3nve54s5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:25:20 +0000 (GMT) Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 64EF9aMg002637; Thu, 14 May 2026 15:25:18 GMT Received: from smtprelay03.fra02v.mail.ibm.com ([9.218.2.224]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4e3nfgvwae-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:25:18 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay03.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 64EFPFRL31588828 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 14 May 2026 15:25:15 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 11A6D20043; Thu, 14 May 2026 15:25:15 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id DAEFE20040; Thu, 14 May 2026 15:25:06 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.124.213.185]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Thu, 14 May 2026 15:25:06 +0000 (GMT) From: Shrikanth Hegde To: linux-kernel@vger.kernel.org, mingo@kernel.org, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, yury.norov@gmail.com, kprateek.nayak@amd.com, iii@linux.ibm.com Cc: sshegde@linux.ibm.com, tglx@kernel.org, gregkh@linuxfoundation.org, pbonzini@redhat.com, seanjc@google.com, vschneid@redhat.com, huschle@linux.ibm.com, rostedt@goodmis.org, dietmar.eggemann@arm.com, mgorman@suse.de, bsegall@google.com, maddy@linux.ibm.com, srikar@linux.ibm.com, hdanton@sina.com, chleroy@kernel.org, vineeth@bitbyteword.org, frederic@kernel.org, arighi@nvidia.com, pauld@redhat.com, christian.loehle@arm.com, tj@kernel.org, tommaso.cucinotta@gmail.com, maz@kernel.org, rafael@kernel.org Subject: [PATCH v3 16/20] sched/core: Compute steal values at regular intervals Date: Thu, 14 May 2026 20:52:00 +0530 Message-ID: <20260514152204.481115-17-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260514152204.481115-1-sshegde@linux.ibm.com> References: <20260514152204.481115-1-sshegde@linux.ibm.com> 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 X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Authority-Analysis: v=2.4 cv=Y/XIdBeN c=1 sm=1 tr=0 ts=6a05e960 cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=NGcC8JguVDcA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=U7nrCbtTmkRpXpFmAIza:22 a=VnNF1IyMAAAA:8 a=68sly6VtS29EVArANI4A:9 X-Proofpoint-GUID: YyFs_n1azEwPOKyvtwI-UoKKoz0zDZZ7 X-Proofpoint-ORIG-GUID: Tk39F5oy9o4iMTQu7Uj5n9MTKyZ-we2D X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTE0MDE1MyBTYWx0ZWRfXzDH/kQkRpi8R RnP4dG1VrxfjsXSt+k6gAGbcPDTuQ10TepjiFsntf3RgNy29pSCKSaQd1eb5HpCqy+agRHa+DR1 MmGOlOca+Nkx3yhBfnQgL0bKq+piHFHEJ/lLcUvghuq7IrGbomMTaP/xGamHpYdjGV+xyza4r6a uyjYr1LbLT+HqK2N6ptWbrl89dHhm/i5ED5uQS++l78bvCxYGYHzyLAnDR/5BYxaanMYKs/7tLD g+wUEs/CnjHqjQ0wf9Cv01cZUZQbAwtpqI8D0P8Y6AZeDqutadymOTkvmG/v25frBCNLsKbERzd RVJ4Uavhdje7HcWQpVXw3X31gEXsLi6E31A9Jx48Z72ZG084vriROP+298W+NxSKmRO6zXFGajI p720CwDkg3B/bPu/HbppVQVayPKihIMstbd7iEV4frULsZote46srvTDNKNPQn3wzeRKqN0yMLm 8sx5njdqDJUb0bmefbQ== 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-05-14_03,2026-05-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 priorityscore=1501 lowpriorityscore=0 phishscore=0 malwarescore=0 suspectscore=0 bulkscore=0 spamscore=0 adultscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605140153 Content-Type: text/plain; charset="utf-8" Kick off the work to compute the steal time at regular interval. Gated with steal monitor enabled static key check to avoid any overhead when its disabled. The sampling period can changed at runtime using steal_mon/sampling_period. By default is 1000 milliseconds. I.e. 1 second This work is done by first online housekeeping CPU only. Hence it won't need any complicated synchronization. Signed-off-by: Shrikanth Hegde --- include/linux/sched.h | 2 ++ kernel/sched/core.c | 26 ++++++++++++++++++++++++++ kernel/sched/debug.c | 1 + kernel/sched/sched.h | 7 +++++++ 4 files changed, 36 insertions(+) diff --git a/include/linux/sched.h b/include/linux/sched.h index ee5f19a96118..738f17d63943 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -2527,6 +2527,8 @@ struct steal_monitor_t { unsigned int high_threshold; unsigned int sampling_period_ms; }; + +extern struct steal_monitor_t steal_mon; #endif =20 #endif diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 907c6b38460b..a3f65e9c7d30 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -5719,6 +5719,9 @@ void sched_tick(void) rq->idle_balance =3D idle_cpu(cpu); sched_balance_trigger(rq); } + + if (sched_steal_mon_enabled()) + sched_trigger_steal_computation(cpu); } =20 #ifdef CONFIG_NO_HZ_FULL @@ -11375,4 +11378,27 @@ void sched_steal_detection_work(struct work_struct= *work) now =3D ktime_get(); sm->prev_time =3D now; } + +void sched_trigger_steal_computation(int cpu) +{ + int first_hk_cpu =3D cpumask_first_and(housekeeping_cpumask(HK_TYPE_KERNE= L_NOISE), + cpu_online_mask); + ktime_t now; + + /* Done by first online housekeeping CPU only */ + if (likely(cpu !=3D first_hk_cpu)) + return; + + /* + * Since everything is updated by first housekeeping CPU, + * There is no need for complex syncronization. + */ + now =3D ktime_get(); + + /* Default is once per second */ + if (likely(ktime_ms_delta(now, steal_mon.prev_time) < steal_mon.sampling_= period_ms)) + return; + + schedule_work_on(first_hk_cpu, &steal_mon.work); +} #endif diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c index be8d223b43fd..f00c08581253 100644 --- a/kernel/sched/debug.c +++ b/kernel/sched/debug.c @@ -606,6 +606,7 @@ static ssize_t sched_sm_en_write(struct file *filp, con= st char __user *ubuf, static_branch_enable(&__sched_sm_enable); } else if (!sched_sm_wr_enable && orig) { static_branch_disable(&__sched_sm_enable); + cancel_work_sync(&steal_mon.work); cpumask_copy(&__cpu_preferred_mask, cpu_online_mask); } =20 diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index d674f8e8e854..cc90012a85fc 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -4145,9 +4145,16 @@ DECLARE_STATIC_KEY_FALSE(__sched_sm_enable); void sched_push_current_non_preferred_cpu(struct rq *rq); void sched_init_steal_monitor(void); void sched_steal_detection_work(struct work_struct *work); +void sched_trigger_steal_computation(int cpu); +static inline bool sched_steal_mon_enabled(void) +{ + return static_branch_unlikely(&__sched_sm_enable); +} #else /* !CONFIG_PREFERRED_CPU */ static inline void sched_push_current_non_preferred_cpu(struct rq *rq) { } static inline void sched_init_steal_monitor(void) { } +static inline void sched_trigger_steal_computation(int cpu) { } +static inline bool sched_steal_mon_enabled(void) { return false; } #endif =20 #endif /* _KERNEL_SCHED_SCHED_H */ --=20 2.47.3 From nobody Fri Jun 12 13:56:07 2026 Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) (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 E81263E1CF1 for ; Thu, 14 May 2026 15:25:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.158.5 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772349; cv=none; b=QDT3uOU32cpsQOqVOJsznqAjt9GmhJLjOYBt49P03N8UVqMcteONjUDiWFYRe++PdjRUqDzKqUxo4SCnEz0Uj99mPhnZMeb+AeCY6YreRipa23eqdw1ow6ki7kjcCjWiASe1wcKXaWLvDV9ercIw1BdnAfxAcoDsdrq+3D6u84E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772349; c=relaxed/simple; bh=TScG+KTOBUHTA2zs58xZghjf74TIWq0QVMJa6sBUH7Y=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=EBHqc8FJLc1w9kP+iearIc2h/hXnN8UURds+49BGjdlzcm9wQZuhCqNypbqUn1SCGjdIioHFA2M+4WWtkudkSePr6nlHmFyvSxRa4Kc5iMD6CT4CYKWwjPEQbR8TfSsBX4VfTXW2XkY0hTSCEMrBhnftjS174bGzKnz/bytyIE4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=k1Ddnw/v; arc=none smtp.client-ip=148.163.158.5 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="k1Ddnw/v" Received: from pps.filterd (m0360072.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64E8eXdO2760546; Thu, 14 May 2026 15:25:30 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=oCn2K4cnc6079WVxp kq1oG6F1uEFEhOqsk0fvIAEdg0=; b=k1Ddnw/vpECpemQD3agt5BEcvAi2tys7n a+bJNSAV+qYAg8YuNqIYi+gHNn8klPzmLyMOGm9gW6kxjxfOfcq/GMRaE6nV29Eo sEjslgpGcC41OsKS4s82xGi/TNEGNg/d/+eqhl30nBx72olqGISKI1GjIxn45DN5 xlAaYriQHFGTGmGmyLKEu1KMhiL20vzG8UyuT6Lio4DnyW1krmo7OEWjeLA6XB9H vL6wfXuyu8YvpjdhF7Gf+T3E6q4OGi7+9F3RZi24AmIN0G/1/bsR3xp2k75Wwb3k hJebLYwk+FrQ01BJx27pe3G9IxYNxGiCsl4XINzUZIm7PYgjSJcfA== Received: from ppma12.dal12v.mail.ibm.com (dc.9e.1632.ip4.static.sl-reverse.com [50.22.158.220]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4e3nv6vjdj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:25:29 +0000 (GMT) Received: from pps.filterd (ppma12.dal12v.mail.ibm.com [127.0.0.1]) by ppma12.dal12v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 64EF9Xvc003483; Thu, 14 May 2026 15:25:28 GMT Received: from smtprelay01.fra02v.mail.ibm.com ([9.218.2.227]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 4e3nfgmxjc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:25:28 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay01.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 64EFPOJs60752284 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 14 May 2026 15:25:24 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 909F720043; Thu, 14 May 2026 15:25:24 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id A629B20040; Thu, 14 May 2026 15:25:15 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.124.213.185]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Thu, 14 May 2026 15:25:15 +0000 (GMT) From: Shrikanth Hegde To: linux-kernel@vger.kernel.org, mingo@kernel.org, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, yury.norov@gmail.com, kprateek.nayak@amd.com, iii@linux.ibm.com Cc: sshegde@linux.ibm.com, tglx@kernel.org, gregkh@linuxfoundation.org, pbonzini@redhat.com, seanjc@google.com, vschneid@redhat.com, huschle@linux.ibm.com, rostedt@goodmis.org, dietmar.eggemann@arm.com, mgorman@suse.de, bsegall@google.com, maddy@linux.ibm.com, srikar@linux.ibm.com, hdanton@sina.com, chleroy@kernel.org, vineeth@bitbyteword.org, frederic@kernel.org, arighi@nvidia.com, pauld@redhat.com, christian.loehle@arm.com, tj@kernel.org, tommaso.cucinotta@gmail.com, maz@kernel.org, rafael@kernel.org Subject: [PATCH v3 17/20] sched/core: Introduce default arch handling code for inc/dec preferred CPUs Date: Thu, 14 May 2026 20:52:01 +0530 Message-ID: <20260514152204.481115-18-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260514152204.481115-1-sshegde@linux.ibm.com> References: <20260514152204.481115-1-sshegde@linux.ibm.com> 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 X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Proofpoint-ORIG-GUID: cdjLVNpOpc6yA3flq6KLHFXnYM9WJGk- X-Proofpoint-GUID: 1mf0-zjIFNlPAxs_4o5XWRD0Fzd6TJFA X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTE0MDE1MyBTYWx0ZWRfX40DYM0AzHDpg WGhRHHFGorylOOLeGt+/O2uY3olcyRRZoKJj+bhKC7ockgaC+M83ViDUGjCPV1Na3blMDCjW5mx eRrIqlgrYK7pJ1oXE4psPsk4b63Y0y2dJSDN0hdcUlReQAXafOKKBNEdz5xJow60WqPoTxp0YfL txoFJAQC2smG0dOdxlz/k9AndPjfhZcQRJGZ17drWlv5odoimG8r5bAlwXjPrcZzO6N0dFuIhDu 7MhGoOjt5q4SXh3q3zZoTvA0vkKKLrYqI2ifqUbK3O9KY7efGr2HW/wSRVpa/+lH16L+lEu2EsR q/mSTfs3xiLwp5E5fSiqIqcEyD77Sffv7hJ8KsJq5bMBesatEDvumhZND3pbMcVx3MtDjUiqI/o E+EW+hrkhsLotjgPqiW4XmBeiOlqFdwVJt871zk0DfsNUtrPVpmniL1adybdxjWQ553joOkndtx OGZgbDaj1OuBQH/045Q== X-Authority-Analysis: v=2.4 cv=P8UKQCAu c=1 sm=1 tr=0 ts=6a05e969 cx=c_pps a=bLidbwmWQ0KltjZqbj+ezA==:117 a=bLidbwmWQ0KltjZqbj+ezA==:17 a=NGcC8JguVDcA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=RzCfie-kr_QcCd8fBx8p:22 a=VnNF1IyMAAAA:8 a=pGLVZ1KIGr3R53PB0VQA:9 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-05-14_03,2026-05-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 priorityscore=1501 phishscore=0 bulkscore=0 clxscore=1015 malwarescore=0 spamscore=0 lowpriorityscore=0 suspectscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605140153 Content-Type: text/plain; charset="utf-8" Define default handlers for high/low steal time. If arch has better decision logic, may override the default implementation. - If the steal time higher than threshold, reduce the number of preferred CPUs by 1 core. The last core in the intersection of online and preferred CPUs will be marked as non-preferred. Ensure at least one core is left as preferred always. - If the steal time lower than threshold, increase the number of preferred CPUs by 1 core. First online core which is not in cpu_preferred_mask will be marked as preferred. If all cores are already set to preferred, bail out. Increase/Decrease may need to modify the splicing across NUMA nodes. It is being kept simple for now. Signed-off-by: Shrikanth Hegde --- include/linux/sched.h | 2 ++ kernel/sched/core.c | 58 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) diff --git a/include/linux/sched.h b/include/linux/sched.h index 738f17d63943..2afbcd70f0ac 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -2529,6 +2529,8 @@ struct steal_monitor_t { }; =20 extern struct steal_monitor_t steal_mon; +void arch_dec_preferred_cpus(struct steal_monitor_t *sm, u64 steal_ratio); +void arch_inc_preferred_cpus(struct steal_monitor_t *sm, u64 steal_ratio); #endif =20 #endif diff --git a/kernel/sched/core.c b/kernel/sched/core.c index a3f65e9c7d30..195e3648b1b5 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -11368,6 +11368,64 @@ void sched_init_steal_monitor(void) steal_mon.sampling_period_ms =3D 1000; /* once per second */ } =20 +/* + * Default implementation of decrementing the preferred CPUs based on steal + * time. This is simple logic and decrease the preferred CPUs by 1 core. + * It takes out the last core in the online & preferred. + * + * Ensure at least one housekeeping core is always kept as preferred + * + * Could be overwritten by arch specific handling. + */ +#ifndef arch_dec_preferred_cpus +void arch_dec_preferred_cpus(struct steal_monitor_t *sm, u64 steal_ratio) +{ + int last_cpu, tmp_cpu; + int this_cpu =3D raw_smp_processor_id(); + + cpumask_and(sm->tmp_mask, cpu_online_mask, cpu_preferred_mask); + last_cpu =3D cpumask_last(sm->tmp_mask); + + /* + * If the core belongs to the housekeeping CPUs, no action is + * taken. This leaves at least one core preferred always. + * This ensures at least some CPUs are available to run + */ + if (cpumask_equal(cpu_smt_mask(last_cpu), cpu_smt_mask(this_cpu))) + return; + + for_each_cpu_and(tmp_cpu, cpu_smt_mask(last_cpu), cpu_online_mask) { + set_cpu_preferred(tmp_cpu, false); + if (tick_nohz_full_cpu(tmp_cpu)) + tick_nohz_dep_set_cpu(tmp_cpu, TICK_DEP_BIT_SCHED); + } +} +#endif + +/* + * Default implementation of incrementing preferred CPUs based on steal + * time. This is simple logic and increases the preferred CPUs by 1 core. + * It adds the first core in online & !preferred + * + * Nothing to do if online =3D=3D preferred + * + * Could be overwritten by arch specific handling. + */ +#ifndef arch_inc_preferred_cpus +void arch_inc_preferred_cpus(struct steal_monitor_t *sm, u64 steal_ratio) +{ + int first_cpu, tmp_cpu; + + first_cpu =3D cpumask_first_andnot(cpu_online_mask, cpu_preferred_mask); + /* All CPUs are preferred. Nothing to increase further */ + if (first_cpu >=3D nr_cpu_ids) + return; + + for_each_cpu_and(tmp_cpu, cpu_smt_mask(first_cpu), cpu_online_mask) + set_cpu_preferred(tmp_cpu, true); +} +#endif + /* This is only a skeleton. Subsequent patches introduce more of it */ void sched_steal_detection_work(struct work_struct *work) { --=20 2.47.3 From nobody Fri Jun 12 13:56:07 2026 Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) (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 B4F083F7A90 for ; Thu, 14 May 2026 15:25:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.158.5 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772360; cv=none; b=JMJj8njDPj+7/nMm6rW5i6nuesCK8w7LZ1nhOwc1qD6OxJzV6HPZvbZeXT4TdQMBiYG0k3ofHXbShHSOYkAmDdP6qmAUXMh+VZExxDjKosdVsVV2f7+MVUC2DWMcffcrvxeSM++UILXkIWXLqv9Gze0L4RuIrfwz9pyVZAKrVeQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772360; c=relaxed/simple; bh=fn21jHM9e29TnVAB5Kd05n3nb/RQwCKYOoJHdkP9GOA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=GSql4CqwG060jWZ2lmo+60BwC+cTbHrK4sQRXxH02BkQ1b86Vll+a4bfdelsKRNNmF5PeviT5T8WpgauxQe+Dvw8VF9iU7Qmjo/MYm4Suj4sZsuzVBFtBbiHfKLQrDq13k0EDA4rRk4C4878/1tCrs7GYVg4ePOG9PfOD1lWL1E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=e+9a4ZaP; arc=none smtp.client-ip=148.163.158.5 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="e+9a4ZaP" Received: from pps.filterd (m0353725.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64E9FZj13775980; Thu, 14 May 2026 15:25:39 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=Ykj0Ap+oACwTy+7I6 EUInFeKx65GKSx3XRUnu5iCMJc=; b=e+9a4ZaPZP3kNwCY4/9PSt0gF2eIbBYIC ewmKZCHfVjvgiisCdoekLtsDdiIi0byEX+qknCVF9T+xOnmWWsBh2TS5sH/rUIff iBq6DE4W6VqchNhle8mFI0L4V3E82FoyYYzJhiWf9m9jcN0wA311M6T4f67tVt4l EXh+s2wLL9ptzuLOSDo9w93P1VUKdZzoD2B1m5I9JCGZPJC/rGfYpSTAKZH4iKv9 9JogyBIb5uygdwFzUzP1MXjyI9Z3LuZTpAMAJdB4/8EFfyIJqWFGN/MN6cszgDxx FeHM2aATCOTrLXcpTIp34/8FDFJtI4XL6iJojo+jqza1Pgzi27qVA== Received: from ppma21.wdc07v.mail.ibm.com (5b.69.3da9.ip4.static.sl-reverse.com [169.61.105.91]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4e3nv6vhdb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:25:38 +0000 (GMT) Received: from pps.filterd (ppma21.wdc07v.mail.ibm.com [127.0.0.1]) by ppma21.wdc07v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 64EF9WTb024570; Thu, 14 May 2026 15:25:38 GMT Received: from smtprelay06.fra02v.mail.ibm.com ([9.218.2.230]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4e3nfgvy1d-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:25:38 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay06.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 64EFPYgB30409040 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 14 May 2026 15:25:34 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 34CE72004D; Thu, 14 May 2026 15:25:34 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 0FC3320043; Thu, 14 May 2026 15:25:25 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.124.213.185]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Thu, 14 May 2026 15:25:24 +0000 (GMT) From: Shrikanth Hegde To: linux-kernel@vger.kernel.org, mingo@kernel.org, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, yury.norov@gmail.com, kprateek.nayak@amd.com, iii@linux.ibm.com Cc: sshegde@linux.ibm.com, tglx@kernel.org, gregkh@linuxfoundation.org, pbonzini@redhat.com, seanjc@google.com, vschneid@redhat.com, huschle@linux.ibm.com, rostedt@goodmis.org, dietmar.eggemann@arm.com, mgorman@suse.de, bsegall@google.com, maddy@linux.ibm.com, srikar@linux.ibm.com, hdanton@sina.com, chleroy@kernel.org, vineeth@bitbyteword.org, frederic@kernel.org, arighi@nvidia.com, pauld@redhat.com, christian.loehle@arm.com, tj@kernel.org, tommaso.cucinotta@gmail.com, maz@kernel.org, rafael@kernel.org Subject: [PATCH v3 18/20] sched/core: Handle steal values and mark CPUs as preferred Date: Thu, 14 May 2026 20:52:02 +0530 Message-ID: <20260514152204.481115-19-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260514152204.481115-1-sshegde@linux.ibm.com> References: <20260514152204.481115-1-sshegde@linux.ibm.com> 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 X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Authority-Analysis: v=2.4 cv=KbvidwYD c=1 sm=1 tr=0 ts=6a05e973 cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=NGcC8JguVDcA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=V8glGbnc2Ofi9Qvn3v5h:22 a=VnNF1IyMAAAA:8 a=TM1EdS9gwypbLKwYSXwA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTE0MDE1MyBTYWx0ZWRfX4Zo394P0UZgS 9GyYbTat36VgQOBupFzGccI8Nad4FehP+zRxnoS1nOFMjK4igTPRSP+SOiX1T+mX8IcDUU+BR7X 50OfY73SZ4NQ7YdCn4iYvO9X9cJ5EbG+yKn3/dRz9iFZLa+mT1+ry3lxKGGz91RFrdF9WL5OQ6R 0m+cJZ3bdWAMmi6Dgj/1Rnv6NAm1yY+wTKgrVbykSBg0KsJYx8E8bsyiHbDUxcMgk7MshsqVUVt rNtYHbwVy+ZIic5ApDvSWgjR0OucjIgqfnHyX+zT+7nYc13+LLkKjerIqBDrFslUMZrr6Sl9SVB g9Ff+DNjFCdna12HEdkk1iYvos4iyhinA1Dq1BJ1unUOpvdLGvBajHZzKqhRHlAAm38ZXUHAPvw HFaMpyGAuqqV6KiF3SeYHhZc0WnTy9FLbpmaAzXM0t/+S0K8KtQzL/G3S8K3Bob5MivyUIUo39r mosTVin9lC3ANxWokGQ== X-Proofpoint-GUID: -4S6UlpbxZq0Cgz85_QvFbhMgNqxVWvX X-Proofpoint-ORIG-GUID: ZBm3C0EO575kYqQwsG4tkAqbmSvFaoSA 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-05-14_03,2026-05-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 bulkscore=0 impostorscore=0 malwarescore=0 lowpriorityscore=0 phishscore=0 spamscore=0 suspectscore=0 clxscore=1015 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605140153 Content-Type: text/plain; charset="utf-8" This is the main periodic work which handles the steal time values. - Compute the steal time by looking CPUTIME_STEAL across all online CPUs - Compute steal ratio. It is multiplied by 100 to handle the fractional values. - Invoke callbacks for inc/dec preferred CPUs based on low/high steal time. Signed-off-by: Shrikanth Hegde --- kernel/sched/core.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 195e3648b1b5..955e74a41627 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -11426,15 +11426,34 @@ void arch_inc_preferred_cpus(struct steal_monitor= _t *sm, u64 steal_ratio) } #endif =20 -/* This is only a skeleton. Subsequent patches introduce more of it */ void sched_steal_detection_work(struct work_struct *work) { struct steal_monitor_t *sm =3D container_of(work, struct steal_monitor_t,= work); + u64 steal_ratio, delta_steal, delta_ns, steal =3D 0; ktime_t now; + int tmp_cpu; + + for_each_cpu(tmp_cpu, cpu_online_mask) + steal +=3D kcpustat_cpu(tmp_cpu).cpustat[CPUTIME_STEAL]; =20 /* Update the prev_time for next iteration*/ now =3D ktime_get(); + delta_steal =3D steal > sm->prev_steal ? steal - sm->prev_steal : 0; + delta_ns =3D max_t(u64, ktime_to_ns(ktime_sub(now, sm->prev_time)), 1); + sm->prev_time =3D now; + sm->prev_steal =3D steal; + + /* Multiply by 100 to consider the fractional values of steal time */ + steal_ratio =3D (delta_steal * 100 * 100) / (delta_ns * num_online_cpus()= ); + + /* If the steal time values are high, reduce one core from preferred CPUs= */ + if (steal_ratio > sm->high_threshold) + arch_dec_preferred_cpus(sm, steal_ratio); + + /* If the steal time values are low, increase one core as preferred CPUs = */ + if (steal_ratio < sm->low_threshold) + arch_inc_preferred_cpus(sm, steal_ratio); } =20 void sched_trigger_steal_computation(int cpu) --=20 2.47.3 From nobody Fri Jun 12 13:56:07 2026 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (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 12F1042EEB0 for ; Thu, 14 May 2026 15:26:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.156.1 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772371; cv=none; b=bz2CcXiyx+LjCqYCtzep6s4sv9z8LOp3KIYpOPPcNM0dy0kjMHNtb8nG3RAuFWAh1CNVfcdX6juHlOArxs4i3UbXS8ay+4BjkLMAjPWDGvM9zJcTYV2FxFbNrxV79wQt0U2jvlBpRdk9BBbJ21E/P6fomFYu28V3++W0RFvmB7Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772371; c=relaxed/simple; bh=VQ7I2N71i3j7teTQh4dw8UGGuxim+Wkl6wEu9UZY9Zc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=WjjQOV9+NfytDo0uXOGgdggAKz+qoD/jEdIOx03tVBeJ90BJjCo0cwiQ9x2Z5iYiKQN3gyj6sBQH05GVK9syMqVR5snweJS5SwaFULfm7UZLwmU/30MbUPCOI+DMTVD9ZjeFm/gOznsTd+rW67dJ31KMN7W/JKgu0hfqZC4VvOo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=nYAs4/jK; arc=none smtp.client-ip=148.163.156.1 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="nYAs4/jK" Received: from pps.filterd (m0353729.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64EA3GKP2775739; Thu, 14 May 2026 15:25:48 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=HUA3/1s2AeUKF33jX Wa/zzdS9jn9QYotrqHRY7AAXHQ=; b=nYAs4/jKD9elhqDtuglcLKiTQmHEYbZpP bruU42dPfW9yzz5kNGMi1T7jlb9vZKielQ5F82yqEmDzOlG7vrzbjA2LeagBFgRU 05uQK4pIj5mxFNLX8kkJGTx0WxEn+01a0ZX/siDDuILt2NFg26kWRQZZK1N2Ybly FFGpMpv185sqrIppcROlci5EI8F6RGG0Kx7xk4PvZkdEEngt6evM+qqyUpSBg5ay oh+AGo5bMKUrvRLAX3OzYzZELBPJ68iDjrdFX9yvHWh7BO1AG0yiO7H/xhFpBxP4 F2zQnkj1jz3mYGtGK1/Vazp4rr8uQlIPhm40nzC0ECT/uQHj6M5Iw== Received: from ppma11.dal12v.mail.ibm.com (db.9e.1632.ip4.static.sl-reverse.com [50.22.158.219]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4e3nv5d4q1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:25:47 +0000 (GMT) Received: from pps.filterd (ppma11.dal12v.mail.ibm.com [127.0.0.1]) by ppma11.dal12v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 64EFPd6Q025234; Thu, 14 May 2026 15:25:46 GMT Received: from smtprelay07.fra02v.mail.ibm.com ([9.218.2.229]) by ppma11.dal12v.mail.ibm.com (PPS) with ESMTPS id 4e3nfgmy6k-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:25:46 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay07.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 64EFPglo35520948 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 14 May 2026 15:25:42 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 95BBB20040; Thu, 14 May 2026 15:25:42 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id CBFB120043; Thu, 14 May 2026 15:25:34 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.124.213.185]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Thu, 14 May 2026 15:25:34 +0000 (GMT) From: Shrikanth Hegde To: linux-kernel@vger.kernel.org, mingo@kernel.org, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, yury.norov@gmail.com, kprateek.nayak@amd.com, iii@linux.ibm.com Cc: sshegde@linux.ibm.com, tglx@kernel.org, gregkh@linuxfoundation.org, pbonzini@redhat.com, seanjc@google.com, vschneid@redhat.com, huschle@linux.ibm.com, rostedt@goodmis.org, dietmar.eggemann@arm.com, mgorman@suse.de, bsegall@google.com, maddy@linux.ibm.com, srikar@linux.ibm.com, hdanton@sina.com, chleroy@kernel.org, vineeth@bitbyteword.org, frederic@kernel.org, arighi@nvidia.com, pauld@redhat.com, christian.loehle@arm.com, tj@kernel.org, tommaso.cucinotta@gmail.com, maz@kernel.org, rafael@kernel.org Subject: [PATCH v3 19/20] sched/core: Mark the direction of steal values to avoid oscillations Date: Thu, 14 May 2026 20:52:03 +0530 Message-ID: <20260514152204.481115-20-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260514152204.481115-1-sshegde@linux.ibm.com> References: <20260514152204.481115-1-sshegde@linux.ibm.com> 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 X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTE0MDE1MyBTYWx0ZWRfXxb2usrzYNsiW eGWTyXVKRb22TWwxrAEHfWOZj34jhqSiHEMVZrpm2SzMOhHr5gz8hP2G+z9yqlvJwnqCeiEmZCN ThlvWCf9MKRBkG5Iq0FSMFOOiSymC5nmqi5+REp8wPu1jhb887l52rGUiEvylotY8m50uJSUFte RidMNeBHLMyja6GS3IfftyyuxTVPfOyw8P4L/WTJdtM8ci8xXqSS3nmhEItbwkUegUegsdSMrYT T6TuRi0Y5VA8wgH61/nNhhalJixY+OgcdpdCQKlxAZx5eIUSP7TO8d8BV7XmYbVPkKXpcG66EqQ +qxqcUp0HL0rPlK5QgVNawT/2Lmk2ubF//MV17kBl2X4B6m858ueGwhYT3FeEkagijlwpqP2jav ypfwg8ZjuIv/DoGUMXo478M3HRh4vXW/JO7xr90/0LSSJJHdSIlTLyD3xLKijysw0E6zwY7GS4X 2OcntCeSCCAUyMcf1Hw== X-Proofpoint-ORIG-GUID: R9cLJpA1QlsorrEag-qe1pgPavwhDjHe X-Authority-Analysis: v=2.4 cv=Jc6Ma0KV c=1 sm=1 tr=0 ts=6a05e97b cx=c_pps a=aDMHemPKRhS1OARIsFnwRA==:117 a=aDMHemPKRhS1OARIsFnwRA==:17 a=NGcC8JguVDcA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=uAbxVGIbfxUO_5tXvNgY:22 a=VnNF1IyMAAAA:8 a=NVR8b6ZH4u3ztrVwBTQA:9 X-Proofpoint-GUID: 1ckuwVOSni10dfwxq9IoICyxppq-DCQu 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-05-14_03,2026-05-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 priorityscore=1501 malwarescore=0 bulkscore=0 clxscore=1015 phishscore=0 adultscore=0 lowpriorityscore=0 suspectscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605140153 Content-Type: text/plain; charset="utf-8" Cache the previous decision on steal time. So consecutive values of high values or low values are taken for increase/decrease of preferred CPUs. Signed-off-by: Shrikanth Hegde --- kernel/sched/core.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 955e74a41627..a9e8beb5108e 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -11448,12 +11448,20 @@ void sched_steal_detection_work(struct work_struc= t *work) steal_ratio =3D (delta_steal * 100 * 100) / (delta_ns * num_online_cpus()= ); =20 /* If the steal time values are high, reduce one core from preferred CPUs= */ - if (steal_ratio > sm->high_threshold) + if (sm->previous_decision =3D=3D 1 && steal_ratio > sm->high_threshold) arch_dec_preferred_cpus(sm, steal_ratio); =20 /* If the steal time values are low, increase one core as preferred CPUs = */ - if (steal_ratio < sm->low_threshold) + if (sm->previous_decision =3D=3D -1 && steal_ratio < sm->low_threshold) arch_inc_preferred_cpus(sm, steal_ratio); + + /* mark the direction. This helps to avoid ping-pongs */ + if (steal_ratio > sm->high_threshold) + sm->previous_decision =3D 1; + else if (steal_ratio < sm->low_threshold) + sm->previous_decision =3D -1; + else + sm->previous_decision =3D 0; } =20 void sched_trigger_steal_computation(int cpu) --=20 2.47.3 From nobody Fri Jun 12 13:56:07 2026 Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) (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 E5C7E313E10 for ; Thu, 14 May 2026 15:26:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.158.5 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772382; cv=none; b=pqys3BbWOE8WPnANeXH2QZq/BhUvuC80UL1SVFrHd0eqqqNnq/IHFbwQbAIcgFo9C4h3KMzZxGmc9dAaJt76wmGc6YxOyMYhh6TEALNArC+0U1iv1M5//7PXyfZsNvIqfo6phCpL42PfnIvtm0aNUeVg57Dg0o6koQEHREKPnlY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772382; c=relaxed/simple; bh=8YB8N0YYSQh6PJ8DVEKNfzqLpSnalm07W7AqV/8dVHk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=BBbzyUFgZrWzwPbxTnwPXnRkxS8U18UOcTpHGg1V575CcSkOZQpqZVZcZeN0+4aatJ8bj/eJtX8kmlePCFbxak17NNVZOjy9JFni6+fPk/E+JAllWfpNlTyX6AcmZpDy7L4HQsVh6CREa1mpTPbUnjfV8oFU+KhkMJvD9U8B1h0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=jUGBBy61; arc=none smtp.client-ip=148.163.158.5 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="jUGBBy61" Received: from pps.filterd (m0360072.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64EAEgsj2760514; Thu, 14 May 2026 15:25:56 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=Gyw07OAKlrhaYSOzL upHlPLUbBtcjz/n1+6Uox/eCS8=; b=jUGBBy61gIJQbBOXqE26lnH6jwBceg8iN e12FBLJVBr0XIX00DRbBmpQTO/Dr6P1IG+PI3bx4q7QPVfx4Wz/g+jpk2DHuJjdi XAoDLW+XuidKdoazzM9IAQWMclS0y4S0iG8GODTD1zzEvVN6y42PwvMMRytD8AkL Yx5+CAB66Cz+uw2Ym2aDONoXlucoqfzR2+3LvOACeqTw+PYC2hUl4Qv7HD1RGDTl LulaxLinDCddIwIDXH0NjMvm+gPq6YQxFLNXAAVLpq32+ZflGYBd8Tue3+xQann5 XIMG20our5kltmKzJKrdNoDbNKORmRK7+DJYoCCOsgRZJGKgv5DFg== Received: from ppma21.wdc07v.mail.ibm.com (5b.69.3da9.ip4.static.sl-reverse.com [169.61.105.91]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4e3nv6vjgw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:25:55 +0000 (GMT) Received: from pps.filterd (ppma21.wdc07v.mail.ibm.com [127.0.0.1]) by ppma21.wdc07v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 64EFPhqV009779; Thu, 14 May 2026 15:25:54 GMT Received: from smtprelay03.fra02v.mail.ibm.com ([9.218.2.224]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4e3nfgvy3f-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:25:54 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay03.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 64EFPouJ37683586 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 14 May 2026 15:25:50 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id C5D7520043; Thu, 14 May 2026 15:25:50 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 0734520040; Thu, 14 May 2026 15:25:43 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.124.213.185]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Thu, 14 May 2026 15:25:42 +0000 (GMT) From: Shrikanth Hegde To: linux-kernel@vger.kernel.org, mingo@kernel.org, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, yury.norov@gmail.com, kprateek.nayak@amd.com, iii@linux.ibm.com Cc: sshegde@linux.ibm.com, tglx@kernel.org, gregkh@linuxfoundation.org, pbonzini@redhat.com, seanjc@google.com, vschneid@redhat.com, huschle@linux.ibm.com, rostedt@goodmis.org, dietmar.eggemann@arm.com, mgorman@suse.de, bsegall@google.com, maddy@linux.ibm.com, srikar@linux.ibm.com, hdanton@sina.com, chleroy@kernel.org, vineeth@bitbyteword.org, frederic@kernel.org, arighi@nvidia.com, pauld@redhat.com, christian.loehle@arm.com, tj@kernel.org, tommaso.cucinotta@gmail.com, maz@kernel.org, rafael@kernel.org Subject: [PATCH v3 20/20] sched/debug: Add debug knobs for steal monitor Date: Thu, 14 May 2026 20:52:04 +0530 Message-ID: <20260514152204.481115-21-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260514152204.481115-1-sshegde@linux.ibm.com> References: <20260514152204.481115-1-sshegde@linux.ibm.com> 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 X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Proofpoint-ORIG-GUID: SW9HwK6w9deE7LMGgU48U5sHbkSu1y2L X-Proofpoint-GUID: LVgsB4RZZQDxDEzDu7WXCLG8SdpO35WK X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTE0MDE1MyBTYWx0ZWRfX1IZR4Uf+AIdk reBNI4cx39i+ORnneIrDHDD+oqilbogQN+OojV1+0dZfkHwsok5JqcBE/w5xaNksz1jB4/cQ/6z +yRf+UdF9u82OLUlxNZ4uyD6zT+UaIHOKhuF7LWLumCpGvcyY7bfvqcHWnjHzRQXfYhD4EhdbI4 zV6qCnGgP6Aa0Ih40MnCDhMHWeB7EgnkTQfrmmCj3tegr7YNT6PLiK8yFT2KOy9iFsGS7kjRUjh m3ewR3ec3V7J6kEuaIkJkw9TvZw47siM7p1QvwVFTj1XRiCMQvB+vUPxH8OgRRG0r1SoI3LkXP9 EEEamPYqMeEAuUOh8mH96wJFlBisSga+8MEC7UcT1dp7zLzPyxUsbzV0F0evng23iDYb5w/LUaR SyJjRDJ/Wzn+XNIVLFmdsSyxab9iUXbvTVpJePzW6SNyIe3TqK9P8ACDsQVz0l0fUJAvltE702c N/NPcu4eSSIpcKlttnw== X-Authority-Analysis: v=2.4 cv=P8UKQCAu c=1 sm=1 tr=0 ts=6a05e983 cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=NGcC8JguVDcA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=RzCfie-kr_QcCd8fBx8p:22 a=VnNF1IyMAAAA:8 a=xkJu8sE_ArotpuPaaLAA:9 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-05-14_03,2026-05-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 priorityscore=1501 phishscore=0 bulkscore=0 clxscore=1015 malwarescore=0 spamscore=0 lowpriorityscore=0 suspectscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605140153 Content-Type: text/plain; charset="utf-8" Add three debug knobs in steal_monitor: sampling_period - sampling frequency in milliseconds. low_threshold - lower steal threshold value (specify percentage * 100) high_threshold - higher steal threshold value (specify percentage * 100) Refer to Documentation/scheduler/sched-debug.rst for detailed info. Signed-off-by: Shrikanth Hegde --- Documentation/scheduler/sched-debug.rst | 32 +++++++++++++++++++++++++ kernel/sched/debug.c | 3 +++ 2 files changed, 35 insertions(+) diff --git a/Documentation/scheduler/sched-debug.rst b/Documentation/schedu= ler/sched-debug.rst index b5a92a39eccd..a1fddfca2a52 100644 --- a/Documentation/scheduler/sched-debug.rst +++ b/Documentation/scheduler/sched-debug.rst @@ -52,3 +52,35 @@ rate for each task. =20 ``scan_size_mb`` is how many megabytes worth of pages are scanned for a given scan. + +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +Tunables for generic steal monitor +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +Feature for preferred CPUs logic. Available under CONFIG_PREFERRED_CPU +Files are at /sys/kernel/debug/sched/steal_monitor/ + +enable - used for enable/disable the steal_monitor feature. +Disable needs more than a static branch disable to maintain design +construct of preferred is same as online when feature is disabled. +Once enabled, it starts sampling steal time at intervals specified in +sampling_period and takes action based on high/low thresholds. + +sampling_period - sampling frequency in milliseconds. +How often sampling for steal values happen. This controls how fast schedul= er +acts on detecting the changes to steal time values. +Default value is 1000 milliseconds. + +low_threshold - lower threshold value in percentage * 100 +This determines what values should be considered as nil/no steal values. +When scheduler see steal times below this value, it will try to increase +the preferred CPUs by 1 core. Having value as zero causes too much oscilla= tions. +Default value is 200, i.e 2% steal is considered as low threshold. + +high_threshold - higher threshold value in percentage * 100 +This determines what values should be considered as high steal values. +When scheduler see steal times higher than this value, it will reduce +the preferred CPUs by 1 core. +Default value is 500, i.e 5% steal is considered as high threshold. + +Note: When the steal values in between high and low threshold no action is= taken +by scheduler. This is to avoid oscillations. diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c index f00c08581253..57ba35f7cf95 100644 --- a/kernel/sched/debug.c +++ b/kernel/sched/debug.c @@ -629,6 +629,9 @@ static void sched_steal_monitor_debugfs_init(void) return; =20 debugfs_create_file("enable", 0644, sm, &sched_sm_wr_enable, &sched_sm_en= _fops); + debugfs_create_u32("low_threshold", 0644, sm, &steal_mon.low_threshold); + debugfs_create_u32("high_threshold", 0644, sm, &steal_mon.high_threshold); + debugfs_create_u32("sampling_period", 0644, sm, &steal_mon.sampling_perio= d_ms); } #endif =20 --=20 2.47.3