From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from LO2P265CU024.outbound.protection.outlook.com (mail-uksouthazon11021092.outbound.protection.outlook.com [52.101.95.92]) (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 426E11A2C04 for ; Tue, 28 Jul 2026 02:03:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.95.92 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785204205; cv=fail; b=oa6OeC1C5zFwVLbpqrLkdcJdiJ7+EB6VhyZ1yufblhIgI3jqxKW0e26iKr7uwmlhIlLxyZD6diFV3nOJMH6a0AIRMQmVv1yZ8FG8adLkmkI0d0617KTWC7M4I80DaPqHyC2Wr/A4NTSB6ZSYvAfNojNDvLkWSxcQexGWQAwLLU0= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785204205; c=relaxed/simple; bh=p62ieCNVjLxDx9LGgFRfEZtFhqJjq4jnkIdBUp7BJ6o=; h=From:To:Cc:Subject:Date:Message-ID:Content-Type:MIME-Version; b=BLk23CSM3p0iJiHC0mQOA3xeT7bJC2J7w00gVtzXXIwC7ak8XHMOyogTiXOAKlYup0a1W8zZbRwoeNUE3nEshP2L3g0uF2zScCvH76V1/UJd+9SPPbaC2ZWLcFIHNEXyYXwlo7VpxDYqlin6Do9sl/uext/BPTq+SwLcj9qlAHY= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com; spf=pass smtp.mailfrom=atomlin.com; arc=fail smtp.client-ip=52.101.95.92 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=atomlin.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=WtbluHw0TQWkZyLfCGhUCyOYdWbNy4TKXNy19N+faPoXFoqECccKBURV5wmjxIUH1FvBpLLmiomABRqBbIraihqIhsf7z4cxl7x19kSJdZPz9wxB2LpsfmFJpzrfEUb1BSc6F9UEeQTUwGKiJcH+MeLZ/U3JCgBsKYR/dK3vwWTdO+wxPJZiqedntVreOzR6ey1yaMYOxK/JtJm/QOL31HK6q+drYzZ73rUwfwdC3FVHH0OlFp3BmRK2B67ltnNdRRc7wG45+nC7+vsBbWz9OIiF/ru9WgiA1gHkLxaG4qAU5+AQk32JORhtySBEC47mbSet99uQQ2sRoZXiDqGNkg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:MIME-Version; bh=0783agNeYTAK5r9/neAUNLHMIkLLYRmt14ECF15ln0s=; b=CvSqWyUSyQM+YbzOLZLS2J73hwVna5abBiSACMUj2w+AMB8S8VvfvS533p02KUps2xDbu8gZIZU8Y8NBU5oRRxp1CuMW8QPe47i98pmQ4IVQbQrgg4IuOMB2N42SzHFhDr0r7xZy25iuRcIQlAifY3hdnZJNl07f0DYls5YFnpbce/cZ/y+uHhc9XccAmiqRQWEvgMwIut1hRbem/jitMgeeA1z0gnq+uhP7JMgsWoz1nbKQhCFFEWJoLf24o4k1MHGd0OkLJzgkB7X/lY9FF5Of9PWHuSY4EhXSCWLAeEHIit8hfUOvMK+6sz4dAgQcT5kfzAktTRZvbARsAE6KQw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=atomlin.com; dmarc=pass action=none header.from=atomlin.com; dkim=pass header.d=atomlin.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=atomlin.com; Received: from LO6P123MB6616.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:2b2::11) by LOAP123MB8799.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:493::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.270.12; Tue, 28 Jul 2026 02:03:19 +0000 Received: from LO6P123MB6616.GBRP123.PROD.OUTLOOK.COM ([fe80::3975:c5e7:bc1a:f383]) by LO6P123MB6616.GBRP123.PROD.OUTLOOK.COM ([fe80::3975:c5e7:bc1a:f383%4]) with mapi id 15.21.0245.012; Tue, 28 Jul 2026 02:03:19 +0000 From: Aaron Tomlin To: mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org Cc: dietmar.eggemann@arm.com, rostedt@goodmis.org, bsegall@google.com, mgorman@suse.de, vschneid@redhat.com, kprateek.nayak@amd.com, neelx@suse.com, sean@ashe.io, linux-kernel@vger.kernel.org Subject: [PATCH] sched/debug: Introduce per-CPU debugfs files Date: Mon, 27 Jul 2026 22:03:09 -0400 Message-ID: <20260728020309.6169-1-atomlin@atomlin.com> X-Mailer: git-send-email 2.55.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: BN9PR03CA0229.namprd03.prod.outlook.com (2603:10b6:408:f8::24) To LO4P123MB6610.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:279::12) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: LO6P123MB6616:EE_|LOAP123MB8799:EE_ X-MS-Office365-Filtering-Correlation-Id: 163cd0f3-bf00-4f38-5e5f-08deec4c64c1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024|23010399003|18002099003|5023799004|56012099006|3023799007|10067099003; X-Microsoft-Antispam-Message-Info: hn0jHE5c6b00Rmukz3LuGoP89hmEji74IUU3fCnQiRILuzM4p3FWlb6rtA46tI2vOWoZ6hxzIZ/C+41fwx/IJZWxLL8/MwtipsBCLnfCUa/PCIwD3YVQOJILS9IByiNTeqwRCLyEP9KePz8qFFpT+UvdmjXTbtIXI3ORcl/92sU8beU0F1UBooc5Hy9ZdBRxpIK7k2siaEycVEGdGlTNLXhsr5i3WImvzkMOKguWgBJGcr87WXwLLzQ1mFi3JTVVlgAQlvC53FZywQQxxL93+1oR3fJHxyr23sSMlxqewbr2yjZN7FMYbIu7J43oSbOIjfJLGcjjMNUgjZFiufOlhKG1dRMNje4brrwD9vdffUL/cr7E4mZs4Uua616BKD0okreJR3DAKgbuwLmoVIyLoDsjgme06Lx6JQy5ge8fYorfyfffa45hB1DhxKzIqkvde//v/aooxmAxnu3SpZIxlixcu64cIvgUWwsjYfzB7SLIxRgyOozmC29kVnjlLO8Lm92HJujG0MZAlblgcfQbAhGlC8bU+u1FhtaSJhs+8L8PP8ZrizhTZo5U0gSsv1JWttw+/+duhWyG22ZAa7IdAqn3f6mFfeWdVkdu0NwQsZBFh9snVCDAmKT9HMplt27MDxurUugJAx6q5sptjAU9NkG0eUEJi3JVs/jcn5KS2s0= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LO6P123MB6616.GBRP123.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024)(23010399003)(18002099003)(5023799004)(56012099006)(3023799007)(10067099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?oZJvR1JSBOUuzBcrm2EVzzpT3AYcs7STqD2BhpJ/TxnyZBDF7Jz4+SlN2yLr?= =?us-ascii?Q?bNoACCMYyetbLoSAnE8dlUvX3l+kUB6f9a8fiyvI5bJ/i4Mw3ZQCDI1tlec7?= =?us-ascii?Q?7uUFs0lFwbQ+80ulWrmPV7VJRfqi0H61XheyhkHYM3XTAXf+m2gSx0qnQcBg?= =?us-ascii?Q?yNt01sTtFn8thzf/wtjTjVDF9ZBZXpyTP9UcBGHbKIUi7IbGdjTf4t5aQhxK?= =?us-ascii?Q?zO7fn+nXOqmL4Ax9SBWfIPXxXB8w3CB9Aa/yEd0BImRu7ncGBz1tMXn42yzV?= =?us-ascii?Q?alu0ELJttRRN0yz8fEx+fxn6b00pTwM/Yj2k3Nc2BHQyJKLk+a77RxMU/ZJ4?= =?us-ascii?Q?9elbfWcp4P7ZmPaILvjvBDdJq0+1zLEI0wdyam/4I2yYtGJz5IedWy0G9+vY?= =?us-ascii?Q?dOIHkg5istHcSLNeqA6N37uvazcMMjRTnHugX/1FDjF0pJ8Qqui0cut2ARwz?= =?us-ascii?Q?YUkNioixW9XD5r5s7038ZIr+bdQPnxxpMErjQO45B5DcP9gr9P13ggO8EvJU?= =?us-ascii?Q?NjQcSZRsSLdEwAl1TBH93tz34tWHTUYCfyeygtGeDVM05lRQK7J9XcDMt2LF?= =?us-ascii?Q?jm1hTMadkx1asmLj+xeZNeMhjQNnly3LPYSqj2usgMA/jNdCfibkbEwdbydn?= =?us-ascii?Q?mvJsYlHlpa95ua8IMi79DWkOpBeGkRbiGnnGRj3FSXVN6IS7ay/pnWe5nYNu?= =?us-ascii?Q?4QmoE5kVeuwBZ3X9+7cxu3ZBfMJ89NL0EBNmSxahu1CmjJ7TJb850aDB7aKG?= =?us-ascii?Q?r3Kyclr75aX85M+U3D4pzrHqSNTK+AGEmJDo/O6aE3WIxw/7BFqHEUWWoruE?= =?us-ascii?Q?xnuBc6F5RojlyYTzDnSEb+nvODQ7od2MibXCyCm8LMpqLrljC6Q977l1TOma?= =?us-ascii?Q?1NpjbD46GyKjcte80FcUZQDY/XaKpEvbyzgfhmH8ZvlJOmVja+odap8IQVNU?= =?us-ascii?Q?WcBlEfWwERDlEKlfuQg73uLGpTQn9iEkRZw4D4xiaEfaRl1LWF5dwdtpU5y2?= =?us-ascii?Q?3krCYn2DBRSiIIqMSUwYuMgi5tfOfNk9cIZZps5t8lrj/4QEshlBWrnKaO+Q?= =?us-ascii?Q?EEwVI2Wylrh9Pqkh2P4YZACTbacTHagH2MECXix51F2zAmyVwMzKZdWlIAht?= =?us-ascii?Q?yOP4JiHpcd7wbc1UosN7h8QBbGgmT1AijOBLrQb6FM+Ptw6OkBBklxaKFIAX?= =?us-ascii?Q?9E3RBZwljMG1EOinmYXVCCvy0NjkqMMc5vGqv2NrW+l1OK3Yzphbey9yCKvC?= =?us-ascii?Q?1V2SvPC6MJa0DjhQtx2yQTUR8aFJOo9/1XZw/41UM+UVOahYNu+9QiAG9TEV?= =?us-ascii?Q?AvHaFjAkGgpwFsxubYPxUqdIJVcsl1fFNxQJ0ctYKuV4TgoAxXgWl90Gha3X?= =?us-ascii?Q?Bs4yPM/3Chxf9TLeStAYtDPnAqvKlzVXgh2KdtVtlBr6jIfTwJldLAS42rXo?= =?us-ascii?Q?inJwlKcEC3DQ4HuFoZr769kIRGiv5lrqVuS8ACobAN555OMvwm2ysRjeRQbP?= =?us-ascii?Q?ejSkBeCWEiczl0n3ukwGGmx5jKAcRzIbnUfV3cjCdjD0UDnYQnSkH7ntRzW6?= =?us-ascii?Q?dTDmuY03peZY/CvKkO/kFIhdox06tqfP+W7jT7X2lEbbWrWfhkGc6zm0VowU?= =?us-ascii?Q?gUMmqIX/P5BxSBnRJoJ/BB9JaCzpbymRS2l82QVIo8G2XS11yuMapPrDaqYY?= =?us-ascii?Q?Jp+qaA3IG+fb7SrvnkxFTBoLyCn5u2qLcsuc2EIJr4qFFH15oyrGDEdKUKVv?= =?us-ascii?Q?uIqGY8JTSA=3D=3D?= X-OriginatorOrg: atomlin.com X-MS-Exchange-CrossTenant-Network-Message-Id: 163cd0f3-bf00-4f38-5e5f-08deec4c64c1 X-MS-Exchange-CrossTenant-AuthSource: LO4P123MB6610.GBRP123.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jul 2026 02:03:19.0840 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e6a32402-7d7b-4830-9a2b-76945bbbcb57 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Wk8B2u48TJwHd7mXxeohkrZGh0tlqUeWISqtFLSaWJr4AK8uFuojcvhNJzcfHyCcHBecHVTiHjBk1HLy5CZ2Fg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LOAP123MB8799 Currently, accessing scheduler debugging details for a specific CPU requires reading /sys/kernel/debug/sched/debug, which outputs information for all online CPUs. This results in redundant output and parsing overhead on large SMP systems when targeting an individual CPU. Add support for per-CPU debug files under: /sys/kernel/debug/sched/cpu/cpu/debug. Reading /sys/kernel/debug/sched/cpu/cpu/debug calls print_cpu() specifically for CPU , exposing CPU-specific runqueue details on demand. Signed-off-by: Aaron Tomlin --- kernel/sched/debug.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c index 40584b27ea0c..15785a414134 100644 --- a/kernel/sched/debug.c +++ b/kernel/sched/debug.c @@ -356,6 +356,7 @@ static const struct file_operations sched_verbose_fops = { }; static const struct seq_operations sched_debug_sops; +static void print_cpu(struct seq_file *m, int cpu); static int sched_debug_open(struct inode *inode, struct file *filp) { @@ -633,6 +634,44 @@ static void debugfs_fair_server_init(void) } } +static int sched_debug_cpu_show(struct seq_file *m, void *v) +{ + unsigned long cpu = (unsigned long) m->private; + + print_cpu(m, cpu); + return 0; +} + +static int sched_debug_cpu_open(struct inode *inode, struct file *filp) +{ + return single_open(filp, sched_debug_cpu_show, inode->i_private); +} + +static const struct file_operations sched_debug_cpu_fops = { + .open = sched_debug_cpu_open, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, +}; + +static __init void debugfs_cpu_init(void) +{ + struct dentry *d_cpu_dir; + unsigned long cpu; + char buf[16]; + + d_cpu_dir = debugfs_create_dir("cpu", debugfs_sched); + + for_each_possible_cpu(cpu) { + struct dentry *d_cpu; + + snprintf(buf, sizeof(buf), "cpu%lu", cpu); + d_cpu = debugfs_create_dir(buf, d_cpu_dir); + + debugfs_create_file("debug", 0444, d_cpu, (void *) cpu, &sched_debug_cpu_fops); + } +} + static __init int sched_init_debug(void) { struct dentry __maybe_unused *numa, *llc; @@ -690,6 +729,7 @@ static __init int sched_init_debug(void) #ifdef CONFIG_SCHED_CLASS_EXT debugfs_ext_server_init(); #endif + debugfs_cpu_init(); return 0; } -- 2.55.0