# # scheduler 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 # # # affinity stressor options: # start N workers that rapidly change CPU affinity (only on # Linux). Rapidly switching CPU affinity can contribute to poor # cache behaviour. # affinity 0 # 0 means 1 stressor per CPU # affinity-ops 1000000 # stop after 1000000 bogo ops affinity-rand # switch affinity randomly # # clone stressor options: # start N workers that create clones (via the clone(2) system # call). This will rapidly try to create a default of 8192 clones # that immediately die and wait in a zombie state until they are # reaped. Once the maximum number of clones is reached (or clone # fails because one has reached the maximum allowed) the oldest # clone thread is reaped and a new clone is then created in a # first-in first-out manner, and then repeated. A random clone # flag is selected for each clone to try to exercise different # clone operarions. The clone stressor is a Linux only option. # clone 0 # 0 means 1 stressor per CPU # clone-ops 1000000 # stop after 1000000 bogo ops # clone-max 8192 # create a total of 8192 clones # # daemon stressor options: # start N workers that each create a daemon that dies immediately # after creating another daemon and so on. This effectively works # through the process table with short lived processes that do not # have a parent and are waited for by init. This puts pressure on # init to do rapid child reaping. The daemon processes perform # the usual mix of calls to turn into typical UNIX daemons, so # this artificially mimics very heavy daemon system stress. # daemon 0 # 0 means 1 stressor per CPU # daemon-ops 1000000 # stop after 1000000 bogo ops # # dnotify stressor options: # start N workers performing file system activities such as mak‐ # ing/deleting files/directories, renaming files, etc. to stress # exercise the various dnotify events (Linux only). # dnotify 0 # 0 means 1 stressor per CPU # dnotify-ops 1000000 # stop after 1000000 bogo ops # # eventfd stressor options: # start N parent and child worker processes that read and write 8 # byte event messages between them via the eventfd mechanism # (Linux only). # eventfd 0 # 0 means 1 stressor per CPU # eventfd-ops 1000000 # stop after 1000000 bogo ops # # exec stressor options: # start N workers continually forking children that exec stress-ng # and then exit almost immediately. # exec 0 # 0 means 1 stressor per CPU # exec-ops 1000000 # stop after 1000000 bogo ops # exec-max 1 # maximum number of fork/execs per stressor # per iteration # # fanotify stressor options: # start N workers performing file system activities such as creat‐ # ing, opening, writing, reading and unlinking files to exercise # the fanotify event monitoring interface (Linux only). Each # stressor runs a child process to generate file events and a par‐ # ent process to read file events using fanotify. # fanotify 0 # 0 means 1 stressor per CPU # fanotify-ops 1000000 # stop after 1000000 bogo ops # # fault stressor options: # start N workers that generates minor and major page faults. # fault 0 # 0 means 1 stressor per CPU # fault-ops 1000000 # stop after 1000000 bogo ops # # fifo stressor options: # start N workers that exercise a named pipe by transmitting 64 # bit integers. # fifo 0 # 0 means 1 stressor per CPU # fifo-ops 1000000 # stop after 1000000 bogo ops # fifo-readers 8 # create 8 fifo readers per stressor # # fork stressor options: # start N workers continually forking children that immediately # exit. # fork 0 # 0 means 1 stressor per CPU # fork-ops 1000000 # stop after 1000000 bogo ops # fork-max 2 # create 2 child processes per iteration # # futex stressor options: # start N workers that rapidly exercise the futex system call. # Each worker has two processes, a futex waiter and a futex waker. # The waiter waits with a very small timeout to stress the timeout # and rapid polled futex waiting. This is a Linux specific stress # option. # futex 0 # 0 means 1 stressor per CPU # futex-ops 1000000 # stop after 1000000 bogo ops # # inotify stressor options: # start N workers performing file system activities such as mak‐ # ing/deleting files/directories, moving files, etc. to stress # exercise the various inotify events (Linux only). # inotify 0 # 0 means 1 stressor per CPU # inotify-ops 1000000 # stop after 1000000 bogo ops # # kill stressor options: # start N workers sending SIGUSR1 kill signals to a SIG_IGN signal # handler. Most of the process time will end up in kernel space. # kill 0 # 0 means 1 stressor per CPU # kill-ops 1000000 # stop after 1000000 bogo ops # # mmapfork stressor options: # start N workers that each fork off 32 child processes, each of # which tries to allocate some of the free memory left in the sys‐ # tem (and trying to avoid any swapping). The child processes # then hint that the allocation will be needed with madvise(2) and # then memset it to zero and hint that it is no longer needed with # madvise before exiting. This produces significant amounts of VM # activity, a lot of cache misses and with minimal swapping. # mmapfork 0 # 0 means 1 stressor per CPU # mmapfork-ops 1000000 # stop after 1000000 bogo ops # # mq stressor options: # start N sender and receiver processes that continually send and # receive messages using POSIX message queues. (Linux only) # mq 0 # 0 means 1 stressor per CPU # mq-ops 1000000 # stop after 1000000 bogo ops # mq-size 10 # 10 messages in message queue # # msg stressor options: # start N sender and receiver processes that continually send and # receive messages using System V message IPC. # msg 0 # 0 means 1 stressor per CPU # msg-ops 1000000 # stop after 1000000 bogo ops # # netlink-proc stressor options: # start N workers that spawn child processes and monitor # fork/exec/exit process events via the proc netlink connector. # Each event received is counted as a bogo op. This stressor can # only be run on Linux and with root privilege. # netlink-proc 0 # 0 means 1 stressor per CPU # netlink-proc-ops 1000000 # stop after 1000000 bogo ops # # nice stressor options: # start N cpu consuming workers that exercise the available nice # levels. Each iteration forks off a child process that runs # through the all the nice levels running a busy loop for 0.1 sec‐ # onds per level and then exits. # nice 0 # 0 means 1 stressor per CPU # nice-ops 1000000 # stop after 1000000 bogo ops # # poll stressor options: # start N workers that perform zero timeout polling via the # poll(2), select(2) and sleep(3) calls. This wastes system and # user time doing nothing. # poll 0 # 0 means 1 stressor per CPU # poll-ops 1000000 # stop after 1000000 bogo ops # # pthread stressor options: # start N workers that iteratively creates and terminates multiple # pthreads (the default is 1024 pthreads per worker). In each # iteration, each newly created pthread waits until the worker has # created all the pthreads and then they all terminate together. # pthread 0 # 0 means 1 stressor per CPU # pthread-ops 1000000 # stop after 1000000 bogo ops # pthread-max 1024 # create 1024 pthreads per stressor # # schedpolicy stressor options: # start N workers that work set the worker to various available # scheduling policies out of SCHED_OTHER, SCHED_BATCH, SCHED_IDLE, # SCHED_FIFO and SCHED_RR. For the real time scheduling policies # a random sched priority is selected between the minimum and max‐ # imum scheduling prority settings. # schedpolicy 0 # 0 means 1 stressor per CPU # schedpolicy-ops 1000000 # stop after 1000000 bogo ops # # sem stressor options: # start N workers that perform POSIX semaphore wait and post oper‐ # ations. By default, a parent and 4 children are started per # worker to provide some contention on the semaphore. This # stresses fast semaphore operations and produces rapid context # switching. # sem 0 # 0 means 1 stressor per CPU # sem-ops 1000000 # stop after 1000000 bogo ops # sem-procs 4 # start 4 processes per stressor exercising # the semaphore # # sem-sysv stressor options: # start N workers that perform System V semaphore wait and post # operations. By default, a parent and 4 children are started per # worker to provide some contention on the semaphore. This # stresses fast semaphore operations and produces rapid context # switching. # sem-sysv 0 # 0 means 1 stressor per CPU # sem-sysv-ops 1000000 # stop after 1000000 bogo ops # sem-sysv-procs 4 # start 4 processes per stressor exercising # # sleep stressor options: # start N workers that spawn off multiple threads that each per‐ # form multiple sleeps of ranges 1us to 0.1s. This creates multi‐ # ple context switches and timer interrupts. # sleep 0 # 0 means 1 stressor per CPU # sleep-ops 1000000 # stop after 1000000 bogo ops # sleep-max 1024 # start 1034 threads per stressor # # spawn stressor options: # start N workers continually spawn children using posix_spawn(3) # that exec stress-ng and then exit almost immediately. Currently # Linux only. # spawn 0 # 0 means 1 stressor per CPU # spawn-ops 1000000 # stop after 1000000 bogo ops # # switch stressor options: # start N workers that send messages via pipe to a child to force # context switching. # switch 0 # 0 means 1 stressor per CPU # switch-ops 1000000 # stop after 1000000 bogo ops # # tee stressor options: # move data from a writer process to a reader process through # pipes and to /dev/null without any copying between kernel # address space and user address space using tee(2). This is only # available for Linux. # tee 0 # 0 means 1 stressor per CPU # tee-ops 1000000 # stop after 1000000 bogo ops # # vfork stressor options: # start N workers continually vforking children that immediately # exit. vfork 0 # 0 means 1 stressor per CPU # vfork-ops 1000000 # stop after 1000000 bogo ops # vfork-max 8 # create 8 processes per vfork iteration # # vforkmany stressor options: # start N workers that spawn off a chain of vfork children until # the process table fills up and/or vfork fails. vfork can # rapidly create child processes and the parent process has to # wait until the child dies, so this stressor rapidly fills up the # process table. # vforkmany 0 # 0 means 1 stressor per CPU # vforkmany-ops 1000000 # stop after 1000000 bogo ops # # wait stressor options: # start N workers that spawn off two children; one spins in a # pause(2) loop, the other continually stops and continues the # first. The controlling process waits on the first child to be # resumed by the delivery of SIGCONT using waitpid(2) and # waitid(2). # wait 0 # 0 means 1 stressor per CPU # wait-ops 1000000 # stop after 1000000 bogo ops # # yield stressor options: # start N workers that call sched_yield(2). This stressor ensures # that at least 2 child processes per CPU exercice shield_yield(2) # no matter how many workers are specified, thus always ensuring # rapid context switching. # yield 0 # 0 means 1 stressor per CPU # yield-ops 1000000 # stop after 1000000 bogo ops # # zombie stressor options: # start N workers that create zombie processes. This will rapidly # try to create a default of 8192 child processes that immediately # die and wait in a zombie state until they are reaped. Once the # maximum number of processes is reached (or fork fails because # one has reached the maximum allowed number of children) the old‐ # est child is reaped and a new process is then created in a # first-in first-out manner, and then repeated. # zombie 0 # 0 means 1 stressor per CPU # zombie-ops 1000000 # stop after 1000000 bogo ops # zombie-max 8192 # create 8192 processes per zombie iteration