|
|
||
|---|---|---|
| jobfiles | ||
| scripts | ||
| src | ||
| Cargo.lock | ||
| Cargo.toml | ||
| README.md | ||
| shakedown | ||
| stress-ng | ||
| test-errors.sh | ||
Shakedown - Linux Hardware Stress Testing Application
Shakedown is a GUI application for running comprehensive hardware stress tests on Linux systems to detect hardware faults. It provides a user-friendly interface for configuring and monitoring stress-ng tests while tracking system temperatures and hardware errors.
Features
-
GUI-based test configuration - Select which subsystems to stress test:
- CPU - Computation-heavy workloads, FPU, cache stress
- Memory - RAM integrity, memory subsystem testing
- Disk - Storage read/write operations
- Network - Network stack and socket operations
- I/O - Asynchronous/synchronous I/O operations
-
Execution modes:
- Sequential - Run tests one after another (easier to identify which test causes issues)
- Parallel - Run all tests simultaneously (maximum system stress)
-
Real-time monitoring:
- Temperature sensors via sysfs/hwmon
- Hardware error logging via journalctl
- Test progress and elapsed time
-
Pre-configured stress-ng jobfiles - Solid defaults that can be customized if needed
Requirements
- Linux operating system
- Rust toolchain (for building)
- stress-ng (built from source, see below)
- journalctl (for error logging)
Building
1. Build stress-ng
The application expects stress-ng to be in the same directory as the built binary. You'll need to build stress-ng from source:
# Clone stress-ng repository
git clone https://github.com/ColinIanKing/stress-ng.git
cd stress-ng
# Build
make
# Copy to your shakedown build directory (after building shakedown)
cp stress-ng /path/to/shakedown/target/release/
2. Build Shakedown
cd shakedown
cargo build --release
3. Set up the distribution
# Create distribution directory
mkdir -p dist
# Copy the binary
cp target/release/shakedown dist/
# Copy stress-ng
cp /path/to/stress-ng dist/
# Copy jobfiles
cp -r jobfiles dist/
Usage
-
Launch the application:
cd dist ./shakedown -
Select Tests: Check the boxes for the subsystems you want to stress test
-
Choose Execution Mode:
- Sequential: Tests run one at a time
- Parallel: All selected tests run simultaneously
-
Start Tests: Click "Start Tests" to begin
-
Monitor:
- Watch temperatures in the right panel
- View hardware errors in the center panel
- Track progress in the status bar
-
Stop Tests: Click "Stop Tests" to terminate running tests
Jobfiles
Pre-configured stress-ng jobfiles are located in the jobfiles/ directory:
| File | Description |
|---|---|
cpu.job |
CPU stress tests (matrix ops, crypto, FPU, cache) |
memory.job |
Memory stress tests (allocation, mmap, cache) |
disk.job |
Disk stress tests (file I/O, sync operations) |
network.job |
Network stress tests (sockets, UDP, TCP) |
io.job |
I/O stress tests (AIO, io_uring, pipes) |
Customizing Jobfiles
The jobfiles use stress-ng's jobfile format. You can edit them to:
- Adjust test duration (
timeout) - Enable/disable specific stressors
- Change resource limits
Example jobfile directive:
timeout 300s # Run for 5 minutes
cpu 0 # Use all CPU cores
verify # Verify computations for error detection
Hardware Error Detection
Shakedown monitors journalctl for hardware-related errors including:
- Machine Check Exceptions (MCE)
- EDAC memory errors
- Disk/storage errors (ATA, AHCI, NVMe)
- PCIe errors
- Thermal events
- Kernel hardware errors
Troubleshooting
"stress-ng not found"
Ensure stress-ng is in the same directory as the shakedown binary.
No temperature sensors detected
- Check if running in a virtual machine (limited sensor support)
- Verify thermal drivers are loaded:
ls /sys/class/thermal/ - Check hwmon devices:
ls /sys/class/hwmon/
Permission errors
Some stress tests may require elevated privileges. Run with sudo if needed.
License
MIT License