2011-02-01 7 views

답변

29

성능 카운터 및 ETW는 고유 한 기술입니다. 성능 카운터는 ETW를 통해 노출되지 않습니다.

기본 차이점 : 성능 카운터는 시스템 동작 (타이머 및 바이트 읽기 및 개체 할당)에 대해 높은 수준의 메트릭을 제공하지만 ETW는 진단 추적 및 로깅 기능입니다 (생각하면 Debug.WriteLine 메시지이지만 더 풍부하고 구조적입니다).

현재 ETW 및 성능 카운터는 모두 Windows에서 완전히 지원되며 개발자는 두 가지 기술에 대한 데이터를 소비하는 코드를 작성할 수 있습니다. 또한 PDH (성능 데이터 도우미) 카운터로 알려진

성능 카운터

Performance counters는 당신에게 특정 시스템으로 작동하는 방법에 대한 높은 수준의 개요를 제공 단순한 숫자 통계입니다. 예를 들어 % Processor Time은 프로세서의 시간이 사용자 모드 코드를 실행하는 데 사용되는 시간을 나타내는 성능 카운터입니다. 더 복잡한 예제로 .NET CLR Jit 범주의 # of Methods Jitted은 응용 프로그램 시작 이후 JIT 컴파일 된 .NET 메서드의 수를 알려줍니다.

성능 카운터는 일반적으로 시스템 상태를 모니터링하고 특정 성능 문제를 진단하는 데 사용됩니다. 그것들은 문제가 심각하게 잘못 될 때 문제를 잘 나타내 주지만, 왜 특정한 문제가 발생하는지에 관해 자세히 알려주지는 않습니다.

Windows 성능 카운터를 보려면 perfmon을 실행하면됩니다. Vista +에서 카운터 차트를 보려면 "성능 모니터"노드를 클릭해야 할 수도 있습니다. 프로그래밍 방식으로 성능 카운터에 액세스하려면 .NET의 System.Diagnostics.PerformanceCounter 클래스 또는 원시 코드의 PDH library을 확인하십시오. 윈도우 (ETW)에 대한 추적

이벤트

ETW는 윈도우에 내장 된 추적 시스템입니다. 기본적으로 모든 구성 요소 (예 : 사용자 응용 프로그램 또는 Windows 커널 자체)는 구성 요소가 신경 써야하는 특정 이벤트에 대한 진단 추적 정보를 보낼 수 있습니다. 예를 들어 프로세스가 시작 및 중지되거나 이미지 (예 : DLL)가로드 및 언로드되거나 스레드가 작성 또는 삭제되거나 스레드가 컨텍스트 전환을 수행 할 때 커널은 ETW 이벤트를 보냅니다. 기록 된 데이터는 다른 위치에서 구성 요소에 의해 설명되는 직렬화 된 형식으로되어있어서 진단 도구가 세션 중에 기록 된 ETW 이벤트를 읽고 이해할 수 있습니다. 모든 것이 함께 작동하는 방법에 대한 상자 및 선 다이어그램은 here을 참조하십시오.

ETW는 로깅이 활성화되지 않은 경우 시스템의 성능에 중대한 영향을 미치지 않아야합니다. Vista를 시작으로 ETW는 Windows 전반에 널리 퍼져 있으며 응용 프로그램 개발자가 사용하기위한 것입니다. 즉, 응용 프로그램이 이벤트를 기록하는 ETW 공급자가 될 수 있습니다. ETW는 이벤트 로그의 기초이며 성능 프로파일 러, 디버거 또는 시스템 모니터에서 사용할 수 있습니다.

ETW와의 인터페이싱에 대한 정보는 here 내 기타 게시물을 참조하십시오.

5

Vista에서 시작하는 this document을 기반으로 한 성능 카운터에는 ETW 외관이 있으므로 ETW와 정확히 같은 방식으로 소비 할 수 있습니다.

새로운 성능 카운터 라이브러리 (성능 라이브러리 버전 2.0)은 Windows Vista®의 포함을 포함, 개발자에게 이점을 제공합니다 : 공급자와 소비자 사이의

표준 프로세스 간 통신 (IPC) 메커니즘이 ETW (Event Tracing for Windows) 알림을 기반으로하므로 개발이 단순 해지고 일관되고 안정적인 코드가 생성됩니다.

enter image description here