Improvements
- More progress feedback when sending ^C (SIGINT)
- Clean up manual
- Improved portability
New Options
--spinmem-yield - force sched_yield() calls in spinmem loops
--ioport-port - specify x86 I/O port to exervises
--stream-prefetch - enable prefetching on stream reads
--llc-affinity-size - specify the lower-level-cache size
--far-branch-pageout - force pages out on far branch instruction pages
Detailed changelog
- debian/control: fix missing , in build dep list
- stress-utime: use PRIdMAX format specifier for intmax_t
- core-numa: fix arg order in null-op stress_numa_randomize_pages
- stress-shm-sysv: use PRIxPTR format specifier for intptr_t types
- stress-easy-opcode: add HAVE_MPROTECT check
- stress-mmapcow: add build time check for madvise support
- stress-fd-abuse: fix #ifdef checks for posix_fadvise
- READMD.md: update build notes for Minix, need binutils
- stress-cyclic: add missing #ifdef guards on tidy label
- core-shim: replace #elif with #else
- stress-utime: add missing #ifdef guards on stress_utime_str
- stress-utime: reduce scope for variable t
- stress-fd-abuse: remove in6addr_any for minix builds
- stress-cyclic: voidify ret if it is not used
- core-shim: add shim_enosys call for shim_setgroups
- core-cpu-cache: add stress_cpu_x86_has_clfsh check for clfsh opcode
- core-cpu-cache: call shim_cacheflush if __builtin___clear_cache is not supported
- README.md: add another kernel improvement commit link
- stress-module: use %zu format specifier for size_t type
- stress-file-ioctl: cast int value to off_t to silence static analysis warnings
- stress-fallocate: move use_sync declaration to inside #ifdef construct
- stress-cpu-sched: reduce scope of variable timer_ret
- core-signal: reduce scope of array buf
- core-filesystem: reduce scope of array path
- core-madvise: reduce scope of ptr, make it a uint8_t * type
- stress-mmaphuge: cast int value to off_t to silence static analysis warnings
- stress-mmaptorture: make read-only array hex static const
- CITATIONS.md: add another refererence link
- stress-eigen: use %zu format specifier for size_t type
- stress-physmmap: add metrics for the max number of pages mmap'd
- stress-pci: replace "unknown" with "untested"
- core-mwc: defer assigment of pointer ptr32end
- core-filesystem: defer assignments of ptr and end
- core-shared-cached: use %zu format specifier for size_t type
- Manual: rework the chi squared close to 1.0 description of a good hash
- Manual: reference manual sections for system calls or library calls
- Manual: replace stress-ng with stress-ng
- Manual: replace +/- with (+-
- README.md: add another kernel bug reference
- stress-syscall: make unused args in prctl zero
- stress-syscall: pass "" for special and a page for addr
- stress-sigurg: zero atmark flag before SIOCATMARK ioctl call
- stress-sctp: ensure flags is zero before calling sctp_recvmsg
- stress-schedmix: add bounds check on max fd for select family calls
- stress-pipeherd: ensure data is all zero, cleanup valgrind warning
- stress-numa: pass zero size for empty sets
- stress-monte-carlo: make random buffer pool static
- stress-mmap: ensure all context field are initialized
- stress-fileface: fix index typo, set tv[1].tv_sec and not tv[0].tv_sec
- stress-fifo: unmap if mmap'd address is not MAP_FAILED
- stress-crypt: limit orig_setting seed and remove seed[]
- stress-mpfr: free variable zero, fixes memory leak
- stress-swap: update comment about vdso
- stress-fork: update comment about vdso
- core-thrash: update vdso comment
- stress-pthread: set continue flag to false when stopping stressor threads
- stress-sigurg: add missing ioctl name in error message
- stress-handle: add another skip if system call is not implemented
- stress-handle: skip stressor of system call is not implemented
- stress-shm-sysv: zero errno before calling system calls that may succeed
- stress-module: use shim_strlcat instead of strlcat
- stress-syscall: only declare msg for SENDMSG and RECVMSG
- core-mwc: cast args to rol32/ror32 to uint32_t to fix gcc-15.1.1 build warning
- stress-ng.h: add deprecated warnings for strlcpy and strlcat
- core-filesystem: use shim_strscpy instead of strlcpy
- core-filesystem: increase buf size to avoid any truncation
- core-stack: add missing include <sys/auxv.h>
- stress-fractal: use __atomic_fetch_add_4 for 32 bit int addition
- stress-pseek: use PRIu64 to print uint64_t value
- stress-msync: use PRIu64 to print uint64_t value
- stress-pseek: use uint64_t for pseek_io_size
- stress-msync: using uint64_t instead of size_t for file size
- stress-mmap: add FreeBSD MAP_ALIGNED_SUPER mmap flag
- core-madvise: fix addition of void * pointer, cast to uintptr_t first
- stress-gpu: use %d instead of %u to sscanf an int
- core-shim: fix incorrect #endif placement
- core-parse-ops: cast percent to uint64_t before comparing to integer constant
- stress-ng: remove unused variable kill_count
- stress-gpu: make stress_get_gpu_freq_mhz static
- stress-sysfs: forgot to check in changes
- core-mmap.h et al, re-organise header includes
- test-libpthread: include signal.h
- stress-far-branch: clean up some pedantic warnings
- core-shared-cache: include core-shared-cache.h
- core-prime: include core-prime.h
- core-mmap.h et al, re-organise header includes
- stress-sock: only declare vec, j and msghdr when required
- stress-sock: only declare vec and i when required
- stress-ng: cast uid_t to intmax_t when printing debug messages
- core-builtin: fix macro typo for shim_tanhl
- Makefile.config: add build time check for tanhl
- core-builtin: add workaround for missing tanhl
- Makefile.config: add build time checks for mknod()
- stress-syscall: add build time check HAVE_GETGROUPS
- stress-syscall: add build time check HAVE_UTIMES
- stress-utime: declare timevals if HAVE_UTIMES is defined
- stress-utime: add HAVE_UTIMES check
- Makefile.config: add build time check for utimes()
- Makefile.config: add build time detection for srandom()
- Makefile.config: add build time detection for random()
- core-helper: add stess_no_return no return function helper
- stress-fifo: move declaration of wrap_mask
- Makefile.config: add build time detection of getgroups()
- stress-sysbadaddr: use shim_timezone_t instead of struct timezone
- stress-sysbadaddr: add missing <sys/select.h>
- stress-rmap: add build time check for MS_ASYNC and MS_SYNC
- Makefile.config: add build-time detection of mkfifo
- stress-far-branch: voidify offset param
- stress-urandom: include <sys/select.h>
- test-libpthread: add checks for pthread_cancel, pthread_kill
- stress-fd-abuse: add missing <sys/select.h>
- stress-dev: include missing <sys/select.h>
- stress-*: add build time check for <sys/file.h>
- Makefile.config: add build time check for <sys/file.h>
- stress-cyclic: include <sys/select.h>
- stress-iomix: add build time check for MS_ASYNC and MS_SYNC
- core-shim: add build-time check for setgroups
- Makefile.config: add build-time check for setgroups()
- core-shim: include <sys/select.h> for select() call
- stress-vm: add build time check for MS_SYNC
- stress-mmap: add build time check for MS_ASYNC and MS_SYNC
- stress-vma: use shim_munlock instead of munlock
- stress-vma: use shim_msync() instead of msync()
- stress-ng: replace vfork with fork if vfork does not exist
- stress-*: use shim_pause() instead of pause()
- core-shim: make shim_pause match the pause semantics
- core-shim: add build time detection of pause, add shim_pause wrapper
- stress-verify: use shim_sync()
- stress-loop: use shim_sync()
- stress-touch: use shim_sync()
- stress-syscall: use sync directly if HAVE_SYNC is defined
- stress-open: use shim_sync()
- stress-mknod: use shim_sync()
- stress-mcontend: use shim_sync()
- stress-iomix: use shim_sync()
- stress-io: use shim_sync()
- stress-fanotify: use shim_sync()
- stress-dirdeep: use shim_sync()
- stress-dir: use shim_sync()
- stress-dentry: use shim_sync()
- core-shim: add shim_sync wrapper for sync
- core-builtin: add shim wrapper for round()
- core-builtin.h: add build-time check for roundl
- core-shim: add build time check for struct timezone; replace with shim
- core-helper: workaround limited tick functionality in FiwixOS
- core-builtin: provide builtin-check for tanl
- Makefile.config: add build-time check for tanl, fix sinl
- stress-sock: add build-time check for recvmsg
- stress-sock: add build-time checks for sendmsg and recvmsg
- stress-fd-abuse: add build-time checks for sendmsg and recvmsg
- stress-syscall: add built-time checks for sendmsg and recvmsg
- Makefile.config: add build time check for recvmsg
- Makefile.config: add build time check for sendmsg
- stress-fractal: explicitly use __atomic_fetch_add_8 on uint64_t value
- stress-syscall: add build-time check for HAVE_NICE for nice system call
- stress-syncload: use shim_nice rather than nice
- stress-shm-sysv: use shim_nice rather than nice
- stress-sock: add build-time checks for SOL_SOCKET
- stress-mmaptorture: add build time check for siglongjmp
- stress-mmap: add build time check for siglongjmp
- stress-misaligned: add build time check for siglongjmp
- stress-malloc: add build time check for siglongjmp
- stress-syscall: add build-time check for SOL_SOCKET
- stress-stack: add build time check for siglongjmp
- stress-spinmem: add build time check for siglongjmp
- stress-sock: add build-time checks for SOL_SOCKET
- stress-sigsegv: add build time check for siglongjmp
- stress-signest: add build time check for siglongjmp
- stress-sigill: add build time check for siglongjmp
- stress-sigfpe: add build time check for siglongjmp
- stress-sigbus: add build time check for siglongjmp
- stress-rlimit: add build time check for siglongjmp
- stress-cyclic: add build time check for siglongjmp
- stress-cachehammer: add build time check for siglongjmp
- stress-fd-abuse: add missing build-time checks
- stress-cache: add build time check for siglongjmp
- stress-zlib: add build-time checks for various socket #defines
- stress-udp: add build-time checks for various socket #defines
- stress-tree: add build time check for siglongjmp
- stress-sockmany: add build-time checks for various socket #defines
- stress-sockpair: add build-time check for MSG_OOB
- stress-sockabuse: add build-time checks for various socket #defines
- stress-sock: add built-time checks for various socket #defines
- stress-revio: fix typo: BUF_ALIGNEMENT -> BUF_ALIGNMENT
- stress-shellsort: add build time check for siglongjmp
- stress-radixsort: add build time check for siglongjmp
- stress-qsort: add build time check for siglongjmp
- stress-priv-instr: add build time check for siglongjmp
- stress-prime: add build time check for siglongjmp
- stress-peterson: add build time check for siglongjmp
- stress-nop: add build time check for siglongjmp
- stress-mergesort: add build time check for siglongjmp
- stress-memrate: add build time check for siglongjmp
- stress-lockbus: add build time check for siglongjmp
- stress-list: add build time check for siglongjmp
- stress-insertionsort: add build time check for siglongjmp
- stress-heapsort: add build time check for siglongjmp
- stress-dekker, stress-fault: fix typo "sort" -> "support"
- stress-get: add build time check for siglongjmp
- stress-fault: add build time check for siglongjmp
- stress-dekker: add build time check for siglongjmp
- stress-bubblesort: add build time check for siglongjmp
- stress-bitonicsort: add build time check for siglongjmp
- stress-bigheap: add build time check for siglongjmp
- Makefile.config: Add build-time check for siglongjmp
- core-sched: fix sched_priority argument
- core-resources: don't use AF_INET6 if it is not defined
- core-net: don't use AF_INET6 if it is not defined
- core-memory: don't use sysinfo for FiwixOS
- core-madvise: fix voidification of unused func args
- core-helper: don't use loadavg if SI_LOAD_SHIFT is not defined
- stress-loadavg: set number of threads to 4 for --minimize option
- stress-ng: throttle spamming of output when user is hammering SIGINT
- stress-ng: provide feedback of stressor termination progress on SIGINTs
- Manual: be consistent with large numbers, don't use , to mark off thousands
- core-mwc: fix assignment with ^=
- stress-ng: print pids as intmax_t cast types
- core-mwc: add more mixing to spread random seed bits around
- Manual: add another example
- stress-spinmem: add --spinmem-yield option to force scheduling yields
- stress-spinmem: set verify to none as there is no explicit verification
- stress-spinmem: minor source cleanup
- stress-spinmem: add 128 bit spinmem support
- core-config-check: check for broken x86-64 lahf instruction
- core-cpu: add more CPUIDX EAX=80000000 bits and lahf_lm check
- core-ftrace: make stress_ftrace_start return void, clean up ftrace comments
- core-asm-ret.h: add warn unused attribute on stress_asm_ret_supported
- core-parse: fix percentage file size args based on --temp-file option
- core-filesystem: stash temp path into a stress-ng name variable string
- stress-sleep: ignore EINTR on early sleep terminations
- CITATIONS.md: Add another paper link
- stress-hdd: report extents per file
- stress-ioport: add --ioport-port option to select the I/O port to use
- core-filesystem: report /dev name if we can't resolve device model
- stress-ng: add missing new line
- stress-fiemap: remove empty line
- stress-fd-race: remove two blank lines
- stress-iomix: inline function stress_iomix_rnd_offset
- stress-exit-group: inline helper function keep_running
- stress-dir: inline some helper functions that are called just once
- core-mincore: perform madvise in two calls
- stress-cgroup: inline stress_cgroup_remove_nl
- stress-cachehammer: make hammer_valid PURE
- stress-numa: fix typo: shiffle -> suffle
- core-madvise: make stress_madvise_pid_all_pages use an array of advice
- README.md: Add a link to kernel commit that used stress-ng for testing
- stress-syscall: set errno to zero before nice system call
- stess-far-branch: remove redundant stress_exit_status call
- stress-gpu: ensure error return is passed down to caller
- stress-far-branch: ensure file fd is closed on error return paths
- stress-gpu: break from main stressor loop on no resource error
- stress-shm-sysv: remove redundant goto at end of for-loop
- stress-xattr: fix tmp_fd file open check
- stress-cacheline: reference s_pids if s_pids is non-null
- stress-xattr: exercise getxattrat, listxattrat, removexattrat and setxattrat
- stress-shm-sysv: improve 'random' key find mechanism
- stress-ng: remove sched and io priority setting from main parent
- core-opts: forgot to check in OPT_llc_affinity_size
- core-cpu-cache: add RISC-V device tree parsing for cache information
- stress-llc-affinity: add --llc-affinity-size option to specify LLC cache size
- stress-inode-flags: exercise a range of attr flags
- stress-io-uring: just memset sqe before each io-uring op
- stress-io-uring: add support for HAVE_IORING_OP_FTRUNCATE
- Manual: format mu using (*m for microseconds
- stress-inode-flags: exercise file_getattr and file_setattr
- core-shim: add shim_file_getattr and shim_file_setattr
- core-shim: add Linux 6.16 file_getattr and file_setattr syscall shims
- core-shim: Add support for FALLOC_FL_WRITE_ZEROES
- stress-fallocate: Add support for FALLOC_FL_WRITE_ZEROES
- stress-shm-sysv: distribute keys evenly across instances and segments
- CITATIONS.md: add another paper link
- Manual: Fix typo "SIGSEV" -> "SIGSEGV"
- stress-procfs: avoid concurrent access on /proc/$PID/{maps|ctty} on Cygwin
- stress-far-branch: only check for check_flag if a complete round is made
- stress-far-branch: fix mmap'd file pages
- stress-ng: set wexit_status on fatal signals
- stress-stream: reformat macros, minor code style changes
- stress-stream: remove ALWAYS_INLINE
- stress-stream: add --stream-prefetch option
- stress-ng: rename getdents title to reflect the purpose
- stress-crypt: add bcrypt, bsdicrypt, descrypt and gost-yescrypt
- stress-cacheline: fix --sync-start process synchronization
- stress-cacheline: fix typo in comment, 116 -> 16
- stress-bitops: add another way to count bits using triple mask and shifts
- stress-module: only declare fd_in and fd_out for LZMA code path
- stress-module: decompress .ko.xz modules using liblzma
- core-mmap: move stress_mmap_populate from core-memory to core-mmap
- CITATIONS.md: replace deprecated lkp-tests link with commit sha
- core-shared-cache: move shared cache helpers to core-shared-cache
- core-cpu: add some more x86 cpu identifiers
- core-filesytem: minor code cleanups and optimizations
- stress-far-branch: cast ptr to void * for munmap call
- stress-far-branch: only declare stress_far_branch_pageout when required
- core-cpu-freq: add in missing sys/sysctl.h for BSD systems
- core-helper: add back sys/sysctl.h for BSD builds
- stress-far-branch: add MADV checks for label l1
- core-helper: remove redundant includes
- core-signal: move signal helpers to core-signal from core-helper
- core-filesystem: move filesystem helpers to core-filesystem from core-helper
- stress-gpu: silently discard MESA errors
- stress-gpu: move stress_get_gpu_freq_mhz to stress-gpu
- stress-gpu: rdirec MESA log messages to /dev/null
- core-prime: include math.h for systems without builtin_sqrt
- stress-far-branch: move label l2 to first statement
- core-mwc: move stress_uint8rnd4 from core-helper to core-mwc
- core-net: move stress_ipv4_checksum from core-helper to core-net
- core-capabilities: move capabilities related helper code into core-capabilities from core-helper
- core-prime: move prime related helper code into core-prime from core-helper
- core-memory: move memory related helper code into core-memory from core-helper
- stress-ng.h: include core-stack.h
- core-stack: include core-stack.h
- core-stack: more stack related helper code into core-stack from core-helper
- core-cpu-freq: move cpu freq specific code into core-cpu-freq.c
- stress-cachehammer: reference the correct count [4]
- stress-far-branch: rephrase number of file mapped functions
- stress-far-branch: report size of the functions
- stress-far-branch: flush I$ with shim_cacheflush call
- stress-far-branch: flush I$ after each text page has been created
- stress-far-branch: use correct index into funcs array
- Manual: correct the --verify output to match the current behaviour
- stress-far-brach: minor optimizations
- stress-far-branch: ensure 1/16 pages are file mmap'd
- stress-far-branch: 50% of time try 32 bit address for mmap'd pages
- stress-far-branch: add periodic branch shuffle
- stress-far-branch: add MADV_RANDOM and MADV_WILLNEED hints
- core-madvise: add stress_madvise_willneed to perform MADV_WILLNEED
- core-madvise: add stress_madvise_random to perform MADV_RANDOM
- core-madvise: rename stress_madvise_random to stress_madvise_randomize
- stress-exec: use libc fexecve exec call
- stress-far-branch: make 1 in 16 branch pages file backed mmappings
- stress-far-branch: pageout and offline main far-branch loop
- stress-far-branch: add pageout and softline of pages
- CITATIONS.md: add some more research paper links
- stress-filename: add readdir() filename sanity checking