[PATCH v2] kernel/sched/core: Print the time when the process entered the D state

From: zhouchuangao
Date: Fri Jul 09 2021 - 07:55:00 EST


Sometimes we need to trigger /proc/sysrq-trigger to view the information
of the D state process in the system.
e.g:
echo w > /proc/sysrq-trigger

Here we print the scheduling time of the process, which is convenient
for us to judge the state of the system and for debugging.

Signed-off-by: zhouchuangao <zhouchuangao@xxxxxxxx>
---
kernel/sched/core.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index cf16f8f..ab422ab 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -8154,10 +8154,12 @@ void sched_show_task(struct task_struct *p)
if (pid_alive(p))
ppid = task_pid_nr(rcu_dereference(p->real_parent));
rcu_read_unlock();
- pr_cont(" stack:%5lu pid:%5d ppid:%6d flags:0x%08lx\n",
+ pr_cont(" stack:%5lu pid:%5d ppid:%6d flags:0x%08lx",
free, task_pid_nr(p), ppid,
(unsigned long)task_thread_info(p)->flags);
-
+#ifdef CONFIG_SCHED_INFO
+ pr_cont(" sched:%llu\n", p->sched_info.last_arrival);
+#endif
print_worker_info(KERN_INFO, p);
print_stop_info(KERN_INFO, p);
show_stack(p, NULL, KERN_INFO);
--
2.7.4