연습 2 - Windows Performance Toolkit을 사용하여 빠른 시작 평가
빠른 시작 평가는 읽기 쉬운 보고서에서 측정값을 가져오는 쉬운 방법이지만 ADK를 설치해야 하므로 실행하는 데 다소 시간이 걸립니다. WPR(Windows Performance Recorder) 도구를 사용하여 빠른 시작 추적을 빠르게 캡처할 수 있습니다.
1단계: WPA를 사용하여 빠른 시작 추적 열기
시작 메뉴에서 WPR(Windows Performance Recorder)을 엽니다.
추적 구성을 수정합니다.
첫 번째 수준 심사 및 CPU 사용량 공급자를 선택합니다.
성능 시나리오를 빠른 시작으로 변경합니다.
단일 추적을 수집하기 위해 반복 횟수를 1로 변경합니다.
시작을 클릭합니다.
결과 추적을 저장할 경로를 입력하고 저장을 클릭합니다.
- 이렇게 하면 시스템이 다시 부팅되어 추적을 수집하고 저장합니다.
시스템이 다시 부팅되면 추적이 완료되기까지 5분 정도 기다립니다.
이제 WPA(Windows Performance Analyzer)를 사용하여 분석할 수 있는 추적이 있습니다.
2단계: WPA를 사용하여 빠른 시작 추적 열기
시작 메뉴에서 WPA(Windows Performance Analyzer)를 엽니다.
파일 메뉴에서 1단계에서 만든 추적을 엽니다.
프로필 메뉴를 열고 적용...을 클릭합니다.
카탈로그 찾아보기...를 클릭합니다.
FastStartup.wpaprofile을 선택합니다.
열기를 클릭합니다.
이제 자주 사용되는 그래프(CPU, 디스크 등)를 가져오기 위해 추적에 시각화 프로필을 적용했습니다.
3단계: 활동 타임라인 시각화
심층 분석 탭에서 관심 영역 그래프를 봅니다.
이 보기는 연습 1에 언급된 모든 빠른 시작 하위 단계에 대한 타임라인 개요를 제공합니다.
영역 표시줄 위로 마우스를 가져가면 팝업 창이 나타나고 지역 자체에 대한 자세한 정보를 제공합니다.
부팅 주 경로 영역에 마우스를 놓으면 해당 기간을 볼 수 있습니다. 아래 예제에서는 13.6초 동안 지속됩니다.
시간을 내어 지역 트리를 탐색하고 모든 하위 단계를 살펴보고 이를 숙지합니다.
탐색기를 초기화하고 완료하는 데 걸리는 시간은 Windows 데스크톱을 만들고 사용자에게 표시하는 데 걸리는 시간입니다. 이 단계(및 그 이후에 발생하는 모든 것, 켜기/끄기 후라고도 함)는 발생하는 모든 작업은 부팅 시 시작된 프로세스의 영향을 받을 수 있습니다.
탐색기 초기화의 처음부터 시작하는 90초 간격을 선택하고 확대합니다.
관심 영역 그래프 아래에는 CPU 사용량(샘플링)과 디스크 사용량이라는 두 가지 유용한 그래프가 있습니다. 소프트웨어 사전 로드가 켜기/끄기 후 리소스 사용량 및 응답성에 미치는 영향을 평가하는 데 사용됩니다.
애플리케이션 및 서비스의 높은 CPU 사용량은 UI 응답 없음 또는 동영상 및 사운드 결함과 같은 열악한 사용자 환경에 기여할 수 있습니다. 단일 프로세스가 CPU를 너무 많이 사용하면 다른 프로세스가 시스템 리소스를 놓고 경쟁해야 하므로 지연될 수 있습니다.
스레드가 스토리지 리소스를 사용하면 작업 기간이 늘어날 수 있습니다. 여러 스레드가 스토리지 사용을 위해 경합하는 경우 결과로 발생하는 임의 디스크 검색으로 인해 지연이 더 중요해집니다.
4단계: 프로세스 CPU 사용량 분석
프로세스에서 소비되는 CPU 시간을 평가하려면 CPU 사용량(샘플링) 그래프에 집중하세요. CPU 사용량(샘플링) 그래프에 표시되는 데이터는 정기적인 1ms의 샘플링 간격으로 수집한 CPU 활동의 샘플을 나타냅니다. 테이블의 각 행은 단일 샘플을 나타냅니다.
샘플 간에 발생하는 모든 CPU 활동은 이 샘플링 방법으로 기록되지 않습니다. 따라서 인터럽트와 같은 매우 짧은 기간의 활동은 CPU 샘플링 그래프에 잘 표시되지 않습니다.
각 프로세스에 대한 CPU 사용량을 검토하여 CPU 사용량이 가장 높은 프로세스(Weight 및 %Weight)를 식별합니다. 이렇게 하려면 그래프 CPU 사용량(샘플링)으로 아래로 스크롤합니다. 왼쪽에서 프로세스 목록을 봅니다. 왼쪽에서 선택한 각 활성 프로세스가 그래프에 표시됩니다.
**팁: **
WPA 그래프를 사용하는 동안 그래프와 테이블을 모두 표시하도록 보기를 변경할 수 있습니다. 최대화 단추를 클릭하여 분석 탭에 표시된 다른 그래프를 숨길 수 있습니다.
이 예제에서 ImageSHELLY.exe는 현재 분석된 90초 간격 동안 12.4초의 CPU 시간을 사용합니다. 이 시스템의 CPU에는 두 개의 코어가 있으므로 6.9%의 상대적 사용률을 나타냅니다.
이 정보를 사용하여 이 CPU 사용량을 유발하는 특정 프로세스를 조사하거나 이 프로세스를 소유한 개발자에게 이러한 세부 정보를 전달할 수 있습니다.
추가 열을 추가하여 추가 정보를 추출할 수 있습니다(테이블 열 머리글을 마우스 오른쪽 단추로 클릭).
스레드 ID: CPU 사용량을 유발하는 스레드의 식별자
스택: CPU 사용량을 유발하는 코드 경로 및 함수를 강조 표시하는 호출 스택
위의 예제에서는 ImageSHELLY.exe 프로세스 내에서 CPU 사용량의 대부분을 발생시키는 스레드가 하나뿐이며, 이는 CPU 작업이 10.77초인 스레드 2612입니다.
스택은 이 작업이 ImageSTACEY.dll 모듈에서 온다는 것을 보여줍니다.
5단계: 프로세스 디스크 사용량 분석
프로세스에서 사용되는 디스크 대역폭의 양을 평가하려면 디스크 사용량 그래프에 집중하세요.
관심 열은 다음과 같습니다.
Pri: 디스크 I/O의 우선 순위입니다. 세 가지 가능한 우선 순위 수준은 기본, 낮음 및 매우 낮음입니다.
IO 유형: I/O의 형식입니다. 가능한 세 가지 I/O 유형은 읽기, 쓰기 및 플러시입니다.
프로세스: 디스크 I/O를 만든 프로세스의 식별자입니다.
경로 트리: I/O에서 액세스하는 파일의 위치를 나타내는 구조적 트리입니다.
크기: I/O의 크기(바이트)입니다.
디스크 서비스 시간: 디스크가 I/O를 서비스하는 데 걸리는 시간입니다.
IO 시간: I/O가 Windows I/O 큐에서 소요한 시간입니다.
- 디스크 경합이 있거나 우선 순위가 높은 I/O 디스패처를 먼저 완료해야 하는 경우 I/O를 큐에 대기할 수 있기 때문에 IO 시간은 항상 디스크 서비스 시간보다 깁니다.
이러한 열을 추가하고 정렬하여 이 보기를 가져옵니다.
켜기/끄기 후는 일반적인 우선 순위 I/O만 고려합니다. 프로세스에 따라 해당 디스크 읽기에 대한 정보를 조사합니다. 프로세스 및 서비스를 시작하려면 디스크에서 많은 데이터를 읽어야 하므로, 디스크 읽기는 일반적으로 디스크가 부팅 시 쓰는 것보다 더 많은 디스크 액세스 시간을 고려합니다.
Pri: 매우 낮음 및 Pri: 낮은 계열 옆에 있는 색 표식을 클릭하여 기본 우선 순위 I/O만 그래프에 표시되도록 합니다.
테이블 뷰에서 기본 우선 순위 행을 확장합니다.
테이블 보기에서 쓰기, 읽기 및 플러시에 대한 행을 확장한 다음 크기 열의 머리글을 클릭하여 콘텐츠를 줄이도록 정렬합니다.
화면은 다음과 같이 표시됩니다.
앞의 예제는 다음을 보여줍니다.
152MB의 데이터를 디스크에서 기본 우선 순위로 읽었습니다.
129MB의 데이터가 기본 우선 순위로 디스크에 기록되었습니다.
- 이는 주로 캡처된 ETL 추적 파일을 스토리지에 유지하기 위한 디스크 쓰기입니다.
테이블 보기에서 읽기 IO 형식 행을 확장합니다.
- 이제 켜기/끄기 후 중에 가장 많은 양의 디스크 읽기 I/O를 발생시킨 프로세스를 볼 수 있습니다.
디스크 읽기에 기여하고 Windows 구성 요소가 아닌 상위 3개 프로세스를 식별합니다.
테이블 보기에서 ImageSTUART.exe에 대한 경로 트리 행을 확장하고 탐색합니다.
앞의 예제에서 ImageSTUART.exe는 켜기/끄기 후 중에 시작 시 디스크에서 13.5MB의 데이터를 읽고, 대부분의 액세스는 프로그램 파일 폴더에서 DLL 구성 요소를 읽는 중에 이루어집니다.
소프트웨어 개발자는 이 정보를 사용하여 구성 요소와 프로세스를 식별하고, 구성 요소 크기를 줄일 수 있는지 또는 디스크에서 읽은 데이터의 양을 최소화하도록 시작 코드 경로를 최적화할 수 있는지 판단해야 합니다.
이 데이터를 사용하면 부팅 시 시작되어 디스크 사용량이 많은 타사 프로세스를 식별할 수도 있습니다. 프로세스가 디스크 경합을 유발하는 것처럼 보이는 경우 이미지에서 제거하거나 부팅 시 시작하지 않을 수 있습니다.