세션

WPR(Windows Performance Recorder)은 ETW(Windows 이벤트 추적)를 확장합니다. ETW 로깅 세션은 ETW 공급자 API(애플리케이션 프로그래밍 인터페이스)를 통해 이벤트를 수락하는 메모리 내 버퍼의 컬렉션입니다. 이러한 버퍼는 일반적으로 페이징되지 않으며 커널에서 관리됩니다. ETW는 각 프로세서에 버퍼를 할당합니다. ETW 이벤트 생성 및 버퍼링은 ETW가 모든 종류의 이벤트를 기록할 수 있도록 잠기지 않습니다.

ETW가 EventWrite 메서드를 호출할 때마다 ETW는 ETW가 호출 스레드를 실행하는 프로세서에 할당한 현재 버퍼의 공간을 예약합니다. 그런 다음 ETW는 이벤트 헤더 및 사용자 데이터를 해당 공간에 복사합니다. 버퍼가 가득 차면 ETW는 버퍼를 로깅 세션의 로그 파일 또는 실시간 스트리밍 소비자로 플러시합니다. 그런 다음 ETW는 해당 프로세서에 사용 가능한 버퍼를 할당합니다.

로깅 처리량이 버퍼를 해제하는 플러시기의 기능을 초과하면 로깅 세션에서 사용 가능한 모든 버퍼 공간을 사용할 수 없게 될 수 있습니다. 예를 들어 디스크 쓰기 처리량이 들어오는 이벤트 처리량보다 낮기 때문에 이 문제가 발생할 수 있습니다. 이로 인해 EventWrite에서 ERROR_NOT_ENOUGH_MEMORY 오류가 발생하고 이벤트 데이터가 손실됩니다. 이러한 경우 ETW는 소비자가 데이터 손실을 볼 수 있도록 로깅 세션의 EventsLost 속성을 증가시킵니다.

기록에서 이벤트 손실을 방지하는 방법에 대한 자세한 내용은 손실된 이벤트 방지를 참조하세요.

메모리 또는 파일에 로깅

메모리의 버퍼 또는 파일에 이벤트 데이터를 기록하도록 프로필을 구성할 수 있습니다. 버퍼링 모드는 메모리 내 순환 세션입니다. 요청 시 이 세션의 콘텐츠를 ETL(이벤트 추적 로그) 파일에 스냅샷으로 저장할 수 있습니다. WPR은 콘텐츠를 저장할 때 메모리 내 버퍼 공간의 콘텐츠를 플러시하지 않습니다.

버퍼링 모드 세션을 계속 사용할 수 있습니다. 이는 관심 동작이 언제 발생할지 모르는 경우에 특히 유용합니다. 필요한 순환 버퍼 공간이 메모리에 보관될 만큼 작은 경우 버퍼링 모드를 선택합니다. 순차 로그 파일은 제어된 시나리오에 가장 적합합니다. 예를 들어 회귀 테스트에 순차적 로그 파일을 사용하거나 관심 동작의 발생을 예측하기 쉬운 경우에 사용할 수 있습니다.

로깅 옵션에 대한 자세한 내용은 로깅 모드를 참조하세요.

기록 프로필

기록 프로필은 각 세션을 제어합니다. 프로필은 기본 제공 프로필 또는 사용자 정의 프로필일 수 있습니다. 자세한 내용은 기록 프로필을 참조하세요.

버퍼 크기

버퍼 크기는 I/O 효율성을 제어하고 WPR이 큰 이벤트를 건너뛰지 않도록 하는 데 중요합니다. 매우 작은 버퍼는 I/O 쓰기 효율성을 줄일 수 있습니다. 적절한 쓰기 성능을 높이고 디스크 오버헤드 및 손실된 이벤트를 줄이려면 최소 버퍼 크기가 64KB 또는 128KB인 것이 좋습니다. 버퍼 크기는 기록의 최대 기간을 결정합니다. ETW는 가장 큰 이벤트 크기를 약 64KB로 제한합니다.

수집기

기록 프로필의 세션에 대한 시스템 수집기 및 하나 이상의 이벤트 수집기를 정의해야 합니다. 수집기 이름은 시스템에 고유해야 하며 시스템에서 로그 파일에 대한 단독 쓰기 액세스 권한이 있어야 합니다. 로그 파일의 이름은 모든 수집기의 파일 이름 사이에서도 고유해야 합니다. WPR은 환경 변수를 확장하지 않으므로 환경 변수 없이 로그 파일의 경로를 지정해야 합니다. 자세한 내용은 1. 수집기 정의를 참조하세요.

공급자

로깅 세션은 정의된 시스템 및 이벤트 공급자 집합에서 수집됩니다. 세션별로 구성해야 하는 중요한 항목입니다. 대부분의 공급자는 세션과 다대다 관계를 가질 수 있습니다. 커널 또는 힙 이벤트와 같은 일부 이벤트에는 특수 공급자가 필요합니다. 자세한 내용은 공급자를 참조하세요.

WPR 기능

WPR 일반적인 시나리오

기록 프로필

버퍼

BufferSize