Динамическое выделение памяти в KVM

У меня есть хост Ubuntu 16.04, на котором я установил виртуальный гость (Windows server 2012) с помощью KVM. Общий объем доступной оперативной памяти составляет 16 ГБ.

Я установил драйверы virtio ball. Я выделил 4 ГБ текущей памяти и 12 ГБ максимальной памяти для окон. Однако Windows видит 8 ГБ нераспределенной памяти как используемую память.

Использование памяти в гостевой системе

Когда я открываю некоторые тяжелые приложения, назначенная память ограничивается доступной памятью от 4 ГБ. Компьютер ведет себя так же, когда в Windows используется полная память (работает неравномерно).

Windows может видеть все 12 ГБ оперативной памяти, но может использовать только 4 ГБ. Как убедиться, что Windows может использовать все 12 ГБ памяти?


person raks    schedule 27.03.2017    source источник


Ответы (1)


Описываемое вами поведение — это просто способ работы водителя воздушного шара. Гипервизор предоставляет виртуальную машину с установленными виртуальными модулями DIMM объемом 12 ГБ. Затем драйвер воздушного шара захватывает 8 ГБ этой памяти и возвращает ее гипервизору. То, как он захватывает память, зависит от гостевой ОС, но, по сути, он должен выделять ее, чтобы она выглядела используемой, что предотвращает ее использование гостевой ОС. Драйвер балуна не настраивается автоматически в зависимости от требований гостевой рабочей нагрузки. Поэтому, если вашим гостям Windows требуется более 4 ГБ, вам нужно использовать libvirt/virsh в хост-ОС, чтобы изменить уровень шара, чтобы вернуть часть «использованных» 8 ГБ гостевой ОС. Если вы хотите, чтобы гостевая ОС видела и использовала полные 12 ГБ, просто не используйте драйвер воздушного шара вообще.

person DanielB    schedule 04.04.2017