Messages in this thread | | | Date | Thu, 29 Dec 2022 12:25:19 +0800 | From | Chen Yu <> | Subject | Re: [PATCH] sched: print parent comm in sched_show_task() |
| |
On 2022-12-28 at 00:14:00 +0800, Tio Zhang wrote: > Knowing who the parent is might be useful for debugging. > For example, we can sometimes resolve kernel hung tasks by stopping > the person who begins those hung tasks. > With the parent's name printed in sched_show_task(), > it might be helpful to let people know which "service" should be operated. > > Signed-off-by: Tio Zhang <tiozhang@didiglobal.com> > --- > kernel/sched/core.c | 9 ++++++--- > 1 file changed, 6 insertions(+), 3 deletions(-) > > diff --git a/kernel/sched/core.c b/kernel/sched/core.c > index cb2aa2b54c7a..6f4aef0fed58 100644 > --- a/kernel/sched/core.c > +++ b/kernel/sched/core.c > @@ -8854,6 +8854,7 @@ void sched_show_task(struct task_struct *p) > { > unsigned long free = 0; > int ppid; > + char pcomm[TASK_COMM_LEN]; > > if (!try_get_task_stack(p)) > return; > @@ -8867,11 +8868,13 @@ void sched_show_task(struct task_struct *p) > #endif > ppid = 0; > rcu_read_lock(); > - if (pid_alive(p)) > + if (pid_alive(p)) { > ppid = task_pid_nr(rcu_dereference(p->real_parent)); > + get_task_comm(pcomm, rcu_dereference(p->real_parent)); Maybe struct task_struct *parent = rcu_dereference(p->real_parent); and use parent directly to get its pid and comm? Maybe off-topic, what if the parent is a kernel thread/worker? It might have extra name information such as kthread->full_name or worker->desc according to proc_task_name().
thanks,
| |