No description
  • Rust 82.6%
  • Shell 17.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Joshua Karner dd8e8bb70a
All checks were successful
Rust Build & Test / Build and Test (push) Successful in 3m28s
Shakedown Distribution Build / dist-build (push) Successful in 9m17s
chore: bump version to 0.3.4
2026-07-29 11:36:10 -06:00
.forgejo/workflows fatbin and submodule updates 2026-07-24 08:51:33 -06:00
gpu-burn@3ead140434 submoduleup 2026-07-22 20:43:19 -06:00
jobfiles fft 2026-04-01 21:06:47 -06:00
notes Cleanup and egui update. 2026-05-25 11:01:58 -06:00
scripts submodule-script 2026-07-22 20:40:17 -06:00
src update submodules, fix shakedown logic to end test properly 2026-07-29 11:35:50 -06:00
stress-ng@2f3d7f8cea update submodules, fix shakedown logic to end test properly 2026-07-29 11:35:50 -06:00
tricorder@4368d5df3c fatbin and submodule updates 2026-07-24 08:51:33 -06:00
.gitignore Cleanup and egui update. 2026-05-25 11:01:58 -06:00
.gitmodules submod 2026-04-01 19:25:31 -06:00
Cargo.lock chore: bump version to 0.3.4 2026-07-29 11:36:10 -06:00
Cargo.toml chore: bump version to 0.3.4 2026-07-29 11:36:10 -06: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 thermal jobfiles, fix whoopsie test. Add disclaimer that I'm not a developer, this is a sidequest. 2026-04-01 20:46:25 -06:00

Shakedown - Linux Hardware Stress Testing Application

disclaimer, I am not a developer. This was built for a UI to make the tests I run and system info I monitor for RMA's more accessible to others. This is not good code, but it gets the job done without hindering stress testing.

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