Назад | Перейти на главную страницу

32-разрядные виртуальные машины в Azure имеют только 1 ГБ оперативной памяти.

Согласно этой странице: https://docs.microsoft.com/en-us/azure/virtual-machines/troubleshooting/support-32-bit-operating-systems-virtual-machines

Microsoft Azure теперь позволяет пользователям переносить свои 32-разрядные операционные системы Windows в Azure.

Я попытался перенести свои 32-разрядные образы в Azure, но у них есть только 1 ГБ полезной памяти из общей физической памяти (в зависимости от размера виртуальной машины). Образ представляет собой новую установку Windows с настроенным только RDP.

С локальным Hyper-V у меня есть 3,87 ГБ доступной памяти из 4 ГБ, чего я и ожидал.

Пробовал разные варианты:

Ничего не помогло, у меня всегда есть 1 ГБ полезной памяти из 14 ГБ или 4 ГБ. Поиск в Интернете предполагает, что это может иметь какое-то отношение к BIOS, но у меня нет доступа к BIOS виртуальных машин Azure. Есть ли решение или хотя бы объяснение этой проблемы?

P.S. Пожалуйста, не предлагайте использовать 64-битную Windows или вложенную виртуализацию в качестве ответа на этот вопрос.

Обновить: Спасибо за указатели о динамической памяти. Но мне все равно не удалось решить проблему. Я смоделировал высокое потребление памяти с помощью testlimit (от Sysinternals) и убедился, что у меня запущен драйвер dmvsc.sys (динамическая память), но объем оперативной памяти у меня никогда не увеличивался.

Добро пожаловать в причуды Hyper-V и динамической памяти.

Все виртуальные машины Hyper-V в Azure используют динамическую память (кроме зарезервированных экземпляров). Это означает, что Hyper-V будет постоянно отслеживать спрос (как сообщает локальное ядро) и назначать виртуальную машину необходимой физической RAM. Таким образом, вы увидите «1 Гб можно использовать» [в этот самый момент]. Это реальный объем «реального» физического отображения оперативной памяти (плюс буфер для быстрорастущих приложений).

Виртуальной машине с Windows 10 для нормальной работы требуется (что удивительно) мало оперативной памяти. На вашем снимке экрана в настоящий момент память не используется (я предполагаю). «Потребность» в памяти очень мала, поэтому буфер, назначенный виртуальной машине (обычно около 15%) в конфигурации машины Hyper-V, использует около 1 ГБ от назначенного максимума.

Буфер важен: при использовании динамической памяти и внезапном повышении спроса, например, из-за запуска приложения с большим объемом ресурсов, Hyper-V требует времени, чтобы выделить больше оперативной памяти для виртуальной машины. Вполне возможно, что это очень медленно (в зависимости от требований других машин на этом хосте). Чем больше буфер, тем лучше виртуальная машина реагирует на повышенный спрос. Вы видите там "минимальный" буфер.

Подсказка: не следует использовать динамическую память при установке Windows, это может занять время, необходимое для установки. в некотором роде дольше. Бьюсь об заклад, вы ждали много дольше, чем на вашем локальном компьютере.

Вообще говоря, Windows 10 x32 использует максимум 4 ГБ статической ОЗУ для приложений по умолчанию. PAE может расширить это, но единственными широко распространенными приложениями, которые это делают, являются Exchange Server (который не работает под Windows 10) и SQL Server (Enterprise).

Это должно быть связано с тем, что ОС не использует более 1 ГБ, а для виртуальной машины настроена динамическая память. Как только вы запустите больше программ, которым требуется больше оперативной памяти, размер доступной памяти будет расти. Кстати, для 32-битной ОС нет необходимости приобретать виртуальные машины с ОЗУ более 4 ГБ. Сама операционная система не может адресовать более 4 ГБ.

Обратите внимание, что это всего лишь предположение. Сам не тестировал.

Пример кода для выделения памяти:

$dictionary = new-object "System.Collections.Generic.Dictionary[[Guid],[int]]"
while ($true) { 
    $dictionary.Add([guid]::NewGuid() , 0) 
}