The Word of God Holistic Wellness Institute
"Helping The World DISCOVER THE WAY of LOVE!"
Those articles are timeless classics. The UI for selecting columns has changed, but that is easy enough to adjust to.Getting startedWhen you first launch WPA, it is dauntingly austere and blank. All of the graphs are collapsed and hidden:The first step is to start dragging some graphs into the analysis area. The exact set of graphs depends on what type of analysis you are planning to do, and I don't claim that my recommendations are one-size-fits-all, but they should be a reasonable starting point.Generic eventsApp-specific generic events can be crucial for navigating a trace. I use them to identify frame boundaries, user input, and other key events. With them I can see when the frame-rate drops, and I can see what events the drop correlates to.If you have followed the instructions at "Xperf Basics: Recording a Trace", then you should be calling functions like ETWMark and ETWRenderFrameMark ndash; or whatever alternative functions you created ndash; and the time-stamped data from these functions shows up in Generic Events.The display of generic events in xperfview, the old trace viewing tool, left much to be desired:If I looked in the ProviderIds drop-down then I could see that these blue diamonds corresponded to my Valve-FrameRate provider, but that provider emits events for simulation ticks as well as render ticks, and the distinction is invisible in xperfview.The display of generic events in WPA is rs gold much improved. The events are displayed hierarchically so that I can drill down and see the simulation and render ticks on separate lines. The layout is configurable so if I want to I can save a bit of space by removing "Task Name" from the hierarchy:If Generic Events are relevant to your trace analysis, then open up the System Activity section and drag Generic Events onto the analysis area. On the other hand, if you haven't created and registered your own providers and put in calls to their functions then there won't be much of interest in this graph and you should probably not bother with it.Window in focusThis graph shows what process' window is active. This can be helpful to choose where to analyze. Most Runeacape games lower their frame rate when they are not active and investigating a poor frame rate when you're intentionally going idle is pointless.In the graph shown below, the user switched from explorer to WLXPhotoGallery, and then DWM owned the active window for a while.Aside: DWM becomes active whenever Windows detects that a program has hung ndash; DWM takes over window management so that the user can still move the hung window around.The Windows in Focus graph can be found in the System Activity section. Drag it over if you think it will be useful.CPU usage Precise CPU Usage Precise is the graph formerly known as CPU Usage there were three variants for grouping by thread process CPU . This graph is constructed from context switch data and interrupt and DPC data , which means it is a sub-microsecond accurate measurement of what thread is running when and why, as well as exactly how much CPU time each thread and process is consuming. That seems pretty important, so you probably want this one available.If you open up the Computation section and then within that open up the CPU Usage Precise section then you will find several graphs. I normally use the "Utilization by Process, Thread" graph, but the "Timeline by Process, Thread" graph also looks interesting, and makes some patterns more obvious.In particular, if two threads or processes are ping-ponging taking turns executing this behavior is much easier to follow on the timeline graph. However the timeline graph devolves into solid bars of color when zoomed out ndash; it really only works when examining fine details.It is unfortunate that the color coding for the utilization and timeline graphs are not consistent.The screenshot to the right shows the utilization and timeline graphs over a 20 ms time period.CPU usage Sampled CPU Usage Sampled is the graph formerly known as CPU Sampling there were three variants for grouping by thread process CPU . This data is constructed using data from the profile provider, which periodically interrupts all CPUs to see what they are doing, with a default rate of 1 KHz.Because this data is sampled, it cannot tell you what is going on between samples. However, with enough samples and with well behaved code the sampling data can be extremely useful. In particular, if you have call stack collection enabled for the profile provider then each sample includes a call stack.In general, I would say that the main purpose of the sampled CPU data is looking at the call stacks, because this tells you subject to sampling artifacts what your code is actually doing. Therefore it seems passing strange that WPA defaults to not showing you call stacks.Since most programs are CPU bound at least part of the time, I think this data should always be enabled, so open up the Computation Section, then open up the CPU Usage Sampled section and grab one of the graphs. I'd recommend "Utilization by Process".When you drag this graph over, you now have two graphs showing CPU usage ndash; one precise and one sampled.
Tags:
© 2025 Created by Drs Joshua and Sherilyn Smith.
Powered by