Tool for experimenting with thread scheduling, inspired by CPUStress.
- Activity per thread, or a custom work, period and waitable timer (default or high resolution)
- Relative priority, priority boost, group affinity, CPU Sets, ideal processor per thread
- Shared mutex for priority inversion
- Process priority class, affinity, CPU Sets
- Suspend, resume, stop threads
- Thread state & wait reason, base & current priority, running priority distribution, context switches, CPU % and CPU time (
QueryThreadCycleTime) - Some presets for specific scenarios (in
examples\, see comments in each file for some additional notes):- CPU starvation
- Priority inversion
- Quantum expiration
- Priority preemption
- Priority boosting
- Priority decay
All releases have a detached GPG sig, import the public key and verify the file next to its sig:
curl.exe -fsSL https://pgp.noverse.dev -o public.asc
gpg --import public.asc
gpg --verify thread-sim-Portable-<version>-x64.zip.sig thread-sim-Portable-<version>-x64.zip
gpg --verify thread-sim.exe.sig thread-sim.exeIt must show Good signature from "nohuto <contact@noverse.dev>", made by the signing subkey FF65 399D 1B28 95F6 CC34 BE79 1853 081F E103 04A2.
thread-sim.exe [--data-dir <dir>] [--config <file.jsonc>]--data-dir=settings.jsonlocation (default%LOCALAPPDATA%\thread-sim)--configopens a config at startup