Syneticon-dj, escrevi algo para você esta tarde. Achei que esse problema era interessante, portanto, esse script simples fornecerá as estatísticas de leitura e gravação do IO em cada VM em execução no host do Hyper-V. Como um bônus adicional, ele associa cada VM ao ID do processo do seu vmwp.exe.
Você pode executar isso no seu servidor Hyper-V, porque ele não precisa de uma GUI.
A desvantagem é que enquanto eu estava trabalhando nisso, percebi que os contadores de desempenho estavam funcionando muito bem por um tempo, e então, sem nenhuma razão aparente, eles decidiram ficar todos no zero. Bem, talvez não seja um bug, como Chris S diz ... mas esses contadores podem infelizmente não ser muito úteis, afinal. Independentemente disso, seria muito fácil modificar o script para usar a Virt. Contadores de dispositivos de armazenamento em vez disso.
A saída é assim:
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.
[email protected]
#>
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); }
}
}
}