Unix 'CPU steal time'에 해당하는 Windows가 있습니까?


24

가상화 플랫폼에서 성능 모니터링 정확도를 평가하기 위해 CPU 도용 시간 이 점점 더 관련성이 높은 지표가되었습니다. EC2 모니터링 : Amazon EC2CPU 시간 계산에 대한 IBM의 논문에서 Amazon EC2 와 관련하여 유용한 요약을 위해 CPU도난당한 경우를 참조하십시오 . 개념에 대한 자세한 기술 설명 (그림 포함) :

Steal time은 하이퍼 바이저가 다른 가상 프로세서를 서비스하는 동안 가상 CPU가 실제 CPU를 기다리는 시간의 백분율입니다.

예를 들어 열 참조 - 따라서, 현재 대부분의 관련 유닉스 / 리눅스 모니터링 도구에 노출 % 도둑질 이나 sar또는 top:

st-Steal Time
다른 작업 (예 : 다른 가상 머신 실행)에 대해 하이퍼 바이저가이 가상 머신에서 가져온 '도난'CPU 양입니다.

Windows에서 동일한 메트릭을 캡처하는 방법을 알 수 없었지만 이미 가능합니까? ( 적어도 EC2 의 Windows 2008 Server R2 AMI 및 각 Windows 성능 카운터 를 통해 )

답변:


33

편집 : 2013 년 10 월 1 일 업데이트-원래 답변 중 일부가 더 이상 사용되지 않습니다.

이 사이트에서 여전히 활동 중인지 또는이 사이트를 볼 수 있는지 잘 모르겠지만 오늘이 질문을 읽고 나를 매료시키고 하루 종일 보냈다는 것을 알고 싶습니다. Hyper-V 및 Windows 내부를 조사하고 가상화 개념 자체를 파고 들어 귀하의 질문에 대답 할 수 있기를 바랍니다.

Hyper-V의 관점에서 가상화 플랫폼으로오고 있다고 말하면서 이것이 가장 경험이 많기 때문에 서문을 시작하겠습니다. 비록 우리가 알고 있듯이, 가상화와 관련하여 특정한 가상화 원칙이있을 수 있지만 Microsoft와 VMware 및 Xen은 하이퍼 바이저를 설계하는 방법에 대해 서로 다른 전략을 가지고 있습니다.

그것이 당신의 질문에 도전하는 첫 번째 일입니다. 당신은 질문이 마치 하이퍼 바이저에 구애받지 않는 것처럼, 실제로는 그렇지 않을 때 질문합니다. 예를 들어 Amazon EC2는 Xen 하이퍼 바이저 및 해당 하이퍼 바이저에서 top실행되는 Linux VM 내에서 실행 된 명령 의 출력에 표시되는 "CPU Steal Time"지표를 사용합니다 . 해당 게스트 OS에 설치된 통합 서비스의 결과입니다 특정 하이퍼 바이저가 제공 한 데이터와 함께 (또는 게스트의 가상화 인식 도구).

먼저 귀하의 질문에 바로 대답하겠습니다. 특정 가상 도구 /가 아니면 하이퍼 바이저가 실행되는 물리적 시스템에 속한 프로세서가 다른 작업을 수행하는 데 얼마나 많은 시간을 Windows를 실행하는 가상 시스템 내부에서 볼 수있는 방법이 없습니다 특정 하이퍼 바이저에 대한 서비스 또는 가상화 인식 도구가 게스트 VM에 설치 되고게스트가 실행중인 특정 하이퍼 바이저는 해당 데이터를 게스트에 노출합니다. Hyper-V 하이퍼 바이저에서 실행되는 Windows 게스트조차도 하이퍼 바이저의 물리적 프로세서가 다른 작업을 수행하는 데 소요 된 시간과 관련된 정보에 즉시 액세스 할 수 없습니다. (보레 타크 7을 인용하자면, "제 4의 벽을 무너 뜨립니다.") 올바른 통합 서비스 / 도구가 설치된 Hyper-V에서 가상화 게스트로 실행되는 Windows 클라이언트 및 서버 운영 체제가 "현상"(문자 그대로 커널)을 사용합니다 물리적 호스트의 리소스를 사용하는 데있어 성능을 크게 향상시키는 VM을 위해 특별히 작성된 코드 변경) 결론은 하이퍼 바이저에없는 것입니다.게스트 OS에 원하는 것보다 더 많은 정보를 제공합니다. 즉, 하이퍼 바이저는하지 않습니다 는 그 VM ... 그것을 원하는 않는 한에 서비스 외에하고있는 다른 어떤 게스트 VM에게. 그리고 "CPU Steal Time : vCPU가 물리적 CPU를 기다리는 시간의 백분율"과 같이 VM의 관점에서 메트릭을 도출하려면 물리적 프로세서가 수행하는 다른 작업에 대한 정보가 필요합니다.

게스트 OS가 실제로 가상화되었다는 것을 인식하지 못한다면 어떻게 게스트 OS를 알 수 있습니까?

즉, 게스트에 올바른 통합 도구가 설치되어 있지 않으면 게스트 OS는 해당 CPU가 실제로 v CPU 라는 것을 알지 못합니다 . CPU 사이클을 "스틸 링"하는 것 외에 다른 힘이 있다는 사실조차 알지 못하므로 게스트 VM에는 메트릭이 존재하지 않습니다.

VMware는이 데이터를 ESXi 5.0뿐만 아니라 Windows 게스트에도 공개하기 시작했습니다. 게스트에서 VMware 통합 도구도 업데이트해야합니다. 여기 참조가 있습니다 ; "CPU 도난 시간"이라고합니다.

Hyper-V와 같은 하이퍼 바이저는 게스트에게 물리적 프로세서 또는 프로세서 코어와 같은 물리적 리소스에 대한 직접 액세스를 제공하지 않습니다. 대신 하이퍼 바이저는 vCPU와 같은 가상 장치 인 vDev를 제공합니다.

이유의 주요 예 : 가상 머신 게스트 OS가 물리적 CPU의 물리적 구성 요소 인 TLB (번역 룩앤 사이드 버퍼)를 플러시하도록 호출한다고 가정하십시오. 게스트 OS가 물리적 프로세서 에서 전체 TLB 를 지우도록 허용 된 경우 동일한 물리적 TLB를 공유하는 다른 모든 VM에 부정적인 영향을 미칩니다. Windows의 경우 게스트 OS의 해당 호출은 하이퍼 바이저에 의해 해석되는 "하이퍼 콜"또는 "현상 화 된"호출로 변환되므로 해당 가상 머신과 관련된 TLB 섹션 만 플러시됩니다.


(흥미롭게도 적절한 통합 도구 및 / 또는 서비스가없는 게스트 VM은 동일한 호스트에서 다른 모든 VM의 성능에 영향을 줄 수 있지만이 주제의 범위를 완전히 벗어난 것입니다. .)


모든 것을 당신이 말을 할 수 여전히 Hyper-V 호스트에서 가상 프로세서가 실제 프로세서가 실행되도록 예약 할 수 있음을 사용할 수 있도록되기 위해 기다리고 보낸 시간을 감지합니다. 그러나 Windows Hyper-V 하이퍼 바이저에서만 해당 데이터를 볼 수 있습니다. 다른 하이퍼 바이저에서이 정보를 볼 수 있다면 다른 사람들에게 해당 하이퍼 바이저에서이 정보를 보는 방법과 게스트에게 노출되는 방법을 알려주십시오. (2013 년 10 월 1 일 편집 그렇게하는 것에 대해 evilensky에게 감사합니다!)

필자의 테스트 컴퓨터는 Core 및 Hyper-V 역할 만 실행하는 Server 2012 무료 버전 인 Hyper-V Server 2012였습니다. Hyper-V를 실행하는 모든 Windows Server 2012와 사실상 동일합니다.

부모 파티션, 즉 물리적 호스트에서 Perfmon을 실행하십시오. 이 카운터를로드하십시오.

Hyper-V Hypervisor Virtual Processor\CPU Wait Time Per Dispatch\*

_Total뿐만 아니라 해당 하이퍼 바이저의 각 가상 머신에 대한 해당 카운터의 인스턴스가 있음을 알 수 있습니다. 해당 Perfmon 카운터의 Microsoft 정의는 다음과 같습니다.

가상 프로세서가 논리 프로세서로 디스패치되기까지 소요 된 평균 시간 (나노초)입니다.

분명히, 당신은 그 숫자가 가능한 한 낮아지기를 원합니다. 컴퓨터의 경우 대기는 거의 좋은 일이 아닙니다.

당신이 조사 할 것이라는 하이퍼 바이저의 다른 성능 카운터는 Hyper-V Hypervisor Root Virtual Processor\% Guest Run Time, % Hypervisor Run Time하고 % Total Run Time. 이 카운터는 "실제"프로세서 가 VM 또는 모든 VM을 서비스 하는 것 이외의 작업을 수행하는 데 걸리는 시간과 같은 사실을 결정하는 데 사용할 수있는 백분율을 제공합니다 .

결론적으로, 게스트 가상 머신에서 찾고있는 메트릭은 실행중인 하이퍼 바이저, 해당 하이퍼 바이저가 해당 VM을 서비스하는 것 이외의 시간을 소비하는 방법에 대한 데이터를 제공하도록 선택했는지 여부 및 게스트의 경우에 따라 다릅니다. OS에는 하이퍼 바이저가 해당 데이터를 사용할 수 있음을 알기에 충분한 가상화 통합 도구 / 서비스 / 드라이버가 있습니다.

Windows 게스트, 통합 도구 설치 여부에 관계없이 VM 호스트가 전체 물리적 프로세서 시간에 대해 VM 서비스를 제공했거나 서비스하지 않은 시간 (초 또는 백분율)을 확인하는 방법은 없습니다. (2013 년 10 월 1 일 수정 : ESXi 5.0 이상은 통합 도구를 통해이 데이터를 게스트 VM에 노출합니다. Hyper-V에는 아직 아무것도 없습니다.)


1
+1-서사시 답변은 서사시
Mark Henderson

1
철저한 탐험을 위해 +1, 정말 고맙습니다. 그래서 EC2에 대한이 분명히에서 실행 유닉스 / 리눅스 게스트로 귀결 Xen paravirtualA는 모드, 반 가상화 도메인 곳 (게스트 OS가 호스트에서 실행되도록 수정, 즉하지 전체 가상화) 시간이 도용 대 윈도우 / FreeBSD를 사용할 수있다 / ... 손님에서 실행 Xen HVM하드웨어 에뮬레이션 도메인 (예 : 게스트 OS가 호스트에서 실행되도록 수정되지 않은 것입니다)가 명백하게이고, - 명확한 부정의 대답은 무엇 카운트 그의를 생각 때문에. 결국 추가 될 수 있음을 정확하게 읽습니까?
Steffen Opel

2
이론 상으로는 숨을 참을 수는 없습니다. 앞에서 말했듯이 공급 업체별 하이퍼 바이저와 공급 업체별 게스트 OS는 게스트 VM 내에서 물리적 호스트에 대한 데이터를 액세스하고 액세스 할 수 있도록 조정 된 노력을 기울여야합니다. wiki.xen.org/wiki/Xen_Kernel_Feature_Matrix
Ryan Ries

2
접선 : VMware 하이퍼 바이저는 팀을 스틸 (steal) 팀을 준비 시간 ( 실제 CPU가 가상 리소스가 물리적 리소스에 의해 서비스를 기다리는 시간) 이라고 말합니다 .
Yolo Perdiem

1
이것은 메인 프레임에서 잘 알려진 주제입니다. 이 측정 항목은 수십 년 동안 사용되었습니다. "CPU에서 대기"라고합니다.

2

FWIW, 저는 Hyper-V에서 실행되는 Windows 2008r2 서버의 Perfmon 카운터를 살펴 보았으며 도난 시간 (또는 그 문제에 대한 가상화)과 관련된 내용을 보지 못했습니다.


확인해 주셔서 감사합니다. 분명히 Hyper-V 용 가상화 카운터 를 실제로 사용할 수 있어야합니다. 어쩌면 먼저 설치 / 활성화해야합니까? 그래도 여전히 비슷한 / 관련 메트릭을 식별 / 추정 할 수 없습니다.
Steffen Opel 님이
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.