Category Archives: Documentation

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

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 , | 23 Comments

Exporting Arbitrary Data from xperf ETL files

The 8.1 and above versions of xperf/WPA/WPT comes with a tool called wpaexporter. This tool works as promised and lets you export arbitrary summary tables to .csv files, thus allowing for automated analysis of xperf traces.

Posted in Documentation, Performance, xperf | Tagged , , , | 16 Comments

The Lost Xperf Documentation–Disk Usage

As I’ve lamented previously, the documentation for xperf (Windows Performance Toolkit) is a bit light. The names of the columns in the summary tables can be exquisitely subtle, and I have never found any documentation for them. But, I’ve talked … Continue reading

Posted in Documentation, Performance, xperf | Tagged , | 21 Comments

The Lost Xperf Documentation–CPU Usage (Precise)

As I’ve mentioned previously, the documentation for xperf (Windows Performance Toolkit, also known as ETW) is pretty weak. In this post I’m going to attempt to explain the meaning of the extremely subtle and non-obvious columns in the CPU Usage … Continue reading

Posted in Documentation, Performance, Programming, xperf | Tagged , , , | 32 Comments

The Lost Xperf Documentation–CPU sampling

Xperf (Windows Performance Toolkit, also known as ETW) is a powerful tool for investigating performance issues, however it is a challenging tool to use. Some of this difficulty comes from intrinsic complexity – in order to fully investigate thread scheduling … Continue reading

Posted in Documentation, Performance, Programming, xperf | Tagged , , , | 24 Comments

Dangerous Documentation Part 2–Printing Strings

The printf family of functions encompasses a vast range of possibilities. Printing to a file or to memory, with or without locale specified, ‘n’ variants, ‘v’ variants, ‘c’ variants, ‘_s’ variants, wide-character variants – it’s an exponential explosion of complexity. … Continue reading

Posted in Code Reliability, Documentation, Programming, Visual Studio | 5 Comments

Dangerous Documentation Part 1–Copying Strings

The standard C runtime library (CRT for short) contains a lot of dangerous functions. Functions such as strcpy can easily lead to buffer overruns and security exploits. Functions such as strncpy can easily end up not null-terminating the destination buffer … Continue reading

Posted in Code Reliability, Documentation, Programming, Visual Studio | 8 Comments