Windows/윈도우 공통

[스크랩] Windows 성능 모니터 디스크 카운터 설명 (한글)

99iberty 2014. 5. 29. 20:21

http://syskb.blogspot.kr/2013/07/windows.html

 

내 이름은 Flavio Muratore이고 마이크로소프트에서 윈도우 코어 팀의 시니어 지원 에스컬레이션 엔지니어입니다. 성능모니터로 스토리지 성능 분석을 해본 경험이 있다면 이 블로그는 도움이 될 수 있습니다. 우리는 성능모니터에서 제공하는 매우 간단한 설명을 넘어 실제 논리 디스크 카운터와 물리적 디스크 카운터의 성능 데이터를 계산하는 원리에 대해 설명합니다.


왜 Perfmon인가?

Windows에서 디스크 성능 주제에 관한 주요 질문 대다수를 성능모니터를 통해 신속하게 답을 구할 수 있습니다. 성능모니터는 매우 낮은 오버 헤드로 오랜 기간 동안 로그 데이터를 저장할 수 있습니다. 성능모니터는 성능 기준선을 기록하고 문제를 해결하는 최선의 선택입니다. Perfmon은 Windows Performance Monitor의 약자이며 systemroot%\system32\Perfmon.exe 있는 실행 파일에서 가져왔습니다.
Perfmon은 고도의 분석도구로는 부족한 면이 있어 윈도우즈는 xPerf를 제공하고 있습니다.
xperf는 윈도우 이벤트 추적(ETW)을 통해 성능데이터를 캡쳐할 수 있습니다.
다음 링크에서 로버트 스미스의 훌륭한 블로그를 확인하실 수 있습니다.


Perfmon에서 논리 디스크와 물리적 디스크 성능 개체 간의 차이 무엇입니까?

Perfmon은 디스크 성능과 관련된 두 개체가 있습니다. 물리적 디스크와 논리적 디스크인데요. 성능값은 같은 방식으로 계산되나 범위는 서로 다릅니다.

물리적 디스크 성능 개체는 실제 디스크 드라이브를 모니터링합니다.
물리적 하드웨어를 나타내는 인스턴스를 식별하고 물리적 인스턴스의 모든 파티션의 합입니다.

물리적 하드웨어를 나타내는 인스턴스란 레이드 컨트롤러가 만들어내는 디스크를 말합니다.

논리 디스크 성능 개체는 논리적 파티션을 모니터링합니다. 성능 모니터는 드라이브 문자나 마운트 지점으로 논리 디스크를 식별합니다.
물리 디스크에 파티션이 여러 개 있다고 가정하면 물리디스크가 아닌 선택된 파티션만 측정합니다. 동적 디스크를 사용하여 논리적 디스크가 여러개의 물리적 디스크로 확장되어 있다면 이 경우에는 하나 이상의 물리적 디스크에 걸쳐 측정될 수 있습니다.


디스크 카운터 설명

% Disk Time (% Disk Read Time, % Disk Write time)

"%Disk Time" 카운터 값은 "Avg Disk Queue Length" 카운터 값에 100을 곱한 값으로 그저 배율만 다른 같은 값입니다.
예를 들어 Avg Disk Queue Length가 1이라면 %Disk Time 은 100과 같을 것입니다.
그렇다면 Avg Disk Queue Length가 0.37 이라면 %Disk Time 37이 되겠네요.

이것은 왜 %Disk Time이 100%보다 큰 경우가 있는지 설명하며 이 때 Disk Queue Length 값이 1보다 큰 것임을 알 수 있습니다.

같은 방식으로 % Disk Read Time % Disk Write Time이 적용되며 역시 Avg Disk Read Queue Length와 Avg Disk Write Queue Length로부터 값을 가져옵니다.

Avg. Disk Queue Length(Avg. Disks Read Queue Length, Avg.Disk)

Avg. Disk Queue Length는 Disk Transfers/sec * Disk sec/Transter 입니다.

이것은 "리틀의 법칙"을 기반으로 대기열 이론에 따라 계산된 것입니다.
직접적인 대기열을 계산한 것이 아니라 위와 같은 방법으로 계산된 것을 참고하시기 바랍니다. Avg. Disk Read Queue Length와 Avg. Disk write Queue Length 역시 같은 방식입니다.


Curent Disk Queue Length

디스크의 큐를 측정시간에 직접적으로 측정하여 보여주는 값입니다.

%Idle Time

이 카운터는 다스크가 OS의 모든 요청을 처리하고 요청 대기열이 없는 시간을 비교적 정확하게 측정합니다.

측정방법은 디스크의 요청이 없는 경우 타임스탬프를 기록하고 새로운 요청을 받았을 때 타임스탬프를 기록합니다. 두 스탬프의 시간차이로 값을 측정합니다.
카운터 값은 100에서 0값을 가지며 100은 디스크에 아무런 부하가 없는 경우이며 0은 쉴새 없이 디스크를 긁어대는 경우가 되겠네요.

Disk Transfer/sec (Disk Reads / sec, Disk Writes / sec)

1초 동안 디스크의 완료된 I/O 요청의 개수를 측정한 값입니다. 1초 이상은 평균값을 보여줍니다.
Disk Reds/sec 과 Disk Writes/sec는 역시 같은 방식으로 계산되면 읽기와 쓰기를 각각 분리하여 측정하는 것이 차이점입니다.

Disk Bytes/sec (Disk Read Bytes/sec, Disk Write Bytes/sec)

1초 동안 디스크의 읽고 쓴 Byte 수를 측정한 값입니다. 1초 이상은 평균값을 보여줍니다.
Disk Read Bytes/sec과 the Disk Write Bytes/sec 카운터는 읽기와 쓰기를 각각 보여줍니다.

Avg. Disk Bytes/Transfer (Avg. Disk Bytes/Read, Avg. Disk Bytes/Write)

측정 기간동안 각 디스크의 I/O 요청의 평균 사이즈를 측정합니다.
예를 들어 8k 사이즈의 99개 요청과 2048k 사이즈의 1개의 요청이 왔을 때 카운터 값은 28.4k가 될 것입니다.
식은 다음과 같습니다.
(8k*99) + (1*2048k) / 100 = 28.4k
Avg. Disk Bytes/Read와 Avg. Disk Bytes/Write 카운터는 읽기와 쓰기 각각 보여줍니다.

Avg. Disk sec/Transfer (Avg. Disk sec/Read, Avg. Disk sec/Write)

디스크에 전송된 I/O요청을 처리하기 위한 평균 시간을 초 단위로 보여줍니다.
배율은 초단위이나 카운터 값은 소수점 자리까지 측정합니다. ( 0.004 )
이것은 I/O 대기 시간을 측정하는데 사용하기도 합니다.
디스크 대기 시간 측정하는 자세한 방법을 별도로 블로깅 하였습니다.
참고하시기 바랍니다.
Measuring Disk Latency with Windows Performance Monitor


Split IO/Sec

파일조각화로 인한 I/O 분할 비율을 측정합니다. I/O 요청에 의해 데이터 접근시 파일이 연속되지 않은 경우 측정되는 값입니다. 이와 관련된 기술적 내용을 아래 블로그에서 설명하고 있습니다.
The Four Stages of NTFS File Growth

Logical Disk Counters Exclusive Counters

모든 논리적 디스크 개체는 물리적 디스크 개체와 같습니다. 다만 물리적 장치가 아닌 논리적 단위를 대상으로 한다는 것만 제외한다면 측정방식은 같습니다.
왜냐하면 물리적 디스크는 볼륨을 인식하지 못하기 때문입니다. 다음의 몇가지 카운터는 논리적 디스크 개체에만 존재하는 카운터를 설명하고 있습니다.

% Free Space

선택된 논리적 디스크의 남은 공간을 백분율로 보여줍니다.

Free Megabytes

선택된 볼륨에서 빈 공간을 Mb 단위로 표시합니다.
볼륨의 빈공간을 빨리 확인할 수 있는 방법은 로버트 미첼의 블로그를 참고하세요.
NTFS Metafiles.

성능모니터 카운터의 평균과 반올림에 대한 보론(補論)

Perfmon는 대부분의 성능값을 평균 또는 반올림하여 표현하고 있습니다. 이에 대한 이점은 비교적 작은 로그파일을 생성하고 활용 또한 편리합니다. (소수점이하의 수많은 숫자를 상대하고 싶지는 않을 것입니다.) 실시간 모니터나 로그를 저장할 때 반올림을 하지만 내부적 계산은 비교적 정확합니다.
이 블로그에서 몇 가지 카운터를 보셨다면 Perfmon이 평균값들을 평균내는 것을 눈치채셨을텐데요. 이것은 결과값이 근사하지만 부정확한 결과를 낳습니다. _Total 인스턴스 처럼 여러개 값이 결합하고 거기에 반올림과 평균이 되어 근사치를 보여줄 뿐 정확하게 들어맞지는 않습니다. 예를 들어 "Disk Transfer/sec"를 측정하고 Disk Reads/sec 값과 Disk Write/sec 값을 빼더라도 정확히 "0"으로 떨어지지 않습니다.

성능분석시 어느정도의 오차를 예상하고 시행되어야하나 작은 범위의 오차도 허용할 수 없다면 xPerf를 사용해야합니다.
Xperf는 성능값의 평균이나 반올림 없이 있는 그대로 보여주며 단점은 Perfmon에 비해 매우 큰 로그파일을 만들어냅니다.

결론

윈도우 Perfmon은 매우 강력한 진단 도구이며 즉시 디스크의 상태와 대부분의 물음에 대하여 답을 구할 수 있습니다. 성능모니터는 로그파일의 의미있는 데이터 내에서 평균과 반올림을 하며 긴 기간동안 성능값을 측정하고 저장할 수 있습니다.

Ms 동료들에 감사하고 특히 브루스 워싱톤(개발리더장)에게 크게 감사하며 이양반의 지식이 없었다면 이 블로그를 끝낼 수 없었을 것입니다. 또한 마크 리카타(시스템 엔지니어 장), 로버트 스미스,클린트 호프만, 존 로드리게스, 시티븐 앤드리스, MS 스토리지 성능 토론 그룹에게도 감사의 말씀을 전해드립니다. 간단해 보이지만 정확한 정보를 얻는데 많은 노력을 기울였습니다.

Pefmon과 즐거운 시간을.

플 라 비오 Muratore
수석 지원 에스컬레이션 엔지니어
Microsoft 엔터프라이즈 플랫폼 지원

원문 링크