I have been focusing on making stress-ng more portable so it can build with various versions of clang and gcc as well as run against a wide range of kernels. The portability shims and config detection added to stress-ng allow it to build and run on a wide range of Linux systems, as well as GNU/HURD, Minix, Debian kFreeBSD, various BSD systems, OpenIndiana and OS X.
Enabling stress-ng to work on a wide range of architectures and kernels with a range of compiler versions has helped me to find and fix various corner case bugs. Also, static analysis with a various set of tools has helped to drive up the code quality. As ever, I thoroughly recommend using static analysis tools on any project to find bugs.
Since V0.08.09 I've added the following stressors:
- inode-flags - (using the FS_IOC_GETFLAGS/FS_IOC_SETFLAGS ioctl, see ioctl_iflags(2) for more details.
- sockdiag - exercise the Linux sock_diag netlink socket diagnostics
- branch - exercise branch prediction
- swap - exercise adding and removing variously sized swap partitions
- ioport - exercise I/O port read/writes to try and cause CPU I/O bus delays
- hrtimers - high resolution timer stressor
- physpage - exercise the lookup of a physical page address and page count of a virtual page
- mmapaddr - mmap pages to randomly unused VM addresses and exercise mincore and segfault handling
- funccall - exercise function calling with a range of function arguments types and sizes, for benchmarking stack/CPU/cache and compiler.
- tree - BSD tree (red/black and splay) stressor, good for exercising memory/cache
- rawdev - exercise raw block device I/O reads
- revio - reverse file offset random writes, causes lots of fragmentation and hence many file extents
- mmap-fixed - stress fixed address mmaps, with a wide range of VM addresses
- enosys - exercise a wide range of random system call numbers that are not wired up, hence generating ENOSYS errors
- sigpipe - stress SIGPIPE signal generation and handling
- vm-addr - exercise a wide range of VM addresses for fixed address mmaps with thorough address bit patterns stressing
As ever, patches for fixes and improvements are always appreciated. Keep on stressing!