Releases: ColinIanKing/stress-ng
V0.18.05
stress-ng V0.18.05 "manic machine masher"
New Stressors
- --sighup, SIGHUP stressor
- --pseek, pwrite/pread concurrent seek position stressor
New Options
- --icmp-flood-max-size to specify max random icmp flood packet size
- --far-branch-flush to force instruction cache flushing
- --sem-sysv-setall for SYS-V semctl SETALL command
- --sem-shared for shared semaphore across sem stressors
Detailed Changelog
[Denis Ovsienko]
- README.md: Update Haiku particulars.
- stress-fcntl: fix multiple workers on Haiku
- stress-touch: Fix file name handling in stress_touch_dir_clean().
- Exempt Haiku from scheduling tests.
[Lukas Durfina]
- stress-vm: use correct method names for error messages
- stress-fp: support bf16
[Colin Ian King]
- Makefile: bump version
- README.md: add another kernel bug report
- stress-tree: only pack tree struct for 64 bit x86-64
- stress-iomix: don't report an error in EINTR on lseek
- stress-file-ioctl: only report there are no ioctls tested on instance 0
- stress-ng.h: define NAME_MAX for systems that don't define this
- stress-pseek: only define stress_peekio_pthread if using pthreads
- README.md: add another kernel bug reference
- stress-bad-ioctl: fix lock segfault on removal
- stress-cpu: add comment about pcc warning in union exerciser
- core-*: add gcc function attribute returns_nonnull for extra sanity checking
- stress-vecfp: minor space adjustments in array declaration
- stress-jpeg: break some long lines
- Manual: add notes about support for stress-ng
- README.md: add some more kernel bugs and performance improvement links
- README.md: Add another research paper link
- stress-fd-race: add even/odd fd stride close to random closing
- kernel-coverage: fix btrfs option -csum, should be --csum
- stress-close: clean up some block comments
- Manual: Fix typo "spinemm" ->" "spinmem"
- Manual: minor change, "note - " to "note: "
- README.md: Update number of stressors, 350+
- stress-dev: rename stat bufs to avoid name shadowing
- core-*: add gcc function attribute nonnull for extra sanity checking
- README.md: Add Lukas Durfina to contributor list
- stress-sighup: add send/recv handshake over pipe and sync on child death
- stress-sighup: add missing bogo-op counter
- stress-pseek: cast offsets to intmax_t to print with %j format specifier
- stress-icmp-flood: voidify return from stress_get_setting
- stress-sighup: add SIGHUP stressor
- stress-sigtrap: Fix short help, it has the wrong description
- stress-sigabrt: Fix short help, it has the wrong description
- stress-sigabrt: fix typo, SIGABORT -> SIGABRT
- core-asm-riscv.h: fix typo in comment
- stress-icmp-flood: add new --icmp-flood-max-size option
- stress-schedmix: remove trailing whitespaces
- stress-schedmix: add some randomness to deadline times
- stress-schedmix: add select and pselect timed delays to sched mix
- Makefile.machine: replace objdump with readelf to detect machine type
- Makefile: add $(PRE_V) before eigen if statement
- stress-jpeg: replace division with recipriocal multiply in plasma
- stress-icmp-flood: don't keep on setting packet up on each loop
- kernel-coverage: add /usr/sbin to $PATH
- stress-fp: fix incorrect placement of #if defined for ibm128 division
- stress-fp: add IBM powerpc ibm128 floating point add/mul/div operations
- stress-far-branch: add --far-branch-flush option to try to flush instruction cache
- README.md: update number of stressors, 350 are now available
- core-helper: add root like detection for Cygwin
- stress-dev: exercise more sound control ioctls
- core-config-check: enable oom-avoid for containerized environment
- stress-daemon: rename err exit labels for improved readability
- core-klog: log audit kernel log messages
- stress-dev: use strscpy for safe copying of strings
- stress-pseek: pwrite/pread concurrent seek position stressor
- Manual: fix --hdd rd-seq option description
- Manual: fix --hdd rd-rnd option description
- stress-hdd: ensure hdd_bytes_max is set to the max number of bytes written
- kernel-coverage: add --change-cpu per stressor and use --ksm for vm stressor case
- stress-iomix: exercise cachestat(2) with invalid flags and invalid fd
- stress-cgroup: add more cgroup controls to read/write
- stress-dev: exercise ioctl command TIOCCONS
- stress-dev: add /dev/sg* devices to be exercised by stress_dev_scsi_blk
- stress-dev: fix DM_LIST_VERSIONS ioctl and add some invalid ioctl calls
- stress-dev: fix dm ioctl stressor, use /dev/mapper/control
- stress-ng: remove check to stress_cwd_readwriteable
- core-config-check: add hint to use --oom-avoid on low memory systems
- Makefile: add source dependencies for stress-eigen-ops.o
- kernel-coverage: add more per file system mount options for increased kernel coverage
- stress-dev: exercise /sys/dev/* files on Linux systems
- core-helper: add naive Haiku libc information detection
- README.md: update contributors list
- stress-binderfs: exercise binderfs dev entry removal
- stress-mergesort: remove ALWAYS_INLINE from a comment
- stress-sigq: exercise invalid rt_sigqueueinfo call
- stress-xattr: exercise xattr on TMPFILE
- stress-tlb-shootdown: break func args into multiple lines
- stress-timerfd: minor alignment of data in source
- stress-sparsematrix: minor optimization hints
- stress-sock: make stress_send_error a PURE function
- stress-full: only declare and use variable w for linux builds
- README.md: Add LP#2080853 bug to known bugs found by stress-ng
- stress-full: enable of Solaris, FreeBSD and NetBSD
- stress-full: report errno for seek failures
- stress-af-alg: fix two heap memory leaks
- stress-af-alg: fix inverted assocdata allocation failure check
- Makefile: add rebuild dependency on Makefile.machine
- Makelfile.machine: remove tabbed empty line
- core-sort: add copy/swap helper functions for specific and generic sizes
- stress-fcntl: exercise Linux 6.12 F_CREATED_QUERY fcntl command
- stress-acl: stress_acl_cmp: constify acl1 and acl2 arguments
- core-helper: stress_get_libc_version: make educated guess that musl-libc is being used
- stress-file-ioctl: voidify function arg fd if it's not used
- core-helper: stress_get_fs_info: voidify filename if it's not used
- Makefile: make musl-gcc detection more robust
- README.md: Add another research paper link
- Makefile: only define _FORTIFY_SOURCE if it's not defined
- stress-numa: fix typo in comment
- kernel-coverage: add --interrupts option to each test run
- kernel-coverage: add --acl-rand option to acl stressor
- kernel-coverage: add --mmap-slow-munmap to mmap stressor
- kernel-coverage: add --memfd-zap-pte option to memfd stressor
- kernel-coverage: add --get-slow-sync get stressor option
- kernel-coverage: add --swap-self swap option
- kernel-coverage: add --sockfd -1 --sockfd-reuse test case
- kernel-coverage: add --yield -1 --yield-sched scheduler tests
- kernel-coverage: add --c-state to cpu stress test case
- kernel-coverage: add --cpu -1 --raplstat 1 --rapl test case
- kernel-coverage: add --sem-shared option for sem stressor
- kernel-coverage: add --sem-sysv-setall sem-sysv test case
- stress-af-alg: put fixed sized buffers on the stack rather than heap
- core-helper: make blocks the correct unsigned type
- stress-file-ioctl: add some per-file system specific ioctls
- kernel-coverage: add -v verbose option when running stressors
- kernel-coverage: run procfs stressors for longer
- stress-poll: exercise invalid fd being passed into poll()
- stress-sem-sysv: add option --sem-sysv-setall
- stress-dev: exercise linux /dev/bsd/* scsi block devices
- core-setting: print bool type values as true or false
- core-setting: remove need for dup'ing name string
- stress-dev: replace __u32 with uint32_t to fix musl libc builds
- core-*: print per-stressor settings when -v is enabled
- stress-dev: check for autofs #defines for stress_dev_autofs_linux
V0.18.04
stress-ng V0.18.04 "canny kernel crusher"
Bugfix release, bug fixes:
- fix vm memory % size parameter handling, https://bugs.launchpad.net/ubuntu/+source/stress-ng/+bug/2078871
- stress-numa: make all of buf map to the current numa node for correct NUMA page moving
- stress-af-alg: remove JMP debug message
Detailed Changelog:
- Makefile: bump version
- Makfile: add Makefile.machine to make dist rule
- stress-dev: clean up build warning on non-x86 builds
- stress-numa: rename ptr with str to fix name shadowing warning
- stress-vm: remove debugging setting if in statement
- Makefile.machine: add check for existence of readelf
- core-ftrace: remove PURE attribute on void return functions
- stress-*: fix vm memory % size parameter handling
- stress-vm: provide more information when mmap fails
- stress-numa: make all of buf map to the current numa node
- stress-numa: parse /proc/self/numa_maps to see if buf is on the expected node
- core-shim: remove a space
- core-*: add PURE attribute to pure functions
- core-killpid: constify variable saved_errno
- core-cpu: re-order CPUID strings, add some missing examples
- stress-umount: remove extraneous empty line
- stress-udp: add missing empty line
- stress-tmpfs: make variable i const
- stress-sparsematrix: move pointer next to inner scope
- stress-sockpair: convert nested if statement into switch statement
- stress-sigurg: inline helper function stress_send_error
- stress-sigsegv: remove empty line
- stress-sigrt: remove empty line
- stress-set: put rlimit resource ids into a const rlimit_resources array
- stress-session: make function argument err const
- stress-rotate: make variables lo and hi const
- stress-rmap: clean up switch statement, make i a register
- stress-resched: make variables percent and scale const
- stress-pci: reduce scope of pointer next
- stress-opcode: make variable tmp const
- stress-nice: make variable which const
- stress-mutex: make variable max const
- stress-mmap: make variable offset const
- stress-mlock: make variable mlocked const
- stress-*: add power10 builtin check support
- stress-mknod: constify variable j
- stress-memcpy: use the o1 and o2 variants in the "all" method
- stress-membarrier: remove empty line
- stress-led: reduce scope of pointer 'next'
- stress-klog: make buflen const
- stress-insertionsort: constify variable tmp
- stress-hdd: constify variable v
- stress-hash: explicitly use float values in chi computation
- stress-dev: add naive simple /dev/autofs exerciser
- stress-chattr: add mmap'd page modification to file, add metrics
- stress-dev: exercise /dev/cpu/0/msr ioctl reading of TSC
- stress-dev: add /dev/cpu/0/cpuid device stressor
- core-*: don't include <sys/sysctl.h> on Linux targets
- stress-cpu: constify some variables and add register to some variables
- stress-clock: constify variable clkid
- stress-chattr: constify variable bitmask
- stress-cgroup: constify variable offset
- stress-cacheline: constify variable 'now'
- stress-mlockmany: remove stray const in start of source
- stress-bitops: constify some variables
- stress-apparmor: constify variables, fix p wrap overflow using the ternary operator
- Manual: add in recursive hints to CPU stressor manual
- Makefile: improve machine detection and disable -fmodulo-sched for S390x builds
- stress-*: constify stressor_info_t structs
- stress-aiol: constify offset
- stress-af-alg: remove JMP debug message
- stress-acl: constify variables, clean up some code alignment
- stress-: voidify returns from sig() calls
- stress-sem: add --sem-shared option to share 1 semaphore with all sem instances
V0.18.03
stress-ng V0.18.03 "persistent process pressurizer"
New Stressors:
lockmix - mixed file locking stressor
fibsearch - Fibonacci search (like bsearch, but uses less compute)
bubblesort - inefficient classic bubble sort
New options:
--c-state - show C state residency at end of stress testing
--pause N - pause N seconds between each stressor invocation to allow for system to cool
,
New stressor classes:
fp, integer, ipc (inter-process communication), sort and vector
Detailed changelog:
[Aboorva Devarajan]
- core-target-clone: fix power9 target build issue
[Colin Ian King]
- Makefile: bump version
- stress-ng: add vector class to --class option
- stress-dekker: fix failures for out-of-order processors
- stress-ng: fix -x option for options with - in the name
- stress-syscall: rename sigset to sigmask to avoid gcc-4.4 variable
shadowing warning - stress-syscall: rename clock to clock_id to avoid gcc-4.4 variable
shadowing warning - stress-shm-sysv: rename syscall to syscall_name to avoid gcc-4.4
variable shadowing warning - stress-jpeg: rename func param time to whence to clean up gcc-4.4
name shadowing warning - stress-fd-race: rename dirfd to dir_fd to avoid gcc-4.4 variable
shadowing warning - stress-enosys: rename func param random to do_random to avoid name
shadowing gcc 4.4 warning - core-shim: rename dirfd to dir_fd to avoid gcc-4.4 variable shadowing
warning - README.md: move kernel issue to correct place in README file
- README.md: add another kernel issue to bug list for 2024
- stress-module: only increment bogo counter on successful module load
- stress-module: check for .ko module name ending
- stress-module: update module search failure message for compressed kos
- stress-module: ignore compressed .xz modules
- stress-module: try several test modules rather than just test_module
- core-shim: return ret instread of errno in shim_posix_fallocate
- stress-zlib: reduce checksum to 32 bits for faster compute
- core-shim: remove unused variable ret
- core-shim: make shim_posix_fallocate return error code on failure
- core-shim: check ret rather than errno on posix_fallocate failure
- core-shim: cater for EOPNOTSUPP in posix_fallocate failure
- stress-lsm: move ctx and ctx_end to inner loop scope
- stress-sigurg: clear bogo-op counter flag if child is killed during
bogo inc - README.md: Add another research paper link
- Manual: fix spelling mistake "subraction" -> "subtraction"
- test/test-libgbm.c: replace whitespace with tabs
- stress-dirdeep: remove debug printf statement
- stress-personality: check for no personalities using supported
callback - stress-efivar: remove need for packed attribute
- stress-get: exercise getlogin at end of stressor loop
- stress-uprobe: report why uprobe cannot be run with static builds
- stress-get: remove redundant #ifdef
- stress-bind-mount: check for multiple stat failures on bind mounted
directory - stress-efivar: fix access checks and check on attribute
- stress-efivar: specify efi var fields in terms of uint8_t types
- README.md: add another kernel bug found with stress-ng
- stress-inotify: remove const from helper void arg
- core-cpuidle: ensure there is plenty of space for filename snprintf
formatting - core-shim: only call stime for glibc < 2.31
- stress-lsearch: clean up some more pointer constification warnings
- stress-lsearch: clean up some constification warnings
- stress-fibsearch: remove re-declaration of pointer ptr
- stress-bsearch: clean up some constification warnings
- stress-binderfs: stress_binderfs_supported: return -1 for non-linux
builds - stress-zlib: correct comment for function stress_rand_data_inc16
- stress-mergesort: minor optimization re-ordering tweaks
- stress-heapsort: use copy and swap helper for different data sizes
- stress-sigq: add sigq to IPC class of stressors
- stress-*: add ipc (inter process communication) class
- stress-misaligned: use CLOCK_PROCESS_CPUTIME_ID for timer
- core-time: stress_duration_to_str: add flag report_secs to always
report secs - stess-cgroup: add mount EBUSY retry. Also add mount/umount retry debug
- core-config-check: fix memory load on string lowstr
- stress-lockmix: add a mixed file locking stressor
- core-config-check: warn if the run environment is not suitable for
stress-ng - Manual: Fix grammar on --log-lockless description
- *.c: remove trailing tabs and white space from ends of lines
- stress-lsearch: use simpler check to speed up comparisons
- stress-fibsearch: make array indexes ssize_t for potential -ve ranges
- stress-bsearch: rename bsearch-ternary to ternary in method option
- stress-bsearch: add a 3-way ternary search method
- stress-lsearch: add a key sentinel search method
- Makefile: add fibsearch (Fibonacci search) stessor
- stress-hash, stress-tree: add stressors to search class
- stress-bubblesort: rename bubblesort method to bubblesort-fast
- stress-sort*: add sort class
- stress-bubblesort: add bubblesort stressor
- core-cpuidle: name busy state C0 for x86 and BUSY for other arches
- README.md: add C-state residency example
- stress-vm: stress_vm_mod: replace while loop with two if statements
- core-cpuidle: add C-state measurements with --c-state option
- kernel-coverage: add umount sanity check on umount failures
- stress-*: add integer and fp classes
- stress-vec*: remove CLASS_CPU_CACHE flag
- stress-fd-race: add helper to close fds in different orders
- stress-close: exercise flag field with close_range call
- stress-inotify: remove empty line
- stress-oom-pipe: fix valid fd check before closing the fd
- stress-tee: ensure fd is closed on error exit path
- stress-poll: use correct array index variable for closing fds
- stress-link: exercise pathconf on oldpath instead of testpath
- stress-session: close pipe fds on error exit path
- stress-shm: close pipe fds on error exit path
- stress-vm-segv: close pipe fds on error exit paths
- stress-key: replace vararg system call with 5 arg system call
- stress-fd-race: fix error return paths not cleaning up allocated
resources - stress-close: clean up some file descriptor handling
- stress-tee: fix error handling closes on pipe file descriptors
- stress-x86syscall: initialize time1, time2 to zero
- stress-workload: add check for non-null threads array
- stress-sysbadaddr: close pipe fds if pipe succeeds
- stress-inotify: avoid double close on fd
- stress-syscall: fix fd leaks on pipes on tee syscall stress case
- stress-daemon: clean up file descriptor closing on error return paths
- core-helper: fix pipe file descriptor leak on error path
- core-asm-ret: constify stress_ret_opcode
- Makefile: add -fivopts -fmodulo-sched optimization options
- core-target-clones: add power10 cpu support
- Makefile: remove incorrect scan-build basename check
- stress-vma: fix void * pointer arithmetic warning on data + offset
- stress-*: exercise pathconf options on various files
- stress-get: exercise getlogin since this is a syscall on *BSD systems
- core-lock: use a single mapped page for all shared locks
- core-lock: put lock functions into per lock type struct
- README.md: add another reference link
- stress-waitcpu: only use umwait for x86-64 and LP64 (non-x32 builds)
- core-helper: rename stress_x86_smi_readmsr64 to stress_x86_readmsr64
- core-lock: provide created locks a name to track locks
- core-lock: add lock type into VMA anon name
- stress-numa: mmap all allocations and name the anon VMAs
- stress-numa: add simple page data checking
- stress-ng: remove "signal" from signal termination message
- stress-opcode: set child signal handlers before stress_shared_readonly
- stress-*: add some more pointer constifications
- stress-swap: produce more meaningful swap out metrics
- stress-misaligned: replace "got stuck" with "not fully tested"
- stress-resources: add stress_resources_access to access various
resources - stress-utime: exercise a wide range of huge times with utime
- Manual: add missing --ipsec-mb-feature option noaesni
- stress-cyclic: reduce spamming of the same error message with many
instances - stress-binderfs: check in init stage if binderfs mounts are supported
- stress-intmath: fix incorrect class flags, should be CLASS_CPU |
CLASS_COMPUTE - stress-ng: make g_opt_pause unsigned int and add pause time in
progress time - core-log: increase per line log buffer to 8K
- stress-ng: add pause option to add pauses between each stressor
invocation - stress-ng: show settings even if no stressors are run
- core-rapl: align stats with the tz stats
- stress-intmath: add signed integer math + - * % operations
- stress-waitcpu: replace ;; with ;
- stress-prefetch: replace ;; with ;
- stress-chattr: replace ;; with ;
- core-vmstat: replace ;; with ;
V0.18.02
stress-ng V0.18.02 "punchy process pounder"
New stressors:
- bitops - integer bit operations stressor (from Standford bithacks and Hacker's Delight)
- spinmem: spin memory access stressor (for memory contention)
- fd-race: file descriptor open/access/close race stressor
- sigill - SIGILL signal stressor
- sigvtalrm - SIGVTALRM signal stressor
- sigurg - SIGURG signal stressor
New options:
- rapl - show Intel x86 power utilization using RAPL (Running Average Power Limit)
- raplstat - show periodic Intel x86 power utilization using RAPL
Detailed changelog:
[Chunyu Hu]
- stress-hrtimers: follow sched setting
[Myd Xia]
- stress-ng: add qnx support
[Colin Ian King]
- README.md: remove extraneous spaces in examples
- README.md: Add RAPL power example
- README.md: add a I/O permuted stressor example
- stress-swap: clean up error messages when using stress_get_fs_type
- core-helper: add ZFS magic
- Add ELISA presentation "Improved system stressing with stress-ng"
- Manual: fix spelling mistake "desciptors" -> "descriptors"
- stress-physpage: fix zero fd check on close
- stress-chattr: initialize IOC_GETFLAGS arg before calling ioctl
- stress-sigurg: only use O_ASYNC if it is defined
- stress-pty: include sys/ioctl.h, cleans up cygwin build warning
- stress-sockfd: move rc and nbytes declaration into a code block
- stress-sockfd: add #ifdef around FIONREAD ioctl
- stress-physpage: use stress_mmap_populate for MAP_POPULATE mmaps
- stress-zero: cast ptr to clean up mmap warnings
- stress-sysfs: cast ptr to clean up mmap warnings
- stress-procfs: cast ptr to clean up mmap warnings
- stress-physpage: cast ptr to clean up mmap warnings
- stress-munmap: cast mmap return to munmap_context_t * to clean up pedantic warning
- stress-efivar: cast efi_var to void * for mmap and munmap
- stress-fork: cast unmap_start to void * for munmap calls
- stress-dev-shm: cast addr for mmap, mummap and msync calls
- core-cpuidle: clean up pedantic warning with gcc 10.3.0
- core-sched: remove unused function stress_set_deadline_sched
- Manual: add missing deadline cyclic-policy option, rename ff to fifo
- stress-cyclic: clear up pedantic warnings when no cyclic methods are available
- stress-cyclic: clear up pedantic warnings when no scheduling policies are available
- stress-logmath: fix build issue on Nixos, need lvalue
- stress-expmath: fix build issue on Nixos, need lvalue
- stress-sigurg: ignore return from F_SETFD fcntl call
- stress-gpu: trim newline off infoLog messages
- stress-open: report number of fds to be used after they have been adjusted
- stress-open: shrink number of fds if allocation is too large
- stress-oom-pipe: shrink number of fds if allocation is too large
- stress-sockfd: limit to 1024 * 1024 file descriptors
- stress-fd-race: limit to 1024 * 1024 file descriptors
- stress-userfaultfd: add missing HAVE_POLL_H and HAVE_POLL checks
- stress-sysbadaddr: add missing HAVE_POLL for bad_poll function
- stress-sigurg: remove redundant variable msgs
- stress-fd-race: remove unused variable writes
- stress-mq: only declare fds if poll() is available
- Makefile: disable smi stressor for regression tests
- stress-signest: add missing SIGURG signal
- stress-shm: retry shm mmap without MAP_ANONYMOUS if EINVAL is returned
- stress-fractal: cast info.data to void * for munmap call
- stress-ng: cast mmap return to stress_pid_t *
- stress-fd-race: move stress_fd_race_context_t declaration
- stress-fd-race: add build time check for pthread barrier support
- stress-bad-alt-stack: use zero_stack instead of bad_stack
- stress-ng: use localtime for completion times
- stress-ng: report permuted stressors and show progress
- stress-sigurg: add a SIGURG out-of-band socket signal stressor
- stress-sigpipe: initialize data before loop
- stress-sigpipe: remove need for a parent/child mechanism
- stress-sigill: add a SIGILL illegal instruction signal stressor
- stress-sigvtalrm: fix help information
- stress-*: add CLASS_SIGNAL class flags to stressors that generate signal loads
- stress-sigvtalrm: use user time as run time count check not wallclock time
- stress-sigvtalrm: sanity check signal count after 1 second of run time
- stress-sigvtalrm: add SIGVTALRM signal stressor
- stress-*: add built time check for poll() system call
- stress-fd-race: randomize syscalls on fd's
- README.md: add another link to a research paper
- stress-ng: sanity check if excluded stressor name is valid
- README.md: update number of stressors
- stress-fd-race: add ignore list of files not to exercise
- core-numa: ensure pointer str is initialized to NULL
- stress-fd-race: add a new stressor to race file descriptor access and closing
- core-lock: use #if/#elif rather than many #if/#endif sequences
- core-ftrace: make char * pointer num const
- stress-h*: add syncwait proc state for --sync-start state waits
- stress-*: add syncwait proc state for --sync-start state waits
- core-ignite-cpu: remove unused field cur_freq from struct stress_cpu_setting_t
- core-cpu-cache: rename index to idx to avoid name shadowing on index()
- core-affinity: only set cpu affinity if CPU affinity bits are set
- core-time: stress_duration_to_str: emit 0 secs if no time has been formatted
- stress-brk: add sanity check for sbrk always returning out of memory
- stress-spinmem: add CLASS_CPU_CACHE to class flags
- stress-ramfs: abort early on mount/umount EPERM errors
- stress-ramfs: cater for EPERM on containerized umount failure
- stress-io-uring: cater for EPERM on containerized io-uring setup permission denied
- README.md: make packages list more compact
- stress-umount: cater for EPERM on containerized mount failure
- stress-reboot: cater for EPERM on containerized reboot call failure
- stress-ramfs: cater for EPERM on containerized mount failure
- stress-netlink-proc: fix skipped rc code, it should be EXIT_NO_RESOURCE
- stress-numa: skip stressor on EPERM on get_mempolicy
- stress-netlink-proc: skip stressor on EPERM on bind (containerized)
- stress-key: skip stressor on EPERM on add_key in container
- stress-fp-error: relax fp pedantic error checking for musl-gcc builds
- core-helper: fix macro typo HAVE_COMPILER_MUSC -> HAVE_COMPILER_MUSL
- stress-binderfs: cater for EPERM on containerized mount failure
- stress-cgroup: cater for EPERM on containerized mount failure
- core-thrmal-zone: constify dirent pointer entry
- core-thrash: constify dirent pointer d
- core-mounts: constify pointer mnt
- core-resources: stress_resources_free: constify args parameter
- core-rapl: constify pointer entry
- core-numa: constify pointer str
- core-process: constify pointer ptr
- core-module: constify pointer l
- core-cpu-cache: only define type stress_generic_map_t for Linux builds
- core-cpuidle: constify pointers cpu_d and cpuidle_d
- stress-rdrand: fix build issues where HAVE_SEED_CAPABILITY is not defined
- core-parse-opts: add stress_get_{int|uint} prototypes
- stress-sigabrt: remove volatile from struct pointer sigabrt_info
- README.md: Add Linux Foundation 2024 ELISA presentation link
- core-madvise: use unsigned int for major and minor
- core-perf: add maple_tree/ma_op event
- stress-bind-mount: skip stressor we don't have access
- stress-waitcpu: Fix umwait0 and umwait1
- stress-*: name mmap'd regions to help debugging
- core-helper: add libc version to yaml output
- stress-ng: remove trailing tab
- core-lock: name anonymous mappings
- stress-ng: name anonymous mappings
- core-*: name anonymous mappings
- stress-vma: use stress_set_vma_anon_name to set anon vma name
- stress-vma: add more prctl macro build time checks
- Manual: update vma stressor description, 32 pages now being exercised
- stress-vma: name anonymous pages with prctl
- stress-vma: move stress_vma_continue_flag to enable mapped regions
- stress-ng: remove empty lines, reformat a comment block
- stress-ng: inline helper function stress_get_num_stressors
- stress-ng: inline helper function stress_append_stressor
- stress-ng: munge stessor names using stress_readable_name helper
- stress-ng stress_run_sequential: remove continue if statement
- stress-jpeg: remove debug
- stress-jpeg: fix overflow with brown noise generator
- stress-ng: stress_exclude_unsupported: add check for null stressor->info
- stress-spinmem: new spin write/read parent/child stressor
- stress-ng: add stress_readable_name to munge stressor names into a readable form
- stress-ng: remove stressor id, it's now deprecated
- stress-ng: stress_exclude_unsupported: match stressors by address and not id
- stress-ng: rework if (ss->ignore.run) comparisons
- stress-ng: remove stressor_find_by_name
- stress-ng: remove need to call stressor_find_by_id to find stressor
- stress-netlink-task: add static analysis sanity check on nlmsgbuf_len
- stress-opcode: check for small text lens before proceeding
- stress-signess: use STRESS_BIT_ULL for bitmask setting (part 2)
- bash-completion: refresh with new stressor options
- stress-chroot: add missing ( ) around && errno expressions
- stress-ng: fix SIGTERM on parent causing child to return bogus EXIT_SIGNALED
- stress-sock: set starting port to 2000
- stress-*: use globally defined MIN_PORT, MAX_PORT and cater for port wrap-around
- core*: stress-*: Fix various spelling mistakes and typos
- stress-usersyscall: Fix spelling mistake "syscallls" -> "syscalls"
- stress-chroot: allow EINVAL and ENAMETOOLONG for Haiku chroot syscall
- stress-madvise: add missing help in opts for unsupported builds
- stress-cache: make cache_flags no...
V0.18.01
stress-ng V0.18.01 "synchronized synthetic stressor"
New stressors:
- --min-nanosleep to measure minimum time nanosleep will sleep
New options:
- --sync-start to synchronize the start of stressing with invoked stressor instances
- --mmapfork-bytes to specify mmap size
- --yield-sched to specify scheduler type (deadline | idle | fifo | other | batch | rr)
- --pci-dev option to specify a specific PCI device to exercise
Detailed changelog:
[Daniel Andriesse]
- stress-vecwide: fix verify option by setting results vector res
[Po-Hsu Lin]
- stress-cache: check RISCV_HWPROBE_EXT_ZICBOZ support for
stress_cache_bzero
[Sergey Matyukevich]
- mmapfork: add --mmapfork-bytes option to specify mmap size
[Colin Ian King]
- Makefile: bump version
- stress-ng: cast s_pids to void * in munmap to clear up OpenHipster build warning
- stress-fsize: reduce scope of variable offset
- stress-pci: reduce scope of i and n_devs
- stress-landlock: reduce scope of ruleset_fd
- stress-cgroup: reduce scope of array values and make it static const
- stress-cache: reduce scope of some variables
- stress-munmap: add sscanf string size limit to avoid potential buffer overflows
- core-thermal-zone: use PRIu32 format specifier for uint32_t type
- core-madvise: add sscanf string size limit to avoid potential buffer overflows
- stress-chroot: just report chroot escapes with instance 0
- stress-ng: make stress_pid_t state flag 8 bits
- stress-kvm: add early /dev/kvm open permission checking
- stress-fractal: report co-ordinates as (xmin, ymin) .. (xmax, ymax)
- stress-ng: comment the stress_pid_t helper functions
- stress-ng: add atomic load/store helpers for stress_pid_t state
- core-shared-heap: increase initial size of shared heap
- stress-ng: always send a SIGCONT to a waiting process
- stress-prio-inv: indicate a force killed bogo op-counter state when child exits
- stress-ng: remove stress_sync_start_cont, and remove debug
- stress-open: don't populate mmap'd fd array, it may not be all used
- stress-ng: stress_sync_start_cont_list: check against number of pids in list
- stress-ng: stress_sync_start_cont_list: take into account finished stressors
- stress-timerfd: configure timer after sync start has completed
- stress-ng: remove unused variable waiting
- stress-ng: add delay while waiting for stressors to start in loop
- stress-timer: configure timer after sync start has completed
- stress-itimer: configure timer after sync start has completed
- stress-munmap: fix incorrect clz where size_t is not long long
- stress-min-nanosleep: fix incorrect clz where size_t is not long long
- core-thermal-zone: clean up formatting of multiply tz names
- stress-goto: reduce optimization level for clang
- stress-yield: fix build for various non-linux systems
- stress-pci: move stress_set_pci_dev to support all arches
- stress-min-nanosleep: provide unknown sched name
- stress-min-nanosleep: fix build for various non-linux systems
- core-ops: forgot to commit the io-uring-rand option
- io-uring: add --io-uring-rand option for randomized io-uring ops
- stress-io-uring: reduce memory impact for smaller memory systems
- stress-*: remove trailing whitespaces
- Add --sync-start option
- README.md: add 4 more kernel issues found with stress-ng
- stress-min-nanosleep: report scheduler name
- stress-cpu: minor code clean-ups
- README.md: update contributors name list
- stress-cpu: matrixprod: align matrices
- stress-cpu: idct: re-factor, move some calculations out of loop
- stress-cpu: fft: align data and pass as restrict pointers
- stress-min-nanosleep: use the more optimal log2 function
- stress-sleep: fix expected C state delay, fix typo for selects message
- stress-min-nanosleep: report shorted nanosleep measurement
- stress-min-nanosleep: add check for short nanosleeps
- README.md: add Sergey Matyukevich to contributors list
- Manual: add missing --mmapfork-bytes manual option
- stress-min-nanosleep: add stressor that measures minimum nanosleep delay times
- stress-*: pass the number of stressor instances into the stressor init callback
- core-time: check for CLOCK_REALTIME when using it
- stress-sleep: use monotonic clock and stress_time_now() clocks for time measurement
- stress-sleep: fix typo "to" -> "took"
- stress-yield: add --yield-sched scheduler options
- stress-*: use core-sched.h to define HAVE_SCHED_{GET|SET}_ATTR macros
- core-sched: define HAVE_SCHED_GETATTR and HAVE_SCHED_SETATTR
- README.md: add one more research paper that references stress-ng
- stress-workload: use stress_sched_types for scheduler type information
- stress-schedpolicy: use stress_sched_types for scheduler type information
- stress-schedmix: use stress_sched_types for scheduler type information
- core-sched: allow stress_sched_types to be in global scope
- stress-monte-carlo: print monte-carlo computations as debug
- stress-ping-sock: add pre-run check and explain why it may fail with EPERM
- stress-ng: report stressor name in munged format, replace _ with -
- lib: remove build dependency on libgcrypt20
- stress-workload: make c static since it's used in pthread contexts
- stress-pci: Add a new --pci-dev option to specify the pci device
- stress-shellsort: remove empty line
- stress-pci: use strcmp on dentry name for sort ordering
- stress-io-uring: use O_DIRECT when it is available on files
V0.18.00
Stress-ng Release V0.18.00 "systematic system smasher"
New stressors:
- mseal Linux 6.10 mseal() system call stressor
- mtx ISO C mutex stressor
- besselmath libm Bessel function stressor
- insertionsort classic O(N^2) insertion sort stressor
New options:
- --sockfd-reuse to force reuse of socket file descriptors
Detailed changelog:
[Fabrice Fontaine]
- core-sched.c: fix uclibc-ng build
- stress-sock.c: fix build without SO_ZEROCOPY
[Hsieh-Tseng Shen]
- stress-cache: add stress_cache_bzero() to support cache-based bzero
- core-asm-riscv.h: support riscv zicboz ext cbo.zero instruction
[John Kacur]
- stress-ng: stress-stream: Fix use of uninitialized variable
[Po-Hsu Lin]
- core-ops: fix --logmath-ops option
- core-ops: fix --binderfs-ops option
[Colin Ian King]
- stress-mincore: cater for mincore on NULL returning ENOMEM on kfreebsd
systems - stress-vm-segv: only use mprotect if system call is supported
- stress-mseal: only use madvise if system call is supported
- README.md: add two more research papers that reference stress-ng
- stress-cache: add STRESS_ARCH_RISCV check and voidify func args for
non-RISC-V - stress-flock: voidify i for non-linux builds
- stress-af-alg: add more verification when using --verify
- README.md: add another research paper citation
- Manual: add a couple more stress-ng examples
- stress-vm-segv: don't unmap self for OS X
- core-lock: use stress_asm_loong64_dbar for loong64 relax spin lock
delay - stress-urandom: ignore ENOSYS system call returns
- stress-sigsegv: allow BUS_ADRERR for bus error codes
- stress-fcntl: add Linux 6.10 fcntl command F_DUPFD_QUERY, improve
checking - stress-cache: remove extraneous {
- stress-cache: remove unused cache flags more succinctly
- core-lock: disable atomic spin locks for ARM
- stress-af-alg: replace spaces with tab in indentation
- core-resources: allocate mutexes for each resource array loop
- core-resources: use ISO C mtx mutex resources
- stress-af-alg: add forced abort after 5 seconds of alarms
- stress-af-alg: add checks for EINTR on recv/send calls
- core-mincore: add MADV_POPULATE_WRITE to madvise flags
- core-vecmath: add check for 32 bit PPC to work around build issue
- core-lock: only perform backoff for fast CPU relax pauses
- README.md: add another kernel issue found by stress-ng
- stress-efivar: ensure stress_efi_var_t is aligned to clean up build
warning - core-lock: remove ARM yield, fallback to shim_sched_yield
- core-cpu-cache: fix bitmask of cache coherency line size
- core-lock: fix missing spinlock destroy when removing a spinlock
- Makefile: allow COVERITY=1 to disable macros that confuse cov builds
- stress-mseal: cast pointer to uint8_t * to clean up void * pointer
addition warnings - stress-vm-segv: make addr a uint8_t * pointer to simplify pointer
addition - stress-*: rename variable index to avoid name shadowing with lib
function index - stress-sysbadaddr: reduce scope of variable newargv
- stress-sleep: ensure residency_ns is computed using unsigned long
multiplication - stress-nanosleep: reduce scope of variable i
- stress-mmaphuge: reduce scope of array filename
- stress-mmapfiles: reduce scope of variable delta
- stress-iomix: reduce scope of variable ret
- stress-fork: reduce scope of variable pid
- stress-dirname: rename dirname to dirpath to avoid name shadowing
dirname function - stress-dirdeep: constify char * pointer name
- stress-crypt: reduce scope of string str
- stress-cgroup: reduce scope of some variables
- core-config-check: constify static char array path[]
- stress_rndstr: remove decrement of len in stress_rndstr, make len
const - core-ftrace: constify a few char * pointers
- stress-sysbadaddr: add mseal()
- stress-sysinval: add mseal
- stress-enosys: add mseal system call
- stress-vm-segv: force stack segv by mprotecting pages to PROT_READ
- stress-vm-segv: force zero optimization to ensure stackvar is on stack
- stress-vm-segv: ensure stackvar is written to and read from
- stress-bad-altstack: fix OpenBSD, add MAP_STACK and don't throw errors
- stress-vm-segv: unmap stack to force SIGSEGVs in child
- core-cpu-cache.h: include <stdarg.h> for shim_builtin_prefetch()
- stress-timerfd: open file_fd before all timer fds are opened
- stress-mmap: make rc non-clobberable due to longjmp
- core-shim: force emulation if posix_fallocate returns EINVAL
- stress-mseal: replace variable fail with boolean keep_running
- Makefile.config: remove some debug echos
- stress-mseal: add Linux 6.10 mseal system call exercising stressor
- Makefile.config: add libgmp when checking libmpfr
- stress-mutex: remove OpenBSD sleep
- core-mwc: re-work mwc*modn() using bit masking and removing modulo
operation - stress-vm-segv: remove clflush for OpenBSD as this causes issue
- stress-mlock: ensure max is not larger than the max number of mappings
- stress-mutex: fix some potential race issues
- stress-mutex: NetBSD requires the yield and sleep
- stress-mutex: use zero usleep instead of yield for NetBSD
- core-shim: emulate posix_fallocate for FreeBSD
- stress-sigsegv: remove OpenBSD check now that BUS_OBJERR is used
- stress-sigsegv: handle SIGBUS code with correct BUS_OBJERR
- stress-fp-error: relax fp error checks on soft-float builds
- README.md: add another citiation
- stress-schedmix: remove trailing space at end of a line
- core-mwc: remove tab in empty line
- core-mwc: use stress_get_machine_id to add extra data to seed
- core-helper: add stress_get_machine_id to get a 64 bit machine id
- stress-dup: only use O_CLOEXEC if it is defined for dup3 calls
- stress-tun: cast int value to uint8_t type for PRIu8 format
- stress-schedmix: ensure all pids in pids array are initialized to -1
- stress-dev-shm: use correct format strings for unsigned type
- core-parse-opts: use correct format strings for unsigned types
- core-ignite-cpu.c: use correct format strings for int types
- stress-vnni: force -O2 at -Os/-Oz as well
- core-helper: fix spelling mistake in comment
- stress-ng.h: increase per-stressor metrics STRESS_MISC_METRICS_MAX
to 96 for af-alg - stress-loadavg: remove system limit of pthreads when reducing
loadavg-max - core-ftrace: show failed open filename in error message
- stress-besselmath: use double precision for check sum on float bessel
functions - stress-netlink-task: break out of loop on EINTR or EAGAIN sendto
errors - stress-vm: remove redundant assignments to pointer ptr
- stress-prime: remove redundant assignment to variable rate
- stress-munmap: fix file descriptor resource leak on error return path
- stress-af-alg: add some sanity checks on digest and info args
- stress-fault: ensure buffer is zero'd
- core-job: zero string txt, keep cppcheck happy
- clear up pedantic cppcheck warning
- core-builtin.h: remove long cast workaround macros for Bessel shim
wrappers - core-buildin: fix j*l macros
- core-lock: uncomment #undefs used for debugging new locks
- stress-dev: include missing <sys/ioctl.h>
- stress-ng.h: move #include <sys/times.h> into sources that require it
- stress-ng.h: move #include <stdarg.h> into sources that require it
- stress-ng.h: remove #include <sys/file.h>, it was commented out
- stress-ng.h: move #include <sys/file.h> into sources that require it
- stress-ng.h: move #include <sys/ioctl.h> into sources that require it
- core-shim: add __NR_fallocate check for fallocate syscall
- stress-ng.h: move #include <ctype.h> into sources that require it
- README.md: add two more kernel improvement references
- stress-ng: make stress_exclude_unimplemented static
- stress-ng.h: remove commented out math.h include
- stress-ng.h: move <math.h> into sources that require it
- stress-*: add ( ) around expressions
- core-*: add ( ) around expression
- core-cpu-cache: fix misplaced )
- core-parse-opts: use standard seconds in a year and not equinoctial
seconds - core-lock, stress-mtx: add build time checks for mtx_destroy, mtx_init
- stress-mtx: add mtx_t check and remove need for stack size attr
- core-lock: add OSI C mtx mutex option for locking
- stress-mtx: remove includes that are not required
- core-lock: lock name for sysv semaphore
- stress-mutex: fix --mutex-procs option
- stress-mtx: Add new ISO C mtx (mutex) stressor
- stress-besselmath: add a new Bessel function stressor
- stress-sockfd: voidify return from stress_socket_fd_send
- stress-insertionsort: add new insertion sort stressor
- core-ops: fix --powmath-ops option
- Manual: update list of classes for the --class option
- stress-ng: annotate stress_sigalrm_info_t fields and make sigalrm_info
static - stress-ng: add global lock create/destroy helpers
- stress-ng: fix incorrect name of function in comment
- stress-sockfd: add new --sockfd-reuse option to re-use file descriptor
- Manual: add size of the matrix-3d stressor matrix to the documentation
- Manual: add size of the matrix stressor matrix to the documentation
- core-ops: fix --expmath-ops option
- stress-zlib: add metric for the amount of input data that has been
compressed - stress-sigchld: replace debug SIGCHLD stats with metrics
- stress-seek: add total number of seeks metric
- stress-rawpkt: move debug packet stats to metrics
- stress-link: add link create/remove rate metrics
- stress-key: add successful key add/operation/remove rate as metric
- stress-icmp-flood: replace sendto % success debug with metrics
- Makefile: remove empty lines
- stress-dup: add number of dup calls as a metric...
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