성능 데이터 수집 방법 이해Understanding Performance Collection Methods

Visual Studio 프로파일링 도구는 성능 데이터를 수집하는 데 사용할 수 있는 5가지 방법을 제공합니다.The Visual Studio Profiling Tools provide five methods that you can use to collect performance data. 이 항목에서는 각 방법에 대해 설명하고, 특정 방법으로 데이터를 수집하는 것이 적절한 몇 가지 시나리오를 제시합니다.This topic describes the different methods and suggests some scenarios in which collecting data with a particular method can be appropriate.

참고

Windows 8 및 Windows Server 2012의 강화된 보안 기능을 위해 Visual Studio 프로파일러가 이러한 플랫폼에서 데이터를 수집하는 방법을 상당히 변경해야 했습니다.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 앱에는 새로운 수집 기술도 필요합니다.UWP apps also require new collection techniques. Windows 8 및 Windows Server 2012 응용 프로그램의 성능 도구를 참조하세요.See Performance Tools on Windows 8 and Windows Server 2012 applications.

메서드Method 설명Description
샘플링Sampling 응용 프로그램에서 수행하는 작업에 대한 통계 데이터를 수집합니다.Collects statistical data about the work performed by an application.
계측Instrumentation 각 함수 호출에 대한 상세 타이밍 정보를 수집합니다.Collects detailed timing information about each function call.
동시성Concurrency 다중 스레드 응용 프로그램에 대한 상세 정보를 수집합니다.Collects detailed information about multi-threaded applications.
.NET 메모리.NET memory .NET 메모리 할당 및 가비지 수집에 대한 상세 정보를 수집합니다.Collects detailed information about .NET memory allocation and garbage collection.
계층 상호 작용Tier interaction SqlServer 데이터베이스에 대한 비동기 ADO.NET 함수 호출 관련 정보를 수집합니다.Collects information about synchronous ADO.NET function calls to a SqlServer database.

계층 상호 작용 프로파일링은 Visual Studio의 모든 버전을 사용하여 수집할 수 있습니다.Tier interaction profiling can be collected using any edition of Visual Studio. 그러나 계층 상호 작용 프로파일링 데이터는 Visual Studio Enterprise에서만 볼 수 있습니다.However, tier interaction profiling data can be viewed only in Visual Studio Enterprise.

일부 프로파일링 방법을 사용하는 경우에는 소프트웨어 및 하드웨어 성능 카운터와 같은 추가 데이터도 수집할 수 있습니다.By using some of the profiling methods, you can also collect additional data, such as software and hardware performance counters. 자세한 내용은 추가 성능 데이터 수집을 참조하세요.For more information, see Collecting Additional Performance Data.

샘플링Sampling

샘플링 프로파일링 방법은 프로파일링 실행 중에 응용 프로그램이 수행하는 작업에 대한 통계 데이터를 수집합니다.The sampling profiling method collects statistical data about the work that is performed by an application during a profiling run. 샘플링 방법은 간단하며 응용 프로그램 메서드 실행에 거의 영향을 주지 않습니다.The sampling method is lightweight and has little effect on the execution of the application methods.

샘플링은 Visual Studio 프로파일링 도구의 기본 방법이며Sampling is the default method of the Visual Studio Profiling Tools. 다음과 같은 경우 유용합니다.It is useful for the following:

  • 응용 프로그램 성능을 처음으로 파악하려는 경우Initial explorations of the performance of your application.
  • 프로세서(CPU) 사용률과 관련된 성능 문제를 조사하려는 경우Investigating performance issues that involve the utilization of the processor (CPU).

샘플링 프로파일링 방법은 설정된 간격으로 컴퓨터 프로세서를 중단하여 함수 호출 스택을 수집합니다.The sampling profiling method interrupts the computer processor at set intervals and collects the function call stack. 실행 중인 함수에 대해 전용 샘플 개수가 증가하며, 호출 스택의 모든 호출 함수에 대해 포괄 샘플 개수가 증가합니다.Exclusive sample counts are incremented for the function that is executing and inclusive counts are incremented for all of the calling functions on the call stack. 샘플링 보고서에서는 프로파일링된 모듈, 함수, 소스 코드 줄 및 명령에 대해 이러한 개수의 합계를 제공합니다.Sampling reports present the totals of these counts for the profiled module, function, source code line, and instruction.

기본적으로 프로파일러는 샘플링 간격을 CPU 주기로 설정합니다.By default, the profiler sets the sampling interval to CPU cycles. 간격 유형을 다른 CPU 성능 카운터로 변경할 수 있으며, 간격에 대해 카운터 이벤트 수를 설정할 수 있습니다.You can change the interval type to another CPU performance counter and you can set the number of counter events for the interval. 또한 ADP.NET을 통해 SQL Server 데이터베이스에 대해 수행하는 쿼리에 대한 정보를 제공하는 TIP(계층 상호 작용 프로파일링) 데이터도 수집할 수 있습니다.You can also collect tier interaction profiling(TIP) data that provides information about the queries that are made to a SQL server database through ADO.NET.

샘플링을 사용하여 성능 통계 수집Collecting Performance Statistics by Using Sampling

샘플링 데이터 값 이해Understanding Sampling Data Values

샘플링 방법 데이터 뷰Sampling Method Data Views

계측Instrumentation

계측 프로파일링 방법은 프로파일링된 응용 프로그램의 함수 호출에 대한 상세 타이밍을 수집합니다.The instrumentation profiling method collects detailed timing for the function calls in a profiled application. 다음과 같은 경우 계측 프로파일링이 유용합니다.Instrumentation profiling is useful for the following:

  • 디스크 I/O와 같은 입/출력 병목 현상을 조사하려는 경우Investigating input/output bottlenecks such as disk I/O.
  • 특정 모듈 또는 함수 집합을 자세히 검사하려는 경우Close examination of a particular module or set of functions.

계측 방법에서는 계측된 파일의 각 함수에 대한 타이밍 정보를 캡처하는 이진 파일과 이러한 함수가 수행하는 각 함수 호출에 코드를 주입합니다.The instrumentation method injects code into a binary file that captures timing information for each function in the instrumented file and each function call that is made by those functions. 계측 파일에 쓰기와 같은 작업에 대 한 작동에 함수를 호출 하는 경우에 식별 합니다.Instrumentation also identifies when a function calls into the operating for operations such as writing to a file. 계측 보고서에서는 4개 값을 사용하여 함수 또는 소스 코드 줄에서 소요된 총 시간을 나타냅니다.Instrumentation reports use four values to represent the total time spent in a function or source code line:

  • 경과된 포괄 시간 - 함수 또는 소스 줄을 실행하는 데 소요되는 총 시간입니다.Elapsed Inclusive - The total time that is spent executing the function or source line.

  • 응용 프로그램 포괄 시간 - 운영 체제를 호출하는 데 소요된 시간을 제외하고 함수 또는 소스 줄을 실행하는 데 소요된 시간입니다.Application Inclusive - The time that is spent executing the function or source line, but excluding time that is spent in calls to the operating system.

  • 경과된 전용 시간 - 함수 또는 소스 코드 줄의 본문에 있는 코드를 실행하는 데 소요된 시간입니다.Elapsed Exclusive - The time that is spent executing code in the body of the function or source code line. 함수 또는 소스 줄이 호출한 함수를 실행하는 데 소요된 시간은 제외됩니다.Time that is spent executing functions that are called by the function or source line is excluded.

  • 응용 프로그램 전용 시간 - 함수 또는 소스 코드 줄의 본문에 있는 코드를 실행하는 데 소요된 시간입니다.Application Exclusive - The time that is spent executing code in the body of the function or source code line. 운영 체제 호출을 실행하는 데 소요된 시간과 함수 또는 소스 줄이 호출한 함수를 실행하는 데 소요된 시간은 제외됩니다.Time that is spent executing calls to the operating system and time that is spent executing functions that are called by the function or source line is excluded.

계측 방법을 사용하여 CPU 및 소프트웨어 성능 카운터를 둘 다 수집할 수도 있습니다.You can also collect both CPU and software performance counters by using the instrumentation method.

계측 데이터 값 이해Understanding Instrumentation Data Values

계측을 사용하여 자세한 타이밍 데이터 수집Collecting Detailed Timing Data by Using Instrumentation

계측 방법 데이터 뷰Instrumentation Method Data Views

동시성Concurrency

동시성 프로파일링은 다중 스레드 응용 프로그램에 대한 정보를 수집합니다.Concurrency profiling collects information about multithreaded applications. 리소스 경합 프로파일링에서는 경쟁하는 스레드가 공유 리소스에 액세스하기 위해 대기해야 할 때마다 자세한 호출 스택 정보를 수집합니다.Resource contention profiling collects detailed call stack information every time that competing threads are forced to wait for access to a shared resource. 또한 동시성 시각화는 다중 스레드 응용 프로그램이 자체적으로, 그리고 하드웨어/운영 체제/호스트 컴퓨터의 다른 프로세스와 상호 작용하는 방식에 대한 보다 일반적인 정보도 수집합니다.Concurrency visualization also collects more general information about how your multithreaded application interacts with itself, the hardware, the operating system, and other processes on the host computer:

  • 리소스 경합 보고서에는 총 경합 수와 대기가 발생한 모듈, 함수, 소스 코드 줄 및 명령에서 리소스를 대기하는 데 소요된 총 시간이 표시됩니다.Resource contention reports display the total number of contentions and the total time that was spent waiting for a resource for the modules, functions, source code lines, and instructions in which the waiting occurred. 시간 표시 막대 그래프에도 발생하는 경합이 표시됩니다.Timeline graphs also show the contentions as they occurred.

  • Concurrency 시각화에는 성능 병목 지점, CPU 미달 사용, 스레드 경합, 스레드 마이그레이션, 동기화 지연, 겹치는 I/O 영역 및 기타 정보를 찾는 데 사용할 수 있는 그래픽 정보가 표시됩니다.The concurrency visualizer displays graphical information that you can use to locate performance bottlenecks, CPU underutilization, thread contention, thread migration, synchronization delays, areas of overlapped I/O, and other information. 가능한 경우 그래픽 출력은 호출 스택 및 소스 코드 데이터에 연결됩니다.When possible, the graphical output links to call stack and source code data. 명령줄 및 Windows 응용 프로그램에 대해서만 동시성 시각화 데이터를 수집할 수 있습니다.Concurrency visualization data can be collected only for command line and Windows applications.

리소스 경합 데이터 값 이해Understanding Resource Contention Data Values

스레드 및 프로세스 동시성 데이터 수집Collecting Thread and Process Concurrency Data

리소스 경합 데이터 뷰Resource Contention Data Views

동시성 시각화 도우미Concurrency Visualizer

.NET 메모리.NET Memory

.NET 메모리 할당 프로파일링 방법은 프로파일링된 응용 프로그램에서 .NET Framework 개체를 할당할 때마다 컴퓨터 프로세서를 중단합니다.The .NET memory allocation profiling method interrupts the computer processor at each allocation of a .NET Framework object in a profiled application. 개체 수명 데이터도 수집되는 경우 프로파일러는 각 .NET Framework 가비지 수집 후에 프로세서를 중단합니다.When object lifetime data is also collected, the profiler interrupts the processor after each .NET Framework garbage collection.

프로파일러는 할당에서 생성되었거나 가비지 수집에서 삭제된 개체의 형식/크기/수에 대한 정보를 수집합니다.The profiler collects information about the type, size, and number of objects that were created in an allocation or were destroyed in a garbage collection.

  • 할당 이벤트가 발생하면 프로파일러는 함수 호출 스택에 대한 추가 정보를 수집합니다.When an allocation event occurs, the profiler collects additional information about the function call stack. 현재 실행 중인 함수에 대해 전용 할당 개수가 증가하며, 호출 스택의 모든 호출 함수에 대해 포괄 할당 개수가 증가합니다.Exclusive allocation counts are incremented for the function that is currently executing and inclusive counts are incremented for all the calling functions on the call stack. .NET 보고서에서는 프로파일링된 형식, 모듈, 함수, 소스 코드 줄 및 명령에 대해 이러한 개수의 합계를 제공합니다..NET reports present the totals of these counts for the profiled types, modules, functions, source code lines, and instructions.

  • 가비지 수집이 수행되면 프로파일러는 삭제된 개체에 대한 데이터와 각 가비지 수집 세대의 개체에 대한 정보를 수집합니다.When a garbage collection occurs, the profiler collects data about the objects that were destroyed and information about the objects in each garbage collection generation. 프로파일러는 프로파일링 실행이 끝나면 명시적으로 삭제되지 않은 개체에 대한 데이터를 기록합니다.At the end of the profiling run, the profiler records data about the objects that were not explicitly destroyed. 개체 수명 보고서에는 프로파일링 실행에서 할당된 각 형식의 합계가 표시됩니다.The Object Lifetime report displays the totals for each type that was allocated in the profiling run.

.NET 메모리 프로파일링은 샘플링 또는 계측 모드에서 사용할 수 있습니다..NET memory profiling can be used in either sampling or instrumentation mode. 선택하는 모드는 .NET 메모리 프로파일링에서 고유하게 생성되는 할당 및 개체 수명 보고서에 영향을 주지 않습니다.The mode that you select does not affect the Allocation and Object Lifetime reports that are unique to.NET memory profiling:

  • 샘플링 모드에서 .NET 메모리 프로파일링을 실행하면 profiler.NET이 메모리 할당 이벤트를 간격으로 사용하여 할당된 개체 수와 포괄/전용 값으로 할당된 총 바이트 수를 보고서에 표시합니다.When you run .NET memory profiling in sampling mode, the profiler.NET uses memory allocation events as the interval and displays the number of objects that were allocated and the total bytes that were allocated as the inclusive and exclusive values in the reports.

  • .NET 메모리 프로파일링을 계측 모드에서 실행하는 경우에는 포괄/전용 할당 값과 함께 자세한 타이밍 정보가 수집됩니다.When you run .NET memory profiling in instrumentation mode, detailed timing information is collected together with the inclusive and exclusive allocation values.

메모리 할당 및 개체 수명 데이터 값 이해Understanding Memory Allocation and Object Lifetime Data Values

.NET 메모리 할당 및 수명 데이터 수집Collecting .NET Memory Allocation and Lifetime Data

.NET 메모리 데이터 뷰.NET Memory Data Views

계층 상호 작용Tier Interaction

계층 상호 작용 프로파일링에서는 ASP.NETASP.NET 페이지 또는 기타 응용 프로그램과 SQL ServerSQL Server 데이터베이스 간의 동기 ADO.NETADO.NET 호출에 대한 정보를 프로파일링 데이터 파일에 추가합니다.Tier-interaction profiling adds information to a profiling data file about synchronous ADO.NETADO.NET calls between an ASP.NETASP.NET page or other application and a SQL ServerSQL Server database. 데이터에는 호출의 수와 시간, 그리고 최대/최소 시간이 포함됩니다.Data includes the number and time of calls, and the maximum and minimum times. 샘플링, 계측, .NET 메모리 또는 동시성 방법을 통해 수집되는 프로파일링 데이터에 계층 상호 작용 데이터를 추가할 수 있습니다.Tier-interaction data can be added to profiling data that is collected with the sampling, instrumentation, .NET memory, or concurrency methods.

계층 상호 작용 프로 파일링 데이터Tier Interaction Profiling Data

프로파일링 도구에서 수집되는 계층 상호 작용 데이터Tier interaction data that is collected by Profiling Tools

계층 상호 작용 데이터 수집Collecting tier interaction data

계층 상호 작용 뷰Tier Interaction Views

참고 항목See also

방법: 웹 사이트에 대한 성능 데이터 수집How to: Collect Performance Data for a Web Site
초보자를 위한 성능 프로파일링 지침Beginners Guide to Performance Profiling