162306a36Sopenharmony_ciperf-lock(1)
262306a36Sopenharmony_ci============
362306a36Sopenharmony_ci
462306a36Sopenharmony_ciNAME
562306a36Sopenharmony_ci----
662306a36Sopenharmony_ciperf-lock - Analyze lock events
762306a36Sopenharmony_ci
862306a36Sopenharmony_ciSYNOPSIS
962306a36Sopenharmony_ci--------
1062306a36Sopenharmony_ci[verse]
1162306a36Sopenharmony_ci'perf lock' {record|report|script|info|contention}
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ciDESCRIPTION
1462306a36Sopenharmony_ci-----------
1562306a36Sopenharmony_ciYou can analyze various lock behaviours
1662306a36Sopenharmony_ciand statistics with this 'perf lock' command.
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci  'perf lock record <command>' records lock events
1962306a36Sopenharmony_ci  between start and end <command>. And this command
2062306a36Sopenharmony_ci  produces the file "perf.data" which contains tracing
2162306a36Sopenharmony_ci  results of lock events.
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci  'perf lock report' reports statistical data.
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci  'perf lock script' shows raw lock events.
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ci  'perf lock info' shows metadata like threads or addresses
2862306a36Sopenharmony_ci  of lock instances.
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ci  'perf lock contention' shows contention statistics.
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ciCOMMON OPTIONS
3362306a36Sopenharmony_ci--------------
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci-i::
3662306a36Sopenharmony_ci--input=<file>::
3762306a36Sopenharmony_ci        Input file name. (default: perf.data unless stdin is a fifo)
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci--output=<file>::
4062306a36Sopenharmony_ci        Output file name for perf lock contention and report.
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci-v::
4362306a36Sopenharmony_ci--verbose::
4462306a36Sopenharmony_ci        Be more verbose (show symbol address, etc).
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci-q::
4762306a36Sopenharmony_ci--quiet::
4862306a36Sopenharmony_ci	Do not show any warnings or messages. (Suppress -v)
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ci-D::
5162306a36Sopenharmony_ci--dump-raw-trace::
5262306a36Sopenharmony_ci        Dump raw trace in ASCII.
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ci-f::
5562306a36Sopenharmony_ci--force::
5662306a36Sopenharmony_ci	Don't complain, do it.
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ci--vmlinux=<file>::
5962306a36Sopenharmony_ci        vmlinux pathname
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ci--kallsyms=<file>::
6262306a36Sopenharmony_ci        kallsyms pathname
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_ciREPORT OPTIONS
6662306a36Sopenharmony_ci--------------
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_ci-k::
6962306a36Sopenharmony_ci--key=<value>::
7062306a36Sopenharmony_ci        Sorting key. Possible values: acquired (default), contended,
7162306a36Sopenharmony_ci	avg_wait, wait_total, wait_max, wait_min.
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ci-F::
7462306a36Sopenharmony_ci--field=<value>::
7562306a36Sopenharmony_ci        Output fields. By default it shows all the fields but users can
7662306a36Sopenharmony_ci	customize that using this.  Possible values: acquired, contended,
7762306a36Sopenharmony_ci	avg_wait, wait_total, wait_max, wait_min.
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ci-c::
8062306a36Sopenharmony_ci--combine-locks::
8162306a36Sopenharmony_ci	Merge lock instances in the same class (based on name).
8262306a36Sopenharmony_ci
8362306a36Sopenharmony_ci-t::
8462306a36Sopenharmony_ci--threads::
8562306a36Sopenharmony_ci    The -t option is to show per-thread lock stat like below:
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_ci      $ perf lock report -t -F acquired,contended,avg_wait
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ci                    Name   acquired  contended   avg wait (ns)
9062306a36Sopenharmony_ci
9162306a36Sopenharmony_ci                    perf     240569          9            5784
9262306a36Sopenharmony_ci                 swapper     106610         19             543
9362306a36Sopenharmony_ci                  :15789      17370          2           14538
9462306a36Sopenharmony_ci            ContainerMgr       8981          6             874
9562306a36Sopenharmony_ci                   sleep       5275          1           11281
9662306a36Sopenharmony_ci         ContainerThread       4416          4             944
9762306a36Sopenharmony_ci         RootPressureThr       3215          5            1215
9862306a36Sopenharmony_ci             rcu_preempt       2954          0               0
9962306a36Sopenharmony_ci            ContainerMgr       2560          0               0
10062306a36Sopenharmony_ci                 unnamed       1873          0               0
10162306a36Sopenharmony_ci         EventManager_De       1845          1             636
10262306a36Sopenharmony_ci         futex-default-S       1609          0               0
10362306a36Sopenharmony_ci
10462306a36Sopenharmony_ci-E::
10562306a36Sopenharmony_ci--entries=<value>::
10662306a36Sopenharmony_ci	Display this many entries.
10762306a36Sopenharmony_ci
10862306a36Sopenharmony_ci
10962306a36Sopenharmony_ciINFO OPTIONS
11062306a36Sopenharmony_ci------------
11162306a36Sopenharmony_ci
11262306a36Sopenharmony_ci-t::
11362306a36Sopenharmony_ci--threads::
11462306a36Sopenharmony_ci	dump thread list in perf.data
11562306a36Sopenharmony_ci
11662306a36Sopenharmony_ci-m::
11762306a36Sopenharmony_ci--map::
11862306a36Sopenharmony_ci	dump map of lock instances (address:name table)
11962306a36Sopenharmony_ci
12062306a36Sopenharmony_ci
12162306a36Sopenharmony_ciCONTENTION OPTIONS
12262306a36Sopenharmony_ci--------------
12362306a36Sopenharmony_ci
12462306a36Sopenharmony_ci-k::
12562306a36Sopenharmony_ci--key=<value>::
12662306a36Sopenharmony_ci	Sorting key. Possible values: contended, wait_total (default),
12762306a36Sopenharmony_ci	wait_max, wait_min, avg_wait.
12862306a36Sopenharmony_ci
12962306a36Sopenharmony_ci-F::
13062306a36Sopenharmony_ci--field=<value>::
13162306a36Sopenharmony_ci	Output fields. By default it shows all but the wait_min fields
13262306a36Sopenharmony_ci	and users can customize that using this.  Possible values:
13362306a36Sopenharmony_ci	contended, wait_total, wait_max, wait_min, avg_wait.
13462306a36Sopenharmony_ci
13562306a36Sopenharmony_ci-t::
13662306a36Sopenharmony_ci--threads::
13762306a36Sopenharmony_ci	Show per-thread lock contention stat
13862306a36Sopenharmony_ci
13962306a36Sopenharmony_ci-b::
14062306a36Sopenharmony_ci--use-bpf::
14162306a36Sopenharmony_ci	Use BPF program to collect lock contention stats instead of
14262306a36Sopenharmony_ci	using the input data.
14362306a36Sopenharmony_ci
14462306a36Sopenharmony_ci-a::
14562306a36Sopenharmony_ci--all-cpus::
14662306a36Sopenharmony_ci        System-wide collection from all CPUs.
14762306a36Sopenharmony_ci
14862306a36Sopenharmony_ci-C::
14962306a36Sopenharmony_ci--cpu=<value>::
15062306a36Sopenharmony_ci	Collect samples only on the list of CPUs provided. Multiple CPUs can be
15162306a36Sopenharmony_ci	provided as a comma-separated list with no space: 0,1. Ranges of CPUs
15262306a36Sopenharmony_ci	are specified with -: 0-2.  Default is to monitor all CPUs.
15362306a36Sopenharmony_ci
15462306a36Sopenharmony_ci-p::
15562306a36Sopenharmony_ci--pid=<value>::
15662306a36Sopenharmony_ci	Record events on existing process ID (comma separated list).
15762306a36Sopenharmony_ci
15862306a36Sopenharmony_ci--tid=<value>::
15962306a36Sopenharmony_ci        Record events on existing thread ID (comma separated list).
16062306a36Sopenharmony_ci
16162306a36Sopenharmony_ci-M::
16262306a36Sopenharmony_ci--map-nr-entries=<value>::
16362306a36Sopenharmony_ci	Maximum number of BPF map entries (default: 16384).
16462306a36Sopenharmony_ci	This will be aligned to a power of 2.
16562306a36Sopenharmony_ci
16662306a36Sopenharmony_ci--max-stack=<value>::
16762306a36Sopenharmony_ci	Maximum stack depth when collecting lock contention (default: 8).
16862306a36Sopenharmony_ci
16962306a36Sopenharmony_ci--stack-skip=<value>::
17062306a36Sopenharmony_ci	Number of stack depth to skip when finding a lock caller (default: 3).
17162306a36Sopenharmony_ci
17262306a36Sopenharmony_ci-E::
17362306a36Sopenharmony_ci--entries=<value>::
17462306a36Sopenharmony_ci	Display this many entries.
17562306a36Sopenharmony_ci
17662306a36Sopenharmony_ci-l::
17762306a36Sopenharmony_ci--lock-addr::
17862306a36Sopenharmony_ci	Show lock contention stat by address
17962306a36Sopenharmony_ci
18062306a36Sopenharmony_ci-o::
18162306a36Sopenharmony_ci--lock-owner::
18262306a36Sopenharmony_ci	Show lock contention stat by owners.  Implies --threads and
18362306a36Sopenharmony_ci	requires --use-bpf.
18462306a36Sopenharmony_ci
18562306a36Sopenharmony_ci-Y::
18662306a36Sopenharmony_ci--type-filter=<value>::
18762306a36Sopenharmony_ci	Show lock contention only for given lock types (comma separated list).
18862306a36Sopenharmony_ci	Available values are:
18962306a36Sopenharmony_ci	  semaphore, spinlock, rwlock, rwlock:R, rwlock:W, rwsem, rwsem:R, rwsem:W,
19062306a36Sopenharmony_ci	  rtmutex, rwlock-rt, rwlock-rt:R, rwlock-rt:W, pcpu-sem, pcpu-sem:R, pcpu-sem:W,
19162306a36Sopenharmony_ci	  mutex
19262306a36Sopenharmony_ci
19362306a36Sopenharmony_ci	Note that RW-variant of locks have :R and :W suffix.  Names without the
19462306a36Sopenharmony_ci	suffix are shortcuts for the both variants.  Ex) rwsem = rwsem:R + rwsem:W.
19562306a36Sopenharmony_ci
19662306a36Sopenharmony_ci-L::
19762306a36Sopenharmony_ci--lock-filter=<value>::
19862306a36Sopenharmony_ci	Show lock contention only for given lock addresses or names (comma separated list).
19962306a36Sopenharmony_ci
20062306a36Sopenharmony_ci-S::
20162306a36Sopenharmony_ci--callstack-filter=<value>::
20262306a36Sopenharmony_ci	Show lock contention only if the callstack contains the given string.
20362306a36Sopenharmony_ci	Note that it matches the substring so 'rq' would match both 'raw_spin_rq_lock'
20462306a36Sopenharmony_ci	and 'irq_enter_rcu'.
20562306a36Sopenharmony_ci
20662306a36Sopenharmony_ci-x::
20762306a36Sopenharmony_ci--field-separator=<SEP>::
20862306a36Sopenharmony_ci	Show results using a CSV-style output to make it easy to import directly
20962306a36Sopenharmony_ci	into spreadsheets. Columns are separated by the string specified in SEP.
21062306a36Sopenharmony_ci
21162306a36Sopenharmony_ci
21262306a36Sopenharmony_ciSEE ALSO
21362306a36Sopenharmony_ci--------
21462306a36Sopenharmony_cilinkperf:perf[1]
215