Command-line profiling of services

This section describes the procedures and options for collecting performance data for Windows services by using Visual Studio Profiling Tools from the command line.


Enhanced security features in Windows 8 and Windows Server 2012 required significant changes in the way the Visual Studio profiler collects data on these platforms. UWP apps also require new collection techniques. See Performance tools on Windows 8 and Windows Server 2012 applications.

Common tasks

Task Related Content
Collect application statistics: Use the sampling method to collect performance statistics. Sampling data is useful for analyzing CPU utilization issues and for understanding the general performance characteristics of an application. - Collect application statistics using sampling
Collect detailed timing data: Use the instrumentation method to collect detailed timing information. Instrumentation data is useful for analyzing IO issues and for fine-grained analysis of application scenarios. - Collect detailed timing data using instrumentation
Collect .NET memory data: Use sampling or instrumentation to collect .NET memory allocation data that shows you the size and number of allocated objects. You can also collect object lifetime data that shows you the size and number of objects that are reclaimed in each garbage collection generation. - Collect .NET memory data
Collect concurrency data: Use the concurrency method to collect resource contention data and thread activity data that shows you CPU utilization, thread contention, thread migration, synchronization delays, areas of overlapped IO, and other system events. - Collect concurrency data
Add tier interaction data: You can add performance data about synchronous ADO.NET calls that the service made to a Microsoft SQL Server database. - Collect tier interaction data
Task Related Content
Profile stand-alone (client) applications - Profile stand-alone applications
Profile ASP.NET applications - Profile ASP.NET web applications