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 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: 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=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 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); 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) } #ifdef CONFIG_PREFERRED_CPU +__read_mostly bool sched_sm_wr_enable; + +static ssize_t sched_sm_en_write(struct file *filp, const char __user *ubuf, + size_t cnt, loff_t *ppos) +{ + bool orig = sched_sm_wr_enable; + ssize_t result; + + cpus_read_lock(); + result = 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 = { + .read = debugfs_read_file_bool, + .write = sched_sm_en_write, + .open = simple_open, + .llseek = 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 = 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 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 task_struct *p) } #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) { } -- 2.47.3