| xj | b04a402 | 2021-11-25 15:01:52 +0800 | [diff] [blame] | 1 | perf-sched(1) | 
|  | 2 | ============= | 
|  | 3 |  | 
|  | 4 | NAME | 
|  | 5 | ---- | 
|  | 6 | perf-sched - Tool to trace/measure scheduler properties (latencies) | 
|  | 7 |  | 
|  | 8 | SYNOPSIS | 
|  | 9 | -------- | 
|  | 10 | [verse] | 
|  | 11 | 'perf sched' {record|latency|map|replay|script|timehist} | 
|  | 12 |  | 
|  | 13 | DESCRIPTION | 
|  | 14 | ----------- | 
|  | 15 | There are several variants of 'perf sched': | 
|  | 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 |  | 
|  | 23 | 'perf sched script' to see a detailed trace of the workload that | 
|  | 24 | was recorded (aliased to 'perf script' for now). | 
|  | 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) | 
|  | 30 | of the workload as it occurred when it was recorded - and can repeat | 
|  | 31 | it a number of times, measuring its performance.) | 
|  | 32 |  | 
|  | 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 |  | 
|  | 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 |  | 
|  | 63 | OPTIONS | 
|  | 64 | ------- | 
|  | 65 | -i:: | 
|  | 66 | --input=<file>:: | 
|  | 67 | Input file name. (default: perf.data unless stdin is a fifo) | 
|  | 68 |  | 
|  | 69 | -v:: | 
|  | 70 | --verbose:: | 
|  | 71 | Be more verbose. (show symbol address, etc) | 
|  | 72 |  | 
|  | 73 | -D:: | 
|  | 74 | --dump-raw-trace=:: | 
|  | 75 | Display verbose dump of the sched data. | 
|  | 76 |  | 
|  | 77 | -f:: | 
|  | 78 | --force:: | 
|  | 79 | Don't complain, do it. | 
|  | 80 |  | 
|  | 81 | OPTIONS for 'perf sched map' | 
|  | 82 | ---------------------------- | 
|  | 83 |  | 
|  | 84 | --compact:: | 
|  | 85 | Show only CPUs with activity. Helps visualizing on high core | 
|  | 86 | count systems. | 
|  | 87 |  | 
|  | 88 | --cpus:: | 
|  | 89 | Show just entries with activities for the given CPUs. | 
|  | 90 |  | 
|  | 91 | --color-cpus:: | 
|  | 92 | Highlight the given cpus. | 
|  | 93 |  | 
|  | 94 | --color-pids:: | 
|  | 95 | Highlight the given pids. | 
|  | 96 |  | 
|  | 97 | OPTIONS for 'perf sched timehist' | 
|  | 98 | --------------------------------- | 
|  | 99 | -k:: | 
|  | 100 | --vmlinux=<file>:: | 
|  | 101 | vmlinux pathname | 
|  | 102 |  | 
|  | 103 | --kallsyms=<file>:: | 
|  | 104 | kallsyms pathname | 
|  | 105 |  | 
|  | 106 | -g:: | 
|  | 107 | --call-graph:: | 
|  | 108 | Display call chains if present (default on). | 
|  | 109 |  | 
|  | 110 | --max-stack:: | 
|  | 111 | Maximum number of functions to display in backtrace, default 5. | 
|  | 112 |  | 
|  | 113 | -p=:: | 
|  | 114 | --pid=:: | 
|  | 115 | Only show events for given process ID (comma separated list). | 
|  | 116 |  | 
|  | 117 | -t=:: | 
|  | 118 | --tid=:: | 
|  | 119 | Only show events for given thread ID (comma separated list). | 
|  | 120 |  | 
|  | 121 | -s:: | 
|  | 122 | --summary:: | 
|  | 123 | Show only a summary of scheduling by thread with min, max, and average | 
|  | 124 | run times (in sec) and relative stddev. | 
|  | 125 |  | 
|  | 126 | -S:: | 
|  | 127 | --with-summary:: | 
|  | 128 | Show all scheduling events followed by a summary by thread with min, | 
|  | 129 | max, and average run times (in sec) and relative stddev. | 
|  | 130 |  | 
|  | 131 | --symfs=<directory>:: | 
|  | 132 | Look for files with symbols relative to this directory. | 
|  | 133 |  | 
|  | 134 | -V:: | 
|  | 135 | --cpu-visual:: | 
|  | 136 | Show visual aid for sched switches by CPU: 'i' marks idle time, | 
|  | 137 | 's' are scheduler events. | 
|  | 138 |  | 
|  | 139 | -w:: | 
|  | 140 | --wakeups:: | 
|  | 141 | Show wakeup events. | 
|  | 142 |  | 
|  | 143 | -M:: | 
|  | 144 | --migrations:: | 
|  | 145 | Show migration events. | 
|  | 146 |  | 
|  | 147 | -n:: | 
|  | 148 | --next:: | 
|  | 149 | Show next task. | 
|  | 150 |  | 
|  | 151 | -I:: | 
|  | 152 | --idle-hist:: | 
|  | 153 | Show idle-related events only. | 
|  | 154 |  | 
|  | 155 | --time:: | 
|  | 156 | Only analyze samples within given time window: <start>,<stop>. Times | 
|  | 157 | have the format seconds.microseconds. If start is not given (i.e., time | 
|  | 158 | string is ',x.y') then analysis starts at the beginning of the file. If | 
|  | 159 | stop time is not given (i.e, time string is 'x.y,') then analysis goes | 
|  | 160 | to end of file. | 
|  | 161 |  | 
|  | 162 | --state:: | 
|  | 163 | Show task state when it switched out. | 
|  | 164 |  | 
|  | 165 | SEE ALSO | 
|  | 166 | -------- | 
|  | 167 | linkperf:perf-record[1] |