Высокое потребление памяти на 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Мб, что соответствует реальности.