PERF-TEST(1)

πŸ’– PERF-TEST(1) β€” the perf Manual's own sanity-check queen πŸ’–

okay bestie, buckle up, because this is perf test from the perf Manual and it is literally the vibe check of your whole system ✨

🌸 NAME 🌸

perf-test β€” runs sanity tests, no cap 🫢


πŸŽ€ SYNOPSIS πŸŽ€

perf test [<options>] [{list <test-name-fragment>|[<test-name-fragments>|<test-numbers>]}]

πŸ¦‹ DESCRIPTION πŸ¦‹

so this command runs assorted sanity tests, okay? at first it does them through linked routines, but it also goes looking for a directory that has more tests in it, in the form of scripts πŸ‘€ it's giving "there's always more where that came from."

wanna see what's on the menu? run perf test list πŸ’… and if you throw a test name fragment at it, it'll show you every single test that has that fragment in it. obsessed.

and if you only wanna run specific tests? just tell it the test name fragments, or the numbers you got from perf test list. easy peasy πŸ“


✨ OPTIONS ✨

  • -s, --skip β€” tests to skip, as a comma separated numeric list. not today, bestie πŸ™ˆ
  • -v, -vv, -vvv, --verbose β€” with a single -v you get verbose level 1, which only shows you the output of the tests that fail. with -vv and higher, all test output is shown, the whole thing, every last crumb 😭
  • -S, --sequential β€” runs all tests one after the other. by default the "exclusive" tests are run sequentially anyway, but the other tests get run in parallel to speed execution up. this flag says nope, line up, everybody in single file 🧚
  • -r, --runs-per-test β€” run each test the given number of times, and by default it's once. this one is lowkey so useful for figuring out if a test is flaky, fr fr πŸ”₯
  • -F, --dont-fork β€” do not fork a child for each test; run all the tests inside a single process instead. heads up though: this sets sequential mode πŸ’€
  • --dso β€” specify a DSO for the "Symbols" test πŸ‘‘
  • -w, --workload= β€” run a built-in workload. to list them all use --list-workloads, and the current ones include: noploop, thloop, leafloop, sqrtloop, brstack, datasym, context_switch_loop, deterministic, named_threads, landlock and callchain 🌈

this is used with the shell script regression tests 🫢

some of them accept an extra parameter:

  • seconds: leafloop, noploop, sqrtloop, thloop
  • nrloops: brstack, context_switch_loop

and 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. nothing, zero, zilch πŸ™…

  • --list-workloads β€” lists the available workloads to use with -w/--workload. you're welcome ✨
  • --record-ctl=fifo:ctl-fifo[,ack-fifo] β€” okay so this option is used to communicate with a perf record session in order to control the recording scope so it only covers the workload, and to avoid recording the setup and teardown code. main character energy tbh πŸ‘‘

when you specify 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. and if ack-fifo is provided, the workload runner waits for an ack response after each command πŸ¦‹

ngl bestie, if you're wiring up FIFOs for your recording scope, double-check those paths match on both sides β€” that's the whole trick, iykyk πŸ’–

and that's the whole page, bestie πŸ’œ this was perf test out of the perf Manual, dated 10/31/2026, living at PERF-TEST(1) β€” go forth and run your sanity tests, slay πŸ’…πŸŽ€

πŸ“¦ where this page comes from