Category Archives: uiforetw

Why Modern Software is Slow–Windows Voice Recorder

I apologize for this title because there are many things that can make modern software slow. Blindly applying one explanation without a bit of investigation is the software equivalent of a cargo cult. That said, this post describes one example … Continue reading

Posted in Investigative Reporting, Performance, uiforetw, xperf | Tagged , , | 25 Comments

Slower Memory Zeroing Through Parallelism

While investigating some performance mysteries in Chrome I discovered that Microsoft had parallelized how they zero memory, and in some cases this was making it a lot slower. This slowdown may be mitigated in Windows 11 but in the latest … Continue reading

Posted in Investigative Reporting, Performance, uiforetw | Tagged , | 11 Comments

Windows Performance Analyzer, From Store or SDK

ETW is the best way to analyze performance on Windows, and Windows Performance Analyzer (WPA) has been the preferred tool for analyzing ETW traces for ten years now, generally obtained either by running UIforETW or by getting it from the … Continue reading

Posted in Documentation, uiforetw, xperf | Tagged , , , | 5 Comments

Finding Windows HANDLE leaks, in Chromium and others

Three years ago I found a 32 GB memory leak caused by CcmExec.exe failing to close process handles. That bug is fixed, but ever since then I have had the handles column in  Windows Task Manager enabled, just in case … Continue reading

Posted in Bugs, Code Reliability, Investigative Reporting, uiforetw, xperf | Tagged , | 20 Comments

What Outranks Thread Priority?

This investigation started, as so many of mine do, with me minding my own business, not looking for trouble. In this case all I was doing was opening my laptop lid and trying to log on. The first few times … Continue reading

Posted in Investigative Reporting, Performance, uiforetw, xperf | Tagged , , | 7 Comments

Creating a Public Symbol Server, Easily

I’ve been a big fan of symbol servers for years. They are a part of the Microsoft/Windows ecosystem that is far better than anything I have seen for other operating systems. With Microsoft’s and Chrome’s symbol servers configured I can … Continue reading

Posted in Debugging, Programming, Symbols, uiforetw | Tagged | 15 Comments

Bulk ETW Trace Analysis in C#

ETW traces record a wealth of information about how a Windows system is behaving. When analyzing a new and unknown problem there is no replacement for loading the trace into WPA and following the clues to a solution. The thrill … Continue reading

Posted in uiforetw, xperf | Tagged , | 9 Comments

O(n^2), again, now in WMI

I recently hit some multi-minute delays on my workstation. After investigating I found that the problem was due to a lock being held for five minutes, and during that time the lock-holder was mostly just spinning in a nine-instruction loop. … Continue reading

Posted in Investigative Reporting, Programming, Quadratic, Rants, uiforetw, xperf | Tagged , , , , | 23 Comments

Heap Snapshots–Tracing All Heap Allocations

I’ve recently started using heap snapshots on Windows to track heap allocations. I was able to use heap snapshots to record call stacks for all outstanding allocations in Chrome’s browser process over a full two weeks, letting me account for … Continue reading

Posted in Documentation, Performance, Programming, uiforetw, xperf | Tagged , | 22 Comments

63 Cores Blocked by Seven Instructions

I seem to have a habit of writing about super powerful machines whose many cores are laid low by misuse of locks. So. Yeah. It’s that again. But this one seems particularly impressive. I mean, how often do you have … Continue reading

Posted in Investigative Reporting, Performance, Programming, Quadratic, uiforetw, xperf | Tagged , , | 12 Comments