Syneticon-dj, escrevi algo para você esta tarde. Como esse problema era interessante, esse script simples fornecerá as estatísticas de E / S de leitura e gravação em cada VM em execução no host Hyper-V. Como um bônus adicional, associa cada VM ao seu ID de processo do vmwp.exe.
Você pode executar isso no servidor Hyper-V, porque não precisa de uma GUI.
A desvantagem é que, enquanto eu estava trabalhando nisso, notei que os contadores de desempenho estavam funcionando muito bem por um tempo e, então, por nenhuma razão discernível, eles decidiram ficar 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 o Virt. Contadores de dispositivos de armazenamento.
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.
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); }
}
}
}