CPU 샘플링 초보자를 위한 지침Beginners Guide to CPU Sampling

Visual Studio 프로파일링 도구를 사용하여 응용 프로그램의 성능 문제를 분석할 수 있습니다.You can use Visual Studio profiling tools to analyze performance issues in your application. 다음 절차에서는 샘플링 데이터 사용 방법을 보여 줍니다.This procedure shows how to use Sampling data.

참고

계측 지원과 같은 특수 기능이 필요하지 않은 경우, 레거시 CPU 샘플링 도구 대신 진단 도구 창에서 CPU 사용량 도구를 사용하는 것이 좋습니다.We recommend you use the CPU Usage tool in the Diagnostics Tools window instead of the legacy CPU sampling tool, unless you need specialized features such as instrumentation support.

샘플링은 응용 프로그램에서 대부분의 사용자 모드 작업을 수행하는 함수를 표시하는 통계 프로파일링 방법입니다.Sampling is a statistical profiling method that shows you the functions that are doing most of the user mode work in the application. 응용 프로그램의 속도를 빠르게 만드는 영역을 찾으려는 경우 샘플링으로 시작하면 좋습니다.Sampling is a good place to start to look for areas to speed up your application.

샘플링 방법은 응용 프로그램에서 실행되는 함수에 대한 정보를 지정된 간격으로 수집합니다.At specified intervals, the Sampling method collects information about the functions that are executing in your application. 프로파일링 실행이 끝나면 프로파일링 데이터의 요약 뷰에 실행 부하 과다 경로라고 하는 가장 활동적인 함수 호출 트리가 표시됩니다. 여기서 대부분의 응용 프로그램 작업이 수행됩니다.After you finish a profiling run, the Summary view of the profiling data shows the most active function call tree, called the Hot Path, where most of the work in the application was performed. 또한 이 뷰에는 대부분의 개별 작업을 수행하는 함수가 표시되고 샘플링 세션의 특정 세그먼트를 집중적으로 확인할 수 있는 시간 표시 막대 그래프도 표시됩니다.The view also lists the functions that were performing the most individual work, and provides a timeline graph you can use to focus on specific segments of the sampling session.

샘플링으로 필요한 데이터를 얻지 못할 경우 다른 프로파일링 도구 수집 방법으로 유용한 다른 종류의 정보를 얻을 수 있습니다.If Sampling does not give you the data that you need, other profiling tools collection methods provide different kinds of information that might be helpful to you. 이러한 기타 방법에 대한 자세한 내용은 방법: 컬렉션 메서드 선택을 참조하세요.For more information about these other methods, see How to: Choose Collection Methods.

Windows 함수를 호출하는 코드를 프로파일링하는 경우 가장 최근의 .pdb 파일이 있는지 확인해야 합니다.If you profile code that calls Windows functions, you should make sure that you have the most current .pdb files. 이 파일이 없으면 보고서 뷰에 암호화되어 이해하기 어려운 Windows 함수 이름이 표시됩니다.Without these files, your report views will list Windows function names that are cryptic and difficult to understand. 필요한 파일이 있는지 확인하는 방법에 대한 자세한 내용은 방법: Windows 기호 정보 참조를 참조하세요.For more information about how to make sure that you have the files you need, see How to: Reference Windows Symbol Information.

성능 세션 만들기 및 실행Create and run a performance session

분석이 필요한 데이터를 가져오려면 먼저 성능 세션을 만든 후 세션을 실행해야 합니다.To get the data that you need to analyze, you must first create a performance session and then run the session. 성능 마법사로 두 작업을 모두 수행할 수 있습니다.The Performance Wizard lets you do both.

Windows 데스크톱 앱 또는 ASP.NET 앱을 프로파일링하지 않는 경우 다른 프로파일링 도구 중 하나를 사용해야 합니다.If you are not profiling a Windows desktop app or ASP.NET app, you must use one of the other profiling tools. 프로파일링 도구를 참조하세요.See Profiling Tools.

성능 세션을 만들고 실행하려면To create and run a performance session

  1. Visual Studio에서 솔루션을 엽니다.Open the solution in Visual Studio. 구성을 해제로 설정합니다.Set the configuration to Release. 도구 모음에서 기본적으로 디버그로 설정되어 있는 솔루션 구성을 찾습니다.(Find the Solution Configurations box on the toolbar, which is set to Debug by default. 이 항목을 해제로 변경합니다.Change it to Release.)

    중요

    사용 중인 컴퓨터에서 관리자가 아닌 경우 프로파일러를 사용하는 동안 Visual Studio를 관리자 권한으로 실행해야 합니다.If you are not an administrator on the computer that you are using, you should run Visual Studio as an administrator while you are using the profiler. Visual Studio 응용 프로그램 아이콘을 마우스 오른쪽 단추로 클릭하고 관리자 권한으로 실행을 클릭합니다.(Right-click the Visual Studio application icon, and then click Run as administrator.

  2. 디버그 메뉴에서 프로파일러를 선택한 다음 성능 프로파일러을 선택합니다.On the Debug menu, select Profiler, and then select Performance Profiler.

  3. 성능 마법사 옵션을 클릭하고 시작을 클릭합니다.Check the Performance Wizard option, and click Start.

  4. CPU 샘플링(권장) 옵션을 클릭하고 마침을 클릭합니다.Check the CPU Sampling (recommended) option and click Finish.

  5. 응용 프로그램이 시작되고 프로파일러가 데이터를 수집하기 시작합니다.Your application starts and the profiler starts to collect data.

  6. 성능 문제가 있을 수 있는 기능을 실행합니다.Exercise the functionality that might contain performance issues.

  7. 평소처럼 응용 프로그램을 닫습니다.Close the application as you usually would.

    응용 프로그램 실행이 끝나면 프로파일링 데이터의 요약 뷰가 주 Visual Studio 창에 나타나고 새 세션에 대한 아이콘이 성능 탐색기 창에 표시됩니다.After you finish running the application, the Summary view of the profiling data appears in the main Visual Studio window and an icon for the new session appears in the Performance Explorer window.

2단계: 샘플링 데이터 분석Step 2: Analyze Sampling data

성능 세션 실행이 끝나면 프로파일링 보고서의 요약 뷰가 Visual Studio의 주 창에 나타납니다.When you finish running a performance session, the Summary view of the profiling report appears in the main window in Visual Studio.

실행 부하 과다 경로를 검사한 다음 가장 많은 작업을 수행하는 함수 목록을 검사하고 마지막으로 요약 타임라인을 사용하여 다른 함수를 중점으로 데이터를 분석하는 것이 좋습니다.We recommend that you begin analyzing your data by examining the Hot Path, then the list of functions that are doing the most work, and finally by focusing on other functions by using the Summary Timeline. 오류 목록 창에서 프로파일링 권장 사항 및 경고를 볼 수도 있습니다.You can also view profiling suggestions and warnings in the Error List window.

샘플링 방법으로 필요한 정보를 얻지 못할 수도 있습니다.Be aware that the sampling method might not give you the information that you need. 예를 들어 샘플은 응용 프로그램이 사용자 모드 코드를 실행하는 경우에만 수집됩니다.For example, samples are collected only when the application is executing user mode code. 따라서 입력 및 출력 작업 등의 일부 기능은 샘플링을 통해 캡처되지 않습니다.Therefore, some functionality, such as input and output operations, is not captured by sampling. 프로파일링 도구는 중요한 데이터에 초점을 맞출 수 있도록 하는 여러 컬렉션 메서드를 제공합니다.The Profiling Tools provide several collection methods that can enable you to focus on the important data. 다른 메서드에 대한 자세한 내용은 방법: 컬렉션 메서드 선택을 참조하세요.For more information about the other methods, see How to: Choose Collection Methods.

그림에서 번호가 매겨진 각 영역은 절차의 단계와 관련되어 있습니다.Each numbered area in the figure relates to a step in the procedure.

샘플링을 위한 요약 보고서 뷰Summary report view for sampling

샘플링 데이터를 분석하려면To analyze sampling data

  1. 요약 뷰에서 실행 부하 과다 경로에는 포괄 샘플이 가장 많은 응용 프로그램의 호출 트리 분기를 보여 줍니다.In the Summary view, the Hot Path shows the branch of your application's call tree with the highest inclusive samples. 이 분기는 데이터가 수집될 때 가장 활발하게 작업 중이던 실행 경로입니다.This is the execution path that was most active when data was collected. 포괄 값이 많으면 호출 트리를 생성하는 알고리즘이 최적화될 수 있습니다.High inclusive values can indicate that the algorithm that generates the call tree can be optimized. 코드에서 최하위 경로에 있는 함수를 찾을 수 있습니다.Find the function in your code that is lowest in the path. 경로에 시스템 함수 또는 외부 모듈의 함수도 포함될 수 있습니다.Notice that the path can also include system functions or functions in external modules.

    프로파일러 실행 부하 과다 경로Profiler Hot Path

    1. 포괄 샘플은 해당 함수와 이 함수가 호출한 함수가 수행한 작업의 양을 나타냅니다.Inclusive Samples indicate how much work was done by the function and any functions called by it. 포괄 횟수가 많으면 전반적인 비용이 가장 많이 드는 함수인 것입니다.High inclusive counts point to the functions that are most expensive overall.

    2. 전용 샘플은 해당 함수가 호출한 함수에 의해 수행된 작업은 제외하고 함수 본문의 코드에 의해 수행된 작업의 양을 나타냅니다.Exclusive Samples indicate how much work was done by the code in the function body, excluding the work done by functions that were called by it. 전용 횟수가 많으면 함수 자체 내에서 성능 병목 현상이 있는 것일 수 있습니다.High exclusive counts may indicate a performance bottleneck within the function itself.

  2. 함수 이름을 클릭하면 프로파일링 데이터에 대한 함수 정보 뷰가 표시됩니다.Click the function name to display the Function Details view of the profiling data. 함수 정보 뷰에는 선택한 함수에 대한 프로파일링 데이터의 그래픽 뷰가 제공되고, 해당 함수를 호출한 모든 함수 및 선택한 함수에 의해 호출된 모든 함수가 표시됩니다.The Function Details view presents a graphical view of the profiling data for the selected function, showing all the functions that called that function and all the functions that were called by the selected function.

    • 호출하는 함수 및 호출되는 함수의 블록 크기는 함수의 상대적인 호출 빈도를 나타냅니다.The size of the blocks of the calling and called functions represent the relative frequency that the functions called or were called.

    • 호출하는 함수 및 호출되는 함수의 이름을 클릭하여 함수 정보 뷰의 선택된 함수로 나타낼 수 있습니다.You can click the name of a calling or called function to make it the selected function of the Function Details view.

    • 함수 정보 창의 아래쪽 창에는 함수 코드 자체가 표시됩니다.The lower pane of the Function Details windows displays the function code itself. 코드를 검사하고 성능을 최적화할 기회를 얻은 경우 소스 파일 이름을 클릭하여 Visual Studio 편집기에서 파일을 엽니다.If you examine the code and find an opportunity to optimize its performance, click the source file name to open the file in the Visual Studio editor.

  3. 분석을 계속하려면 뷰 드롭다운 목록에서 요약을 선택하여 요약 뷰로 돌아갑니다.To continue your analysis, return to the Summary view by selecting Summary from the View drop-down list. 그런 후 개별 작업이 가장 많은 함수에서 함수를 검토합니다.Then examine the functions in Functions Doing the Most Individual Work. 이 목록에는 전용 샘플이 가장 많은 함수가 표시됩니다.This list displays the functions with the highest exclusive samples. 이러한 함수의 함수 본문에 포함된 코드는 중요한 작업을 수행한 것이며 코드를 최적화할 수 있습니다.The code in the function body of these functions performed significant work and you might be able to optimize it. 특정 함수를 추가적으로 분석하려면 함수 이름을 클릭하여 함수 정보 뷰에 표시합니다.To further analyze a particular function, , click the function name to display it in the Function Details view.

    가장 많은 작업을 실행하는 함수의 목록List of functions doing the most work

    프로파일링 실행을 계속 조사하려면 요약 뷰의 타임라인을 통해 프로파일링 데이터의 세그먼트를 다시 분석하여 선택한 세그먼트의 실행 부하 과다 경로개별 작업이 가장 많은 함수를 표시할 수 있습니다.To continue your investigation of the profiling run, you can reanalyze a segment of the profiling data by using the timeline in the Summary view to show you the Hot Path and Functions Doing Most Individual Work from a selected segment. 예를 들어 타임라인에서 좀 더 낮은 정점에 주안점을 두면 전체 프로파일링 실행을 분석할 때는 표시되지 않던 비용이 많이 드는 호출 트리 및 함수가 드러날 수 있습니다.For example, focusing on a smaller peak in the timeline might reveal expensive call trees and functions that were not shown in the analysis of the entire profiling run.

    세그먼트를 다시 분석하려면 요약 타임라인 상자에서 세그먼트를 선택하고 선택 항목으로 필터링을 클릭합니다.To reanalyze a segment, select a segment inside the Summary Timeline box and then click Filter by Selection.

    성능 요약 보기 타임라인Performance Summary view timeline

  4. 또한 프로파일러는 규칙 집합을 사용하여 프로파일링 실행을 개선하는 방법을 제안하고 잠재적인 성능 문제를 식별합니다.The profiler also uses a set of rules to suggest ways of improving the profiling run and to identify possible performance problems. 문제가 발견되면 오류 목록 창에 경고가 표시됩니다.If an issue is found, a warning is displayed in the Error List window. 오류 목록 창을 열려면 메뉴에서 오류 목록을 클릭합니다.To open the Error List window, on the View menu click Error List.

    • 경고를 발생시킨 함수를 확인하려면 함수 정보 뷰에서 해당 경고를 두 번 클릭합니다.To see the function that raised a warning the Function Details view, double-click the warning.

    • 경고에 대한 자세한 내용을 보려면 오류를 마우스 오른쪽 단추로 클릭하고 오류 도움말 표시를 클릭합니다.To view detailed information about the warning, right-click the error and then click Show Error Help

3단계: 코드 수정 및 세션 다시 실행Step 3: Revise code and rerun a session

하나 이상의 함수를 찾아서 최적화한 후에는 프로파일링 실행을 반복하고 데이터를 비교하여 변경 내용이 응용 프로그램 성능에 가져온 차이를 확인할 수 있습니다.After you find and optimize one or more functions, you can repeat the profiling run and compare the data to see the difference that your changes have made to the performance of your application.

코드를 수정하고 프로파일러를 다시 실행하려면To revise code and rerun the profiler

  1. 코드를 변경합니다.Change your code.

  2. 성능 탐색기를 열려면 디버그 메뉴에서 프로파일러, 성능 탐색기, 성능 탐색기 표시를 차례로 클릭합니다.To open the Performance Explorer, on the Debug menu click Profiler, then Performance Explorer and then click Show Performance Explorer.

  3. 성능 탐색기에서 다시 실행할 세션을 마우스 오른쪽 단추로 클릭하고 프로파일링 시작을 클릭합니다.In the Performance Explorer, right-click the session that you want to rerun, and then click Launch with Profiling.

  4. 세션을 다시 실행하면 성능 탐색기에서 해당 세션에 대한 보고서 폴더에 다른 데이터 파일이 추가됩니다.After you rerun the session, another data file is added to the Reports folder for the session in Performance Explorer. 원본 및 새 프로파일링 데이터를 둘 다 선택하고 선택 영역을 마우스 오른쪽 단추로 클릭한 후 성능 보고서 비교를 클릭합니다.Select both the original and new profiling data, right-click the selection, and then click Compare Performance Reports.

    새 보고서 창이 열리고 비교 결과가 표시됩니다.A new report window opens, displaying the results of the comparison. 비교 보기를 사용하는 방법에 대한 자세한 내용은 방법: 성능 데이터 파일 비교를 참조하세요.For more information about how to use the comparison view, see How to: Compare Performance Data Files.

참고 항목See Also

성능 탐색기 Performance Explorer
시작 Getting Started
개요Overviews
Visual Studio의 프로파일링Profiling in Visual Studio
프로파일링 기능 둘러보기Profiling Feature Tour