Azure 上的 32 位虚拟机仅具有 1GB 可用 RAM

Azure 上的 32 位虚拟机仅具有 1GB 可用 RAM

根据此页面: https://docs.microsoft.com/en-us/azure/virtual-machines/troubleshooting/support-32-bit-operating-systems-virtual-machines

Microsoft Azure 现在允许用户将其 32 位 Windows 操作系统迁移到 Azure。

我尝试将 32 位映像带到 Azure,但它们的总物理内存中只有 1Gb 可用内存(取决于 VM 大小)。该映像是 Windows 的全新安装,仅配置了 RDP。

14GB 中只有 1GB 可用

使用内部部署 Hyper-V,我有 4 GB 的可用内存,其中 3.87 GB,这正是我所期望的。

我尝试了不同的选择:

  • Windows 10 x32 映像
  • Windows 7 x32 映像
  • B2s 尺寸机器(2 核,4 GB)
  • D2v3(2 核,14 GB)
  • sysprep'ped/非 sysprep'ped 映像

什么都没用,我的 14 GB 或 4 GB 内存中总是只有 1 GB 可用。互联网搜索表明这可能与 BIOS 有关,但我无法访问 Azure VM 的 BIOS。有没有什么解决方案或至少可以解释这个问题?

PS 请不要建议使用 64 位 Windows 或嵌套虚拟化来回答这个问题。

更新: 感谢您对动态内存的指点。但我仍然无法解决这个问题。我使用 testlimit(来自 Sysinternals)模拟了高内存消耗,并确保 dmvsc.sys(动态内存)驱动程序正在运行,但 RAM 量从未增长。

在此处输入图片描述

更新: 将修复此问题的建议发布到 Azure 反馈门户。您可以在此处投票 https://feedback.azure.com/forums/223579-azure-portal/suggestions/42881949-fix-the-issue-with-1gb-ram-limit-for-32-bit-oses-r

答案1

欢迎了解 Hyper-V 和动态内存的怪癖。

Azure 中的 Hyper-V 虚拟机均使用动态内存(保留实例除外)。这意味着,Hyper-V 将不断监控需求(由本地内核报告)并为虚拟机分配所需的物理 RAM。因此,您将看到“1 Gb 可用”[此时此刻]。这是“真实”物理 RAM 映射的实际数量(加上快速增长应用程序的缓冲区)。

在此处输入图片描述

Windows 10 虚拟机只需要很少的 RAM 即可正常运行。在您的屏幕截图中,内存使用量目前处于空闲状态(我假设)。内存“需求”非常小,因此分配给虚拟机的 Hyper-V 机器配置的缓冲区(通常约为 15%)使用了分配最大值的约 1Gb。

缓冲区很重要:当使用动态内存时,需求突然增加(例如由于启动了资源密集型应用程序),Hyper-V 需要时间来为虚拟机分配更多 RAM。这可能是非常缓慢(取决于此主机上其他机器的需求)。缓冲区越大,虚拟机对增加的需求的反应就越好。您会看到那里的“最小”缓冲区。

提示:安装 Windows 时不应使用动态内存,它会增加安装所需的时间有些更长的时间。我猜你等了很多完成此操作所需的时间比在本地机器上要长。

一般来说,Windows 10 x32 默认应用程序最多使用 4GB 静态 RAM。PAE 可以扩展这个值,但唯一可以这样做的广泛应用程序是 Exchange Server(不在 Windows 10 下运行)和 SQL Server(企业版)。

答案2

这肯定是因为 OS 使用的内存不超过 1 GB,并且 VM 配置了动态内存。只要您运行更多需要更多 RAM 的程序,可用内存的大小就会增加。顺便说一句,对于 32 位 OS,没有必要让 VM 拥有超过 4 GB 的 RAM。操作系统本身无法处理超过 4 GB 的内存。

请注意,这只是一个假设。我自己还没有测试过。

分配内存的示例代码:

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

答案3

微软在文档中添加了以下注释:

Azure 平台对运行 32 位操作系统的 VM 施加了内存地址空间限制,其中可能只有 1GB 内存可供 VM 使用(尤其是在 Win7 或 Win10 等客户端 SKU 上),而 VM 的其余内存将在来宾 VM 中显示为保留。这是一个已知问题,我们目前没有修复的预计时间。我们建议迁移到 64 位操作系统版本。

https://docs.microsoft.com/en-us/troubleshoot/azure/virtual-machines/support-32-bit-operating-systems-virtual-machines

将修复此问题的建议发布到 Azure 反馈门户。您可以在此处投票 https://feedback.azure.com/forums/223579-azure-portal/suggestions/42881949-fix-the-issue-with-1gb-ram-limit-for-32-bit-oses-r

相关内容