From nobody Wed Oct 8 16:27:20 2025 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 4DD3A15278E for ; Wed, 25 Jun 2025 19:12:13 +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=1750878734; cv=none; b=keLWGmQHdTG+qrf+Di4WrU8t3ZWV3yDTaNH5qQyFLSyviOvbReMkUSpD6TpIwgSGifxQdqmCIf8Oi8ueJuZEsJu/uTv/DsUVldSScb57NnZ2ddBglmfeOAUEMJJIj6Qp5uhH2uOcrtOttvOqMZnzLH1D7ykmuTnHWXh3hYOEhhU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750878734; c=relaxed/simple; bh=tZyUEuiAwjOWn4l54EMjA9B9fEncfvOXEEG4o6WjRu4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=BT5KvGoegCfUytrcb5i/f33RIdMXjzmpfQgw5jsYVM/s2MJfhkF8jXWoc3Qm3kbqB/KkeXxnc76235iPWLtS/igfaafS7OUGteMWRA1pYyBiroE7bgwnx4q1K4iMMl8XxDafOl+9OIaaRt73OzLSywiavGdHVpo6ZJdSZnZk/+A= 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=I7j9hsKP; 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="I7j9hsKP" Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 55PELbb5002256; Wed, 25 Jun 2025 19:11:38 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=9+d7RfDCUMcyGi2BX CxRuU2xnlzRa42/iauZPwBkcyU=; b=I7j9hsKPuyh2e3he1wR8KmwFe8lQA7f5y rYxKu41fp/sfEjIwX4rW2yhSBAAcPLDI9kiKSWp1qzhf8EfM2exY4YvhmxBtEklF N4gcfYpqek8GdSi4kZHoshnLzrYdvrwMh7ieFPjuhIb1Bg9TpfiQIjGFYPTYd5iK D26gfc5tUip1KNh8VP8MHqnNN1MoFiASX8LCe0cEhUG3vcVnNI7jv5so1hD2qaNf eh7V6RheSlq9H/suTEHOMNSC/o642v3fev3/JyxHfU5QBdwkwE3Qii+uMMkkQvd7 wP7ZygwJ/KHl7znanktJ40JYDvyfGrdfA4b2ZvsIS1wLAf6F3DFSA== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 47dm8jhhd1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Jun 2025 19:11:38 +0000 (GMT) Received: from m0360083.ppops.net (m0360083.ppops.net [127.0.0.1]) by pps.reinject (8.18.0.8/8.18.0.8) with ESMTP id 55PJAD2u020289; Wed, 25 Jun 2025 19:11:37 GMT 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 47dm8jhhcw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Jun 2025 19:11:37 +0000 (GMT) Received: from pps.filterd (ppma22.wdc07v.mail.ibm.com [127.0.0.1]) by ppma22.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 55PGq7wY030487; Wed, 25 Jun 2025 19:11:36 GMT Received: from smtprelay05.fra02v.mail.ibm.com ([9.218.2.225]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 47e7f030rd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Jun 2025 19:11:36 +0000 Received: from smtpav03.fra02v.mail.ibm.com (smtpav03.fra02v.mail.ibm.com [10.20.54.102]) by smtprelay05.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 55PJBWGM52494642 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Jun 2025 19:11:32 GMT Received: from smtpav03.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 105EC20040; Wed, 25 Jun 2025 19:11:32 +0000 (GMT) Received: from smtpav03.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 6F22720043; Wed, 25 Jun 2025 19:11:28 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.124.209.143]) by smtpav03.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 25 Jun 2025 19:11:28 +0000 (GMT) From: Shrikanth Hegde To: mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, tglx@linutronix.de, yury.norov@gmail.com, maddy@linux.ibm.com Cc: sshegde@linux.ibm.com, vschneid@redhat.com, dietmar.eggemann@arm.com, rostedt@goodmis.org, kprateek.nayak@amd.com, huschle@linux.ibm.com, srikar@linux.ibm.com, linux-kernel@vger.kernel.org, christophe.leroy@csgroup.eu, linuxppc-dev@lists.ozlabs.org, gregkh@linuxfoundation.org Subject: [RFC v2 1/9] sched/docs: Document avoid_cpu_mask and avoid CPU concept Date: Thu, 26 Jun 2025 00:41:00 +0530 Message-ID: <20250625191108.1646208-2-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20250625191108.1646208-1-sshegde@linux.ibm.com> References: <20250625191108.1646208-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-Spam-Details-Enc: AW1haW4tMjUwNjI1MDE0MSBTYWx0ZWRfX57VmWe5XYxRc b58FKiEEVnlkADF1Y4ms1gpjAq+hnNW/yN+Xh/0hAwGZ21ac7AJbrQdynjCCmVuDviQ2p12GRYo s8uIxGSTratWHXmzKrMwzSOIZXkr8DWyMcSZ/c9bqS1DHIrmsyF38BlAsBAf4qDQzZm59XH4Ewg nc3l4orWLycmkkV1j0/YqhYqVN/tOMxSSy9iFJrzN+SC+AGDAfQbauX/JX3F6FTMICo/Hd5hb3u xItrAyJh3uTSKLFOE7sFP5GjjyzhKZiqfOY4odzWqihMT8vD0gvJ7wjRLmyqoem0z3GarbmoMRN Z5BVmObk0zAhpK7wfqVbZAYPbDE9IrpG6b6qpaYyn+x3tMqS9pdcaMTLL2CAtyuTUMVO5lxLeZ1 M+VkhqQWR5O8vHeChKt8BsY5D8M9rao9cMCejpXDLt6GV0vmaoQj7W/Z/erZmxKhwbCp+fzz X-Proofpoint-GUID: CrdOf7y_8SXN7UNmObo2YZTj5GjREvzS X-Proofpoint-ORIG-GUID: wQj-IDrmhnmGmzaEQsz7vdRhdF1uncyG X-Authority-Analysis: v=2.4 cv=combk04i c=1 sm=1 tr=0 ts=685c49ea cx=c_pps a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==:17 a=6IFa9wvqVegA:10 a=VnNF1IyMAAAA:8 a=5nzgSDI2G5BSHnRbDcAA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.7,FMLib:17.12.80.40 definitions=2025-06-25_06,2025-06-25_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 spamscore=0 adultscore=0 mlxlogscore=977 clxscore=1015 impostorscore=0 suspectscore=0 mlxscore=0 phishscore=0 lowpriorityscore=0 bulkscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2505280000 definitions=main-2506250141 Content-Type: text/plain; charset="utf-8" This describes what avoid CPU means and what scheduler aims to do=20 when a CPU is marked as avoid.=20 Signed-off-by: Shrikanth Hegde --- Documentation/scheduler/sched-arch.rst | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/Documentation/scheduler/sched-arch.rst b/Documentation/schedul= er/sched-arch.rst index ed07efea7d02..d32755298fca 100644 --- a/Documentation/scheduler/sched-arch.rst +++ b/Documentation/scheduler/sched-arch.rst @@ -62,6 +62,31 @@ 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 +CPU Avoid +=3D=3D=3D=3D=3D=3D=3D=3D=3D + +Under paravirt conditions it is possible to overcommit CPU resources. +i.e sum of virtual CPU(vCPU) of all VM is greater than number of physical +CPUs(pCPU). Under such conditions when all or many VM have high utilizatio= n, +hypervisor won't be able to satisfy the requirement and has to context swi= tch +within or across VM. VM level context switch is more expensive compared to +task context switch within the VM. + +In such cases it is better that VM's co-ordinate among themselves and ask = for +less CPU request by not using some of the vCPUs. Such vCPUs where workload +can be avoided at the moment are called as "Avoid CPUs". Note that when the +pCPU contention goes away, these vCPUs can be used again by the workload. + +Arch need to set/unset the vCPU as avoid in cpu_avoid_mask. When set, avoid +the CPU and when unset, use it as usual. + +Scheduler will try to avoid those CPUs as much as it can. +This is achived by +1. Not selecting those CPU at wakeup. +2. Push the task away from avoid CPU at tick. +3. Not selecting avoid CPU at load balance. + +This works only for SCHED_RT and SCHED_NORMAL. =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.43.0 From nobody Wed Oct 8 16:27:20 2025 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 53A6315278E for ; Wed, 25 Jun 2025 19:12:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.158.5 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750878740; cv=none; b=QxglORiIcaF68s8gvJf+2oCWSjl6oUAqINWuFK0P9rw089YZHKGyIqVezHtrkRysOuJW1UJ89fSPecsqq+3U5M3B84wl1nK+/olTTMkHtd5gx14gkOyRU1IOjX7dYHNhiP/n4JiZYNQbe7phle8o46vJxwQPr+ZhBhGVDWimQzg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750878740; c=relaxed/simple; bh=NSp1Y4sKYSoZQ63/fETjABsUDokgxoiH8EZwfXgFRzQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=gwrPHwRXbXqjEmosEpXGJDVu3mjbAyvnUJdJID8HDmdxiTmtLoSycIQ3lSfpg0hITEqKNAx1XhxzuUXXNjDTCiXNcR/rNUudu1gKvjyD05pIGU3Tookq05+r60PMdmFhpm5I9J0UjmYcioKfinfUvpQLYCGHof8ZhazbAtRDn/Q= 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=cU4u2gwf; 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="cU4u2gwf" Received: from pps.filterd (m0356516.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 55PIjF8F021390; Wed, 25 Jun 2025 19:11:41 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=GHer5xhnBVAf9AAcF jfq5ZgcgMov2g/1t4b6uVEZ2sg=; b=cU4u2gwfrbwbmauS1L3Q0hP6pCxUk7jQQ 8pN39+2FEXcwhQYesPmYz9aBmg7ic/4ydYy1dyyVs/3Ij4gEiqi4auyket/diAEG RguLIn1QMf1qSQVWWhOqvxeAyLHKJP5rjU3/jX6k4NQ6S17vaKNEpklnrxLy40Ci I7v1EwIqTgwntX1EPCSiOtTFGum767xpaDu90l0KDNVOE1rewZO7cbXGNdqmf1hz WOC4JFK8kzwukIB9UUOwCPOU5YPKDpqFSH6CK62/0FXdyqgx+XHd8ls9f7QCvlNB xI8uAW5V4VFxcfnCEOTDir2MJbQvg8A3dm9HY3AKRuAxDou5LItPg== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 47dj5u1e83-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Jun 2025 19:11:41 +0000 (GMT) Received: from m0356516.ppops.net (m0356516.ppops.net [127.0.0.1]) by pps.reinject (8.18.0.8/8.18.0.8) with ESMTP id 55PJ3HWZ012306; Wed, 25 Jun 2025 19:11:41 GMT 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 47dj5u1e7y-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Jun 2025 19:11:40 +0000 (GMT) Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 55PHm8qK002502; Wed, 25 Jun 2025 19:11:40 GMT Received: from smtprelay02.fra02v.mail.ibm.com ([9.218.2.226]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 47e8jmasck-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Jun 2025 19:11:40 +0000 Received: from smtpav03.fra02v.mail.ibm.com (smtpav03.fra02v.mail.ibm.com [10.20.54.102]) by smtprelay02.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 55PJBajD43581934 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Jun 2025 19:11:36 GMT Received: from smtpav03.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 07D7520043; Wed, 25 Jun 2025 19:11:36 +0000 (GMT) Received: from smtpav03.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 67E0420040; Wed, 25 Jun 2025 19:11:32 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.124.209.143]) by smtpav03.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 25 Jun 2025 19:11:32 +0000 (GMT) From: Shrikanth Hegde To: mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, tglx@linutronix.de, yury.norov@gmail.com, maddy@linux.ibm.com Cc: sshegde@linux.ibm.com, vschneid@redhat.com, dietmar.eggemann@arm.com, rostedt@goodmis.org, kprateek.nayak@amd.com, huschle@linux.ibm.com, srikar@linux.ibm.com, linux-kernel@vger.kernel.org, christophe.leroy@csgroup.eu, linuxppc-dev@lists.ozlabs.org, gregkh@linuxfoundation.org Subject: [RFC v2 2/9] cpumask: Introduce cpu_avoid_mask Date: Thu, 26 Jun 2025 00:41:01 +0530 Message-ID: <20250625191108.1646208-3-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20250625191108.1646208-1-sshegde@linux.ibm.com> References: <20250625191108.1646208-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-ORIG-GUID: dE9UtAVDRPTezjRgirKRyHN9rZp5_v0i X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNjI1MDE0MSBTYWx0ZWRfX/UKBIUdc5CFJ npscVWmTiaWEZb8I2RHf2qPH94MOtjHrFraxwYledlw9DYyJ1xA3JHiG6MmvG0E9RcaCblO23MI gC9ec4PIWBGZZz0BSyqbOOPqRbm+aUwxoAn/cckUrEHdm3LS/lHSGQqWkG//+oo6uqrCWVz4TZB N+AaYwjzrEbS0B2vbJMlQWDnpECM0GDj/Fo4AINce6WDhVgo1QFqA8h8XjX5An+19MR1a5C1NzM QBygdnjcGXDNbgRkwIpLgyCce5YxPJ49PkAfZziZGlI8zkXyyxvcAbSQt0nuQPaVdsO3xmVINK8 LmVZGHbRRcNFDB+w+pIMeMZ+qWgAypP/BGVgxqtZQkrdixQylTbuiqpqAKs0uHU5OyULvI6g40Z WTclGm8WuvAXJmuluZQB+0oIx3eP8Y+2wnRSWwcFD6oyOBmsAzXwRzYN2FC/Fwxp7ba2lbel X-Authority-Analysis: v=2.4 cv=MshS63ae c=1 sm=1 tr=0 ts=685c49ed cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=6IFa9wvqVegA:10 a=VnNF1IyMAAAA:8 a=43edTZbtrg5bJSvecBcA:9 X-Proofpoint-GUID: 1B4I5-iUm_Kdo6JFcyZtVd6UUixFXvlq X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.7,FMLib:17.12.80.40 definitions=2025-06-25_06,2025-06-25_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 bulkscore=0 lowpriorityscore=0 spamscore=0 mlxlogscore=999 impostorscore=0 clxscore=1011 phishscore=0 malwarescore=0 suspectscore=0 adultscore=0 priorityscore=1501 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2505280000 definitions=main-2506250141 Content-Type: text/plain; charset="utf-8" Introduce cpu_avoid_mask and get/set routines for it. By having the mask, it is easier for other kernel subsystem to consume it as well. One could quickly know which CPUs are currently marked as avoid. =20 Signed-off-by: Shrikanth Hegde --- There is a sysfs patch later in the series which prints this mask. If it=20 should be sqashed into this patch, let me know.=20 =20 include/linux/cpumask.h | 17 +++++++++++++++++ kernel/cpu.c | 3 +++ 2 files changed, 20 insertions(+) diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h index 7ae80a7ca81e..6394c67a4fb3 100644 --- a/include/linux/cpumask.h +++ b/include/linux/cpumask.h @@ -84,6 +84,7 @@ static __always_inline void set_nr_cpu_ids(unsigned int n= r) * cpu_enabled_mask - has bit 'cpu' set iff cpu can be brought online * cpu_online_mask - has bit 'cpu' set iff cpu available to scheduler * cpu_active_mask - has bit 'cpu' set iff cpu available to migration + * cpu_avoid_mask - has bit 'cpu' set iff cpu is to be avoided now * * If !CONFIG_HOTPLUG_CPU, present =3D=3D possible, and active =3D=3D onl= ine. * @@ -101,6 +102,10 @@ static __always_inline void set_nr_cpu_ids(unsigned in= t nr) * (*) Well, cpu_present_mask is dynamic in the hotplug case. If not * hotplug, it's a copy of cpu_possible_mask, hence fixed at boot. * + * A CPU is said to be avoided when there is contention for underlying + * physical CPU resource in paravirtulized environment. It is recommneded + * not run anything on that CPU though it is online. + * * Subtleties: * 1) UP ARCHes (NR_CPUS =3D=3D 1, CONFIG_SMP not defined) hardcode * assumption that their single CPU is online. The UP @@ -118,12 +123,14 @@ extern struct cpumask __cpu_enabled_mask; extern struct cpumask __cpu_present_mask; extern struct cpumask __cpu_active_mask; extern struct cpumask __cpu_dying_mask; +extern struct cpumask __cpu_avoid_mask; #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_avoid_mask ((const struct cpumask *)&__cpu_avoid_mask) =20 extern atomic_t __num_online_cpus; =20 @@ -1133,6 +1140,7 @@ void init_cpu_possible(const struct cpumask *src); #define set_cpu_present(cpu, present) assign_cpu((cpu), &__cpu_present_mas= k, (present)) #define set_cpu_active(cpu, active) assign_cpu((cpu), &__cpu_active_mask, = (active)) #define set_cpu_dying(cpu, dying) assign_cpu((cpu), &__cpu_dying_mask, (dy= ing)) +#define set_cpu_avoid(cpu, avoid) assign_cpu((cpu), &__cpu_avoid_mas= k, (avoid)) =20 void set_cpu_online(unsigned int cpu, bool online); =20 @@ -1222,6 +1230,11 @@ static __always_inline bool cpu_dying(unsigned int c= pu) return cpumask_test_cpu(cpu, cpu_dying_mask); } =20 +static __always_inline bool cpu_avoid(unsigned int cpu) +{ + return cpumask_test_cpu(cpu, cpu_avoid_mask); +} + #else =20 #define num_online_cpus() 1U @@ -1260,6 +1273,10 @@ static __always_inline bool cpu_dying(unsigned int c= pu) return false; } =20 +static __always_inline bool cpu_avoid(unsigned int cpu) +{ + return false; +} #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 a59e009e0be4..44e8c66d2839 100644 --- a/kernel/cpu.c +++ b/kernel/cpu.c @@ -3107,6 +3107,9 @@ EXPORT_SYMBOL(__cpu_active_mask); struct cpumask __cpu_dying_mask __read_mostly; EXPORT_SYMBOL(__cpu_dying_mask); =20 +struct cpumask __cpu_avoid_mask __read_mostly; +EXPORT_SYMBOL(__cpu_avoid_mask); + atomic_t __num_online_cpus __read_mostly; EXPORT_SYMBOL(__num_online_cpus); =20 --=20 2.43.0 From nobody Wed Oct 8 16:27:20 2025 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 D66B52DECD0 for ; Wed, 25 Jun 2025 19:12:21 +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=1750878743; cv=none; b=a3tdPzk8s7LdaZmlfAIQQdSwfRNnMFdCJkBEQrq0Gh8LRwgPXrOGEnJamVZ+ZRMF/SzakdghSLeoa7cPiBz3kC4ivA6vbnVgXpCoDnP/8jEOtANferbFJ4xYAF/UxtkTIxz7dUUaQ3qMzkDvXP7ri2Noet5o203DBsuMiw+WlMw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750878743; c=relaxed/simple; bh=LvBlwhLtCj0gRMkYeBZJBv2U2Ngnp/Hfcw9iSEo6wn0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=JkMK2D/wdW6gaNnTGU6bL/JAGjCPX9iPn6EzkNQPx7EGavPGWEMdhox+mq6zFdWf0I7mi3g5DbeSZPnLAGo32M+gJ7+09L8nsTLgZVXqWWTBiTZRvcWfv44408PrwDWWrRgfmBMnqBK8yIVR6bzNIyxouj+huU17G97xuED1uWE= 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=ZSFCpL+O; 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="ZSFCpL+O" Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 55PErWHE001710; Wed, 25 Jun 2025 19:11:46 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=/GevdFafxZDniLwlH nCARb10pjrPzgSvfvkI8K5DQQE=; b=ZSFCpL+O3NB8TlPWvYaiExFzSXRvL/GOu XQXCRIVUAFMfyZBP9VMTCpSs1euCb4jrOvL+q7jGpOAVvJ0bvcmQBWbClzDFWDWC imX3jE34SkJwnaja//LyT/24beKLuc5OecupdJZplqp796aK1eBlYvqugC27s87C OwSJf65eKW95uFrTVmIOeaDpvZlJDqOenIDXimj0iHz8Xk7IGLrdKGqwdPkauw+Z cvafN3bsHYQe0i1xRNG4/Sp1oi5TkQQzIftiJ5Wfi5pqQCVR97iLrk5m6dTzADcu VTtC2Xp0Jb0BnxOEhrACO0qe5Y6qPHm1RwWD8Oq72FCThTYH79p0Q== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 47dm8jhhdt-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Jun 2025 19:11:46 +0000 (GMT) Received: from m0360083.ppops.net (m0360083.ppops.net [127.0.0.1]) by pps.reinject (8.18.0.8/8.18.0.8) with ESMTP id 55PJBjC1023187; Wed, 25 Jun 2025 19:11:45 GMT 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 47dm8jhhdp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Jun 2025 19:11:45 +0000 (GMT) Received: from pps.filterd (ppma21.wdc07v.mail.ibm.com [127.0.0.1]) by ppma21.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 55PGctD6006400; Wed, 25 Jun 2025 19:11:44 GMT Received: from smtprelay06.fra02v.mail.ibm.com ([9.218.2.230]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 47e82paxvg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Jun 2025 19:11:44 +0000 Received: from smtpav03.fra02v.mail.ibm.com (smtpav03.fra02v.mail.ibm.com [10.20.54.102]) by smtprelay06.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 55PJBeE129622794 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Jun 2025 19:11:40 GMT Received: from smtpav03.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 5E4E32004B; Wed, 25 Jun 2025 19:11:40 +0000 (GMT) Received: from smtpav03.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 5ED8D20040; Wed, 25 Jun 2025 19:11:36 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.124.209.143]) by smtpav03.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 25 Jun 2025 19:11:36 +0000 (GMT) From: Shrikanth Hegde To: mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, tglx@linutronix.de, yury.norov@gmail.com, maddy@linux.ibm.com Cc: sshegde@linux.ibm.com, vschneid@redhat.com, dietmar.eggemann@arm.com, rostedt@goodmis.org, kprateek.nayak@amd.com, huschle@linux.ibm.com, srikar@linux.ibm.com, linux-kernel@vger.kernel.org, christophe.leroy@csgroup.eu, linuxppc-dev@lists.ozlabs.org, gregkh@linuxfoundation.org Subject: [RFC v2 3/9] sched/core: Dont allow to use CPU marked as avoid Date: Thu, 26 Jun 2025 00:41:02 +0530 Message-ID: <20250625191108.1646208-4-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20250625191108.1646208-1-sshegde@linux.ibm.com> References: <20250625191108.1646208-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-Spam-Details-Enc: AW1haW4tMjUwNjI1MDE0MSBTYWx0ZWRfX+9zz7S7zt8OY PYmAGu7oleBftnpgl1i7AurTlVXy4W11lCiBLWFo4ew7+cfj1xO3Joh6hRn2rbHGLFHnKbJNDnc PjPrCoVS6Ueld9p8q5Fsd5tfAQWquCxXxdR6j/t8Wo7sEg5BcgSKUN1jfUBT1RAP4fFhICUz0Mt 8vlp4s4v7aAawsUWCtXPwawSHIaDlp7SZ6obR0XFW4qr7HoiFjw1zkvXjHGPq6ytbGDFyd9m8wH 51yDEzPbLRnec8b7fLx11eYKExYftxo/JB2i4OeOaZw4uzGV6g7LPGOjMuRkXn7jC2n0P3zKgth 1E02DARsEsT48RZ3+Of52BLmvNidixjbt8mGRXePvCYwcyVEYnnJqycJyK0mdUqFBzEryr/X512 So+b4R9aFjCaFNGY2VcfEiNYkRK7TBYjMgfLUaCfjb3++VgH2pJUrqUKIIEf0Blhg8XU8Usg X-Proofpoint-GUID: MRni0sA2uOHcIMTzZDYYwKh2R39SA0EW X-Proofpoint-ORIG-GUID: DY4JTPV7yGNFAd5UB6MhFXIPQqQUPWgt X-Authority-Analysis: v=2.4 cv=combk04i c=1 sm=1 tr=0 ts=685c49f2 cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=uXBPIk7YWzXHA4pK:21 a=6IFa9wvqVegA:10 a=VnNF1IyMAAAA:8 a=9VCDzUkOGS52xXVBuocA:9 a=zZCYzV9kfG8A:10 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.7,FMLib:17.12.80.40 definitions=2025-06-25_06,2025-06-25_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 spamscore=0 adultscore=0 mlxlogscore=656 clxscore=1015 impostorscore=0 suspectscore=0 mlxscore=0 phishscore=0 lowpriorityscore=0 bulkscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2505280000 definitions=main-2506250141 Content-Type: text/plain; charset="utf-8" Don't allow the CPU marked as avoid. This is used when task is pushed out of a CPU marked as avoid in select_fallback_rq 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 0e3a00e2a2cc..13e44d7a0b90 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -2437,6 +2437,10 @@ static inline bool is_cpu_allowed(struct task_struct= *p, int cpu) if (cpu_dying(cpu)) return false; =20 + /* CPU marked as avoid, shouldn't chosen to run any task*/ + if (cpu_avoid(cpu)) + return false; + /* But are allowed during online. */ return cpu_online(cpu); } --=20 2.43.0 From nobody Wed Oct 8 16:27:20 2025 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 145862DF3EF for ; Wed, 25 Jun 2025 19:12:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.156.1 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750878745; cv=none; b=hQXJhCP/lrx0yohUmemCRtbVApBXC2zkZzy70TX7MowYjbBQDPfPtLz6QxgafV8HJQ7eMOjndJ7JjHNkJKHektGIAxtuiBNrgzQdMejIsa3DQzp2H2N+J40csylrfCFxDu5DF/BUR72ehh0M6GSRIAzz0DhpME74h9GtrpMKy1c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750878745; c=relaxed/simple; bh=aL0NE6+mLDuaQA81sxmKw6NRbyzWHbvR+USux8MumOE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=mAGCSqey54qIqWnY62lwWF23pFOodn+p5KiLpIDv3EneibJnE1XLOg1CjtUQj17i2Nnih/5DZ5+ZIZCuGCvjrr3IVkbzlumy3xrlhWBUTrfHVA0T7h/ACB6xg5mNVEOsaDGMADbjcE5SCKfrIR6v/1igejT9R2nL/3vx9XD2mDE= 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=YI2HwbLv; 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="YI2HwbLv" Received: from pps.filterd (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 55PJ1kVw025791; Wed, 25 Jun 2025 19:11: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=Gg+BKnhQwKdK9OcNk LiWh4xXWVgQ9j+Jef5Ks83o6qo=; b=YI2HwbLvfy/u8r1dTxFOW92OPi2nWsFHH YIkCNZ5aRDpvg1dW7xc5l3DSv9AO/kVDcA0RhabwG4cDKRVJ0G0ElRXfiy0qD13i HrSxI8TUBffrZKnYUXfGTEzfaBEtjvxHMlCDpdZ738lfMnB/O93lKppP8xEyLqGz ZnP8zzc887/NoQS5bI6yQDUD1dZC6kU7rwrKsY9yhnOFdU0MDFe76H2Y6jME1y38 CgqffYcH55sLDARTSJOd8tqF5sd7p1KHFQ8AqSI+qxZUsxTO9uob/75SRMN7g4py UubVg0s2JG7ea0n3QEVm19IuyzhrmFgQWFXaE2eJl3QsATx+Zv8Ug== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 47gpwhr27x-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Jun 2025 19:11:50 +0000 (GMT) Received: from m0356517.ppops.net (m0356517.ppops.net [127.0.0.1]) by pps.reinject (8.18.0.8/8.18.0.8) with ESMTP id 55PJAemw012006; Wed, 25 Jun 2025 19:11:49 GMT 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 47gpwhr27n-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Jun 2025 19:11:49 +0000 (GMT) Received: from pps.filterd (ppma21.wdc07v.mail.ibm.com [127.0.0.1]) by ppma21.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 55PH8aYD006329; Wed, 25 Jun 2025 19:11:48 GMT Received: from smtprelay03.fra02v.mail.ibm.com ([9.218.2.224]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 47e82paxvw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Jun 2025 19:11:48 +0000 Received: from smtpav03.fra02v.mail.ibm.com (smtpav03.fra02v.mail.ibm.com [10.20.54.102]) by smtprelay03.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 55PJBim456295884 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Jun 2025 19:11:44 GMT Received: from smtpav03.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 5E01D20043; Wed, 25 Jun 2025 19:11:44 +0000 (GMT) Received: from smtpav03.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id B5FE120040; Wed, 25 Jun 2025 19:11:40 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.124.209.143]) by smtpav03.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 25 Jun 2025 19:11:40 +0000 (GMT) From: Shrikanth Hegde To: mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, tglx@linutronix.de, yury.norov@gmail.com, maddy@linux.ibm.com Cc: sshegde@linux.ibm.com, vschneid@redhat.com, dietmar.eggemann@arm.com, rostedt@goodmis.org, kprateek.nayak@amd.com, huschle@linux.ibm.com, srikar@linux.ibm.com, linux-kernel@vger.kernel.org, christophe.leroy@csgroup.eu, linuxppc-dev@lists.ozlabs.org, gregkh@linuxfoundation.org Subject: [RFC v2 4/9] sched/fair: Don't use CPU marked as avoid for wakeup and load balance Date: Thu, 26 Jun 2025 00:41:03 +0530 Message-ID: <20250625191108.1646208-5-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20250625191108.1646208-1-sshegde@linux.ibm.com> References: <20250625191108.1646208-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: Bkm9rZTZ3Ey8h4d0sez8YChxm-xlEoG3 X-Proofpoint-ORIG-GUID: 7MZ_nsFenaS2xnJn_vxkGEUnLcWuDv4Y X-Authority-Analysis: v=2.4 cv=dd+A3WXe c=1 sm=1 tr=0 ts=685c49f6 cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=R63sIUGh8Hs7vTQp:21 a=6IFa9wvqVegA:10 a=VnNF1IyMAAAA:8 a=5kU7IP4gcsCI17dftJ4A:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNjI1MDE0MSBTYWx0ZWRfX5hVljC8FRYal oX4WAk1oDGJK7Ne7imfLdzIwmJzQ1hZp8pDe4rLba1ph29HhU8lfB3QE45lHMY1k/XlaYGNHnOe 7w0Y9DpDMNsWahixdh8/VxzYXh4cwe2CVxpGMz9BRUDOMy5Lk8eAY7mDV636Xhw/E19i2CERTox 8aACcIQzhRWuq48jRzRqzcPqoDiFwzHQ7ashyUsPq4hjMnFZHMohBPd6+DvXPfqMkgjuOzdyzYY 3WxsS2wdTCeRL29wOS9SSnL0DoY3+UezNcyVLlNbvsRwaCFwgaIA9dCoakD5mU2toymLota7Gig ZDhmrU8zWFm5DaurlxDun3oTo3Bovy04t9o4bidml3EPFQrZtAVxgFw+d8/PRMsYnTDhja6sNMt PcE+5uT+W0okks7peUD4MAmon/IQWZ+xSpPVvSQdrtIItyRg0Ojfms1TLF2r2NZ1VZSErAuk X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.7,FMLib:17.12.80.40 definitions=2025-06-25_06,2025-06-25_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 spamscore=0 mlxlogscore=812 priorityscore=1501 mlxscore=0 clxscore=1015 adultscore=0 phishscore=0 lowpriorityscore=0 malwarescore=0 bulkscore=0 suspectscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2505280000 definitions=main-2506250141 Content-Type: text/plain; charset="utf-8" Load balancer shouldn't spread CFS tasks into a CPU marked as Avoid.=20 Remove those CPUs from load balancing decisions.=20 At wakeup, don't select a CPU marked as avoid.=20 Signed-off-by: Shrikanth Hegde --- while tesing didn't see cpu being marked as avoid while new_cpu is.=20 May need some more probing to see if even cpu can be. if so it could lead to crash. =20 kernel/sched/fair.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 7e2963efe800..406288aef535 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -8546,7 +8546,12 @@ select_task_rq_fair(struct task_struct *p, int prev_= cpu, int wake_flags) } rcu_read_unlock(); =20 - return new_cpu; + /* Don't select a CPU marked as avoid for wakeup */ + if (cpu_avoid(new_cpu)) + return cpu; + else + return new_cpu; + } =20 /* @@ -11662,6 +11667,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 + /* Don't spread load into CPUs marked as avoid */ + cpumask_andnot(cpus, cpus, cpu_avoid_mask); + schedstat_inc(sd->lb_count[idle]); =20 redo: --=20 2.43.0 From nobody Wed Oct 8 16:27:20 2025 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 C500A2E0B6F for ; Wed, 25 Jun 2025 19:12:26 +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=1750878748; cv=none; b=EBEeJypyW8hpaL+71B5RI4xXKcZq98sfRqn0UNyh+5X12nNzTqhHiG05UaQl7HZZxmFuxhQZhA83yan8Wjm3g94uwaNpueO5AVF0FJQ9842XTt1BanP1vJve+DD0Q1OAiweKYJ8fygVAN0WOwJmOWqF+ovBwMwjUADYC5GweCcM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750878748; c=relaxed/simple; bh=6ICt16FlRZ4JDL48MGhJc56KCIPgVIVwIpRZ+z0v6Fs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ALZZ27lVR7ccBMlS1wqUwddSK7y+7efVRH6oacNbrrKTfgrkZNqz6J58BnjfOB0U2fgUNDM33pfvRdcnxlz9Vx1kHVDz6xMB1ZFfzRD3lwFDl7UNVV+52wfLU6xo46n1EqE3UkIgQfybJ/KEv1t2l6CQmICqRr4CyleCkzL04RM= 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=QOYtRWux; 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="QOYtRWux" Received: from pps.filterd (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 55PJ1kmo025790; Wed, 25 Jun 2025 19:11:54 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=J0WdVmX9i2uAG/1q0 lIem3oIKzOaNA7LPwmwzJXNHRA=; b=QOYtRWuxScNDEwM19uzjP2upw0mmgRcru dWWQkYZszG0FTS8MrLCvYsa+kwV67+qZHMgc2TydhuD2KTzDCxhN18yTGtEqpI8s 1OdCbhv3NI7ePs3w2YaEM6XkugI9TG75RrXDAA/8NBOxYPNU5PVnmKMBfwZhs8E/ fkaIQfhEVqcUzyeZcyTLfpDptMiqNLLcySNNqfPQk9qUw32x9oBL7b0c7d8yor57 30V4RTmoFh4MEvNUNJiPngrI41L1jd6WUj1G1AN+DZSLV3edW9aD44ddar9mkfKL xM857TRUS2KkKQ37egTSL5pgYZIiTmOp9KSQtczc3+5nVbGnXuhWg== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 47gpwhr28e-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Jun 2025 19:11:54 +0000 (GMT) Received: from m0356517.ppops.net (m0356517.ppops.net [127.0.0.1]) by pps.reinject (8.18.0.8/8.18.0.8) with ESMTP id 55PJ2DlY026724; Wed, 25 Jun 2025 19:11:53 GMT 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 47gpwhr286-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Jun 2025 19:11:53 +0000 (GMT) Received: from pps.filterd (ppma21.wdc07v.mail.ibm.com [127.0.0.1]) by ppma21.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 55PHc9Zd006408; Wed, 25 Jun 2025 19:11:52 GMT Received: from smtprelay07.fra02v.mail.ibm.com ([9.218.2.229]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 47e82paxw3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Jun 2025 19:11:52 +0000 Received: from smtpav03.fra02v.mail.ibm.com (smtpav03.fra02v.mail.ibm.com [10.20.54.102]) by smtprelay07.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 55PJBm1447448522 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Jun 2025 19:11:48 GMT Received: from smtpav03.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 524F220043; Wed, 25 Jun 2025 19:11:48 +0000 (GMT) Received: from smtpav03.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id B51B120040; Wed, 25 Jun 2025 19:11:44 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.124.209.143]) by smtpav03.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 25 Jun 2025 19:11:44 +0000 (GMT) From: Shrikanth Hegde To: mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, tglx@linutronix.de, yury.norov@gmail.com, maddy@linux.ibm.com Cc: sshegde@linux.ibm.com, vschneid@redhat.com, dietmar.eggemann@arm.com, rostedt@goodmis.org, kprateek.nayak@amd.com, huschle@linux.ibm.com, srikar@linux.ibm.com, linux-kernel@vger.kernel.org, christophe.leroy@csgroup.eu, linuxppc-dev@lists.ozlabs.org, gregkh@linuxfoundation.org Subject: [RFC v2 5/9] sched/rt: Don't select CPU marked as avoid for wakeup and push/pull rt task Date: Thu, 26 Jun 2025 00:41:04 +0530 Message-ID: <20250625191108.1646208-6-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20250625191108.1646208-1-sshegde@linux.ibm.com> References: <20250625191108.1646208-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: Ozz5Ed7du4ZfDs1eVWS1h-yQTAzNspda X-Proofpoint-ORIG-GUID: qSKMqq6N81YKdhnVAAsFp4JXjrrY2Ypc X-Authority-Analysis: v=2.4 cv=dd+A3WXe c=1 sm=1 tr=0 ts=685c49fa cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=6IFa9wvqVegA:10 a=VnNF1IyMAAAA:8 a=mwiGFyDNcI-a1ZCKz0gA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNjI1MDE0MSBTYWx0ZWRfXwn3poP0W8j0x dVHkbqSyPHUN6ZXg1fTuI6snLGTzh2MGQQ1sANMuAmvM37cXWNOV/573vjiHevCKbtfO76WLBZ6 vtXZGJjqhuV4dP2joF5phNWb5oBQM5E8siuVoWPj7mHWAqkgsZwQ91HeURWyA+ekOdovn9/Qow7 0D5w9TqlUfKB1U4/IqCypY3GRVuTvHWqbL5VB5oP1goDdc0Yk445Z4Ho6uh+HunK8lfvqALpoJy rY8OdmQiuSmeFTq8ABPvkms57DUXM3HfZnTu+HcG8tmq/8asi7SCibkWgUfdeYU6veRCNgUkwEb UFWlL3brOL/BaROHJmPBPLUIxrnh7FDmwMEHfo2/Zra1mqsimcw+Nofrggl2D5lCnXPJdlDIM7d Bpl131Gq7NiVuhsSz7omBQunRfJ9bJ9QCB1KMSXrCPba6CwnCTffuwLlmGfeV4N0bXfP4fQE X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.7,FMLib:17.12.80.40 definitions=2025-06-25_06,2025-06-25_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 spamscore=0 mlxlogscore=999 priorityscore=1501 mlxscore=0 clxscore=1015 adultscore=0 phishscore=0 lowpriorityscore=0 malwarescore=0 bulkscore=0 suspectscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2505280000 definitions=main-2506250141 Content-Type: text/plain; charset="utf-8" - While wakeup don't select the CPU if it marked as avoid.=20 - Don't pull a task if CPU is marked as avoid.=20 - Don't push a task to a CPU marked as Avoid.=20 Signed-off-by: Shrikanth Hegde --- kernel/sched/rt.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c index 15d5855c542c..fd9df6f46135 100644 --- a/kernel/sched/rt.c +++ b/kernel/sched/rt.c @@ -1549,6 +1549,8 @@ select_task_rq_rt(struct task_struct *p, int cpu, int= flags) if (!test && target !=3D -1 && !rt_task_fits_capacity(p, target)) goto out_unlock; =20 + if (cpu_avoid(target)) + goto out_unlock; /* * Don't bother moving it if the destination CPU is * not running a lower priority task. @@ -1871,7 +1873,7 @@ static struct rq *find_lock_lowest_rq(struct task_str= uct *task, struct rq *rq) for (tries =3D 0; tries < RT_MAX_TRIES; tries++) { cpu =3D find_lowest_rq(task); =20 - if ((cpu =3D=3D -1) || (cpu =3D=3D rq->cpu)) + if ((cpu =3D=3D -1) || (cpu =3D=3D rq->cpu) || cpu_avoid(cpu)) break; =20 lowest_rq =3D cpu_rq(cpu); @@ -1969,7 +1971,7 @@ static int push_rt_task(struct rq *rq, bool pull) return 0; =20 cpu =3D find_lowest_rq(rq->curr); - if (cpu =3D=3D -1 || cpu =3D=3D rq->cpu) + if (cpu =3D=3D -1 || cpu =3D=3D rq->cpu || cpu_avoid(cpu)) return 0; =20 /* @@ -2232,6 +2234,9 @@ static void pull_rt_task(struct rq *this_rq) if (likely(!rt_overload_count)) return; =20 + if (cpu_avoid(this_rq->cpu)) + return; + /* * Match the barrier from rt_set_overloaded; this guarantees that if we * see overloaded we must also see the rto_mask bit. --=20 2.43.0 From nobody Wed Oct 8 16:27:20 2025 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 86CF21F4CB2 for ; Wed, 25 Jun 2025 19:12: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=1750878735; cv=none; b=rgQzsKhB23kitngGD5VyoLvqKyZx7w7V1qMvGABDbFhWxZbyps3iacMSeowKhOJQE9YmVgDKx1x1lXrkz7qGLhqd9k+0Ld3cg4looetGXOw2JvQc1olLE23fpqdVyIq0ktqmZte782Gb27La39KYhS3z7GzIkkbDAPwEV/Vdb9M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750878735; c=relaxed/simple; bh=Btfe1JJoT1bBJQ1LlBy13zZSXC2J40co3/VJFf0Ji5U=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Nvu+6wcbHxVV/DcfUqin8ONHKUSTYn1VYRWwPGYGQ70ZJxRgsqP4kZTeyd2oL4Ppa2nyoJXskjt5XMq8KshKYpwF9fPEAvNvWC6YZ+Hgt09WucIWbGd5v2cr/7DMb6x58iJPZ8sxybVniWOMjvmyLOdcHhEemE0SP2oL0QWqATU= 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=dv3e16K4; 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="dv3e16K4" Received: from pps.filterd (m0360072.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 55PEu5h4010225; Wed, 25 Jun 2025 19:11:57 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=HqW8nqT9xu/zbT7zA lKagL9RxvS7Ysx5eO2iZlQyEhg=; b=dv3e16K4gyPcIGcVAEg0jy0QQ22eSMt7M FCvOebd8SVQ8A+3ryh2ZOsDl3hyFsMISeGR68mtLgE9cu8NXYOq+46uq0iOqNcCX XkByN5tBFGj1jKuP+jFjZGTN0ZbKBzIXTEzZJ1E1EWbSgQ9nRQeXP+CLB1Fswm5h ZoyDSNp4ScPJK1jS3pKMqz117/ZafaIvEM7i5AuxjSzq6IUbkRYFuUfKp0fzesKf 05G/OnkRaXHRT+usnm/h7umytuaBe9L1TkT2b7Ni/Pjo99er0zpF2bAdK9ZgZVej eeNNPUXwaZZI+LgktbAVAD8n8nlwdt8coCN7JDVVO8ZuDgGGeZ/MQ== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 47dmf394jy-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Jun 2025 19:11:57 +0000 (GMT) Received: from m0360072.ppops.net (m0360072.ppops.net [127.0.0.1]) by pps.reinject (8.18.0.8/8.18.0.8) with ESMTP id 55PJBuZu023746; Wed, 25 Jun 2025 19:11:56 GMT 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 47dmf394js-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Jun 2025 19:11:56 +0000 (GMT) Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 55PHioES002471; Wed, 25 Jun 2025 19:11:56 GMT Received: from smtprelay04.fra02v.mail.ibm.com ([9.218.2.228]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 47e8jmasdn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Jun 2025 19:11:56 +0000 Received: from smtpav03.fra02v.mail.ibm.com (smtpav03.fra02v.mail.ibm.com [10.20.54.102]) by smtprelay04.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 55PJBqd234341558 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Jun 2025 19:11:52 GMT Received: from smtpav03.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 480882004B; Wed, 25 Jun 2025 19:11:52 +0000 (GMT) Received: from smtpav03.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id ABFBE20040; Wed, 25 Jun 2025 19:11:48 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.124.209.143]) by smtpav03.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 25 Jun 2025 19:11:48 +0000 (GMT) From: Shrikanth Hegde To: mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, tglx@linutronix.de, yury.norov@gmail.com, maddy@linux.ibm.com Cc: sshegde@linux.ibm.com, vschneid@redhat.com, dietmar.eggemann@arm.com, rostedt@goodmis.org, kprateek.nayak@amd.com, huschle@linux.ibm.com, srikar@linux.ibm.com, linux-kernel@vger.kernel.org, christophe.leroy@csgroup.eu, linuxppc-dev@lists.ozlabs.org, gregkh@linuxfoundation.org Subject: [RFC v2 6/9] sched/core: Push current task out if CPU is marked as avoid Date: Thu, 26 Jun 2025 00:41:05 +0530 Message-ID: <20250625191108.1646208-7-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20250625191108.1646208-1-sshegde@linux.ibm.com> References: <20250625191108.1646208-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-Authority-Analysis: v=2.4 cv=M5FNKzws c=1 sm=1 tr=0 ts=685c49fd cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=6IFa9wvqVegA:10 a=VnNF1IyMAAAA:8 a=Dot9ObxFTPmaUP2n-pkA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNjI1MDE0MSBTYWx0ZWRfX+CuQ7G4MP4RS 0BCK6pMAExM4hCUec36PEznclWOD/wJGxt77Alg7NG66bfJbExACF9w6m0ODCOlMVUmSrHWCXT2 CsgDQtKhYufgFvb54qhatEs1gWjTIWq6hdV9EtTqKW/53LnXSXczfmYhFFYYgag9RyPLlewx2Cc UVX1T1NkUvJvdwqZ1Xn0tjZqwBMUng1qN+dvEQTTikPakt/wz5qAVOFqvS/9oMVEvMcG1ysbagw cZl0uzUCXD6Ed2WhGu+u60V6dypIgbVt8ZMC/DkBJVh6ycqeQJmj0KW6Om7PNj83bFoYGUUzV8Z 8T9nokAUpjccyNanJYQiqROLf6qGiZFeYj8y2g1+ZZpwfmG+o+2N0X9bhff9RVGt7S9w2cprKRF mxijQIJfVYlOBc7rEDN08UeF/cHrwU4SncP0Q+MYsyJ34fpzjFzGtAzeZ0vAud/EUbUVXiaZ X-Proofpoint-GUID: V_KS9G9PtvUsA8fgxKxwlLHmIXl9DBl_ X-Proofpoint-ORIG-GUID: zNTvoP9J2-vGjp_xxArM_75tWYqFc7R0 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.7,FMLib:17.12.80.40 definitions=2025-06-25_06,2025-06-25_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 bulkscore=0 malwarescore=0 impostorscore=0 suspectscore=0 priorityscore=1501 phishscore=0 spamscore=0 clxscore=1011 adultscore=0 mlxscore=0 mlxlogscore=999 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2505280000 definitions=main-2506250141 Content-Type: text/plain; charset="utf-8" Actively push out any task running on a CPU marked as avoid.=20 If a task is sleeping it is pushed out if it wakes up on that CPU.=20 Since the task is running, need to use the stopper class to push the=20 task out. Use __balance_push_cpu_stop to achieve that.=20 This currently works only CFS and RT.=20 Signed-off-by: Shrikanth Hegde --- kernel/sched/core.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ kernel/sched/sched.h | 1 + 2 files changed, 45 insertions(+) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 13e44d7a0b90..aea4232e3ec4 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -5577,6 +5577,10 @@ void sched_tick(void) =20 sched_clock_tick(); =20 + /* push the current task out if cpu is marked as avoid */ + if (cpu_avoid(cpu)) + push_current_task(rq); + rq_lock(rq, &rf); donor =3D rq->donor; =20 @@ -8028,6 +8032,43 @@ static void balance_hotplug_wait(void) TASK_UNINTERRUPTIBLE); } =20 +static DEFINE_PER_CPU(struct cpu_stop_work, push_task_work); + +/* A CPU is marked as Avoid when there is contention for underlying + * physical CPU and using this CPU will lead to hypervisor preemptions. + * It is better not to use this CPU. + * + * In case any task is scheduled on such CPU, move it out. In + * select_fallback_rq a non_avoid CPU will be chosen and henceforth + * task shouldn't come back to this CPU + */ +void push_current_task(struct rq *rq) +{ + struct task_struct *push_task =3D rq->curr; + unsigned long flags; + + /* idle task can't be pused out */ + if (rq->curr =3D=3D rq->idle || !cpu_avoid(rq->cpu)) + return; + + /* Do for only SCHED_NORMAL AND RT for now */ + if (push_task->sched_class !=3D &fair_sched_class && + push_task->sched_class !=3D &rt_sched_class) + return; + + if (kthread_is_per_cpu(push_task) || + is_migration_disabled(push_task)) + return; + + local_irq_save(flags); + get_task_struct(push_task); + preempt_disable(); + + stop_one_cpu_nowait(rq->cpu, __balance_push_cpu_stop, push_task, + this_cpu_ptr(&push_task_work)); + preempt_enable(); + local_irq_restore(flags); +} #else /* !CONFIG_HOTPLUG_CPU: */ =20 static inline void balance_push(struct rq *rq) @@ -8042,6 +8083,9 @@ static inline void balance_hotplug_wait(void) { } =20 +void push_current_task(struct rq *rq) +{ +} #endif /* !CONFIG_HOTPLUG_CPU */ =20 void set_rq_online(struct rq *rq) diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index 105190b18020..b9614873762e 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -1709,6 +1709,7 @@ struct rq_flags { }; =20 extern struct balance_callback balance_push_callback; +void push_current_task(struct rq *rq); =20 #ifdef CONFIG_SCHED_CLASS_EXT extern const struct sched_class ext_sched_class; --=20 2.43.0 From nobody Wed Oct 8 16:27:20 2025 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 9FDE42DECD0 for ; Wed, 25 Jun 2025 19:12:26 +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=1750878748; cv=none; b=T0/4c5dB9DmcuGb05Et2GeLZNm/iLEwUAC0RFMcl3rpDskpq7kpLVHpozlPTueHDv5hvH2MpkmQWBVRMb5RlOVem01i+8b8Ec2DCpCHN0+vpk9q7r16Qd46j3y8VIHqBPFkOrZTDGqVjD9GfhlyZTywdjo1KMJ5uukSDWe9k93Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750878748; c=relaxed/simple; bh=vcqhrkWXnP1mwU/Y+jo+u+sRq3kvrjS5i6HKPIbGABY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=EkzaOrf/mvL/fJcbORX4GFSLUe0EhyyB6VxlVf8xT3AC/GXMSq3MFWlFMAL/aiPzb5bTWmzOT2vmmxsBSq1g/PYqoXHU1l+/IeYFgqbdzno8pOs1j5n7FO6fAmL4zoHu3+rqMPcLj2XCSxa1GD+eU23k5VDOsVoGv/W42jojtas= 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=oXk0YosM; 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="oXk0YosM" Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 55PIMOIv027991; Wed, 25 Jun 2025 19:12:02 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=vaTKvaw0EsjGRWkOV nsWptMm4bJfQ509JCNCEZixgtQ=; b=oXk0YosMHwey4Q7vVwDm/ywFDwwLgcaM2 ducAd7zh/3MEl+B58BZoy4CWA7jHaTFB8tegFFfU0PyZUL3ENPzTke1lnGMJxCWA SOPZIa0wz0D7QDRzeMFXIyYHeEewnRY2RJujEnEfbWW3jVlMWehYdZ8Z9dYpIuEh SpcxD5wF7of00Uiv9uFCaTH3OBtJoS9cqLXr31Qw2DIjlreWyxRSheeMm5B3XZze AyDjEVSREz2T+7/wOP2/cV2Pfcg5pO9Knn97tkb7wVD81bx6tw4ACc6nGA3LiHpv mtuna7EUB7uhnzIQhFkm77lSXqvNcg/0c7kGcMIysUh691/CXGKig== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 47dm8jhhf1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Jun 2025 19:12:01 +0000 (GMT) Received: from m0360083.ppops.net (m0360083.ppops.net [127.0.0.1]) by pps.reinject (8.18.0.8/8.18.0.8) with ESMTP id 55PJC1xs023400; Wed, 25 Jun 2025 19:12:01 GMT 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 47dm8jhhey-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Jun 2025 19:12:01 +0000 (GMT) Received: from pps.filterd (ppma11.dal12v.mail.ibm.com [127.0.0.1]) by ppma11.dal12v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 55PJ6Xxf014748; Wed, 25 Jun 2025 19:12:00 GMT Received: from smtprelay01.fra02v.mail.ibm.com ([9.218.2.227]) by ppma11.dal12v.mail.ibm.com (PPS) with ESMTPS id 47e9s2jjy7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Jun 2025 19:12:00 +0000 Received: from smtpav03.fra02v.mail.ibm.com (smtpav03.fra02v.mail.ibm.com [10.20.54.102]) by smtprelay01.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 55PJBu9O59375874 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Jun 2025 19:11:56 GMT Received: from smtpav03.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 3A20E20043; Wed, 25 Jun 2025 19:11:56 +0000 (GMT) Received: from smtpav03.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 9F09020040; Wed, 25 Jun 2025 19:11:52 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.124.209.143]) by smtpav03.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 25 Jun 2025 19:11:52 +0000 (GMT) From: Shrikanth Hegde To: mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, tglx@linutronix.de, yury.norov@gmail.com, maddy@linux.ibm.com Cc: sshegde@linux.ibm.com, vschneid@redhat.com, dietmar.eggemann@arm.com, rostedt@goodmis.org, kprateek.nayak@amd.com, huschle@linux.ibm.com, srikar@linux.ibm.com, linux-kernel@vger.kernel.org, christophe.leroy@csgroup.eu, linuxppc-dev@lists.ozlabs.org, gregkh@linuxfoundation.org Subject: [RFC v2 7/9] sched: Add static key check for cpu_avoid Date: Thu, 26 Jun 2025 00:41:06 +0530 Message-ID: <20250625191108.1646208-8-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20250625191108.1646208-1-sshegde@linux.ibm.com> References: <20250625191108.1646208-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-Spam-Details-Enc: AW1haW4tMjUwNjI1MDE0MSBTYWx0ZWRfX19uC+xWfQaZ+ Cr7oOUbSprf6nfWvvDOnpMIJjDKjkStAY+orEf7e9QeU5WXCEJr0AleNlQ6bakna6QqkaNEiv1s WvDLTVo0GkcI1sIIsyRLwWOT1JI9r74IAgYhS0vuktKDvYd1X5cd4zLXoZmrCs8a7SBwzOUHVQ3 rJaCZerlT1X9S60VwEKklkRU/J/tH2SXK2+WbLVRKhuPQuIIexcA5hwmdQAPaYieFbWHYebZjGX hJUevIQNSi00v8TME/EnsuorzSyZL4N3APJIWjHuIlLGuxaFdyXIIyDhtB0YPWquCIgueUNyEh8 bJEiktOUPvJGPM8qKNgw3BwCZqMrQ2Jii7Pgvo0RwDGw2QAiNHcg5JSj110FKlPQt3+QUQibXKz Ou4s+6iruLO2DoRI4TxDSUJiN/Cqj6UWQs0wzRwv2jp30l0ByozNU2Po9zEZHlNlDz3Jn4Bp X-Proofpoint-GUID: 8mD_nYPjJGtKhLq4Swoqsyh9Xbkf2bkG X-Proofpoint-ORIG-GUID: M5HFX4d2Aeu9Niu3f8a8kmAcboEwiS88 X-Authority-Analysis: v=2.4 cv=combk04i c=1 sm=1 tr=0 ts=685c4a01 cx=c_pps a=aDMHemPKRhS1OARIsFnwRA==:117 a=aDMHemPKRhS1OARIsFnwRA==:17 a=6IFa9wvqVegA:10 a=VnNF1IyMAAAA:8 a=ha0spXy-qW39NgmqIngA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.7,FMLib:17.12.80.40 definitions=2025-06-25_06,2025-06-25_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 spamscore=0 adultscore=0 mlxlogscore=999 clxscore=1015 impostorscore=0 suspectscore=0 mlxscore=0 phishscore=0 lowpriorityscore=0 bulkscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2505280000 definitions=main-2506250141 Content-Type: text/plain; charset="utf-8" Checking if a CPU is avoid can add a slight overhead and should be=20 done only when necessary.=20 Add a static key check which makes it almost nop when key is false.=20 Arch needs to set the key when it decides to. Refer to debug patch for example.=20 Signed-off-by: Shrikanth Hegde --- This method avoids additional ifdefs. So kept it that way instead of=20 CONFIG_PARAVIRT.=20 Added a helper function for cpu_avoid, since including sched.h fails in=20 cpumask.h kernel/sched/core.c | 8 ++++---- kernel/sched/fair.c | 5 +++-- kernel/sched/rt.c | 8 ++++---- kernel/sched/sched.h | 9 +++++++++ 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index aea4232e3ec4..51426b17ef55 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -148,9 +148,9 @@ __read_mostly int sysctl_resched_latency_warn_once =3D = 1; * Limited because this is done with IRQs disabled. */ __read_mostly unsigned int sysctl_sched_nr_migrate =3D SCHED_NR_MIGRATE_BR= EAK; - __read_mostly int scheduler_running; =20 +DEFINE_STATIC_KEY_FALSE(paravirt_cpu_avoid_enabled); #ifdef CONFIG_SCHED_CORE =20 DEFINE_STATIC_KEY_FALSE(__sched_core_enabled); @@ -2438,7 +2438,7 @@ static inline bool is_cpu_allowed(struct task_struct = *p, int cpu) return false; =20 /* CPU marked as avoid, shouldn't chosen to run any task*/ - if (cpu_avoid(cpu)) + if (cpu_avoid_check(cpu)) return false; =20 /* But are allowed during online. */ @@ -5578,7 +5578,7 @@ void sched_tick(void) sched_clock_tick(); =20 /* push the current task out if cpu is marked as avoid */ - if (cpu_avoid(cpu)) + if (cpu_avoid_check(cpu)) push_current_task(rq); =20 rq_lock(rq, &rf); @@ -8048,7 +8048,7 @@ void push_current_task(struct rq *rq) unsigned long flags; =20 /* idle task can't be pused out */ - if (rq->curr =3D=3D rq->idle || !cpu_avoid(rq->cpu)) + if (rq->curr =3D=3D rq->idle || !cpu_avoid_check(rq->cpu)) return; =20 /* Do for only SCHED_NORMAL AND RT for now */ diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 406288aef535..21370f76d61b 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -8547,7 +8547,7 @@ select_task_rq_fair(struct task_struct *p, int prev_c= pu, int wake_flags) rcu_read_unlock(); =20 /* Don't select a CPU marked as avoid for wakeup */ - if (cpu_avoid(new_cpu)) + if (cpu_avoid_check(new_cpu)) return cpu; else return new_cpu; @@ -11668,7 +11668,8 @@ static int sched_balance_rq(int this_cpu, struct rq= *this_rq, cpumask_and(cpus, sched_domain_span(sd), cpu_active_mask); =20 /* Don't spread load into CPUs marked as avoid */ - cpumask_andnot(cpus, cpus, cpu_avoid_mask); + if (static_branch_unlikely(¶virt_cpu_avoid_enabled)) + cpumask_andnot(cpus, cpus, cpu_avoid_mask); =20 schedstat_inc(sd->lb_count[idle]); =20 diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c index fd9df6f46135..0ab3fdf7a637 100644 --- a/kernel/sched/rt.c +++ b/kernel/sched/rt.c @@ -1549,7 +1549,7 @@ select_task_rq_rt(struct task_struct *p, int cpu, int= flags) if (!test && target !=3D -1 && !rt_task_fits_capacity(p, target)) goto out_unlock; =20 - if (cpu_avoid(target)) + if (cpu_avoid_check(target)) goto out_unlock; /* * Don't bother moving it if the destination CPU is @@ -1873,7 +1873,7 @@ static struct rq *find_lock_lowest_rq(struct task_str= uct *task, struct rq *rq) for (tries =3D 0; tries < RT_MAX_TRIES; tries++) { cpu =3D find_lowest_rq(task); =20 - if ((cpu =3D=3D -1) || (cpu =3D=3D rq->cpu) || cpu_avoid(cpu)) + if ((cpu =3D=3D -1) || (cpu =3D=3D rq->cpu) || cpu_avoid_check(cpu)) break; =20 lowest_rq =3D cpu_rq(cpu); @@ -1971,7 +1971,7 @@ static int push_rt_task(struct rq *rq, bool pull) return 0; =20 cpu =3D find_lowest_rq(rq->curr); - if (cpu =3D=3D -1 || cpu =3D=3D rq->cpu || cpu_avoid(cpu)) + if (cpu =3D=3D -1 || cpu =3D=3D rq->cpu || cpu_avoid_check(cpu)) return 0; =20 /* @@ -2234,7 +2234,7 @@ static void pull_rt_task(struct rq *this_rq) if (likely(!rt_overload_count)) return; =20 - if (cpu_avoid(this_rq->cpu)) + if (cpu_avoid_check(this_rq->cpu)) return; =20 /* diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index b9614873762e..707fdfa46772 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -1710,6 +1710,15 @@ struct rq_flags { =20 extern struct balance_callback balance_push_callback; void push_current_task(struct rq *rq); +DECLARE_STATIC_KEY_FALSE(paravirt_cpu_avoid_enabled); + +static inline bool cpu_avoid_check(int cpu) +{ + if (static_branch_unlikely(¶virt_cpu_avoid_enabled)) + return cpu_avoid(cpu); + + return false; +} =20 #ifdef CONFIG_SCHED_CLASS_EXT extern const struct sched_class ext_sched_class; --=20 2.43.0 From nobody Wed Oct 8 16:27:20 2025 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 74CCD2DECDA for ; Wed, 25 Jun 2025 19:12:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.156.1 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750878743; cv=none; b=E+wgMV8df+ilefXa3cGbT/HQMwmefJRADg8PQI5X3HZl1fqDFZzC8W0kjzsZniaBwS5z9KV16DyL5E3JEYhzoDhe0LSvVIpuYadguukxtnPtQP7j/YCx4fSZrLkOn4HOFYDKLyENmC8v06gY92BLaFFld9Lf9ow7Zzpi3UeOiRM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750878743; c=relaxed/simple; bh=4witdsRX3wDKVOjp0xKOx/skgjm3IJjNw+HFy+FVYo8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=aQEU/BMB3gLvj5EYcrWt8u13crKLw1XClsx34G+RCFDp6HltnucTSqZPRomHY7h12/HjJSuBD1EjuTDK4F9OcEXz4ThQDeKyQApoGKPNJWbXNzH5OOsXQ1Wy6uoGXLpGSQnEUn58/+Hbk5H4FKYjoM8ACDapKMLqZOOT5yEB+Kc= 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=Gm23tVqq; 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="Gm23tVqq" Received: from pps.filterd (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 55PJ1lxW025834; Wed, 25 Jun 2025 19:12: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=vAqWtTDW7YLzVxLKd Hr3jWP4BwqT6KkfNZ9oNmcJqWg=; b=Gm23tVqqPUCwZYA7c9+0r8AL5NR2XJlqA wi7bjFvN4KaA8fTs49mzUeVlkM/7hgDBEvbeGY9w5TzCr7WsqMSXPplreVE3ARRB P28RJX0R+r0t3w54Ni3H4SilX581ZFW1R8HSlXQHDakUxkYeljtNccFyKmLV+8wA F8w6DB7VM+94NvgCzpRaxXdrn6aRdQoHZLZrjMcsClhJUA91fU47E1Mx3izzafBX P6Nyooszzaz5q7jIoKejVkBuJqHZ4UmDuZQxH/eUSCIvPR1UOc5O/sRQbS66ZUWn Tc1EFnTw29lqawfaBZBQ/JBsSwj5Lr6JSJdAJhU5yt7CAuNkPDFEg== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 47gpwhr29r-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Jun 2025 19:12:06 +0000 (GMT) Received: from m0356517.ppops.net (m0356517.ppops.net [127.0.0.1]) by pps.reinject (8.18.0.8/8.18.0.8) with ESMTP id 55PJC5VI014992; Wed, 25 Jun 2025 19:12:05 GMT 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 47gpwhr29j-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Jun 2025 19:12:05 +0000 (GMT) Received: from pps.filterd (ppma22.wdc07v.mail.ibm.com [127.0.0.1]) by ppma22.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 55PGq7we030487; Wed, 25 Jun 2025 19:12:04 GMT Received: from smtprelay05.fra02v.mail.ibm.com ([9.218.2.225]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 47e7f030t1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Jun 2025 19:12:04 +0000 Received: from smtpav03.fra02v.mail.ibm.com (smtpav03.fra02v.mail.ibm.com [10.20.54.102]) by smtprelay05.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 55PJC0Qe46989652 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Jun 2025 19:12:00 GMT Received: from smtpav03.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 36F2E20043; Wed, 25 Jun 2025 19:12:00 +0000 (GMT) Received: from smtpav03.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 9160420040; Wed, 25 Jun 2025 19:11:56 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.124.209.143]) by smtpav03.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 25 Jun 2025 19:11:56 +0000 (GMT) From: Shrikanth Hegde To: mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, tglx@linutronix.de, yury.norov@gmail.com, maddy@linux.ibm.com Cc: sshegde@linux.ibm.com, vschneid@redhat.com, dietmar.eggemann@arm.com, rostedt@goodmis.org, kprateek.nayak@amd.com, huschle@linux.ibm.com, srikar@linux.ibm.com, linux-kernel@vger.kernel.org, christophe.leroy@csgroup.eu, linuxppc-dev@lists.ozlabs.org, gregkh@linuxfoundation.org Subject: [RFC v2 8/9] sysfs: Add cpu_avoid file Date: Thu, 26 Jun 2025 00:41:07 +0530 Message-ID: <20250625191108.1646208-9-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20250625191108.1646208-1-sshegde@linux.ibm.com> References: <20250625191108.1646208-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: 9R3I4iVQ4WPLSPQw96LAdN0D3792uqNx X-Proofpoint-ORIG-GUID: j4Y6QWRJPhn21An-3PwHAy_SOdDGNbJI X-Authority-Analysis: v=2.4 cv=dd+A3WXe c=1 sm=1 tr=0 ts=685c4a06 cx=c_pps a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==:17 a=6IFa9wvqVegA:10 a=VnNF1IyMAAAA:8 a=uVg0aEFNUgdlxJ4hOtAA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNjI1MDE0MSBTYWx0ZWRfX8Ner+tsBH4OV gP/bOavmT3i8icS6AqE0RyTKxJcMe1EyW54YIv7o6wGXgcLT7WFjWhFxt7Tcx+E5b6JtrxwRQEG cKb/k8TWCZbsbCdRZvg8LgJLrasUItxiVCh8Tz9E4kvoi3nlozn7weL/mvv3qUdr82rTpLP7L0I GpkHPFDMIK9cr9Qq/If7+7jYnpqC4sPp4jqeBZS02UmKSFHK/TiJjnonMVSeEeQlLZxc7Enl4dm qKkHDkAZLHDGfLK6rSCIQtBrljvbqpB4K7SwJYeExM95kutQMduWoWET6KYsTk7kzFwJlPhETnZ Yfh1bVli6EqC+0Ztc5Yqo3Ek9QUio7gZnbl2mX8uqabejZnm1UXd+xKWj9Luf1jYVCrt74dWWho c6eV85itAsXb4bZGbWRGeZ9xInpqTG5mtjGY8quJZVOFcCWurqiGZfcPsF3jNGxBDEQPrDJM X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.7,FMLib:17.12.80.40 definitions=2025-06-25_06,2025-06-25_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 spamscore=0 mlxlogscore=811 priorityscore=1501 mlxscore=0 clxscore=1015 adultscore=0 phishscore=0 lowpriorityscore=0 malwarescore=0 bulkscore=0 suspectscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2505280000 definitions=main-2506250141 Content-Type: text/plain; charset="utf-8" Add a sysfs file called "avoid" which prints the current CPUs=20 makred as avoid.=20 This could be used by userspace components or tools such as irqbalance.=20 /sys/devices/system/cpu # cat avoid=20 70-479 Signed-off-by: Shrikanth Hegde --- drivers/base/cpu.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/base/cpu.c b/drivers/base/cpu.c index 7779ab0ca7ce..51c1207f6f33 100644 --- a/drivers/base/cpu.c +++ b/drivers/base/cpu.c @@ -300,6 +300,13 @@ static ssize_t print_cpus_isolated(struct device *dev, } static DEVICE_ATTR(isolated, 0444, print_cpus_isolated, NULL); =20 +static ssize_t print_cpus_avoid(struct device *dev, + struct device_attribute *attr, char *buf) +{ + return sysfs_emit(buf, "%*pbl\n", cpumask_pr_args(cpu_avoid_mask)); +} +static DEVICE_ATTR(avoid, 0444, print_cpus_avoid, NULL); + #ifdef CONFIG_NO_HZ_FULL static ssize_t print_cpus_nohz_full(struct device *dev, struct device_attribute *attr, char *buf) @@ -505,6 +512,7 @@ static struct attribute *cpu_root_attrs[] =3D { &dev_attr_offline.attr, &dev_attr_enabled.attr, &dev_attr_isolated.attr, + &dev_attr_avoid.attr, #ifdef CONFIG_NO_HZ_FULL &dev_attr_nohz_full.attr, #endif --=20 2.43.0 From nobody Wed Oct 8 16:27:20 2025 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 3037A2E11A2 for ; Wed, 25 Jun 2025 19:12: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=1750878749; cv=none; b=KrfMjI6TfBEyl/+NzstiK50ITk0T0DDZkd/p4GsSjqzZSximpxniyscfhs3nj6tU5RyRM2xCc1MOHYgj/dXNVa5O8EjDbdUiCpWxotj7R50QJNSkmiKYeJSq6+SQ0g+Gw4tCo4f5RljfnMaH8mZSeT5lYRwZ7zF50ps+rRw7tAo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750878749; c=relaxed/simple; bh=cUF2HGW2YZSeTGXojGUmjKkoqm89VyvPl2E8a2LQM6s=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=aBJxaV1/rwgouPFJZhs/Zcpr8GIsRXhAD98i08JSJwCzI5XkQCgpSdASDht2p+bts1bDBZ4JHSkblXpwkrLVctmPTIQiaVF6ERWjRgHSmXUSbJ8nurSJIHu3vJTmjGVC6GRtoOu1MNfBm5oS5PnkhhJx6imUPDg/5/A1aRz8Yvo= 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=rQ23vrEl; 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="rQ23vrEl" Received: from pps.filterd (m0360072.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 55PIvp0T002954; Wed, 25 Jun 2025 19:12:10 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=sj4hwpYQjyOaXXLYM wbz9n8YmXdOIVju/O/KyJyJKkQ=; b=rQ23vrEliBZhkHyNP6uH/NX5D/iV90lz5 Sbzfh5xvFGQ3hhs8dranANb/CTkG5sbGz+v+0gQqHyOcPJ3OuJiXixNkwFyHAagh B1yDfI9X+t8/y8sagSpPYtjTmumrY/LtP3Rgb/wZ+Dc9XF7eRq3Mo3qnkjz3P3Fp bQCDp4A16iFQ65QD+LqMLaahVbJusXjk/KZyBP/lWSxJpfABb6xeJgLJAuchygX5 tFbdTW2b+IrdjsSkrtUjo1Fs21RO+mfeTC9qzYEihYNBaU4CgV6CF8jcBjkuiGY4 FbitLYvjLQq/GBQM8DHABv2PjwwlTQJb3sfIoauYmKc8FGL4KN4WQ== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 47dmf394kx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Jun 2025 19:12:09 +0000 (GMT) Received: from m0360072.ppops.net (m0360072.ppops.net [127.0.0.1]) by pps.reinject (8.18.0.8/8.18.0.8) with ESMTP id 55PJ7gLb013252; Wed, 25 Jun 2025 19:12:09 GMT 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 47dmf394kt-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Jun 2025 19:12:09 +0000 (GMT) Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 55PHlU9B002512; Wed, 25 Jun 2025 19:12:08 GMT Received: from smtprelay02.fra02v.mail.ibm.com ([9.218.2.226]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 47e8jmasem-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Jun 2025 19:12:08 +0000 Received: from smtpav03.fra02v.mail.ibm.com (smtpav03.fra02v.mail.ibm.com [10.20.54.102]) by smtprelay02.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 55PJC4Lx45351400 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Jun 2025 19:12:04 GMT Received: from smtpav03.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 47CA520043; Wed, 25 Jun 2025 19:12:04 +0000 (GMT) Received: from smtpav03.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 8E2EB20040; Wed, 25 Jun 2025 19:12:00 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.124.209.143]) by smtpav03.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 25 Jun 2025 19:12:00 +0000 (GMT) From: Shrikanth Hegde To: mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, tglx@linutronix.de, yury.norov@gmail.com, maddy@linux.ibm.com Cc: sshegde@linux.ibm.com, vschneid@redhat.com, dietmar.eggemann@arm.com, rostedt@goodmis.org, kprateek.nayak@amd.com, huschle@linux.ibm.com, srikar@linux.ibm.com, linux-kernel@vger.kernel.org, christophe.leroy@csgroup.eu, linuxppc-dev@lists.ozlabs.org, gregkh@linuxfoundation.org Subject: [RFC v2 9/9] [DEBUG] powerpc: add debug file for set/unset cpu avoid Date: Thu, 26 Jun 2025 00:41:08 +0530 Message-ID: <20250625191108.1646208-10-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20250625191108.1646208-1-sshegde@linux.ibm.com> References: <20250625191108.1646208-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-Authority-Analysis: v=2.4 cv=M5FNKzws c=1 sm=1 tr=0 ts=685c4a09 cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=6IFa9wvqVegA:10 a=VnNF1IyMAAAA:8 a=p-EdeYucjEwV52n1TQsA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNjI1MDE0MSBTYWx0ZWRfX6kykvkwcHs8Q EmPt6oNDn72P8qGY1IlDGuJMzbvzyCBdy7RFg30K1X2Pub5eNmlPEAkNPNC3r4Ls1KH0dGKp4kx Ic4mdmdcq8iX6qfIs6MnKsqfjepUfWU7p+kaGPUpkYXjdIfDrYxgdnzBUyOVQC8NvBiMiHUlwWT DMkpXO3LHm5JSGOQRLe5T2LB0Ll4zZpzSQL8ilXEMfdEfjM0B0e9oNbZE9Nzy0pJ5yUINItFChj 3rEKD94QUQU6PpMph0ZbC+XwYI1jj42MpIUmn/fn86acbtdP4YcAxMLTpi8lQ4Pi/ButXvqYjrR ZQW5o3BOnmeYEsfacXWM1A9MkVUpQs1YIoXXllrFVkoWGCIPWWgeT44ddGDoUz9JugGAkKaM2AZ en3UwsXpSDHOHw2V3g2WmylHytXmFrh4JRjlQSqXYj+aeSqKzSKP8RM4m6x6nc/bc7yqG0VT X-Proofpoint-GUID: tSfwQunLDKfYkRT561MPEbEFGHR3E6AR X-Proofpoint-ORIG-GUID: YFBlOehKcrciiuM9VgjlQ--IrzfvbzFB X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.7,FMLib:17.12.80.40 definitions=2025-06-25_06,2025-06-25_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 bulkscore=0 malwarescore=0 impostorscore=0 suspectscore=0 priorityscore=1501 phishscore=0 spamscore=0 clxscore=1015 adultscore=0 mlxscore=0 mlxlogscore=999 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2505280000 definitions=main-2506250141 Content-Type: text/plain; charset="utf-8" Reference patch for how an architecture can make use of this infra.=20 This is not meant to be merged. Instead the vp_manual_hint should either come from hardware or could be derived using steal time.=20 When the provided hint is less than the total CPUs in the system, it will enable the cpu avoid static key and set those CPUs as avoid.=20 Signed-off-by: Shrikanth Hegde --- arch/powerpc/include/asm/paravirt.h | 2 ++ arch/powerpc/kernel/smp.c | 50 +++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/arch/powerpc/include/asm/paravirt.h b/arch/powerpc/include/asm= /paravirt.h index b78b82d66057..b6497e0b60d8 100644 --- a/arch/powerpc/include/asm/paravirt.h +++ b/arch/powerpc/include/asm/paravirt.h @@ -10,6 +10,8 @@ #include #endif =20 +DECLARE_STATIC_KEY_FALSE(paravirt_cpu_avoid_enabled); + #ifdef CONFIG_PPC_SPLPAR #include #include diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c index 5ac7084eebc0..e00cdc4de441 100644 --- a/arch/powerpc/kernel/smp.c +++ b/arch/powerpc/kernel/smp.c @@ -64,6 +64,7 @@ #include =20 #include +#include =20 #ifdef DEBUG #include @@ -82,6 +83,7 @@ bool has_big_cores __ro_after_init; bool coregroup_enabled __ro_after_init; bool thread_group_shares_l2 __ro_after_init; bool thread_group_shares_l3 __ro_after_init; +static int vp_manual_hint =3D NR_CPUS; =20 DEFINE_PER_CPU(cpumask_var_t, cpu_sibling_map); DEFINE_PER_CPU(cpumask_var_t, cpu_smallcore_map); @@ -1727,6 +1729,7 @@ static void __init build_sched_topology(void) BUG_ON(i >=3D ARRAY_SIZE(powerpc_topology) - 1); =20 set_sched_topology(powerpc_topology); + vp_manual_hint =3D num_present_cpus(); } =20 void __init smp_cpus_done(unsigned int max_cpus) @@ -1807,4 +1810,51 @@ void __noreturn arch_cpu_idle_dead(void) start_secondary_resume(); } =20 +/* + * sysfs hint to mark CPUs as Avoid. This will help in restricting + * the workload to specified number of CPUs. + * For example 40 > vp_manual_hint means, workload will run on + * 0-39 CPUs. + */ + +static int pv_vp_manual_hint_set(void *data, u64 val) +{ + int cpu; + + if (val =3D=3D 0 || vp_manual_hint > num_present_cpus()) + vp_manual_hint =3D num_present_cpus(); + + if (val !=3D vp_manual_hint) + vp_manual_hint =3D val; + + if (vp_manual_hint < num_present_cpus()) + static_branch_enable(¶virt_cpu_avoid_enabled); + else + static_branch_disable(¶virt_cpu_avoid_enabled); + + for_each_present_cpu(cpu) { + if (cpu >=3D vp_manual_hint) + set_cpu_avoid(cpu, true); + else + set_cpu_avoid(cpu, false); + } + return 0; +} + +static int pv_vp_manual_hint_get(void *data, u64 *val) +{ + *val =3D vp_manual_hint; + return 0; +} + +DEFINE_SIMPLE_ATTRIBUTE(fops_pv_vp_manual_hint, pv_vp_manual_hint_get, pv_= vp_manual_hint_set, "%llu\n"); + +static __init int paravirt_debugfs_init(void) +{ + if (is_shared_processor()) + debugfs_create_file("vp_manual_hint", 0600, arch_debugfs_dir, NULL, &fop= s_pv_vp_manual_hint); + return 0; +} + +device_initcall(paravirt_debugfs_init) #endif --=20 2.43.0