Windows 中的 RAM、虛擬記憶體、頁面文件和記憶體管理

適用於:Windows 7 Service Pack 1,Windows Server 2012 R2
原始 KB 編號: 2160852

摘要

本文包含32位版本 Windows 中虛擬記憶體實作的基本資訊。

在 Windows 等新式作業系統中,應用程式和許多系統進程一律會使用虛擬記憶體位址來參考記憶體。 虛擬記憶體位址會由硬體自動轉譯為實際 (RAM) 位址。 只有操作系統核心的核心部分會略過此位址轉譯,並直接使用實際的記憶體位址。

一律會使用虛擬記憶體,即使所有執行中進程所需的記憶體不超過系統上安裝的 RAM 磁碟區也一般。

進程和地址空間

例如,所有進程 (,在32位版本 Windows 下執行的應用程式可執行檔) ,都會 (虛擬位址空間) 指派虛擬記憶體位址,範圍從 0 到 4,294,967,295 (2*32-1 = 4 GB) ,不論電腦上安裝多少 RAM。

在預設 Windows 設定中,會指定 2 GB (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 位位址) 。

下列清單說明自 2010 年 5 月起,各種 Windows 版本和版本支援 (多少 RAM) :

Windows 版本 RAM
Windows NT 4.0 4 GB
Windows 2000 Professional 4 GB
Windows 2000 Standard Server 4 GB
Windows 2000 Advanced Server 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

Pagefile

RAM 是有限的資源,但就大部分的實際用途而言,虛擬記憶體是無限制的。 可以有許多進程,而且每個進程都有自己的 2 GB 私人虛擬地址空間。 當所有現有進程使用的記憶體超過可用的 RAM 時,作業系統會將頁面 (4 KB 的片段) 一或多個虛擬位址空間移至計算機的硬碟。 這會釋放 RAM 框架以供其他用途使用。 在 Windows 系統中,這些 分頁分 頁頁面會儲存在一或多個檔案中, (Pagefile.sys 檔案) 數據分割的根目錄中。 每個磁碟分區中可以有一個這類檔案。 頁面檔的位置和大小是在 [ 系統 屬性] 中設定的 (按兩下 [ 階],按兩下 [ 能],然後按兩下 [設定 ] 按鈕)

用戶經常會詢問 我應該讓頁面檔變得多大? 這個問題沒有單一答案,因為它取決於已安裝的 RAM 數量,以及工作負載所需的虛擬記憶體數量。 如果沒有其他資訊可用,則一般建議安裝 RAM 的 1.5 倍是不錯的起點。 在伺服器系統上,您通常想要有足夠的 RAM,以免出現不足的情況,因此不會使用頁面檔。 在這些系統上,維護大型頁面檔可能沒有實用的目的。 另一方面,如果磁碟空間很豐富,則維護大型的頁面檔 (例如,1.5 倍的已安裝 RAM) 不會造成問題,而這也消除了需要擔心其大小。

效能、架構限制和 RAM

在任何計算機系統上,當負載增加 (用戶數目時,工作量) ,效能會降低,但以非線性方式。 超過特定點的任何負載或需求增加,都會導致效能大幅降低。 這表示某些資源的供應極少,而且已成為瓶頸。

在某些時候,無法增加供應不足的資源。 這表示已達到 架構限制 。 Windows 中一些經常報告的架構限制包括:

  • 系統核心 (2 GB 的共用虛擬位址空間)
  • 每個進程 2 GB 的私人虛擬位址空間 (使用者模式)
  • Windows Server 2003 和更早版本 (660 MB 的系統 PTE 記憶體)
  • Windows Server 2003 和更早版本 (470 MB 的分頁集區記憶體)
  • Windows Server 2003 和更早版本 (256 MB 的非頁面集區記憶體)

這特別適用於 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 時,操作系統會調整進程的虛擬記憶體存在其工作集內有多少,以優化可用的 RAM 使用量,並將分頁最小化。

  • 分頁檔案,使用中的 %pagefile:此計數器是實際使用多少頁面檔的量值。

    使用此計數器來判斷頁面檔是否為適當的大小。 如果此計數器達到 100,則頁面檔已滿,而且會停止運作。 視工作負載的波動性而定,您可能希望頁面檔夠大,使其使用率不超過 50-075%。 如果使用大部分的頁面檔,在不同的實體磁碟上有多個頁面檔,可能會改善效能。

  • Memory, Pages/Sec:此計數器是最受誤解的量值之一。

    此計數器的高值不一定表示您的效能瓶頸源自 RAM 不足。 由於記憶體過度承諾,操作系統會將分頁系統用於交換頁面以外的用途。

  • 記憶體、頁面輸出/秒:此計數器會顯示每秒有多少虛擬記憶體頁面寫入至頁面檔,以釋放 RAM 頁面框架以供其他用途使用。

    如果您懷疑分頁是效能瓶頸,這是監視的最佳計數器。 即使認可的位元組大於已安裝的 RAM,如果 Pages Output/sec 在大部分情況下都很低或為零,RAM 不足就不會有顯著的效能問題。

  • 記憶體、快取位元組、記憶體、集區非分頁位元組、記憶體、集區分頁位元組、記憶體、系統程式代碼總計位元組、記憶體、系統驅動程式總計位元組:

    這些計數器的總和是 4 GB 虛擬位址空間中實際使用 2 GB 之共用部分的量值。 使用這些值來判斷您的系統是否達到稍早討論過的其中一個架構限制。

  • 記憶體、可用 MBytes:此計數器會測量可用來滿足虛擬記憶體 (新配置或從頁面檔) 還原頁面的需求。

    例如,當 RAM 供應不足 (認可位元組大於已安裝的 RAM) 時,操作系統會嘗試將未使用中的虛擬記憶體頁面複製到頁面檔,讓特定部分的已安裝 RAM 可供立即使用。 因此,此計數器不會達到零,而且不一定能指出您的系統是否少於 RAM。

參考資料

位址窗口擴充功能