2009-09-11 18:12:54 +08:00
|
|
|
perf-sched(1)
|
2018-03-07 18:54:41 +08:00
|
|
|
=============
|
2009-09-11 18:12:54 +08:00
|
|
|
|
|
|
|
NAME
|
|
|
|
----
|
2009-09-13 22:51:04 +08:00
|
|
|
perf-sched - Tool to trace/measure scheduler properties (latencies)
|
2009-09-11 18:12:54 +08:00
|
|
|
|
|
|
|
SYNOPSIS
|
|
|
|
--------
|
|
|
|
[verse]
|
2016-11-16 14:06:29 +08:00
|
|
|
'perf sched' {record|latency|map|replay|script|timehist}
|
2009-09-11 18:12:54 +08:00
|
|
|
|
|
|
|
DESCRIPTION
|
|
|
|
-----------
|
2016-11-16 14:06:29 +08:00
|
|
|
There are several variants of 'perf sched':
|
2009-09-13 22:51:04 +08:00
|
|
|
|
|
|
|
'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.
|
|
|
|
|
2011-09-27 17:16:35 +08:00
|
|
|
'perf sched script' to see a detailed trace of the workload that
|
|
|
|
was recorded (aliased to 'perf script' for now).
|
2009-09-13 22:51:04 +08:00
|
|
|
|
|
|
|
'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)
|
2010-04-01 02:31:00 +08:00
|
|
|
of the workload as it occurred when it was recorded - and can repeat
|
2009-09-13 22:51:04 +08:00
|
|
|
it a number of times, measuring its performance.)
|
2009-09-11 18:12:54 +08:00
|
|
|
|
2010-12-01 09:57:18 +08:00
|
|
|
'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.
|
|
|
|
|
2016-11-16 14:06:29 +08:00
|
|
|
'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.
|
|
|
|
|
2009-09-11 18:12:54 +08:00
|
|
|
OPTIONS
|
|
|
|
-------
|
2010-12-01 09:57:18 +08:00
|
|
|
-i::
|
|
|
|
--input=<file>::
|
2011-12-07 17:02:54 +08:00
|
|
|
Input file name. (default: perf.data unless stdin is a fifo)
|
2010-12-01 09:57:18 +08:00
|
|
|
|
|
|
|
-v::
|
|
|
|
--verbose::
|
|
|
|
Be more verbose. (show symbol address, etc)
|
|
|
|
|
2009-09-11 18:12:54 +08:00
|
|
|
-D::
|
|
|
|
--dump-raw-trace=::
|
|
|
|
Display verbose dump of the sched data.
|
|
|
|
|
2017-11-16 22:26:05 +08:00
|
|
|
-f::
|
|
|
|
--force::
|
|
|
|
Don't complain, do it.
|
|
|
|
|
2016-04-12 21:29:26 +08:00
|
|
|
OPTIONS for 'perf sched map'
|
|
|
|
----------------------------
|
|
|
|
|
|
|
|
--compact::
|
|
|
|
Show only CPUs with activity. Helps visualizing on high core
|
|
|
|
count systems.
|
|
|
|
|
2016-04-12 21:29:31 +08:00
|
|
|
--cpus::
|
|
|
|
Show just entries with activities for the given CPUs.
|
|
|
|
|
2016-04-12 21:29:30 +08:00
|
|
|
--color-cpus::
|
|
|
|
Highlight the given cpus.
|
|
|
|
|
2016-04-12 21:29:29 +08:00
|
|
|
--color-pids::
|
|
|
|
Highlight the given pids.
|
|
|
|
|
2016-11-16 14:06:29 +08:00
|
|
|
OPTIONS for 'perf sched timehist'
|
|
|
|
---------------------------------
|
|
|
|
-k::
|
|
|
|
--vmlinux=<file>::
|
|
|
|
vmlinux pathname
|
|
|
|
|
|
|
|
--kallsyms=<file>::
|
|
|
|
kallsyms pathname
|
|
|
|
|
2016-11-16 14:06:32 +08:00
|
|
|
-g::
|
2018-04-10 22:35:39 +08:00
|
|
|
--call-graph::
|
|
|
|
Display call chains if present (default on).
|
2016-11-16 14:06:32 +08:00
|
|
|
|
|
|
|
--max-stack::
|
|
|
|
Maximum number of functions to display in backtrace, default 5.
|
|
|
|
|
2019-12-05 01:39:25 +08:00
|
|
|
-C=::
|
|
|
|
--cpu=::
|
|
|
|
Only show events for the given CPU(s) (comma separated list).
|
|
|
|
|
2017-09-02 01:49:12 +08:00
|
|
|
-p=::
|
|
|
|
--pid=::
|
|
|
|
Only show events for given process ID (comma separated list).
|
|
|
|
|
|
|
|
-t=::
|
|
|
|
--tid=::
|
|
|
|
Only show events for given thread ID (comma separated list).
|
|
|
|
|
2016-11-16 14:06:29 +08:00
|
|
|
-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.
|
|
|
|
|
2016-11-16 14:06:33 +08:00
|
|
|
-V::
|
|
|
|
--cpu-visual::
|
|
|
|
Show visual aid for sched switches by CPU: 'i' marks idle time,
|
|
|
|
's' are scheduler events.
|
|
|
|
|
2016-11-16 14:06:31 +08:00
|
|
|
-w::
|
|
|
|
--wakeups::
|
|
|
|
Show wakeup events.
|
|
|
|
|
2016-11-26 00:28:41 +08:00
|
|
|
-M::
|
|
|
|
--migrations::
|
|
|
|
Show migration events.
|
|
|
|
|
2017-03-14 09:56:29 +08:00
|
|
|
-n::
|
|
|
|
--next::
|
|
|
|
Show next task.
|
|
|
|
|
2016-12-08 22:47:54 +08:00
|
|
|
-I::
|
|
|
|
--idle-hist::
|
|
|
|
Show idle-related events only.
|
|
|
|
|
2016-11-30 01:15:44 +08:00
|
|
|
--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.
|
|
|
|
|
2017-01-13 18:45:22 +08:00
|
|
|
--state::
|
|
|
|
Show task state when it switched out.
|
2016-11-30 01:15:44 +08:00
|
|
|
|
2009-09-11 18:12:54 +08:00
|
|
|
SEE ALSO
|
|
|
|
--------
|
|
|
|
linkperf:perf-record[1]
|