# # vm 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 # # # bigheap stressor options: # start N workers that grow their heaps by reallocating memory. If # the out of memory killer (OOM) on Linux kills the worker or the # allocation fails then the allocating process starts all over # again. Note that the OOM adjustment for the worker is set so # that the OOM killer will treat these workers as the first candi‐ # date processes to kill. # bigheap 0 # 0 means 1 stressor per CPU # bigheap-ops 1000000 # stop after 1000000 bogo ops # bigheap-growth 64K # grow heap by 64K each loop iteration # # brk stressor options: # start N workers that grow the data segment by one page at a time # using multiple brk(2) calls. Each successfully allocated new # page is touched to ensure it is resident in memory. If an out # of memory condition occurs then the test will reset the data # segment to the point before it started and repeat the data seg‐ # ment resizing over again. The process adjusts the out of memory # setting so that it may be killed by the out of memory (OOM) # killer before other processes. If it is killed by the OOM # killer then it will be automatically re-started by a monitoring # parent process. # brk 0 # 0 means 1 stressor per CPU # brk-ops 1000000 # stop after 1000000 bogo ops # brk-notouch # don't touch allocated pages # # madvise stressor options: # start N workers that apply random madvise(2) advise settings on # pages of a 4MB file backed shared memory mapping. # madvise 0 # 0 means 1 stressor per CPU # madvise-ops 1000000 # stop after 1000000 bogo ops # # malloc stressor options: # start N workers continuously calling malloc(3), calloc(3), real‐ # loc(3) and free(3). By default, up to 65536 allocations can be # active at any point, but this can be altered with the --mal‐ # loc-max option. Allocation, reallocation and freeing are chosen # at random; 50% of the time memory is allocation (via malloc, # calloc or realloc) and 50% of the time allocations are free'd. # Allocation sizes are also random, with the maximum allocation # size controlled by the --malloc-bytes option, the default size # being 64K. The worker is re-started if it is killed by the out # of mememory (OOM) killer. # malloc 0 # 0 means 1 stressor per CPU # malloc-bytes 64K # maximum allocation chunk size # malloc-max 65536 # maximum number of allocations of chunks # malloc-ops 1000000 # stop after 1000000 bogo ops # malloc-thresh 1M # use mmap when allocation exceeds this size # # mlock stressor options: # start N workers that lock and unlock memory mapped pages using # mlock(2), munlock(2), mlockall(2) and munlockall(2). This is # achieved by the mapping of three contiguous pages and then lock‐ # ing the second page, hence ensuring non-contiguous pages are # locked . This is then repeated until the maximum allowed mlocks # or a maximum of 262144 mappings are made. Next, all future map‐ # pings are mlocked and the worker attempts to map 262144 pages, # then all pages are munlocked and the pages are unmapped. # mlock 0 # 0 means 1 stressor per CPU # mlock-ops 1000000 # stop after 1000000 bogo ops # # mmap stressor options: # start N workers continuously calling mmap(2)/munmap(2). The # initial mapping is a large chunk (size specified by # --mmap-bytes) followed by pseudo-random 4K unmappings, then # pseudo-random 4K mappings, and then linear 4K unmappings. Note # that this can cause systems to trip the kernel OOM killer on # Linux systems if not enough physical memory and swap is not # available. The MAP_POPULATE option is used to populate pages # into memory on systems that support this. By default, anonymous # mappings are used, however, the --mmap-file and --mmap-async # options allow one to perform file based mappings if desired. # mmap 0 # 0 means 1 stressor per CPU # mmap-ops 1000000 # stop after 1000000 bogo ops # mmap-async # msync on each page when using file mmaps # mmap-bytes 256M # allocate 256M per mmap stressor # mmap-file # enable file based memory mapping # mmap-mprotect # twiddle page protection settings # # 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 # # mmapmany stressor options: # start N workers that attempt to create the maximum allowed per- # process memory mappings. This is achieved by mapping 3 contigu‐ # ous pages and then unmapping the middle page hence splitting the # mapping into two. This is then repeated until the maximum # allowed mappings or a maximum of 262144 mappings are made. # mmapmany 0 # 0 means 1 stressor per CPU # mmapmany-ops 1000000 # stop after 1000000 bogo ops # # mremap stressor options: # start N workers continuously calling mmap(2), mremap(2) and mun‐ # map(2). The initial anonymous mapping is a large chunk (size # specified by --mremap-bytes) and then iteratively halved in size # by remapping all the way down to a page size and then back up to # the original size. This worker is only available for Linux. # mremap 0 # 0 means 1 stressor per CPU # mremap-ops 1000000 # stop after 1000000 bogo ops # mremap-bytes 256M # allocate 256M per mremap stressor # # msync stressor options: # start N stressors that msync data from a file backed memory map‐ # ping from memory back to the file and msync modified data from # the file back to the mapped memory. This exercises the msync(2) # MS_SYNC and MS_INVALIDATE sync operations. # msync 0 # 0 means 1 stressor per CPU # msync-ops 1000000 # stop after 1000000 bogo ops # msync-bytes 256M # allocate 256M per mremap stressor # # shm stressor options: # start N workers that open and allocate shared memory objects # using the POSIX shared memory interfaces. By default, the test # will repeatedly create and destroy 32 shared memory objects, # each of which is 8MB in size. # shm 0 # 0 means 1 stressor per CPU # shm-ops 1000000 # stop after 1000000 bogo ops # shm-bytes 8M # size of each shared memory object # shm-objs 32 # number of shared memory objects created # # shm-sysv # start N workers that allocate shared memory using the System V # shared memory interface. By default, the test will repeatedly # create and destroy 8 shared memory segments, each of which is # 8MB in size. # shm-sysv 0 # 0 means 1 stressor per CPU # shm-sysv-ops 1000000 # stop after 1000000 bogo ops # shm-sysv-bytes 8M # size of each shared memory segments # shm-sysv-segs 32 # number of shared memory segments created # # stack stressor options: # start N workers that rapidly cause and catch stack overflows by # use of alloca(3). # stack 0 # 0 means 1 stressor per CPU # stack-ops 1000000 # stop after 1000000 bogo ops # stack-fill # zero stack to force pages in # # stackmmap stressor options: # start N workers that use a 2MB stack that is memory mapped onto # a temporary file. A recursive function works down the stack and # flushes dirty stack pages back to the memory mapped file using # msync(2) until the end of the stack is reached (stack overflow). # This exercises dirty page and stack exception handling. # stackmmap 0 # 0 means 1 stressor per CPU # stackmmap-ops 1000000 # stop after 1000000 bogo ops # # tmpfs stressor options: # start N workers that create a temporary file on an available # tmpfs file system and perform various file based mmap operations # upon it. # tmpfs 0 # 0 means 1 stressor per CPU # tmpfs-ops 1000000 # stop after 1000000 bogo ops # # userfaultfd stressor options: # start N workers that generate write page faults on a small # anonymously mapped memory region and handle these faults using # the user space fault handling via the userfaultfd mechanism. # This will generate a large quanity of major page faults and also # context switches during the handling of the page faults. (Linux # only). # userfaultfd 0 # 0 means 1 stressor per CPU # userfaultfd-ops 1000000 # stop after 1000000 bogo ops # userfaultfd-bytes 16M # size of memory mapped region to fault # # vm stressor options: # start N workers continuously calling mmap(2)/munmap(2) and writ‐ # ing to the allocated memory. Note that this can cause systems to # trip the kernel OOM killer on Linux systems if not enough physi‐ # cal memory and swap is not available. # vm 0 # 0 means 1 stressor per CPU # vm-ops 1000000 # stop after 1000000 bogo ops # vm-bytes 256M # size of each vm mmapping # vm-hang 0 # sleep 0 seconds before unmapping # vm-keep # don't keep unmapping and remapping # vm-locked # lock pages into memory using MAP_LOCKED # vm-method all # vm data exercising method; use all types # vm-populate # populate (prefault) pages into memory # # vm-rw stressor options: # start N workers that transfer memory to/from a parent/child # using process_vm_writev(2) and process_vm_readv(2). This is fea‐ # ture is only supported on Linux. Memory transfers are only ver‐ # ified if the --verify option is enabled. # vm-rw 0 # 0 means 1 stressor per CPU # vm-rw-ops 1000000 # stop after 1000000 bogo ops # vm-rw-bytes 16M # size of each mmap'd region per stressor # # vm-splice stressor options: # move data from memory to /dev/null through a pipe without any # copying between kernel address space and user address space # using vmsplice(2) and splice(2). This is only available for # Linux. # vm-splice 0 # 0 means 1 stressor per CPU # vm-splice-ops 0 # stop after 1000000 bogo ops # vm-splice-bytes 64K # transfer 64K per vmsplice call