Есть ли причина для того, чтобы дать виртуальной машине круглое основание 2 (2048 МБ, 4096 МБ и т. Д.) Памяти?

26

Название в значительной степени говорит само за себя, есть ли какое-то преимущество, если выделять виртуальную память 2048 МБ вместо округления до базовой 10 и делать 2000 МБ?

Nate
источник

Ответы:

10

Физическая память на сервере кратна степени двух, поэтому она будет равномерно распределяться, если вы используете другие кратные. В SLAT могут быть невероятно незначительные улучшения, например, если они правильно выровнены. В противном случае нет.

Крис С
источник
Страницы имеют размер 4 КБ или 2 МБ, в основном - нет никаких реальных проблем даже с нарезкой даже 1234 МБ, не так ли?
Пойдж
1
@poige Насколько я знаю, да, никаких проблем ... Нам действительно нужен кто-то, кто знает SLAT (и др.) внутри и снаружи, для окончательного ответа.
Крис С
13

Hyper-V выделяет внутреннюю память по 2 МБ. Сам гипервизор будет использовать записи таблицы страниц размером 2 МБ для повышения эффективности, если это возможно, если ваш процессор поддерживает преобразование адресов второго уровня (SLAT). Это будет возможно практически для любой виртуальной машины с отключенной динамической памятью.

Кроме этого, нет, это не имеет значения.

Джейк Ошинс
источник
7

Просто чтобы уточнить, что сказали другие ответы; определяемый здесь предел в основном относится к программному обеспечению вашей виртуальной машины, а не гостевой. То есть, когда ваша гостевая ОС запрашивает страницу памяти, она делает это с определенными приращениями (то есть 4 КБ). Таким образом, если вы определили, что виртуальная машина имеет 4097 КБ ОЗУ, а ваша виртуальная машина использовала размер страницы 4 КБ, то она, скорее всего, предоставит виртуальной машине 4100 КБ ОЗУ.

Однако если бы гостевая ОС использовала размер страницы 1 КБ, а ваша хост-система использовала размер страницы 4 КБ, то ОС хоста, по сути, предоставила бы 4 КБ пространства, из которых будет использоваться только 1 КБ - но это из всех куски памяти. Таким образом, вы никогда не будете тратить сколько-нибудь заметного пространства.

Отметим, что выравнивание между хост-ОС и гостевой ОС здесь не является важным фактором, за исключением последних «отключенных битов».

Андрей М.
источник
Это не так при определенных обстоятельствах: например, программное обеспечение виртуальной машины может зарезервировать весь запрошенный объем ОЗУ (плюс все, что ему нужно для видеокарты и других разнородных потребностей) или при использовании аппаратной поддержки вложенных пейджинговых / расширенных таблиц страниц - гость эффективно управляет физическими страницами памяти с помощью аппаратного процессора. Кроме того, резервирование 4097 КБ памяти, скорее всего, выделит 4100 КБ физической ОЗУ, хотя только 4097 КБ будет фактически адресуемой гостевой операционной системой.
Goyuix
2
Я не понимаю, как то, что вы сказали, расходится с моим ответом. Не могли бы вы уточнить?
Андрей М.
Возможно, это было вашим намерением, однако, читая ваш ответ как «вы, по сути, никогда не сможете использовать этот дополнительный 1 КБ» - я попытался уточнить, что гостевая ОС может (теоретически) использовать эту ОЗУ, хотя 3/4 из физическая страница, скорее всего, останется нетронутой. Ваш ответ не очень понятен для меня. Я также попытался предоставить некоторые ключевые слова / технологии, которые будут влиять на эти решения. Проблемы с выравниванием страниц - это только одна из компромиссов, которые необходимо учитывать, и я чувствую, что ответ можно улучшить, упомянув о соответствующих воздействиях на него.
Goyuix
Ах, я вижу, где я ошибся. Это на самом деле, как я представлял, но я, должно быть, избавился от этого в моих различных ревизиях. Я обновил его, чтобы прояснить этот момент. :)
Андрей М.
3

Я подозреваю, что это вопрос традиции, и согласование его с тем, как строятся физические системы. Физические системы имеют объем памяти в базовых 2-х единицах (и наименьший из всех когда-либо созданных x86, это правда), и есть некоторые шансы, если не многие ОС ожидают этого при управлении памятью.

Короче говоря, это действительно потому, что виртуальная машина отражает реальную машину, а не гипотетическую. Не очень технический ответ, но я думаю, что это настоящий

Подмастерье
источник
1

На самом деле, нет. Динамическая память Hyper-v будет распределять только то, что система использует в любом случае. Сумма, которую вы назначаете, является начальным значением. Если вы не используете динамическую память, единственное преимущество, которое я вижу, - лучше настроить физическую память для виртуальной.

Джим Б
источник
-1. Видите ли, Hyper-V не имеет динамической памяти, если NONE не настроен. И угадайте, что ... иногда имеет смысл не использовать это (для определения местоположения требуется время, поэтому, например, сервер баз данных хочет все это сразу). Таким образом, общий ответ не имеет значения и - фактически - совсем не то, что было задано.
TomTom