'\" t
.\" Title: perf-test
.\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot
.\" Date: 09/04/2026
.\" Manual: perf Manual
.\" Source: perf
.\" Language: English
.\"
.TH "PERF\-TEST" "1" "09/04/2026" "perf" "perf Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
perf-test \- Runs sanity tests\&.
.SH "SYNOPSIS"
.sp
.nf
\fIperf test [] [{list |[|]}]\fR
.fi
.SH "DESCRIPTION"
.sp
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\&.
.sp
To get a list of available tests use \fIperf test list\fR, specifying a test name fragment will show all tests that have it\&.
.sp
To run just specific tests, inform test name fragments or the numbers obtained from \fIperf test list\fR\&.
.SH "OPTIONS"
.PP
\-s, \-\-skip
.RS 4
Tests to skip (comma separated numeric list)\&.
.RE
.PP
\-v, \-vv, \-vvv, \-\-verbose
.RS 4
With a single
\fI\-v\fR, verbose level 1, only failing test output is displayed\&. With
\fI\-vv\fR
and higher all test output is shown\&.
.RE
.PP
\-S, \-\-sequential
.RS 4
Run all tests one after the other\&. By default "exclusive" tests are run sequentially, but other tests are run in parallel to speed execution\&.
.RE
.PP
\-r, \-\-runs\-per\-test
.RS 4
Run each test the given number of times, by default once\&. This option can be useful to determine if a test is flaky\&.
.RE
.PP
\-F, \-\-dont\-fork
.RS 4
Do not fork child for each test, run all tests within single process, this sets sequential mode\&.
.RE
.PP
\-\-dso
.RS 4
Specify a DSO for the "Symbols" test\&.
.RE
.PP
\-w, \-\-workload=
.RS 4
Run a built\-in workload, to list them use
\fI\-\-list\-workloads\fR, current ones include: noploop, thloop, leafloop, sqrtloop, brstack, datasym, context_switch_loop, deterministic, named_threads and landlock\&.
.sp
.if n \{\
.RS 4
.\}
.nf
Used with the shell script regression tests\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
Some accept an extra parameter:
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
seconds: leafloop, noploop, sqrtloop, thloop
nrloops: brstack, context_switch_loop
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
\*(Aqnamed_threads\*(Aq accepts the number of threads and the number of loops to
do in each thread\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
The datasym, landlock and deterministic workloads don\*(Aqt accept any\&.
.fi
.if n \{\
.RE
.\}
.RE
.PP
\-\-list\-workloads
.RS 4
List the available workloads to use with \-w/\-\-workload\&.
.RE
.PP
\-\-record\-ctl=fifo:ctl\-fifo[,ack\-fifo]
.RS 4
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:
.sp
.if n \{\
.RS 4
.\}
.nf
perf record \-D \-1 \-\-control=fifo:ctl\-fifo[,ack\-fifo] \&.\&.\&.
.fi
.if n \{\
.RE
.\}
.sp
.if n \{\
.RS 4
.\}
.nf
Perf test sends \*(Aqenable\*(Aq and \*(Aqdisable\*(Aq commands through ctl\-fifo to
control event recording\&. If \*(Aqack\-fifo\*(Aq is provided, the workload runner
waits for an \*(Aqack\*(Aq response after each command\&.
.fi
.if n \{\
.RE
.\}
.RE