Ingo Molnar | 0a02ad9 | 2009-09-11 12:12:54 +0200 | [diff] [blame] | 1 | perf-sched(1) |
| 2 | ============== |
| 3 | |
| 4 | NAME |
| 5 | ---- |
Ingo Molnar | c13f0d3 | 2009-09-13 16:51:04 +0200 | [diff] [blame] | 6 | perf-sched - Tool to trace/measure scheduler properties (latencies) |
Ingo Molnar | 0a02ad9 | 2009-09-11 12:12:54 +0200 | [diff] [blame] | 7 | |
| 8 | SYNOPSIS |
| 9 | -------- |
| 10 | [verse] |
David Ahern | 49394a2 | 2016-11-16 15:06:29 +0900 | [diff] [blame] | 11 | 'perf sched' {record|latency|map|replay|script|timehist} |
Ingo Molnar | 0a02ad9 | 2009-09-11 12:12:54 +0200 | [diff] [blame] | 12 | |
| 13 | DESCRIPTION |
| 14 | ----------- |
David Ahern | 49394a2 | 2016-11-16 15:06:29 +0900 | [diff] [blame] | 15 | There are several variants of 'perf sched': |
Ingo Molnar | c13f0d3 | 2009-09-13 16:51:04 +0200 | [diff] [blame] | 16 | |
| 17 | 'perf sched record <command>' to record the scheduling events |
| 18 | of an arbitrary workload. |
| 19 | |
| 20 | 'perf sched latency' to report the per task scheduling latencies |
| 21 | and other scheduling properties of the workload. |
| 22 | |
Jiri Olsa | e78cb36 | 2011-09-27 11:16:35 +0200 | [diff] [blame] | 23 | 'perf sched script' to see a detailed trace of the workload that |
| 24 | was recorded (aliased to 'perf script' for now). |
Ingo Molnar | c13f0d3 | 2009-09-13 16:51:04 +0200 | [diff] [blame] | 25 | |
| 26 | 'perf sched replay' to simulate the workload that was recorded |
| 27 | via perf sched record. (this is done by starting up mockup threads |
| 28 | that mimic the workload based on the events in the trace. These |
| 29 | threads can then replay the timings (CPU runtime and sleep patterns) |
Randy Dunlap | 854c554 | 2010-03-31 11:31:00 -0700 | [diff] [blame] | 30 | of the workload as it occurred when it was recorded - and can repeat |
Ingo Molnar | c13f0d3 | 2009-09-13 16:51:04 +0200 | [diff] [blame] | 31 | it a number of times, measuring its performance.) |
Ingo Molnar | 0a02ad9 | 2009-09-11 12:12:54 +0200 | [diff] [blame] | 32 | |
Shawn Bohrer | 1eacc94 | 2010-11-30 19:57:18 -0600 | [diff] [blame] | 33 | 'perf sched map' to print a textual context-switching outline of |
| 34 | workload captured via perf sched record. Columns stand for |
| 35 | individual CPUs, and the two-letter shortcuts stand for tasks that |
| 36 | are running on a CPU. A '*' denotes the CPU that had the event, and |
| 37 | a dot signals an idle CPU. |
| 38 | |
David Ahern | 49394a2 | 2016-11-16 15:06:29 +0900 | [diff] [blame] | 39 | 'perf sched timehist' provides an analysis of scheduling events. |
| 40 | |
| 41 | Example usage: |
| 42 | perf sched record -- sleep 1 |
| 43 | perf sched timehist |
| 44 | |
| 45 | By default it shows the individual schedule events, including the wait |
| 46 | time (time between sched-out and next sched-in events for the task), the |
| 47 | task scheduling delay (time between wakeup and actually running) and run |
| 48 | time for the task: |
| 49 | |
| 50 | time cpu task name wait time sch delay run time |
| 51 | [tid/pid] (msec) (msec) (msec) |
| 52 | -------------- ------ -------------------- --------- --------- --------- |
| 53 | 79371.874569 [0011] gcc[31949] 0.014 0.000 1.148 |
| 54 | 79371.874591 [0010] gcc[31951] 0.000 0.000 0.024 |
| 55 | 79371.874603 [0010] migration/10[59] 3.350 0.004 0.011 |
| 56 | 79371.874604 [0011] <idle> 1.148 0.000 0.035 |
| 57 | 79371.874723 [0005] <idle> 0.016 0.000 1.383 |
| 58 | 79371.874746 [0005] gcc[31949] 0.153 0.078 0.022 |
| 59 | ... |
| 60 | |
| 61 | Times are in msec.usec. |
| 62 | |
Ingo Molnar | 0a02ad9 | 2009-09-11 12:12:54 +0200 | [diff] [blame] | 63 | OPTIONS |
| 64 | ------- |
Shawn Bohrer | 1eacc94 | 2010-11-30 19:57:18 -0600 | [diff] [blame] | 65 | -i:: |
| 66 | --input=<file>:: |
Robert Richter | efad141 | 2011-12-07 10:02:54 +0100 | [diff] [blame] | 67 | Input file name. (default: perf.data unless stdin is a fifo) |
Shawn Bohrer | 1eacc94 | 2010-11-30 19:57:18 -0600 | [diff] [blame] | 68 | |
| 69 | -v:: |
| 70 | --verbose:: |
| 71 | Be more verbose. (show symbol address, etc) |
| 72 | |
Ingo Molnar | 0a02ad9 | 2009-09-11 12:12:54 +0200 | [diff] [blame] | 73 | -D:: |
| 74 | --dump-raw-trace=:: |
| 75 | Display verbose dump of the sched data. |
| 76 | |
Jiri Olsa | 99623c6 | 2016-04-12 15:29:26 +0200 | [diff] [blame] | 77 | OPTIONS for 'perf sched map' |
| 78 | ---------------------------- |
| 79 | |
| 80 | --compact:: |
| 81 | Show only CPUs with activity. Helps visualizing on high core |
| 82 | count systems. |
| 83 | |
Jiri Olsa | 73643bb | 2016-04-12 15:29:31 +0200 | [diff] [blame] | 84 | --cpus:: |
| 85 | Show just entries with activities for the given CPUs. |
| 86 | |
Jiri Olsa | cf294f2 | 2016-04-12 15:29:30 +0200 | [diff] [blame] | 87 | --color-cpus:: |
| 88 | Highlight the given cpus. |
| 89 | |
Jiri Olsa | a151a37 | 2016-04-12 15:29:29 +0200 | [diff] [blame] | 90 | --color-pids:: |
| 91 | Highlight the given pids. |
| 92 | |
David Ahern | 49394a2 | 2016-11-16 15:06:29 +0900 | [diff] [blame] | 93 | OPTIONS for 'perf sched timehist' |
| 94 | --------------------------------- |
| 95 | -k:: |
| 96 | --vmlinux=<file>:: |
| 97 | vmlinux pathname |
| 98 | |
| 99 | --kallsyms=<file>:: |
| 100 | kallsyms pathname |
| 101 | |
David Ahern | 6c973c9 | 2016-11-16 15:06:32 +0900 | [diff] [blame] | 102 | -g:: |
| 103 | --no-call-graph:: |
| 104 | Do not display call chains if present. |
| 105 | |
| 106 | --max-stack:: |
| 107 | Maximum number of functions to display in backtrace, default 5. |
| 108 | |
David Ahern | 0f59d7a | 2017-09-01 10:49:12 -0700 | [diff] [blame] | 109 | -p=:: |
| 110 | --pid=:: |
| 111 | Only show events for given process ID (comma separated list). |
| 112 | |
| 113 | -t=:: |
| 114 | --tid=:: |
| 115 | Only show events for given thread ID (comma separated list). |
| 116 | |
David Ahern | 49394a2 | 2016-11-16 15:06:29 +0900 | [diff] [blame] | 117 | -s:: |
| 118 | --summary:: |
| 119 | Show only a summary of scheduling by thread with min, max, and average |
| 120 | run times (in sec) and relative stddev. |
| 121 | |
| 122 | -S:: |
| 123 | --with-summary:: |
| 124 | Show all scheduling events followed by a summary by thread with min, |
| 125 | max, and average run times (in sec) and relative stddev. |
| 126 | |
| 127 | --symfs=<directory>:: |
| 128 | Look for files with symbols relative to this directory. |
| 129 | |
David Ahern | a407b06 | 2016-11-16 15:06:33 +0900 | [diff] [blame] | 130 | -V:: |
| 131 | --cpu-visual:: |
| 132 | Show visual aid for sched switches by CPU: 'i' marks idle time, |
| 133 | 's' are scheduler events. |
| 134 | |
David Ahern | fc1469f | 2016-11-16 15:06:31 +0900 | [diff] [blame] | 135 | -w:: |
| 136 | --wakeups:: |
| 137 | Show wakeup events. |
| 138 | |
David Ahern | 350f54f | 2016-11-25 09:28:41 -0700 | [diff] [blame] | 139 | -M:: |
| 140 | --migrations:: |
| 141 | Show migration events. |
| 142 | |
Brendan Gregg | 292c4a8 | 2017-03-14 01:56:29 +0000 | [diff] [blame] | 143 | -n:: |
| 144 | --next:: |
| 145 | Show next task. |
| 146 | |
Namhyung Kim | 07235f8 | 2016-12-08 23:47:54 +0900 | [diff] [blame] | 147 | -I:: |
| 148 | --idle-hist:: |
| 149 | Show idle-related events only. |
| 150 | |
David Ahern | 853b740 | 2016-11-29 10:15:44 -0700 | [diff] [blame] | 151 | --time:: |
| 152 | Only analyze samples within given time window: <start>,<stop>. Times |
| 153 | have the format seconds.microseconds. If start is not given (i.e., time |
| 154 | string is ',x.y') then analysis starts at the beginning of the file. If |
| 155 | stop time is not given (i.e, time string is 'x.y,') then analysis goes |
| 156 | to end of file. |
| 157 | |
Namhyung Kim | 414e050 | 2017-01-13 19:45:22 +0900 | [diff] [blame] | 158 | --state:: |
| 159 | Show task state when it switched out. |
David Ahern | 853b740 | 2016-11-29 10:15:44 -0700 | [diff] [blame] | 160 | |
Ingo Molnar | 0a02ad9 | 2009-09-11 12:12:54 +0200 | [diff] [blame] | 161 | SEE ALSO |
| 162 | -------- |
| 163 | linkperf:perf-record[1] |