The Ubuntu kernel team uses stress-ng for kernel regression testing in several ways:
- Checking that the kernel does not crash when being stressed tested
- Performance (bogo-op throughput) regression checks
- Power consumption regression checks
- Core CPU Thermal regression checks
I've tried to focus on several aspects of stress-ng over the last last development cycle:
- Improve per-stressor modularization. A lot of code has been moved from the core of stress-ng back into each stress test.
- Clean up a lot of corner case bugs found when we've been testing stress-ng in production. We exercise stress-ng on a lot of hardware and in various cloud instances, so we find occasional bugs in stress-ng.
- Improve usability, for example, adding bash command completion.
- Improve portability (various kernels, compilers and C libraries). It really builds on runs on a *lot* of Linux/UNIX/POSIX systems.
- Improve kernel test coverage. Try to exercise more kernel core functionality and reach parts other tests don't yet reach.
With the use of gcov + lcov, I can observe where stress-ng is not currently exercising the kernel and this allows me to devise stress tests to touch these un-exercised parts. The tool has a history of tripping kernel bugs, so I'm quite pleased it has helped us to find corners of the kernel that needed improving.
This week I released V0.09.59 of stress-ng. Apart from the usual sets of clean up changes and bug fixes, this new release now incorporates bash command line completion to make it easier to use. Once the 5.2 Linux kernel has been released and I'm satisfied that stress-ng covers new 5.2 features I will probably be releasing V0.10.00. This will be a major release milestone now that stress-ng has realized most of my original design goals.