From mboxrd@z Thu Jan 1 00:00:00 1970 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 98D52363C40 for ; Wed, 17 Jun 2026 17:42: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=1781718180; cv=none; b=u1myoOil/w5vRngOSY6R6Cj6LyW8hgYeMYZxoxGCymMazijnoVNeM1J9U+BdrVJp2u5xFfKYFsjQpFkt40YR7IgPUcQAooBthOhOyXLOPOSDnrXn5MERYvg8zAFGzKuFL3pf1FcUp7jBXxVfzEZllTMB9JF2w3PdTWEPZMzP9Yc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781718180; c=relaxed/simple; bh=fw1B8rOmocGYYs+jccKTfdWE6Fxbdc9uIfozdm94Co4=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type; b=TqYlOMjPuJcDhtEUDtiCQ3BGo3nEYm+D4ADRsvt85kikbImkogH+gUOhRELj3fsYuxpaYYXYiaf4hSusw6kpIVwIPg03396EiX+sgqFiL9RoKnKJtyfWwSqM5ZWdN6IWgwgYOizOFpzU/U5GbrNLa/d03mj0OdT7gao7YMXpWdc= 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=tWpYJrq1; 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="tWpYJrq1" 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 65HFq9ML762033; Wed, 17 Jun 2026 17:42:34 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:content-type:date:from:message-id :mime-version:subject:to; s=pp1; bh=0oskUAqn6kjPncd2C41ge0Hx9z3N Op/yXET+loErxY4=; b=tWpYJrq1YJhrRa5m7ho/vemng6Yr/PiTfKDp38mAAXUW dEelYOoEqHJuXZN83SRSpKIvJscIWznFTPf+9JI+1rBRWv3C+DDunSg1w3ehf+eh frVC7q+S8lhiDvNhSPIHz2mtaj6fJXfLbCgrBT5cGUoOpUs0WTHOQWTsB6YHpAA+ rJk1hZVVKMf6Y3lkHM9LPKhW37Z5A4nhHvCG6YkpFHbQ/unVc5x3vVcomf/Jfes0 rXVrNOaOeEnjPxOA1OTgZrST+bPO2cN1pNSKKWEYRd6JODhMkf3f2q7+h8eBLrQb Vwx+ATHpoGTPIAY+J6/sij5WRXSfx0PY8HD7CrGtmQ== 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 4eueqxc68v-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:42:34 +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 65HHYdvc012790; Wed, 17 Jun 2026 17:42:33 GMT Received: from smtprelay06.fra02v.mail.ibm.com ([9.218.2.230]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4eudvambcn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Jun 2026 17:42:33 +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 65HHgTlI23462386 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 17 Jun 2026 17:42:29 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 512E620040; Wed, 17 Jun 2026 17:42:29 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 277B520049; Wed, 17 Jun 2026 17:42:22 +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:21 +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 00/20] sched: Introduce cpu_preferred_mask and steal-driven vCPU backoff Date: Wed, 17 Jun 2026 23:11:19 +0530 Message-ID: <20260617174139.155540-1-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.54.0 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: 8bit 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=6a32dc8a cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=IkcTkHD0fZMA:10 a=FelO9ux0wxsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=V8glGbnc2Ofi9Qvn3v5h:22 a=jJrOw3FHAAAA:8 a=VwQbUJbxAAAA:8 a=VnNF1IyMAAAA:8 a=Bk1kIznfBRpmXQDaQTcA:9 a=QEXdDO2ut3YA:10 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfX9kYmFtVvAKNu jACCxaIor0Ia4Oy6rRKOLh4d3hQw219wOTh3jEe5Q5b+Q1KPZkIadY/sj43xkVZviyAW5MBUu1Z ouYD+3zrN34DwHNSSZF8Qe4IvvDln4gMvnhBn7zCAlQpq+qLPU3oWm4wLXzWOi7TE8HNV+Jmtp/ VkgXuPhB8jWGthiWba2fFoAAVM3cZAlpDE1hlyYQYwmd9Sy4uHFKLB/+4dH2p/ZKXlSU8A1mfDU MZwAeVJQ3bi7z9dtwHyv+k9yb5NZ2ojhJZQ4cDgbvqBanL5r7WQnLvYI7i8IfdW6/X2b9ZE08r1 YlqMG/fWmsebL2/Lsqtt3+4CNyJS6h4SE575qYjHfyEQgE3QkuzihcAUfDfhLO6BWh7+Ec8WyvW eEzrsKqL3BPSesMXEJrMyXPit25x0iXvOp7/0LH8f26i6NzDne8I4a8KNj5c+qK5Aha5BmobJXb z65t5wWRaEztxU/Jq4g== X-Proofpoint-GUID: oIQcJkWPaM46VhfdgTJ1kIDyiDlah0Zn X-Proofpoint-Spam-Info: AW1haW4tMjYwNjE3MDE2NiBTYWx0ZWRfX4lsPu9rKxs0f t14XJMUy+LL6pJwvs0OeYn5KedqVcg6svPn2MZmzlSrvQ7447cIwEm99QJSjEU8YgzzjMMo5lwz 1dPkuSYPqsC9TkNqMiqzHhPP2/rwues= X-Proofpoint-ORIG-GUID: G8OkY5q5jiCgjB46alOT7P54Px-yHBp2 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 Very briefly, - Maintain set of CPUs which can be used by workload. It is denoted as cpu_preferred_mask - Periodically compute the steal time. If steal time is high/low based on the thresholds, either reduce/increase the preferred CPUs. - If a CPU is marked as non-preferred, push the task running on it if possible. - Use this CPU state in wakeup and load balance to ensure tasks run within preferred CPUs. For more details on idea, problem statement and performance numbers, please refer to cover-letter of v2[2] and OSPM talk[1]. *** Please review and provide your feedback!! *** [1]:https://youtu.be/adxUKFPlOp0 [2] v2: https://lore.kernel.org/all/20260407191950.643549-1-sshegde@linux.ibm.com/#t [3] v3: https://lore.kernel.org/all/20260514152204.481115-1-sshegde@linux.ibm.com/ v3->v4: - Made preferred subset of active instead of online. (K Prateek Nayak, Peter Zijlstra) - Dropped RT patch - Decided generic sched_ext change doesn't make sense. Hence it has to be custom sched_ext with its select_cpu, enqeue/dequeue etc. This will be done later. - changes to is_cpu_allowed/select_fallback_rq to avoid N**2 (K Prateek Nayak). There is encoding of two bits of information there. Let me know if this needs to split up into two. - Add concurrency protection for enabling/disabling steal monitor (Ilya Leoshkevich) - Dropped tmp_mask and reset steal_monitor state (Ilya Leoshkevich) - Added a few cpumask_check (Yury Norov) - Picked up tag for patch 1. (Thanks to K Prateek Nayak) - Decided not to put too much complexity for numa splicing. There is no major TODO item at this point. There are few minor additions which maybe good to do provided numbers show its worth. Performance numbers are expected to be same as v2. base: tip/sched/core at c095741713d1 ("sched/fair: Fix newidle vs core-sched") Shrikanth Hegde (20): sched/debug: Remove unused schedstats sched/docs: Document cpu_preferred_mask and Preferred CPU concept kconfig: Provide PREFERRED_CPU option cpumask: Introduce cpu_preferred_mask sysfs: Add preferred CPU file sched/core: allow only preferred CPUs in is_cpu_allowed sched/fair: Select preferred CPU at wakeup when possible sched/fair: load balance only among preferred CPUs sched/core: Keep tick on non-preferred CPUs until tasks are out sched/core: Push current task from non preferred CPU sched/debug: Add migration stats due to non preferred CPUs sched/debug: Create debugfs folder steal monitor sched/debug: Provide debugfs to enable/disable steal monitor sched/core: Introduce a simple steal monitor sched/core: Compute steal values at regular intervals sched/core: Introduce default arch handling code for inc/dec preferred CPUs sched/core: Handle steal values and mark CPUs as preferred sched/core: Mark the direction of steal values to avoid oscillations sched/debug: Add debug knobs for steal monitor sched/core: Add a few check for valid CPU in inc/dec of preferred CPUs .../ABI/testing/sysfs-devices-system-cpu | 11 + Documentation/scheduler/sched-arch.rst | 49 ++++ Documentation/scheduler/sched-debug.rst | 34 +++ drivers/base/cpu.c | 8 + include/linux/cpumask.h | 21 +- include/linux/sched.h | 20 +- kernel/Kconfig.preempt | 13 + kernel/cpu.c | 14 + kernel/sched/core.c | 269 +++++++++++++++++- kernel/sched/debug.c | 55 +++- kernel/sched/fair.c | 4 + kernel/sched/sched.h | 42 +++ 12 files changed, 531 insertions(+), 9 deletions(-) -- 2.47.3