From 76cfa48701aee5e38a8daddecdf852a22f2de73b Mon Sep 17 00:00:00 2001 From: Tee Ngo Date: Tue, 10 Apr 2018 12:49:48 -0400 Subject: [PATCH] Schedtop not displaying delay stats Enable kernel schedstats which is disabled by default since switching to CentOS. Adapt to format change. Change-Id: I70da51eaca0518a8bb09d4b11d6f98b00c857059 Signed-off-by: Scott Little --- tools/monitor-tools/centos/monitor-tools.spec | 7 ++ tools/monitor-tools/scripts/schedtop | 98 +++++++++---------- 2 files changed, 56 insertions(+), 49 deletions(-) diff --git a/tools/monitor-tools/centos/monitor-tools.spec b/tools/monitor-tools/centos/monitor-tools.spec index ff66be7dc..a282ca361 100644 --- a/tools/monitor-tools/centos/monitor-tools.spec +++ b/tools/monitor-tools/centos/monitor-tools.spec @@ -32,3 +32,10 @@ install %{_buildsubdir}/occtop %{buildroot}/usr/bin %defattr(-,root,root,-) /usr/bin/* +%post +grep schedstats /etc/sysctl.conf +if [ $? -ne 0 ]; then + echo -e "\nkernel.sched_schedstats=1" >> /etc/sysctl.conf + sysctl -p &>/dev/null +fi +exit 0 diff --git a/tools/monitor-tools/scripts/schedtop b/tools/monitor-tools/scripts/schedtop index 86244698a..a170040b9 100755 --- a/tools/monitor-tools/scripts/schedtop +++ b/tools/monitor-tools/scripts/schedtop @@ -603,50 +603,50 @@ sub read_sched $pid = $::tids{$tid}; + # NOTE: Format change over time: OLD: se.statistics.X, NEW: se.statistics->X #cat /proc/1/sched - #init (1, #threads: 1) - #--------------------------------------------------------- - #se.exec_start : 465303823.781710 - #se.vruntime : 8593378.836250 - #se.sum_exec_runtime : 5858.837187 - #se.statistics.wait_start : 0.000000 - #se.statistics.sleep_start : 465303823.781710 - #se.statistics.block_start : 0.000000 - #se.statistics.sleep_max : 5124.647630 - #se.statistics.block_max : 0.009897 - #se.statistics.exec_max : 2.198575 - #se.statistics.slice_max : 0.136734 - #se.statistics.wait_max : 19.968956 - #se.statistics.wait_sum : 256.424005 - #se.statistics.wait_count : 52480 - #se.statistics.iowait_sum : 0.000000 - #se.statistics.iowait_count : 0 - #se.nr_migrations : 0 - #se.statistics.nr_migrations_cold : 0 - #se.statistics.nr_failed_migrations_affine: 0 - #se.statistics.nr_failed_migrations_running: 0 - #se.statistics.nr_failed_migrations_hot: 0 - #se.statistics.nr_forced_migrations : 0 - #se.statistics.nr_wakeups : 51887 - #se.statistics.nr_wakeups_sync : 0 - #se.statistics.nr_wakeups_migrate : 0 - #se.statistics.nr_wakeups_local : 51886 - #se.statistics.nr_wakeups_remote : 1 - #se.statistics.nr_wakeups_affine : 0 - #se.statistics.nr_wakeups_affine_attempts: 0 - #se.statistics.nr_wakeups_passive : 0 - #se.statistics.nr_wakeups_idle : 0 - #avg_atom : 0.058721 - #avg_per_cpu : 0.000001 - #nr_switches : 99774 - #nr_voluntary_switches : 94546 - #nr_involuntary_switches : 5228 - #se.load.weight : 1024 - #policy : 0 - #prio : 120 - #migrate_disable : 0 - #rt.nr_cpus_allowed : 45 - #clock-delta : 68 + #systemd (1, #threads: 1) + #------------------------------------------------------------------- + #se.exec_start : 33792676.285222 + #se.vruntime : 28019997.693224 + #se.sum_exec_runtime : 21918.207287 + #se.nr_migrations : 5413 + #se.statistics->sum_sleep_runtime : 1166561.198533 + #se.statistics->wait_start : 0.000000 + #se.statistics->sleep_start : 33792676.285222 + #se.statistics->block_start : 0.000000 + #se.statistics->sleep_max : 18951.679990 + #se.statistics->block_max : 0.000000 + #se.statistics->exec_max : 0.909747 + #se.statistics->slice_max : 1.790123 + #se.statistics->wait_max : 4.026544 + #se.statistics->wait_sum : 507.245963 + #se.statistics->wait_count : 2540 + #se.statistics->iowait_sum : 0.000000 + #se.statistics->iowait_count : 0 + #se.statistics->nr_migrations_cold : 0 + #se.statistics->nr_failed_migrations_affine : 67 + #se.statistics->nr_failed_migrations_running : 1 + #se.statistics->nr_failed_migrations_hot : 1 + #se.statistics->nr_forced_migrations : 0 + #se.statistics->nr_wakeups : 2472 + #se.statistics->nr_wakeups_sync : 34 + #se.statistics->nr_wakeups_migrate : 176 + #se.statistics->nr_wakeups_local : 1442 + #se.statistics->nr_wakeups_remote : 1030 + #se.statistics->nr_wakeups_affine : 155 + #se.statistics->nr_wakeups_affine_attempts : 969 + #se.statistics->nr_wakeups_passive : 0 + #se.statistics->nr_wakeups_idle : 0 + #avg_atom : 0.286970 + #avg_per_cpu : 4.049179 + #nr_switches : 76378 + #nr_voluntary_switches : 72308 + #nr_involuntary_switches : 4070 + #se.load.weight : 1024 + #policy : 0 + #prio : 120 + #clock-delta : 28 # parse /proc//task//sched $file = '/proc/' . $pid . '/task/' . $tid . '/sched'; @@ -657,17 +657,17 @@ sub read_sched } my ($k, $v, $c0); LOOP_SCHED: while (<$fh>) { - if (/^se\.statistics\.wait_max\s+:\s+(\S+)/) { + if (/^se\.statistics.{1,2}wait_max\s+:\s+(\S+)/) { $wait_max = $1; - } elsif (/^se\.statistics\.wait_sum\s+:\s+(\S+)/) { + } elsif (/^se\.statistics.{1,2}wait_sum\s+:\s+(\S+)/) { $wait_sum = $1; - } elsif (/^se\.statistics\.wait_count\s+:\s+(\S+)/) { + } elsif (/^se\.statistics.{1,2}wait_count\s+:\s+(\S+)/) { $wait_count = $1; - } elsif (/^se\.statistics\.exec_max\s+:\s+(\S+)/) { + } elsif (/^se\.statistics.{1,2}exec_max\s+:\s+(\S+)/) { $exec_max = $1; - } elsif (/^se\.statistics\.iowait_sum\s+:\s+(\S+)/) { + } elsif (/^se\.statistics.{1,2}iowait_sum\s+:\s+(\S+)/) { $iowait_sum = $1; - } elsif (/^se\.statistics\.iowait_count\s+:\s+(\S+)/) { + } elsif (/^se\.statistics.{1,2}iowait_count\s+:\s+(\S+)/) { $iowait_count = $1; } elsif (/^se\.sum_exec_runtime\s+:\s+(\S+)/) { $exec_runtime = $1;