You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/profiling/thread-details-view-contention-data.md
+6-6Lines changed: 6 additions & 6 deletions
Original file line number
Diff line number
Diff line change
@@ -15,12 +15,12 @@ manager: douge
15
15
ms.workload:
16
16
- "multiple"
17
17
---
18
-
# Thread Details View - Contention Data
18
+
# Thread Details view - contention data
19
19
The Thread Details view presents a timeline graph of the blocking events in the selected thread of a profiling run that were caused by contentions over resources. A blocking event occurs when the thread is forced to suspend execution because another thread has locked access to a resource.
20
20
21
-
This view represents the execution timeline of the thread as a horizontal bar and the blocking events as vertical bar on a horizontal timeline for the thread. When necessary, you can zoom in on a section of the timeline to view the individual events. To view the execution path of the functions that led to the event, click the event bar. The functions appear in the Call Stack window. When the source code for a function is available, you can click the function name to edit the source file in the Visual Studio IDE.
21
+
This view represents the execution timeline of the thread as a horizontal bar and the blocking events as vertical bar on a horizontal timeline for the thread. When necessary, you can zoom in on a section of the timeline to view the individual events. To view the execution path of the functions that led to the event, click the event bar. The functions appear in the **Call Stack** window. When the source code for a function is available, you can click the function name to edit the source file in the Visual Studio IDE.
22
22
23
-
## Navigating the Timeline
23
+
## Navigate the timeline
24
24
25
25
#### To zoom in on a timeline segment
26
26
@@ -36,17 +36,17 @@ The Thread Details view presents a timeline graph of the blocking events in the
36
36
37
37
#### To view the call stack of an event
38
38
39
-
- In the timeline graph, click the vertical bar that represents the event..
39
+
- In the timeline graph, click the vertical bar that represents the event.
40
40
41
41
#### To view or edit the source code of a function in the call stack
42
42
43
-
- In the Call Stack window, click the function name.
43
+
- In the **Call Stack** window, click the function name.
44
44
45
45
The function source code must be part of the current project.
46
46
47
47
#### To view the contention events of a resource in all threads in the profiling run
48
48
49
-
- In the timeline graph, click the name or id of the resource.
49
+
- In the timeline graph, click the name or ID of the resource.
50
50
51
51
The [Resource Details View](../profiling/resource-details-view-contention-data.md) appears for the selected resource.
Copy file name to clipboardExpand all lines: docs/profiling/thread-ready-connector.md
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -15,5 +15,5 @@ manager: douge
15
15
ms.workload:
16
16
- "multiple"
17
17
---
18
-
# Thread Ready Connector
18
+
# Thread ready connector
19
19
When you click a blocking segment to see a call stack and its unblocking stack, the thread ready connector may also appear. If the unblocking event occurred on another thread in the current process, the thread ready connector visually identifies the thread and execution segment that enabled the blocked thread to resume execution.
Copy file name to clipboardExpand all lines: docs/profiling/threads-view-parallel-performance.md
+23-23Lines changed: 23 additions & 23 deletions
Original file line number
Diff line number
Diff line change
@@ -15,7 +15,7 @@ manager: douge
15
15
ms.workload:
16
16
- "multiple"
17
17
---
18
-
# Threads View (Parallel Performance)
18
+
# Threads View (parallel performance)
19
19
The **Threads View** is the most detailed and feature-rich view in the Concurrency Visualizer (choose **Analyze** > **Concurrency Visualizer** to start the concurrency visualizer). By using this view, you can identify whether the threads are executing or blocking because of synchronization, I/O, or some other reason.
20
20
21
21
During profile analysis, the Concurrency Visualizer examines all operating system context-switch events for each application thread. Context switches can occur for many reasons, such as these:
@@ -49,7 +49,7 @@ The **Threads View** is the most detailed and feature-rich view in the Concurren
49
49
50
50
- Understand dependencies among worker threads and critical paths of execution.
51
51
52
-
## Examining Specific Time Intervals and Threads
52
+
## Examine specific time intervals and threads
53
53
The Threads View shows a timeline. You can zoom and pan within the timeline to examine specific intervals and threads of your application. On the x-axis is time and on the y-axis are several channels:
54
54
55
55
- Two I/O channels for each disk drive on the system, one channel for reads and one for writes.
@@ -73,18 +73,18 @@ Threads View
73
73
74
74
When you have selected an interval of time and some threads in it, you can start your performance analysis.
75
75
76
-
## Analysis Tools
76
+
## Analysis tools
77
77
This section describes reports and other analysis tools.
78
78
79
-
### Thread-Blocking Details
79
+
### Thread-blocking details
80
80
To get information about a blocking event in a particular region on a thread, rest the pointer on that region to display a tooltip. It contains information such as category, region start time, blocking duration, and a blocking API if there is one. If you select the blocking region, the stack at that point in time is displayed in the bottom pane, together with the same information that's displayed in the tooltip. By examining the call stack, you can determine the underlying reason for the thread-blocking event. You can find additional process and thread information by selecting the segment and examining the Current tab.
81
81
82
82
A path of execution may have multiple blocking events. You can examine these by blocking category so that you can find problem areas more quickly. Just choose one of the blocking categories in the legend on the left.
83
83
84
-
### Dependencies Between Threads
84
+
### Dependencies between threads
85
85
The Concurrency Visualizer can show dependencies between threads in your process so that you can determine what a blocked thread was trying to do and learn what other thread enabled it to execute. To determine which thread unblocked another thread, select the relevant blocking segment. If the Concurrency Visualizer can determine the unblocking thread, it draws a line between the unblocking thread and the executing segment that follows the blocking segment. In addition, the **Unblocking stack** tab shows the relevant call stack.
86
86
87
-
### Thread Execution Details
87
+
### Thread execution details
88
88
In the timeline graph of a thread, the green segments show when it was executing code. You can get more detailed information about an execution segment.
89
89
90
90
When you select a point in an execution segment, the Concurrency Visualizer looks for that point in time on the relevant call stack and then displays a black caret above the selected point in the execution segment and displays the call stack itself on the **Current stack** tab. You can select multiple points on the execution segment.
@@ -94,53 +94,53 @@ Threads View
94
94
95
95
To get an execution profile for all enabled (unhidden) threads in the currently selected time range, choose the **Execution** button in the active legend.
96
96
97
-
### Timeline Graph
97
+
### Timeline graph
98
98
The timeline graph shows the activity of all threads in the process and all physical disk devices on the host computer. It also displays GPU activity and marker events. You can zoom in to view more detail or out to view a longer interval of time. You can also select points on the graph to get details about categories, start times, durations, and call stack states.
99
99
100
100
In the timeline graph, a color indicates the state of a thread at a given time. For example, green segments were executing, red segments were blocked for synchronization, yellow segments were preempted, and purple segments were engaged in device I/O. You can use this view to examine the balance of work among threads that are involved in a parallel loop or in concurrent tasks. If a thread is taking longer to complete than the others, the work might be unbalanced. You can use this information to improve the performance of your program by distributing work more evenly among the threads.
101
101
102
102
If only one thread is green (executing) at a point in time, the app may not be taking full advantage of the concurrency on the system. You can use the timeline graph to examine dependencies between threads and the temporal relationships between blocking and blocked threads. To rearrange threads, select a thread and then on the toolbar, choose the up or down button. To hide threads, select them and then choose the **Hide Threads** button.
103
103
104
-
### Profile Reports
104
+
### Profile reports
105
105
Below the timeline graph is a timeline profile and a pane that has tabs for various reports. The reports automatically update as you change the Threads View. For large traces, the reports pane might be unavailable while the updates are calculated. Each report has two filter adjustments: noise reduction and Just My Code. Use noise reduction to filter out call tree entries where little time is spent. The default filter value is 2 percent, but you can adjust it from 0 percent to 99 percent. To view only the call tree for your code, select the **Just My Code** check box. To view all call trees, clear it.
106
106
107
-
#### Profile Report
107
+
#### Profile report
108
108
This tab shows reports that correspond to the entries in the active legend. To display a report, choose one of the entries.
109
109
110
-
#### Current Stack
110
+
#### Current stack
111
111
This tab shows the call stack for a selected point on a thread segment in the timeline graph. The call stacks are trimmed to show only activity that is related to your program.
112
112
113
-
#### Unblocking Stack
113
+
#### Unblocking stack
114
114
To see which thread unblocked the selected thread, and at what line of code, choose the **Unblocking stack** tab.
115
115
116
116
#### Execution
117
117
The Execution Report shows the breakdown of the time the application spent in execution.
118
118
119
-
To find the line of code in which execution time is spent, expand the call tree and then, on the shortcut menu for the call tree entry, choose **View Source** or **View Call Sites**. **View Source** locates the executed line of code. **View Call Sites** locates the line of code that called the executed line of code. If only one call site exists, its line of code is highlighted. If multiple call sites exist, you can select the one you want in the dialog box that appears and then choose the **Go to source** button to highlight the call site code. It's often most useful to locate the call site that has the most instances, the most time, or both. For more information, see [Execution Profile Report](../profiling/execution-profile-report.md).
119
+
To find the line of code in which execution time is spent, expand the call tree and then, on the shortcut menu for the call tree entry, choose **View Source** or **View Call Sites**. **View Source** locates the executed line of code. **View Call Sites** locates the line of code that called the executed line of code. If only one call site exists, its line of code is highlighted. If multiple call sites exist, you can select the one you want in the dialog box that appears and then choose the **Go to source** button to highlight the call site code. It's often most useful to locate the call site that has the most instances, the most time, or both. For more information, see [Execution profile report](../profiling/execution-profile-report.md).
120
120
121
121
#### Synchronization
122
-
The synchronization report shows the calls that are responsible for synchronization blocks, together with the aggregate blocking times of each call stack. For more information, see [Synchronization Time](../profiling/synchronization-time.md).
122
+
The synchronization report shows the calls that are responsible for synchronization blocks, together with the aggregate blocking times of each call stack. For more information, see [Synchronization time](../profiling/synchronization-time.md).
123
123
124
124
#### I/O
125
-
The I/O report shows the calls that are responsible for I/O blocks, together with the aggregate blocking times of each call stack. For more information, see [I/O Time (Threads View)](../profiling/i-o-time-threads-view.md).
125
+
The I/O report shows the calls that are responsible for I/O blocks, together with the aggregate blocking times of each call stack. For more information, see [I/O time (Threads View)](../profiling/i-o-time-threads-view.md).
126
126
127
127
#### Sleep
128
-
The sleep report shows the calls that are responsible for sleep blocks, together with the aggregate blocking times of each call stack. For more information, see [Sleep Time](../profiling/sleep-time.md).
128
+
The sleep report shows the calls that are responsible for sleep blocks, together with the aggregate blocking times of each call stack. For more information, see [Sleep time](../profiling/sleep-time.md).
129
129
130
-
#### Memory Management
130
+
#### Memory management
131
131
The memory management report shows the calls where memory management blocks occurred, together with the aggregate blocking times of each call stack. You can use this information to identify areas that have excessive paging or garbage collection issues. For more information, see [Memory Management Time](../profiling/memory-management-time.md).
132
132
133
133
#### Preemption
134
134
The Preemption report shows the instances where processes on the system preempted the current process and the individual threads that replaced threads in the current process. You can use this information to identify the processes and threads that are most responsible for preemption. For more information, see [Preemption Time](../profiling/preemption-time.md).
135
135
136
-
#### UI Processing
137
-
The UI processing report shows the calls that are responsible for UI processing blocks, together with the aggregate blocking times of each call stack. For more information, see [UI Processing Time](../profiling/ui-processing-time.md).
136
+
#### UI processing
137
+
The UI processing report shows the calls that are responsible for UI processing blocks, together with the aggregate blocking times of each call stack. For more information, see [UI processing time](../profiling/ui-processing-time.md).
138
138
139
-
#### Per Thread Summary
140
-
This tab shows a color-coded column view of the total time that each thread spent in the run, blocked, I/O and other states. The columns are labeled at the bottom. When you adjust the zoom level in the timeline graph, this tab is automatically updated. At some zoom levels, some threads might not be displayed. When this occurs, ellipses are displayed at the right. If the thread you want does not appear, you can hide other threads. For more information, see [Per Thread Summary Report](../profiling/per-thread-summary-report.md).
139
+
#### Per thread summary
140
+
This tab shows a color-coded column view of the total time that each thread spent in the run, blocked, I/O and other states. The columns are labeled at the bottom. When you adjust the zoom level in the timeline graph, this tab is automatically updated. At some zoom levels, some threads might not be displayed. When this occurs, ellipses are displayed at the right. If the thread you want does not appear, you can hide other threads. For more information, see [Per thread summary report](../profiling/per-thread-summary-report.md).
141
141
142
-
#### Disk Operations
143
-
This tab shows which processes and threads were involved in disk I/O on behalf of the current process, which files they touched (for example, DLLs that were loaded), how many bytes were read, and other information. You can use this report to evaluate time that is spent in accessing files during execution, especially when your process seems to be I/O bound. For more information, see [Disk Operations Report](../profiling/disk-operations-report-threads-view.md).
142
+
#### Disk operations
143
+
This tab shows which processes and threads were involved in disk I/O on behalf of the current process, which files they touched (for example, DLLs that were loaded), how many bytes were read, and other information. You can use this report to evaluate time that is spent in accessing files during execution, especially when your process seems to be I/O bound. For more information, see [Disk operations report](../profiling/disk-operations-report-threads-view.md).
Copy file name to clipboardExpand all lines: docs/profiling/timeline-caret.md
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -15,8 +15,8 @@ manager: douge
15
15
ms.workload:
16
16
- "multiple"
17
17
---
18
-
# Timeline Caret
18
+
# Timeline caret
19
19
When you select a point on the timeline of an executing thread segment, a Timeline caret appears above it. The call stack that is displayed on the current stack tab is the one that is closest in time to where you clicked the segment. The caret is used to associate the call stack, which is displayed under the **Current** tab, with the instant when it was sampled. The caret shows the exact location of the call stack, which is the closest call stack to the location that the user selected.
0 commit comments