Я настроил две гостевые ОС, а Ubuntu Box выделен в качестве хоста виртуальной машины. Он имеет два физических процессора (по 6 ядер каждый), 16 ГБ ОЗУ и 3 жестких диска. Хостовая ОС находится на SSD-накопителе объемом 60 ГБ, а гостевые ОС находятся на отдельных жестких дисках, разделенных на два раздела. Первый раздел содержит файл образа qcow для гостевой ОС, а второй раздел назначен гостю в качестве блочного устройства (для «программ» и «данных»). У меня включено раздувание памяти на гостевой ОС Linux, но не на Windows.
Только вчера у меня случился первый опыт нехватки памяти, поэтому я решил посмотреть использование памяти гостями в реальном времени на своем компьютере. Итак, у меня запущены два htop в двух окнах putty, как вы можете видеть на прикрепленной картинке. Сверху на картинке — хост, снизу — один из гостей (linux). Есть несколько вещей, которые я не понимаю:
- На хосте столбец RES показывает 5778 МБ для первого гостя и 4274 МБ для другого, что для меня составляет около ~10 ГБ, но строка Mem в верхней части картинки показывает 6,9 ГБ, что странно, более того, клиентский htop внизу показывает, что используется 560 МБ памяти. (560 М != 5778 М)
Я прочитал документацию RedHat о виртуализации, и там говорится, что я должен рассчитать объем оперативной памяти, необходимый гостю, путем сложения памяти, выделенной гостю + видеопамяти + «некоторые» накладные расходы (которые невозможно определить точно). Таким образом, используя приведенные выше цифры: 560 МБ используется гостем + 16 МБ видеопамяти, что составляет ~580 МБ, поэтому «некоторые» накладные расходы в моем случае составляют 5,2 ГБ?
5778 МБ — это не весь объем памяти, который может использовать гостевая система Linux, в XML-файле домена установлено значение 8 ГБ, так что я не расстроен. Пока.
Когда я перезапустил гостевую систему Linux сегодня утром, она начала с ~2G использования оперативной памяти на хосте, и с тех пор оно растет. Гостевая ОС начала с ~450M и дошла до 560M.
Я даже читал, что назначение файла подкачки хосту может помочь в решении проблем с нехваткой памяти, поэтому я создал файл подкачки размером 32 ГБ и установил значение swapiness равным 20 в sysctl на хосте.
Но я все еще не понимаю, как происходит использование памяти/выделение/что-то еще между гостем и хостом.
Может ли кто-то с большим опытом в этой области указать мне правильное направление / руководство / Википедию / что-то еще, что можно почитать? qemu хост гость htops