Hyper-V 호스트에서 I / O를 수행하는 VM 결정


13

Hyper-V에서 볼 수있는 대부분의 I / OI를 담당하는 VM을 어떻게 알 수 있습니까?

상황 : 많은 VM (호스트 당 약 30 개)의 Hyper-V 호스트가 있는데 때때로 디스크 사용률이 장기간 지속되는 경우가 있습니다. 어떤 VM이 이것을 일으키는 지 알고 싶습니다.

Process Explorer를 사용해 보았지만 모든 Hyper-V 관련 I / O가 "시스템"프로세스에 의해 처리되는 것으로보고되었으므로 아무런 도움이되지 않습니다.

프로세스 탐색기

액세스 한 파일로 분류하는 데 도움이됩니다. Windows Server의 전체 GUI 설치에는 이 정보를 제공 하는 리소스 모니터 가 있습니다. 그러나 Core 및 Hyper-V 설치에서는 Resmon을 사용할 수없는 것 같습니다.


@RyanRies 아니요, I / O에 관련된 vmwp.exe가 없습니다. 어떤 디스크가로드 될지 알지 못하므로 IDE 또는 SCSI 코드 경로를 사용하는지 알 수 없으므로 둘 다 똑같이 가능합니다.
the-wabbit

답변:


9

로컬 워크 스테이션에서 성능 모니터 (관리자로 실행)를여십시오. 카운터를 추가하고, Hyper-V 시스템, Hyper-V Virtual IDE Controller 또는 Hyper-V Virtual Storage Device에서 카운터를 선택하고, 적절한 것으로 카운터 및 인스턴스 (VM)를 선택하십시오. 자신에게 가장 적합한 카운터를 찾으려면 약간의 물고기를 사용해야 할 수도 있습니다.

Hyper-V 성능 모니터링 에서 찾을 카운터에 대한 힌트가 있습니다.


음, 나는 그것을 시도했다. 유용한 결과를 얻지 못했고 이것이 왜 그런지 모르겠습니다. 처음에는 Virtual Storage Device 카운터를 찾는 데 문제가있었습니다. 설치에없는 것 같습니다. 내 디스크의 대부분이 IDE이므로 Virtual IDE Controller에 샷을 주었지만 어떤 이유로 든 인스턴스가 실제로로드를 유발하는 인스턴스에 대해 0을 반환하지는 않습니다. 제정신의 가치를 창출하는 것 같습니다.
the-wabbit

2
VM 통합 항목이 설치되어 있으면 구성 화면의 내용에 관계없이 IDE를 사용하지 않고 MS의 잘못된 구성 화면을 선택하지 마십시오 .Virt Stor Dev 카운터를 사용해야합니다. 후자는 VM이 ​​아닌 VHD마다이므로 약간의 역 참조가 필요합니다.
Chris S

이것은 그것을 정리합니다. 마지막으로 가상 저장 장치를 찾았습니다. 가상 디스크의 정상 값을 반환하는 것 같습니다.
the-wabbit

크리스 S가 맞아. 그가 언급 한 성능 모니터 카운터의 정확한 이름은 "Hyper-V Virtual Storage Device"입니다. 즉,이 범주의 "대기열 길이"는 VHD (X) 파일 중 디스크와 통신 대기 시간이 가장 큰 파일에 대한 유용한 정보를 제공합니다.
Koen Zomers

2

Syneticon-dj, 오늘 오후에 당신을 위해 뭔가를 썼습니다. 이 문제가 흥미 롭다고 생각했기 때문에이 간단한 스크립트는 Hyper-V 호스트에서 실행중인 각 VM에 대한 읽기 및 쓰기 IO 통계를 제공합니다. 추가 보너스로 각 VM을 vmwp.exe의 프로세스 ID에 연결합니다.

Hyper-V 서버에서는 GUI가 필요 없으므로이를 실행할 수 있습니다.

단점은 내가이 작업을하는 동안 성능 카운터가 한동안 훌륭하게 작동한다는 것을 알았고 아무런 이유없이 그들은 모두 제로를 유지하기로 결정했습니다. Chris S가 말한 것처럼 버그가 아닐 수도 있지만 불행히도이 카운터는 전혀 유용하지 않을 수 있습니다. 그럼에도 불구하고 Virt를 사용하도록 스크립트를 수정하는 것은 매우 쉽습니다. 대신 저장 장치 카운터.

결과는 다음과 같습니다.

PID     VMName               ReadBytesPerSec             WriteBytesPerSec
---     ------               ---------------             ----------------
5108    DC02                          483.90                            0
2796    DC01                               0                            0
3348    ECA01                     4782668.27                            0

#Requires -Version 3
function Get-VMPidAndIO
{
<#
.SYNOPSIS
    Gets the Process ID and I/O statistics of each virtual machine running on the Hyper-V host.
.DESCRIPTION
    Gets the Process ID and I/O statistics of each virtual machine running on the Hyper-V host.
    Currently only works for VMs using virtual IDE controllers.
    Requires Powershell 3 at a minimum.
.LINK
    http://myotherpcisacloud.com
.NOTES
    Written by Ryan Ries, June 2013.
    ryan@myotherpcisacloud.com
#>
    BEGIN
    {
        Try
        {
            $VMProcesses = Get-CimInstance -Query "Select ProcessId,CommandLine From Win32_Process Where Name ='vmwp.exe'" -ErrorAction Stop
        }
        Catch
        {
            Write-Error $_.Exception.Message
            Return
        }
    }
    PROCESS
    {

    }
    END
    {
        Foreach($_ In $VMProcesses) 
        {
            $VMName = $((Get-VM | Where Id -EQ $_.CommandLine.Split(' ')[-1]).Name)            
            [PSCustomObject]@{PID=$_.ProcessId;
                              VMName=$VMName; 
                              ReadBytesPerSec=[Math]::Round($(Get-Counter "\Hyper-V Virtual IDE Controller (Emulated)($VMName`:Ide Controller)\Read Bytes/sec").CounterSamples.CookedValue, 2);
                              WriteBytesPerSec=[Math]::Round($(Get-Counter "\Hyper-V Virtual IDE Controller (Emulated)($VMName`:Ide Controller)\Write Bytes/sec").CounterSamples.CookedValue, 2); }
        }

    }
}

그것은 버그가 아닙니다. 내 답변의 의견을 참조하십시오.
Chris S

그렇다면 왜 카운터가 간헐적으로 작동하는 것 같습니다. (완전한 통합 서비스를 제공하는 Windows 게스트) 그리고 왜 VHD 당 카운터의 추상화 수준이 훨씬 덜 유용한가? :(
Ryan Ri 's

왜 간헐적으로 무언가를 보여줄지 잘 모르겠습니다. 이유는 Hyper-V에서 스토리지가 작동하는 방식입니다. 기본적으로 모든 VM에 대해 하나의 스토리지 컨트롤러 만 있습니다. 구성에서 "IDE Controller"를 사용하면 SCSI와 관련이없는 "SCSI Controller"와는 달리 해당 VM에 노출 된 스토리지에 대해 IDE 에뮬레이션을 사용하도록 설정하고 모든 종류의 스토리지 컨트롤러 에뮬레이션을 사용하지 않도록 설정합니다. . Integration Services를 지원하는 VM은 IDE 에뮬레이션을 건너 뜁니다. 스토리지 컨트롤러 카운터는 각 VHD에 연결된 VM을 정확하게 관리하지 않으므로 작동 방식이 다릅니다.
Chris S

대박. 정보 주셔서 감사합니다. 나는 이것에 대해 더 많은 것을 읽고 싶지만 좋은 기술 문서를 만드는 데 어려움을 겪고 있습니다. 나는 우리를 위해이 많은 것들을 비판하는 것이 MS에게 좋지 않을 것이라고 생각합니다. 우리는 그들의 솔루션에 더 많은 확신을 줄 수있었습니다. Hyper-V Internals 책을 원합니다 . 너무 많이 물어 볼까요? :)
Ryan은

1

다른 답변 모두 유용합니다. 그러나 "리소스 모니터"를 열고 디스크 탭을 보면 VHD가 파일 서버 대신 로컬 또는 로컬 공유 디스크에 저장된 경우 훨씬 더 쉽게 찾고있는 것을 얻을 수 있습니다. "디스크 활동"을보고 "전체 (B / 초)"로 정렬하십시오. 활동 순서대로 VHD가 나열됩니다.

분명히 내 전략은 로컬로 로그인 한 컴퓨터에 대한 대략적인 근사치이므로 큰 헤드리스 환경에서는 유용하지 않습니다.


1
제이크, 답변 해 주셔서 감사합니다. 정말 거라고 사랑 서버가 전체 그래픽 설치하지만 하이퍼 V 에디션 또는 Server Core를 실행하지 않을 때 리소스 모니터에서 단지보기에, 그러나, 그것은 사용할 수 없습니다. 내가 가진 것입니다.
the-wabbit

1

선택한 Hyper-V 호스트에서 찾은 모든 VM에 대한 게스트 성능 데이터를 수집하는 PowerShell GUI 도구를 작성했습니다. 데이터 수집 및 일치는 get-counter 및 Hyper-V WMI 정보로 수행됩니다. 모듈이 필요하지 않은 모든 구성원 서버에서 실행하십시오. 이것이 Hyper-V 호스트 및 VM의 성능 문제를 신속하게 해결하는 데 도움이되기를 바랍니다.

Hyper-V 가상 시스템 게스트 성능 통계 표시 (PowerShell) https://gallery.technet.microsoft.com/Show-Hyper-V-Virtual-652fdd54


0

높은 I / O를 발생시키는 가상 시스템의 detecintg에 도움이되고 이러한 높은 I / O에 대해 경고 할 수있는 타사 도구를 사용해보십시오. 여기에서 확인할 수 있습니다 -ApexSQL VM Monitor .

이 도구는 호스트 및 가상 시스템에 대한 큰 디스크 카운터 스펙터를 모니터 할 수 있으며 사전 정의 된 카운터 외에 성능 모니터에서 카운터의 그래픽 표시를 모니터하고 표시하도록 설정할 수 있습니다.

도움이 되었기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.