| perf-sched(1) | 
| ============= | 
|   | 
| NAME | 
| ---- | 
| perf-sched - Tool to trace/measure scheduler properties (latencies) | 
|   | 
| SYNOPSIS | 
| -------- | 
| [verse] | 
| 'perf sched' {record|latency|map|replay|script|timehist} | 
|   | 
| DESCRIPTION | 
| ----------- | 
| There are several variants of 'perf sched': | 
|   | 
|   'perf sched record <command>' to record the scheduling events | 
|   of an arbitrary workload. | 
|   | 
|   'perf sched latency' to report the per task scheduling latencies | 
|   and other scheduling properties of the workload. | 
|   | 
|   'perf sched script' to see a detailed trace of the workload that | 
|    was recorded (aliased to 'perf script' for now). | 
|   | 
|   'perf sched replay' to simulate the workload that was recorded | 
|   via perf sched record. (this is done by starting up mockup threads | 
|   that mimic the workload based on the events in the trace. These | 
|   threads can then replay the timings (CPU runtime and sleep patterns) | 
|   of the workload as it occurred when it was recorded - and can repeat | 
|   it a number of times, measuring its performance.) | 
|   | 
|   'perf sched map' to print a textual context-switching outline of | 
|   workload captured via perf sched record.  Columns stand for | 
|   individual CPUs, and the two-letter shortcuts stand for tasks that | 
|   are running on a CPU. A '*' denotes the CPU that had the event, and | 
|   a dot signals an idle CPU. | 
|   | 
|   'perf sched timehist' provides an analysis of scheduling events. | 
|      | 
|     Example usage: | 
|         perf sched record -- sleep 1 | 
|         perf sched timehist | 
|      | 
|    By default it shows the individual schedule events, including the wait | 
|    time (time between sched-out and next sched-in events for the task), the | 
|    task scheduling delay (time between wakeup and actually running) and run | 
|    time for the task: | 
|      | 
|                 time    cpu  task name             wait time  sch delay   run time | 
|                              [tid/pid]                (msec)     (msec)     (msec) | 
|       -------------- ------  --------------------  ---------  ---------  --------- | 
|         79371.874569 [0011]  gcc[31949]                0.014      0.000      1.148 | 
|         79371.874591 [0010]  gcc[31951]                0.000      0.000      0.024 | 
|         79371.874603 [0010]  migration/10[59]          3.350      0.004      0.011 | 
|         79371.874604 [0011]  <idle>                    1.148      0.000      0.035 | 
|         79371.874723 [0005]  <idle>                    0.016      0.000      1.383 | 
|         79371.874746 [0005]  gcc[31949]                0.153      0.078      0.022 | 
|     ... | 
|      | 
|    Times are in msec.usec. | 
|   | 
| OPTIONS | 
| ------- | 
| -i:: | 
| --input=<file>:: | 
|         Input file name. (default: perf.data unless stdin is a fifo) | 
|   | 
| -v:: | 
| --verbose:: | 
|         Be more verbose. (show symbol address, etc) | 
|   | 
| -D:: | 
| --dump-raw-trace=:: | 
|         Display verbose dump of the sched data. | 
|   | 
| -f:: | 
| --force:: | 
|     Don't complain, do it. | 
|   | 
| OPTIONS for 'perf sched map' | 
| ---------------------------- | 
|   | 
| --compact:: | 
|     Show only CPUs with activity. Helps visualizing on high core | 
|     count systems. | 
|   | 
| --cpus:: | 
|     Show just entries with activities for the given CPUs. | 
|   | 
| --color-cpus:: | 
|     Highlight the given cpus. | 
|   | 
| --color-pids:: | 
|     Highlight the given pids. | 
|   | 
| OPTIONS for 'perf sched timehist' | 
| --------------------------------- | 
| -k:: | 
| --vmlinux=<file>:: | 
|     vmlinux pathname | 
|   | 
| --kallsyms=<file>:: | 
|     kallsyms pathname | 
|   | 
| -g:: | 
| --call-graph:: | 
|     Display call chains if present (default on). | 
|   | 
| --max-stack:: | 
|     Maximum number of functions to display in backtrace, default 5. | 
|   | 
| -C=:: | 
| --cpu=:: | 
|     Only show events for the given CPU(s) (comma separated list). | 
|   | 
| -p=:: | 
| --pid=:: | 
|     Only show events for given process ID (comma separated list). | 
|   | 
| -t=:: | 
| --tid=:: | 
|     Only show events for given thread ID (comma separated list). | 
|   | 
| -s:: | 
| --summary:: | 
|     Show only a summary of scheduling by thread with min, max, and average | 
|     run times (in sec) and relative stddev. | 
|   | 
| -S:: | 
| --with-summary:: | 
|     Show all scheduling events followed by a summary by thread with min, | 
|     max, and average run times (in sec) and relative stddev. | 
|   | 
| --symfs=<directory>:: | 
|     Look for files with symbols relative to this directory. | 
|   | 
| -V:: | 
| --cpu-visual:: | 
|     Show visual aid for sched switches by CPU: 'i' marks idle time, | 
|     's' are scheduler events. | 
|   | 
| -w:: | 
| --wakeups:: | 
|     Show wakeup events. | 
|   | 
| -M:: | 
| --migrations:: | 
|     Show migration events. | 
|   | 
| -n:: | 
| --next:: | 
|     Show next task. | 
|   | 
| -I:: | 
| --idle-hist:: | 
|     Show idle-related events only. | 
|   | 
| --time:: | 
|     Only analyze samples within given time window: <start>,<stop>. Times | 
|     have the format seconds.microseconds. If start is not given (i.e., time | 
|     string is ',x.y') then analysis starts at the beginning of the file. If | 
|     stop time is not given (i.e, time string is 'x.y,') then analysis goes | 
|     to end of file. | 
|   | 
| --state:: | 
|     Show task state when it switched out. | 
|   | 
| SEE ALSO | 
| -------- | 
| linkperf:perf-record[1] |