The current runnable tasks output looks like: runnable tasks: S task PID tree-key switches prio wait-time sum-exec sum-sleep ------------------------------------------------------------------------------------------------------------- Ikworker/R-rcu_g 4 0.129049 E 0.620179 0.750000 0.002920 2 100 0.000000 0.002920 0.000000 0.000000 0 0 / Ikworker/R-sync_ 5 0.125328 E 0.624147 0.750000 0.001840 2 100 0.000000 0.001840 0.000000 0.000000 0 0 / Ikworker/R-slub_ 6 0.120835 E 0.628680 0.750000 0.001800 2 100 0.000000 0.001800 0.000000 0.000000 0 0 / Ikworker/R-netns 7 0.114294 E 0.634701 0.750000 0.002400 2 100 0.000000 0.002400 0.000000 0.000000 0 0 / I kworker/0:1 9 508.781746 E 511.754666 3.000000 151.575240 224 120 0.000000 151.575240 0.000000 0.000000 0 0 / Which is messy. Remove the duplicate printing of sum_exec_runtime and tidy up the layout to make it look like: runnable tasks: S task PID vruntime eligible deadline slice sum-exec switches prio wait-time sum-sleep sum-block node group-id group-path ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- I kworker/0:3 1698 295.001459 E 297.977619 3.000000 38.862920 9 120 0.000000 0.000000 0.000000 0 0 / I kworker/0:4 1702 278.026303 E 281.026303 3.000000 9.918760 3 120 0.000000 0.000000 0.000000 0 0 / S NetworkManager 2646 0.377936 E 2.598104 3.000000 98.535880 314 120 0.000000 0.000000 0.000000 0 0 /system.slice/NetworkManager.service S virtqemud 2689 0.541016 E 2.440104 3.000000 50.967960 80 120 0.000000 0.000000 0.000000 0 0 /system.slice/virtqemud.service S gsd-smartcard 3058 73.604144 E 76.475904 3.000000 74.033320 88 120 0.000000 0.000000 0.000000 0 0 /user.slice/user-42.slice/session-c1.scope
Unified · Split
| @@ -739,7 +739,7 @@ print_task(struct seq_file *m, struct rq *rq, struct task_struct *p) · 738 unmodified lines | |||
| 739 | else | 739 | else |
| 740 | SEQ_printf(m, " %c", task_state_to_char(p)); | 740 | SEQ_printf(m, " %c", task_state_to_char(p)); |
| 741 | 741 | ||
| 742 | SEQ_printf(m, "%15s %5d %9Ld.%06ld %c %9Ld.%06ld %c %9Ld.%06ld %9Ld.%06ld %9Ld %5d ", | 742 | SEQ_printf(m, " %15s %5d %9Ld.%06ld %c %9Ld.%06ld %c %9Ld.%06ld %9Ld.%06ld %9Ld %5d ", |
| 743 | p->comm, task_pid_nr(p), | 743 | p->comm, task_pid_nr(p), |
| 744 | SPLIT_NS(p->se.vruntime), | 744 | SPLIT_NS(p->se.vruntime), |
| 745 | entity_eligible(cfs_rq_of(&p->se), &p->se) ? 'E' : 'N', | 745 | entity_eligible(cfs_rq_of(&p->se), &p->se) ? 'E' : 'N', |
| @@ -750,17 +750,16 @@ print_task(struct seq_file *m, struct rq *rq, struct task_struct *p) · 4 unmodified lines | |||
| 750 | (long long)(p->nvcsw + p->nivcsw), | 750 | (long long)(p->nvcsw + p->nivcsw), |
| 751 | p->prio); | 751 | p->prio); |
| 752 | 752 | ||
| 753 | SEQ_printf(m, "%9lld.%06ld %9lld.%06ld %9lld.%06ld %9lld.%06ld", | 753 | SEQ_printf(m, "%9lld.%06ld %9lld.%06ld %9lld.%06ld", |
| 754 | SPLIT_NS(schedstat_val_or_zero(p->stats.wait_sum)), | 754 | SPLIT_NS(schedstat_val_or_zero(p->stats.wait_sum)), |
| 755 | SPLIT_NS(p->se.sum_exec_runtime), | ||
| 756 | SPLIT_NS(schedstat_val_or_zero(p->stats.sum_sleep_runtime)), | 755 | SPLIT_NS(schedstat_val_or_zero(p->stats.sum_sleep_runtime)), |
| 757 | SPLIT_NS(schedstat_val_or_zero(p->stats.sum_block_runtime))); | 756 | SPLIT_NS(schedstat_val_or_zero(p->stats.sum_block_runtime))); |
| 758 | 757 | ||
| 759 | #ifdef CONFIG_NUMA_BALANCING | 758 | #ifdef CONFIG_NUMA_BALANCING |
| 760 | SEQ_printf(m, " %d %d", task_node(p), task_numa_group_id(p)); | 759 | SEQ_printf(m, " %d %d", task_node(p), task_numa_group_id(p)); |
| 761 | #endif | 760 | #endif |
| 762 | #ifdef CONFIG_CGROUP_SCHED | 761 | #ifdef CONFIG_CGROUP_SCHED |
| 763 | SEQ_printf_task_group_path(m, task_group(p), " %s") | 762 | SEQ_printf_task_group_path(m, task_group(p), " %s") |
| 764 | #endif | 763 | #endif |
| 765 | 764 | ||
| 766 | SEQ_printf(m, "\n"); | 765 | SEQ_printf(m, "\n"); |
| @@ -772,10 +771,26 @@ static void print_rq(struct seq_file *m, struct rq *rq, int rq_cpu) · 5 unmodified lines | |||
| 772 | 771 | ||
| 773 | SEQ_printf(m, "\n"); | 772 | SEQ_printf(m, "\n"); |
| 774 | SEQ_printf(m, "runnable tasks:\n"); | 773 | SEQ_printf(m, "runnable tasks:\n"); |
| 775 | SEQ_printf(m, " S task PID tree-key switches prio" | 774 | SEQ_printf(m, " S task PID vruntime eligible " |
| 776 | " wait-time sum-exec sum-sleep\n"); | 775 | "deadline slice sum-exec switches " |
| 776 | "prio wait-time sum-sleep sum-block" | ||
| 777 | #ifdef CONFIG_NUMA_BALANCING | ||
| 778 | " node group-id" | ||
| 779 | #endif | ||
| 780 | #ifdef CONFIG_CGROUP_SCHED | ||
| 781 | " group-path" | ||
| 782 | #endif | ||
| 783 | "\n"); | ||
| 777 | SEQ_printf(m, "-------------------------------------------------------" | 784 | SEQ_printf(m, "-------------------------------------------------------" |
| 778 | "------------------------------------------------------\n"); | 785 | "------------------------------------------------------" |
| 786 | "------------------------------------------------------" | ||
| 787 | #ifdef CONFIG_NUMA_BALANCING | ||
| 788 | "--------------" | ||
| 789 | #endif | ||
| 790 | #ifdef CONFIG_CGROUP_SCHED | ||
| 791 | "--------------" | ||
| 792 | #endif | ||
| 793 | "\n"); | ||
| 779 | 794 | ||
| 780 | rcu_read_lock(); | 795 | rcu_read_lock(); |
| 781 | for_each_process_thread(g, p) { | 796 | for_each_process_thread(g, p) { |