방법: 프로파일러 명령줄을 사용하여 .NET 서비스 계측 및 자세한 타이밍 데이터 수집How to: Instrument a .NET Service and Collect Detailed Timing Data by Using the Profiler Command Line

이 항목에서는 Visual Studio PremiumVisual Studio Premium 프로파일링 도구 명령줄 도구를 사용하여 .NET Framework.NET Framework 서비스를 계측하고 자세한 타이밍 데이터를 수집하는 방법을 설명합니다.This topic describes how to use Visual Studio PremiumVisual Studio Premium Profiling Tools command-line tools to instrument a .NET Framework.NET Framework service and collect detailed timing data.

참고

서비스가 컴퓨터가 운영 체제가 시작되는 경우에만 시작하는 서비스를 시작한 후 다시 시작할 수 없는 경우 계측 방법으로 서비스를 프로파일링할 수 없습니다.You cannot profile a service with the instrumentation method if the service cannot be restarted after the computer starts, such a service that starts only when the operating system starts.

프로파일링 도구의 명령줄 도구는 Visual StudioVisual Studio 설치 디렉터리의 \Team Tools\Performance Tools 하위 디렉터리에 있습니다.Command-line tools of the Profiling Tools are located in the \Team Tools\Performance Tools subdirectory of the Visual StudioVisual Studio installation directory. 64비트 컴퓨터에서는 도구의 64비트 및 32비트 버전을 둘 다 사용할 수 있습니다.On 64 bit computers, both 64 bit and 32 bit versions of the tools are available. 프로파일러 명령줄 도구를 사용하려면 도구 경로를 명령 프롬프트 창의 PATH 환경 변수에 추가하거나 명령 자체에 추가해야 합니다.To use the profiler command-line tools, you must add the tools path to the PATH environment variable of the command prompt window or add it to the command itself. 자세한 내용은 명령줄 도구의 경로 지정을 참조하세요.For more information, see Specifying the Path to Command Line Tools.

프로파일링 실행에 계층 상호 작용 데이터를 추가하려면 명령줄 프로파일링 도구를 사용해서 특정 절차를 수행해야 합니다.Adding tier interaction data to a profiling run requires specific procedures with the command line profiling tools. 계층 상호 작용 데이터 수집을 참조하세요.See Collecting tier interaction data.

계측 방법을 사용하여 .NET Framework.NET Framework 서비스에서 자세한 타이밍 데이터를 수집하려면 VSInstr.exe 도구를 사용하여 계측된 구성 요소의 버전을 생성합니다.To collect detailed timing data from a .NET Framework.NET Framework service by using the instrumentation method, you use the VSInstr.exe tool to generate an instrumented version of the component. 그런 다음 계측되지 않은 버전의 서비스를 계측된 버전으로 바꿉니다. 서비스가 수동으로 시작되도록 구성되어 있는지 확인합니다.You then replace the non-instrumented version of the service with the instrumented version, making sure that the service is configured to start manually. VSPerfCLREnv.cmd 도구를 사용하여 전역 프로파일링 환경 변수를 초기화한 다음 호스트 컴퓨터를 다시 시작합니다.You use the VSPerfCLREnv.cmd tool to initialize the global profiling environment variables and then restart the host computer. 그런 다음 프로파일러를 시작합니다.You then start the profiler.

서비스가 시작되면 자동으로 타이밍 데이터가 데이터 파일로 수집됩니다.When the service is started, timing data is automatically collected to a data file. 프로파일링 세션 중에 데이터 수집을 일시 중지하고 다시 시작할 수 있습니다.You can pause and resume data collection during the profiling session.

프로파일링 세션을 종료하려면 서비스를 끈 다음 프로파일러를 명시적으로 종료합니다.To end a profiling session, you turn off the service and then explicitly shut down the profiler. 대부분의 경우 세션 종료 시 프로파일링 환경 변수를 지우는 것이 좋습니다.In most cases, we recommend clearing the profiling environment variables at the end of a session.

프로파일러를 사용하여 응용 프로그램 시작Starting the Application with the Profiler

.NET Framework 서비스 프로파일링을 시작하려면To start profiling a .NET Framework service

  1. 명령 프롬프트 창을 엽니다.Open a command prompt window.

  2. VSInstr 도구를 사용하여 서비스 이진 파일의 계측된 버전을 생성합니다.Use the VSInstr tool to generate an instrumented version of the service binary.

  3. 원래 이진을 계측된 버전으로 바꿉니다.Replace the original binary with the instrumented version. Windows 서비스 제어 관리자에서 서비스 시작 유형이 수동으로 설정되어 있는지 확인합니다.In the Windows Service Control Manager, make sure that the service Startup Type is set to Manual.

  4. .NET Framework.NET Framework 프로파일링 환경 변수를 초기화합니다.Initialize the .NET Framework.NET Framework profiling environment variables. 유형:Type:

    VSPerfClrEnv /globaltraceonVSPerfClrEnv /globaltraceon

  5. 컴퓨터를 다시 시작합니다.Restart the computer.

  6. 명령 프롬프트 창을 엽니다.Open a command prompt window.

  7. 프로파일러를 시작합니다.Start the profiler. 유형:Type:

    VSPerfCmd /start:trace /output: OutputFile [Options]VSPerfCmd /start:trace /output: OutputFile [Options]

    • /start:trace 옵션은 프로파일러를 초기화합니다.The /start:trace option initializes the profiler.

    • /start에는 /output:OutputFile 옵션이 필요합니다.The /output:OutputFile option is required with /start. OutputFile은 프로파일링 데이터(.vsp) 파일의 이름과 위치를 지정합니다.OutputFile specifies the name and location of the profiling data (.vsp) file.

      /start:trace 옵션과 다음 옵션 중 하나를 함께 사용할 수 있습니다.You can use any one of the following options with the /start:trace option.

    참고

    /user/crosssession 옵션은 대개 서비스 프로파일링에 필요합니다.The /user and /crosssession options are usually required for profiling services.

    옵션Option 설명Description
    /user :[Domain\]UserName/user :[Domain\]UserName 프로파일링된 프로세스를 소유한 계정의 도메인 및 사용자 이름을 지정합니다.Specifies the domain and user name of the account that owns the profiled process. 이 옵션은 프로세스가 로그온한 사용자 이외의 사용자로 실행 중인 경우에만 필요합니다.This option is required only if the process is running as a user other than the logged on user. [Windows 작업 관리자]의 [프로세스] 탭에 있는 [사용자 이름] 열에 프로세스 소유자가 나열됩니다.The process owner is listed in the User Name column on the Processes tab of Windows Task Manager.
    /crosssession/crosssession 프로세스 프로파일링 기능을 다른 세션에서 사용하도록 설정합니다.Enables profiling of processes in other sessions. 이 옵션은 응용 프로그램이 다른 세션에서 실행 중인 경우 필요합니다.This option is required if the application is running in a different session. [Windows 작업 관리자]의 [프로세스] 탭에 있는 [세션 ID] 열에 세션 ID가 나열됩니다.The session id is listed in the Session ID column on the Processes tab of Windows Task Manager. /CS/crosssession에 대한 약어로 지정할 수 있습니다./CS can be specified as an abbreviation for /crosssession.
    /waitstart[:Interval]/waitstart[:Interval] 프로파일러가 오류를 반환하기 전에 초기화할 때까지 기다리는 시간(초)을 지정합니다.Specifies the number of seconds to wait for the profiler to initialize before it returns an error. Interval을 지정하지 않으면 프로파일러에서 무기한 기다립니다.If Interval is not specified, the profiler waits indefinitely. 기본적으로 /start는 즉시 반환합니다.By default, /start returns immediately.
    /globaloff/globaloff 데이터 수집을 일시 중지하고 프로파일러를 시작하려면 /globaloff 옵션을 /start 명령줄에 추가합니다.To start the profiler with data collection paused, add the /globaloff option to the /start command line. /globalon을 사용하여 프로파일링을 다시 시작합니다.Use /globalon to resume profiling.
    /counter : Config/counter : Config 구성에 지정된 프로세서 성능 카운터에서 정보를 수집합니다. 카운터 정보는 각 프로파일링 이벤트에서 수집된 데이터에 추가됩니다.Collects information from the processor performance counter specified in Config. Counter information is added to the data collected at each profiling event.
    /wincounter : WinCounterPath/wincounter : WinCounterPath 프로파일링 중에 수집할 Windows 성능 카운터를 지정합니다.Specifies a Windows performance counter to be collected during profiling.
    /automark : Interval/automark : Interval /wincounter와 함께 사용해야 합니다.Use with /wincounter only. Windows 성능 카운터 수집 이벤트 사이에 경과하는 시간(밀리초)을 지정합니다.Specifies the number of milliseconds between Windows performance counter collection events. 기본값은 500ms입니다.Default is 500 ms.
    /events : Config/events : Config 프로파일링 중에 수집할 ETW(Windows용 이벤트 추적) 이벤트를 지정합니다.Specifies an Event Tracing for Windows (ETW) event to be collected during profiling. ETW 이벤트는 별도의 파일(.etl)로 수집됩니다.ETW events are collected in a separate (.etl) file.
  8. Windows 서비스 제어 관리자에서 서비스를 시작합니다.Start the service from Windows Service Control Manager.

데이터 컬렉션 제어Controlling Data Collection

서비스가 실행되는 동안 VSPerfCmd.exe 옵션을 사용하여 프로파일러 데이터 파일에 대한 데이터 쓰기를 시작하고 중지할 수 있습니다.When the service is running, you can use VSPerfCmd.exe options to start and stop the writing of data to the profiler data file. 데이터 수집을 제어하면 서비스의 시작 또는 종료와 같이 프로그램 실행의 특정 부분에 대한 데이터를 수집할 수 있습니다.Controlling data collection enables you to collect data for a specific part of program execution, such as starting or shutting down the service.

데이터 수집을 시작 및 중지하려면To start and stop data collection

  • VSPerfCmd 옵션의 다음 쌍을 사용하여 데이터 수집을 시작 및 중지합니다.The following pairs of VSPerfCmd options start and stop data collection. 각 옵션을 개별 명령줄에서 지정합니다.Specify each option on a separate command line. 데이터 수집을 여러 번 켜고 끌 수 있습니다.You can turn data collection on and off multiple times.

    옵션Option 설명Description
    /globalon /globaloff/globalon /globaloff 모든 프로세스에 대한 데이터 수집을 시작(/globalon) 또는 중지(/globaloff)합니다.Starts (/globalon) or stops (/globaloff) data collection for all processes.
    /processon : PID /processoff : PID/processon : PID /processoff : PID 프로세스 ID(PID)로 지정된 프로세스에 대한 데이터 수집을 시작(/processon) 또는 중지(/processoff)합니다.Starts (/processon) or stops (/processoff) data collection for the process specified by the process ID (PID).
    /threadon : TID /threadoff : TID/threadon : TID /threadoff : TID 스레드 ID(TID)로 지정된 스레드에 대한 데이터 수집을 시작(/threadon) 또는 중지(/threadoff)합니다.Starts (/threadon) or stops (/threadoff) data collection for the thread specified by the thread ID (TID).

프로파일링 세션 종료Ending the Profiling Session

프로파일링 세션을 종료하려면 계측된 구성 요소를 실행하고 있는 서비스를 중지한 다음 VSPerfCmd /shutdown 옵션을 호출하여 프로파일러를 끄고 프로파일링 데이터 파일을 닫습니다.To end a profiling session, stop the service that is running the instrumented component, and then call the VSPerfCmd /shutdown option to turn the profiler off and close the profiling data file. VSPerfClrEnv /globaloff 명령은 프로파일링 환경 변수를 지웁니다.The VSPerfClrEnv /globaloff command clears the profiling environment variables.

새 환경 설정을 적용하려면 컴퓨터를 다시 시작해야 합니다.You must restart the computer for the new environment settings to be applied.

프로파일링 세션을 종료하려면To end a profiling session

  1. 서비스 제어 관리자에서 서비스를 중지합니다.Stop the service from Service Control Manager.

  2. 프로파일러를 종료합니다.Shut down the profiler. 유형:Type:

    VSPerfCmd /shutdownVSPerfCmd /shutdown

  3. 모든 프로파일링이 완료되면 프로파일링 환경 변수를 지웁니다.When you have completed all profiling, clear the profiling environment variables. 유형:Type:

    VSPerfClrEnv /globaloffVSPerfClrEnv /globaloff

  4. 계측된 모듈을 원본으로 바꿉니다.Replace the instrumented module with the original. 필요한 경우 서비스의 시작 유형을 다시 구성합니다.If necessary, reconfigure the Startup Type of the service.

  5. 컴퓨터를 다시 시작합니다.Restart the computer.

참고 항목See Also

서비스 프로파일링 Profiling Services
계측 방법 데이터 뷰Instrumentation Method Data Views