mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
238 lines
4.8 KiB
238 lines
4.8 KiB
perf-bench(1) |
|
============= |
|
|
|
NAME |
|
---- |
|
perf-bench - General framework for benchmark suites |
|
|
|
SYNOPSIS |
|
-------- |
|
[verse] |
|
'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. |
|
|
|
'syscall':: |
|
System call performance (throughput). |
|
|
|
'mem':: |
|
Memory access performance. |
|
|
|
'numa':: |
|
NUMA scheduling and MM benchmarks. |
|
|
|
'futex':: |
|
Futex stressing benchmarks. |
|
|
|
'epoll':: |
|
Eventpoll (epoll) stressing benchmarks. |
|
|
|
'internals':: |
|
Benchmark internal perf functionality. |
|
|
|
'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 'syscall' |
|
~~~~~~~~~~~~~~~~~~ |
|
*basic*:: |
|
Suite for evaluating performance of core system call throughput (both usecs/op and ops/sec metrics). |
|
This uses a single thread simply doing getppid(2), which is a simple syscall where the result is not |
|
cached by glibc. |
|
|
|
|
|
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. |
|
|
|
SUITES FOR 'epoll' |
|
~~~~~~~~~~~~~~~~~~ |
|
*wait*:: |
|
Suite for evaluating concurrent epoll_wait calls. |
|
|
|
*ctl*:: |
|
Suite for evaluating multiple epoll_ctl calls. |
|
|
|
SUITES FOR 'internals' |
|
~~~~~~~~~~~~~~~~~~~~~~ |
|
*synthesize*:: |
|
Suite for evaluating perf's event synthesis performance. |
|
|
|
SEE ALSO |
|
-------- |
|
linkperf:perf[1]
|
|
|