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