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

# bind-mount stressor options:
#   start  N workers that repeatedly bind mount / to / inside a user
#   namespace. This can consume resources rapidly,  forcing  out  of
#   memory  situations.  Do not use this stressor unless you want to
#   risk hanging your machine.
#
bind-mount 0		# 0 means 1 stressor per CPU
# bind-mount-ops 1000000 # stop after 1000000 bogo ops

#
# chdir stressor options:
#   start N workers that change directory between directories  using
#   chdir(2)
#
chdir 0			# 0 means 1 stressor per CPU
# chdir-ops 1000000	# stop after 1000000 bogo ops
# chdir-dirs 8192	# create 8192 directories

#
# chmod stressor options:
#   start N workers that change the file mode bits via chmod(2)  and
#   fchmod(2) on the same file. The greater the value for N then the
#   more contention on the single  file.   The  stressor  will  work
#   through all the combination of mode bits.
#
chmod 0			# 0 means 1 stressor per CPU
# chmod-ops 1000000	# stop after 1000000 bogo ops

#
# chown stressor options:
#   start  N  workers  that  exercise chown(2) on the same file. The
#   greater the value for N then the more contention on  the  single
#   file.
#
chown 0			# 0 means 1 stressor per CPU
# chown-ops 1000000	# stop after 1000000 bogo ops

# copy-file stressor options:
#   start   N   stressors   that   copy   a  file  using  the  Linux
#   copy_file_range(2) system call. 2MB chunks of data  are  copied
#   from  random  locations  from  one file to random locations to a
#   destination file.  By default, the files are  256  MB  in  size.
#   Data  is  sync'd to the filesystem after each copy_file_range(2)
#   call.
#
copy-file 0		# 0 means 1 stressor per CPU
# copy-file-ops 1000000 # stop after 1000000 bogo ops
# copy-file-bytes 256M	# size of the copy file (256MB)

#
# dentry stressor options:
#   start  N workers that create and remove directory entries.  This
#   should create file system  meta  data  activity.  The  directory
#   entry names are suffixed by a gray-code encoded number to try to
#   mix up the hashing of the namespace.
#
dentry 0		# 0 means 1 stressor per CPU
# dentry-ops 1000000	# stop after 1000000 bogo ops
# dentry-order forward	# forward order dentry unlinking,
			# can be forward, reverse, stride or random
# dentries 2048		# create 2048 dentries per stress iteration


#
# dir stressor options:
#   start N workers that create and remove directories  using  mkdir
#   and rmdir.
#
dir 0			# 0 means 1 stressor per CPU
# dir-ops 1000000	# stop after 1000000 bogo ops
# dir-dirs 8192		# exercise 8192 directories per stressor

#
# dirdeep stressor options:
#   start N workers that create multiple levels of directories to  a
#   maximum depth as limited by PATH_MAX or ENAMETOOLONG (which ever
#   occurs first)
#
dirdeep 0		# 0 means 1 stressor per CPU
# dirdeep-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

#
# dup stressor options:
#   start N workers that perform dup(2) and then close(2) operations
#   on  /dev/zero.  The maximum opens at one time is system defined,
#   so the test will run up to this  maximum,  or  65536  open  file
#   descriptors, which ever comes first.
#
dup 0		# 0 means 1 stressor per CPU
# dup-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

#
# fallocate stressor options:
#   start N  workers  continually  fallocating  (preallocating  file
#   space) and ftuncating (file truncating) temporary files.  If the
#   file is larger than the free space, fallocate  will  produce  an
#   ENOSPC error which is ignored by this stressor.
#
fallocate 0		# 0 means 1 stressor per CPU
# fallocate-ops 1000000	# stop after 1000000 bogo ops
# fallocate-bytes 1G	# allocated file size, 1GB
#

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

#
# fcntl stressor options:
#   start  N  workers  that perform fcntl(2) calls with various com‐
#   mands.  The exercised  commands  (if  available)  are:  F_DUPFD,
#   F_DUPFD_CLOEXEC,  F_GETFD,  F_SETFD, F_GETFL, F_SETFL, F_GETOWN,
#   F_SETOWN, F_GETOWN_EX, F_SETOWN_EX, F_GETSIG, F_SETSIG, F_GETLK,
#   F_SETLK, F_SETLKW, F_OFD_GETLK, F_OFD_SETLK and F_OFD_SETLKW.
#
fcntl 0		# 0 means 1 stressor per CPU
# fcntl-ops 1000000	# stop after 1000000 bogo ops

#
# fiemap stressor options:
#   start  N  workers  that  each  create  a file with many randomly
#   changing extents and has  4  child  processes  per  worker  that
#   gather the extent information using the FS_IOC_FIEMAP ioctl(2).
#
fiemap 0		# 0 means 1 stressor per CPU
# fiemap-ops 1000000	# stop after 1000000 bogo ops
# fiemap-bytes 1G	# allocated file size, 1GB

#
# filename stressor options:
#   start N workers that exercise file creation using various length
#   filenames containing a range  of  allower  filename  characters.
#   This  will  try  to see if it can exceed the file system allowed
#   filename length  was  well  as  test  various  filename  lengths
#   between 1 and the maximum allowed by the file system.
#
filename 0		# 0 means 1 stressor per CPU
# filename-ops 1000000	# stop after 1000000 bogo ops
# filename-opts probe	# probe for valid filename characters,
			# can also use posix and ext
#
# flock stressor options:
#   start N workers locking on a single file.
#
flock 0			# 0 means 1 stressor per CPU
# flock-ops 1000000	# stop after 1000000 bogo ops

#
# fstat stressor options:
#   start  N  workers  fstat'ing  files  in  a directory (default is
#   /dev).
#
fstat 0			# 0 means 1 stressor per CPU
# fstat-ops 1000000	# stop after 1000000 bogo ops
# fstat-dir /path	# fstat on the directory named '/path'

#
# getdent stressor options:
#   start  N workers that recursively read directories /proc, /dev/,
#   /tmp, /sys and /run using getdents and getdents64 (Linux only)
#
getdent 0		# 0 means 1 stressor per CPU
# getdent-ops 1000000	# stop after 1000000 bogo ops

#
# handle stressor options:
#   start N  workers  that  exercise  the  name_to_handle_at(2)  and
#   open_by_handle_at(2) system calls. (Linux only).
#
handle 0		# 0 means 1 stressor per CPU
# handle-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

#
# io stressor options:
#   start N workers continuously calling sync(2)  to  commit  buffer
#   cache  to  disk.  This can be used in conjunction with the --hdd
#   options.
#
io 0			# 0 means 1 stressor per CPU
# io-ops 1000000	# stop after 1000000 bogo ops

#
# iomix stressor options:
#   start N workers that perform a mix  of  sequential,  random  and
#   memory  mapped  read/write operations as well as forced sync'ing
#   and (if run as root) cache dropping.  Multiple  child  processes
#   are spawned to all share a single file and perform different I/O
#   operations on the same file.
#
iomix 0			# 0 means 1 stressor per CPU
# iomix-ops 1000000	# stop after 1000000 bogo ops
# iomix-bytes 1G	# iomix file size (1GB)

#
# ioprio stressor options:
#   start   N   workers   that   exercise   the   ioprio_get(2)  and
#   ioprio_set(2) system calls (Linux only).
#
ioprio 0		# 0 means 1 stressor per CPU
# ioprio-ops 1000000	# stop after 1000000 bogo ops

#
# lease stressor options:
#   start  N  workers locking, unlocking and breaking leases via the
#   fcntl(2) F_SETLEASE operation. The parent processes  continually
#   lock and unlock a lease on a file while a user selectable number
#   of child processes open the file with  a  non-blocking  open  to
#   generate SIGIO lease breaking notifications to the parent.  This
#   stressor is only available if F_SETLEASE,  F_WRLCK  and  F_UNLCK
#   support is provided by fcntl(2).
#
lease 0			# 0 means 1 stressor per CPU
# lease-ops 1000000	# stop after 1000000 bogo ops
# lease-breakers 4	# start 4 lease breaker child processors
			# per stressor
#
# link stressor options:
#   start N workers creating and removing hardlinks.
#
link 0			# 0 means 1 stressor per CPU
# link-ops 1000000	# stop after 1000000 bogo ops

#
# locka stressor options:
#   start N workers that randomly lock and unlock regions of a  file
#   using  the  POSIX  advisory  locking  mechanism  (see  fcntl(2),
#   F_SETLK, F_GETLK). Each  worker  creates  a  1024  KB  file  and
#   attempts to hold a maximum of 1024 concurrent locks with a child
#   process that also tries to hold 1024 concurrent locks. Old locks
#   are unlocked in a first-in, first-out basis.
#
locka 0			# 0 means 1 stressor per CPU
# locka-ops 1000000	# stop after 1000000 bogo ops

#
# lockf stressor options:
#   start  N workers that randomly lock and unlock regions of a file
#   using the POSIX lockf(3) locking mechanism. Each worker  creates
#   a  64  KB file and attempts to hold a maximum of 1024 concurrent
#   locks with a child process that also tries to hold 1024  concur‐
#   rent  locks.  Old  locks  are  unlocked in a first-in, first-out
#   basis.
#
lockf 0			# 0 means 1 stressor per CPU
# lockf-ops 1000000	# stop after 1000000 bogo ops
# lockf-nonblock	# use non-blocking F_TLOCK and retry unlocks

#
# lockofd stressor options:
#   start N workers that randomly lock and unlock regions of a  file
#   using  the  Linux  open  file  description  locks (see fcntl(2),
#   F_OFD_SETLK, F_OFD_GETLK).  Each worker creates a 1024  KB  file
#   and  attempts  to hold a maximum of 1024 concurrent locks with a
#   child process that also tries to hold 1024 concurrent locks. Old
#   locks are unlocked in a first-in, first-out basis.
#
lockofd 0		# 0 means 1 stressor per CPU
# lockofd-ops 1000000	# stop after 1000000 bogo ops

#
# mknod stressor options:
#   start N workers that create and remove fifos,  empty  files  and
#   named sockets using mknod and unlink.
#
mknod 0			# 0 means 1 stressor per CPU
# mknod-ops 1000000	# stop after 1000000 bogo ops

#
# open stressor options:
#   start N workers that perform open(2) and  then  close(2)  opera‐
#   tions  on  /dev/zero.  The  maximum  opens at one time is system
#   defined, so the test will run up to this maximum, or 65536  open
#   file descriptors, which ever comes first.
#
open 0			# 0 means 1 stressor per CPU
# open-ops 1000000	# stop after 1000000 bogo ops

#
# procfs stressor options:
#   start  N workers that read files from /proc and recursively read
#   files from /proc/self (Linux only).
#
procfs 0		# 0 means 1 stressor per CPU
# procfs-ops 1000000	# stop after 1000000 bogo ops

#
# rename stressor options:
#   start N workers that each create  a  file  and  then  repeatedly
#   rename it.
#
rename 0		# 0 means 1 stressor per CPU
# rename-ops 1000000	# stop after 1000000 bogo ops

#
# symlink stressor options:
#   start N workers creating and removing symbolic links.
#
symlink 0		# 0 means 1 stressor per CPU
# symlink-ops 1000000	# stop after 1000000 bogo ops

#
# sync-file stressor options:
#   start N workers that perform a range of data syncs across a file
#   using sync_file_range(2).  Three mixes of syncs  are  performed,
#   from  start to the end of the file,  from end of the file to the
#   start, and a random mix. A random selection of valid sync  types
#   are     used,    covering    the    SYNC_FILE_RANGE_WAIT_BEFORE,
#   SYNC_FILE_RANGE_WRITE and SYNC_FILE_RANGE_WAIT_AFTER flag bits
#
sync-file 0		# 0 means 1 stressor per CPU
# sync-file-ops 1000000	# stop after 1000000 bogo ops
# sync-file-bytes 1G	# allocated file size, 1GB

#
# utime stressor options:
#   start  N  workers  updating  file timestamps. This is mainly CPU
#   bound when the default is used as the  system  flushes  metadata
#   changes only periodically.
#
utime 0			# 0 means 1 stressor per CPU
# utime-ops 1000000	# stop after 1000000 bogo ops
# utime-fsync		# force flush metadata to disk

#
# xattr stressor options:
#   start  N  workers  that  create,  update  and  delete batches of
#   extended attributes on a file.
#
xattr 0			# 0 means 1 stressor per CPU
# xattr-ops 1000000	# stop after 1000000 bogo ops
