LINUX.ORG.RU

История изменений

Исправление AEP, (текущая версия) :

Виртуалка может занимать память разными способами:

  • Под работающие приложения - htop это показывает зеленым и включает в свою цифру справа. Очевидно, qemu должен хранить содержимое этой памяти, и virt-manager считает ее потребленной.
  • Под дисковый кеш - htop это показывает желтым и НЕ включает в свою цифру справа. Но поскольку эту память терять нельзя (виртуалка к ней может обратиться в любой момент), qemu тоже должен хранить содержимое этой памяти, и virt-manager считает ее потребленной.
  • Под всякие мелочи типа буферов.
  • Под старье. Т.е. раньше эта память использовалась (приложением или под дисковый кеш), сейчас стала не нужна, и ядро считает ее свободной. htop показывает это черным. Но ядро эту память не чистит (так как это дорого по времени и на реальном железе не нужно), там остаются не нули, и qemu не знает и знать пока не может, что это на самом деле мусор. И честно его хранит и потребляет память хоста под хранение этого мусора. Мало ли, вдруг пользователь на самом деле в виртуалке тестирует работоспособность какого-нибудь эксплойта, который обращается (намеренно) к освобожденной памяти - так что даже мусор хранить, к сожалению, нужно.

Чтобы такого не было, придумали «virtio-balloon free page hinting», и это работает, начиная с linux-5.7.x и qemu-5.1.x. Но по умолчанию все равно выключено, и в virt-manager’е это не включить никак, только при запуске qemu руками.

Исходная версия AEP, :

Виртуалка может занимать память разными способами:

  • Под работающие приложения - htop это показывает зеленым и включает в свою цифру справа. Очевидно, qemu должен хранить содержимое этой памяти, и virt-manager считает ее потребленной.
  • Под дисковый кеш - htop это показывает желтым и НЕ включает в свою цифру справа. Но поскольку эту память терять нельзя (виртуалка к ней может обратиться в любой момент), qemu тоже должен хранить содержимое этой памяти, и virt-manager считает ее потребленной.
  • Под всякие мелочи типа буферов.
  • Под старье. Т.е. раньше эта память использовалась (приложением или под дисковый кеш), сейчас стала не нужна, и ядро считает ее свободной. htop показывает это черным. Но ядро эту память не чистит (так как это дорого по времени и на реальном железе не нужно), там остаются не нули, и qemu не знает и знать пока не может, что это на самом деле мусор. И честно его хранит и потребляет память хоста под хранение этого мусора. Чтобы такого не было, придумали «virtio-balloon free page hinting», и это работает, начиная с linux-5.7.x и qemu-5.1.x. Но по умолчанию все равно выключено, и в virt-manager’е это не включить никак, только при запуске qemu руками.