Messages in this thread Patch in this message | | | From | Yafang Shao <> | Subject | [PATCH v5 14/15] sched.h: extend task comm from 16 to 24 for CONFIG_BASE_FULL | Date | Thu, 21 Oct 2021 03:46:02 +0000 |
| |
When I was implementing a new per-cpu kthread cfs_migration, I found the comm of it "cfs_migration/%u" is truncated due to the limitation of TASK_COMM_LEN. For example, the comm of the percpu thread on CPU10~19 are all with the same name "cfs_migration/1", which will confuse the user. This issue is not critical, because we can get the corresponding CPU from the task's Cpus_allowed. But for kthreads correspoinding to other hardware devices, it is not easy to get the detailed device info from task comm, for example,
jbd2/nvme0n1p2- xfs-reclaim/sdf
We can also shorten the name to work around this problem, but I find there are so many truncated kthreads:
rcu_tasks_kthre rcu_tasks_rude_ rcu_tasks_trace poll_mpt3sas0_s ext4-rsv-conver xfs-reclaim/sd{a, b, c, ...} xfs-blockgc/sd{a, b, c, ...} xfs-inodegc/sd{a, b, c, ...} audit_send_repl ecryptfs-kthrea vfio-irqfd-clea jbd2/nvme0n1p2- ...
We should improve this problem fundamentally.
This patch extends the size of task comm to 24 bytes, which is the same length with workqueue's, for the CONFIG_BASE_FULL case. And for the CONFIG_BASE_SMALL case, the size of task comm is still kept as 16 bytes.
After this patchset, the truncated kthreads listed above will be displayed as:
rcu_tasks_kthread rcu_tasks_rude_kthread rcu_tasks_trace_kthread poll_mpt3sas0_statu ext4-rsv-conversion xfs-reclaim/sdf1 xfs-blockgc/sdf1 xfs-inodegc/sdf1 audit_send_reply ecryptfs-kthread vfio-irqfd-cleanup jbd2/nvme0n1p2-8
Suggested-by: Petr Mladek <pmladek@suse.com> Suggested-by: Steven Rostedt <rostedt@goodmis.org> Signed-off-by: Yafang Shao <laoar.shao@gmail.com> Reviewed-by: Kees Cook <keescook@chromium.org> Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Cc: Arnaldo Carvalho de Melo <arnaldo.melo@gmail.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: Petr Mladek <pmladek@suse.com> --- include/linux/sched.h | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/include/linux/sched.h b/include/linux/sched.h index 62d5b30d310c..fcb4bc97f95c 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -274,10 +274,17 @@ struct task_group; #define get_current_state() READ_ONCE(current->__state) -/* To replace the old hard-coded 16 */ -#define TASK_COMM_LEN_16 16 +/* Also to replace the old hard-coded 16 */ +#define TASK_COMM_LEN_16 16 +#define TASK_COMM_LEN_24 24 + + /* Task command name length: */ -#define TASK_COMM_LEN 16 +#if CONFIG_BASE_SMALL +#define TASK_COMM_LEN TASK_COMM_LEN_16 +#else +#define TASK_COMM_LEN TASK_COMM_LEN_24 +#endif extern void scheduler_tick(void); -- 2.17.1
| |