Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

sched_ext: Improve logging around enable/disable

sched_ext currently doesn't generate messages when the BPF scheduler is
enabled and disabled unless there are errors. It is useful to have paper
trail. Improve logging around enable/disable:

- Generate info messages on enable and non-error disable.

- Update error exit message formatting so that it's consistent with
non-error message. Also, prefix ei->msg with the BPF scheduler's name to
make it clear where the message is coming from.

- Shorten scx_exit_reason() strings for SCX_EXIT_UNREG* for brevity and
consistency.

v2: Use pr_*() instead of KERN_* consistently. (David)

Signed-off-by: Tejun Heo <tj@kernel.org>
Suggested-by: Phil Auld <pauld@redhat.com>
Reviewed-by: Phil Auld <pauld@redhat.com>
Acked-by: David Vernet <void@manifault.com>

+12 -8
+12 -8
kernel/sched/ext.c
··· 4013 4013 { 4014 4014 switch (kind) { 4015 4015 case SCX_EXIT_UNREG: 4016 - return "Scheduler unregistered from user space"; 4016 + return "unregistered from user space"; 4017 4017 case SCX_EXIT_UNREG_BPF: 4018 - return "Scheduler unregistered from BPF"; 4018 + return "unregistered from BPF"; 4019 4019 case SCX_EXIT_UNREG_KERN: 4020 - return "Scheduler unregistered from the main kernel"; 4020 + return "unregistered from the main kernel"; 4021 4021 case SCX_EXIT_SYSRQ: 4022 4022 return "disabled by sysrq-S"; 4023 4023 case SCX_EXIT_ERROR: ··· 4135 4135 percpu_up_write(&scx_fork_rwsem); 4136 4136 4137 4137 if (ei->kind >= SCX_EXIT_ERROR) { 4138 - printk(KERN_ERR "sched_ext: BPF scheduler \"%s\" errored, disabling\n", scx_ops.name); 4138 + pr_err("sched_ext: BPF scheduler \"%s\" disabled (%s)\n", 4139 + scx_ops.name, ei->reason); 4139 4140 4140 - if (ei->msg[0] == '\0') 4141 - printk(KERN_ERR "sched_ext: %s\n", ei->reason); 4142 - else 4143 - printk(KERN_ERR "sched_ext: %s (%s)\n", ei->reason, ei->msg); 4141 + if (ei->msg[0] != '\0') 4142 + pr_err("sched_ext: %s: %s\n", scx_ops.name, ei->msg); 4144 4143 4145 4144 stack_trace_print(ei->bt, ei->bt_len, 2); 4145 + } else { 4146 + pr_info("sched_ext: BPF scheduler \"%s\" disabled (%s)\n", 4147 + scx_ops.name, ei->reason); 4146 4148 } 4147 4149 4148 4150 if (scx_ops.exit) ··· 4819 4817 if (!(ops->flags & SCX_OPS_SWITCH_PARTIAL)) 4820 4818 static_branch_enable(&__scx_switched_all); 4821 4819 4820 + pr_info("sched_ext: BPF scheduler \"%s\" enabled%s\n", 4821 + scx_ops.name, scx_switched_all() ? "" : " (partial)"); 4822 4822 kobject_uevent(scx_root_kobj, KOBJ_ADD); 4823 4823 mutex_unlock(&scx_ops_enable_mutex); 4824 4824