在 8 GB RAM 機器上刪除頁面文件有什麼好處或壞處?
我在具有 8 GB RAM 的雙核 x64 AMD 上執行 Windows 7。
我什至需要頁面文件嗎?
刪除它會幫助還是損害性能?
如果這是伺服器還是台式機,會有所不同嗎?
Windows 7 與 Windows 2008 對頁面文件有影響嗎?
TL;DR 版本:讓 Windows 處理您的記憶體/頁面文件設置。與我們大多數係統管理員相比,MS 的人員在考慮這些問題上花費的時間要多得多*。***
許多人似乎認為 Windows 會按需將數據推送到頁面文件中。EG:某事需要大量記憶體,但沒有足夠的 RAM 來滿足需求,所以 Windows 在最後一刻開始瘋狂地將數據從 RAM 寫入磁碟,以便騰出 RAM 來滿足新的需求。
這是不正確的。引擎蓋下還有更多事情要做。一般來說,Windows 維護一個備份儲存,這意味著它希望查看記憶體中的所有內容以及磁碟上的某個位置。現在,當某些事情出現並需要大量記憶體時,Windows 可以非常快速地清除 RAM,因為該數據已經在磁碟上,可以在需要時將其分頁回 RAM。所以可以說頁面文件中的大部分內容也在RAM中。數據被搶先放置在頁面文件中以加快新的記憶體分配需求。
描述所涉及的具體機制需要很多頁(參見Windows Internals的第 7 章,並註意新版本即將推出),但有一些不錯的事情需要注意。首先,RAM 中的大部分內容本質上已經在磁碟上——例如從執行檔或 DLL 中獲取的程式碼。所以這不需要寫入頁面文件;Windows 可以簡單地跟踪這些位最初是從哪裡獲取的。其次,Windows 會跟踪 RAM 中最常使用的數據,因此會從 RAM 中清除最長未訪問的數據。
完全刪除頁面文件會導致更多的磁碟抖動。想像一個簡單的場景,其中一些應用程序啟動並需要 80% 的現有 RAM。這將迫使目前的可執行程式碼離開 RAM - 甚至可能是作業系統程式碼。現在,每當其他應用程序或作業系統本身(!!)需要訪問該數據時,作業系統都必須從磁碟上的備份儲存中將它們分頁,從而導致大量抖動。因為沒有頁面文件作為臨時數據的備份儲存,唯一可以分頁的是執行檔和 DLL,它們具有固有的備份儲存開始。
當然有很多資源/使用場景。您可能會遇到一種情況,在這種情況下刪除頁面文件不會產生不利影響,但這些只是少數。在大多數情況下,刪除或減少頁面文件會導致在資源利用峰值場景下的性能下降。
一些參考資料:
- Windows Internals 書籍(第4 版和第 5 版)
- 突破 Windows 的極限:物理記憶體
- 突破 Windows 的極限:虛擬記憶體
- Windows Vista 核心內部:第 1 部分
- Windows Vista 核心內部:第 2 部分
- Windows Vista 核心內部:第 3 部分
- 了解虛擬記憶體
- RAM、虛擬記憶體、頁面文件和所有這些東西(這裡有一個更長的版本)
- 記憶體不足綜合症,或者:為什麼我還需要頁面文件?
dmo 注意到Eric Lippert最近發表的一篇文章有助於理解虛擬記憶體(儘管與問題的關係不大)。我把它放在這裡是因為我懷疑有些人不會向下滾動到其他答案 - 但如果你覺得它有價值,你欠dmo投票,所以使用連結到達那裡!