#
# 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

#
# aggressive:
#   enables more file, cache and memory aggressive options. This may
#   slow tests down, increase latencies and  reduce  the  number  of
#   bogo  ops as well as changing the balance of user time vs system
#   time used depending on the type of stressor being used.
#
# aggressive

#
# ignite-cpu:
#   alter kernel controls to try and maximize the CPU. This requires
#   root  privilege  to alter various /sys interface controls.  Cur‐
#   rently this only works for Intel P-State enabled x86 systems  on
#   Linux.
#
# ignite-cpu

#
# keep-name:
#   by  default,  stress-ng  will  attempt to change the name of the
#   stress processes according to their functionality;  this  option
#   disables  this and keeps the process names to be the name of the
#   parent process, that is, stress-ng.
#
# keep-name

#
# metrics-brief:
#   enable metrics and only output metrics that are non-zero.
#
metrics-brief

#
# 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 60s

#
# per stressor options start here
#

#
# af-alg stressor options:
#   start  N workers that exercise the AF_ALG socket domain by hash‐
#   ing and encrypting various sized random messages. This exercises
#   the  SHA1,  SHA224,  SHA256,  SHA384,  SHA512, MD4, MD5, RMD128,
#   RMD160, RMD256, RMD320, WP256,  WP384,  WP512,  TGR128,  TGR160,
#   TGR192    hashes   and   the   cbc(aes),   lrw(aes),   ofb(aes),
#   xts(twofish),    xts(serpent),    xts(cast6),     xts(camellia),
#
af-alg 0		# 0 means 1 stressor per CPU
# af-alg-ops 1000000	# stop after 1000000 bogo ops

#
# atomic stressor options:
#   start  N workers that exercise various GCC __atomic_*() built in
#   operations on 8, 16, 32 and 64 bit  integers  that  are  shared
#   among  the N workers. This stressor is only available for builds
#   using GCC 4.7.4 or higher. The stressor forces  many  front  end
#   cache stalls and cache references.
#
atomic 0		# 0 means 1 stressor per CPU
# atomic-ops 1000000	# stop after 1000000 bogo ops

#
# bsearch stressor options:
#   start  N  workers  that  binary  search a sorted array of 32 bit
#   integers using bsearch(3). By default, there are 65536  elements
#   in the array.  This is a useful method to exercise random access
#   of memory and processor cache.
#
bsearch 0		# 0 means 1 stressor per CPU
# bsearch-ops 1000000	# stop after 1000000 bogo ops
# bsearch-size 65536	# number of elements to bsearch on

#
# context stressor options:
#   start N workers that run three threads that  use  swapcontext(3)
#   to  implement the thread-to-thread context switching. This exer‐
#   cises rapid process context saving and restoring  and  is  band‐
#   width limited by register and memory save and restore rates.
#
context 0		# 0 means 1 stressor per CPU
# context-ops 1000000	# stop after 1000000 bogo ops

#
# cpu stressor options:
#   start N workers  exercising  the  CPU  by  sequentially  working
#   through  all  the different CPU stress methods. Instead of exer‐
#   cising all the CPU stress methods, one can  specify  a  specific
#   CPU stress method with the --cpu-method option.
#
cpu 0			# 0 means 1 stressor per CPU
# cpu-ops 1000000	# stop after 1000000 bogo ops
# cpu-load 90%		# load CPUs at 90%
# cpu-load-slice 50	# 50ms per slice
# cpu-method all	# use all cpu stressor methods

#
# cpu-online stressor options:
#   start  N  workers  that  put  randomly selected CPUs offline and
#   online. This Linux only stressor requires root privilege to per‐
#   form this action. This is disabled by default because it can
#   break older kernels.
#
# cpu-online 0		# 0 means 1 stressor per CPU
# cpu-online-ops 1000000 # stop after 1000000 bogo ops
#

#
# crypt stressor options:
#   start  N  workers  that  encrypt  a 16 character random password
#   using crypt(3).  The password is encrypted  using  MD5,  SHA-256
#   and SHA-512 encryption methods.
#
crypt 0			# 0 means 1 stressor per CPU
# crypt-ops 1000000	# stop after 1000000 bogo ops

#
# fp-error stressor options:
#   start N workers that generate floating point exceptions.  Compu‐
#   tations  are  performed to force and check for the FE_DIVBYZERO,
#   FE_INEXACT, FE_INVALID, FE_OVERFLOW and FE_UNDERFLOW exceptions.
#   EDOM and ERANGE errors are also checked.
#
fp-error 0		# 0 means 1 stressor per CPU
# fp-error-ops 1000000	# stop after 1000000 bogo ops

#
# getrandom stressor options:
#   start N workers that get 8192 random bytes from the /dev/urandom
#   pool using the getrandom(2) system call (Linux) or getentropy(2)
#   (OpenBSD).
#
getrandom 0		# 0 means 1 stressor per CPU
# getrandom-ops 1000000	# stop after 1000000 bogo ops

#
# heapsort stressor options:
#   start  N  workers  that sort 32 bit integers using the BSD heap‐
#   sort.
#
heapsort 0		# 0 means 1 stressor per CPU
# heapsort-ops 1000000	# stop after 1000000 bogo ops

#
# hsearch stressor options:
#   start  N  workers  that  search  a  80%  full  hash  table using
#   hsearch(3). By default, there are 8192  elements  inserted  into
#   the  hash  table.  This is a useful method to exercise access of
#   memory and processor cache.
#
hsearch 0		# 0 means 1 stressor per CPU
# hsearch-ops 1000000	# stop after 1000000 bogo ops
# hsearch-size 8192	# number of hash entries to search on

#
# longjmp stressor options:
#   start  N  workers  that  exercise  setjmp(3)/longjmp(3) by rapid
#   looping on longjmp calls.
#
longjmp 0		# 0 means 1 stressor per CPU
# longjmp-ops 1000000	# stop after 1000000 bogo ops

#
# lsearch stressor options:
#   start N workers that linear search a unsorted array  of  32  bit
#   integers  using  lsearch(3). By default, there are 8192 elements
#   in the array.  This is a useful method  to  exercise  sequential
#   access of memory and processor cache.
#
lsearch 0		# 0 means 1 stressor per CPU
# lsearch-ops 1000000	# stop after 1000000 bogo ops
# lsearch-size 8192	# number of elements to lsearch on

#
# matrix stressor options:
#   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.
#
matrix 0		# 0 means 1 stressor per CPU
# matrix-ops 1000000	# stop after 1000000 bogo ops
# matrix-method all	# use all matrix stressor methods
# matrix size 65536	# size of N x N matrix

#
# mergesort stressor options:
#   start  N  workers that sort 32 bit integers using the BSD merge‐
#   sort.
#
mergesort 0		# 0 means 1 stressor per CPU
# mergesort-ops 1000000 # stop after 1000000 bogo ops
# mergesort-size 262144 # number of elements to mergesort
#

#
# nop stressor options:
#   start  N  workers that consume cpu cycles issuing no-op instruc‐
#   tions. This stressor is available if the assembler supports  the
#   "nop" instruction.
#
nop 0			# 0 means 1 stressor per CPU
# nop-ops 1000000	# stop after 1000000 bogo ops

#
# numa stressor options:
#   start N workers that migrate stressors and a 4MB  memory  mapped
#   buffer   around   all  the  available  NUMA  nodes.   This  uses
#   migrate_pages(2)  to  move  the  stressors  and   mbind(2)   and
#   move_pages(2) to move the pages of the mapped buffer. After each
#   move, the buffer is written to force activity over the bus which
#   results  cache misses.  This test will only run on hardware with
#   NUMA enabled and more than 1 NUMA node.
#
numa 0			# 0 means 1 stressor per CPU
# numa-ops 1000000	# stop after 1000000 bogo ops

#
# opcode stressor options:
#   start N workers that fork off  children  that  execute  randomly
#   generated  executable  code.   This will generate issues such as
#   illegal instructions, bus errors,  segmentation  faults,  traps,
#   floating  point errors that are handled gracefully by the stres‐
#   sor.
#
opcode 0		# 0 means 1 stressor per CPU
# opcode-ops 1000000	# stop after 1000000 bogo ops

#
# qsort stressor options:
#   start N workers that sort 32 bit integers using qsort.
#
qsort 0			# 0 means 1 stressor per CPU
# qsort-ops 1000000	# stop after 1000000 bogo ops
# qsort-size 262144	# number of elements to qsort

#
# rdrand stressor options:
#   start  N workers that read the Intel hardware random number gen‐
#   erator (Intel Ivybridge processors upwards).
#
rdrand 0		# 0 means 1 stressor per CPU
# rdrand-ops 1000000	# stop after 1000000 bogo ops

#
# str stressor options:
#   start N workers that exercise various libc string  functions  on
#   random strings.
#
str 0			# 0 means 1 stressor per CPU
# str-ops 1000000	# stop after 1000000 bogo ops
# str-method all	# select all string methods

#
# stream stressor options:
#   start N workers exercising a memory bandwidth  stressor  loosely
#   based  on  the STREAM "Sustainable Memory Bandwidth in High Per‐
#   formance Computers" benchmarking tool by John D. McCalpin, Ph.D.
#   This  stressor  allocates  buffers that are at least 4 times the
#   size  of the  CPU L2 cache and  continually  performs  rounds of
#   computations on large  arrays of double precision floating point
#   numbers.
#
stream 0		# 0 means 1 stressor per CPU
# stream-ops 1000000	# stop after 1000000 bogo ops
# stream-l3-size 4M	# CPU level 3 cache size

#
# tsc stressor options:
#   start N workers that read the Time Stamp Counter (TSC) 256 times
#   per loop iteration (bogo operation). Available only on Intel x86
#   platforms.
tsc 0			# 0 means 1 stressor per CPU
# tsc-ops 1000000	# stop after 1000000 bogo ops

#
# tsearch stressor options:
#   start N workers that insert, search and delete 32  bit  integers
#   on  a  binary tree using tsearch(3), tfind(3) and tdelete(3). By
#   default, there are 65536 randomized integers used in  the  tree.
#   This  is a useful method to exercise random access of memory and
#   processor cache.
#
tsearch 0		# 0 means 1 stressor per CPU
# tsearch-ops 1000000	# stop after 1000000 bogo ops
# tsearch-size 65536	# number of elements to tsearch on

#
# vecmath stressor options:
#   start N workers that perform various unsigned integer math oper‐
#   ations on various 128 bit vectors. A mix of vector  math  opera‐
#   tions  are  performed on the following vectors: 16 × 8 bits, 8 ×
#   16 bits, 4 × 32 bits, 2 × 64 bits. The metrics produced by  this
#   mix  depend  on  the  processor architecture and the vector math
#   optimisations produced by the compiler.
vecmath 0		# 0 means 1 stressor per CPU
# vecmath-ops 1000000	# stop after 1000000 bogo ops

#
# wcs stressor options:
#   start N workers that exercise various libc wide character string
#   functions on random strings.
#
wcs 0			# 0 means 1 stressor per CPU
# wcs-ops 1000000	# stop after 1000000 bogo ops
# wcs-method all	# use all wide string functions

#
# zlib stressor option:
#   start N workers compressing and decompressing random data  using
#   zlib.  Each worker has two processes, one that compresses random
#   data and pipes it to another process that decompresses the data.
#   This stressor exercises CPU, cache and memory.
#
zlib 0			# 0 means 1 stressor per CPU
# zlib-ops 1000000	# stop after 1000000 bogo ops
# zlib-method random	# randomly select data generation methods

