hackbench(8) | hackbench(8) |
hackbench - scheduler benchmark/stress test
hackbench [-f|--fds NUM] [-F|--fifo] [-g|--groups NUM] [-h|--help] [-l|--loops LOOPS] [-p|--pipe] [-s|--datasize SIZE] [-T|--threads] [-P|--process]
Hackbench is both a benchmark and a stress test for the Linux kernel scheduler. It's main job is to create a specified number of pairs of schedulable entities (either threads or traditional processes) which communicate via either sockets or pipes and time how long it takes for each pair to send data back and forth.
These programs follow the usual GNU command line syntax, with long
options starting with two dashes ("--").
A summary of options is included below.
Running hackbench without any options will give default behaviour, using fork() and sending data between senders and receivers via sockets.
user@host: ~ $ hackbench
Running in process mode with 10 groups using 40 file descriptors each (== 400
tasks)
Each sender will pass 100 messages of 100 bytes
Time: 0.890
To use pipes between senders and receivers and using threads instead of fork(), run
user@host: ~ $ hackbench --pipe --threads (or hackbench -p -T)
Running in threaded mode with 10 groups using 40 file descriptors each (== 400
tasks)
Each sender will pass 100 messages of 100 bytes
Time: 0.497
Set the datasize to 512 bytes, do 200 messages per sender/receiver pairs and use 15 groups using 25 file descriptors per child, in process mode.
user@host: ~ $ hackbench -s 512 -l 200 -g 15 -f 25 -P
Running in process mode with 15 groups using 50 file descriptors each (== 750
tasks)
Each sender will pass 200 messages of 512 bytes
Time: 4.497
hackbench was written by Rusty Russell <rusty@rustcorp.com.au> with contributions from Yanmin Zhang <yanmin_zhang@linux.intel.com>, Ingo Molnar <mingo@elte.hu> and David Sommerseth <davids@redhat.com>
This manual page was written by Clark Williams <williams@redhat.com> and David Sommerseth <davids@redhat.com>
This version of hackbench is based on the code downloaded from
http://people.redhat.com/mingo/cfs-scheduler/tools/hackbench.c. Yanmin Zhang
merged the original hackbench code from
http://devresources.linuxfoundation.org/craiger/hackbench/src/hackbench.c
which uses fork() and a modified version from
http://www.bullopensource.org/posix/pi-futex/hackbench_pth.c which uses
pthread only and gave the possibility to change behaviour at run time.
Hackbench have since then gone through some more rewriting to improve error
handling and proper tracking of fork()ed children, to avoid leaving zombies
on the system if hackbench stops unexpectedly.
September 19, 2020 |