From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8D24D341ADD for ; Thu, 14 May 2026 15:25:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.156.1 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772328; cv=none; b=ccmSwh34I4hrUTk8a3x/rJoF/bIua5gke/cFv4YaRRe9/wQLwWLmj/TDwWKlSN6xh5JnWpTRjUdoaQqqZRYfANcuspGsxTiHTI0aeUDoEBUF0wcxkohBjuSlbsXx5ozFxV6gdsHL5FqNn4+D24QM5a6JaQeusPCoOGatEuG6X/s= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778772328; c=relaxed/simple; bh=ZqKMTCfJLNbGI/XUu6KnD5Pw1zHHMh3KVKpykjbutlU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=XuOiSFopzGz7os7erUKv24drdAC/NKZKMcsQzGhtL303IKgH00FFjeQ9LoWnxAoGDVdRtpHlP6z1cSYbI74ZMG7xt0WQFSV4CUP7k56bTeCSVZ8lPLIpm4r8gxn0ii3h4P4tS1N68/HjdmvyvvvuIfppvrKzudlpzudVx3HOSos= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=DhVz+GHr; arc=none smtp.client-ip=148.163.156.1 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="DhVz+GHr" Received: from pps.filterd (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64E9PdZ92826335; Thu, 14 May 2026 15:25:03 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=AZNzf4p9MR1x1zu6u yuTE9bnp4vRz1KW/w/b9qS33bU=; b=DhVz+GHragMrZ8M+Nr6uknACDpIZ3PyAG UMGV7wUJ+lGaNTyDo2D7CmgeMU4mAZFKVxXMpUCVoB2gyecr8+YgNaABuJMLrTa+ LkLmhWWhpFSr15TlhFGFI4X2JiFpnYPH/JvOWs1O55Y2BHOnIqyMFGorS07FkALb hzmNHY6J0jHre26UTTUerMjmRhH6g39+eeWL1tFnMiGnmcEJB8R+EC5JatGcjQDI e4ihxIpfAAPDhXHp8Ex49maPcHqCIIINJc/RGxSJtdndzI/8vvP9WWaBXmYVPt4l suT6DimqnM4t/XqH/KnQIBNVUc9XhNSxhKJXY3R9u9yc4TWHdbOzg== Received: from ppma23.wdc07v.mail.ibm.com (5d.69.3da9.ip4.static.sl-reverse.com [169.61.105.93]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4e3nve54kh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:25:02 +0000 (GMT) Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 64EF9arH002642; Thu, 14 May 2026 15:25:01 GMT Received: from smtprelay02.fra02v.mail.ibm.com ([9.218.2.226]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4e3nfgvw6g-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 14 May 2026 15:25:01 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay02.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 64EFOvjc46072158 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 14 May 2026 15:24:57 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id A1B5E20043; Thu, 14 May 2026 15:24:57 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 29E4220040; Thu, 14 May 2026 15:24:49 +0000 (GMT) Received: from li-7bb28a4c-2dab-11b2-a85c-887b5c60d769.ibm.com.com (unknown [9.124.213.185]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Thu, 14 May 2026 15:24:48 +0000 (GMT) From: Shrikanth Hegde To: linux-kernel@vger.kernel.org, mingo@kernel.org, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, yury.norov@gmail.com, kprateek.nayak@amd.com, iii@linux.ibm.com Cc: sshegde@linux.ibm.com, tglx@kernel.org, gregkh@linuxfoundation.org, pbonzini@redhat.com, seanjc@google.com, vschneid@redhat.com, huschle@linux.ibm.com, rostedt@goodmis.org, dietmar.eggemann@arm.com, mgorman@suse.de, bsegall@google.com, maddy@linux.ibm.com, srikar@linux.ibm.com, hdanton@sina.com, chleroy@kernel.org, vineeth@bitbyteword.org, frederic@kernel.org, arighi@nvidia.com, pauld@redhat.com, christian.loehle@arm.com, tj@kernel.org, tommaso.cucinotta@gmail.com, maz@kernel.org, rafael@kernel.org Subject: [PATCH v3 14/20] sched/debug: Provide debugfs to enable/disable steal monitor Date: Thu, 14 May 2026 20:51:58 +0530 Message-ID: <20260514152204.481115-15-sshegde@linux.ibm.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260514152204.481115-1-sshegde@linux.ibm.com> References: <20260514152204.481115-1-sshegde@linux.ibm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Authority-Analysis: v=2.4 cv=Y/XIdBeN c=1 sm=1 tr=0 ts=6a05e94f cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=NGcC8JguVDcA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=U7nrCbtTmkRpXpFmAIza:22 a=VnNF1IyMAAAA:8 a=AGdzPjPON9MHgwMSPg0A:9 X-Proofpoint-GUID: wSIvUvqChgeaExC_VlS1LTL5f6-lVF6R X-Proofpoint-ORIG-GUID: enEnf4L6FM09B2x2D3JUdYmLUtTzpJFx X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTE0MDE1MyBTYWx0ZWRfX7f5X0G3vckZO lG2RjU3BHKdOjiDZgumv5ZJEsaBhKP4Rf1rXcQ6SfyJ2kdlsYGce2VUgAObOMdOOnht2riojee6 sBnTqPAmw9KTP00TZbv2lR884ZVeK4dJfVu8A4PhhawcF+0e+SxDCrPDEM5Hq9B8Ub0JZjwD1rQ iCwq7iBMc9knziZt2KCj2FUNcwbkbO0Si2kWWAR06Ize2xA0ZzSocZKlwTykKP63W1+OFwt045l EGOIDB1USe0ZbHkKYHckBQc0FCu5N5XHY7t9xo/fmqVqxfjYRbXGrpBE4bSFsFP+vn42z6fl9se 7jUFyPJzayIcklqY6OqUAljOQJcl0LdYJr3aQzEs3oyGbGTe+R7ZYoZ0HENqS5QQq8VJJEajsWG Z6UMk5IVAwnWR9xYTpZw7aRPptQODyq1HHNRIIojOV3BaTfHDyHvSVVj7JXmK36TsSLJzdyRcvL gRB1agHoYG1OkqWPfzA== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-05-14_03,2026-05-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 priorityscore=1501 lowpriorityscore=0 phishscore=0 malwarescore=0 suspectscore=0 bulkscore=0 spamscore=0 adultscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605140153 Add a debugfs "enable" file to enable steal time monitor. Computing steal time and acting on it periodically are to be opted by the user. This helps to avoid any overhead when the feature is disabled. It is disabled by default. Signed-off-by: Shrikanth Hegde --- kernel/sched/core.c | 1 + kernel/sched/debug.c | 29 +++++++++++++++++++++++++++++ kernel/sched/sched.h | 2 ++ 3 files changed, 32 insertions(+) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 0d1995c65ce6..1533a44d1a6b 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -11270,6 +11270,7 @@ void sched_change_end(struct sched_change_ctx *ctx) #ifdef CONFIG_PREFERRED_CPU /* npc - non preferred CPU */ static DEFINE_PER_CPU(struct cpu_stop_work, npc_push_task_work); +DEFINE_STATIC_KEY_FALSE(__sched_sm_enable); static int sched_non_preferred_cpu_push_stop(void *arg) { diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c index b1abfdc168bf..be8d223b43fd 100644 --- a/kernel/sched/debug.c +++ b/kernel/sched/debug.c @@ -592,6 +592,33 @@ static void debugfs_ext_server_init(void) #endif /* CONFIG_SCHED_CLASS_EXT */ #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; + + 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_online_mask); + } + + 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; @@ -599,6 +626,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 96870021a842..bcc65c8b4ac6 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -4140,6 +4140,8 @@ static inline bool task_has_preferred_cpus(struct 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