New stressors
- dentrycache - negative dentries dentry cache stressor
- epollmany - many nested epoll file descriptors stressor
- fp-subnormal - float/double/long double subnormal stressor
- hugepage - huge page merging and splitting stressor
- spec-rollback - speculation branch prediction rollback stressor
New options
- --bad-ioctl-alldev - force exercising all devices (bad-ioctl stressor)
- --branch-jumps - specify number of branches to perform (branch stressor)
- --cache-badpage - cache flush on an unmapped page (cache stressor)
- --copy-file-io-bytes - specify copy-file-range I/O copy size (copy-file stressor)
- --dentrystat - periodically shows the directory entry cache (global option)
- --dentry-negative - create negative dentries (dentry stressor)
- --daemon-bloat option to simulte memory usage (daemon stressor)
- --dev-alldev - option to force exercising all devices (dev stressor)
- --no-madvise-opts - disable madvise advise on mmap/munmaps (global option)
- --ovpn-tunnel - two-endpoint DCO data path (ovpn stressor)
- --pagescatter-numa - mbind pages to NUMA nodes (pagescatter stressor)
- --vm-nt - non-temporal store/load option (vm stressor)
Many thanks to the following sponsors of the project (in alphabetical order)
Bruce Underhill (Codethink)
Chris Wayne
Gilbert Morgan
ELISA https://elisa.tech - Platinum sponsor
Premday https://premday.org - Platinum sponsor (NEW)
Sponsorship link: https://github.com/sponsors/ColinIanKing
Notable bug fixes
-
stress-sem-sysv: --verify "corrupted bogo-ops counter" from concurrent counter updates in forked children - #657
-
Makefile: misleading 'readelf' message and removed OBJDUMP variable - #656
-
--fp-misc: bogus values in 'fail:' messages and typo in help text - #645
-
--far-branch: memory mapped file needs x-permission (at least) on Cygwin - #644
-
Possible missed MSG_NOSIGNAL in stress-fd-race - #643
-
--exec: fails if 'program_invocation_name' is used and the program has been found in - #642
Detailed Changelog
Author: Benjamin Leggett
- core-cpu: enable AVX-512 if the CPU actually has it, not by CPU model assumption
Author: Christian Franke christian.franke@t-online.de
- Makefile: avoid misleading message 'git: No such file or directory'
- github workflows: ci-builds: change FreeBSD build from cross to native
- github workflows: ci-build: update GitHub actions from v4 to v7
Author: Gianmarco De Gregori
- stress-ovpn: drive the remaining peer-delete reasons
- stress-ovpn: exercise the tunnel data path over IPv6 as well
- stress-ovpn: reap each tunnel endpoint with a deadline of its own
- stress-ovpn: tell the cycle failure reasons apart
- stress-ovpn: work the peer table from a second process
- stress-ovpn: let a share of cycles lose the tunnel
- stress-ovpn: churn the peer table while the tunnel carries traffic
- stress-ovpn: report the kernel's own per-peer byte counters
- stress-ovpn: run the tunnel over the DCO TCP transport too
- stress-ovpn: add --ovpn-tunnel, a two-endpoint DCO data path
- stress-ovpn: bound the wait for an rtnetlink reply
- stress-ovpn: gate the stressor on the ovpn uapi, not on the header
- stress-ovpn: fix wrong entries in the exercises table
Author: Zhaolong Zhang
- stress-unlink: fix fd leak on hard link paths
Author: Colin Ian King
- stress-bad-altstack: remove small stack case
- stress-bad-altstack: use a stack with PROT_NONE guard pages
- stress-vma: add missing pthread_join post pthread_cancel
- stress-pseek: add missing pthread_join post pthread_cancel
- stress-hugepage: add missing pthread_join post pthread_cancel
- stress-tlb-numa: add missing pthread_join
- stress-*: fix race in shared s_pids->pid assignment
- stress-sem-sysv: fix race in shared s_pids->pid assignment
- stress-copy-file: fix memory leak on error exit path
- README.md: remove -j 10 from make example
- stress-kcmp: declare label 'again' only when it is required
- stress-xattr: improve speed of determining max xattr length
- stress-fp-subnormal: fix computation random ordering between r0 and r1
- stress-fp-subnormal: use DBL consts when long double size is same as double for ppc64
- stress-x86cpuid: add some non-Intel CPUID feature registers
- core-stack: voidify return from fflush()
- test/test-libacl: array aio should be acl
- core-stack: voidify return from printf
- stress-ng: voidify return from printf
- stress-fractal: voidify return from printf
- core-madvise: voidify return from fprintf
- core-parse-opts: voidify return from fprintf
- core-resctrl: voidify return from fprintf
- stress-ng: voidify return from fprintf
- stress-plugin: voidify return from fprintf
- Revert "stress-insertionsort: unroll search loop"
- core-madvise: make qsort string compare function static, use shim_strcmp
- stress-funcret: use shim wrapped math functions
- stress-pagescatter: check for HAVE_MPROTECT if mprotect() is being called
- core-mmap: check for HAVE_MADVISE if madvise() is being called
- stress-sigsegv: Fix typo, NetNBSD -> NetBSD
- stress-sigstop: add build time check for SA_SIGINFO
- stress-daemon: add --daemon-bloat option to simulte memory usage
- stress-copy-file: add --copy-file-io-bytes option
- core-madvise: add --no-madvise-opts option
- stress-branch: initialize branch_jmps to zero
- stress-fp-subnormal: use DBL consts when long double size is same as double for ppc
- stress-fp-subnormal: use DBL consts when long double size is same as double
- stress-hugepage: don't use massive pages for 32 bit systems
- stress-cachehammer: add missing const on pointer cast
- Makefile: fix misleading readelf message and removed OBJDUMP variable
- stress-sysfs: rename os_release to linux_release
- stress-ovpn: add build time check for HAVE_ATOMIC_STORE_N
- stress-fp-subnormal: add new stressor to exercise floating point subnormals
- stress-fp-misc: fix short help typo: "fp_misc" -> "fp-misc"
- Manual: minor typesetting improvements
- stress-af-alg-defconfigs: add more crypto configs from Linux 7.2
- Manual: add note about UDP-Lite being removed from Linux 7.1
- stress-clone: add CLONE_AUTOREAP clone flag
- Manual: add more explanation to the --agrressive option
- bash-completion: add --branch-jumps
- stress-bad-ioctl: remove division from buf_page1 calculation
- Manual: Fix missing .TQ in dentrycache title
- stress-branch: add --branch-jumps option and double branch targets
- stress-bad-ioctl: break ioctl rd and wr into to functions
- stress-ng: add hotplug feature flag
- stress-cgroup: read and write back numeric cgroup file values
- stress-cgroup: read cgroup files from directory contents
- stress-dentry: break variable declarations into two lines
- stress-dev: add --dev-alldev option to exercise all devices
- stress-bad-iocl: add --bad-ioctl-alldev option to exercise all devices
- stress-bad-ioctl: improve per-ioctl timeouts
- stress-bad-ioctl: use random mask on random ioctl commands
- stress-bitops: fix log2(0) case
- stress-cpu: add various constifications
- stress-copy-file: make wr_size const
- stress-cachehammer: add some variable constifiations
- stress-binderfs: break variables into multiple lines
- stress-bad-ioctl: break variables into multiple lines
- stress-atomic: minor code clean up
- stress-af-alg: break up declarations across lines
- stress-acl: break setacl, getacl to separate lines
- stress-bitops: use builtin to generate optimal log2(n)
- stress-strnum: use shim_strncmp instead of vanially strncmp
- core-builtin: add and use built in shim wrapper for strcspn
- stress-insertionsort: unroll search loop
- stress-fibsearch: unroll ininitial loop
- stress-tree: unroll btree data copying loops
- stress-tree: add RESTRICT hints to btree func args
- stress-tree: change order of nodes and values in btree
- all: fix a handful of typos and spelling mistakes
- stress-zlib: replace 32 bit math with 16 bit for ascii digits generator
- stress-uprobe: fold nested if statements into one if statement
- core-parse-opts: remove extraneous space in error message
- core-cpu-cache: replace " with ' in error message
- core-affinity: fix grammar (missing ,) in error message
- core-builtin: add and use built in shim wrapper for strrchr
- core-builtin: add and use built in shim wrapper for strlen
- core-builtin: add and use built in shim wrapper for strchr
- stress-fp: unroll some smaller loops, improves performance
- core-builtin: add and use built in shim wrapper for strstr
- core-builtin: add and use built in shim wrappers for strcmp and strncmp
- Makefile.config: add build-time detection for builtin strcmp and strcmp
- core-ftrace: optimize ftrace parsing
- stress-chroot: fix failure return variable ret defaults
- stress-bubblesort: let compiler select number of loops to unroll
- stress-bad-altstack: exercise illegal last page as stack address
- stress-sigpipe: rework nested if statements into 1 if statement
- core-helper: replace stress_redo_fork with stress_retry_fork
- stress-vm: Fix spelling mistake "stroes" -> "stores"
- README.md: update contributor list
- stress-signet: ensure t is initialized to 0.0 for finish exit path
- stress-mmaptorture: ensure n is initialized for mappings_unmap exit path
- stress-lockbus: initialize count and double at declaration time
- stress-opcode: fix CLOBBERED for ops_ptr for older gcc flavours
- stress-dentrycache: use shim_strlcat instead of strlcat
- stress-*: clean up messages, use '%s' for filenames, make messages more consistent
- stress-shm: make child always send a termination message on return
- stress-shm: add more pipe related information in read errors
- stress-cgroup: add more information on why fsopen failed
- Manual: clean up some stressor titles
- Makefile: don't echo LDFLAGS, it's not useful
- Makefile: add duplicated all: target
- Makefile: replace MACHINE with ARCH, remove Makefile.machine
- stress-atomic: fix incorrect 2nd arg of atomic_store_n
- stress-hugepage: use per-arch allocation sizes for best match for THP
- stress-*: remove hot-package flag from stressors that are not so hot
- stress-pagescatter: show free memory resources on mmap failure
- stress-spec-rollback: show free memory resources on mmap failure
- core-memory: return 0 when memory info is correctly fetched
- stress-hugepage: show free memory resources on mmap failure
- test/test-atomic_load_n: ensure val is read
- stess-vm: remove redundant initialization of ptr
- test/test-atomic_store_n: fix incorrect 2nd arg of test call
- stress-dentrycache: stress_dentrycache_stats_max: make arg d1 const
- stress-ng: fix pause option, actually get the setting
- README.md: update contributor list
- stress-hugepage: optimize method offset functions
- stress-hugepage: minor code clean ups
- stress-hugepage: add --hugepage-method option to select pages to split on
- stress-hugepage: fix typos in short help
- stress-spec-rollback: clean up pedantic build warning
- bash-completion: add missing completion strings
- stress-dentrycache: add short help for dentrycache-method option
- core-opts: remove extraneous newline
- stress-hugepage: add more feature flags
- stress-hugepage: clean up initialization options
- stress-hugepage: add a huge page merging and splitting stressor
- stress-epollmany: fix short help
- stress-dentrycache; use shim_getxattr instead of getxattr
- stress-epollmany: many nested epoll file descriptor stressor
- CITATIONS.md: add another citation reference
- stress-spec-rollback: fix up feature flags
- stress-led: unconstify token
- stress-spec-rollback: add new speculation branch predicition rollback stressor
- core-mwc: add stress_mwc128 for uint128 types, refactor code
- stress-dentrycache: rework error return for open accesses
- stress-rotate: remove loop unrolling
- stress-ng: fix jobfile timeout handling
- Manual: add missing SIGSEGV in rlimit stressor description
- stress-regs: add bitflip for x86 mmx and sse registers
- Manual: Replace "once" with "when" to clarify actions
- Manual: update number of branches taken for --goto stressor
- stress-dentrycache: add ENOENT error verification
- stress-dentrycache: periodically get latest maximum dentry stats
- stress-dentrycache: fix typo "allocted" -> "allocated"
- Revert "stress-dentrycache: remove unncessary yield points"
- core-vmstat: add --dentrystat option
- stress-ng: use relaxed lock acquire on metrics find
- stress-dentrycache: remove unncessary yield points
- core-filesystem: improve stress_fs_dentry_state_get to get all fields
- stress-dentycache: move count increment after mask check
- stress-dentrycache: don't use hex chars, use first 16 alphabet letters
- core-filesystem: move dentry-state reading into core-filesystem
- stress-dentrycache: use getxattr to access a negative dentry
- stress-dentrycache: exercise dentry cache using negative dentries
- Makefile: fix typo "built" -> "build"
- stress-quota: typedef the struct shim_nextdqblk_t
- stress-link: remove two empty lines
- stress-l1cache: unconstify val, it's modified in stress_l1cache_ln2
- stress-goto: double goto targets, doubles branch misses
- stress-dir: add negative dentries access to directory
- core-shim: simplify the shim_unvolatile_ptr implementation
- stress-bubblesort: minor variable re-ordering optimization
- core-shin: simplify the shim_unconstify_ptr implementation
- stress-affinity: make parent change child cpu affinity in pin mode
- stress-xattr: exercise large/small xattr size transitions
- stress-xattr: bail out of xattr creation loop when ENOSPC is reached
- Manual: add sporsor link
- stress-cache: ensure n_flags is initialized
- stress-atomic: account for unimplemented atomic ops
- core-mmap: constify various function arguments
- core-limit: stress_limit_set: constify argument resource
- core-helper: update prototype stress_log2
- core-ignite-cpu: constify argument in static helper function
- core-ftrace: constify arguments in static helper functions
- core-helper: stress_log2: constify arguement n
- core-helper: stress_uint64_to_str: constify arguements
- stress-pagescatter: fix end pointer calculation
- core-ops: add empty lines between different stressor options
- stress-cache: add --cache-badpage option to cache flush on a bad page
- core-mmap: replace division with shift
- stress-pagescatter: constify n
- stress-cache: remove space in OPT_cache_clwb field
- stress-cache: perform bad page cache flushing less frequently
- core-shim: improve cases covered for shim_cacheflush
- Manual: update memthrash copy128 and copy128nt descriptions
- stress-pagescatter: add register hint on pointer ptr
- stress-memrate: update bogo-ops on each memrate method invocation
- core-builtin: remove duplicate shim_lgammal, improve lgammal and tgammal
- stress-vm: add wrappers for systems w/o stress_nt_{store|load} helpers
- stress-timermix: fix GNU/HURD build failure
- CITATIONS.md: add two more references
- stress-fp-misc: fix error message values for infinite and zero fpclassify calls
- stress-fp-misc: fix typo in fp-misc-ops short help
- Makefile: add Intel icx compiler alternative code for a range of CPUs
- stress-dentry: add --dentry-negative option to create negative dentries
- stress-dentry: add metrics on negative and used dentries
- stress-opcode: add more x86 prefix opcodes
- stress-vm: add --vm-nt non-temporal store/load option
- stress-atomic: add load_n and store_n atomic operations
- stress-spinmem: use load_n and store_n atomics
- stress-pagescatter: fix { } on if statement
- stress-ng: rework clobbering macros
- stress-far-branch: add missing S_IXUSR on mmap'd file open
- stress-fd-race: use MSG_NOSIGNAL for sendmsg where possible
- stress-pagescatter: add --pagescatter-numa option
- stress-memthrash: drop copy128nt back to copy128 if non-temporal load/stores not available
- stress-memthrash: add a non-temporal load/store copy128 variant
- stress-ng: use stressor_info_t instead of struct stressor_info
- core-lock: use stress_lock_t instead of struct stress_lock
- core-helper: fix typo in function prototype args
- stress-ng: minor stress_memory_info code clean-ups
- core-helper: stress_load_average_get: pass load average as a type
- core-cpu-freq: pass cpu freq data in a stress_cpu_freq_get_t type
- core-helper: use executable name /proc/*/exe for Cywgin
- core-helper: check for invalid filename
- stress-exec: use a more meaningful file name in the error messages
- debian/control: linux-any is required for libnl-3-dev