原始 KB 編號: 2160852
摘要
本文包含32位版本的Windows中虛擬記憶體實作的基本資訊。
在 Windows 等新式作業系統中,應用程式和許多系統進程一律會使用虛擬記憶體位址來參考記憶體。 虛擬記憶體位址會自動轉譯為硬體的實際 (RAM) 位址。 只有操作系統核心的核心部分會略過此位址轉譯,並直接使用實際的記憶體位址。
虛擬記憶體一律會使用,即使所有執行中進程所需的記憶體不會超過系統上所安裝的 RAM 磁碟區。
進程和地址空間
在 32 位版本的 Windows 下執行的所有進程(例如,應用程式可執行檔)都會被指派虛擬記憶體位址(虛擬地址空間),範圍從 0 到 4,294,967,295 (2*32-1 = 4 GB),無論計算機上安裝多少 RAM。
在預設的 Windows 設定中,會指定此虛擬位址空間的 2 GB,以供每個進程私用使用,而其他 2 GB 則會在所有進程與操作系統之間共用。 一般而言,應用程式(例如記事本、Word、Excel 和 Acrobat Reader)只使用 2 GB 私人地址空間的一小部分。 操作系統只會將 RAM 頁面框架指派給正在使用的虛擬記憶體頁面。
實體位址擴充功能 (PAE) 是 Intel 32 位架構的功能,其會將物理記憶體 (RAM) 位址擴充至 36 位。 PAE 不會變更虛擬位址空間的大小(維持在 4 GB),但只是處理器可尋址的實際 RAM 磁碟區。
程序代碼所使用之 32 位虛擬記憶體位址與 36 位 RAM 位址之間的轉譯,會根據 操作系統所維護的翻譯數據表 ,自動且透明地由計算機硬體處理。 任何虛擬記憶體頁面 (32 位位址) 都可以與任何實體 RAM 頁面 (36 位位址) 相關聯。
下列清單描述各種 Windows 版本和版本支援的 RAM 數量(截至 2010 年 5 月):
Windows 版本 | RAM |
---|---|
Windows NT 4.0 | 4 GB |
Windows 2000 Professional | 4 GB |
Windows 2000 Standard Server | 4 GB |
Windows 2000 進階伺服器 | 8 GB |
Windows 2000 Datacenter Server | 32 GB |
Windows XP Professional | 4 GB |
Windows Server 2003 Web Edition | 2 GB |
Windows Server 2003 Standard Edition | 4 GB |
Windows Server 2003 Enterprise Edition | 32 GB |
Windows Server 2003 Datacenter Edition | 64 GB |
Windows Vista | 4 GB |
Windows Server 2008 Standard | 4 GB |
Windows Server 2008 Enterprise | 64 GB |
Windows Server 2008 Datacenter | 64 GB |
Windows 7 | 4 GB |
分頁檔
RAM 是有限的資源,而就大部分實際用途而言,虛擬記憶體是無限制的。 可能會有許多進程,而且每個進程都有自己的 2 GB 私人虛擬地址空間。 當所有現有進程所使用的記憶體超過可用的 RAM 時,操作系統會將一或多個虛擬位址空間的頁面(4 KB 片段)移至電腦的硬碟。 這會釋放該 RAM 框架以供其他用途使用。 在 Windows 系統中,這些 分頁的頁面 會儲存在分割區根目錄中的一或多個檔案(Pagefile.sys檔案)。 每個磁碟分區中可以有一個這類檔案。 頁面檔案的位置和大小是在 [系統內容] 中設定的(按兩下[進階],按兩下 [效能],然後按兩下 [設定] 按鈕)。
用戶經常詢問 我該製作頁面檔有多大? 這個問題沒有單一答案,因為它取決於已安裝的 RAM 數量,以及工作負載所需的虛擬記憶體數量。 如果沒有其他可用資訊,則安裝 RAM 的一般建議為 1.5 倍是不錯的起點。 在伺服器系統上,您通常想要有足夠的 RAM,因此永遠不會有短缺,因此不會使用頁面檔。 在這些系統上,維護大型頁面檔可能沒有用處。 另一方面,如果磁碟空間充足,則維護大型頁面檔(例如,已安裝 RAM 的 1.5 倍)不會造成問題,這也不需要擔心要讓它變大。
效能、架構限制和 RAM
在任何計算機系統上,隨著負載增加(用戶數量、工作量),效能會降低,但以非線性方式。 負載或需求的任何增加,超過特定點,都會大幅降低效能。 這表示某些資源供應嚴重短缺,並已成為瓶頸。
在某些時候,供不應求的資源無法增加。 這表示 已達到架構限制 。 Windows 中一些經常報告的架構限制包括下列各項:
- 系統 2 GB 的共用虛擬位址空間(核心)
- 每個行程 2 GB 的私人虛擬位址空間 (使用者模式)
- 660 MB 的系統 PTE 記憶體 (Windows Server 2003 和更早版本)
- 470 MB 的分頁集區記憶體 (Windows Server 2003 和更早版本)
- 256 MB 的非分頁集區記憶體(Windows Server 2003 和更早版本)
這特別適用於 Windows Server 2003,但這也適用於 Windows XP 和 Windows 2000。 不過,Windows Vista、Windows Server 2008 和 Windows 7 並不全都共用這些架構限制。 使用者和核心記憶體的限制(此處的數位 1 和 2)相同,但 PTE 和各種記憶體集區等核心資源都是動態的。 這項新功能可同時啟用分頁和非分頁記憶體。 這也可讓 PTE 和會話集區成長超過稍早討論的限制,而達到整個核心耗盡的時間點。
經常找到並加上引號的語句,例如:
使用終端機伺服器時,在使用 4 GB RAM 之前,將會完全使用 2 GB 的共享地址空間。
在某些情況下,這可能是真的。 不過,您必須監視系統,以了解它們是否適用於您的特定系統。 在某些情況下,這些語句是特定 Windows NT 4.0 或 Windows 2000 環境的結論,不一定適用於 Windows Server 2003。 已對 Windows Server 2003 進行重大變更,以減少實際上會達到這些架構限制的機率。 例如,核心中的某些進程已移至非核心進程,以減少共用虛擬位址空間中使用的記憶體。
監視 RAM 和虛擬記憶體使用量
效能監視器 是監視系統效能和識別瓶頸位置的原則工具。 若要開始 效能監視器,請按兩下 [開始]、按兩下 [控制台]、[系統管理工具],然後按兩下 [效能監視器]。 以下是一些重要計數器及其告訴您的摘要:
記憶體、認可位元組:此計數器是虛擬記憶體需求的量值。
這會顯示進程配置了多少個字節,以及操作系統在分頁檔中認可 RAM 頁面框架或頁面位置的位元組數(或可能是兩者)。 當 認可位元組 成長大於可用的 RAM 時,分頁將會增加,而且所使用的分頁大小也會增加。 在某些時候,分頁活動開始大幅影響效能。
進程、工作集、_Total:此計數器是使用中虛擬記憶體的量值。
此計數器會顯示需要多少 RAM,讓用於所有進程的虛擬記憶體位於 RAM 中。 此值一律是 4,096 的倍數,也就是 Windows 中使用的頁面大小。 當虛擬記憶體的需求增加超過可用的 RAM 時,操作系統會調整進程虛擬記憶體在其工作集中有多少記憶體,以優化可用的 RAM 使用量,並將分頁降至最低。
分頁檔案,使用中的 %pagefile:此計數器是實際使用多少分頁檔的量值。
使用此計數器來判斷頁面檔是否為適當的大小。 如果此計數器達到 100,頁面檔已滿,且專案將會停止運作。 視工作負載的波動性而定,您可能想要頁面檔夠大,使其不超過 50-075%。 如果使用大部分的頁面檔,在不同實體磁碟上有多個頁面檔,可能會改善效能。
Memory,Pages/Sec:此計數器是最誤解的量值之一。
此計數器的高價值不一定表示您的效能瓶頸源於 RAM 短缺。 操作系統會使用分頁系統,因為記憶體過度承諾而交換頁面以外的用途。
Memory, Pages Output/Sec:此計數器會顯示有多少虛擬記憶體頁面已寫入頁面檔,以釋放 RAM 頁面框架,以供每秒使用。
如果您懷疑分頁是效能瓶頸,這是監視的最佳計數器。 即使 Committed Bytes 大於已安裝的 RAM,如果 Pages Output/sec 是低或零大部分時間,則 RAM 沒有顯著的效能問題。
記憶體、快取位元組、記憶體、集區非分頁位元組、記憶體、集區分頁位元組、記憶體、系統程式代碼總計位元組、記憶體、系統驅動程式總計位元組:
這些計數器的總和是測量 4 GB 虛擬位址空間中 2 GB 共用部分的實際使用量。 使用這些來判斷您的系統是否達到先前討論的其中一個架構限制。
記憶體、可用的 MBytes:此計數器會測量有多少 RAM 以滿足虛擬記憶體的需求(無論是新的配置,還是從頁面檔還原頁面)。
當 RAM 供不應求時(例如,認可位元組大於已安裝的 RAM),操作系統會嘗試將未使用中虛擬記憶體頁面的虛擬記憶體頁面複製到頁面檔,以保留特定部分安裝的 RAM 可供立即使用。 因此,此計數器不會達到零,而且不一定表示您的系統是否缺少 RAM。