Високе споживання пам'яті на Hyper-V віртуальних машинах
У клієнтів WHS-тарифів досить часто виникає питання - чому свіже встановлена ОС, де ще немає жодного клієнтського ПЗ, споживає 80-90% оперативної пам'яті.
Виглядає це наступним чином:
У процесах при цьому не видно, що використовує багато ресурсів:
Це нормальна поведінка - так виглядає робота механізму Hyper-V Dynamic Memory
https://technet.microsoft.com/en-us/library/hh831766.aspx
Якщо віртуальній машині стає потрібно більше оперативної пам'яті, вона виділяється автоматично.
Як можна з віртуальної машини переконатися, що все гаразд, і обіцяний за тарифом обсяг оперативної пам'яті справді надається?
Наприклад, завантаживши утиліту RamMap від Sysinternals - ця компанія належить Microsoft, тому утиліту можна вважати офіційною, і вона рекомендована до використання:
https://technet.microsoft.com/en-us/sysinternals/rammap.aspx
https://download.sysinternals.com/files/RAMMap.zip
Пам'ять, що зарезервована системою віртуалізації, відображається як Driver Locked:
Як можна дізнатися, скільки пам'яті споживають сумарно процеси на сервері?
Це можна зробити наступною командою PowerShell (при включеному прокиданні буфера обміну команду можна вставити в PowerShell консоль кліком правої кнопки миші):
Get-Process | measure PM-sum
Як ми бачимо, всього запущено 39 процесів, і вони споживають 358739968 байт оперативної пам'яті, тобто, приблизно 350Мб.
Щоб не доводилося рахувати вручну з ризиком помилитися у кількості знаків, можна використовувати команду:
$mem = 0; Get-Process | %{$mem += $_.pm}; "{0:N2}MB " -f ($mem/1mb)
Отримуємо 340Мб, що відповідає дійсності.