Azure

Azure 上的 32 位 VM 只有 1GB 的可用 RAM

  • March 14, 2021

根據此頁面: 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。

14 個中只有 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 可用記憶體。Internet 搜尋表明它可能與 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

歡迎來到 Hyper-V 和動態記憶體的怪癖。

azure 中的 Hyper-V 虛擬機都使用動態記憶體(保留實例除外)。這意味著,Hyper-V 將持續監控需求(由本地核心報告)並將所需的物理 RAM 分配給 vm。因此,您將看到“1 Gb 可用”

$$ at this very moment $$. 這是“真實”物理記憶體映射的實際數量(加上快速增長的應用程序的緩衝區)。 在此處輸入圖像描述

Windows 10 虛擬機需要(令人驚訝的)很少的 RAM 才能正常執行。在您的螢幕截圖中,記憶體使用量目前處於空閒狀態(我假設)。記憶體“需求”非常小,因此分配給 Hyper-V 機器配置的 VM 的緩衝區(通常約為 15%)正在使用分配的最大值的 1Gb 左右。

緩衝區很重要:當使用動態記憶體並且需求突然增加時,例如由於啟動資源繁重的應用程序,Hyper-V 需要時間來為 vm 分配更多 RAM。這可能非常慢(取決於該主機上其他機器的需求)。緩衝區越大,虛擬機對增加的需求的反應就越好。您會在那裡看到“最小”緩衝區。

提示:在安裝 Windows 時不應該使用動態記憶體,它會使安裝所需的時間稍長一些。我敢打賭,你等待瘦身完成的時間比在本地機器上要長得多*。*

一般來說,Windows 10 x32 使用最大 4GB 的靜態 RAM 用於預設應用程序。PAE 可以對此進行擴展,但唯一能做到這一點的廣泛應用是 Exchange Server(不在 Windows 10 下執行)和 SQL Server(企業版)。

一定是因為作業系統使用的記憶體不超過 1 GB,並且為 VM 配置了動態記憶體。只要您執行更多需要更多 RAM 的程序,可用記憶體的大小就會增加。順便說一句,對於 32 位作業系統,無需獲得超過 4 GB RAM 的 VM。作業系統本身的地址不能超過 4 GB。

請注意,這只是一個假設。我自己沒有測試過。

分配記憶體的範常式式碼:

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

引用自:https://serverfault.com/questions/1012967