Shakedown Cruise
Find a file
2025-12-23 11:23:48 -07:00
jobfiles ai overloards 2025-12-20 21:54:55 -07:00
scripts ai overloards 2025-12-20 21:54:55 -07:00
src AI added fan labels to see what fan is what. Also fixed stress-ng creating duplicate processes when running "sequential" 2025-12-23 11:21:12 -07:00
Cargo.lock AI added fan labels to see what fan is what. Also fixed stress-ng creating duplicate processes when running "sequential" 2025-12-23 11:21:12 -07:00
Cargo.toml AI added fan labels to see what fan is what. Also fixed stress-ng creating duplicate processes when running "sequential" 2025-12-23 11:21:12 -07:00
README.md ai overloards 2025-12-20 21:54:55 -07:00
shakedown ai overloards 2025-12-20 21:54:55 -07:00
stress-ng hopefully portable build of stress-ng 2025-12-21 20:36:53 -07:00
test-errors.sh test errors 2025-12-21 21:29:20 -07:00

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

  1. Launch the application:

    cd dist
    ./shakedown
    
  2. Select Tests: Check the boxes for the subsystems you want to stress test

  3. Choose Execution Mode:

    • Sequential: Tests run one at a time
    • Parallel: All selected tests run simultaneously
  4. Start Tests: Click "Start Tests" to begin

  5. Monitor:

    • Watch temperatures in the right panel
    • View hardware errors in the center panel
    • Track progress in the status bar
  6. 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

Acknowledgments

  • stress-ng - The underlying stress testing tool
  • egui - Immediate mode GUI library for Rust