У меня есть сервер Hyper-V 2012 R2, на котором запущено несколько виртуальных машин с включенной динамической памятью. Все они демонстрируют такое поведение, но вот пример:
Одна из виртуальных машин - это гость Windows Server 2012 R2, и она мало что делает. В основном сижу на холостом ходу. Это был выполняет много работы (запускает несколько процессов, которые выделяют кучу памяти, используют некоторый процессор, а затем завершают работу), но теперь завершены.
Диспетчер задач внутри виртуальной машины показывает следующую статистику памяти:
График «Состав памяти» показывает, что 5629 МБ «используется» приложениями, драйверами и т. Д. (Т.е. они не используются в качестве кэша файловой системы). Я также запустил perfmon, и счетчики там совпадают с счетчиками диспетчера задач.
Переключившись на список процессов в диспетчере задач внутри виртуальной машины, ничто не использует что-либо близкое к 5 ГБ памяти. В сумме получается менее 1 ГБ.
Для получения дополнительной информации диспетчер Hyper-V в хост-системе показывает, что эта виртуальная машина
Это согласуется с использованием памяти, которое я получаю, суммируя список процессов в диспетчере задач на виртуальной машине.
Итак, вопрос:
Почему диспетчер задач внутри моей виртуальной машины считает, что он использует 5,5 ГБ, когда никакие процессы не используют эту память, а хост Hyper-V знает, что ему нужно всего 593 МБ? Что случилось?
Компоненты интеграции, которые вы установили при построении виртуальной машины, включали драйвер, который удаляет память из виртуальной машины, когда эта память не нужна. Способ его удаления заключается в том, что он выделяет его из диспетчера памяти в гостевой ОС, а затем возвращает его Hyper-V. Затем он выглядит изнутри виртуальной машины, как будто она «используется», потому что она была выделена. Это обычно называется «раздуванием», и большинство гипервизоров могут это делать, и даже некоторые физические системы тоже делают это, используя механизмы сжатия памяти на оборудовании.
У меня такая же проблема на Windows Server 2012 R2.
Хост-машина работает нормально. Но на виртуальной машине память расходуется до 99%. Я пробовал все, чтобы проверить это, включая RAMmap
, чтобы выгрузить всю его память, но он по-прежнему не работает.
Когда я пытался отключить «Динамическую память» в настройках виртуальной машины, она работает как шарм. Попробуй сам.