From nobody Fri Jun 19 03:58:54 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 E1E3F361DBC for ; Wed, 17 Jun 2026 17:46:12 +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=1781718374; cv=none; b=qDYKHU3sBmoVQwqC7SrUI7eGVUvS5WAHsXQmo6TNVxfqpqjw5xW7t4S29gUxMQoC9lXtn2QruiVRuX0RIbo20pWccaZPxrHg+i0XWeGtVZtZ2NUwk5Woc31IY1c/WCrv2lcAGuT5YJ+Pf+HLdFr4lQGF90BSA2Sqcgf5eUarabA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781718374; c=relaxed/simple; bh=6hTrZchiV5AJk/X26tuihcmTSWsvZP6h0yXZxNGNulg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=mBEiRP/VUQ+zzkDjT3y3UHSbLUZJXpODmU2uoFB/GCSCDGDLz533jZnZfEig6bFNrigx583zqAK6vLF6yg3qsnIgWOF2vyz4QN7sXcn7uTiBFJdYpDmH3konO09XjB7NnKRLTYhd24D7330f8QcqdpwwoSBFYay5TRIiDR/RZHM= 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=TvOlYFIZ; 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="TvOlYFIZ" 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 65HFoTNp993094; Wed, 17 Jun 2026 17:42: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=V9yyyP3QyUGpI4IyX A8YCjjiEfkcxW1/Z4BWKUgqHu4=; b=TvOlYFIZ0f7Bd4HLAbLGrdrCct8Im7JZR tdin1HAZYbHSwza+f+4jXOh+GSi0qj0DWh87dHt5rH0Y9RLjv4VBTKe4UrXCokNH L7SHiHyQi0PYcK/q0l5AIThIDVfA2JX5SgnuQDmvs98tKb2mLliF/exRvgbAgU/f AVox1+UNBxcUHvBikO3iylkQB2WdbWdNcAr8qJAREKN4YwwrzFT+BllNGWKkxYFE UpDNe+I5x+TvEeEqeUHF/GmNTdE6LjEMywPy2r8sF18SmllSv0h/RIrKLQrlz3j5 56ZgVwkUEYxuhYNtYph5zhvTw8fcNrKmnVIX8kRp9DgSSWX6ux9Og== 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 4euequ48na-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:42:42 +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 65HHYbwJ009648; Wed, 17 Jun 2026 17:42:40 GMT Received: from smtprelay07.fra02v.mail.ibm.com ([9.218.2.229]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4eudvacbe0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:42:40 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay07.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 65HHgblu42402092 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 17 Jun 2026 17:42:37 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 0778920049; Wed, 17 Jun 2026 17:42:37 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id CD51220040; Wed, 17 Jun 2026 17:42:29 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.39.28.77]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 17 Jun 2026 17:42:29 +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 v4 01/20] sched/debug: Remove unused schedstats Date: Wed, 17 Jun 2026 23:11:20 +0530 Message-ID: <20260617174139.155540-2-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260617174139.155540-1-sshegde@linux.ibm.com> References: <20260617174139.155540-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-Info: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfX65aBACfQVKCf Lbc+Q1moQ/+eKuavgZ482B8KgDyiEk5lnh6EyJD/NIQND/QnRga3sh23YYvF/ZCZSiok1n9EsPT +ESJC0kSten9gVYWw06o2Bt/G/pVjyg= X-Proofpoint-ORIG-GUID: 1T0Pev5Fn7D9WmYImNZNa9nqWvoeEmLx X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfXzTPQ2tBmE6OA Sc5XBeXRySiGcejlylGtRdOez139lVnf4xeGrRkFWETXzvb/XZmfDO45hG5GAkj+enaETWeqSOq YVt2lAFmUhwwPgGxDx3559Fgk7a1ZekGWTtPn07ZPNaKLViXI8EmG7u5ZlmrHUUnPR4PozeaW3O GtBlkH2aNgFvxzvbLratJj/3KHLyZivSnMcsrtVPCKwUQExmDVJRzDhe1mh/JPIH6Wnu2NFQhzH UMh7KKl4wMCRNgWdQXeJRtZy7wvOk8ZYMFKftBnzvQim7dvDq2czylXpPx1gKEeYvBulI8Vt5Ap 8cwVQ/kE/0XAy1+CGLCYhzjKrhWyRt3+VAx6E6JEucF9IuG3ihLxCLUhPcGJULpeKmzkDBKwG2v mYkHrjggwmMurx1jIiO52BkE6Xju/QbcuSXpT9g6AE3mVW1aZc1UWFxRFpzNtb+g68wz0WpMnlw hx0Yf/vhL5g6k4fvqWQ== X-Proofpoint-GUID: ko2hM-3nawNE8zqdAm44ucB365_xLHPA X-Authority-Analysis: v=2.4 cv=L9gtheT8 c=1 sm=1 tr=0 ts=6a32dc92 cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=FelO9ux0wxsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=uAbxVGIbfxUO_5tXvNgY:22 a=zd2uoN0lAAAA:8 a=VnNF1IyMAAAA:8 a=NlpiSR-wqh4DhfsiYFIA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-17_02,2026-06-17_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 impostorscore=0 malwarescore=0 clxscore=1015 adultscore=0 phishscore=0 lowpriorityscore=0 suspectscore=0 priorityscore=1501 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2606170166 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. Reviewed-by: K Prateek Nayak Tested-by: K Prateek Nayak Signed-off-by: Shrikanth Hegde --- 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 35e6183ef615..fc6ecb3869dd 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 40584b27ea0c..f3a033b34ba0 100644 --- a/kernel/sched/debug.c +++ b/kernel/sched/debug.c @@ -1359,7 +1359,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); @@ -1371,8 +1370,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 19 03:58:54 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 4E0CD1ACED5 for ; Wed, 17 Jun 2026 17:43:08 +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=1781718189; cv=none; b=S0clq2iMQSDB3++/UUmFkuuyWa+UbwyCFKp8yeIJIApDRD6+7f6u7fWHCG5zCTXl6fAMuEhN1WL1TzzhYySVZ6t7cNZIbFgZraEaCxRbe+8Y51nUiIQMmh6/etyW3mxJwEWCg5AlEvR0JdrnIaaZmc2EmAO0E/qQBNTW1PXjecw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781718189; c=relaxed/simple; bh=NcJG/CLxwdKOROQpuvDihOAW7RGi3Ba3CYF9i1Fwrjc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=NAn/57vAR96eCVOoOnkOxRDxY3Jw0z4ck5dzkcHKjTcaxAEZ1zslxz9MZHnsb3Fxx6iInf0JrSZ7szQ84bh3/E7Mv3y8JCBrQy0FNIuaOvS6FgeD+JN+mZ9HROOD9BGEaToUXJP0F4QcIf61KftP9yjxR4N39ysVEoTPx+95SUA= 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=MUXzR4bD; 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="MUXzR4bD" 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 65HFpdE9723347; Wed, 17 Jun 2026 17:42:50 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=yRe02vxC8dCtJs6UF HJEXHfAbtpagrZBQ3v+M7tfExU=; b=MUXzR4bDV74gmctz2cM05+koJI29E+hNo YDHlXFTy/cklxjWbU0wzAdB9Fp/PqHMEMHxQmbocI3i1zYGtseDdO3a7jZaQHhAY MrbaM4f2XZDRXcsBi1uPGH0i+I77p6njfepQaWCmDVCdSuK/kAQ5tzVfaao5DSRE mQWWxkP+znLPW7OPAPiQ+Ds89wbYtBL0ZsDHydeq2aSwRdyS6aqmNFwwLoToqJx9 v1QaqNM+92/C1CSBEbzxhgx6cZYfGbNwzq6lKpwc1BNaib+4e9eMz9Gz7rn/64sv JKURZfV41/Dqhtp//CNOc46WXJzQfZHdbxvQtZubcxiWtnEaHNU7A== 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 4eueqx46rx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:42:49 +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 65HHYZht012976; Wed, 17 Jun 2026 17:42:48 GMT Received: from smtprelay07.fra02v.mail.ibm.com ([9.218.2.229]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 4eudva4cf5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:42:48 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay07.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 65HHgiiT32440652 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 17 Jun 2026 17:42:45 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id C233B20040; Wed, 17 Jun 2026 17:42:44 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 9E8092004B; Wed, 17 Jun 2026 17:42:37 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.39.28.77]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 17 Jun 2026 17:42: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 v4 02/20] sched/docs: Document cpu_preferred_mask and Preferred CPU concept Date: Wed, 17 Jun 2026 23:11:21 +0530 Message-ID: <20260617174139.155540-3-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260617174139.155540-1-sshegde@linux.ibm.com> References: <20260617174139.155540-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-GUID: qXPhXE4HbZZI4helQRqGhQXQeimX7gl8 X-Authority-Analysis: v=2.4 cv=Le0MLDfi c=1 sm=1 tr=0 ts=6a32dc99 cx=c_pps a=bLidbwmWQ0KltjZqbj+ezA==:117 a=bLidbwmWQ0KltjZqbj+ezA==:17 a=FelO9ux0wxsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=RzCfie-kr_QcCd8fBx8p:22 a=VnNF1IyMAAAA:8 a=f0vDFc08jm7PY2BpABoA:9 X-Proofpoint-Spam-Info: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfX2ZqoJO59vKNU UnOovXlwRr+Or12mjqM1r8ohJvamkwGrIosnJq6gh0RhEMQyzMqa6YnsJFUuOG1WpVtgX1Wh7k2 djAynu1KDXLw+8fWAfWYZH/G+rguvMo= X-Proofpoint-ORIG-GUID: WgZDIEmfCKXVirVWoSl7tShFD3kMA4v3 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfX0I4nW359NQJv DFckvIX6n5COjRl3ZtnI2e39SkGwVdtHilH7cn0HFk2YnI1zeZtklq5i5IYjV5NLc7MfPNhVW/l ZzpVV+AjL5uQLZU6ktEG5y6yjX0buQKiYgB3WUqx9noKlfBLFE5bOOS+5SUFdErM0YRA35bGFE2 NrSpW4X+PWml8mhHSahR5RllutiCi4WSsg8MJZ4ThwJH2cZ+flK8ZO+L6pTCJNKe70uMSfQp9Xi 4GfR1TxfPLNBI1BMVGZTgS0pmoRSwXJP+nZmw39VPOwRS4nRi9Mwu8e09F2+uRlG22N9D29Oook UxeEhcq7/9J3zi84Le98f0eeCqn8SjMkg55AG53FZEw4/Q06LgceppYgmoML4sRBHjHVkRAE9wv xFUbLRBesMzdbqD7xP5/HyXj7R51+8RnrEb4pcZJgFnFI2kFHrxh4Vw6hX2KGnmJrZps67HJn9/ tq1fwKSx7lNsOn+Tzpw== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-17_02,2026-06-17_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 priorityscore=1501 malwarescore=0 spamscore=0 suspectscore=0 impostorscore=0 phishscore=0 lowpriorityscore=0 bulkscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2606170166 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 is and the concept behind it. Document how to enable it and implementation aspects of it. Signed-off-by: Shrikanth Hegde --- v3->v4: - update docs to reflect preferred is subset of active. 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..f17c54f44421 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 combined vCPU ask from all VM is reduced +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 active 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 active 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 active C= PUs. +With CONFIG_PREFERRED_CPU=3Dn, it is same as active 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 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 class only. +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 19 03:58:54 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 8602437DEA8 for ; Wed, 17 Jun 2026 19:01: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=1781722908; cv=none; b=Z7BAjwAhWYHfrPUA+9hgbOBj/b2QUwJmFyPWv8lF2A9CH+g8TVatcpKYcZD0CV6RYUXfUyKxbTPzq+iEvh5CAXSTWZJ7JlENVnY5f9zlHM1pTa+AsVBr3hYNrkW/77DoU3+HBNZEobZoj9QCbF6yN24AKlUryiHGci0tKm5Kx9Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781722908; c=relaxed/simple; bh=qJ2qtdLFf6AxXLHgNfu6GUkaRS7NwEejoZIdLCYgzJ0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=kzNYM6SXx9mGunx6uZcRNzNIHuJ5BCLY/mxec3yDl2+DCBTJZEyzNoYw3ddZ9uoqwdrLEi5tf9jTs+QhhDPmcUvDa4cT+OrNxLPoXiNmVo4EgRV8UYY9xI1Sc60ZszF2KaQvnQgVmXeBs9kbbKS6ZFa0GAem//x3uOwqQ98W2wY= 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=HjQ6waA3; 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="HjQ6waA3" 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 65HFoJtf824895; Wed, 17 Jun 2026 17:42:58 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=SkFXEnvvOp6uwGEob 4ikwWS7jdRg4XsIHExbJ0ZojEo=; b=HjQ6waA3HcooquU5MHYyxaxIQWTkm+cdo veH2F2Ag7XErq7OULrLe/5JJFvLoQ+w4asuv2Dwuy+gHuQ05KUmtAZMsmbVmEDnS 4duIPyNuYY5oSdB66E4xacm8LvcCqzGcgjwxCwXrCaYwVGuU4j9QJkYt4neFjZ1K b5jXuz5ycMkFyB2qL7AQZ+G0/CY9dUAByR1TbeO55jY0Ibp+TWHoJB4UCGN4/wCq rvBtGTl+IFynupm4wlbrhJQKzLzOdJcyr11lUThBuGKB3LAvL9jILF3Epi3h1xy9 dlaN71CAIyOD13xTf7WcVIfyntc5khgJVGCsAQ7aZX4RrE6AaPn0A== 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 4eueqvv8u9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:42:57 +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 65HHdXsC031907; Wed, 17 Jun 2026 17:42:56 GMT Received: from smtprelay02.fra02v.mail.ibm.com ([9.218.2.226]) by ppma11.dal12v.mail.ibm.com (PPS) with ESMTPS id 4eudva4by7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:42:56 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay02.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 65HHgqvC51839370 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 17 Jun 2026 17:42:52 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id BC17F20049; Wed, 17 Jun 2026 17:42:52 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 4A79420040; Wed, 17 Jun 2026 17:42:45 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.39.28.77]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 17 Jun 2026 17:42:44 +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 v4 03/20] kconfig: Provide PREFERRED_CPU option Date: Wed, 17 Jun 2026 23:11:22 +0530 Message-ID: <20260617174139.155540-4-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260617174139.155540-1-sshegde@linux.ibm.com> References: <20260617174139.155540-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-Info: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfX603m97pKEm73 7tPJsiu9vDh3+txjpdA1/In4cLrv9SvP3iu/WjfzKtVNQokcT3isL0Buct5OMlkuwMQ770eSQKT /C5juYu/wHTnFNOd587YNnJ/+MUH1vY= X-Proofpoint-GUID: 8Ct6fqIrHtHzUBW8NKqcjuXEAhZbGdJr X-Authority-Analysis: v=2.4 cv=bMgm5v+Z c=1 sm=1 tr=0 ts=6a32dca2 cx=c_pps a=aDMHemPKRhS1OARIsFnwRA==:117 a=aDMHemPKRhS1OARIsFnwRA==:17 a=FelO9ux0wxsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=U7nrCbtTmkRpXpFmAIza:22 a=NEAV23lmAAAA:8 a=VnNF1IyMAAAA:8 a=BWPB87uJ6lDr-Q8--dwA:9 X-Proofpoint-ORIG-GUID: HVR4pRsSXiy2fYDHb48RGImIo1QbyisC X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfX3/TvjPwhbdoz UlI2mXn9Qqaw4ita6RwVHCDRrz5DHmSaK9aNYfl+9CPVTGohO4MYvo1Erq+KYlSLjeHe2O5INB+ G4KAMrYsk2LhDbLdgykXJJjqKeQsx43FtmbvB7nZwtichNwbPI6I3ByJvBZN4z/DxMiLxtjspJc K+8MIKq+V/G0gmdOwwAcbwXdpiVIJy4sykGnuPvz3iao1fBXaS15MdwWPdfWSLepxZcrPk2ff2b XYhzHym/dWvlV2KObd4SVybnfslpxpP3xfOGb4HKHbc52Xfs9oa+4Tijam18pYdHfXqhnvc2yvc GJgkuFJktf+ujkGLnYvdfmTqIua5M4y4mSqA5ppAwEa+9LzkWVOiZ1jBV6SLrzYF/smOcxo3Wkr PbkzlVT5D0128R1kosyv0FlnhlAJtVR6yuA4nLeQ4+T9xnKv/kTXY8PAkUewh6YBJ0AI+mHRYyu v5AAofRHrSGjkd5gBHQ== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-17_02,2026-06-17_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 impostorscore=0 malwarescore=0 adultscore=0 spamscore=0 bulkscore=0 priorityscore=1501 phishscore=0 clxscore=1015 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2606170166 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 active. - Avoid the ifdeffery around PREFERRED_CPU in many files. Since paravirtulized 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..0995f5ba66eb 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 active CPUs. Depending + on the steal time when steal monitor is enabled, preferred CPUs + could become subset of active CPUs. --=20 2.47.3 From nobody Fri Jun 19 03:58:54 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 329D01ACED5 for ; Wed, 17 Jun 2026 17:43:22 +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=1781718204; cv=none; b=X0RD+q7JuVcCN0QShccOEOAqZgActQoNeQXuP6tIBvv3ZzcVity97eFbVeFpsB8IxLDsDD0Ki/SA15Lel39g2w341j+DlzkkqAotNGWNF5rfedabHTn4k7xxtOgLfRadsJZN74uofKYgvdqPJ2qVya8Hd3CKNZCjNcazWw+U3zE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781718204; c=relaxed/simple; bh=aLnUUUvVXd2cwLWrask5MDwP37Kns5zzHffS2+k41RA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=PN7twQ1DhbkFV7cGDtetyyjWa9DvlO7dB5A/dieAP0i6iv5xrCbD45uLecxoM5Q4dqRMoy2vRZerNS1kkJyJGnliWC7Ig4k7swUvfTKBEBdTSD5aHeVcfxAHfM6xclT60N0o2OCw8KR9WroPgLPSR4t5yv9ZRijkB+gpbUQAiU4= 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=UpAQgdXM; 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="UpAQgdXM" 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 65HFppZj744621; Wed, 17 Jun 2026 17:43:05 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pp1; bh=xXt+f5 iY38NpN0EYlFQFcXzA56VBaWMPq79UwN2IM9M=; b=UpAQgdXMvxC+MtJGTh4F4Y qcIhc4Mhf1oAWd+v5ES4/8NzuzivOZb3annx5UXw9HvJNreGlESFENlrq0uwx4S1 75+SIMvOF7MeIWmNRhQ1MzBfTFUmXxEKPQq4oA7Rkoa09U1JUPzeg/va0STZyfy4 qhxkoBlbuWzAGVE1MRvmCpeutFj85rISK4oRnY3DmRUFvPQK8cQ8IAwPLAx/LTGU DP21zI0O6PLjC8hhIMLn0IU2u3WPVC4ZL8x40ZLunuLkInHFjAq7lrIfW+ik1QtW RP9v4PzdoebyU9vaG2tqeC/CJ55g73vVSl0dROUnZfVnjEXlxPh6rmt9kGAN7jUw == 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 4eueqx474e-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:43:04 +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 65HHYir5018654; Wed, 17 Jun 2026 17:43:04 GMT Received: from smtprelay03.fra02v.mail.ibm.com ([9.218.2.224]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4eudvacc70-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:43:03 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay03.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 65HHh0P655116260 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 17 Jun 2026 17:43:00 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 3BAF92004B; Wed, 17 Jun 2026 17:43:00 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 2FC3B20040; Wed, 17 Jun 2026 17:42:53 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.39.28.77]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 17 Jun 2026 17:42: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 v4 04/20] cpumask: Introduce cpu_preferred_mask Date: Wed, 17 Jun 2026 23:11:23 +0530 Message-ID: <20260617174139.155540-5-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260617174139.155540-1-sshegde@linux.ibm.com> References: <20260617174139.155540-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-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfXzPXfFbC0qPk0 Bv9Ggfg4Sj/sBxQX72m4rygl/Q1vISLGaJQfQdkDD0p6WUcMl4keVZ50LUmnv8S8g3q9VKCg9ZO bEVOUxu5mSIEbbXBYspGbYquSI+cXzW7gRkenY3Vfv83AILiNg4sLJ++EJl2TaQZiRGC9L67uuQ 2khInkqX3N/w9NIEm2LPcvAtiYjziu/YFdTGYfmfOm24ZF8x0/HOB8XvPD2Bt8lGHIyT6ZWnZ0e O35Ue0q27C5XXZ9BlWkbYbOgCAwyX9dLPjV1UipYTik759ncWBuzU7y5d4VmbRrXRTMOhZ68D3g 9TFVbSfz118YCYC7pGA6p8mBQdzSB0BFz//W5Z3QBr5AA2vmRZTneWgoD5PX0VuAlrh0fQyIEWN ha8JOtfvOh53id3Y8NWcyUZEKblCLdOJVvdM+JViijs77LceNUVh81PKGQG5XWej3xoWIwLvZbc 9gqz7Jrp6JK7xbzgn3g== X-Proofpoint-GUID: sofkNG8Fm2w1knQCdGX7IQXLLttGcjDG X-Proofpoint-Spam-Info: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfX/2lreMwyPyQ7 8riXSURaGYqHHivUrTlQ0uP0vbN6DzeEkARKNx+kdVb9jZMUMDvKSA7cN08WRCNKjI3bonjYXfe Ua6MS3IupiePcGjhT7EAtrXncDXALu0= X-Proofpoint-ORIG-GUID: wnukW5y3oSgvGOwQc-ZW2jyagyvXkWxL X-Authority-Analysis: v=2.4 cv=auGCzyZV c=1 sm=1 tr=0 ts=6a32dca9 cx=c_pps a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==:17 a=IkcTkHD0fZMA:10 a=FelO9ux0wxsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=Y2IxJ9c9Rs8Kov3niI8_:22 a=VnNF1IyMAAAA:8 a=0mhcXptKf_jZ1Pm6q6UA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-17_02,2026-06-17_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 clxscore=1015 priorityscore=1501 suspectscore=0 impostorscore=0 spamscore=0 lowpriorityscore=0 adultscore=0 malwarescore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2606170166 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 becomes active. 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 active. i.e. preferred =E2=8A=86 active =E2=8A=86 online =E2=8A=86 present =E2=8A= =86 possible Signed-off-by: Shrikanth Hegde --- v3->v4: - Make preferred subser of active instead of online. include/linux/cpumask.h | 21 ++++++++++++++++++++- kernel/cpu.c | 14 ++++++++++++++ kernel/sched/core.c | 5 +++++ 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h index 80211900f373..30ea64cc1656 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_active_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..c196ba5d8b2a 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); @@ -3154,6 +3159,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. */ @@ -3164,6 +3177,7 @@ void __init boot_cpu_init(void) /* Mark the boot cpu "present", "online" etc for SMP and UP case */ set_cpu_online(cpu, true); set_cpu_active(cpu, true); + set_cpu_preferred(cpu, true); set_cpu_present(cpu, true); set_cpu_possible(cpu, true); =20 diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 2f4530eb543f..9e16946c9d62 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -8685,6 +8685,9 @@ int sched_cpu_activate(unsigned int cpu) */ sched_set_rq_online(rq, cpu); =20 + /* preferred is subset of active and follows its state */ + set_cpu_preferred(cpu, true); + return 0; } =20 @@ -8698,6 +8701,8 @@ int sched_cpu_deactivate(unsigned int cpu) if (ret) return ret; =20 + set_cpu_preferred(cpu, false); + /* * Remove CPU from nohz.idle_cpus_mask to prevent participating in * load balancing when not active --=20 2.47.3 From nobody Fri Jun 19 03:58:54 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 EC7B73769E7 for ; Wed, 17 Jun 2026 17:43:27 +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=1781718209; cv=none; b=iLqsOIeqvQWDR5MihSQsaiGvo/C37ppwdxk15zElobQ9CNCIKTsjG67naH07iZdWjgt6EdtEftm99Wf7BPhh2wyZFvYFcB7V2eKAPQd4I2r/U1mOAwWWH8RpHp+rNoZCrpAB81s83EA8HgjvstJiw58PAS6uXCXdaPMRS2vL8mc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781718209; c=relaxed/simple; bh=JzJPKc21H8pZZq8N6Vbh6r0Qw2ALS0gCFGYtZjOkOgM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=HjFowMnPFxvoH8l2pI712BR4EhXmGC7usnbw9cPRGFpaqG7TRDq4SYSCsutm61VJf1VJ+g9NbKchyh6ODUcXMNJ6ty+PyfIoWO+OHvYIK0R9W/6OEgxrziZdLcZkMd0vugguvaFPQeewF07OK2WBx33YoNUA6SZHP+IIsuTXm0M= 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=OiwMCkw/; 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="OiwMCkw/" 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 65HFpp21744622; Wed, 17 Jun 2026 17:43: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=akqdjoOLD38kZE4G9 1ivjxHVgJiEWq0/Ka5nl/0hDaE=; b=OiwMCkw/Pb05+x0caxn3kP1Hkt//JBK7r mBZPIcwXmpVdkSZlHgvdKuwqo4MsVvHXvPYDL2hJz8nZx1/PyPfa4XfnWHgSnC/n F0vCPivQ9HFe1LJeGtu8WDs8grjvrXcNMF5kM+x0YGt52jcOGHBHf2RF8ETJfBk1 vG+7MWuwqAyMu14Qjkg6ok0c90eCblgqEGPJhIvyDmShEnUosyQ3Tf4IYbS0rMgH kBlQovUzeqz4t1Y8Wf5qQ2RqhWynEkgAhMGdRqtea3Fi77b+iaUzohHBGE0vhxRb WnnujbKQ2M6yOAmoA2bnm2KaYLiKkfZPWg8/aOKkpM8wXl2KNYE8A== 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 4eueqx4750-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:43:12 +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 65HHYceM009661; Wed, 17 Jun 2026 17:43:11 GMT Received: from smtprelay03.fra02v.mail.ibm.com ([9.218.2.224]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4eudvacbfm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:43:11 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay03.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 65HHh7oY47907170 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 17 Jun 2026 17:43:07 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id B2C3820049; Wed, 17 Jun 2026 17:43:07 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id A194C20040; Wed, 17 Jun 2026 17:43:00 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.39.28.77]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 17 Jun 2026 17:43: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 v4 05/20] sysfs: Add preferred CPU file Date: Wed, 17 Jun 2026 23:11:24 +0530 Message-ID: <20260617174139.155540-6-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260617174139.155540-1-sshegde@linux.ibm.com> References: <20260617174139.155540-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: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfX954pKZRpDYT/ z0+CpuckI+I+s1er+tYTcBO4ZnqSdFDEk8FsAS3J5zMl9Ei1hbj5sasaU7lTjqjxI1PKWOKJ+Tb REoI7zf0OEZjHp0mASdZz+zWRUD7ck2B75ANCZUeYUix/VAm6m9F4aq0IL/TgiKCcdYBKx6GOHF ST0qd/KfDNuYweIHvf4MyURvRRig1+PBW17EyiW2cU99Kw/Vxb1f9iZO1DDo/x1yi7eTzw1skEK abXJgLbAAlIL+OwoMv1jDYtVa86PmGWrqBrQehl33FiSCxcIDTKBrN58xiXEMYtK3vQweao5iWg 2hM+gG9rtwusnCeVHuM2Jayasrb5Y7itXafbl/frtRL4j1oOK765kUUGEvskCahIa9ka1Z96xwa kEkceyt1w4/WUD4uBpbCyFa5G1sQROKwEdPPG7BB6mdHonbRW32olfSgWr5GkOQbEMWsAhCZk0k b2bzBLgKzedIJW/4gMg== X-Proofpoint-GUID: oj2gnzMehYOp8ONAL_aupHWBZTxR2RV9 X-Proofpoint-Spam-Info: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfX+UOwNvYpCU7b w24uKsORt6DDT6zB4+hC5hMKGcYmU7nVp6MPVSkgEDsmcCNueqKZLabHZZhbU242o0jxtHFtfX6 iS1Wwwow32/eox0cCoBzDsrI+KwH9Jk= X-Proofpoint-ORIG-GUID: H0H5mzvOifbqlvq82whfoMOtBzIhEf4V X-Authority-Analysis: v=2.4 cv=auGCzyZV c=1 sm=1 tr=0 ts=6a32dcb0 cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=FelO9ux0wxsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=Y2IxJ9c9Rs8Kov3niI8_:22 a=VnNF1IyMAAAA:8 a=VwQbUJbxAAAA:8 a=md4hqiRJsRObfrzgdmAA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-17_02,2026-06-17_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 clxscore=1015 priorityscore=1501 suspectscore=0 impostorscore=0 spamscore=0 lowpriorityscore=0 adultscore=0 malwarescore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2606170166 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..5fb973d53287 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: Jun 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 active 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 19 03:58:54 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 44EAE3655C3 for ; Wed, 17 Jun 2026 17:43:38 +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=1781718219; cv=none; b=WNfgTnwbS8dh00I81wzS6FfkeAIO/xievvFurXikUKHubES2B/Nh/iIAdbYUNePtvUE3VqxPe5CGWX23Jq1Tj0731l+k2S6II1ceszJISJqh6U+YyML7DrX62ePWtIttoKgUDnk6uLYFTmTJKYbkMUiTM4oBhKzsm0W8g4d8uQE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781718219; c=relaxed/simple; bh=vOO86NrgnMI97CZAL5jutNKTr1nFpL8jrhnuGpoAnio=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=LrWUFzMY4Bmu4cqjlM2RQfO1xgSwbQGZOSw6+Q3vKjxpI9iVrCB06NKAFEuuC+kcGWEyKLlLZSanljFw980qHztwh2j3Qr1P9J4YfVKIIbiyw74t2cILrAFeDWqtCM7TjCCLHgtpeHwM09s3pLH4VvDXAN1vRxB6vPQ01QL523E= 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=CP2jV31i; 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="CP2jV31i" 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 65HFqCQX762107; Wed, 17 Jun 2026 17:43:21 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=gYjpb14tOnVlwAI7l fHT/Y8QvDoRAuviJqPun8GYwHg=; b=CP2jV31icsFzTAp+cGwukycqMOKJGJjt2 0KWXo8Eo2gwvo1M4fJYeU8lY72Viw0zBIw7RiS5BIIagLI2NSfMYhYmnfXOXWvMg WrfDEhqRE0XtUyAhgP0S5yD26mo/YKdR5vR3B9blqqiNqf5ZKRIucUlTAlGD3C5V kixpzJNaNNXBP/NjNuoCXeGc1OclosOtmLyaydqit2d3gIJHuzI8S+4PtazpXH4H d7xHkC2iuf6EXDe1HeHF1eNADk6E+5sIL9Wn4r2/pDezALzZ7JFGbu2YBtNvzsMx 6BUhYCtF2hfeshKBJRwgJWFbd7ylVTtu1GB3uKVJQbLmD8lgRNTQA== 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 4eueqxc6dn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:43:20 +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 65HHYbfS031078; Wed, 17 Jun 2026 17:43:19 GMT Received: from smtprelay04.fra02v.mail.ibm.com ([9.218.2.228]) by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 4eudvacc1r-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:43:19 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay04.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 65HHhFek16908624 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 17 Jun 2026 17:43:15 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 96FE520049; Wed, 17 Jun 2026 17:43:15 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 22DC620040; Wed, 17 Jun 2026 17:43:08 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.39.28.77]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 17 Jun 2026 17:43: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 v4 06/20] sched/core: allow only preferred CPUs in is_cpu_allowed Date: Wed, 17 Jun 2026 23:11:25 +0530 Message-ID: <20260617174139.155540-7-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260617174139.155540-1-sshegde@linux.ibm.com> References: <20260617174139.155540-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=OcSoyBTY c=1 sm=1 tr=0 ts=6a32dcb8 cx=c_pps a=AfN7/Ok6k8XGzOShvHwTGQ==:117 a=AfN7/Ok6k8XGzOShvHwTGQ==:17 a=FelO9ux0wxsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=V8glGbnc2Ofi9Qvn3v5h:22 a=VnNF1IyMAAAA:8 a=eC0SA1m0-JWMKL2UKjMA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfX7+y3BtkiVk6n Xfh5MYAyduI40zXpnLd5DZjdH1w4tluqd0FQl8KMSUqE0XXKJbOKi4sFleoZv/8NcFsZP0VnWUw VYa6jri6zYUqjgh0kJPpHvwAG0r7PaLBNExf8/qCSWPcfN4sP7w3qUpRiSRmtvYfU5eluYBF6pH BtM6OBSk9jD3MC7z8aPBz53ci8coP0YJgBZEDVTwgzwQpzHDI5bj2A76bC7ThfkAvKb4Qyxm4G+ JZdo21x46nNr0bv2lfyU7Vb/akbkMcIW7FXdb/PN7KDnh5cDcg5edshW4K8DOFZX+KYtiyXEFBR 1wcvOQ4HaC6s0wnuW6ioChibNrCsNvjNW9Sm6LqvmhoKeaTILrn+nYwU+Zc/sjV1+HHIFDME7EL RazzV5leRJz2y2O7OdD5X4NtMGZxm0t+nyq/IIXK3gLScETqacShnip5/5UFqHs5gWFFSBJ/86L wgZeoDliipjS+16iQLQ== X-Proofpoint-GUID: GBpl5VnabJBQeDLDdhf9R2hQKVL9w3-p X-Proofpoint-Spam-Info: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfX8cXWbx1Z7b/O 3gEc3pF5xanUStRjG4LQY62HDPTg6GIYeh94cuWDf2oQcmNAWw1aXgpHkzLOWfv7ccr1tzrnXgM Vwv9w8UIX9yNvYdz568MirDF3Yb7KMM= X-Proofpoint-ORIG-GUID: rvDwPFYYXvnlNiNhFnDM0F-IVpanYSJM X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-17_02,2026-06-17_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 phishscore=0 bulkscore=0 suspectscore=0 lowpriorityscore=0 impostorscore=0 malwarescore=0 spamscore=0 adultscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2606170166 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. Since is_cpu_allowed can be called directly or repeatedly in select_fallback_rq, encode the info in task_struct->has_preferred_cpu_state if the path is via select_fallback_rq or not. This helps to avoid N**2 complexity for the rare cases. Signed-off-by: Shrikanth Hegde --- v3->v4: - Missing case of PF_KTHREAD is avoided. - Add a new field in task_struct which encodes intersection of tasks affinity and preferred CPUs and path its coming from. include/linux/sched.h | 1 + kernel/sched/core.c | 34 ++++++++++++++++++++++++++++++++-- kernel/sched/sched.h | 18 ++++++++++++++++++ 3 files changed, 51 insertions(+), 2 deletions(-) diff --git a/include/linux/sched.h b/include/linux/sched.h index fc6ecb3869dd..2d0b1a6d50ac 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -1657,6 +1657,7 @@ struct task_struct { #ifdef CONFIG_UNWIND_USER struct unwind_task_info unwind_info; #endif + int has_preferred_cpu_state; =20 /* CPU-specific state of this task: */ struct thread_struct thread; diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 9e16946c9d62..714816cfa975 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -2500,6 +2500,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_check_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; @@ -2508,9 +2510,22 @@ 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. + * + * If CPU is non-preferred and task can run on other CPUs which are + * currently preferred, then choose those other CPUs instead + */ + task_check_preferred_cpu =3D !cpu_preferred(cpu) && task_has_preferred_cp= us(p); + /* Non kernel threads are not allowed during either online or offline. */ - if (!(p->flags & PF_KTHREAD)) + if (!(p->flags & PF_KTHREAD)) { + if (task_check_preferred_cpu) + return false; return cpu_active(cpu); + } =20 /* KTHREAD_IS_PER_CPU is always allowed. */ if (kthread_is_per_cpu(p)) @@ -2520,6 +2535,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_check_preferred_cpu) + return false; + /* But are allowed during online. */ return cpu_online(cpu); } @@ -3549,6 +3568,14 @@ static int select_fallback_rq(int cpu, struct task_s= truct *p) enum { cpuset, possible, fail } state =3D cpuset; int dest_cpu; =20 + /* + * Cache value whether task's affinity spans preferred CPUs. + * This helps to avoid repeating the same for each CPU + * later in the loop. Encode call to is_cpu_allowed coming + * via select_fallback_rq. + */ + p->has_preferred_cpu_state =3D task_has_preferred_cpus(p) << 8 | 0x1; + /* * If the node that the CPU is on has been offlined, cpu_to_node() * will return -1. There is no CPU on the node, and we should @@ -3560,7 +3587,7 @@ static int select_fallback_rq(int cpu, struct task_st= ruct *p) /* Look for allowed, online CPU in same node. */ for_each_cpu(dest_cpu, nodemask) { if (is_cpu_allowed(p, dest_cpu)) - return dest_cpu; + goto clear_and_return; } } =20 @@ -3604,6 +3631,8 @@ static int select_fallback_rq(int cpu, struct task_st= ruct *p) } } =20 +clear_and_return: + p->has_preferred_cpu_state =3D 0; return dest_cpu; } =20 @@ -4612,6 +4641,7 @@ static void __sched_fork(u64 clone_flags, struct task= _struct *p) init_numa_balancing(clone_flags, p); p->wake_entry.u_flags =3D CSD_TYPE_TTWU; p->migration_pending =3D NULL; + p->has_preferred_cpu_state =3D 0; init_sched_mm(p); } =20 diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index c7c2dea65edd..38fd84b0b8f8 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -4213,4 +4213,22 @@ DEFINE_CLASS_IS_UNCONDITIONAL(sched_change) =20 #include "ext.h" =20 +/* + * has_preferred_cpu_state is encoding two bits of information. + * First Byte is to encode where the call to is_cpu_allowed coming from. + * Second Byte is to encode the intersection of task affinity + * and cpu_preferred_mask. + * + * If 1st Byte is set, call to is_cpu_allowed coming from select_fallback_= rq. + * That helps to avoid repeated calculation keeping time complexity same. + */ +static inline bool task_has_preferred_cpus(struct task_struct *p) +{ + int cached_value =3D p->has_preferred_cpu_state; + + if (cached_value & 0x1) + return p->has_preferred_cpu_state >> 8; + else + return cpumask_intersects(p->cpus_ptr, cpu_preferred_mask); +} #endif /* _KERNEL_SCHED_SCHED_H */ --=20 2.47.3 From nobody Fri Jun 19 03:58:54 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 527E4363C40 for ; Wed, 17 Jun 2026 17:43:48 +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=1781718229; cv=none; b=X5xchZ2MFTXESGTlcMg2xnmuzGc05bcwgM2596w/WDjtPFu87WlhTAfrlcwK9hmWyvgDOsu6LIOsaetzzNqUrtIL8YbHp4QNLONTNvL0Atjf4XMzxTbOfyU76zUH4PmehJsrnk/Mq+CpDM6/j3deWMvD+3SeFfhaIyWRxL+BiTs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781718229; c=relaxed/simple; bh=6bCY9mdi07c25Hi3yliVAI8Xs3oUG/7iQJUOO3ldLb8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Wif5WywItR83fTSATQoHuJda4YEE2R8ybES42Dt2zrNDjAT/ynFjzeRanqpJrZW9C7+itKpcocQ7rf9eKADuIbSDwmBByungCkdx+VrD6S6XwHLMm0LQeJodgsMbqk21G+U828SFIwuJyke2Xtcrej1Wf0ei996FGy1XDhGSo64= 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=OI68YVrA; 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="OI68YVrA" 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 65HFp2ZV825974; Wed, 17 Jun 2026 17:43:28 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=pGFMxynAHYlbs1Bdy NudR3RzxrXjF+soW1NHt0FhFQ8=; b=OI68YVrAzmIrTW+UsaKwD4Uv4Br/EdTRr RCNtJfnVmiOxXhPLAa62dAZtS8oKtW+JISuDzlncOuJ+lw6r+e1wIS/bk6M9QTgu NRfPTQ93zkWze5ekl9KKLgB5fbmamQeHlz6li1QMKzfpANEg8qvIrkSyjEgGALIj sXzOOCLqtZFGmsb+jxKF0FQ+pU0ucWYeeGh9saP/R4ufBKlh6Dv3OggGoqxpB3dE 1s4Oo4vamnzOq2QL+LeR1zwd01xcbBF5CoAdZUh97/HiuhtO0c5dqVdfK8ipFLBy YSalPkuKEpVh29rLSRWWtOLvC9L21T0muq9I0s10Qfa0L46YwpCSQ== 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 4eueqvv8w1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:43:27 +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 65HHYbJm012990; Wed, 17 Jun 2026 17:43:26 GMT Received: from smtprelay05.fra02v.mail.ibm.com ([9.218.2.225]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 4eudva4ch5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:43:26 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay05.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 65HHhNV049611250 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 17 Jun 2026 17:43:23 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 05BD52004B; Wed, 17 Jun 2026 17:43:23 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 041BD20040; Wed, 17 Jun 2026 17:43:16 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.39.28.77]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 17 Jun 2026 17:43: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 v4 07/20] sched/fair: Select preferred CPU at wakeup when possible Date: Wed, 17 Jun 2026 23:11:26 +0530 Message-ID: <20260617174139.155540-8-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260617174139.155540-1-sshegde@linux.ibm.com> References: <20260617174139.155540-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-Info: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfX1ejEKp/qKRd4 2mVRpNycKEBTSFmMjTTfIBK1Y44Me/JbBsLcomQQ1z/n08ghZdRxXSwHBcGOrgaOxUdvl5OkVIo aI5/Axyl0/JF+cYD4Te+pkjY0X4oMp4= X-Proofpoint-GUID: X9U1ad3qGZ6uLmK3AvcWv1H2egrq7X_T X-Authority-Analysis: v=2.4 cv=bMgm5v+Z c=1 sm=1 tr=0 ts=6a32dcc0 cx=c_pps a=bLidbwmWQ0KltjZqbj+ezA==:117 a=bLidbwmWQ0KltjZqbj+ezA==:17 a=FelO9ux0wxsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=U7nrCbtTmkRpXpFmAIza:22 a=VnNF1IyMAAAA:8 a=aa2H8g5P-lxy6MgAFPcA:9 X-Proofpoint-ORIG-GUID: jBbP7xwlSLsn0Hx-UdhqSnUweTG-qjHF X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfX2gp0V2+KWOsF emd7cI8yiwDRKjQbLI5zvw0FbST/Ya39tHZ+x8lBY2QVT04oh+a/WePWM09xu0x9qV9LCJVjvMy tn1bp8KJItze5jF+A2ZN4dswkT+EaWug29Cgdd09C+RJWTEMwTB1ujBt0akD2XIQ26nPurGpS7L 7cuF+ZMOWKiEaqmmhTYfKrRDv5zXG9OCeVq6kyfZOmUY0DAMtShRNTItKwLNHQiKP03zBUSAX6E 0WQyE6ldfyYlZhq398vCsf2bWk66U55ug1H+JO8fB+MUtEi8S2/fRvjDnMKf27QysRco3rFh0CN QoUNCx+b1OUDxBSeGl/Cq3WdRlZpOP12Lf4O7NP6xgfU2JiR3b6Z0vn0jCyUAfisF/1tkiHOPes cZo8iT9ciu0zrtJhudbMjtaU9NaI0nqP1SDvJCKmzMQekLHk9OmomcRLrOxv8ZdIqXOViCpICxW 0WAVej6T/O2+8V0o37A== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-17_02,2026-06-17_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 impostorscore=0 malwarescore=0 adultscore=0 spamscore=0 bulkscore=0 priorityscore=1501 phishscore=0 clxscore=1015 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2606170166 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. Signed-off-by: Shrikanth Hegde --- v3->v4: - Drop check in sched_balance_find_dst_cpu kernel/sched/sched.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index 38fd84b0b8f8..f194a5007e3a 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -1434,6 +1434,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 19 03:58:54 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 CD06937646E for ; Wed, 17 Jun 2026 17:43:52 +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=1781718234; cv=none; b=WuAKEakQGN9XyTGXULdewSR1FUlkKFFJQNWL2S6a2vb0fVPfpAMV8BIkzfvhmn3ftvMRAGNLUC505G4KTCFgfCl/qZhHLUZKLqEo4OtrXBrcQhj3hA69Ee3O9tF6iByGijZbxVJRdaRZMhZfbQctx7r/a/UHkP4BwtLBP08sYKs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781718234; c=relaxed/simple; bh=ez+WZcYjyksUYRQLAEJowH+FuSMMVb9IQXIIjnujB1k=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=CpyMFMB3mCnBtsMY3oGOill8SRYof8shImkwbBczC133QRTPvPUCKFrLFYHxoCEMVzLRtw7hDknRt6CPeWWkuwI2BvyTO6glDARXMO4jzr9VwlXOEG9FQaq6JhwSBXE6cibX4hYqNvSm1RREyZAFWtHtTE38yA1kUBd+zpQ1yuk= 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=kw7xtIvf; 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="kw7xtIvf" 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 65HFph37744343; Wed, 17 Jun 2026 17:43:36 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=rhsB9KaLXVGyRHN7D rlsbO3VQOHZX9Xo6huZTux0/RM=; b=kw7xtIvfw/KQM08FPX5xSpsgVqcQ+osTP frqnsItVTaroZIf0oyLMN51ZWTeE/2/sa/B1HC7TevSHB/4u0zWfa574zi0mtR2/ jtvDXkxDIScrHlm26ff/sa4TXDnLlGkZDMlCZNaQ3dDvaeSOaG6QWPxRgff4wznl wwjlsw0BRlstu8IJNGGjeHhNH7sKS7830YgjfWrDtgbNv9L77HbJTvXqKdi4CuEX 4DeVIGUj351qr6Zec35f0gY784VXOTccV5ZJPYUs4GXmAehADl7XRDm5NzsRkFXj YMOmpEr9A38Oukr1ynOvX81ptMrsFIl++XamNSSQDSdN1qW5G+qYg== 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 4eueqx4772-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:43:35 +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 65HHYger013009; Wed, 17 Jun 2026 17:43:34 GMT Received: from smtprelay05.fra02v.mail.ibm.com ([9.218.2.225]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 4eudva4chs-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:43:34 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay05.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 65HHhUvs49611012 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 17 Jun 2026 17:43:30 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id C368B20049; Wed, 17 Jun 2026 17:43:30 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 949AB20040; Wed, 17 Jun 2026 17:43:23 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.39.28.77]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 17 Jun 2026 17:43: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 v4 08/20] sched/fair: load balance only among preferred CPUs Date: Wed, 17 Jun 2026 23:11:27 +0530 Message-ID: <20260617174139.155540-9-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260617174139.155540-1-sshegde@linux.ibm.com> References: <20260617174139.155540-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: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfX81157hx5Kzih Etivf/2auF3QMz9Psyu4J1Xd5EezYH3zsLhfzp9NkUuo7wjkPu/8tkHNsEKTDQqdytLdaldD3Na jo+DRGT918nBEho5IOc9GQnEMlfP//AcVfqeUH4Ufgc3s8PATtVSm//GbgdkkWn+m6ZSvboeSiy 8eyCq0TGuPCmOstk9/BfECSGR3/HRhovufAHVRxOZcJm2S7VHVfpi+qkZqYUbrpOPqE5A22TiUF Q2aDxurC/ZwttdEJxhrSwlHKnUnsrM89owuCv/wDX5358duGg3d2/jplwssjuh1qbWEdD4rL2/f xcJ4HSf61bJ5C9WikzQzb1JABEuKszD+PiUOJVMq0uMTaOR5hMvF2bUljCjAZMVt3+62S9rMSMX MbE6bBMby8cNZUa6gh+0h3fzQZq2I3tzBb4ddBm9BxQCVHyQM6v6vVWXE5fkZa0uP7sWmYAb0aa d8G+jAW68jOuXph9D6g== X-Proofpoint-GUID: 2knXGPZcigwetaeWFz_weIv-M3GEEh7T X-Proofpoint-Spam-Info: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfXxiVnc7sBHdTr +nP+npI9BV15xo6LnP/6ItJVL2Uclv3twOYURYCKAXeiF7ZF9Fr/iBhPQxy9nJboyb5Oh9Tu4ja 0nDpgMTWlxFlLdN60w1e6Y7Pfa7Zff8= X-Proofpoint-ORIG-GUID: XFLtB6whorR-_jH5y1DGecmO2Nqas9RB X-Authority-Analysis: v=2.4 cv=auGCzyZV c=1 sm=1 tr=0 ts=6a32dcc7 cx=c_pps a=bLidbwmWQ0KltjZqbj+ezA==:117 a=bLidbwmWQ0KltjZqbj+ezA==:17 a=FelO9ux0wxsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=Y2IxJ9c9Rs8Kov3niI8_:22 a=VnNF1IyMAAAA:8 a=5ICBfrR2l7P1yX5hQRsA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-17_02,2026-06-17_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 clxscore=1015 priorityscore=1501 suspectscore=0 impostorscore=0 spamscore=0 lowpriorityscore=0 adultscore=0 malwarescore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2606170166 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 d78467ec6ee1..3f3c7f0ca489 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -13291,6 +13291,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 19 03:58:54 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 1495733FE02 for ; Wed, 17 Jun 2026 17:44: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=1781718244; cv=none; b=jzYrNifnodNk6uMgin7VBCVFpbZlL66x1q4/2JN1ND7qmsD4ymWtPN+gKBfByQlgVoRB+EdY9C3J2KIE7jmVNFNCBZirEKCWQ/SRSjZyRSfepUX9ER1QW5jWiYmn0UpnlyDm77vmCfBF8pcIep7GRwLl5Rrhcd7gkNVTzYIvriU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781718244; c=relaxed/simple; bh=e7TIwXbZqW/Vh5YH46+cFpmqyKfoO5uFcbEQzxuVIqw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Jj1/+CKlNfCj0x8DATYFsVF0Wuwz1foI8c1XiQdwLMFYrP/5RfZIjQ90i+NG9c7fetlBF4IW5W7vPLrWIXvNB+/z7JDJMWTcFfjzAoVk2x2/LdaxmOG0uD6Qs/2LI9pcOCBBor8nX+kwYt6LqP6+YTT4nMlaUvGXT03uzcWTaGE= 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=FE3ML6SN; 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="FE3ML6SN" 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 65HFoZh1825419; Wed, 17 Jun 2026 17:43:44 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=2maSEW0liAFFyLe9X c+elZOThNuOWVrGiXbxFYWmFhg=; b=FE3ML6SNNdVeUa/JTzybEsbLBs1MYoo3x HU8TbmHNkdvAAuu0a07vwURCVHyRuLbyTgL3lkLTuOg4ujLNmDdi9/22KcO+y9Tp IxxGmn2tRcE1JNylqDIdQvNp2oEpoNs56CgUUaDPcwePygot8rHl1F07WS05BjDK XDWXGmdrOJqltsq9gekLgAvaKzG22wDDGvar6duMdDvnzW7iL1L3hBNtJGqL+hs0 u2eSd3lchKWiHAwwHwWa+jienU2+HGoKpG3F1Hsmh7IHxcMZij6eQRvIoVL/kTvm qgZlz0uKp/5tW5q9dDSzjhaFW+GQXe8HxRJcmrddkEousVzVhgjvQ== 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 4eueqvv8x2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:43:43 +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 65HHYc8w012787; Wed, 17 Jun 2026 17:43:42 GMT Received: from smtprelay01.fra02v.mail.ibm.com ([9.218.2.227]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4eudvambg4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:43:42 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay01.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 65HHhcPC56295752 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 17 Jun 2026 17:43:38 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 87C1B20049; Wed, 17 Jun 2026 17:43:38 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 5E33A20040; Wed, 17 Jun 2026 17:43:31 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.39.28.77]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 17 Jun 2026 17:43:31 +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 v4 09/20] sched/core: Keep tick on non-preferred CPUs until tasks are out Date: Wed, 17 Jun 2026 23:11:28 +0530 Message-ID: <20260617174139.155540-10-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260617174139.155540-1-sshegde@linux.ibm.com> References: <20260617174139.155540-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-Info: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfX+4la5RFwMTfj LO9jHedFXGXcRQYokRE/Huyh9yotNeC+AC/NFUVrRErGMuwgPQYB/xSmzuseTFVfx433fdawdit QPWcKmKdSdNEWeE8MGMSY8hFODiV24o= X-Proofpoint-GUID: w2MyqWBl8sT10V85wvu43cTIqPuFC95A X-Authority-Analysis: v=2.4 cv=bMgm5v+Z c=1 sm=1 tr=0 ts=6a32dcd0 cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=FelO9ux0wxsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=U7nrCbtTmkRpXpFmAIza:22 a=VnNF1IyMAAAA:8 a=QWx9vYyWXuU5Gb4Iy2kA:9 X-Proofpoint-ORIG-GUID: Fp-7ZmAdyi9xn5aC_UUa7YKPsWk0r1TN X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfXyEoHNrsZGw3B oeOKNlkovY3aS8/jYkTN6OAlmgoa1ZYJL3Qus2DNF2oCokOygrfzim6H7MwfSI5L426BYSCm3O4 A/JHZ65rIuzxG60qASDYe715KlG7W2no3bebnjomJUsguMoUFj0TOJ2GxWX6WwIUKBIGeztPsb4 o7Etzo6D28+nKgpeYcqk8LT4JPtky66ZepxHQAE/4HtqQh5TC/Qn8m1x76x33xEFdSDKXg8QoLL Fg5AnOBaigUY6s9LlOq01BrXzjCq39yggvRL0J1eZecFdDiRTcqfAga/9ak2Gl5Wrq0bk+kN/R7 iBf0rVtGGFrxfZrZxVrLnemtpOhmBjWHGRNKoZ/igUKqd22I59JR+6Xyl1xBdL2Lg0AcyqmSNF0 TWcBuhiQeZXHvozeBR096VGD0yVtjLbbp20Nr+71RL25SIqnVr033yaM7xAdfJ1jbTA48/hL72/ kO+Cy8H+OH4ApWf2gyQ== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-17_02,2026-06-17_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 impostorscore=0 malwarescore=0 adultscore=0 spamscore=0 bulkscore=0 priorityscore=1501 phishscore=0 clxscore=1015 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2606170166 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 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 714816cfa975..390a4de28b3c 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -1431,6 +1431,10 @@ bool sched_can_stop_tick(struct rq *rq) if (rq->dl.dl_nr_running) return false; =20 + /* Keep the tick running until CFS tasks are pushed out*/ + if (!cpu_preferred(rq->cpu) && rq->cfs.h_nr_queued) + 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 19 03:58:54 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 2D7C73655C3 for ; Wed, 17 Jun 2026 17:44:13 +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=1781718255; cv=none; b=QXbbbxSRALfcSWB7lVY2rryA54eO0+jqIXEAcae2seOQEJkPNol3+6GhLpbmwe1q55EF1AyReGj3X6/PFST1t0L5eABys3o8yFczsVuDkjZ3CJuJhi98LpjM3uLrmq0XSj99odVrME21O348nUkVQEt2/lLt/CA9Ua7F8Yh5e04= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781718255; c=relaxed/simple; bh=D7YsTeS2SJsOFVEkydcQ+J71qHUgcO91GdcN8kX2NUI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=KD+rRR7JDkL8N9PFZRWS85fYVlywr8ludd+1ca5fK+9z2FxdOUcKfv9RPhtsZ6MW9RXIXdGxlaXR9kKrI6yoVXs5WchPh6UMHBn6x9uDdm3mJwqgTmQOpaW9RR2Pg4Sy89MrOEtAb3YlabAw4fQMqx+6CmRyGGdG5+L9mJNPIuU= 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=OYCkud8V; 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="OYCkud8V" 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 65HFpp27744622; Wed, 17 Jun 2026 17:43: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=sa9nIsnpz+3tquoRF rPdyrke4h+lWN5t6FKPUHN9HxE=; b=OYCkud8VwOfOv+tdoiWJHuN0x4cR4G/2d tTA4o/wwDuf/nBzmmdVhQ01Cw3AYC2/SqcRxXgm/PGJLSAp1xVBfOhwKj/CeMdw3 EVpGeXeVVrbwFR+ykq4VLgbo05pvwJleC2lkTosUj5KXnIv9lLTI7SJ2P6U5bWVQ 6MwNO9evVbWARxn7f6UorS80XUKsf4htyXmSiI8wFX2kE+23k1xd7cgpSyCx7Mk3 IITFHW7whmcjukfXuxrbcTwkftXutcPFVPdkObLjZ6ruMa3rigibI6DOZCt6CiOj iPPmLpOZ1tS5wTLPNA5QCgiD3w6ffGIiyviNULWEan8I4Jiq1g2vA== 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 4eueqx477v-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:43:50 +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 65HHYhQ8031104; Wed, 17 Jun 2026 17:43:49 GMT Received: from smtprelay06.fra02v.mail.ibm.com ([9.218.2.230]) by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 4eudvacc3s-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:43:49 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay06.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 65HHhkjF31588618 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 17 Jun 2026 17:43:46 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 0732220049; Wed, 17 Jun 2026 17:43:46 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id EA13220040; Wed, 17 Jun 2026 17:43:38 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.39.28.77]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 17 Jun 2026 17:43:38 +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 v4 10/20] sched/core: Push current task from non preferred CPU Date: Wed, 17 Jun 2026 23:11:29 +0530 Message-ID: <20260617174139.155540-11-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260617174139.155540-1-sshegde@linux.ibm.com> References: <20260617174139.155540-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: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfX/VyuMGzwK/98 UPJJP+BGim9mX5DHI9vwh9IOkOK2WWS1Llp6DtT6kij0pL7tyEHdxnlgX32XopvSc2k5nkyRMHz HfXDp3A7vybj7d54yM6aftVu3SX3Av9qibADtn1q6rUQNjp5gZg6ah7hU73Fto8jg4D+wfeF2PD NYlSlpdwcCIQdWHmRDYhgOzFVbp25NeLEgzXuYQ432vF1XiHJ7nNtEmxldze49V6WX0FzMZ41vL gTpxbI0s9tEMlsHqfxGk7waWcl8Te+TtoBH+zgPgPiroG2IprLV0kBHwG2qq+FCHGX3H2Hb0khz X69UgdreuPnDr6kym030fLai0fDUvtyDZLp1EMEj/k4eWu4xzguFIqfENvk5P6XFP6h9UqHlSn7 MB2+SR3idhG8cDpaxIllFmkvGvwye06UcN/3tIiVPULj1vIvxVYxta193NrJJ22EhIldyDRbQZb ilQZflE5UJKw9k/7rmg== X-Proofpoint-GUID: 0klB-Uu-2MXMSpZj864FxA1kgzxVSewf X-Proofpoint-Spam-Info: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfXyHGYrSWHojZF oHs/zz7LzH/CbKTgdpisdsEbDsmsfhmweCT24e/lPMOWkJPCkICYDJE7DerOWlAmadZAAaCjeqn Fxn3WvyUM49oRx+Hy0HZO9w8eJIPY8o= X-Proofpoint-ORIG-GUID: XXjJ86IpLS1mc0MNus-byXWVouNCcmR9 X-Authority-Analysis: v=2.4 cv=auGCzyZV c=1 sm=1 tr=0 ts=6a32dcd7 cx=c_pps a=AfN7/Ok6k8XGzOShvHwTGQ==:117 a=AfN7/Ok6k8XGzOShvHwTGQ==:17 a=FelO9ux0wxsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=Y2IxJ9c9Rs8Kov3niI8_:22 a=VnNF1IyMAAAA:8 a=-V1Il3ZtyC_IZvi6r-EA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-17_02,2026-06-17_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 clxscore=1015 priorityscore=1501 suspectscore=0 impostorscore=0 spamscore=0 lowpriorityscore=0 adultscore=0 malwarescore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2606170166 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 only with FAIR class. Signed-off-by: Shrikanth Hegde --- v3->v4: - Drop irqsave - Add guard for rq - Drop RT support =20 kernel/sched/core.c | 81 ++++++++++++++++++++++++++++++++++++++++++++ kernel/sched/sched.h | 8 +++++ 2 files changed, 89 insertions(+) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 390a4de28b3c..4b835cf2464a 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -5793,6 +5793,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 @@ -11302,3 +11305,81 @@ 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; + + /* sanity check */ + if (cpu_preferred(rq->cpu)) + return 0; + + 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 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; + + /* Push only if it is FAIR class */ + if (push_task->sched_class !=3D &fair_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; + + /* sched_tick runs with interrupts disabled. Don't disable again */ + get_task_struct(push_task); + + scoped_guard (rq_lock, rq) + rq->push_task_work_done =3D 1; + + stop_one_cpu_nowait(rq->cpu, sched_non_preferred_cpu_push_stop, + push_task, this_cpu_ptr(&npc_push_task_work)); +} +#endif diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index f194a5007e3a..5e9b8aaf9a9a 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -1274,6 +1274,8 @@ struct rq { =20 struct list_head cfs_tasks; =20 + bool push_task_work_done; + struct sched_avg avg_rt; struct sched_avg avg_dl; #ifdef CONFIG_HAVE_SCHED_AVG_IRQ @@ -4234,4 +4236,10 @@ static inline bool task_has_preferred_cpus(struct ta= sk_struct *p) else return cpumask_intersects(p->cpus_ptr, cpu_preferred_mask); } + +#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 19 03:58:54 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 8FDD3375F88 for ; Wed, 17 Jun 2026 17:44:17 +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=1781718258; cv=none; b=ZudmXS2IvWwaq/rG0VwqNshMLFTgjljLrVmhql/IDY1F0ZIwGqm9PLsO2dGf8uEn/NTn+HMTQetp9haO5LFUs3+3NAxncgjo5z2cxcNP7ZzgegqXUZOMvXZ/s2I7UKxFPAbbXLkXtnGGaezPny21dTkFO3/cazic7FTSsNj9HkA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781718258; c=relaxed/simple; bh=0WtR0tFiWTS3MmcB5IMZcym/ZTa7MpCcKgCWbBOMbFI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=VJDMXiVqTAojLePTHao1HUXkiIhlB4glYwEpzdeDrx1Bvmngv0MnOMHz4/oP8OcU/Z9ImvrsRDgisnyODQuZ2JTvcFQbfiX7qt8ltXKVK5sLnl+8FAk7OaFSNu8JhZRSlmKSiKtpEgJibQaqaDJKgOG5aX0pAYSB7ObLUBYoESQ= 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=YAHr9iVA; 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="YAHr9iVA" 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 65HFoQgA993069; Wed, 17 Jun 2026 17:43:58 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=TmPBEF8fQlCfP4Fwp 2UOcSMSEXhlQrVraU9w4RGacE0=; b=YAHr9iVAlDyxeMSlHdKOIXFHQLUxjwJD7 GDReBTpnJmnk+YiJIJWahS03IKexjcZDXBnHutjExFIrefaH/TZJk3m8Dg0xslvN J/98wt5Ii/50A6MMm5sm/u6b9vUnwgmXUHUMMJcv2lrQ4Oj8M2r0vk0aE1MCQ52k vbetTmpMUh2w53xs4kHvlqEt3Sh25T2kM55vYKabl70mxeWNvyLJuSZQXirzAUJq b0jPzSkw27EHObODVuxRSpvfybnV4iCMD2tA55AeaewecSarlFN1fs1CQOGbMynd ruifgxwoPRwz1rFcEtoeQ7l/huJcgSmP0O3aOIHyfmse/KHg/o4Tg== 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 4euequ48t2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:43:57 +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 65HHYhQA031104; Wed, 17 Jun 2026 17:43:56 GMT Received: from smtprelay06.fra02v.mail.ibm.com ([9.218.2.230]) by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 4eudvacc4c-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:43:56 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay06.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 65HHhr8f31588630 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 17 Jun 2026 17:43:53 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 7D6972004D; Wed, 17 Jun 2026 17:43:53 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 6A5E720040; Wed, 17 Jun 2026 17:43:46 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.39.28.77]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 17 Jun 2026 17:43:46 +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 v4 11/20] sched/debug: Add migration stats due to non preferred CPUs Date: Wed, 17 Jun 2026 23:11:30 +0530 Message-ID: <20260617174139.155540-12-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260617174139.155540-1-sshegde@linux.ibm.com> References: <20260617174139.155540-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-Info: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfX16qtI7/R++s5 IlO6oD68YgLErBx+LO8F3m0571BcrsEwW0DfQ8fwRtiBv4wygV0vEL7JWvfEwzkDsXw4SR6fkmP p0LeKlSyKLeFGjPpzZwdr1IU+lyGz3U= X-Proofpoint-ORIG-GUID: WeavNeT453E18UuBMZTUU95Evjs-YzFG X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfX+EUd8DH09Db6 Tu7U68iOZcwHtdORDcrM2gPFSb8L9l1DTQtLaYu0rNBOacDO3nEmLsbUy9uGfUsC+mRYdv4h9MS KdE7TyrLipcSQVVwZ+NuruoC1khwQY5jvHdQZ/yFBZO7QV9WWITQDWmVU0rkNe0njNQrfNwBztP fc3OHZtq1TamyL1dnTPdEinW4V/Q0QXwf9JQ80FkAWS8aii87wLSJnWOAa9oiUX1GCRb3nscY6W kdHXyj/N71DLp+iVEN09jUcp3am6oXeQVR2OOTRwo+nnL3ficskWeHv9cqPoM4Kgc7yHcsm22Rn o8Aj5jEpN0aaoJUK9YyziC09qy9JsRVXHJF5shE94yM8Z6FAyZ5rAzVMGuyNH/C41stvezO6Rss RSsd5h5k1VxW9exeMAys5SqL5pucALigO7Ae0PGpEwNHF4exbr+qrzwA5n2K584YW6p+n0YDNxk BEFFiEfee/33YRulV/g== X-Proofpoint-GUID: 2JyWdKntpu_Tfg990OTtGlYdaEcKEpcA X-Authority-Analysis: v=2.4 cv=L9gtheT8 c=1 sm=1 tr=0 ts=6a32dcde cx=c_pps a=AfN7/Ok6k8XGzOShvHwTGQ==:117 a=AfN7/Ok6k8XGzOShvHwTGQ==:17 a=FelO9ux0wxsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=uAbxVGIbfxUO_5tXvNgY: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.125,FMLib:17.12.100.49 definitions=2026-06-17_02,2026-06-17_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 impostorscore=0 malwarescore=0 clxscore=1015 adultscore=0 phishscore=0 lowpriorityscore=0 suspectscore=0 priorityscore=1501 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2606170166 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 2d0b1a6d50ac..5f523782ca28 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 4b835cf2464a..33ebe71a0b4b 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -11330,6 +11330,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 f3a033b34ba0..106b448cafb6 100644 --- a/kernel/sched/debug.c +++ b/kernel/sched/debug.c @@ -1363,6 +1363,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 19 03:58:54 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 CBC22374183 for ; Wed, 17 Jun 2026 17:44:24 +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=1781718266; cv=none; b=kV+0zyUK1N7F9DV+eFqnoMVs/4lu+wikPftWXrmePfLYiorATACWN7NN1RSuZSL9E1/ZPEem2O3/Dvc3nzt72xzpm8N7nfIoVlat2iYxK7xR6/a2lqBC1BIp6Tl7f3UOyAgGMQeeB+56Y6r5LPHywtxGL8o5BErW3nEgLcjhWIo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781718266; c=relaxed/simple; bh=308cdJ3yCEmzTcXdqwowWpofNlnXxuONAivQ/S7yvlU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=C9Zeh65tcO1Pq3DCHiypGcis4BUf7TtZHDUH34ifY3Zbz4FD/8Iq20bUXcUKt4jMRfOV3wigGGn14ogR1YZCkzAUNPbm2hOfMZE0YZo9hEvYyOCXgH7FC2dD1/HiaViTzhBjzi4CX6WKMflZG+1w9OHBPVcO5uhbi7hE8oFz89A= 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=SF1wcXfG; 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="SF1wcXfG" 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 65HFoTO1993094; Wed, 17 Jun 2026 17:44: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=y9/5OaE0YwecrjgnW wzYeTvP3WR/ihVdvHTQV78BKjI=; b=SF1wcXfGFZkjrfV7cMKinbcDbiOGzzwmi mpVX5bIvYLVLCoU811crFcAOHbXuxEntabTXSA1B1gT0In59fWUWMD+/muaCRXnQ SnN0r7kfYLsXqKaVP+jjpQNC3egeiyf5bkyHBYIZVOHUNm7a3CtMq8YdpuBLL7e2 z5cuhCe/n+L9nt0o6+I/uBzfdC5gU+lbXAo0ZYThtbkiiZiaKiCEdccigvdeJpxt dNQvuZzYJUPTXliM7uMsyNePZYpk+3YppkhcaJLEP3Y5IQkOsHMUe+hoMIFUKqjS n8HZQQ0UXzs9u94vG2l8GsGBfNz8K927/pEX8sG47/I4mISk4K5Aw== 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 4euequ48tn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:44:05 +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 65HHdWke031898; Wed, 17 Jun 2026 17:44:04 GMT Received: from smtprelay07.fra02v.mail.ibm.com ([9.218.2.229]) by ppma11.dal12v.mail.ibm.com (PPS) with ESMTPS id 4eudva4c3r-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:44:04 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay07.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 65HHi18a41943350 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 17 Jun 2026 17:44:01 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 2D41B20040; Wed, 17 Jun 2026 17:44:01 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 031EB20049; Wed, 17 Jun 2026 17:43:54 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.39.28.77]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 17 Jun 2026 17:43:53 +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 v4 12/20] sched/debug: Create debugfs folder steal monitor Date: Wed, 17 Jun 2026 23:11:31 +0530 Message-ID: <20260617174139.155540-13-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260617174139.155540-1-sshegde@linux.ibm.com> References: <20260617174139.155540-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-Info: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfX2EKzMyo7VRFL pIAu/WhG8wmUlRW7+kU4HFbv2el0yGc0mBVOoqd/SO0VZVGjIx8aWd7IpWG2bc1E/tyl5egE9uX ASEoyH76Bu9mKxdRHjzdIGgQrSYthLY= X-Proofpoint-ORIG-GUID: a4LPHX2zEJrxbFAiePBf27fBQM-n_0Xn X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfX9Wu6DyqtCHmf sRWenNrZyZBuxlxA5VuNvBj2xBFsl7wdUTOkmq0uVOR972Aj8gAxIVv7JghGkL+t6E2EoMh8z7f HCYWqZIL/SrdVuVIsDnHZgNpVjWga3xS6pzFCuVpkzCOFeH5XYm7P/oEguT5Bprs4JkkdzQIbxg UtQAnYMJ1WCEJtDkU/Q30/LKS1lRRYmoDmvoshtGbA0xXh+VRhh0HW/jtGssk2ev4DLRPz8c7xN ak95ytqa5R0IIv2/av3F/PM0sONQXWSHLax5D53k4+Hnr0KCEjMPDhs0lJBKw2gneAypcaQDL9P Bj4vof06o02EG+RYNZKunws4CfBe9M1vFFLldhBMQYkIzYSp+s6OmZSiAwHI2VM1IOc1UASWMJQ qwUczQEugO5lrjCMKKyaIVWkwgN6V9tT3tmQqdySE6kNNld21Qch6Mj0AR+9sN/L8kF19gzAn5j SOrz1kNa4bXWhw07xDA== X-Proofpoint-GUID: tgHOotWXqnLx1Iq5AkhW3VYhLBw2YmBR X-Authority-Analysis: v=2.4 cv=L9gtheT8 c=1 sm=1 tr=0 ts=6a32dce6 cx=c_pps a=aDMHemPKRhS1OARIsFnwRA==:117 a=aDMHemPKRhS1OARIsFnwRA==:17 a=FelO9ux0wxsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=uAbxVGIbfxUO_5tXvNgY: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.125,FMLib:17.12.100.49 definitions=2026-06-17_02,2026-06-17_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 impostorscore=0 malwarescore=0 clxscore=1015 adultscore=0 phishscore=0 lowpriorityscore=0 suspectscore=0 priorityscore=1501 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2606170166 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 | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c index 106b448cafb6..d1532359fc50 100644 --- a/kernel/sched/debug.c +++ b/kernel/sched/debug.c @@ -633,6 +633,17 @@ static void debugfs_fair_server_init(void) } } =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, *llc; @@ -691,6 +702,10 @@ static __init int sched_init_debug(void) debugfs_ext_server_init(); #endif =20 +#ifdef CONFIG_PREFERRED_CPU + sched_steal_monitor_debugfs_init(); +#endif + return 0; } late_initcall(sched_init_debug); --=20 2.47.3 From nobody Fri Jun 19 03:58:54 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 2AD25376466 for ; Wed, 17 Jun 2026 17:44:27 +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=1781718269; cv=none; b=HIo7TnR1fXcDQMALeZyiwyY6NiXbQEY7FIFXkO69zI9p/foZ0AmuVUSnMQ1BvAP7GDCQB6mQvKpjQPT7uYVtu5ANro8bz3xd3utaeTMMqlMUYEqxqprghm2kSoaN1True5lHIRihnz+cxuRsFj3qx0qhMIasyxi1weZCy4VTwDY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781718269; c=relaxed/simple; bh=Fvn/vwmROse7tABeioAaKIvA9K4nC+RvnBdjTCOPR8s=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=luLD/1BI6KRYHfUVYBrH8hnb+IkwbMCljlItpyaukpNzpJK/XWmxyIRemAT1SVdTJ9dJQCLGKRWY9/GrRJR1KkiUdD98uwSq3eBoG3yzgQxwMZ9vytdBixfiFNNBOfX6QwND19s/tjM4pNKDnEaX94/SQNr7VQr58xa/k03A/mE= 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=bdJ4ZKF6; 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="bdJ4ZKF6" 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 65HFqIQQ762230; Wed, 17 Jun 2026 17:44:14 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=lkj4/QQomU5tIZnsO q86Hp9DHqw0xwkLq/z2V5VWh1w=; b=bdJ4ZKF6r4qKYEiIoZ3T7bvG1het4J5+0 W//5Ko+j/E56ovL/qI9cWMGsLjCsrIxVcCudiyTdI7XE+Sogfv/ynhNk9v3Y2gJ+ OXWL0ENBUaa5MgedVd2ndhAs00xE3ywQ82BoTuHddBDs25MfU7wTQ6XN7oMBiHWZ lHAUyrGscfmq2DASSQLXmTAPo/Y5QykOoZE/7MWcIG2hleKCoBvhTnG2zHiEACIz GEKCm1YmJIJBpjridyUw0bHDk/J7/NZoRf/Da/QE+OABCVOp4PBe0SoTfdPhoUqG rZKOecG17XFMdUKh5/nj1gxYcXHxoFNCczsFj+0/02zc9Vb4h1pzQ== 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 4eueqxc6h3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:44:13 +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 65HHYflP013003; Wed, 17 Jun 2026 17:44:12 GMT Received: from smtprelay07.fra02v.mail.ibm.com ([9.218.2.229]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 4eudva4ckt-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:44:12 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay07.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 65HHi8WW38666560 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 17 Jun 2026 17:44:08 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id BA5872004B; Wed, 17 Jun 2026 17:44:08 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id A402B20040; Wed, 17 Jun 2026 17:44:01 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.39.28.77]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 17 Jun 2026 17:44:01 +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 v4 13/20] sched/debug: Provide debugfs to enable/disable steal monitor Date: Wed, 17 Jun 2026 23:11:32 +0530 Message-ID: <20260617174139.155540-14-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260617174139.155540-1-sshegde@linux.ibm.com> References: <20260617174139.155540-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=OcSoyBTY c=1 sm=1 tr=0 ts=6a32dced cx=c_pps a=bLidbwmWQ0KltjZqbj+ezA==:117 a=bLidbwmWQ0KltjZqbj+ezA==:17 a=FelO9ux0wxsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=V8glGbnc2Ofi9Qvn3v5h:22 a=VnNF1IyMAAAA:8 a=EK9I76YlkvZymCwgkSAA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfXyuOFJeA4fO+J R7oDFO3JTcGR5Aj9LmNO0B4rQOserCpPVmsRva3085PEAb64KpesM3Bzw5OpKuVw1RVnv76+Ba4 jPJC+9DWGWr3L/DqSiLoPyUxj7mQ6nBSzDczRWvVO7IL+oTGpenjimFOznOnZWiXiiwmb0z/7lB kOG7UAGJiT/dkO7GZqlNaIjds0HJ+658aeRmsA/ZoiktlOsYlaPjQ1syrdoyB5iK7tbFBM13PYp cFdtLkDIn2DnM38oL/vCGlVAC16qPUgWdAFupSa4COZS0uaHkrsAC5oJkusuRJXnjQynFRlktro HXuhv2t5Xocm+l8SzvhPfS86jBTKUQrY52xQ4mNMxx/o3u9Oba4phOsHZkSVJNhUzLMzNeel/8c vGtgDpragjQ8zFPq7KBtGdWoqnVf17KGSrQKMusTt1ZjAsCf3bF9tnqwyYi+U6HKa/P+Gy0xvuo xVQv1oK/lfY3OnZc6Mg== X-Proofpoint-GUID: UVJ6l0eAE3lXWqbqzyu2yMBLxqzW3MpM X-Proofpoint-Spam-Info: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfXxfqU/jadgxQR qeIsok7/Vk06WhDEOqmGcgWqtEiPV4HtD3qtlA8nX+bJnQP8k3zwJz3OdBgTII/v1odTRtfw6DR 5fz/oPrDJBEoU2Yr6NTZGHLC5SHnfRA= X-Proofpoint-ORIG-GUID: 3SDhC8OaJC07-fIo7_maKe3L3BhCFleI X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-17_02,2026-06-17_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 phishscore=0 bulkscore=0 suspectscore=0 lowpriorityscore=0 impostorscore=0 malwarescore=0 spamscore=0 adultscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2606170166 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 | 31 +++++++++++++++++++++++++++++++ kernel/sched/sched.h | 2 ++ 3 files changed, 34 insertions(+) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 33ebe71a0b4b..24d4abc74241 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -11309,6 +11309,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 d1532359fc50..2d62858f9cc0 100644 --- a/kernel/sched/debug.c +++ b/kernel/sched/debug.c @@ -634,6 +634,35 @@ static void debugfs_fair_server_init(void) } =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; + + cpus_read_lock(); + 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_active_mask); + } + + cpus_read_unlock(); + 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; @@ -641,6 +670,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 5e9b8aaf9a9a..9cb006c21090 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -4238,6 +4238,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 19 03:58:54 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 D886F33FE02 for ; Wed, 17 Jun 2026 17:44:40 +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=1781718282; cv=none; b=FwIRhbFyONwi8hzAWn7H4YV5m025Bg2/buSRRJXFSzB8DQdYYOgXBI02TQcEkvhEjRZXf7lycyGcNuzfp/5W6ZgGeiGFJfC1/jFp9NxlAP5JzuaOT+OarKYP5heZmUf6kht82DrEaut5zXjJiHTcBoQvnujhLPGIQ7ou4LfNUms= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781718282; c=relaxed/simple; bh=aUhaN6CbWt5UQCTHt5rhAJlfcb6PhnQu1qOL51cZmt4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=T0augAG2+m5Pw7RDWuqM3mysMCRRBVgH9AYexQ3+/vk42CYwiaX/9TBnc7HC2c3augTOTHZFfsdLln8D9BTd35Ky4+wAsu06QVh8FjCd2mxiKEfCH496cAJQHdmEuiznMlBGcJAzjzID57Ag/VeFUM53gVs43booLK3Lx7+Vkf0= 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=MdI4jBQ7; 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="MdI4jBQ7" 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 65HFoM8R824965; Wed, 17 Jun 2026 17:44:21 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=FpIAILFJIysTyajce UyestuHrmqelL9A9kC8GEtlbNA=; b=MdI4jBQ7qiX8wfQHeE1v3zUAS1LRc6tp6 Fk2IgaGudzmy/AQGhL55N3D8fElv5uOjZOoJa/+bYpp3iDg3zuRb/eX8bBLFkkRw +pcRxNjwbnnsFlYuAa59noIdVVVpQXewNHX2owSI5rebDsLpmOYnhNZSp0TIu7Fz wnMYfWkV9RXs1pAOjxO8N9CzaTKc9rAsHhM8oZQ4X5A5qkGo0P1mq5CXOdyw1LmL x/5no425ueQ5JDOuuh9h1zoIIBaI7FF9qW+qRlY/+V+fvJk4qAEDpTzhSNyIrzsL n9AcHBX/okY9CTU29A6XUDX0JihSM4l4d+9kfit96LtIoG+4bYy+Q== 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 4eueqvv90e-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:44:21 +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 65HHYbfl031078; Wed, 17 Jun 2026 17:44:20 GMT Received: from smtprelay02.fra02v.mail.ibm.com ([9.218.2.226]) by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 4eudvacc5s-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:44:20 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay02.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 65HHiG8f51839288 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 17 Jun 2026 17:44:16 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 6C3E720040; Wed, 17 Jun 2026 17:44:16 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 5AFAB20049; Wed, 17 Jun 2026 17:44:09 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.39.28.77]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 17 Jun 2026 17:44:08 +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 v4 14/20] sched/core: Introduce a simple steal monitor Date: Wed, 17 Jun 2026 23:11:33 +0530 Message-ID: <20260617174139.155540-15-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260617174139.155540-1-sshegde@linux.ibm.com> References: <20260617174139.155540-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-Info: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfX/Yc9fs6pmX5n UQPE6LZSQ0bO5wtGAQyrrtgkuy9114R3wGEFc2+kzR2HwNXDgNlOlOfFzfPG/4hADWI7LM0vxgh GzgKm1UdsL6/02eVDmeECIeWsoAkWgo= X-Proofpoint-GUID: dbryGp5eaAjxOAUh6FWP7C7QJDjzI-nC X-Authority-Analysis: v=2.4 cv=bMgm5v+Z c=1 sm=1 tr=0 ts=6a32dcf5 cx=c_pps a=AfN7/Ok6k8XGzOShvHwTGQ==:117 a=AfN7/Ok6k8XGzOShvHwTGQ==:17 a=FelO9ux0wxsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=U7nrCbtTmkRpXpFmAIza:22 a=VnNF1IyMAAAA:8 a=OdSMrRaz63idaxcbYwMA:9 X-Proofpoint-ORIG-GUID: z-pB1IkLaBQFTF7d6qSFextfA1DELeo2 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfXymiaiDClR9tj bYsbJLMJdpDVX/mASb5yZqzJf6CPUIsiXBWUiXzNIlO6dQPD4eAj9fxIPyMhmFviR3v2VitjLDp NMK4qi8oQQ5kxoYiSFwQvS7CJXQi3sE/vsQaeLG4Exmi/3HE1JOq6Lra7lI+8H/zEoLunY2g5EY wNab/ItNJ7Lg98Lj0pe6uWulJZYR+fIhf1IFzMb84BDD4NfpENshPJvlj3ZgwKarKVGqBUhx3QQ GGMc2bha5L87ATJau8/3tI9LBm0UlvVj0x+O/nIibSZIQcNZCJOJzo+kh6zqDmBsrPmyM17n07o gJJyhYorgDkINJSl12oaVJlw6wZNScKfgt4xWyQy5XUiuYl2bs6VlxHR7M1Y0gYO27ryF8Naiax 52OgckzJoBuuIbo1x+SMJ0oTYHYzUmYw9KluEEjSB/WCkV18rkUXaTG3UXCOA8qhiuZRcodzgK/ F9V021fDROPDae9EsDA== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-17_02,2026-06-17_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 impostorscore=0 malwarescore=0 adultscore=0 spamscore=0 bulkscore=0 priorityscore=1501 phishscore=0 clxscore=1015 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2606170166 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. - 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 --- v3->v4: - Drop tmp_mask include/linux/sched.h | 11 +++++++++++ kernel/sched/core.c | 23 +++++++++++++++++++++++ kernel/sched/sched.h | 3 +++ 3 files changed, 37 insertions(+) diff --git a/include/linux/sched.h b/include/linux/sched.h index 5f523782ca28..ce6bc8a22eb1 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -2517,4 +2517,15 @@ 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; + 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 24d4abc74241..cc48632dd42d 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -9138,6 +9138,8 @@ void __init sched_init(void) =20 preempt_dynamic_init(); =20 + sched_init_steal_monitor(); + scheduler_running =3D 1; } =20 @@ -11384,4 +11386,25 @@ void sched_push_current_non_preferred_cpu(struct r= q *rq) stop_one_cpu_nowait(rq->cpu, sched_non_preferred_cpu_push_stop, push_task, this_cpu_ptr(&npc_push_task_work)); } + +struct steal_monitor_t steal_mon; + +void sched_init_steal_monitor(void) +{ + INIT_WORK(&steal_mon.work, sched_steal_detection_work); + 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 9cb006c21090..984da3827f19 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -4240,8 +4240,11 @@ static inline bool task_has_preferred_cpus(struct ta= sk_struct *p) #ifdef CONFIG_PREFERRED_CPU DECLARE_STATIC_KEY_FALSE(__sched_sm_enable); =20 +void sched_init_steal_monitor(void); +void sched_steal_detection_work(struct work_struct *work); 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) { } +static inline void sched_init_steal_monitor(void) { } #endif #endif /* _KERNEL_SCHED_SCHED_H */ --=20 2.47.3 From nobody Fri Jun 19 03:58:54 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 490F8374183 for ; Wed, 17 Jun 2026 17:44:44 +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=1781718286; cv=none; b=Fex5zJAA5Ybwa7pCzkGIaUpGSYxesxkGUTrKp/UYHvo9MP6Cc6FfIw0s4XDabvSjHGEaWCChRtOR9YL2/8/ik0dEV9gW2HHIXbOS+IXqonpoVFeUpRxfM2SO0Eg7uyL+iH4aeMC3bYK2oA60DmMi3mXpJBZEh0ePqFThOgZboko= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781718286; c=relaxed/simple; bh=hHwSrnhYfuJHxEwmoYAoWpdViuI18lMTUBcMy77tVsM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=UwQQoVMDjpLLgXEsk76QuEsK5GjQxm6xeRYkh4KJPwdiUDTuRjoKkEbev1I/VLCcAbem5i5SL9JS7CQ6amJBpw/qYMQFC8CGO+wAYsLZTtBt8HjelzXyuAqJhYo3Jog8LdLcytM0Ze3XBROrZ0d1BDWZWYRa1CXnS2d9dbXwVoU= 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=OKicYRPj; 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="OKicYRPj" 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 65HFqBOE762100; Wed, 17 Jun 2026 17:44: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=5/hpKIX30DLYdWiTF yixEnshnMZdtQ8uSkRwaat7cxI=; b=OKicYRPj9+tsomKgphWy3DCrL1HgVYlZ5 iA9r4whMTG/Ylpv0eDm6pLx9qWZvBMZ2tQA86B7Sr821T0evDoOP5OeNwuVg06S4 s5rwHRpZCfm2BXa1Q2F/JP6sjhSExq5jyAlgLR5Y7Ked2NAqu/pjrAPF1lLURrxd b4/g7nnqJCSe/i+dc6JZv0ti4Imtz/jiUXaI53z90ngXoQSd7EA6zi5YySaFP1NC 6uHSZmOfDDnItzAYJU57Af9EUz/E8CRa36pMpTE/qePabX1CU7jjCPw3e8IKDhgh ZkJ51vadwiT/1t3glczkfdtzn91FqiCrvj8quePgtM9b2w/G6k/fQ== 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 4eueqxc6j2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:44:28 +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 65HHYflW013003; Wed, 17 Jun 2026 17:44:27 GMT Received: from smtprelay02.fra02v.mail.ibm.com ([9.218.2.226]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 4eudva4cmr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:44:27 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay02.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 65HHiNMM52429176 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 17 Jun 2026 17:44:24 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id DD14020049; Wed, 17 Jun 2026 17:44:23 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id D070020040; Wed, 17 Jun 2026 17:44:16 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.39.28.77]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 17 Jun 2026 17:44:16 +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 v4 15/20] sched/core: Compute steal values at regular intervals Date: Wed, 17 Jun 2026 23:11:34 +0530 Message-ID: <20260617174139.155540-16-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260617174139.155540-1-sshegde@linux.ibm.com> References: <20260617174139.155540-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=OcSoyBTY c=1 sm=1 tr=0 ts=6a32dcfc cx=c_pps a=bLidbwmWQ0KltjZqbj+ezA==:117 a=bLidbwmWQ0KltjZqbj+ezA==:17 a=FelO9ux0wxsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=V8glGbnc2Ofi9Qvn3v5h:22 a=VnNF1IyMAAAA:8 a=53LOTjAdL3b_QjPWis8A:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfX3fIF1kCrZICz KSnMViUYl85T/mdzzC5//8J0uFRs+WTPXyI90qHP74O3D67DmiGylEMaukcO1J2DqEeYNJu5xVZ GZOrszXDFlaaZCPjdOyq9KgbAGCZJNHcGEENnuSJR4UtMx2PbjGkoq+WQvNNsFbx0G9+5hcZ7jz 699E3R5CnwLtM+TC8dsUh60cPnyj3KHHz+ZzhKUswhyixJuItL29+ZwvIcNHZbf9Yha/uyEWIDl x0tWYWumCVFCJHsbimR2zqStm1yqyQ1ungqZrIrpPvnAYrJgcnlBXWa8smAxANbGJVeHeaAqQTh M+kF9PJ6xIY8m/OLyWDHXPi8kDUuMA59SkYc/AUUeKs2lkxyWBL+gwrF8pch/3/R3DHRXBO3fOE S0aBv4ESi391pU6s4RPFFLgtFQ1KngU8A1a2oqq4BZRhPHOYUZXeQMb70maR2zyG0NRZ53c6t6/ ZZ++uEDekbyGl8hnXzg== X-Proofpoint-GUID: SMEu1g8S4Q3p784oEgpsJ42ib0EDMMc7 X-Proofpoint-Spam-Info: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfX7YJASQZ4ciw+ uukhxLfpB99pBvg++LEQ25iFbL78YL7R454vkxKQ/5Ddo6ntEsFOrspznPhxe8oaSgtvfalYskm Q6HgxoVz9silZfM1mGyRN1LZtLVul4U= X-Proofpoint-ORIG-GUID: Jo7mpdAsBuMu1D1_mLLoXIWDymPiiPhg X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-17_02,2026-06-17_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 phishscore=0 bulkscore=0 suspectscore=0 lowpriorityscore=0 impostorscore=0 malwarescore=0 spamscore=0 adultscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2606170166 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 active housekeeping CPU only. Hence it won't need any complicated synchronization. Now, that sched_steal_mon_enabled() is available which is a static branch, add this to hotpath such as wakeup and load balance. This will make them effectively nop when the feature is disabled. Signed-off-by: Shrikanth Hegde --- v3->v4: - Add static key check in hotpaths. Could be split into a separate patch. Let me know if thats better.=20 include/linux/sched.h | 2 ++ kernel/sched/core.c | 28 +++++++++++++++++++++++++++- kernel/sched/debug.c | 1 + kernel/sched/fair.c | 3 ++- kernel/sched/sched.h | 10 +++++++++- 5 files changed, 41 insertions(+), 3 deletions(-) diff --git a/include/linux/sched.h b/include/linux/sched.h index ce6bc8a22eb1..5b15353ed7ef 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -2527,5 +2527,7 @@ struct steal_monitor_t { unsigned int high_threshold; unsigned int sampling_period_ms; }; + +extern struct steal_monitor_t steal_mon; #endif #endif diff --git a/kernel/sched/core.c b/kernel/sched/core.c index cc48632dd42d..f1a91021e357 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -5793,7 +5793,7 @@ void sched_tick(void) unsigned long hw_pressure; u64 resched_latency; =20 - if (!cpu_preferred(cpu)) + if (sched_steal_mon_enabled() && !cpu_preferred(cpu)) sched_push_current_non_preferred_cpu(rq); =20 if (housekeeping_cpu(cpu, HK_TYPE_KERNEL_NOISE)) @@ -5834,6 +5834,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 @@ -11407,4 +11410,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_active_mask); + ktime_t now; + + /* Done by first active 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 2d62858f9cc0..55b8beb42574 100644 --- a/kernel/sched/debug.c +++ b/kernel/sched/debug.c @@ -649,6 +649,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_active_mask); } =20 diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 3f3c7f0ca489..b02a414ffaae 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -13292,7 +13292,8 @@ static int sched_balance_rq(int this_cpu, struct rq= *this_rq, cpumask_and(cpus, sched_domain_span(sd), cpu_active_mask); =20 /* Spread load among preferred CPUs */ - cpumask_and(cpus, cpus, cpu_preferred_mask); + if (sched_steal_mon_enabled()) + cpumask_and(cpus, cpus, cpu_preferred_mask); =20 schedstat_inc(sd->lb_count[idle]); =20 diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index 984da3827f19..f3814099cc0b 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -1060,6 +1060,7 @@ struct root_domain { struct perf_domain __rcu *pd; }; =20 +static inline bool sched_steal_mon_enabled(void); extern void init_defrootdomain(void); extern int sched_init_domains(const struct cpumask *cpu_map); extern void rq_attach_root(struct rq *rq, struct root_domain *rd); @@ -1436,7 +1437,7 @@ static inline bool available_idle_cpu(int cpu) if (!idle_rq(cpu_rq(cpu))) return 0; =20 - if (!cpu_preferred(cpu)) + if (sched_steal_mon_enabled() && !cpu_preferred(cpu)) return 0; =20 if (vcpu_is_preempted(cpu)) @@ -4243,8 +4244,15 @@ DECLARE_STATIC_KEY_FALSE(__sched_sm_enable); void sched_init_steal_monitor(void); void sched_steal_detection_work(struct work_struct *work); void sched_push_current_non_preferred_cpu(struct rq *rq); +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 #endif /* _KERNEL_SCHED_SCHED_H */ --=20 2.47.3 From nobody Fri Jun 19 03:58:54 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 6B74D3093B5 for ; Wed, 17 Jun 2026 17:44:52 +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=1781718293; cv=none; b=tVzloWA2vE08hzKHkK9/gu2UYkXLmdVL8knucUUVWj14hZx6gP3oNdib7xmXxhWBHspmzWD9T7pnLRBCbcHDNdPLj3C72FJmVbc4/x9OOOYzIvDwFFuL2+GrjGg2CzMEBxy6EZflUHqErJNvwo2qlmxYAfMuLQxZ9S7T3OuiYkk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781718293; c=relaxed/simple; bh=jxPntGD1TU4WzyA7JKiiH68VtqQ+4q+0ZaAnmddQEro=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=qMZBYvobrn+JwReSLXmpqzbdZqOjFTHiUlFT4e1492YwUOYnGUm1NddD9PoCXzQPFuevXDMfX2GCpOBQEqC6qEf+PUWVTE6Fb/6IAFnqattc/kNg9gu+n1qQ+KGlusqjNcZ0ftAMU8U7PCJCpHTxGUO+Xhib64BsQNeEvrseMvw= 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=tStnj6Mh; 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="tStnj6Mh" 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 65HFpg1D744203; Wed, 17 Jun 2026 17:44:36 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=USXOcsAu8S4GLgRqV ltB+G1olKrFaC84EJ4DfKQSdlQ=; b=tStnj6Mh3HFnX2w8srDI8zCcGLeT8EWqW d569kBlzjcWK3pNL792gLjdGc0mC2ZNvgySiqh+02LsgndbWSLCvkRA4p41knfG4 8XuSeJSVNoUWpZNi/eHzJtl1usmap1fNH1bpvT6LT372M8aABL/JaFjKmEQi38KT /UdMW6G11CvP7PFR88TP0Nnvk6MnJvwjEi1GDg5jLrZjffT8nF+AroDeRJPyKFMa jOSVfh1Dra8XmB9I54YdCbRIwuLKxH1k1BVqIzVAjvORXuTgY7K//lJBCtgmMAME MHhTsbZhLBFV1Sd4hR8SXXWwN8UG5BBFctWATXIZQHjuQbUMWrzTw== 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 4eueqx47cd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:44:35 +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 65HHYb1l012784; Wed, 17 Jun 2026 17:44:35 GMT Received: from smtprelay03.fra02v.mail.ibm.com ([9.218.2.224]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4eudvambk1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:44:35 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay03.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 65HHiV7u52953486 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 17 Jun 2026 17:44:31 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 5CE6820049; Wed, 17 Jun 2026 17:44:31 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 4DA8620040; Wed, 17 Jun 2026 17:44:24 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.39.28.77]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 17 Jun 2026 17:44: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 v4 16/20] sched/core: Introduce default arch handling code for inc/dec preferred CPUs Date: Wed, 17 Jun 2026 23:11:35 +0530 Message-ID: <20260617174139.155540-17-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260617174139.155540-1-sshegde@linux.ibm.com> References: <20260617174139.155540-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: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfX5G56ukJXoJpE TFaC2WYgdEpfyMOchQMhCrgMsOisVy9r++nv5Aopdp4cgw1s5QZN2u/w/T3tmOGp424plK7e14E j7w2WvbhSQTSA2+OF0pKw+v7r4WXiIHQwtgQmrIK8xfxMX62sud5NW8VS4gcNf6GXqQh84wGXD0 2jxPqZW0IOekpi2IFrAYIPDbAPKOcHkmgdhu3mvBxwZ41ub45jQ8y+Yq5hrD6SCxQmITQlro6Rf ihtQ/FbcXNz9bWPk1OgenjS2enu9XfS2kvSKfyW8f3VhN30Pk6xcPqaortVUKlfbB/VpI8/Eca6 i6XR4E1fnO7rPtuNoyv9qG5AzNo44a9psEnDX4QZKZJav9Saki5WdVp7OPEGwpT+Yhl3040GHDC K+EQffWLFGxRK3t+OGKaUt4prPPn0325HZqJh23r7Y41YKHticq2oB+CDriINF9dr78ptFzWIBR wwIj/QryGoPx6KvbGLg== X-Proofpoint-GUID: gvz26piQZar1-SN-jLzFOkTDt1-BhTTB X-Proofpoint-Spam-Info: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfX1DGZlscdJAGE FqN2AxM574XDwh8D45qoAJ3gbVWHQU2Tqh7uXljZF1XxbKJFEO2+k8o4hlE4qD+VVAp6XEKjUXg Gq/VslqerNvReezcdDDx2k/LTf2l/W4= X-Proofpoint-ORIG-GUID: -TGildwPsxrzZsV0Ogw_CDiG37RmxieQ X-Authority-Analysis: v=2.4 cv=auGCzyZV c=1 sm=1 tr=0 ts=6a32dd04 cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=FelO9ux0wxsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=Y2IxJ9c9Rs8Kov3niI8_: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.125,FMLib:17.12.100.49 definitions=2026-06-17_02,2026-06-17_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 clxscore=1015 priorityscore=1501 suspectscore=0 impostorscore=0 spamscore=0 lowpriorityscore=0 adultscore=0 malwarescore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2606170166 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 active 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 active 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 --- v3->v4: - active instead of online - added comment for enabling tick for nohz_full. include/linux/sched.h | 2 ++ kernel/sched/core.c | 61 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) diff --git a/include/linux/sched.h b/include/linux/sched.h index 5b15353ed7ef..e435f3073ffc 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -2529,5 +2529,7 @@ 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 #endif diff --git a/kernel/sched/core.c b/kernel/sched/core.c index f1a91021e357..c77045055604 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -11400,6 +11400,67 @@ 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 active & 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(); + + last_cpu =3D cpumask_last(cpu_preferred_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; + + /* + * set tick bit for nohz_full CPU to push the task out. Once the tasks + * are pushed out, bit will be cleared + */ + for_each_cpu_and(tmp_cpu, cpu_smt_mask(last_cpu), cpu_active_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 active & !preferred + * + * Nothing to do if active =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_active_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_active_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 19 03:58:54 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 6C1D03630B2 for ; Wed, 17 Jun 2026 17:44: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=1781718299; cv=none; b=KbV2Yv4EDaOo3CnGUcU9tiABhYoMON6+aIzm+jyBJAzL4/a9LslZX8BsiDjuL57bUufJ5opUyWOlJ2rbCPcSJtsURSK37XQpjbc981OuMp+tCkV+g4b04MrkTE2BMF/X9RR1T+KOcjkzSutxNcteHnufiQ2sajPhLKpnHae3nhc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781718299; c=relaxed/simple; bh=VsyPeibDWIa+GJZdbEfhGgXZhQFGhvLyPFhKFSxSxQ0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=UzUPLsrEphAqVQPptPjtPhAHctMOoDHJCXkADKJfN/mQ5khEGjj9KDnrUMmcEoUeeOzBKCx6Hz6Pm9Mvz3qhu1k4fTmIon9ZwTj9v5umToYxarUUkfRlDji+7NVSHJXPSZooaj8LpzSb83PVN8aIh+ckoKMKjVyO+l7o/q79yc8= 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=Ha5nKsZ+; 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="Ha5nKsZ+" 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 65HFpmON723842; Wed, 17 Jun 2026 17:44:44 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=tgoqsyWDhXOgzRG2H WvvQHLgXuR1H5dc3rZMTHVAbis=; b=Ha5nKsZ+tZZGKh22bgTeYTNyy5mADNYU0 ablInTBJ48AdWaIJEaZFLP9HImY4DeD5zH7wUSkRZQqx+PoyD3R/D832VFeQM48P I8wu1P0+dTgsxo3mf2VFx1TskObJ7CrdfMiNy2cUg1EWKpF5AEEJiciT44CWkjxx entzXDvKRx25VVWAo5funoobXYCs8o7f0s85TKQPKLRzCIs7apPP+3hfYM0b+hE5 AKa7zAKaslubU+/xZBHdLCDvwXe6xDNmyZN//4xLypLdiOuFhCIbWh8uB88VDfS5 2w7J5LFXqPVqDvH4Ow9rsG3cc4Mwgwv46LeX51RsMwSQXB1swFPpA== 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 4eueqx46yn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:44:43 +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 65HHYdpW031088; Wed, 17 Jun 2026 17:44:42 GMT Received: from smtprelay04.fra02v.mail.ibm.com ([9.218.2.228]) by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 4eudvacc7b-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:44:42 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay04.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 65HHida630802558 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 17 Jun 2026 17:44:39 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id ECAF720049; Wed, 17 Jun 2026 17:44:38 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id C474E20040; Wed, 17 Jun 2026 17:44:31 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.39.28.77]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 17 Jun 2026 17:44:31 +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 v4 17/20] sched/core: Handle steal values and mark CPUs as preferred Date: Wed, 17 Jun 2026 23:11:36 +0530 Message-ID: <20260617174139.155540-18-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260617174139.155540-1-sshegde@linux.ibm.com> References: <20260617174139.155540-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-GUID: qjQ_jBXzMuVEhgqRFMEaFqtd_CbPXk-V X-Authority-Analysis: v=2.4 cv=Le0MLDfi c=1 sm=1 tr=0 ts=6a32dd0b cx=c_pps a=AfN7/Ok6k8XGzOShvHwTGQ==:117 a=AfN7/Ok6k8XGzOShvHwTGQ==:17 a=FelO9ux0wxsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=RzCfie-kr_QcCd8fBx8p:22 a=VnNF1IyMAAAA:8 a=TM1EdS9gwypbLKwYSXwA:9 X-Proofpoint-Spam-Info: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfXxqbpy0QMYNSh FytV6iablclaYAjDhuN3Y25Kiw6Mir1uG2yggvej2VkLNMVXRACj0IcaLOdnMeAkQLGH2cYLRTR 1Hr6MFatRD8nGNsg1gzqproB1wKKHoQ= X-Proofpoint-ORIG-GUID: 0-rjxAMlRVnytYEV8xxcpTP_oPM7N6SN X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfX8o8/I3S7cWLg 3Gblu9BBptZYU7wzF5QrYnxJNR+soFSEr1LgMSa0H4bq00ab5CXROfL93DtnjEgn0wBFdzFF9kn xAOpx6Jd0z6Ig3YLdEDJhzqgH6+H8h+XJvrdYSvgVd9EVfmAS1zKHe+NWJfWuKqCjMNGZZucKbT JH/YT75XeRGbXw3BuLlF5PGD15+zuKmGpXhmwU3UMtVFlAIlcxP1jnOKwdujQD/ZNWTsS2eR0zV 8IaSpHNze/RbPcHVsSFwOr6zQKPpBs8POCqXBPKdv1VPAdfSNZwUO619tdgltakQ8kJzM9w6OJz el+Ea0mDPuTkIpAqfUWJjshFzXv9sP98kEbLSeTLJlHxL2vOek0h2ZmiYHhF9FaVA2X0zO1b7Bi eVPtwawW02pUuDXhrfJZG6DewLeCaP6IXLQAcohzCfNgJ6D5eaJPlyDDTstW6+iFXw4a3XfVqpU +6ax1KKfQtRPOC2IG+Q== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-17_02,2026-06-17_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 priorityscore=1501 malwarescore=0 spamscore=0 suspectscore=0 impostorscore=0 phishscore=0 lowpriorityscore=0 bulkscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2606170166 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 active 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 c77045055604..657c36a0e7ca 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -11461,15 +11461,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_active_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_active_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 19 03:58:54 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 C9FAF374195 for ; Wed, 17 Jun 2026 17:45:08 +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=1781718310; cv=none; b=sm78y7FB87VlrCr4gRU73ZE8X55rYDdBR5hyI+I1zAIbr3uQKLEDi1AtJfdIBVbTHuMCDs6Kg9tigrTTZ5LJHD0SyyAueXGXbvtZ2hPkEUtmKKGsa1gfaZ7HxzSDjD6JVheOYq8i8l5qdevht9KVxuRdVUJJlQ3F9ncnMIJEas8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781718310; c=relaxed/simple; bh=xi0Wos8xlOaVAbhelI4w277MyjgWXyVxhDs2UpZ2ixg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=sYOIU3ktZTWnA/tEJeRj+YQd+xVLBIh14nk3sd6nr+dlKr4wQP5Sij/KjQ08RIG61BlVg60fIcMZBdTLP1kDvCpjTpAdrlvcJiOtFUayFe1GJmS6Btp7yLpGtK6r4bBO107D1R3yTsYKOfAU2ivUHfAVb1UM4HW8KB4DiTBXsAY= 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=E2NS5cla; 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="E2NS5cla" 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 65HFqCQd762107; Wed, 17 Jun 2026 17:44: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=1sBXP797L5cqP0EuQ ADBpRIG2mDgXnnqC2fZDoQrR1k=; b=E2NS5claI3yn4WzyIsxlVsE9ygkEY6Kqp mZtrfNfbqCfAJRezIUP0MfcHRs8OXmtIB9+Iwys8pQO/u67Skba/vvsNX0iLVDwD 4FLIl2t2jP9jfv9mkt9O37aLv2H26hYtUvnX7LbOXAsvZAtin6SE8/EtqJAiVAtD 055U1mfoO40gvbt1X9cTpzmaAJ5raqLSa+qY/p1UUpeVcxIzs6mNMeraA+IiPISO bbtN/SgdVoczl54o721rDf+tPUYPNVQ50auS5a/+V9i4CxhtPJw80sh3EYImYBiY NMyMS/wZizfZR6DMmUgKjlPz2KEvaTfFtNC43IzRi/UofNCqb42Sw== 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 4eueqxc6k6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:44:51 +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 65HHYiN2031120; Wed, 17 Jun 2026 17:44:50 GMT Received: from smtprelay04.fra02v.mail.ibm.com ([9.218.2.228]) by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 4eudvacc7t-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:44:49 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay04.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 65HHiknO25494092 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 17 Jun 2026 17:44:46 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 6767620049; Wed, 17 Jun 2026 17:44:46 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 5C3E320040; Wed, 17 Jun 2026 17:44:39 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.39.28.77]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 17 Jun 2026 17:44:39 +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 v4 18/20] sched/core: Mark the direction of steal values to avoid oscillations Date: Wed, 17 Jun 2026 23:11:37 +0530 Message-ID: <20260617174139.155540-19-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260617174139.155540-1-sshegde@linux.ibm.com> References: <20260617174139.155540-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=OcSoyBTY c=1 sm=1 tr=0 ts=6a32dd13 cx=c_pps a=AfN7/Ok6k8XGzOShvHwTGQ==:117 a=AfN7/Ok6k8XGzOShvHwTGQ==:17 a=FelO9ux0wxsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=V8glGbnc2Ofi9Qvn3v5h:22 a=VnNF1IyMAAAA:8 a=tcntZ0dPoHREjsMmYjgA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfXwcIu4fWji4Yl QAvsWeDwtJrwOWeP5QcslfdZD2AcA3F+M2c2F1+Pf6Od+uMojDO+s1zq4EGlOUDP4AjaYJvNi/p Xqz7D85ES35RX2FIbZ06OOF7LBu7a/RVkZ939bzfkcCAIRe6w1nX1az8321VXVpJcJcTqyHYaPy 5Tu0Ou/NKBwyc6igREuId+ZH5BIPiZ8IvPLxJYEWUU8JhmlKleau5mDAMKbyQApoPbzeko0PNri UQK6XcMVsE/5nOuyUEuszDntPVZoYUbBAK+E5EajXcRcll8Td88KaGWIb/1gVNM3i0LOOfhb19e Me7dgvCP6erzLtZRcUCYUO6eK31+4bHVcZdxWvJpD6dK1a0PbovFpfIGb++JfxHwwLr+PrXcmPy XfC5a/kK4iQqbJX4H2UQiOb4izYVLsyJawcFUwlJIuJARvXQgHPZ+tE63kzTgi2HHf2zb9SoP+L LoyyCuWUAh3wZBEXl9Q== X-Proofpoint-GUID: NOQgVtda707PJArFet4KrhDLsYa54u8E X-Proofpoint-Spam-Info: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfXz6Fft7WJqAos MupLuL1c4iuSGqfFQTPYdIz0NEDPSzwUWJTRc5TaI0QmbLgO+V8sV6uvtfHi8z6xD6dbfFavjvm EDR7gb1wyUmXSp+A+bOMw3pIDSvwiJs= X-Proofpoint-ORIG-GUID: i6UMNDee4EdH5d5PhI7cCC9ljGDYG3_L X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-17_02,2026-06-17_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 phishscore=0 bulkscore=0 suspectscore=0 lowpriorityscore=0 impostorscore=0 malwarescore=0 spamscore=0 adultscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2606170166 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. Also make lower threhold equal to less than to handle one setting it to zero. Signed-off-by: Shrikanth Hegde --- v3->v4: - Consider equal or less than for low threshold. - reset the direction when disabling the feature. kernel/sched/core.c | 12 ++++++++++-- kernel/sched/debug.c | 1 + 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 657c36a0e7ca..57d52973ef0d 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -11483,12 +11483,20 @@ void sched_steal_detection_work(struct work_struc= t *work) steal_ratio =3D (delta_steal * 100 * 100) / (delta_ns * num_active_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 <=3D 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 <=3D sm->low_threshold) + sm->previous_decision =3D -1; + else + sm->previous_decision =3D 0; } =20 void sched_trigger_steal_computation(int cpu) diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c index 55b8beb42574..ae7a641931d1 100644 --- a/kernel/sched/debug.c +++ b/kernel/sched/debug.c @@ -650,6 +650,7 @@ static ssize_t sched_sm_en_write(struct file *filp, con= st char __user *ubuf, } else if (!sched_sm_wr_enable && orig) { static_branch_disable(&__sched_sm_enable); cancel_work_sync(&steal_mon.work); + steal_mon.previous_decision =3D 0; cpumask_copy(&__cpu_preferred_mask, cpu_active_mask); } =20 --=20 2.47.3 From nobody Fri Jun 19 03:58:54 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 1CF553655C3 for ; Wed, 17 Jun 2026 17:44: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=1781718300; cv=none; b=kkTtti0fxxwmrkp1cIWlauYZ1HwpLFUkDoNXtQuurqTXpUGhTIwQWIXzASxpDwKegwzPKaOVJuWbgQiyf71fk9eDGp4WS1eSzZU+9G3qAfl0+70/syTlKfWT/uRHfCTtevsTBkB6C1vq7d+t9Ayf3DmARsc/3iV18Pc/ono33g0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781718300; c=relaxed/simple; bh=CVyyXhLYJnxUVYQq+RNYBFTE8McY2THFQMB6JfHJ2uk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Q1oG9w6L7sR2NgQX6c0zzWoyGWCIvZOdXJaI6WUobZS/hfr4CN/iwMp28YMIeLfHquq4UFc9PomILLym9A5HDoFTdR6/r181HABkA/m79ReEPAunmeR3gBSe27KbR2UKFwFUYc30JP8FbJi4NNm/9Ok84qp+qjp50F3GdnPva+8= 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=KIS/bwPT; 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="KIS/bwPT" 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 65HFpflW723588; Wed, 17 Jun 2026 17:44: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=imMEK6GEWfxioFlzw vfVskyflOCXUvsmtA2wGuUpCDw=; b=KIS/bwPTmmVRoT5yT950zhJ1JfjvqiJIu iCYa+DMtc8Etmmx3Fsy9AybSFvkalAVXqoZHk1TxIUogI5LfD9g49+trlSwtsaM2 NsPLhFfWu79Ds/Vz8bTaO+hqicxJDaB5LqduA/6Dm2ICH0jIxOAsIrZGEKF+GY/b Ya2EPLjFgJR8+KYwFHbnALTYFhsUhr0YAx8rXHaIUS8xDZ5991OzNKxE7WLeuboD uW2Hmaed7QNuLkySblAG6+5EvMxiUACBeiwjI8p8uv85vwJtlfRC7x9F+PjOVR0+ C9eLCkN2o6T5/Zr/jS0XMnNOf9eeFl2ch3nNhwNYC9QOHAh+C/EfQ== 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 4eueqx470f-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:44:56 +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 65HHYc4W009726; Wed, 17 Jun 2026 17:44:56 GMT Received: from smtprelay05.fra02v.mail.ibm.com ([9.218.2.225]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4eudvacbnd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:44:55 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay05.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 65HHisWX49545630 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 17 Jun 2026 17:44:54 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id E072520040; Wed, 17 Jun 2026 17:44:53 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id C72C920049; Wed, 17 Jun 2026 17:44:46 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.39.28.77]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 17 Jun 2026 17:44:46 +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 v4 19/20] sched/debug: Add debug knobs for steal monitor Date: Wed, 17 Jun 2026 23:11:38 +0530 Message-ID: <20260617174139.155540-20-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260617174139.155540-1-sshegde@linux.ibm.com> References: <20260617174139.155540-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-GUID: mA3O2jf1BZCCJsN-D4w1mw71NImepT2A X-Authority-Analysis: v=2.4 cv=Le0MLDfi c=1 sm=1 tr=0 ts=6a32dd18 cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=FelO9ux0wxsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=RzCfie-kr_QcCd8fBx8p:22 a=VnNF1IyMAAAA:8 a=xkJu8sE_ArotpuPaaLAA:9 X-Proofpoint-Spam-Info: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfX0yu8TLzWSTJj hKuWEN9zG+BYSaQpjMLUSi7vZ6cuKrAcTkGvsPxkIPLhpk5ku/hx78LCWBNOTAysZW+KJUZQ/QT qWob5llSYcy0AH74Sy5cOYalbqYDIXY= X-Proofpoint-ORIG-GUID: mA3O2jf1BZCCJsN-D4w1mw71NImepT2A X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfX3CwJxpaszsNV l7HcDB0qzLrg/a8WsTrHNHLAXEFYkXKzBewZebN3dZYmDwVUZfuIUbgmaLD3diXIPJRsEIzhV/G DMvEYfaQ/NTJqcak7dMiTotC0+cSPNXPYrP9VFz763u2zU0rP8u1DV8Cg6WHLKmhoFL+/nE2ngh hFLKgD8Ivv2kyWfKwhQJvuej0EiTcS2ose32tkBiQgPyWdyus3KZHcCDpAkfNqKbrm5BPDyS5/f 6oatN+xxae52DSYSCOZejB87BOa1aon0V5eb4jZWqPlqWR7ocG6HrFJCnqopd2HgCN0hOWUOhjx pLe0BRFJbD2xlJJn3EDISxri1WARwBGTG9Rt3bopXMU5GuN3Ep9NYqwc0zKZpKTaGaplX0KOU9R LEgL/ROfpmpyX7i7NeAlL8N2BvY3OVg42wBI8zagnimEVXSd8FE0advN1Q4hVTf/D9xSqtCeWjJ mw2C8gzXzPeERI2fNww== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-17_02,2026-06-17_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 priorityscore=1501 malwarescore=0 spamscore=0 suspectscore=0 impostorscore=0 phishscore=0 lowpriorityscore=0 bulkscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2606170166 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 | 34 +++++++++++++++++++++++++ kernel/sched/debug.c | 3 +++ 2 files changed, 37 insertions(+) diff --git a/Documentation/scheduler/sched-debug.rst b/Documentation/schedu= ler/sched-debug.rst index b5a92a39eccd..95c355b1aebc 100644 --- a/Documentation/scheduler/sched-debug.rst +++ b/Documentation/scheduler/sched-debug.rst @@ -52,3 +52,37 @@ 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 active 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 or equal to this value, it will try +to increase the preferred CPUs by 1 core. Having value as zero causes too +much oscillations. +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. +One needs to be CAREFUL when setting the values. diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c index ae7a641931d1..7a9905009ede 100644 --- a/kernel/sched/debug.c +++ b/kernel/sched/debug.c @@ -674,6 +674,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 From nobody Fri Jun 19 03:58:54 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 AE3711ACED5 for ; Wed, 17 Jun 2026 17:45:24 +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=1781718325; cv=none; b=rTAFBzZ2OG9iro/1GqzfH1yZZW+hNhT1QiR0VLYJcppFnWjjoHsx+LvSZDH1rIY8qI3jzO9QoyFydxEOKKT7vr+shGGQtn4EBvoCQlgmZbBzyBkqMJwUKVO4m51QF65rQRzJZnqml4aBDornpUk3oT3sHN7DxPVe5ne75gF6Gjg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781718325; c=relaxed/simple; bh=WqT9kfjrV/JNTXNwjwOBKw41v/eCGZZxzo69xnuoq5I=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=nmhf08Bc6DGXtilFOtHoLRYoznzo3JgrQe9tx83syYqUosuWRlqlhGY96RgukW//VQ91agpf4OEp7RBEmsERGAbs75DlEbTCdyFHMoo+SRWS3ULr1Lnq36c+GQEBwEnU55f0cKRlUG6Z8TDS28GmdcBTQoMeDm92NUVmFdS8CMo= 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=QKDNU2Up; 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="QKDNU2Up" 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 65HFpePM723543; Wed, 17 Jun 2026 17:45: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=QvSF4sg7RpcCkCNJq sg9yHO/KMYE/ysuF15TIbCkOjE=; b=QKDNU2UpIUnHoB+QQ/vA6P5QGu4tSvTC9 tMfvAbfJqkGXs6Qrq6St7NJb69Ku7GSRK/5vdv5eHGGqHObr4V7XlvwnXWbiMaZh M8niMlUD5i8J/iYGgbedsZOFnTkEi0ca0vfvlxFkbRM0jF3986Lk8YMECsj7Kpt4 EO6I0laKfrPHPoa1OemCQoGDxOvZUuvDDJ6hQk3PeRthyt1rTsQ478uL4k+qmUji p7SeymGw82ym08DK+G1TdPLCarwK1Fi9f29IqrpSDWZfQ1QFW0Y18xVSsMOtcSLT 5669ziDny08sm9nbtkkePQBeFMLLX9EZnIFLx6O+B175yGGR6wZeA== 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 4eueqx471a-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:45:06 +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 65HHYZNn012979; Wed, 17 Jun 2026 17:45:05 GMT Received: from smtprelay05.fra02v.mail.ibm.com ([9.218.2.225]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 4eudva4cqs-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:45:05 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay05.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 65HHj1Ws46268824 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 17 Jun 2026 17:45:01 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 9297F20049; Wed, 17 Jun 2026 17:45:01 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 5044320040; Wed, 17 Jun 2026 17:44:54 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.39.28.77]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 17 Jun 2026 17:44:54 +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 v4 20/20] sched/core: Add a few check for valid CPU in inc/dec of preferred CPUs Date: Wed, 17 Jun 2026 23:11:39 +0530 Message-ID: <20260617174139.155540-21-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260617174139.155540-1-sshegde@linux.ibm.com> References: <20260617174139.155540-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-GUID: 25VoqbtdPtQNqMpG-VEkplYRMvJsrDkJ X-Authority-Analysis: v=2.4 cv=Le0MLDfi c=1 sm=1 tr=0 ts=6a32dd22 cx=c_pps a=bLidbwmWQ0KltjZqbj+ezA==:117 a=bLidbwmWQ0KltjZqbj+ezA==:17 a=FelO9ux0wxsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=RzCfie-kr_QcCd8fBx8p:22 a=VnNF1IyMAAAA:8 a=LRAxTwEObieOEgIKAwcA:9 X-Proofpoint-Spam-Info: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfX/K6K7AP3cpBi 7nR4mOSGjKxBLumQSGudFRlSAvjE84l0w+VwlnZhqsMGUHZf8E/SjVh+H3RtXhCiyAOaZkSDMMn vBAtZP0hEuCay5RRsW/j71VoBbQykBI= X-Proofpoint-ORIG-GUID: zHQgSrmLLt0_RJfFXn5XaLgfegNMpZ1R X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfX3stJzmbD0Wvg fpkDZsBDtZfqeOByqFeCQgBHAJKaL4PnIDfjK/BPqDyaovVXDEQNgi+yg5/WcDSXEoYCEfYbssN ZYqZqudP/HHAyd4F0EMfHTsZw4MEzcCruwjqzlZPMM/ovsZkqtgqT+KG+XuPzFknFYflBfi1ZXI B2o/O1Dz7FKptwKxiBakhfqas+BIWpvaYHHd16d9RXf0uzgDIDNGql0AtVtVNb/1jTxvsfEYUS3 ys+DD5+VJjNK/H8ilgQAm6DIRsrTaIFBq4nsgQ4K12uA+9NtguOL+ihkB1gHbz202t0p9NkGOc6 yBAjNUt/DyL0Cypjt5e76zyklEzCmI24E81ShEuIcfnclYzGSnElVJzMODGW3HZJgo43YY9Vq3v w5bGlST5q35uwgqZuFOv3cUTUxGSqJz0D7UGzqyakRA1tjouE8K0/Mt8mOwZpfWkdDLk9hcw8kS ybwmag1ctk6yof1bktg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-17_02,2026-06-17_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 priorityscore=1501 malwarescore=0 spamscore=0 suspectscore=0 impostorscore=0 phishscore=0 lowpriorityscore=0 bulkscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2606170166 Content-Type: text/plain; charset="utf-8" Add few cpumask_check where cpu is expected to be a a valid one. Signed-off-by: Shrikanth Hegde --- v3->v4: - new patch. kernel/sched/core.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 57d52973ef0d..9342aae315ca 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -11417,6 +11417,9 @@ void arch_dec_preferred_cpus(struct steal_monitor_t= *sm, u64 steal_ratio) =20 last_cpu =3D cpumask_last(cpu_preferred_mask); =20 + /* mask can't be null */ + cpumask_check(last_cpu); + /* * If the core belongs to the housekeeping CPUs, no action is * taken. This leaves at least one core preferred always. @@ -11505,6 +11508,9 @@ void sched_trigger_steal_computation(int cpu) cpu_active_mask); ktime_t now; =20 + /* at least one housekeeping CPU must be active */ + cpumask_check(first_hk_cpu); + /* Done by first active housekeeping CPU only */ if (likely(cpu !=3D first_hk_cpu)) return; --=20 2.47.3