日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

推动Windows的限制:物理内存

發布時間:2025/3/15 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 推动Windows的限制:物理内存 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這是我將在接下來的幾個月中編寫的第一篇博客文章,名為“推動Windows的限制”,介紹Windows和應用程序如何使用特定資源,資源的許可和實現派生限制,如何衡量資源用法以及如何診斷泄漏。為了能夠有效地管理Windows系統,您需要了解Windows如何管理物理資源(如CPU和內存)以及邏輯資源(如虛擬內存,句柄和窗口管理器對象)。了解這些資源的限制以及如何跟蹤其使用情況,可以將資源使用情況歸因于使用這些資源的應用程序,有效地為特定工作負載調整系統的大小,并識別泄漏資源的應用程序。

這是整個推動限制系列的索引。雖然他們可以獨立存在,但他們認為你是按順序閱讀的。

推動Windows的限制:物理內存

推動Windows的限制:虛擬內存

推動Windows的限制:分頁和非分頁池

推動Windows的限制:進程和線程

推動Windows的限制:把手

推動Windows的限制:USER和GDI對象 - 第1部分

推動Windows的限制:USER和GDI對象 - 第2部分

物理內存

計算機上最基本的資源之一就是物理內存。Windows內存管理器負責用活動進程,設備驅動程序和操作系統本身的代碼和數據填充內存。由于大多數系統在運行時訪問的代碼和數據比在物理內存中所能容納的要多,物理內存本質上是一段時間內使用的代碼和數據的窗口。內存量因此可能會影響性能,因為當進程或操作系統需要的數據或代碼不存在時,內存管理器必須將其從磁盤中引入。

除了影響性能外,物理內存的數量還會影響其他資源限制。例如,由物理內存支持的非分頁緩沖池,操作系統緩沖區的數量明顯受到物理內存的限制。物理內存也有助于系統虛擬內存限制,這是大致物理內存大小加上任何分頁文件的最大配置大小的總和。物理內存也可以間接地限制最大進程數量,我將在以后的文章中討論進程和線程限制。

Windows服務器內存限制

Windows對物理內存的支持受硬件限制,許可,操作系統數據結構和驅動程序兼容性的限制。MSDN中“Windows發行版?”的“?內存限制”頁面記錄了不同Windows版本的限制以及版本內SKU的限制。

您可以在所有Windows版本的服務器SKU中看到物理內存支持許可的差異化。例如,32位版本的Windows Server 2008 Standard僅支持4GB,而32位Windows Server 2008 Datacenter則支持64GB。同樣,64位Windows Server 2008 Standard支持32GB,而64位Windows Server 2008 Datacenter可以處理高達2TB的數據。在那里沒有太多的2TB系統,但Windows服務器性能團隊知道一對夫婦,包括他們在實驗室中曾經有過的一個。以下是在該系統上運行的任務管理器的屏幕截圖:

Windows Server 2003數據中心版支持128GB的最大32位限制,這是由于內存管理器用于跟蹤物理內存的結構會在較大的系統上占用系統的虛擬地址空間太多。內存管理器跟蹤一個名為PFN數據庫的數組中的每個內存頁面,為了性能,它將整個PFN數據庫映射到虛擬內存中。因為它代表了每個頁面的內存為28字節的數據結構,所以128GB系統上的PFN數據庫大約需要980MB。32位Windows有一個由硬件定義的4GB虛擬地址空間,在當前執行的用戶模式進程(例如記事本)和系統之間默認分割。980MB因此消耗了可用的2GB系統虛擬地址空間的將近一半,僅剩1GB的內核映射,

這也是為什么內存限制表列出了在使用4GB調優(稱為4GT并使用Boot.ini的/ 3GB或/ USERVA,以及Bcdedit的/設置IncreaseUserVa啟動選項啟動)時,同一SKU的下限,因為4GT將拆分給用戶模式3GB,只留下1GB的系統。為了提高性能,Windows Server 2008通過將其最大32位物理內存支持降至64GB,為系統地址空間預留了更多空間。

內存管理器可以通過根據需要將PFN數據庫的片段映射到系統地址來容納更多的內存,但這會增加復雜性并且可能由于增加的映射和取消映射操作而降低性能。直到最近,系統才變得足夠大才能被考慮,但是由于系統地址空間不是在64位Windows上映射整個PFN數據庫的限制,因此對64位Windows的支持更多。

64位Windows Server 2008 Datacenter的最大2TB限制不是來自任何實現或硬件限制,但Microsoft將只支持可以測試的配置。從Windows Server 2008的發行版開始,任何地方最大的系統都是2TB,所以Windows限制了它在那里使用物理內存。

Windows客戶端內存限制

64位Windows客戶端SKU支持不同數量的內存作為SKU差異化功能,其中Windows XP Starter為512MB,Vista Ultimate為128GB,Windows 7 Ultimate為192GB。但是,所有32位Windows客戶端SKU(包括Windows Vista,Windows XP和Windows 2000 Professional)最多支持4GB的物理內存。4GB是使用標準x86內存管理模式可訪問的最高物理地址。最初,甚至在服務器上,甚至不需要考慮在客戶機上支持4GB以上的內存。

但是,當Windows XP SP2正在開發之中時,預計會有超過4GB的客戶端系統,因此Windows團隊開始在內存超過4GB的系統上對Windows XP進行廣泛的測試。Windows XP SP2還在硬件上啟用了物理地址擴展(PAE)支持,該硬件實現了不執行內存,因為它是數據執行保護(DEP)所必需的,但是也支持超過4GB的內存。

他們發現,許多系統會崩潰,掛起或無法啟動,因為一些設備驅動程序(通常是在客戶端而不是在服務器上找到的視頻和音頻設備)通常沒有被編程為預計物理地址大于4GB。因此,驅動程序會截斷這些地址,導致內存損壞和損壞的副作用。服務器系統通常具有更通用的設備并具有更簡單和更穩定的驅動程序,因此通常沒有出現這些問題。有問題的客戶端驅動程序生態系統導致客戶SKU決定忽略高于4GB的物理內存,即使理論上可以解決這個問題。

32位客戶端有效內存限制?

雖然4GB是32位客戶端SKU的許可限制,但有效限制實際上較低,并取決于系統的芯片組和連接設備。原因是物理地址映射不僅包含RAM,還包含設備內存,x86和x64系統將所有設備內存映射到4GB地址邊界以下,以便與不知道如何處理的32位操作系統兼容地址大于4GB。如果一個系統有4GB內存和設備,比如視頻,音頻和網絡適配器,這些設備的內存總和為500MB,那么500MB的4GB內存將會位于4GB的地址邊界之上,如下圖所示:

結果是,如果你有一個內存為3GB或更多的系統,并且你正在運行一個32位的Windows客戶端,那么你可能沒有得到所有內存的好處。在Windows 2000,Windows XP和Windows Vista RTM上,您可以在系統屬性對話框,任務管理器的性能頁面以及在Windows XP和Windows Vista(包括SP1)上的Msinfo32中查看Windows可以訪問多少RAM。 Winver實用程序。在Windows Vista SP1上,其中一些位置更改為顯示已安裝的RAM,而不是可用的RAM,如本知識庫文章中所述

在我的4GB筆記本電腦上,使用32位Vista引導時,可用的物理內存量為3.5GB,如Msinfo32實用程序中所示:

您可以使用Alex IonescuMeminfo工具(他正在貢獻David Solomon共同編寫Windows Internals的第5版)來查看物理內存布局這是Meminfo的輸出,當我用-r開關在系統上運行它時,轉儲物理內存范圍:

請注意內存地址范圍從9F0000頁到100000頁的間隔,以及另一個從DFE6D000到FFFFFFFF(4GB)的間隙。但是,當我使用64位Vista引導系統時,所有4GB都顯示為可用,并且您可以看到Windows如何使用4GB邊界之上剩余的500MB RAM:

?

什么是占用4GB以下的洞?設備管理器可以回答這個問題。要檢查,啟動“devmgmt.msc”,在視圖菜單中選擇連接資源,然后展開內存節點。在我的筆記本電腦上,映射設備內存的主要消費者是(不出所料)顯卡,它在E0000000-EFFFFFFF范圍內消耗了256MB:

其他雜項設備占了其余的大部分,PCI總線為設備保留額外的范圍,作為固件在啟動過程中使用的保守估計的一部分。

大容量視頻卡的高端游戲系統對低于4GB的內存地址的消耗可能非常大。例如,我從一家精品游戲鉆機公司購買了一臺4GB內存和兩塊1GB顯卡。我沒有指定操作系統的版本,并假設他們把64位的Vista,但它來的32位版本,因此只有2.2GB的內存可以訪問的Windows。在我安裝了64位Windows之后,在系統的Meminfo輸出中可以看到從8FEF0000到FFFFFFFF的巨大內存空洞:

“設備管理器”顯示,超過2GB的洞中有512MB是針對視頻卡的(每個256MB),看起來固件為動態映射預留了更多的空間,或者因為它的估計保守:

即使只有2GB的系統也可以避免在32位Windows下使用所有的內存,因為芯片組積極地保留了設備的內存區域。我們幾個月前從一家主要OEM購買的共享家庭計算機報告說,只有1.97GB的2GB安裝可用:

物理地址范圍從7E700000到FFFFFFFF由PCI總線和設備保留,物理地址空間的理論最大值為7E700000字節(1.976GB),但有一部分保留給設備內存,這就解釋了為什么Windows報告1.97GB。

由于設備供應商現在必須向Microsoft的Windows硬件質量實驗室(WHQL)提交32位和64位驅動程序以獲得驅動程序簽名證書,目前大多數設備驅動程序可能處理高于4GB的物理地址。但是,32位Windows將繼續忽略它之上的內存,因為還有一些難以衡量的風險,而OEM(至少應該是)轉向64位Windows,這不是問題。

底線是,無論數量多少,您都可以充分利用系統內存(高于SKU的限制),如果您正在購買高端游戲系統,則應該要求OEM將64位它在工廠的Windows。

你有足夠的記憶嗎?

不管你的系統有多少內存,問題是,這足夠嗎?不幸的是,沒有硬性規定可以讓你確切地知道。您可以使用基于一段時間監視系統“可用”內存的一般指導原則,特別是在運行內存密集型工作負載時。Windows將可用內存定義為未分配給進程,內核或設備驅動程序的物理內存。顧名思義,如果需要,可用內存可用于分配到進程或系統。內存管理器當然試圖通過使用它作為一個文件緩存(備用列表),以及為零內存(零頁列表),Vista的“

如果可用的內存變得稀少,那意味著進程或系統正在使用物理內存,并且如果它在很長一段時間內保持接近于零,那么通過增加更多的內存,您可能會受益匪淺。有很多方法來跟蹤可用內存。在Windows Vista上,通過觀察任務管理器中的物理內存使用情況歷史記錄,可以間接跟蹤可用內存,隨著時間的推移,它將保持接近100%。這里是我的8GB桌面系統上的任務管理器的截圖(嗯,我想我可能有太多的內存!):

在所有版本的Windows上,可以使用性能監視器通過添加內存性能計數器組中的可用字節計數器來繪制可用內存:

?

您可以在“任務管理器”的“性能”頁面上看到Process Explorer的“系統信息”對話框中的即時值,或者在Vista之前的Windows版本中。

推動Windows的極限

在CPU,內存和磁盤之外,內存通常是整個系統性能最重要的部分。越多越好。64位Windows是確保你充分利用它的好方法,64位Windows可以在將來談論的其他性能優勢,當我說話的時候推動限制博客文章關于虛擬內存的限制。

?

總結

以上是生活随笔為你收集整理的推动Windows的限制:物理内存的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。