LINUX.ORG.RU
ФорумAdmin

Как работает memory ballooning в qemu-kvm с т.з. гостя?

 , ,


2

1

Привет, ЛОР!

Я сломал мозг от старые, противоречивые статьи и нейронки, поэтому нужна помощь опытных людей. В свете того, что память подорожала, возник вопрос экономии этой памяти на компе с виртуалками. Вспомнил про memory ballooning и не могу до конца понять, как это всё работает.

Общая концепция мне понятна - через низкоуровневые хаки ядра, гипервизора, qemu, libvirt и драйвера можно забирать или отдавать память гостю.

Сначала я предполагал, что с точки зрения гостя это выглядит как некий процесс в ОС, который по неведомым (для гостя) причинам начинает жрать память до определённого размера. Это триггерит стандартные механизмы memory pressure и вся занятая этим хитрым процессом память на самом деле задействуется хостом под свои нужды. И пока этот процесс жив с таким потреблением памяти, это гарант для хоста, что занятая память не будет гостем обратно использована. Поэтому её можно безболезненно отдать другой программе.

Но видимо у меня СПГС и всё немного (если так можно говорить про столь низкоуровневые процессы) проще. Есть крутилка в XML - memory (в терминологии virt-manager Maximum Allocation) и currentMemory (в virt-manager - Current Allocation).

  • memory - это жёсткий лимит памяти ВМ
  • currentMemory- это мягкий лимит памяти ВМ

Между ними balloon driver, который позволяет динамически, без перезагрузки менять объём памяти ВМ вплоть до лимита в memory. Причём делается это исключительно руками, ибо auto-ballooning умер в 2013 г. так и не родившись. https://www.linux-kvm.org/page/Projects/auto-ballooning

Самый главный вопрос - правильно ли я понимаю, что с точки зрения гостя выглядит так, что у него физическая (total) память меняется? На моей лабе это выглядит именно так. Тогда надо, аккуратно отбирать память у гостя (а так же иметь swap), иначе у него OOM придёт.

И чуть менее главный вопрос - анон утверждает, что Proxmox умеет в auto-ballooning. Это так или нет?

А и ещё вопрос - какие противопоказания? А то в интернетах пишут, что вредные процессы.

Работаю на Fedora 42

# qemu-kvm --version
QEMU emulator version 9.2.4 (qemu-9.2.4-2.fc42)
Copyright (c) 2003-2024 Fabrice Bellard and the QEMU Project developers

# libvirtd --version
libvirtd (libvirt) 11.0.0

# uname -a
Linux max-desktop 6.18.5-100.fc42.x86_64 #1 SMP PREEMPT_DYNAMIC Sun Jan 11 18:16:46 UTC 2026 x86_64 GNU/Linux
★★★★★

Последнее исправление: kma21 (всего исправлений: 3)

И посоветуйте что-то толковое про память в линуксах и про вирту почитать. А то в современном интернете пересказы на пересказы от нейронок читать сложно. Многие рассуждают о том, что сами плохо понимают, как работает. Или путают сущности.

kma21 ★★★★★
() автор топика

Самый главный вопрос - правильно ли я понимаю, что с точки зрения гостя выглядит так, что у него физическая (total) память меняется? На моей лабе это выглядит именно так. Тогда надо, аккуратно отбирать память у гостя (а так же иметь swap), иначе у него OOM придёт.

https://github.com/qemu/qemu/blob/master/docs/memory-hotplug.txt https://docs.kernel.org/admin-guide/mm/memory-hotplug.html

BOOBLIK ★★★★
()
Ответ на: комментарий от BOOBLIK

Это документация по Memory Hot(Un)Plug в Linux kernel, которую отчасти использует драйвер virtio-mem.
А ТС спрашивает про virtio-balloon.
Memory Hot(Un)Plug, memory balloon и virtio-mem (paravirtualized memory hot(un)plug) это 3 разные технологии.
virtio-balloon - поддерживается примерно с 2010 г. А virtio-mem где-то с 2018 (поддержка в linux kernel с 2020, гость требует ядра 5.8). Также разная поддержка в MS Windows guest.
Вот например презентацию 2018 г., где сравнивается Memory Hot(un)plug, Ballooning и virtio-mem:
https://events19.linuxfoundation.org/wp-content/uploads/2017/12/virtio-mem-Pa...

На страничке https://virtio-mem.gitlab.io/ есть ссылки на разные статьи и презентации, в частности вот эта статья 2021 года: https://dl.acm.org/doi/pdf/10.1145/3453933.3454010?download=true

MirandaUser2 ★★
()
Последнее исправление: MirandaUser2 (всего исправлений: 1)
Ответ на: комментарий от MirandaUser2

Спасибо за инфу. Стало ещё не понятнее, что есть что и как работает. Почитаю то, что ты описал.

Странно, что это всё описано так плохо и не централизовано.

kma21 ★★★★★
() автор топика
Ответ на: комментарий от kma21

всё описано так плохо и не централизовано

После того, как наступила эпоха гипертекста, люди разучились вставлять гиперссылки. До неё - не могли технически. А после - из-за трусости (вдруг ссылки «сломаются»).

Saakx
()

Да, в Proxmox есть auto ballooning, можно даже выставить приоритеты, каким виртуалкам больше памяти давать в первую очередь. Но это всё не серебряная пуля и пользоваться этим надо аккуратно.

Мой опыт подсказывает что в случая когда можно решить проблему докидыванием оперативки - ее надо решать именно так.

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от Pinkbyte

Оверселлинг не от хорошей жизни придуман =)

Интересно, почему авто-балунинг из Проксмокса не бэкпортирован в апстрим кему. Если это действительно работает адекватно.

kma21 ★★★★★
() автор топика
Ответ на: комментарий от kma21

наверное потому что оно не дает большой выгоды :) это надо иметь на хосте очень м-м-м непохожих друг на друга гостей, чтобы эффективно меж ними память перекидывать.
обычно нужно всем, одновременно и всё :)

pfg ★★★★★
()
Ответ на: комментарий от pfg

Ну дык о том и речь, что оверселлинг придуман о того, что по каким-то причинам поставить памяти столько, сколько нужно не получается.

А в современных реалиях с конскими ценами на ОЗУ приходиться думать об экономии памяти. Ибо один стенд развернул и твои «джентельменские» 32 гига закончились. Понятно, что стенд стенду рознь, но в среднем это так.

kma21 ★★★★★
() автор топика
Ответ на: комментарий от kma21

Я вполне успешно использовал zram для случая «вот сейчас надо запустить виртуалок, потом мы правда правда новое железо купим с больше памяти купим» на каком-то уже стареньком i7 7700k вроде.

до +30% было добавлено и в ней постоянно жили VM. Вроде даже особо ни кто не жаловался, хотя и понятно что оно чуть медленнее работало.

Пытаться выделить больше можно, но оно начинает явно нестабильно работать и уже явно жалуются на медленно/виснет.

С balooning/ksm не копался, сильно давно явно не увидел от этого какой-то пользы и отложил

Flotsky ★★★
()
Ответ на: комментарий от anonymous

Не, у меня и хост и гости - линуксы.

А Проксмокс не использую, ибо кручу всё на десктопе, а на нём Федора. Федора ван лав.

Но даже если будет Проксмокс, это будет чёрный ящик. А хочется разбираться, что там происходит под капотом.

kma21 ★★★★★
() автор топика
Ответ на: комментарий от kma21

qemu гипервизор, kvm модуль ядра для паравиртуализции и даёт ее ускорение, если процессор поддерживает инструкции. остальное уже комбинации. shared memory удобно. как бы серебряной пули не бывает, тот же huge pages по сути, отбирает сам для себя указанный объём ОЗУ и все. Тут больше понять стратегию: нет денег и временное решение на пере топтаться или нет денег и нафиг не нужно, но хочу посмотреть (просто без практической потребности оценить без нагрузки будет не то что бы сложно, а дать оценку «нужности». так что ли.)

anonymous
()
Ответ на: комментарий от anonymous

Нет денег (цены на память конские, а я на этом не зарабатываю, чтобы вкладываться здесь и сейчас).

Но что это меняет? То что оверселить не надо, это приводит к проблемам я знаю. Тем не менее, риски достаточно прогнозируемы и тысячи хостингов оверселят. Мало того, только благодаря оверселингу они и выживают.

kma21 ★★★★★
() автор топика
Ответ на: комментарий от kma21

С бизнесом это плоскость не техническая, как верно заметил. Можно анекдотами, можно реальными историями, - но не техническое это что оверселят.

anonymous
()
Ответ на: комментарий от kma21

если будет Проксмокс, это будет чёрный ящик

sources is the best documentation же, ну.

Да, хотелось бы конечно читать техдоки отдельно, но это opensource, тут никто никому ничего не должен, а техпис обычно стоит денег.

Так-то по самим тонкостям Proxmox вполне есть официальные доки - как онлайн, так и встроенные в саму инсталляцию (https://<твой адрес сервера>:8006/pve-docs/index.html)

И да, я знаю что авторы Proxmox продают платные подписки на его обновления и техподдержку. Но видимо расчет на то, что те, кто совсем ничего не понимает и понимать не хочет - купят эту самую поддержку и не будут париться, а тем кто хочет париться - будет не грех заглянуть в исходники (благо они есть).

Pinkbyte ★★★★★
()
Ответ на: комментарий от Pinkbyte

ЛОЛ, я почему-то думал, что у проксмокса какая-то солянка между сорцами и бинарями. Если он полностью опен сорс, это немного проще. Но читать исходники на чём-то низкоуровневом, чтобы понимать низкоуровневые процессы сложно =)

Эни вей, спасибо за советы.

kma21 ★★★★★
() автор топика