162306a36Sopenharmony_ciperf-bench(1) 262306a36Sopenharmony_ci============= 362306a36Sopenharmony_ci 462306a36Sopenharmony_ciNAME 562306a36Sopenharmony_ci---- 662306a36Sopenharmony_ciperf-bench - General framework for benchmark suites 762306a36Sopenharmony_ci 862306a36Sopenharmony_ciSYNOPSIS 962306a36Sopenharmony_ci-------- 1062306a36Sopenharmony_ci[verse] 1162306a36Sopenharmony_ci'perf bench' [<common options>] <subsystem> <suite> [<options>] 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ciDESCRIPTION 1462306a36Sopenharmony_ci----------- 1562306a36Sopenharmony_ciThis 'perf bench' command is a general framework for benchmark suites. 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ciCOMMON OPTIONS 1862306a36Sopenharmony_ci-------------- 1962306a36Sopenharmony_ci-r:: 2062306a36Sopenharmony_ci--repeat=:: 2162306a36Sopenharmony_ciSpecify number of times to repeat the run (default 10). 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ci-f:: 2462306a36Sopenharmony_ci--format=:: 2562306a36Sopenharmony_ciSpecify format style. 2662306a36Sopenharmony_ciCurrent available format styles are: 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ci'default':: 2962306a36Sopenharmony_ciDefault style. This is mainly for human reading. 3062306a36Sopenharmony_ci--------------------- 3162306a36Sopenharmony_ci% perf bench sched pipe # with no style specified 3262306a36Sopenharmony_ci(executing 1000000 pipe operations between two tasks) 3362306a36Sopenharmony_ci Total time:5.855 sec 3462306a36Sopenharmony_ci 5.855061 usecs/op 3562306a36Sopenharmony_ci 170792 ops/sec 3662306a36Sopenharmony_ci--------------------- 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_ci'simple':: 3962306a36Sopenharmony_ciThis simple style is friendly for automated 4062306a36Sopenharmony_ciprocessing by scripts. 4162306a36Sopenharmony_ci--------------------- 4262306a36Sopenharmony_ci% perf bench --format=simple sched pipe # specified simple 4362306a36Sopenharmony_ci5.988 4462306a36Sopenharmony_ci--------------------- 4562306a36Sopenharmony_ci 4662306a36Sopenharmony_ciSUBSYSTEM 4762306a36Sopenharmony_ci--------- 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_ci'sched':: 5062306a36Sopenharmony_ci Scheduler and IPC mechanisms. 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_ci'syscall':: 5362306a36Sopenharmony_ci System call performance (throughput). 5462306a36Sopenharmony_ci 5562306a36Sopenharmony_ci'mem':: 5662306a36Sopenharmony_ci Memory access performance. 5762306a36Sopenharmony_ci 5862306a36Sopenharmony_ci'numa':: 5962306a36Sopenharmony_ci NUMA scheduling and MM benchmarks. 6062306a36Sopenharmony_ci 6162306a36Sopenharmony_ci'futex':: 6262306a36Sopenharmony_ci Futex stressing benchmarks. 6362306a36Sopenharmony_ci 6462306a36Sopenharmony_ci'epoll':: 6562306a36Sopenharmony_ci Eventpoll (epoll) stressing benchmarks. 6662306a36Sopenharmony_ci 6762306a36Sopenharmony_ci'internals':: 6862306a36Sopenharmony_ci Benchmark internal perf functionality. 6962306a36Sopenharmony_ci 7062306a36Sopenharmony_ci'uprobe':: 7162306a36Sopenharmony_ci Benchmark overhead of uprobe + BPF. 7262306a36Sopenharmony_ci 7362306a36Sopenharmony_ci'all':: 7462306a36Sopenharmony_ci All benchmark subsystems. 7562306a36Sopenharmony_ci 7662306a36Sopenharmony_ciSUITES FOR 'sched' 7762306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~ 7862306a36Sopenharmony_ci*messaging*:: 7962306a36Sopenharmony_ciSuite for evaluating performance of scheduler and IPC mechanisms. 8062306a36Sopenharmony_ciBased on hackbench by Rusty Russell. 8162306a36Sopenharmony_ci 8262306a36Sopenharmony_ciOptions of *messaging* 8362306a36Sopenharmony_ci^^^^^^^^^^^^^^^^^^^^^^ 8462306a36Sopenharmony_ci-p:: 8562306a36Sopenharmony_ci--pipe:: 8662306a36Sopenharmony_ciUse pipe() instead of socketpair() 8762306a36Sopenharmony_ci 8862306a36Sopenharmony_ci-t:: 8962306a36Sopenharmony_ci--thread:: 9062306a36Sopenharmony_ciBe multi thread instead of multi process 9162306a36Sopenharmony_ci 9262306a36Sopenharmony_ci-g:: 9362306a36Sopenharmony_ci--group=:: 9462306a36Sopenharmony_ciSpecify number of groups 9562306a36Sopenharmony_ci 9662306a36Sopenharmony_ci-l:: 9762306a36Sopenharmony_ci--nr_loops=:: 9862306a36Sopenharmony_ciSpecify number of loops 9962306a36Sopenharmony_ci 10062306a36Sopenharmony_ciExample of *messaging* 10162306a36Sopenharmony_ci^^^^^^^^^^^^^^^^^^^^^^ 10262306a36Sopenharmony_ci 10362306a36Sopenharmony_ci--------------------- 10462306a36Sopenharmony_ci% perf bench sched messaging # run with default 10562306a36Sopenharmony_cioptions (20 sender and receiver processes per group) 10662306a36Sopenharmony_ci(10 groups == 400 processes run) 10762306a36Sopenharmony_ci 10862306a36Sopenharmony_ci Total time:0.308 sec 10962306a36Sopenharmony_ci 11062306a36Sopenharmony_ci% perf bench sched messaging -t -g 20 # be multi-thread, with 20 groups 11162306a36Sopenharmony_ci(20 sender and receiver threads per group) 11262306a36Sopenharmony_ci(20 groups == 800 threads run) 11362306a36Sopenharmony_ci 11462306a36Sopenharmony_ci Total time:0.582 sec 11562306a36Sopenharmony_ci--------------------- 11662306a36Sopenharmony_ci 11762306a36Sopenharmony_ci*pipe*:: 11862306a36Sopenharmony_ciSuite for pipe() system call. 11962306a36Sopenharmony_ciBased on pipe-test-1m.c by Ingo Molnar. 12062306a36Sopenharmony_ci 12162306a36Sopenharmony_ciOptions of *pipe* 12262306a36Sopenharmony_ci^^^^^^^^^^^^^^^^^ 12362306a36Sopenharmony_ci-l:: 12462306a36Sopenharmony_ci--loop=:: 12562306a36Sopenharmony_ciSpecify number of loops. 12662306a36Sopenharmony_ci 12762306a36Sopenharmony_ciExample of *pipe* 12862306a36Sopenharmony_ci^^^^^^^^^^^^^^^^^ 12962306a36Sopenharmony_ci 13062306a36Sopenharmony_ci--------------------- 13162306a36Sopenharmony_ci% perf bench sched pipe 13262306a36Sopenharmony_ci(executing 1000000 pipe operations between two tasks) 13362306a36Sopenharmony_ci 13462306a36Sopenharmony_ci Total time:8.091 sec 13562306a36Sopenharmony_ci 8.091833 usecs/op 13662306a36Sopenharmony_ci 123581 ops/sec 13762306a36Sopenharmony_ci 13862306a36Sopenharmony_ci% perf bench sched pipe -l 1000 # loop 1000 13962306a36Sopenharmony_ci(executing 1000 pipe operations between two tasks) 14062306a36Sopenharmony_ci 14162306a36Sopenharmony_ci Total time:0.016 sec 14262306a36Sopenharmony_ci 16.948000 usecs/op 14362306a36Sopenharmony_ci 59004 ops/sec 14462306a36Sopenharmony_ci--------------------- 14562306a36Sopenharmony_ci 14662306a36Sopenharmony_ciSUITES FOR 'syscall' 14762306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~ 14862306a36Sopenharmony_ci*basic*:: 14962306a36Sopenharmony_ciSuite for evaluating performance of core system call throughput (both usecs/op and ops/sec metrics). 15062306a36Sopenharmony_ciThis uses a single thread simply doing getppid(2), which is a simple syscall where the result is not 15162306a36Sopenharmony_cicached by glibc. 15262306a36Sopenharmony_ci 15362306a36Sopenharmony_ci 15462306a36Sopenharmony_ciSUITES FOR 'mem' 15562306a36Sopenharmony_ci~~~~~~~~~~~~~~~~ 15662306a36Sopenharmony_ci*memcpy*:: 15762306a36Sopenharmony_ciSuite for evaluating performance of simple memory copy in various ways. 15862306a36Sopenharmony_ci 15962306a36Sopenharmony_ciOptions of *memcpy* 16062306a36Sopenharmony_ci^^^^^^^^^^^^^^^^^^^ 16162306a36Sopenharmony_ci-l:: 16262306a36Sopenharmony_ci--size:: 16362306a36Sopenharmony_ciSpecify size of memory to copy (default: 1MB). 16462306a36Sopenharmony_ciAvailable units are B, KB, MB, GB and TB (case insensitive). 16562306a36Sopenharmony_ci 16662306a36Sopenharmony_ci-f:: 16762306a36Sopenharmony_ci--function:: 16862306a36Sopenharmony_ciSpecify function to copy (default: default). 16962306a36Sopenharmony_ciAvailable functions are depend on the architecture. 17062306a36Sopenharmony_ciOn x86-64, x86-64-unrolled, x86-64-movsq and x86-64-movsb are supported. 17162306a36Sopenharmony_ci 17262306a36Sopenharmony_ci-l:: 17362306a36Sopenharmony_ci--nr_loops:: 17462306a36Sopenharmony_ciRepeat memcpy invocation this number of times. 17562306a36Sopenharmony_ci 17662306a36Sopenharmony_ci-c:: 17762306a36Sopenharmony_ci--cycles:: 17862306a36Sopenharmony_ciUse perf's cpu-cycles event instead of gettimeofday syscall. 17962306a36Sopenharmony_ci 18062306a36Sopenharmony_ci*memset*:: 18162306a36Sopenharmony_ciSuite for evaluating performance of simple memory set in various ways. 18262306a36Sopenharmony_ci 18362306a36Sopenharmony_ciOptions of *memset* 18462306a36Sopenharmony_ci^^^^^^^^^^^^^^^^^^^ 18562306a36Sopenharmony_ci-l:: 18662306a36Sopenharmony_ci--size:: 18762306a36Sopenharmony_ciSpecify size of memory to set (default: 1MB). 18862306a36Sopenharmony_ciAvailable units are B, KB, MB, GB and TB (case insensitive). 18962306a36Sopenharmony_ci 19062306a36Sopenharmony_ci-f:: 19162306a36Sopenharmony_ci--function:: 19262306a36Sopenharmony_ciSpecify function to set (default: default). 19362306a36Sopenharmony_ciAvailable functions are depend on the architecture. 19462306a36Sopenharmony_ciOn x86-64, x86-64-unrolled, x86-64-stosq and x86-64-stosb are supported. 19562306a36Sopenharmony_ci 19662306a36Sopenharmony_ci-l:: 19762306a36Sopenharmony_ci--nr_loops:: 19862306a36Sopenharmony_ciRepeat memset invocation this number of times. 19962306a36Sopenharmony_ci 20062306a36Sopenharmony_ci-c:: 20162306a36Sopenharmony_ci--cycles:: 20262306a36Sopenharmony_ciUse perf's cpu-cycles event instead of gettimeofday syscall. 20362306a36Sopenharmony_ci 20462306a36Sopenharmony_ciSUITES FOR 'numa' 20562306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~ 20662306a36Sopenharmony_ci*mem*:: 20762306a36Sopenharmony_ciSuite for evaluating NUMA workloads. 20862306a36Sopenharmony_ci 20962306a36Sopenharmony_ciSUITES FOR 'futex' 21062306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~ 21162306a36Sopenharmony_ci*hash*:: 21262306a36Sopenharmony_ciSuite for evaluating hash tables. 21362306a36Sopenharmony_ci 21462306a36Sopenharmony_ci*wake*:: 21562306a36Sopenharmony_ciSuite for evaluating wake calls. 21662306a36Sopenharmony_ci 21762306a36Sopenharmony_ci*wake-parallel*:: 21862306a36Sopenharmony_ciSuite for evaluating parallel wake calls. 21962306a36Sopenharmony_ci 22062306a36Sopenharmony_ci*requeue*:: 22162306a36Sopenharmony_ciSuite for evaluating requeue calls. 22262306a36Sopenharmony_ci 22362306a36Sopenharmony_ci*lock-pi*:: 22462306a36Sopenharmony_ciSuite for evaluating futex lock_pi calls. 22562306a36Sopenharmony_ci 22662306a36Sopenharmony_ciSUITES FOR 'epoll' 22762306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~ 22862306a36Sopenharmony_ci*wait*:: 22962306a36Sopenharmony_ciSuite for evaluating concurrent epoll_wait calls. 23062306a36Sopenharmony_ci 23162306a36Sopenharmony_ci*ctl*:: 23262306a36Sopenharmony_ciSuite for evaluating multiple epoll_ctl calls. 23362306a36Sopenharmony_ci 23462306a36Sopenharmony_ciSUITES FOR 'internals' 23562306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~ 23662306a36Sopenharmony_ci*synthesize*:: 23762306a36Sopenharmony_ciSuite for evaluating perf's event synthesis performance. 23862306a36Sopenharmony_ci 23962306a36Sopenharmony_ciSEE ALSO 24062306a36Sopenharmony_ci-------- 24162306a36Sopenharmony_cilinkperf:perf[1] 242