LINUX.ORG.RU
ФорумAdmin

Почему KVM-виртуалку нельзя запустить, если памяти недостаточно (свалившись в своп), а сваливать в своп после запуска можно?

 , , , ,


0

2

Не совсем понимаю, почему QEMU при запуске может зачать ругаться, что «Cannot allocate memory», а после старта виртуалка может быть легко вытеснена в своп? Тем более KVM использует виртуальную память, поэтому и нет проблем со свопом. Или это просто проверка в QEMU, которая может быть выключена?

оперативку купи ._.

anonymous
()

Vmware умеет сваповать память виртуалки.

anonymous
()

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

Это касается полного цикла загрузки, включая загрузчик, например если грузиться с iso. Qemu может грузить сразу ядро в защищённом режиме, может в этом случае и можно как-то обойти проверку.

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

Каким образом режим виртуального процессора влияет на адресацию памяти в гипервизоре?! Даже в реальном режиме память представлена страницами.

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

в реальном режиме память представлена страницами

Слашал с тобой что-то случилось и ты начал вбрасывать.

Я не поведусь :)

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

Он говорит о том, что для VMM память гостя — это в любом случае массив байт, который можно бить на хостовые страницы и свопить по отдельности.

Более того, нет, VMM никогда не пытается анализировать использование гостевой памяти и возвращать хосту неиспользуемое. (Только в виде memory ballooning, но это весьма ограниченный механизм и вообще не о том.)

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

Нет, не только: сейчас гипервизоры умеют не только прибавлять на лету оперативку (через hotplug, а не балунинг), а ещё и забирать её. Для гостя это выглядит, как физическое отключение планки с память с предварительным уведомлением по ACPI (можно и без, но тогда надо заранее отключить). Гость должен уметь замену планок на лету, но почти все крутые юниксы (включая линукс) умеют, т.к. унаследовали это от крутых серверов и мейнфреймов.

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от tlx

Слашал с тобой что-то случилось и ты начал вбрасывать.

А что в этом плохого? :) До вбросов я лучше, что-ли был? У Вас есть джаббер?

Я не поведусь :)

Уже же повелись. :)

Ну а если серьёзно, то в реальном режиме всё-равно есть некоторые моменты, которые подводят нас под страницы: кэши и переключением страниц памяти (не MMU страниц, т.к. MMU мы ещё не используем, а страниц DRAM контроллером памяти (внезапно, её нельзя напрямую адресовать, надо указывать чипам столбцы и колонки контроллером) ). Только это сегментами называется, а не страницами.
Но это далеко не вся магия. :) Начнём с того, что x86 уже давно умеют возможность хитрого отражения памяти (например, для блокировки возможности записи во флеш биоса), ну а с появлением SMM реальный режим вообще сложно таковым называть. В текущих процессорах реальный режим - это просто эмуляция. Реально используется защищенный режим с плоской памятью без подкачки (с кучей фишек особенного отражения памяти и SMM). Поэтому настоящего реального режима уже нет (хотя должен вроде как поддерживаться через костыли внутри проца), а ещё есть такая штука, как сегменты.

Читать:
http://www.c-jump.com/CIS77/ASM/Memory/lecture.html
http://resources.infosecinstitute.com/system-address-map-initialization-in-x8...
http://habrahabr.ru/post/185764/

Стыдно должно быть, уважаемый, не знать таких базовых вещей.

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