v0.9.0
What's new
0.9.0 makes the verdicts sharper and puts the program you were using at the center of the report.
The program you were using comes first
The tool notes once a second which program's window is in front (the process only, never window titles). When that program was among those kept waiting, at a stall, a moment you flagged or behind a slow disk, the report names it first: "the program you were using, game.exe, waited 1.2 s". At a flagged moment it also says when your program was not among them, which points the search elsewhere.
Sharper verdicts
- Short stalls get the same checks as whole-PC freezes: which device interrupts stopped or kept arriving, whether the timer that wakes sleeping threads kept firing, and which slow disk requests coincided. A stall where the measuring thread was itself waiting for a disk read is now called what it is.
- One busy core is no longer averaged away. CPU starvation is judged per processor, counting interrupt-level work as busy, so "one core was busy while the others idled" is said, with what held it.
- Context for every stall: which priority range a waiting thread was in, and whether the processor was throttled or memory was nearly full at that moment.
- A freeze that coincided with a slow drive is noted on that drive's finding too. Requests that were only slowed down by the freeze are not held against the drive.
- Severity weighs how much of the PC a stall held. A stall on 1 of 32 processors no longer rates like the whole PC stopping; whole-PC freezes are always High.
More detail where it helps
- The files that waited on disk say which programs waited on them.
- The driver table says whether each driver's interrupts arrived message-signaled or on a shared line, and the device table shows each device's message-signaled interrupt limit where Windows has one set.
- The comparison with your previous run keeps more numbers per finding and prints the three most telling. Data files from 0.7.0 and 0.8.0 still compare.
- Long durations read as seconds ("84.7 s", not "84718 ms").
- A changelog covering every release.
Fixes
- At a flagged moment, the list of waiting programs showed the whole run's waits instead of that moment's.
- A few report sentences had a long run of spaces in the middle.
Known limits
The new per-core, throttling and memory context lines, and a filter's own code in a slow request's path, have only been tested on synthetic data so far: they did not come up on the test PC. If a report looks wrong, please open an issue and attach it.
Verifying this download
gh attestation verify WTFIsStalling.exe --repo Tyberious/WTFIsStalling proves the file was built by this repository's release workflow from the tagged commit; sha256sum -c SHA256SUMS.txt checks the files. The executables are not code-signed yet, so SmartScreen may warn: More info -> Run anyway. If an antivirus blocks the download, please open an issue with the detection name.
Download
WTFIsStalling.exe is the app. wtfis-cli.exe is the same engine for the console.