The job script commands are essentially the stress-ng long options without the need for the '--' option characters. One option per line is allowed.
$ stress-ng --cpu 1 --matrix 1 --verbose --tz --timeout 60s --cpu 1 --matrix -1 --icache 1
$cat example.job verbose tz timeout 60 cpu 1 matrix 1 icache 1
One can also add comments using the # character prefix. By default the stressors will be run in parallel, but one can use the "run sequential" command in the job script to run the stressors sequentially.
The following script runs the mmap stressor multiple times using more memory on each run:
$ cat mmap.job run sequential # one job at a time timeout 2m # run for 2 minutes verbose # verbose output # # run 4 invocations and increase memory each time # mmap 1 mmap-bytes 25% mmap 1 mmap-bytes 50% mmap 1 mmap-bytes 75% mmap 1 mmap-bytes 100%
Some of the stress-ng stressors have various "methods" that allow one to modify the way the stressor behaves. The following example shows how job scripts can be uses to exercise a system using different stressor methods:
$ cat /usr/share/stress-ng/example-jobs/matrix-methods.job # # hot-cpu class stressors: # various options have been commented out, one can remove the # proceeding comment to enable these options if required. # # run the following tests in parallel or sequentially # run sequential # run parallel # # verbose # show all debug, warnings and normal information output. # verbose # # run each of the tests for 60 seconds # stop stress test after N seconds. One can also specify the units # of time in seconds, minutes, hours, days or years with the suf‐ # fix s, m, h, d or y. # timeout 1m # tz # collect temperatures from the available thermal zones on the # machine (Linux only). Some devices may have one or more thermal # zones, where as others may have none. tz # # matrix stressor with examples of all the methods allowed # # start N workers that perform various matrix operations on float‐ # ing point values. By default, this will exercise all the matrix # stress methods one by one. One can specify a specific matrix # stress method with the --matrix-method option. # # # Method Description # all iterate over all the below matrix stress methods # add add two N × N matrices # copy copy one N × N matrix to another # div divide an N × N matrix by a scalar # hadamard Hadamard product of two N × N matrices # frobenius Frobenius product of two N × N matrices # mean arithmetic mean of two N × N matrices # mult multiply an N × N matrix by a scalar # prod product of two N × N matrices # sub subtract one N × N matrix from another N × N matrix # trans transpose an N × N matrix # matrix 0 matrix-method all matrix 0 matrix-method add matrix 0 matrix-method copy matrix 0 matrix-method div matrix 0 matrix-method frobenius matrix 0 matrix-method hadamard matrix 0 matrix-method mean matrix 0 matrix-method mult matrix 0 matrix-method prod matrix 0 matrix-method sub matrix 0 matrix-method trans
Various example job scripts can be found in /usr/share/stress-ng/example-job, one can use these as a base for writing more complex stressors. The example jobs have all the options commented (using the text from the stress-ng manual) to make it easier to see how each stressor can be run.
Version 0.08.00 landed in Ubuntu 17.10 Artful Aardvark and is available as a snap and I've got backports in ppa:colin-king/white for older releases of Ubuntu.