Syneticon-dj, escribí algo para ti esta tarde. Pensé que este problema era interesante, por lo que este simple script le dará las estadísticas de lectura y escritura de E / S en cada VM en ejecución en el host Hyper-V. Como beneficio adicional, asocia cada VM a la ID de proceso de vmwp.exe.
Puede ejecutar esto en su servidor Hyper-V, porque no necesita una GUI.
La desventaja es que mientras estaba trabajando en esto, noté que los contadores de rendimiento funcionaban muy bien por un tiempo, y luego, sin razón aparente, decidieron permanecer en cero. Bueno, tal vez no sea un error, como dice Chris S ... pero estos contadores podrían no ser muy útiles después de todo. De todos modos, sería muy fácil modificar el script para usar Virt. Dispositivo de almacenamiento de contadores en su lugar.
El resultado se ve así:
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); }
}
}
}