mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-09-18 23:09:29 +02:00
Add a CoreSight shell test for synthesized callchains.
The test uses the new callchain workload to generate trace and decodes
it with synthesis callchain. It then verifies that the instruction
samples show the expected callchain push and pop.
Use control FIFOs so tracing starts only around the workload, which
keeps the trace data small. The test is limited to with the cs_etm
event available and root permission.
After:
perf test 138 -vvv
138: CoreSight synthesized callchain:
---- start ----
test child forked, pid 35581
Callchain flow matched:
l1=4642868 l2=4642880 l3=4642895 l4=4642919 l5=4670494 l6=4670500 l7=4670520
---- end(0) ----
138: CoreSight synthesized callchain : Ok
Assisted-by: Codex:GPT-5.5
Reviewed-by: James Clark <james.clark@linaro.org>
Signed-off-by: Leo Yan <leo.yan@arm.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
90 lines
2.5 KiB
Plaintext
90 lines
2.5 KiB
Plaintext
perf-test(1)
|
|
============
|
|
|
|
NAME
|
|
----
|
|
perf-test - Runs sanity tests.
|
|
|
|
SYNOPSIS
|
|
--------
|
|
[verse]
|
|
'perf test [<options>] [{list <test-name-fragment>|[<test-name-fragments>|<test-numbers>]}]'
|
|
|
|
DESCRIPTION
|
|
-----------
|
|
This command does assorted sanity tests, initially through linked routines but
|
|
also will look for a directory with more tests in the form of scripts.
|
|
|
|
To get a list of available tests use 'perf test list', specifying a test name
|
|
fragment will show all tests that have it.
|
|
|
|
To run just specific tests, inform test name fragments or the numbers obtained
|
|
from 'perf test list'.
|
|
|
|
OPTIONS
|
|
-------
|
|
-s::
|
|
--skip::
|
|
Tests to skip (comma separated numeric list).
|
|
|
|
-v::
|
|
-vv::
|
|
-vvv::
|
|
--verbose::
|
|
With a single '-v', verbose level 1, only failing test output
|
|
is displayed. With '-vv' and higher all test output is shown.
|
|
|
|
-S::
|
|
--sequential::
|
|
Run all tests one after the other. By default "exclusive"
|
|
tests are run sequentially, but other tests are run in
|
|
parallel to speed execution.
|
|
|
|
-r::
|
|
--runs-per-test::
|
|
Run each test the given number of times, by default once. This
|
|
option can be useful to determine if a test is flaky.
|
|
|
|
-F::
|
|
--dont-fork::
|
|
Do not fork child for each test, run all tests within single process, this
|
|
sets sequential mode.
|
|
|
|
--dso::
|
|
Specify a DSO for the "Symbols" test.
|
|
|
|
-w::
|
|
--workload=::
|
|
Run a built-in workload, to list them use '--list-workloads', current
|
|
ones include: noploop, thloop, leafloop, sqrtloop, brstack, datasym,
|
|
context_switch_loop, deterministic, named_threads, landlock and
|
|
callchain.
|
|
|
|
Used with the shell script regression tests.
|
|
|
|
Some accept an extra parameter:
|
|
|
|
seconds: leafloop, noploop, sqrtloop, thloop
|
|
nrloops: brstack, context_switch_loop
|
|
|
|
'named_threads' accepts the number of threads and the number of loops to
|
|
do in each thread.
|
|
|
|
The datasym, landlock, deterministic and callchain workloads don't accept
|
|
any.
|
|
|
|
--list-workloads::
|
|
List the available workloads to use with -w/--workload.
|
|
|
|
--record-ctl=fifo:ctl-fifo[,ack-fifo]::
|
|
This option is used to communicate with a perf record session in order
|
|
to control the recording scope to only the workload and avoid recording
|
|
setup and teardown code. When specifying this option, the same FIFO path
|
|
must be specified in the record session via:
|
|
|
|
perf record -D -1 --control=fifo:ctl-fifo[,ack-fifo] ...
|
|
|
|
Perf test sends 'enable' and 'disable' commands through ctl-fifo to
|
|
control event recording. If 'ack-fifo' is provided, the workload runner
|
|
waits for an 'ack' response after each command.
|