Releases: ColinIanKing/stress-ng
V0.17.08
stress-ng V0.17.08 "consummate cpu crusher"
New stressors:
- fractal stressor (Naïve concurrent implementations of Mandelbrot and Julia set fractal generators)
- prime stressor (Prime search using GNU Multiple Precision Arithmetic Library for large integers)
- unlink stressor (Exercise concurrent racy unlinking of files)
New options:
- --yield-procs to specify number of child processes per stressor
- --prime-start N option to specify starting point of search
- --swap-self option to force self process pages out
- --fork-pageout option to force pages to be paged out
- --prime-progress option to periodically show prime finding progress
- --get-slow-sync option to force get stressor system calls to be called in sync
Important Fixes:
- Fix page overflow on edge cases of non-libc mergesort
- Ensure system call and test error failures are fully propagated to error status at end of stressors
Detailed Changelog:
[ruihongw]
- fix spelling of lsm_list_modules in Makefile.config
[Yiwei Lin]
- Fix unterminated cpu-stress if non 0% or 100% load
[Colin Ian King]
- Makefile: bump version
- stress-epoll: fix missing space after comma in error messages
- README.md: add another bug found by stress-ng
- stress-sigfpe: report SIGILL trap information when --verify is used
- stress-sigfpe: handle unexpected SIGILL signals
- stress-rtc: silently ignore RTC sys read EINVAL errors
- stress-rtc: don't fail on ENOENT errors
- stress-tsearch: remove double comma
- stress-rtc: fix error handling, don't fail on EINTR or EPERM
- stress-mergesort: remove MAP_32BIT
- stress-mergesort: fix out of bounds copy
- stress-unlink: use shim'd versions of fsync and fdatasync
- stress-swap: ensure opt_set_funcs and stress_set_swap_self are
declared for all builds - stress-io: fix build issues when HAVE_SYNCFS is not defined
- core-out-of-memory: move #define of WAIT_TIMEOUT to fix non-linux
builds - stress-judy: clean up variable shadowing warning
- stress*: Add compute to the --class option for high compute stressors
- stress-prime: fix spelling mistakes in comments
- stress-factal: fix spelling mistake of Mandelbrot
- stress-ng: fix --permute with checksum verification enabled
- stress-fractal: minor tweaks to reduce front end delays and improve
core utilization - stress*: Add search to the --class option for searching stressors
- Manual: remove duplicated comma
- stress-fault: fix fd leak on error path
- stress-fractal: add Mandelbrot and Julia set fractal stressor.
- stress-*: clean up errno handling
- core-ftrace: remove redundant initialization of pointer num
- core-klog: remove redundant initialization of pointer msg
- stress-yield: constify variable residual
- Manual: waitcpu: add more per-processor notes for waiting
instructions - stress-yield: add --yield-procs option, specify child processes per
stressor - stress-forkheavy: fix typo in comments forke -> fork
- Makefile: improve toolchain detection, fixes scan-build builds
- stress-pidfd: ensure return code in rc is returned to parent
- stress-mq: ensure child rc status is returned to parent
- stress-judy: re-work rc status so the default is EXIT_FAILURE
- stress-hsearch: ensure rc is set to EXIT_SUCCESS for success path
- stress-file-ioctl: assign rc to EXIT_NOT_IMPLEMENTED and not ret
- stress-close: remove redundant assignments to rc
- core-mwc: remove unused 32 bit mwc implementation
- Makefile.config: fix float checks, need LIB_MATH not LIB_M
- stress-prime: add --prime-start N option to specify starting point
of search - stress-fork: add #ifdef check around MADV_PAGEOUT
- stress-swap: add --swap-self option to force self process pages out
- stress-fork: make --fork-pageout more aggressive, do all maps
- stress-prime: remove empty line
- stress-fork: add --fork-pageout option to force pages to be paged out
- stress-prime: add hourly prime rate in --prime-progress output
- README.md: update contributors list
- stress-prime: move variables and a function to clean up build warning
- stress-enosys: fix typo: SYS_lsm_modules -> SYS_lsm_list_modules
- Manual: clarify the time between each prime progress update
- core-builtin: fix macros and shims
- Manual: add new --primes-progress option, fix prime-ops name
- core-log: don't report timestamp if localtime_r does not exist
- stress-prime: add --prime-progress option to periodically show prime
finding progress - stress-prime: add long integer prime computations stressor
- stress-factor: fix short description of stressor
- stress-unlink: add end of test check in link phase, add missing
deinit state - stress-unlink: make file syncs less frequent
- core-config-check: minor re-phrasing of scaling governors note
- stress-unlink: remove some whitespaces
- stress-unlink: use random open flags
- stress-unlink: add occasional fd sync'ing and data syncing
- Manual: correct the --vm-bytes description.
- stress-unlink: add new stressor to exercise concurrent racing unlink
calls - stress-dev: add a few more HID specific ioctls
- stress-dev: add linux frame buffer /dev/fb* ioctl exercising
- core-version.h: wrap macro parameters with ( )
- core-io-priority: wrap macro parameters with ( )
- core-builtin: wrap macro parameters with ( ), align macros
- Manual: replace ',' with '|' in the --prio-inv-policy option
- Manual: replace ',' with '|' in --fd-fork-file option
- core-builtin: fix brackets on shim'd helpers shim_ccosl and
shim_csinl - stress-get: add --get-slow-sync option to force get system calls to
be in sync - stress-zlib: use shim wrapped sin function
- stress-remap: remove empty line
- stress-monte-carlo: use shim'd math functions
- core-builtin: add hyperbolic sin, cos float and double shim wrappers
- stress-*: constify variables
- core-helper: remove duplicated null check on gpu_freq
- stress-*: ensure EXIT_FAILURE is returned on failures
- stress-sockdiag: rename rc to ret and ret to rc
- stress-cacheline: ensure EXIT_FAILURE is returned on data corruption
- stress-bsearch: ensure EXIT_FAILURE is returned on data mismatches
- stress-ng: set success flag to false on EXIT_SIGNALED exits
- stress-bitonicsort: ensure EXIT_FAILURE is returned on data
mismatches - stress-bigheap: ensure EXIT_FAILURE is returned on memory failures
- stress-affinity: remove space
- stress-matrix-3d: ensure EXIT_FAILURE is returned on data mismatch
- stress-matrix: ensure EXIT_FAILURE is returned on data mismatch
- stress-ng: fix missing FAILED flag increment for EXIT_SIGNALED state
- stress-fma: increment b in add231 to force use of fma instruction
- stress-filename: make static array posix_allowed const
- stress-acl: make static array stress_acl_tags const
- stress-workload: add some constifications and UNLIKELY on an if
- stress-io-uring: improve termination by enabling various flags
- core-out-of-memory: give at least 2 minutes before giving up waiting
for OOMable child processes - stress-ng: bail out with EXIT_NO_RESOURCE on sched_settings_apply
call - stress-inotify: replace __s32 with int32_t
V0.17.07
stress-ng V0.17.07 "trusty task trasher"
Key Highlights:
- New powmath stressor (power math functions)
- New expmath stressor (exponent math functions)
- New logmath stressor (logarithmic math functions)
- New LSM stressor (exercise Linux LSM lsm_list_modules and lsm_get_self_attr system calls)
- New statmount stressor (exercise Linux statmount and listmount system calls)
- New --fma-libc option to use libc fma functions (if available)
- New --memhotplug-mmap option to exercising mmap/munap during memory hotplugging
- New walking flush vm stressor method to walk through memory doing writes followed by cache flushes
- New --mmap-stressful option to enable all --mmap options to make mmap stressor more stressful
Fixes:
- Porting fixes to support modern Solaris systems
- Improve vecshuf performance (regression due to using -O3 on gcc on vec ops)
Detailed changelog:
stress-ng (0.17.07-1) unstable; urgency=medium
[Stian Onarheim]
- core-stressors.h: Sort the stressor list
[Amit Singh Tomar]
- stress-vm: fix the stress_vm_check argument name
[Erik Stahlman]
- Remove write potentially outside of buffer
[Colin Ian King]
- Makefile: bump version
- Manual: fix table T{ T} around --eigen-method add-double
- core-shared-heap: double size of shared heap allocation slab
- core-helper: move gpu_freq null check to start of function
stress_get_gpu_freq_mhz - stress-zlib: negative read size check
- core-helper: move null ptr checks earlier in stress_get_meminfo
- core-helper: add #else path in stress_get_load_avg
- stress-fma: voidify return from stress_get_setting call
- core-helper: add endianness information
- stress-pty: break out of loop if EINTR occurs on pty open
- stress-access: set errno to 0 before access calls
- stress-filename: ignore ENOTSUP failures
- stress-msyncmany: break out of test loop if failed more than 5 times
- stress-filename: add ENOSUP error check for Solaris
- stress-clock: ignore EINTR for clock_nanosleep for Solaris
- stress-clock: ignore EINTR for clock_gettime for Solaris
- Add build check and use <sys/mkdev.h> for makedev() macro
- Makefile: enable compile/link garbage collection when GARBAGE_COLLECT
is set to 1 - stress-powmath: increase precision for float tests sum and result to
double - stress-logmath: increase precision for float tests sum and result to
double - stress-expmath: increase precision for float tests sum and result to
double - stress-fma: munmap pfma and not fma
- stress-x86syscall: make function wrap_dummy static
- core-helper: make function stress_fs_magic_to_name static
- stress-powmath: compare floating point values using difference and
precision - stress-logmath: compare floating point values using difference and
precision - stress-expmath: compare floating point values using difference and
precision - stress-enosys: fix system call name __NR_lsm_list_modules
- README.md: update contributor list
- Makefile.config: break functions into 1 line entries and sort them
- Makefile.config: break types into 1 line entries and sort them
- Makefile.config: break cpufeatures into 1 line entries and sort them
- Makefile.config: rename *_WCHAR to *_WCHAR_H to match header naming
- Makefile.config: break headers into 1 line entries and sort them
- core-helper: fix error return code, should be EINVAL
- stress-powmath: remove redundant cast on sum addition
- stress-expmath: remove redundant cast on sum addition
- stress-logmath: remove redundant cast on sum addition
- stress-cgroup: add missing wait for each fork'd child
- core-helper: make stress_fs_magic_to_name static
- core-time: manually inline stress_timespec_to_double into code
- core-perf: make stress_perf_stat_succeeded static
- stress-x86syscall: remove dummy_x86syscalls
- Makefile: add linker garbage collection to remove unreferenced
sections - core-helper: add some argument sanity checking
- stress-syscall: add maximum system call time in nanoseconds
- stress-syscall: add lsm_list_modules and lsm_get_self_attr system
calls - stress-enosys: add lsm_list_modules and lsm_get_self_attr system calls
- stress-powmath: add hypotenuse functions
- stress-fma: disable FP_FAST_FMA, FP_FAST_FMAF for now
- stress-mathlog: add logb, logbf and logbl exponent get libc functions
- stress-fma: add the --fma-libc option to use libc fma functions
- README.md: update number of tests
- stress-powmath: add power maths function exercising
- stress-vecshuf: for x86, reduce optimization levels to avoid STLF
- stress-vnni: add build time check for target clone avxvnni
- stress-memhotplug: make variable max non-clobberable by longjmp
- core-target-clones: remove need for gcc version check
- stress-vecshuf: remove OPTIMIZE3 setting
- stress-expmath: add exponential maths function exercising
- README.md: add a couple more paper references
- stress_vm_walking_flush_data: fix buffer overflow on last 7 bytes
- README.md: update contributors list
- stress-logmath: add logarithmic maths function exercising
- README.md: Add another publication link
- memhotplug: add --memhotplug-mmap option
- stress-prio-inv: ensure parent has higher priority than children
- stress-prio-inv: break kill and wait into separate phases
- README.md: add missing newline
- README.md: add some more upstream linux git commit references
- stress-acl: fix typo in unimplemented_reason string
- stress-lsm: exercise new LSM system calls lsm_list_modules and
lsm_get_self_attr - core-cpu: remove trainling white space
- stress-statmount: Add new stressor to exercise statmount and
listmount system calls - stress-file-ioct: exercise FS_IOC_GETFSSYSFSPATH
- stress-file-ioctl: add FS_IOC_GETFSSYSFSPATH ioctl
- stress-vm: add walking memory flush stress method
- core-cpu: add a couple more obscure CPU id strings
- stress-monte-carlo: add area of a unit squircle
- kernel-coverage: add --mmap-stressful option
- stress-malloc: add malloc_usable_size allocation size verification
- Makefile.config: filter out -Werror from CFLAGS
- core-perf: remove duplicated "Cgroup Switches" event
V0.17.06
New features:
- New fd-fork stressor, force copying of tens of thousands of file descriptors on fork() system calls
- New bitonicsort stressor: sort 32 bit integers using bitonic sort, exercises integer compare, copying/cache/memory.
- Add more signals in the nested signal signest stressor
- New --progress option to show --seq stressor progress and expected end of run time
- Add Arrowlake and Pantherlake CPU support for target clones gcc optimizations
- Add IRQ tasklet entry/exit events, IPI Raise event, swiotlb event to --perf option
- Add --crypt-method option to allow crypt stressor to be selected
- Add --fork-unmap option to fork stressor to force unmapping of shared libs to speed up forks
- Add --fpunch-bytes option to fpunch stressor to specify fpunch file size
- Add --vforkmany-bytes option to specify mmap size
- Add NUMA hit/miss metrics to numa stressor
Fixes:
- Fix aiol stressor race condition on termination of pending I/Os
- Fix race on peterson stressor with modern out-of-order execution ARM CPUs
Detailed changelog:
[Hsieh-Tseng Shen]
- Manual: fix a few typos
[Colin Ian King]
- Makefile: bump version
- stress-fd-fork: fix comment for STRESS_FD_DEFAULT
- stress-fd-fork: fix spelling mistake "discriptors" -> "descriptors"
- test/test-utime: zero buf
- test/test/test-pthread-setaffinity-np: zero cpuset
- stress-fork: voidify pid
- Makefile.config: ensure all CONFIG_LDFLAGS are passed through
LIB_ORDER filter - stress-sigsegv: ignore SEGV_ACCERR error check on OpenBSD
- stress-hsearch: typedef ACTION if we don't have native hsearch support
- Makefile.config: workaround a make issue on Nixos, add empty echo in
loop - stress-aiol: fix interrupted or end of stressing aiol waits with -1
return - stress-peterson: add mfence to fix failures on out-of-order ARM cpus
- stress-pci: report untested PCI rates as "unknown" rather than 0.00
- stress-ng.h: only define _FILE_OFFSET_BITS if it is not defined
- stress-signest: add some more signals, sort them in name order
- Makefile: add --cache-enable-all for slow-test-all and verify-test-all
- stress-chroot: fix placement of colon in chroot escape message
- stress-ng: add a few more percent wiggle room on end of run estimate
- stress-stream: improve memrate message
- stress-mq: add note to increase /proc/sys/fs/mqueue/queues_max for
linux - stress-kvm: report KVM kernel API as a debug message
- stress-dev: add notes about running as root to exercise more devices
- Makefile: add --progress and remove --verbose from verify-test-all
and slow-test-all - stress-mlock: remove extranous space in debug message
- stress-fd-fork: report approx number of fds
- stress-fd-fork: report how many fds were closed
- core-shim: add warning disabling pragma on extern stime declaration
- stress-fork: handle 32/64 bit address for 32 bit systems
- stress-enosys: don't exercise > 32 bits for 32 bit systems
- stress-exec: only use MAP_STACK if it is defined
- stress-memfd: remove duplicated declaration of fd
- stress-cpu-online: remove duplicated declaration of variable cpu
- stress-monte-carlo: declare stress_mc_supported for HAVE_ARC4RANDOM
- stress-fork: voidify unused arg fork_unmap for non-linux builds
- stress-cache: voidify cache related flags and mask
- stress-dev: swap calloc arguments to the correct way around
- core-target-clones: add Arrowlake and Pantherlake CPU support
- Dockerfile: remove kmod and xxhash
- Dockerfile: add mpfr and judy from community repos
- stress-sigsegv: methodically exercise reads from all VM address range
- core-perf: add swiotlb perf event and bump event count up as we are
running low - core-perf: add IRQ tasklet entry/exit metrics
- core-perf: add IPI Raise event
- stress-resources: only declare ppid if HAVE_PIDFD_OPEN is defined
- stress-cpu-online: ensure cpu is initialized
- core-klog: ignore cpu affinity warnings, these are benign
- stress-cpu-online: round-robin CPUs for instances 1 and 2
- stress-cpu-online: always try a different cpu and don't try an
already offlined cpu - stress-ng: Fix net_port_map lock failure
- stress-cpu: don't check for onlining failure for more than 1 instance
- stress-bitonic: rename bionicsort_count to bitonic_count
- stress-shellsort: remove redundant 8 bit sort
- stress-bitonicsort: Add another sorting stressor
- stress-cpu-online: run a child process that tries to pin itself to
offlined CPU - core-resouces: open another fd, based on the stdout of parent pid
- stress-memfd: don't populate memfd mapped pages
- stress-memfd: exercise each flag per iteration
- stress-memfd: change memfd_fds to a int32_t
- stress-memfd: create some filenames just one
- stress-memfd: use close_range on fds, fall back to loop'd fd close
- stress-enosys: add 24, 40, 48, 56 bit syscalls
- stress-malloc: add some SEGV action information
- stress-fd-fork: add --fd-fork-file option to specify file to dup
- stress-fd-fork: add metrics on time to open all fds and open 10000
files per loop - stress-fd-fork: add --fd-fork-fds option to specify number of files
to open - Manual: add note about fd-fork bogo-op rate dropping over time
- Manual: recommend using the maxtrix-3d stressor for cache misses
- stress-ng: avoid potential division by zero by total_run
- stress-fd-fork: add a file descriptor copying via fork stressor
- Manual: Fix typo "maybe" -> "may be"
- stress-crypt: add --crypt-method to allow encryption method to be
selected - Manual: update crypt stressor with list of all crypt methods used
- stress-memfd: fix #endif, removed the wrong one
- stress-memfd: remove debug #ifdef's
- stress-memfd: make random madvise calls an optional opt-in with
--memfd-madvise - stress-memfd: add in opt-in zap pte test option --memfd-zap-pte
- stress-memfd: include <linux/memfd.h> for MEMFD huge page flags
- TODO: add IP_LOCAL_PORT_RANGE
- stress-ng: add estimated completion time for --progress option
- stress-ng: add a --progress option to show --sequential run progress
- stress-fork: disable --fork-unmap if --fork-vm is also enabled
- stress-fork: remove stress_set_proc_state so libbsd can be removed
- stress-fork: don't remove readable pages that may be used in dlsym
searches - stress-syscall: only define SHADOW_STACK_SET_TOKEN if it's not defined
- stress-fork: add --fork-unmap option to force unmapping of shared libs
- Makefile.config: specify library link ordering
- stress-clone: force lazy bind libc functions to be bound before clone
is run - stress-stream: fix collapse stream-madvise option to use MADV_COLLAPSE
- stress-fpunch: add --fpunch-bytes option to specify fpunch file size
- stress-fork: force lazy bind libc functions to be bound before child
is run - stress-fork: do immediate _exit() call for short lived processes
- stress-fork: make help clearer on process creation naming
- core-thrash: no need to snprintf a fixed path name, clean up code
- stress-fork: align info array to cacheline
- stress-skiplist: add bounds check on ln2n
- Manual: fix misalignment of --misaligned-ops option
- stress-cache: zero buffer before benchmarking read/write rates
- stress-cache: correctly report the cache flags being used
- stress-vforkmany: add --vforkmany-bytes option to specify mmap size
- core-mincore: add missing --page-in OPT_FLAGS_MMAP_MINCORE check
- stress-vforkmany: use waste_size instead of WASTE_SIZE for mmap'd
waste region - stress-numa: add support for MPOL_WEIGHTED_INTERLEAVE
- core-helper: use program_invocation_name to get program name
- stress-monte-carloc: add arc4 cryptographically-secure pseudorandom
generator - stress-numa: add NUMA hit/miss metrics
- stress-context: make context regions smaller, move stack to new
mmap'd area
V0.17.05
New Features:
- New Monte Carlo computational stressor (--monte-carlo)
- New time warp clock reading and time skew stressor (--time-warp)
- New Priority Inversion scheduler stressor (--prio-inv)
- New huge integer factorization stressor (--factor)
- Extra device ioctl stressing in dev stressor (/dev/kvm, /dev/uinput, /dev/input, /dev/random, /dev/rtc)
- New NUMA stressor options (--numa-bytes, --numa-shuffle-node, --numa-shuffle-addr)
- stress-x86syscall: add geteuid, getgid and getuid
- replace strlcpy with safer strscpy
- New mmap stressor options (--mmap-write-check, --mmap-madvise, --mmap-mergeable,
Optimizations:
- AVL tree optimization (~7% faster)
- Added Link Time Optimization
- Random number generators: optimize and generalize mwc*modn() functions
Fixes:
- rseq stressor now uses glibc rseq struct
Detailed Changelog:
[Nikolas Kyx]
- stress-syscall: fix cmp_test_duration() return value
[Colin Ian King]
- Makefile: bump version
- Makefile: add core-asm-loong64.h to HEADERS
- stress-atomic: make atomic region 64 bytes wide, step through it
- Manual: update caveat concerning bogo-op rates
- Manual: update date
- stress-unshare: silently ignore EACCES returns
- core-pragma: drop packed gcc version to 9.4
- Manual: fix a couple of typos
- stress-prio-inv: fix typo "cheduling" -> "scheduling"
- core-helper: fix some spelling mistakes
- stress-landlock: ensure all set bits work in mask and zero
ruleset_attr before use - stress-sysfs: ignore SIGKILL as bad signal
- stress-numa: fix one more %zu format specifier
- stress-numa: use %zu format specifier for size_t
- stress-monte-carlo: don't use getrandom for Solaris, it's very slow
- core-vmstat: only account for CP_SPIN on OpenBSD if it exists
- stress-stack: make rc no-clobberable, cleans up gcc 4.9.2 warning on
kfreebsd - core-shim: disabled process_mrelease for SPARC
- stress-monte-carlog: only define stress_mc_no_seed if it is required
- core-perf: make filemap page cache description match existing style
- stress-numa: report per instance mapping size to 1 decimal place
- stress-numa: add --numa-bytes option to specify total memory size
- kernel-coverage: add numa addr and node shuffling options
- stress-numa: add --numa-shuffle-addr and --numa-shuffle-node
- stress-numa: ensure pages get re-assigned to different nodes
- stress-tree: disable warnings on misaligned pointer access
- stress-numa: use stress_mmap_set_light to touch pages
- core-pragma: add checks for gcc 10
- core-pragma: add missing \
- stress-monte-carlo: use generic supported and no_seed functions
- stress-dev: add include ifdefs around stress_dev_ptp_linux
- stress-dev: add macro VOID_ARGS to voidify common function args
- stress-dev: remove UNEXPECTED checks, add more linux guarding
- stress-dev: add some kvm ioctls
- stress-dev: exercise UI_GET_VERSION ioctl on /dev/uinput
- stress-dev: add RNDGETPOOL ioctl on /dev/random
- stress-dev: exercise /dev/input/event*
- stress-dev: add RTC RTC_IRQP_READ32 ioctl
- stress-dev: add linux /dev/rtc ioctls, delay on -EBUSY
- stress-mmap: add missing MMAP_SYNC flag
- stress-ng.h: disable _FORTIFY_SOURCE when using PCC
- stress-ng.h: disable _FORTIFY_SOURCE when using TCC
- core-mmap: remove unused variable val
- stress-sigsegv: make pointers uint8_t * to clean up void * pointer
addition warnings - Makefile: don't enable -fipa for icc
- stress-tree: allow tree node packed structures where packed is
allowed on x86 - core-pragma: add -Waddress-of-packed-member to WARN_OFF macro
- core-attribute.h: add PACKED macro for attribute packed
- stress-tree: move u into it's own typedef and make tree node 8 byte
aligned - stress-tree: avl: remove redundant assignments to taller
- stress-tree: avl: add pointer r as a short cut for (*root)
- stress-tress: avl: make variable taller a register
- stress-tree: avl: remove sub_taller variable
- stress-tree: avl: replace (*root) with node on new node
- stress-tree: don't pass taller flag in avl_insert
- Add build-time test for packed attribute
- README.md: add DEBUG=1 make build instructions
- stress-monte-carlo: add some more complex integrals to compute
- stress-monte-carlo: fix ppc64 darn and add missing rand support check
- stress-rseq: add check for __builtin_thread_pointer()
- stress-monte-carlo: add Monte Carlo computation of pi and e
- stress-rseq: remove debug '| 1' for sys/rseq.h include
- stress-rseq: remove trailing white space
- stress-rseq: remove invalid rseq test cases
- stress-rseq: remove rate debug
- stress-rseq: move critical section count into a stressor metric
- stress-rseq: rework to work with rseq in glibc
- stress-sigsegv: fix exact fault address check
- stress-x86syscall: add geteuid, getgid and getuid
- README.md: add another citation link
- stress-prio-inv: remove undef of PTHREAD_MUTEX_ROBUST
- stress-prio-inv: remove prio default case from switch
- stress-prio-inv: add build time check for pthread_mutexattr_setrobust
- stress-prio-inv: add build-time checks for various SCHED_* support
- stress-prio-inv: update reason why stressor is not implemented
- stress-prio-inv: move pthread_mutex_t dependant types
- Add shim for dirent d_type
- stress-landlock: shift left with correct sized integer
- Makefile.config: cater for empty $LIB_BSD string
- stress-time-warp: add a time/clock time warp checking stressor
- stress-prio-inv: match order of STRESS_PRIO_INV_POLICY_* with
stress_prio_inv_policies - stress-mmap: add --mmap-stressful
- stress-prio-inv: add --prio-inv-policy to select scheduler policy
- stress-prio-inv: use FIFO sched by default
- README.md: add Nikolas Kyx to contributors list
- Add new prio-inv (priority inversion) stressor
- stress-mmap: add --mmap-slow-munmap option
- core-perf: add some more trace events
- stress-landlock: only exercise flags that are usable
- core-shim: replace strlcpy with safer strscpy
- stress-landlock: add more landlock access flags, add check for
usability - core-mwc: optimize and generalize mwc*modn() functions, remove pwr2
helpers - stress-mmap: use non-mod random mwc functions for faster index
generation - stress-mmap: add new option --mmap-write-check for opt-in write +
checks - stress-factor: up the maximum digit size to 100000000 digits
- stress-mmap: add --mmap2 option in short help
- kernel-coverage: add new mmap options to mmap stress cases
- stress-mmap: add opt-in randomized madvise on pages
- core-mmap: touch + check just start of each page rather than filling
them - debian/control: add libgmp-dev for factor stressor
- README.md: update number of stressors (320+) and add loong64 arch
- stress-mmap: touching pages should be using sz and not
context->mmap_bytes - stress-mmap: add --mmap-mergeable option
- stress-factor: clean up indentation
- stress-mmap: reduce affect of mumap on stressor
- stress-factor: add factorization stressor using libgmp
- core-mmap: replace add/sub with xor
- core-mmap: remove need for shift and compare, replace with add/sub
- Manual: add "next generation" reference in title to explain why it
is called stress-ng - core-mmap: replace compare + check for each value with 32 sum + check
- Manual: add missing System V semaphore stressor title
- stress-mmapfiles: ensure fd is closed on loop break paths
- stress-mmapfiles: add ENOMEM check to bail out early
- Manual: add notes to --mmapfiles stressor
- stress-mmapfiles: add missing , between literal strings
- stress-mmapfiles: remove ANONYMOUS mapping flag and use fd in mmap
- stress-mmapfile: add file based memory mapping stressor
- stress-cpu-online: move stressor back onto newly online'd cpu
- stress-affinity: let main stress process reap all children
- core-vmstat: Add OpenBSD implementation of stress_get_cpu_ghz
- core-vmstat: add vmstat support for OpenBSD
- stress-crypt: fix FreeBSD build issues
- README.md: add note about snaps of stress-ng
- core-shim: add missing shim block comments
- Makefile: add support for Link Time Optimization
- stress-ng: keep track of metrics overflow, report so.
- stress-af-alg: add metrics for each af-alg crypto type
- README.md: add another link to a kernel issue found by using stress-ng
- stress-sysbadaddr: add Linux 6.8 lsm system calls
- stress-waitcpu: add support for loong64 by using dbar instruction
- stress-workload: RISC-V: use stress_asm_riscv_pause instead of a fence
- stress-waitcpu: use RISC-V pause instruction for small delays
- stress-waitcpu: only sanity check non-rates on non virt x86 systems
- stress-eigen-ops.cpp: remove commented out debug code
- stress-priv-instr: add loong64 privileged instructions
- stress-pipe: add debug to log default pipe read/write sizes
- core-*.h: add ALWAYS_INLINE annotation for small inline helpers
- stress-regs: add loong64 implementation
- core-asm-loong64.h: Add support for cpucfg instruction
- stress-acl: terminate do-while stressor loop on acl error exit
- kernel-coverage: exercise all ioschedulers on filesystems
- stress-tsc: add rdtime.d instruction auto-built detection
- stress-workload: add Loong64 support for dbar instruction
- Manual: Add Loong64 implementation details for tsc stressor
- stress-tsc: add Loong64 tsc reading support
- core-asm-arch: initial support of Loong64 arch
- Makefile: swap order of -U and -D FORTIFY_SOURCE
- Makefile: ensure cc_supports_flag is defined outside the PEDANTIC
flag settings - stress-io-uring: add optimizations - late sqe memset and optimize
out zero stores
V0.17.04
Stress-ng V0.17.04 "pragmatic problem producer" highlights:
- Support for Cygwin builds
- More system calls exercised in sysbadaddr (cacheflush, xattrs) and better mixed invalid address exercising
- Reduced spawning rate in sysbadaddr stressor for improved faster system call coverage
- Improved SO_SOCKET SO_* option exercising in sock stressor
- Add native radixsort, heapsort and mergesort support if BSD sort functions are not available, these can be faster than the libc variants
- sysfs stressor: Exercise /sys/power/disk test resume command
- pty stressor: Exercise cfgetispeed and cfgetospeed
- Add map_shadow_stack system call to sysinval and syscall stessors
- Add Access Control Lists exercising with new acl stessor
- Exercise all open mode permutations in open stressor
Notable Bug Fixes:
- don't kill entire process group or pid 1 (init) on SIGTERM
- sock stressor: fix zerocopy - enable it via setsockopt and use zerocopy flag appropriately
- sock stressor: retry send on ENOBUFS
- vma stressor: fix non-termination of vma pthreads and child processes
- mmap stressor: add mprotect EACCESS error check for NetBSD
- metamix stessor: add EBADF on fdatasync on read-only fd
Changelog:
[Munehisa Kamata]
- README.md: fix a typo in the contributor name
- stress-acl: Fix stress_acl_info definition
[Colin Ian King]
- Makefile: bump version, change code name
- README.md: add Cygwin to supported systems
- kernel-coverage: add longer duration sysbadaddr test
- stress-pthread: disable pthread_sigqueue call for CYGWIN
- stress-tree: disable RB trees for CYGWIN
- stress-sparsematrix: disable RB trees for CYGWIN
- core-helper: add _start workaround for CYGWIN
- core-shim: fix setdomainname check on HAVE_SETDOMAINNAME
- stress-dir: don't reference non-POSIX d_reclen for CYGWIN
- stress-mmapfork: use stress_mmap_populate for MAP_POPULATE
- stress-xattr: workaround ENODATA not being defined for NetBSD
- stress-metamix: voidify parameter temp_dir if O_DIRECTORY is not defined
- core-time: voidify parameter dnow, cleans up Dilos build warning
- stress-sysbadaddr: fix another valid fd check, should be >= 0
- stress-sysbadaddr: fix valid fd check, should be >= 0
- stress-sysbadaddr: close fdin rather than fdout on fdout open failure
- stress-sysfs: use SCNu16 formate specifier for sscanf uint16_t
- stress-sock: remove shadowed declaration of variable i
- stress-vdso: add clock_getres
- stress-sysinval: set dirfd mode, gid and uid back to original setting
- stress-sigxfsz: retry setrlimit with smaller size if limit is too large
- stress-copy-file: replace sizeof(char) with 8
- stress-copy-file: fix the max off_t, it's signed to cater for this
- stress-sysbadaddr: use shim_cacheflush instead of direct system call
- stress-sysbadaddr: pass different addresses to ppoll
- stress-af-alg-defconfigs: re-order and remove blank lines
- stress-mmap: add mprotect EACCESS error check for NetBSD
- stress-metamix: add EBADF on fdatasync on read-only fd
- stress-metamix: fix incorrect EBADF check
- stress-metamix: ignore EBADF on fdatasync on read-only file
- stress-ng: don't call mprotect if it does not exist
- stress-syscall: add comment explaining why shell sort is used instead
of qsort - stress-sysbadaddr: use VOID_RET for typed voidification of system call
returns - Update copyright year to 2024
- Manual: remove . in Eigen description
- stress-sock: exercise SO_SOCKET SO_* opts that return int type values
- stress-sysbadaddr: only increment counter if a syscall is to be made
- stress-sysbadaddr: avoid exercising system calls that will not fail
- stress-sysbadaddr: add some more xattr system calls
- stress-sysbadaddr: bad_fstat: exercise fstat on temp dir
- stress-sysbadaddr: add copy_file_range
- stress-sysbadaddr: add missing MIPS cacheflush system call
- stress-syscall: add missing MIPS cacheflush system call
- stress-sysbadaddr: exercise shim'd and non-shim'd syscalls
- stress-sysbadaddr: exericse system call parameters with range of
parameters - stress-sysbadaddr: only respawn child when bad addr breaks system call
- core-version: define EQUAL_GNUC for all compiler times
- stress-radixsort: remove array size specifiers to fix tcc build failures
- core-builtin: add shim wrapper for __builtin_assume_aligned()
- core-cache: add missing tab to clean up \ alignments
- stress-vecshuf: remove redundant variables total_ops and total_bytes
- stress-numa: Fix spelling mistake in comment
- stress-memthrash: remove trailing space at end of line
- README.md: update contributors list
- stress-syscall: add the --syscall-top N option to report top N fastest
syscalls - Manual: fix typo "fasted" -> "fastest"
- stress-radixsort: reduce memory bandwidth by making length 2 bytes
- stress-radixsort: clean up casting in IDX and IDX_T macros
- stress-radixsort: remove signed conversions in radix_strlen
- stress-radixsort: offset digit counter by 1
- stress-radixsort: optimize radixsort
- stress-radixsort: add nonlibc implementation of radixsort
- stress-heapsort: add new --heapsort-method option to help
- stress-mergesort: add new --mergesort-method option to help
- stress-mergesort: add some more memory copying optimizations
- stress-mergesort: optimize for 4 byte data
- stress-mergesort: remove base_ptr, replace with base
- stress-mergesort: optimize copying of lhs and rhs to base
- stress-mergesort: add missing base_ptr increment
- stress-mergesort: optimize lhs and rhs copying
- stress-mergesort: add nonlibc implementation of mergesort
- stress-heapsort: optimize copy and swap for common size cases
- stress-heapsort: add nonlibc implementation of heapsort
- Makefile: add cc_supports_flag to simplify CFLAGS checking
- Makefile: add gcc optimization flag -fipa-pta
- stress-sysfs: exercise test resume command for /sys/power/disk
- stress-pty: exercise cfgetispeed and cfgetospeed on leader and follower
- stress-vecshuf: report shuffle rates as Harmonic Mean
- stress-sysinval: add map_shadow_stack system call
- stress-syscall: add map_shadow_stack call
- core-*: add more comments
- core-helper: assign val2 to avoid any static analysis warnings
- stress-acl: add randomized acl attribute order shuffling with --acl-rand
- Makefile.config: Fix incorrect addition of -DSTRFUNC to LDFLAGS
- stress-ng: initialize values to 0.0 rather -1.0
- stress-acl: exercise all ACL types, ACL_TYPE_ACCESS and ACL_TYPE_DEFAULT
- core-shim: shim_kill: don't allow SIGKILL on pid -1
- stress-ng: don't kill entire group or pid 1 (init)
- stress-acl: uppercase ACL in help text
- stress-acl: add ACL set vs get verification
- stress_acl: rename acl functions, prefix with stress_
- stress-acl: exercise acl_get_file and add metrics for this
- kernel-coverage: enable acl for reiserfs
- README.md: add another link to a research paper
- stress-open: add open using all the possible file modes
- stress-acl: compute and cache all valid ACLs to improve performance
- stress-vma: voidify returns using VOID_RET macro
- Update documentation and debian/control for libacl dev libs
- stress-acl: exercise POSIX ACLs using libacl
- README.md: add another link to a research paper
- stress-inotify: exercise ioctl command INOTIFY_IOC_SETNEXTWD
- stress-sock: retry send on ENOBUFS
- stress-sock: fix zerocopy - enable it via setsockopt and use flag
appropriately - core-asm-x86.h: remove duplicated cpuid legacy implementation
- kernel-coverage: add extra bcachefs format options for more test
coverage - core-helper: stress_get_null: cast zero to uintptr_t before void * cast
- stress-sem-sysv: reduce the rate at which proc info is being read
- stress-vecwide: don't use target clones for gcc 9.4.0
- core-asm-x86.h: remove STRESS_ARCH_X86_32 variant of rdtsc
- stress-vma: fix non-termination of vma pthreads and child processes
- kernel-coverage: reduce tmp file system image size to 4000MB for bfs
- stress-raw[pkg|udp]: only include linux/udp.h if netinet/udp.h does not
exist - core-helper: add null function to obfuscate (void *)0 values
- stress-workload: include sched.h required for
aarch64-linux-android33-clang - stress-rawudp: fix type comparison warning, cast to in_addr_t
- Fix missing headers and rindex/index for clang android static builds
- stress-malloc: only declare trim_counter when it's required
- Fix open calls that have extraneous mode flags on non-create opens
- kernel-coverage: add collapse --stream-madvise option
- stress-stream: add collapse --stream-madvise option
- kernel-coverage: add in some extra stressing options
Full Changelog: V0.17.03...V0.17.04
V0.17.03
Bug fix release, address shared memory unmapping for opcode, sysbadaddr, enosys and sysinval stressors. Fix trimming in malloc stressor, fixes memory leak in mmap stressor.
[Colin Ian King]
- Makefile: bump version
- Makefile: remove -g from CFLAGS
- stress-sock: fix memory real on mmap_buffer
- stress-malloc: replace pre-inc with post-inc on trim_counter
- stress-tsc: only define stress_tsc_check when required
- manual: update release date
- stress-opcode: allow exit system call
- stress-sysbadaddr: don't unmap shared memory, just make it read-only
- stress-enosys: don't unmap shared memory, just make it read-only
- stress-opcode: don't unmap shared memory, just make it read-only
- stress-sysinval: don't unmap shared memory, just make it read-only
- stress-tsc: clean up warnings with systems that do not support lfence
- stress-sysonval: add in missing old/deprecated and new system calls
- stress-enosys: add in missing _NR* syscalls
- README.md: add another kernel issue found by stress-ng
- stress-malloc: mmap addr array and prefetch values
- stress-malloc: only trim memory when new option --malloc-trim is used
- stress-tsc: add the --tsc-rdtscp option
- Add build-time check for rdtsc instruction
V0.17.02
Stress-ng V0.17.02 "omniferous optimized overreacher"
Key features:
- many stressor related optimisations:
- ~5.4% improvement on Alderlake i9-12900
- ~5.2% improvement on 24 core ARM® Cortex-A53
- ~2.2% improvement on StarFive JH7100 64 bit RISC-V RV64GC
- ~7.2% improvement on Libre Computer AML-A311D-CC (4 x ARM Cortex-A72 cores, 2 x Cortex-A53 cores)
- ~5.2% improvement on Libre Computer AML-S905D3-CC (4 x ARMv8 Cortex-A55)
(based on Geometric mean of bogo-ops throughput of over 300 stressors)
New features:
- sigxfsz and sigxcpu stressors for SIGXFSZ and SIGXCPU signals
- bsearch, hsearch, lsearch have new method options to specify libc or optimized non-libc search functions
- io-uring stressor has new --io-uring-entries option to specify number of entries in the io-uring
Changelog:
[Sascha Hauer]
- stress-physpage: explicitly use 64bit type for physical addresses
- stress-ng.h: define _FILE_OFFSET_BITS before including features.h
[Rulin Huang]
- Reduce the file operations if the unused pid can be found within
several tries
[Colin Ian King]
- stress-bigheap: ensure value in *uintptr is initialized
- stress-workload: clean up some clang-scan-build warnings
- stress-workload: remove redundant assignments to variable t
- stress-workload: remove redundant initialization of t_begin
- stress-sigpipe: add wrapper to pipe_child to clear up tcc warning
- stress-reboot: add wrapper to reboot_clone_func to clear up tcc
warning - stress-vma: remove volatile cast, it is unnecessary
- stress-lsearch: add casts to const char * to avoid void * arithmetic
- stress-bsearch: cast base to const char * to avoid void * arithmetic
- core-time: return -1 if time not available via
stress_time_now_timespec - stress-msync: make pointer buf unclobberable
- stress-msg: remove another invalid msgrcv calls that work for
OpenBSD systems - stress-msg: remove invalid msgrcv calls that work for *BSD systems
- core-shim: Fix non-PURE shim_enosys function
- core-resources: include core-pthread.h for pthread types
- stress-get: don't call gettimeofday with NULL values
- core-shim/stress-get: use gettimeofday() for non-linux shim_time calls
- core-shim: fix typo: tlock -> tloc
- core-shim/stress-get: use time() for non-linux shim_time calls
- stress-get: fix error messages, replace gettimeval with gettimeofday
- stress-get: only exercise time(NULL) on Linux
- core-helper: move ret inside #ifdef block
- README.md: Update contributor list
- stress-*: clean up a handful of spelling mistakes
- stress-stream: unmap in correct idx order
- README.md: add another link to a research paper
- stress-prctl: munmap page_anon on error return path
- stress-seal: unmap buf on error return paths
- stress-cyclic: unmap latencies mappings on error return
- stress-zero: unmap read/write buffers on error return paths
- stress-stream: simplify error unmapping return paths
- stress-rawdev: fix memory leak on mmap'd buffer on error return path
- stress-fail: use fail error exit path for non-implemented /dev/full
- stress-sockmany: fix memory leak on signal handler error return path
- stress-signest: fix memory leak on signal handler error return path
- stress-sock: fix memory leak on fork failure error return path
- stress-sigpipe: fix memory leak on signal handler error return path
- stress-stackmmap: make stack_sig non-clobberable
- stress-sigbus: make ptr non-clobberable
- core-helper: add stress_mmap_populate to mmap with MAP_POPULATE
- stress-qsort: add missing tab
- stress-bseach: add -O3 for nonlibc bsearch function
- stress-waitcpu: add some more nops
- stress-vm: remove volaile where it's not required, add memory barrier
- stress-vm: speed up prime-gray-0 and prime-gray-1 by reducing total
memory read/writes - stress-vm: speed up prime-0 and prime-1 by reducing total memory
read/writes - stress-vma: provide different handlers for SIGBUS and SIGSEGV
- stress-vma: optimize matrics, add cacheline pad and remove volatile
- stress-vdso: add dummy function call to emulate minimal vdso function
- stress-udp: don't memset the send buffer on each send
- stress-trig: replace iterations with macro STRESS_TRIG_LOOPS
- stress-trig: unroll loops, speed up by ~4.2%
- stress-memthrash: only report lack of NUMA support with instance 0
- stress-schedmix: reduce compute overhead on prime number CPU load
- stress-stack: unroll loop in stress_stack_alloc
- stress-sockpair: optimize buffer setting and checking
- stress-sockdiag: move bogo-op count to outside parser loop
- stress-skiplist: use 8 bits for skip_list_random_level generation
- stress-skiplist: optimize ln2 operation using clzl
- stress-sigxfs: optimize counter increment, remove branch
- stress-sigxfsz: don't make async_sigs volatile
- core-helper: only declare array buf when it is required
- core-helper: voidify function argument dumpable
- core-helper: only declare array buf when it is required
- core-shim: move include <sys/uio.h> to core-shim.h
- stress-gpu: move declarations for gpu_freq_sum and gpu_freq_count
- core-numa: add stress_numa_nodes helper for non-linux builds
- stress-stream: don't print numa nodes related info for non-linux
systems - core-shim: add missing include of sys/uio.h required for struct iovec
- stress-mmapfixed: fix array overflow, iterate over only the array
elements - stress-gpu: ensure usec computations are using uint64_t type
- stress-hsearch: voidify return from stress_get_setting
- core-helper: use STRESS_MAXIMUM on maximum pid
- stress-vma: add in extra protection flags and mmap flags for more
stress - stress-vma: add PROT_NONE back
- stress-vma: ensure page is always mappable
- stress-ng: move ci counter struct into args and args into stat struct
- stress-signal: don't use volatile for in-signal handler counter
increment - stress-ring-pipe: replace % operator with compare and set
- stress-resched: remove need to check for non-mapped yields array
- README.md: add more research paper links
- stress-remap: unroll a handful of loops
- stress-regs: reference registers rather than v variable
- stress-readahead: unroll some loops
- stress-randlist: add prefetch to next pointer in list scanning
- core-mwc: use clz for shift maximization for 8 and 16 bit mwci
functions - core-sort: optimize of powers of 2 size for
stress_sort_data_int32_shuffle - stress-gpu: only report GPU frequency if > 0.0 MHz
- core-time: optimize get_time_now()
- stress-procfs: use MAP_POPULATE on mmap to reduce read-fault hit
- stress-procfs: perform less timeout checks on 1 byte reads and
optimize timeout paths - stress-poll: switch order of read return checks
- stress-opcode: inline and unroll loop in stress_opcode_random
- stress-null: scale down mmaps to 1 once every 500 iterations
- stress-nice: add ( ) to clarify precedence
- stress-syncload: add yield delay for ppc
- core-builtin.h: Add llabs builtin shim wrapper
- core-ops: add in missing OPT_hsearch_method
- stress-nanosleep: ensure no overflow occurs on 32 bit systems
- stress-hsearch: add hsearch method for libc and non-libc versions
- stress-mmaphuge: simplyfy the set and check memory exercising
- stress-mmapfixed: make vec array uint32 to speed up mincore checking
- stress-mmapfixed: move memset in stress_mmapfixed_is_mapped_slow
- core-helper: add missing space between ) and {
- core-helper: stress_process_dumpable: use stress_system_write
to write data - core-helper: stress_get_memlimits: use stress_system_read to read data
- stress-lsearch: use lfind_nonlibc in lsearch_nonlibc
- stress-lsearch: add lsearch method for libc and non-libc versions
- stress-bsearch: add --bsearch-method short help
- stress-lockofd: remove yield point, it's not helping that much
- stress-lockf: remove yield point, it's not helping that much
- stress-locka: remove yield point, it's not helping that much
- Makefile.config: echo the number of configurations in config.h
- stress-jpeg: compute gradient image using float instead of double
- stress-io-uring: add UNLIKELY hint on error return check
- stress-iomix: stress-_iomix_rd_wr_mmap: just read 1 byte from page
- core-mwc: move stress_rndstr from core-helper to core-mwc
- stress-icache: add missing space before + operator
- stress-hdd: optimize hdd_fill_buf
- core-mwc: move stress_rndbuf from core-helper to core-mwc
- stress-gpu: add GPU frequency metrics based on 10 samples per second
- stress-ng: emit plural of instance if instances > 1
- core-config-check: replace "will" with "may"
- stress-getrandom: reduce overhead of gettimeofday calls
- stress-full: fix and optimize stress_data_is_not_zero
- core-mwc: optimize modulo mwc32 and mwc64 functions
- stress-fifo: add poll replacement to select, disable it for now
- stress-far-branch: inline the branch shuffling, reduce iterations
from 5 to 1 - stress-epoll: don't fill send buffer on each send
- core-time: make function stress_timeval_to_double PURE
- core-helper: add PURE annotation to two more helper functions
- core-helper: optimize stress_rndstr
- stress-clock: move memsets outside of loops for minor performance
improvement - stress-bsearch: allocate bsearch array using mmap
- stress-ng: fix short help for change-cpu, fix missing -
- stress-bsearch: add bsearch method for libc and non-libc versions
- stress-qsort: add in missing qsort-method short help
- stress-ng: don't timeout until all stressors are spawned
- core-helper: fix low memory swap check
- stress-sigxfsz: remove unused include files
- stress-si...
V0.17.01
Changelog:
[Andrey Gelman]
- stress-led: use shim_strlcpy instead of strlcpy
[Max Kellermann]
- stress-splice: remove "Exercise 1 byte splice, zero flags" call
[Colin Ian King]
- Makefile: bump version
- debian/control: move homepage URL
- README.md: add a few more links to research papers
- Manual: update date with release
- stress-vnni: remove extraneous word just in some messages
- core-config-check: only report non-tty attached message when not
using a tty - core-cpuidle: remove redundant initialization of cc
- stress-sigsegv: only reference expected_addr if SA_SIGINFO is defined
- core-helper: rename si_code to sig_code to fix macro clash with Minix
- stress-trig: cater for 16, 12 and other sized long doubles
- stress-utime: cast integer constants to time_t for time_t struct
values - stress-schedmix: fix build warning for SCHED_OTHER case
- stress-schedmix: only declare case_sched_other when required
- stress-trig: voidify return from call to stress_get_setting
- stress-uprobe: check for concurrent access to
/sys/kernel/debug/tracing/trace_pipe - stress-schedpolicy: only declare case_sched_other when is required
- stress-sigsegv: add PROT_NONE read to force SIGSEGV
- core-shim: just call stat libc funcs for stat/lstat/fstat
- stress-trig: lower precision if long double is same size as double
- stress-msg: pass down error from receiver to parent
- stress-cpu: advise not to use --cpu-method all when specifying
--cpu-load - stress-ng: remove need to include core-put.h
- core-madvise: add mergeable madvise helper, use it on some mmap calls
- stress-trig: drop precision for float trig functions, add NULL on
opt_set_funcs - stress-trig: Add TARGET_CLONES to use optimial float instructions
- stress-trig: add a new trigonometric function stressor
- stress-workload: remove NOINLINE to fix clang builds
- stress-workload: make buffer uint8_t * rather than void *
- stress-workload: constify pointers w1 and w2 in stress_workload_cmp
- stress-copy-file: make stress_copy_file_seek64 an inlined static
helper - core-config-check: include core_config_check.h to check
stress_config_check prototype - stress-ng: remove CASE_FALLTHROUGH macro
- stress-ng: exit with EXIT_FAILURE if locks fail to create
- stress-ng: exit with EXIT_FAILURE if shared heap cannot be allocated
- core-helper: add missing check for HAVE_SYS_PRCTL_H when using prctl
- core-helper: add extra macro check for HAVE_SYS_UTSNAME_H when using
utsname - stress-sctp: add extra macro checks for SCTP_SS_* macros
- stress-remap: voidify unused function parameter remap_mlock
- stress-switch: add extra check for HAVE_KEY_T
- stress-sem-sysv: add extra check for HAVE_KEY_T
- stress-syscall: need to check for HAVE_REMOVEXATTR for
syscall_xattr_name - stress-syscall: need to check for HAVE_GETXATTR for syscall_xattr_name
- stress-wcs: add some extra macro sanity checking for wcs* functions
- core-ftrace: add extra macro check for RB tree functionality
- stress-sparsematrix: add extra macro checks for tree types
- core-ftrace: check if HAVE_BSD_SYS_TREE_H is defined for trees
- stress-ng.h: clean up some spacing in macros
- stress-context: only report context address mapping for instance 0
- stress-context: avoid using alternative stacks in a swapcontext
- stress-ng: add aligned padding for counter metrics, rename it to pad
- core-log: move ABORT_FAILURES from stress-ng.h to core-log
- core-try-open: move STRESS_TRY_* macros to core-try-open.h
- stress-dup: move STRESS_FD_MAX from stress-ng.h to stress-dup
- stress-ng: move a few more macros from stress-ng.h to stress-ng.c
- stress-mknod: move DEFAULT_DIRS macro to stress-mknod
- stress-ng: move macros from stress-ng.h to stress-ng.c
- stress-link: move DEFAULT_LINKS macro to stress-link
- stress-access: remove trailing tab
- stress-context: add SIGSEGV debug handling
- core-helper: only dump object code for SIGILL
- core-helper: add sigsegv handler and more debug to handlers
- stress-mpfr: clean up indentation
- stress-workload: add fused-multiply-add workload method
- stress-workload: add --workload method option to specify work
exercising method - stress-workload: add pause/yield workload
- stress-syncload: use arm asm built-in for yield
- syscalls.txt: update Copyright dates
- stress-udp: use SO_REUSEADDR before bind
- README.md: add another kernel bug found by using stress-ng
- stress-file-ioctl: remove size check on FIOQSIZE
- core-shim: fix missing ; on stat calls
- core-shim: add shim wrapper for stat
- core-shim: add shim wrapper for lstat
- stress-iomix: use shim_copy_filerange and 64 bit offsets
- stress-fpunch: cast offset to intmax_t to match print format specifier
- core-shim: shim_copy_file_range: use shim_off64_t instead of
shim_loff_t - core-helper: make buffer tmp larger to avoid gcc-12.2.0 m68k warning
- core-shim: add shim wrapper for fstat
- stress-open: try O_TMPFILE on temp_dir first, then fall back to /tmp
- stress-workload: scale workload by number of threads
- stress-workload: use correct delay time between next work item for
threaded workloads - stress-workload: add an evenly spaced scheduling distribution option
- stress-workload: add in missing workload duration for poisson dist
- core-helper: provide warning when using the 0 reset timer-slack
setting - stress-workload: provide --timer-slack advice when quanta is low
- stress-workload: add a poisson process method of scheduled time
generation - stress-*: add support for more floating point types
- Makefile.config: use actual _Decimal* type names
- stress-*: use _Float128 or __float128 depending on what is available
- stress-*: replace HAVE_FLOAT128 with HAVE__float128
- stress-*: replace HAVE_FLOAT80 with HAVE__float80
- stress-*: replace HAVE_FLOAT64 with HAVE_Float64
- stress-*: replace HAVE_FLOAT32 with HAVE_Float32
- stress-*: replace HAVE_FLOAT16 with HAVE_fp16
- stress-: replace HAVE_FLOAT_DECIMAL with HAVE_Decimal*
- stress-workload: set workload_threads to zero if mq or pthreads not
available - stress-workload: compare failed wq with cast value of -1
- stress-workload: add --workload-threads option to use threads
- stress-workload: remove CLASS_INTERRUPT from class
- stress-link: minor speedup for mass file unlinking for minix 3 fs
- stress-workload: fix scheduler build issues for non-linux builds
- stress-vma: use shim_mincore instead of mincore
- stress-workload: add memory flush/read work item
- stress-workload: fix missing break in switch
- stress-workload: add yield instead of very small sleeps
- stress-workload: add a getpid() workload
- stress-vma: fix missing proc-maps metrics
- kernel-coverage: add workload sched workers
- stress-workload: add --workload-sched option
- stress-workload: add more randomly selected workloads
- stress-workload: print histograph in debug verbose mode only
- stress-workload: add a new scheduling workload stressor
- stress-access: remove trailing space
- README.md: update contributors list
- stress-shm-sysv: add more information on shmat failure
- README.md: add two more research citations
- kerne-coverage: mount hfs, hfsplus with -o rw, increase loopback to
4GB - stress-swap: handle ENOSPC more gracefully as a skipped stressor
- stress-access: don't report chmod errors for some filesystems
- stress-led: add LED /sysfs exercising stressor (Linux)
- README.md: update contributors list
- core-killpid: make killable timeout 10 minutes instead of 3
- core-helper: add musl gcc detection
- Add HOT OPTIMIZE3 attributes to random data filling helper funcs
- core-mwc: replace just OPTIMIZE3 with HOT OPTIMIZE3 on highly used
mwc funcs - test/test-libxxhash.c: include string.h and make buffer static
- Manual: update vma manual description to reflect recent vma changes
- stress-vma: reduce number of concurrent vma processes per instances
to 2 - stress-vma: fix 32/64 bit address generation
- README.md: add two more research paper citations
- core-, stress-: Add musl-gcc detection and HAVE_COMPILER_MUSL
- stress-vma: add reading /proc/self/maps
- stress-mva: add mprotect and msync
- stress-vma: add mincore calls on pages
- stress-procfs: use pthread_cancel to cancel pthreads before join
- core-config-check: fix inverted tty message
- stress-cgroup: fix duplicated open flags, use S_IRGRP | S_IWGRP
- core-config-check: check for powersave cpu governor
- core-shim: remove debug stress_process_info call
- stress-open: report filesystem type on O_DIRECT open/create issue
- stress-dev: use stress_kill_and_wait instead of kill and wait combo
- core-shim: shim_wait: bail out after 3 minutes of waiting
- core-helper: add stress_process_info to dump process state
- core-, stress-: use %jd and (intmax_t) cast for all pid_t formatting
- core-/stress-: rename pid to PID across system
- core-killpid: give up killing PID and debug report this after 3
minutes - kernel-coverage.sh: add --mmaphuge-file option to text mix
- stress-mmaphuge: add --mmaphuge-file option to attempt to mmap onto
a 16GB file - core-config-check: add system configuration sanity checks
- kernel-coverage.sh: add /usr/sbin to path for gcov tools
- stress-sysfs: terminate child process and pthreads using helper
V0.17.00
Celebrating a decade of stress-ng, the 0.17.00 stress-ng release contains three new stressors; a virtual memory area (vma) stressor, a Linux cgroup v2 stressor (cgroup) and a mixed metadata file stressor (metamix)
Changelog:
- Makefile: bump version to 0.17.00
- core-out-of-memory: treat zero timeout as ignore timeout check
- stress-nanosleep: voidify function parameter ctxt
- stress-nanosleep: fix build issue on Oracle Linux 6.1
- README.md: add another research paper citation
- test/test-swap.c: make array swapfile const
- test/test-sendmmsg: fix incorrect indexes in msg_iov2
- test/test-recvmmsg: fix incorrect indexes in msg_iov2
- test/test-lseek: reduce scope of variables offset and ret
- test/test-libkmod: constify pointer mod
- test/test-inotify: constify pointer
- README.md: update number of stressors
- stress-af-alg: treat EINTR as non-fatal in error reporting
- stress-vma: add madvise() calls to pages for extra contention
- README.md: Add another presentation link
- sreess-io-uring: remove verbose debug
- stress-ng: remove redundant assignment to variable handler_set
- stress-vma: remove redundant call to getpid
- stress-metamix: remove unused calls to stress_exit_status
- stress-cgroup: voidify return from fstat
- stress-softlockup: cast mmap return to uint8_t * to clear up build
warning - core-helper: fix uninitialized totalswap and freeswap for BSD
stress_get_meminfo - stress-cgroup: exercise a child process in cgroup
- stress-cgroup: exercise seek+read on cgroup files for more exercising
- stress-landlock: silently ignore ENOSYS when EINVAL is intended
- stress-cgroup: improve linux only build checks
- stress-cgroup: minimal linux cgroup v2 stressor
- stress-landlock: remove debug return 0 in landlock supported check
- stress-io-uring: silently ignore EINVAL for unimplemented ops
- core-shim: fix FTBFS, missing ; on membarrier call
- README.md: Add citation link to another academic paper
- stress-vma: cast mmap'd void pointer to stress_vma_metrics_t *
- stress-nanosleep: re-order #defines and typedef for non-pthread builds
- stress-dir: cast isdigit arg to int to clear up minix build warning
- core-cpuidle: only define stress_cpuidle_cstate_add_unique for linux
builds - stress-vma: use MAP_GROWSDOWN only if it is defined
- stress-utime: only exercise VFAT utime bounds for 64 bit systems
- core-pragma.h: remove -Wstringop-overflow for older toolchains
- core-pragma: use -Wstringop-overflow on toolchains that support it
- stress-vma: fix build issues with systems without MLOCK_ONFAULT
- stress-softlockup: add rep sto on 1MB buffer for x86
- stress-landlock: traverse file system adding as many files as possible
- stress-landlock: fix non-working flags, re-work stressor
- stress-vma: Add a new virtual memory address stressor
- presentations: Add kernel recipes 2023 presentation
- stress-dev: remove shadowed pointer dev
- core-cpuidle: remove unused variable max_cpus
- core-shim: add waitpid build check and use waitpid if it is defined
- core-shim: use membarrier if it is defined
- stress-dev: exercise /dev/cdc-wdm*
- README.md: add another performance issue found with stress-ng
- stress-swap: add filesystem type when swapon fails
- kernel-coverage: fix typo in ionice loop
- kernel-coverage: add swap on file systems for more exercising
- stress-getrandom: add invalid GRND_INSECURE | GRND_RANDOM |
GRND_NONBLOCK flags - stress-dev: add Linux /dev/vmci version ioctls
- stress-dev: exercise /dev/radio with v4l ioctls
- stress-dev: add /dev/lirc ioctl get commands
- stress-sysfs: add finer grained locking, add sysfs exercise metrics
- stress-utime: exercise some more times outside specific ranges
- stress-fallocate: use O_SYNC'd fallocate every 16 bogo-loops
- core-shim: handle posix_fallocate error returns correctly
- stress-open: exercise two different invalid futimesat times
- stress-shm: exercise a range of fallocate modes on shm
- stress-sleep: add C state residency sleep durations to exercise deep
C state sleeps - stress-nanosleep: add --nanosleep-method to specify different
nanosleep methods - stress-nanosleep: also use C state residency durations for nanosleeps
- core-cpuidle: allocate cpu C states and residency info in linked list
- stress-dir: use stat or fstat depending if open fails or not
- stress-dev: randomize the order of devices
- stress-apparmor: remove unused commented out variable counter_lock
- stress-dir: add file open/close on concurrent directory accesses
- stress-dev: exercise /dev/dm with queued IO under RCU protection
- stress-dir: reduce scope of variable d and make it const
- core-helper: reduce scope of variable duration, make t const
- core-log: clean up redundant variable initialization and
constifications - core-clocksource: add check to see if HPET clocksource is being used
- stress-dir: exercise readdir and rewinddir after populating a directory
- stress-metamix: make verification optional with --verify option
- stress-metamix: allow small 512 byte sizes, and mmap + check pages
- stress-*: remove SIGTERM kills before SIGKILL kills
- stress-*: use stress_kill_pid_wait() for kill/wait combos
- core-*: use stress_kill_pid_wait() for kill/wait combos
- stress-*: use stress_kill_pid() for kill SIGKILLs
- core-log: only sync writes to log file and not stderr, stdout
- core-log: don't write to logfile if it is not opened
- core-*: fix syscall typo process_release -> process_mrelease
- core-out-of-memory: include core-killpid.h
- core: use stress_kill_pid for SIGKILLs
- core-killpid: use process memory relasing if signal is SIGKILL
- core-helper: remove some empty lines
- core-helper: join broken literal strings
- stress-vecmath: fix call to stress_catch_sigill
- stress-ng: remove some empty lines
- core-helper: add SIGILL handler for code that uses target clones
- stress-metamix: add a new stressor that exercises a mix of file
metadata operations - stress-epoll: silently ignore -ve parameter passed to epoll_wait
- README.md: Add citation link to FIRESTARTER 2
- stress-ng: move child stressor invoking code into stress_run_child
- stress-ng: use stressor array size as limit for stressor loops
- core-log: fix ptr and size changes per write
- core-log: add pr_log_write_buf_fd helper for writes of buffer to a fd
- core-log: change semantics of pr_lock/unlock
- Manual: add more explanation why --log-lockess is useful
- core-helper: Add 1 ms yielding in logging and fork child startup
- README.md: add three more research paper links
- README.md: add four more research paper links
V0.16.05
[Anisse Astier]
- stress-vnni: verify if selected method supports intrinsic in intrisinc
mode
[Erwan Velu]
- Manual: Indent stressors to ease man page reading
[John Kacur]
- stress-ng: Fix text of license in stress-sleep.c
[Hsieh-Tseng Shen]
- stress-pty: don't treat EINTR as failure when tcdrain is interrupted
[matoro]
- core-asm-generic: reintroduce HAVE_ASM_NOP check
[ Colin Ian King ]
- Makefile: bump version
- Makefile: add missing core-time.h from headers
- Makefile: remove snap from make dist rule
- stress-touch: fix missing help args for --touch-method and --touch-opts
- stress-ng: fix missing arg for --timer-slack help
- stress-stream: fix --stream-index help, missing arg
- stress-ring-pipe: fix help, missing args for --ring-pipe-num and
--ring-pipe-size - stress-mremap: fix type in mremap-mlock help
- stress-module: use settings names and variable names that match
boolean args - core-opts: module-no-modver and module-no-vermag are argless, fix these
- stress-ng: fix --max-fd help, needs arg N
- stress-dirmany: fix --dirmany-bytes option in help
- stress-cache: fix help for cacheline writeback should be --cache-clwb
- stress-affinity: add missing numeric arg in --affinity-sleep option
help - stress-llc-affinity: Fix spelling mistake "memiry" -> "memory"
- Makefile: restore verify-test-all to 5 secs per stressor
- stress-misaligned: double the timeout time for very heavily loaded
systems - stress-cpu-online: fix nixos build error, missing semicolon
- stress-kvm: skip stressor if /dev/kvm is already in use
- Makefile: ignore warning return values in regression tests
- stress-syscall: Add BSD rfork() system call
- README.md: add another kernel reference
- stress-mlock: only show munlock metrics if they are available
- core-opts: fix disabled --perf option
- Add map_shadow_stack to TODO list
- stress-enosys: add map_shadow_stack
- stress-dev: only use stress_dev_hid_linux if HAVE_LINUX_HIDRAW_H is
defined - stress-ng.h: define _RENTRANT for sun builds for threading
- test/test-builtin-bitreverse: don't use random() to remove OpenBSD
warnings - tests: don't use random() to remove OpenBSD warnings
- core-cpu-cache: cast uint32 values to uint64_t before multiply
- stress-sigbus: unconstify ptr8, clean up pedantic warnings:
- core-helper: stress_write_buffer: use void * for ptr rather than char *
- core-setting: fix const warning with pedantic builds
- core-sort: fix const warning with pedantic builds
- stress-icache: make function stress_icache_func static
- stress-zero.c: only declare mmap_counter and mmap_index for linux
builds - stress-softlockup: reduce scope of variables t and d
- stress-icache: reduce scope of variable val
- stress-fma: fix return type of stress_fma_rnd_float to float
- core-builtin: ensure shim_sqrtl returns long double
- stress-bad-ioctl: constify pointers
- stress-bad-ioctl: reduce scope of variables type, nr and ret
- stress-aiol: cast result of multiply to same type as offset
- core-cpu-cache: make cache_size match the same type as
cpu->caches[i].size - stress-af-alg: constify pointer ptr
- core-shim: shim_posix_fallocate: reduce scope of variable ret
- core-numa: stress_parse_node: constify pointer str
- core-affinity: stress_parse_cpu: constify pointer str
- core-setting: remove unused field uintptr_t from struct
- core-interrupts: change scope of pointer ptr
- stress-watchdog: re-work code to remove need for watchdog_close label
- Makefile: force vnni to be built with at least -O2
- stress-vnni: move scope of variable to inside loop
- stress-far-branch: clean false positive gcc warning by initializing ptr
- stress-bad-altstack: make variable rnd non-clobberable
- Add --interrupts option to enable interrupt accounting
- core-interrupts: parse /proc/interrupts once for all types
- README.md: add another paper citation
- README.md: add two more kernel issues found with stress-ng
- stress-enosys: add fchmodat2
- stress-syscall: add fchmodat2
- test-chmod: add fchmodat2 Linux 6.6 call and shim, add fchmodat shim
- core-opts.h: move PR_OPT option macros to core-opts.h
- core-opts: move gnu long options into core-opts.c
- stress-prctl: add build check for new prctl macros
- stress-prctl: exercise PR_RISCV_V_{GET|SET}_CONTROL
- stress-prctl: add PR_GET_AUXV
- README.md: add another kernel issue found using stress-ng
- stess-schedmix: reduce scope of variable policy and remove
initialisation - test/test-vfork.c: replace exit with _exit
- stress-jpeg: stress_rgb_compress_to_jpeg: ensure duration is
initialized to zero - stress-dev: add lseek + read on /dev/nvram, voidify some args to
/dev/hid - stress-dev: exercise linux /dev/hid ioctls
- stress-dev: exercise linux /dev/acpi_thermal_rel ioctls
- stress-ng.h: rename PR_* macros to OPT_FLAGS_PR_*
- core-thermal-zone.h: move perf related structs and defines to
core-thermal-zone.h - core-perf.h: move perf related structs and defines to core-perf.h
- stress-ng.h: remove unused typedef stress_func_t
- README.md: add Anisse Astier to contributors list
- Manual: rename AF_ALG stressor title
- stress-netdev: exercise invalid lengths in ifr_ifindex and ifc_len
- core-helper.h: move stress_align_stack into core-helper.h
- core-time: move function prototypes to core-time.h
- move stress_pagein_self definition to core-thrash.h
- core-helper.h: move stress_warn_once from stress-ng.h to core-helper.h
- stress-ng.h: remove unused legacy function declarations
- core-helper: move stress_sigchld_set_handler from stress-ng.c to
core-helper.c - include core-killpid.h for stress_killpid definition
- stress-ng.h: remove stress_killpid, it is in core-kill.h
- stress-ng.h: remove stress_clean_dir
- core-helper: move stress_clean_dir and helpers to core-helper.c
- core-helper: rename pr_* helper functions to stress_*
- Makefile: add core-shim.h to headers
- core-helper: move function prototypes and macros to core-helper.h
- core-shim: move function prototypes and typedefs to core-shim.h
- Remove snapcraft yaml file
- core-helper: provide non BSD no-op variants of getsysctl functions
- stress-sock: enable --sock-msgs option, set default from 1 to 1000
messages - stress-sock: remove need to assign recvfunc pointer for every send
- Manual: clarify support for --vmstat option
- Manual: add --metrics RSS description
- stress-dccp: add --dccp-msgs option, set default from 16 to 10000
messages - README.md: add some more citiations
- Manual: minor stressor description tweaks
- Manual: minor corrections
- Manual: re-adjust first option after each stressor heading using .TQ
- stress-ng: make --metrics brief dump just bogo-ops metrics, more
metrics with --metrics option - stress-null: add --null-write for write only null benchmarking
- core-shared-heap: move function prototypes to core-shared-heap.h
- core-processes: move function prototypes to core-processes.h
- core-sched: remove unused function stress_set_deadline_sched
- core-sched: move function prototypes to core-sched.h
- Makefile: add missing core-limit.h
- stress-ng.h: replace lock declarations with include of core-lock.h
- core-mwc: move function prototypes to core-mwc.h
- core-log: move function prototypes to core-log.h
- core-setting: move function prototypes to core-setting.h
- core-: add missing extern and missing inclusion of header in corec
- Add core-attribute.h and core-parse-opts.h
- core-out-of-memory: move function prototypes to core-out-of-memory.h
- core-lock: move function prototypes to core-lock.h
- core-limit: move function prototypes to core-limit.h
- core-job: move function prototypes to core-job.h
- core-vmstat: move function prototypes to core-vmstat.h
- core-try-open: move function prototypes to core-try-open.h
- core-numa: move function prototypes to core-numa.h
- core-mounts: move function prototypes to core-mounts.h
- Makefile: add two missing header files
- core-mmap: move function prototypes to core-mmap.h
- core-mlock: move function prototypes to core-mlock.h
- core-mincore: move function prototypes to core-mincore.h
- core-madvise: move function prototypes to core-madvise.h
- core-klog: move function prototypes to core-klog.h
- core-killpid: move function prototypes to core-killpid.h
- core-io-priority: move function prototypes to core-io-priority.h
- core-interrupts: move function prototypes to core-interrupts.h
- core-ignite-cpu: move function prototypes to core-ignite-cpu.h
- core-cpuidle: move stress_log_cpuidle_info to core-cpuidle.h
- core-affinity: move function prototypes to core-affinity.h
- stress-ng: stress_class_info_t: constify class
- stress-ng: stress_verifiable_mode: constify mode arg
- stress-ng: move stress_kill_stressors to remove need for forward
declaration - stress-ng: rename some variables, add some inlining
- stress-ng: rename classes to stress_classes
- stress-ng.h: minor clean-ups
- stress-ng.h: move some compiler specific #define's
- core-opts: move long option enum into core-opts.h
- stress-ng: fix spelling mistake in --oom-avoid message
- README.md: update list of contributors
- Manual: minor indention fixup for some hdd stressor options
- stress-ng.h: use STATX definitions for SHIM'd macros if they exist
- stress-ng.h: some minor #define and comment clean-ups
- stress-ng.h: remove old legacy HDD flags and fix starting bit for
OPT_FLAGS_METRICS - stress-ng.h: annotate the bit flags for the option flags
- stress-ng.h: remove g_caught_signal - it is no lon...