LINUX.ORG.RU
решено ФорумAdmin

Работа с памятью в kvm

 ,


0

1

Основной вопрос такой:

Есть ли в qemu + kvm возможность задать обьём памяти, но не выделять его целиком, до тех пор, пока он не будет востребован?

Если есть чего почитать по теме, буду премного благодарен.

Работает, в том числе и под винду. Читать тут

★★★★★

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

Есть ли в qemu + kvm возможность задать обьём памяти, но не выделять его целиком, до тех пор, пока он не будет востребован?

Есть.

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

!

Спасибо.

А не подскажешь как это организовать?

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

Спасибо. 2 раза. Второй раз за то, что не пришлось два раза ходить :)

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

Странно, но на дисочке с дровами balloon.inf таки имеется.

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

Но, в реальной системе похоже не работает. Контролер в гостевой системе - определился. Выделил машине с 10очкой 6gb памяти. Тамошний taskmgr показывает 0.9Gb занятых.

htop показывает что объём использованной памяти увеличился примерно на 6.5Gb.

Ну, и тот факт, что пошёл в дело swap, намекает на то, что либо я не умею готовить/управлять этой фичей, либо она действительно не работает с виндой.

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

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

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

Ну, это понятно, видимо демон слишком жадный, по идее, его должно быть довольно легко закостылить под нужное поведение.

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

Для одиночной vm машины, нет. Для нескольких «возможно» профит будет (возможно - только по причине того что если они сами все отожрут). Емнип читал что KMS нехилый профит на большом количестве запущенного офтопика давал. А вот про ballooning до сих пор споры идут насколько он эффективнее(глюки присягаются) KMS.

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

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

Идея в том - что сама винда (читай blnsrv.exe) не просит памяти больше чем что бы выйти из свопа на сколько то процентов.

Пока писал, понял, что нужно попробовать отрубить своп :)

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

Копий сломано много на эту тему. Но правило одно, распределять память крайне желательно так - сколько ее есть. Например если хост жрет 1Гб а виртуалка 6Гб то ставь 8Гб оперативы.

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

Я выше писал что при большом кол-ве однотипных vm KMS дает нехилый профит. Но в любом случае это надо тестировать на реальной нагрузке. А то получиться «внезапно» что одна из vm умерла из-за другой. С ballooning еще сложнее и хуже может получиться.

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

Мысль интересная, но тут имеет место быть ситуация чем больше ресурсов - тем лучше. У меня сейчас 16gb, скорее всего мне без вопросов выдадут 32. На рабочей тачке хватит скорее всего даже 16, учитывая что я хочу уйти из DE linux в DE винды, и оттуда пускать приложения linux через xming.

Однако, идея была сделать воспроизводимый конфиг с минимальным потреблением ресурсов и при этом с производительностью выше или хотя бы равной виртуальной коробке.

Т.е. винду держать в коробке постоянно - неинтересно, иногда система в своп уходит. Хотелось бы выделять память именно с помощью ballooning, но не хватает у него тонких настроек (или я пока не нашёл).

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

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

Давайте посмотрим на проблему с самого начала. У вас одна vm которая может сожрать 6Гб и одна хост система которая тоже может сожрать «сколько-то» Гб. Теперь эфемерная ситуация, хосту понадобилось 4Гб vm 6Гб а у нас всего 8Гб, ну и кто может начать тормозить? Если вы предполагаете что хосту понадобиться 4Гб то у него должно быть всегда 4Гб. А вот гостей уже можно урезать. Надеюсь правильно пояснил.

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

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

Юзекейс? Ну например сборка c++ софта. На i7-6700 сиё упирается в ~9gb памяти если собирать во все потоки с помощью ninja. Если свободной памяти больше, тогда можно увидеть 100% загрузку ядер. При этом, в состоянии покоя - хост система кушает ну, допустим 1.2G (с нескучным gui, от него конечно же можно будет избавится). Если добить сюда IDE, браузер, почтовый клиент и мессенджер и собственно собираемое ПО, неважно где запущенные, то получается, что предоплата памятью хоть виртуалке, хоть хосту с запасом уже кажется расточительством при неудвоенном количестве ресурсов, а для этого проца это видимо 64gb (их мне уже не дадут так просто:)).

Это можно решить докупкой железа, но так же, теоретически оно вполне решается и на софтварном уровне.

Хотелось бы разобраться с софтварным вариантом. Чисто из интереса на самом деле, кмк рабочей тачке на практике - хватит ресурсов. Но, пока играюсь дома, на гораздо более скромном конфиге, да ещё и мобильном :)

Т.е. если посмотреть на проблему рабочей станции при условии более менее равного время препровождения в госте и хосте, то, что бы эффективно поделить память - делить надо пополам. При этом, что бы сохранить эффективность приближенную к изначальной, каждая половина должна быть в размере того что было выданно хосту изначально. Что в принципе очевидно, при использовании подхода в лоб :)

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

Хм, надеюсь идею распарсил правильно. Вы хотите «и рыбку и....» не отправлять виртуалку хотя бы в suspend на время когда собираетесь отожрать ресурсы хост системой (наоборот в любом случае не прокатит, если уж хост отожрал значит надо руками выгружать не нужное для освобождения ресурсов ) Т.е. по большому счету, то что регулируется руками хотите что бы было автоматом.
Интересный эксперимент. Тут уж да, кроме balloon имхо ничего не придумать. Плиз, если не забудете, расскажите по итогам как получилось в реальной работе а не на стенде, даже интересно.

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

Я читаю...

Почитал вот сорцы blnsvr, нифига не понял сходу, но похоже настройки в данный момент не предусмотренно. Как дровина коммунцирует с kvm пока мне непонятно, от совсем ядерных дел далёк я.

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

Судя по всему, с виндой не очень прокатит, если не лазить в сорцы blnsrv и самой дровины. Этого я боюсь не осилю.

Если чего выйдет я конечно обязательно отпишусь, но я надеялся найти халявуготовое решение, а тут думать надо :)

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

Вот это можете пояснить? Вроде как после смерти процесса оно и так освобождается?

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

Вот это можете пояснить? Вроде как после смерти процесса оно и так освобождается?

Все верно. Я про ситуацию, например запустили вы 100500 браузеров, пока не закроете - память не освободиться. Т.е. автоматически никак.

anc ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.