SYNOPSIS
perf bench [<common options>] <subsystem> <suite> [<options>]
DESCRIPTION
This perf bench command is a general framework for benchmark suites.
COMMON OPTIONS
- -r
- --repeat=
-
Specify amount of times to repeat the run (default 10).
- -f
- --format=
-
Specify format style. Current available format styles are:
- default
-
Default style. This is mainly for human reading.
% perf bench sched pipe # with no style specified
(executing 1000000 pipe operations between two tasks)
Total time:5.855 sec
5.855061 usecs/op
170792 ops/sec
- simple
-
This simple style is friendly for automated processing by scripts.
% perf bench --format=simple sched pipe # specified simple
5.988
SUBSYSTEM
- sched
-
Scheduler and IPC mechanisms.
- mem
-
Memory access performance.
- numa
-
NUMA scheduling and MM benchmarks.
- futex
-
Futex stressing benchmarks.
- all
-
All benchmark subsystems.
SUITES FOR sched
- messaging
-
Suite for evaluating performance of scheduler and IPC mechanisms. Based on hackbench by Rusty Russell.
Options of messaging
- -p
- --pipe
-
Use pipe() instead of socketpair()
- -t
- --thread
-
Be multi thread instead of multi process
- -g
- --group=
-
Specify number of groups
- -l
- --nr_loops=
-
Specify number of loops
Example of messaging
% perf bench sched messaging # run with default
options (20 sender and receiver processes per group)
(10 groups == 400 processes run)
Total time:0.308 sec
% perf bench sched messaging -t -g 20 # be multi-thread, with 20 groups
(20 sender and receiver threads per group)
(20 groups == 800 threads run)
Total time:0.582 sec
- pipe
-
Suite for pipe() system call. Based on pipe-test-1m.c by Ingo Molnar.
Options of pipe
- -l
- --loop=
-
Specify number of loops.
Example of pipe
% perf bench sched pipe
(executing 1000000 pipe operations between two tasks)
Total time:8.091 sec
8.091833 usecs/op
123581 ops/sec
% perf bench sched pipe -l 1000 # loop 1000
(executing 1000 pipe operations between two tasks)
Total time:0.016 sec
16.948000 usecs/op
59004 ops/sec
SUITES FOR mem
- memcpy
-
Suite for evaluating performance of simple memory copy in various ways.
Options of memcpy
- -l
- --size
-
Specify size of memory to copy (default: 1MB). Available units are B, KB, MB, GB and TB (case insensitive).
- -f
- --function
-
Specify function to copy (default: default). Available functions are depend on the architecture. On x86-64, x86-64-unrolled, x86-64-movsq and x86-64-movsb are supported.
- -l
- --nr_loops
-
Repeat memcpy invocation this number of times.
- -c
- --cycles
-
Use perf’s cpu-cycles event instead of gettimeofday syscall.
- memset
-
Suite for evaluating performance of simple memory set in various ways.
Options of memset
- -l
- --size
-
Specify size of memory to set (default: 1MB). Available units are B, KB, MB, GB and TB (case insensitive).
- -f
- --function
-
Specify function to set (default: default). Available functions are depend on the architecture. On x86-64, x86-64-unrolled, x86-64-stosq and x86-64-stosb are supported.
- -l
- --nr_loops
-
Repeat memset invocation this number of times.
- -c
- --cycles
-
Use perf’s cpu-cycles event instead of gettimeofday syscall.
SUITES FOR numa
- mem
-
Suite for evaluating NUMA workloads.
SUITES FOR futex
- hash
-
Suite for evaluating hash tables.
- wake
-
Suite for evaluating wake calls.
- wake-parallel
-
Suite for evaluating parallel wake calls.
- requeue
-
Suite for evaluating requeue calls.
- lock-pi
-
Suite for evaluating futex lock_pi calls.