пятница, 19 июня 2009 г.

Грабли. Низкая производительность ВМ.

Проблема: производительность ВМ неожиданно низкая, все очень тормозит.
Диагностика: посмотрите на загрузку памяти ВМ, если она 100%, все интенсивно свопится, а для машины при этом значительные цифры видны в Memory Ballooned, то это проблема с выставленным Memory Limit.
Лечение: Memory Limit выставить в значение, равное памяти ВМ, или в Unlimited.

Если машин много, то можно сделать это скриптами.


Диагностика:
get-vm | %{Get-View $_.ID} | %{
if(($_.Config.CpuAllocation.Limit -ne -1) -or ($_.Config.MemoryAllocation.Limit -ne -1)){
Write "VM name: " $_.Name
write " CPU limit: " $_.Config.CpuAllocation.Limit
write " Memory limit: " $_.Config.MemoryAllocation.Limit
}
}

Лечение:
get-vm | %{Get-View $_.ID} | %{
if(($_.Config.CpuAllocation.Limit -ne -1) -or ($_.Config.MemoryAllocation.Limit -ne -1)){
Write "VM name: " $_.Name
write " CPU limit: " $_.Config.CpuAllocation.Limit
write " Memory limit: " $_.Config.MemoryAllocation.Limit

$spec = new-object VMware.Vim.VirtualMachineConfigSpec;
$spec.memoryAllocation = New-Object VMware.Vim.ResourceAllocationInfo;
$spec.memoryAllocation.Shares = New-Object VMware.Vim.SharesInfo;
$spec.memoryAllocation.Shares.Level = "normal";
$spec.memoryAllocation.Limit = -1;
$spec.CPUAllocation = New-Object VMware.Vim.ResourceAllocationInfo;
$spec.CpuAllocation.Shares = New-Object VMware.Vim.SharesInfo;
$spec.CpuAllocation.Shares.Level = "normal";
$spec.CpuAllocation.Limit = -1;
Get-View($_.ReconfigVM_Task($spec))
}
}

Комментариев нет:

Отправить комментарий