Advanced Settings Dialog Box (Concurrency Visualizer)
By using the Advanced Settings dialog box in the Concurrency Visualizer, you can control how traces are collected. The dialog box has tabs for symbols, Just My Code, buffering, filtering, CLR events, markers, providers, and files.
The Concurrency Visualizer uses the same symbol settings as the Visual Studio Debugger. The Concurrency Visualizer uses the settings to resolve call stacks that are associated with performance data. When it processes traces, the Concurrency Visualizer accesses the symbol servers that are specified in the settings page. When this data is accessed over a network, trace processing slows down. To reduce the amount of time that's required to resolve symbols, you can cache symbols locally. If symbols have been downloaded, Visual Studio will load them from the local cache.
By default, Just My Code is the set of .exe and .dll files that are associated with the current solution in Visual Studio. The Concurrency Visualizer evaluates this set of files when you use the Just My Code feature to filter call stacks. On the Just My Code tab, you can add directories that contain .exe and .dll files to the locations that the Concurrency Visualizer uses for Just My Code.
The paths of the .exe and .dll files are stored in the trace file when the trace is collected. Changing this setting does not affect any previously collected traces.
The Concurrency Visualizer uses Event Tracing for Windows (ETW) when it collects a trace. ETW uses various buffers as it stores events. The default ETW buffer settings might not be optimal in all cases, and in some cases, might cause problems such as lost events. You can use the Buffering tab to configure ETW buffer settings. For more information, see Event Tracing and EVENT_TRACE_PROPERTIES structure.
On the Filter tab, you can select the set of events that the Concurrency Visualizer collects. Selecting a subset of events limits the types of data that are displayed in the reports, reduces the size of each trace, and reduces the time that's required to process traces.
Events generated by the Common Language Runtime (CLR) enable the Concurrency Visualizer to resolve managed call stacks. If you disable collection of CLR events, the trace size will be reduced, but some call stacks will not resolve. As a result, some CPU thread activity might be incorrectly categorized.
By default, CLR events are collected only when a managed process is profiled because they are normally unnecessary for native processes. In some cases (for example, when a native process is hosting the CLR), you might have to collect CLR events for a native process. If this is the case, select the Collect for Native Processes check box.
The CLR generates events from two providers: runtime and rundown. If you want to collect CLR runtime events, but want to avoid collecting rundown events, select the Disable Rundown Events check box. This reduces the size of the trace file that's generated by collection, but some stacks might not resolve. For more information, see CLR ETW Providers
You can use sample events to collect call stacks that are associated with thread execution. These events are collected approximately once per millisecond for threads that are executing in the current process. If you disable the collection of sample events, the size of the collected trace is reduced, but you cannot view any call stacks that are associated with thread execution.
On the Markers tab, you can configure the set of ETW providers that are shown as Markers in the Concurrency Visualizer. You can also filter the Marker collection based on importance level and ETW category. If you are using the Concurrency Visualizer SDK and are using your own Marker provider, you can register it here so that it appears in the Threads View.
If your code uses the Concurrency Visualizer SDK or generates ETW events that follow the EventSource convention, you can view these events in the Concurrency Visualizer by registering them in this dialog box.
In the Name field, enter a name that describes the types of events that are generated by the provider. In the GUID field, enter the GUID that is associated with this provider. (A GUID is associated with every ETW provider.)
Optionally, you can specify whether to filter out events from this provider, based on category or importance level. You can use the category field to filter based on Concurrency Visualizer SDK categories. To do this, enter a comma-delimited string of categories or ranges of categories. This specifies the categories of events in the current provider to show. If you are adding an EventSource provider, you can use the category field to filter by ETW keyword. Because the keyword is a bitmask, you can use a comma-delimited string of integers to specify which bits in the mask are set. For example, "1,2" sets the first and second bits, and this translates to 6 in decimal.
You can use the importance-level list to filter out events that have an importance or ETW level that's less than the specified value.
On the Files tab, you can specify the directory under which trace files are stored each time a trace is collected. The Concurrency Visualizer generates four files for each trace it collects:
A kernel-mode event trace log (ETL) file (*.kernel.etl)
A user-mode event trace log file (*.user.etl)
A Concurrency Visualizer Data file (*.CVData)
A Concurrency Visualizer Trace file (*.CVTrace)
The two ETL files store the raw trace data, and the two Concurrency Visualizer files store the processed data. The raw ETL files are typically not used after a trace is processed. Selecting the Delete Event Trace Log (ETL) files after analysis check box reduces the amount of trace data that's stored on your disk.