Syneticon-dj, я написал кое-что для тебя сегодня днем. Мне показалось, что эта проблема была интересной, поэтому этот простой скрипт даст вам статистику чтения и записи для каждой запущенной виртуальной машины на хосте Hyper-V. В качестве дополнительного бонуса он связывает каждую виртуальную машину с идентификатором процесса vmwp.exe.
Вы можете запустить это на своем сервере Hyper-V, потому что ему не нужен графический интерфейс.
Недостатком является то, что, работая над этим, я заметил, что счетчики производительности некоторое время прекрасно работали, а затем без видимой причины решили все остаться на нуле. Ну, может быть, это не ошибка, как говорит Крис С. ... но эти счетчики, к сожалению, могут оказаться не очень полезными. Несмотря на это, было бы очень легко изменить скрипт для использования 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); }
}
}
}