Blocking Time Profile Report

These Profile Reports provide aggregate blocking time data for call stacks that are specific to each blocking category (for example "I/O" or "Synchronization"). To build this profile, the tool collects blocking API calls and accumulates them into a tree of call stacks. Data that is shown in these reports varies by the current time range, by hidden threads, and by the following two filters that may be applied:

If Just My Code is selected, only stack frames that have user code are presented, plus one level below the user code.

If the Noise reduction value is set, collated stacks that have less than the specified frequency are skipped.

Click the tree control next to any call tree entry of interest to drill down and find the line of code in which blocking time is spent. Once you have identified a call tree entry of interest, right-click that entry and then click View Source to locate the line of source. Click View Call Sites to locate the line of code that called this one. If only one call site is available, the click connects to the highlighted line of code for the call site. If multiple call sites are available, a dialog box is presented, from which one entry can be selected. Click the Go to source button to locate the highlighted call site. It is often most useful to view source code for the call site that has the most instances, the greatest time, or both.

Blocking Time Report Columns

The following table shows the columns for each blocking time report.

Column name

Description

Name

The name of the function for each level of the call stack.

Instances

The number of instances of the blocking call for the visible time period.

Inclusive Blocking Time

The total blocking time that is spent for all stacks that roll up to this level of the call stack tree. The inclusive number is the sum of exclusive blocking time for this function and exclusive blocking time for all its child nodes.

Exclusive Blocking Time

The total blocking time that is spent for which this function is the lowest level of the call stack. A unique call stack entry that has a high exclusive blocking time may be a function of interest.

API/Wait Category

Shown only for functions at the lowest level of the call stack. Where the signature of the blocking call is recognized, the name of the blocking API is provided. If the signature is not recognized, the information that is reported by the kernel is provided.

Details

Fully qualified name of the function. This includes line count when it is available.

Synchronization

The Synchronization report shows the calls that are responsible for segments that are blocking on synchronization, and the aggregate blocking times of each call stack. You can use this information to identify and investigate areas of concern. For more information, see Synchronization Time

Sleep

The Sleep report shows the calls that are responsible for blocking time that was attributed to time that was spent sleeping, and the aggregate blocking times of each call stack. You can use this information to identify and investigate areas of concern. For more information, see Sleep Time.

I/O

The I/O report shows the calls that are responsible for segments that are blocking on I/O, and the aggregate blocking times of each call stack. You can use this information to identify and investigate areas of concern. For more information, see I/O Time (Threads View).

Memory Management

The Memory Management report shows the calls that are responsible for segments that are blocking on memory management operations, and the aggregate blocking times of each call stack. You can use this information to identify and investigate areas of concern. For more information, see Memory Management Time.Memory Management Time

Preemption

The Preemption report shows the calls where preemption blocks occurred, and the aggregate blocking times of each call stack. You can use this information to identify and investigate areas of concern. This blocking report is less actionable than the others because preemption is typically imposed upon your process by the operating system instead of resulting from your code. It does show what kinds of preemptions occurred, where they occurred, and how long your process remained in a given preemption state. For more information, see Preemption Time.

UI Processing

The UI Processing report shows the calls that are responsible for blocking segments that are blocking on UI processing blocks, and the aggregate blocking times of each call stack. You can use this information to identify and investigate areas of concern. For more information, see UI Processing Time.

Per Thread Summary

This tab shows color-coded histograms of the total time that each thread spent in each state, such as execution, synchronization, and I/O. Each column is labeled at the bottom by using a thread number. In the default zoom level, the main thread is the leftmost column. When you adjust the zoom level above, the tab reports automatically update themselves to reflect the new time scale.

To support scalability in this tab report, the number of threads that are displayed is limited. Therefore, in certain cases this tab report may not show data for all threads in the application. When this happens, ellipses are displayed in the rightmost position. If the thread that you want to see in this graph is not present, you can hide uninteresting threads until the desired thread appears in the graph. For more information, see Per Thread Summary Report.

File Operations

This tab report shows which threads were involved in disk I/O and which files they touched. This includes DLLs that were loaded, how many bytes were read, and other information. This report can be useful in evaluating how much time was spent accessing files during execution, especially if your process seems to be I/O bound. The report includes disk I/O that is performed by the process itself and also I/O that is performed on behalf of the process by the operating system. For more information, see File Operations Report (Threads View).

This report table can be seen in the following views:

See Also

Concepts

Threads View (Parallel Performance)