Skip to content

gazpitchy92/threadstepper

Repository files navigation

Thread Stepper

A stability and stress tester for AMD Curve Optimizer and PBO on Linux.

Designed specifically for testing undervolting and boost stability, where conventional stress tests often fail.

Latest Updates - Version 2.13

  • Replaced 7z with our own all-core stress tests
  • Improved UI and easier settings
  • Error testing now shows which core/thread failed
  • CPU topology detection (detection of threads per core)
  • New dark and light mode theme
  • Easier core/thread selection

To-Do List

  • Show estimated runtime based on settings
  • Add Benchmark UI to show history

Screenshots

running errors threads

Methodology

Problem with Traditional Stress Tests

Most stress tests (mprime, systester, y-cruncher etc.) apply continuous, predictable load across all cores simultaneously. This is good for thermal testing but misses instabilities that appear during normal use, particularly with undervolting.

How Thread Stepper Works

Variable Load Patterns
Applies light, medium, and heavy loads in varying durations and rapid transitions. This forces voltage/frequency changes where instability typically occurs.

Sequential Core Testing
Tests individual cores and thread groups in sequence rather than loading all cores uniformly. Isolates per-core curve optimizer issues.

Randomized Background Load
Uses 3D WebGL browser tests to generate unpredictable background activity during testing. Mimics real usage patterns where undervolts typically fail.

Test Patterns
Cycles through different load combinations on each core and thread group, with configurable durations for light/medium/heavy workloads and rest periods between tests.

CPU Load examples

  • Full core test

full

  • Single core test (both threads)

pairs

  • Random test

random

  • Rapid load test

rapid

  • Browser variable load test

browser

  • Variable RAM load

memory

Requirements

  • stress-ng
  • python
  • Linux

Installation

  1. Clone the repository:
   git clone https://github.com/gazpitchy92/threadstepper.git
   cd threadstepper
   chmod +x launch.sh
   ./launch.sh
  1. Install dependencies: Via GUI (top right) or terminal:
   chmod +x install.sh
   sudo ./install.sh

Installs stress-ng, and downloads ungoogled-chromium AppImage for WebGL tests.

Settings

All times in seconds. Default settings work for most users.

Full Test Loops: How many times to run the entire test suite.

High Load: Tests that test all-core loads.

  • Load Time: How Long each change in CPU load is applied for.

Low Load: Tests that apply a low load tests.

  • Rapid Tests: The rapid test applies a rapid load to each core in order.

  • Rapid Time: How long to apply the rapid load for.

  • Rand Tests: The random test applies a light load to random threads.

Single Core: These tests go through each core with a variatey of tests.

  • Low Time: How long to test each core with low load tests.

  • Medium Time: How long to test each core with medium load tests.

  • High Time: How long to test each core with medium load tests.

Browser Tests: Opens browser tests during Single Core tests to apply a varying background load.

Enabled Threads: Opens a window allowing you to enable or disable testing specific threads/cores.

Advanced Options

  • Rest Time: How much time to rest for between test types.

  • Max RAM(gb): The maximum memory which will be used in tests.