No description
Find a file
Joshua Karner 89a8dc1d0b
All checks were successful
Rust Build & Test / Build and Test (push) Successful in 2m58s
Shakedown Distribution Build / dist-build (push) Successful in 7m6s
chore: bump version to 0.2.1
2026-02-17 14:28:03 -07:00
.forgejo/workflows changed gpu burn to half hours 2026-02-17 11:59:52 -07:00
gpu-burn@671f4be924 breaking everything 2026-01-17 14:59:52 -07:00
jobfiles null 2026-02-17 14:23:09 -07:00
scripts install.sh 2026-01-31 10:49:40 -07:00
src null 2026-02-17 14:23:09 -07:00
stress-ng@4c4859f099 chore: bump version to 0.2.1 2026-02-17 14:28:03 -07:00
tricorder@353198534e submodule 2026-01-28 21:52:09 -07:00
.gitignore breaking everything 2026-01-17 14:59:52 -07:00
.gitmodules branch 2026-01-18 15:54:29 -07:00
Cargo.lock chore: bump version to 0.2.1 2026-02-17 14:28:03 -07:00
Cargo.toml chore: bump version to 0.2.1 2026-02-17 14:28:03 -07:00
LICENSE Update License to comply with stress-ng 2026-01-17 21:20:20 -07:00
LICENSE.gpu-burn Add LICENSE.gpu-burn 2026-01-17 21:32:55 -07:00
LICENSE.stress-ng Add LICENSE.stress-ng 2026-01-17 21:32:21 -07:00
README.md Update README.md 2026-01-18 21:39:34 -07:00

Shakedown - Linux Hardware Stress Testing Application

Intended method of use.

curl -sSL https://git.karner.dev/jdkarner/shakedown/raw/branch/main/scripts/release.sh | bash

image

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 selection - Select which subsystems to stress test:

    • CPU - Computation-heavy workloads, FPU, cache stress
    • Memory - RAM integrity, memory subsystem testing
    • Disk - Storage read/write operations
    • I/O - Asynchronous/synchronous I/O operations
    • GPU Burn - CPU compute with CUDA
  • Execution modes:

    • Sequential - Run tests one after another (easier to identify which test causes issues)
    • Parallel - Run all tests simultaneously (maximum system stress)
    • Pre-configured stress-ng jobfiles - Solid defaults that can be customized if needed

Jobfiles are Sequential by default, Parrallel here runs all selected tests at the same time.

  • Real-time monitoring:
    • Temperature sensors via Tricorder
    • Hardware error logging via Tricorder
    • Test progress and elapsed time

Building

scripts/build-dist.sh This builds shakedown, stress-ng, and tricorder. It does not currently include building gpu_burn, The forgejo workflow does build gpu_burn.

Usage

  1. Launch the application: (The intended method of use is to use the curl command above.)

    cd $shakedown_dir
    ./shakedown
    
  2. Tricorder Monitor: The Tricorder system monitor will launch automatically in monitor mode. If closed accidentally, click "🖖 Launch Tricorder" in the top bar to relaunch it.

  3. Select Tests: Check the boxes for the subsystems you want to stress test

  4. Choose Execution Mode:

    • Sequential: Tests run job at a time
    • Parallel: All selected jobs run simultaneously
  5. Start Tests: Click "Start Tests" to begin

  6. Monitor:

    • Use Tricorder for comprehensive real-time monitoring (CPU, GPU, temperatures, fans, logs)
    • Track progress in the status bar
  7. Stop Tests: Click "Stop Tests" to terminate running tests

Jobfiles

Pre-configured stress-ng jobfiles are located in the jobfiles/ directory:

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

License

GPLv2

Acknowledgments

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