如果有足夠的物理 RAM,有什麼理由不禁用 Windows 頁面文件?

問 14 年零 1 個月前
觀看 次數 29,000 次
 
37

禁用 Windows 頁面文件的問題已經討論了不少,例如這裏這裏這裏人們繼續支持這樣的答案:“即使你有足夠的 RAM,你也不應該禁用你的頁面文件”,但我還沒有看到任何具體的、可驗證的理由來支持這個建議。據我所知,如果您永遠不需要從頁面文件中讀取數據(因爲您有足夠的 RAM),那麼啓用它後性能只會更差,因爲 Windows 會先發制人地寫入它。最好的情況下,性能是相同的。我看不出如何通過寫入您永遠不需要讀取的數據來改進它。

所以我的問題是:

假設我有足夠的物理 RAM 來完成我所做的一切,我有什麼理由不應該禁用頁面文件嗎?

假設 Windows 的版本是 Windows XP x64 SP2 或 Windows Server 2003 x64 SP2(相同)。如果 Windows Server 2008 x64 有所不同,我也有興趣聽到這個問題的答案。我正在從好的來源中尋找具體、客觀的原因,而不僅僅是意見。諸如“這裏是使用和不使用頁面文件完成的基準測試,即使有足夠的 RAM,使用頁面文件的結果也更好”或“根據這篇 MS 知識庫文章,如果禁用頁面文件,則會出現問題 X”。

到目前爲止,我看到提到的唯一原因是:

  • 即使您認爲自己有足夠的 RAM,您也可能會用完。好吧,但就這個問題而言,我們假設我有足夠的東西。也許我只讀過電子郵件,而且我有 16GB 內存。或者128GB。或者 1TB。或者其他什麼——但這對於我 100% 所做的事情、100% 時間來說已經足夠了。另一種思考方式是:如果我有x MB 物理 RAM 和y MB 頁面文件,並且在該配置中我從未用完 RAM,那麼在性能方面,使用x+y MB 物理 RAM 並且沒有頁面文件?
  • Windows“習慣”擁有頁面文件,並且它可能無法可靠地運行(來自瞭解 RAM 對整體系統性能的影響)這是相當模糊的,我發現很難相信,因爲 MS 提供了禁用頁面文件的選項。
  • Windows 比您更瞭解它在做什麼。不 - 它不知道我不會運行更多程序或加載更多數據,但我會。
  • 14
    這個話題幾乎在世界上所有與技術相關的論壇上都被討論得令人作嘔。結論:要麼做,要麼不做。如果它對你有用,那就太好了,繼續你的生活吧。如果沒有,那麼只需點擊幾下鼠標即可獲得虛擬內存。除此之外,我們在這裏浪費時間。最好還是討論一下最好的瀏覽器或防病毒軟件!:)(順便說一句,你的那個鏈接很好讀,推薦) 
    – 莫莉7244
     2009 年 8 月 26 日 23:49
  • 1
    @Molly你的意思是,你的鏈接?:)   2009 年 8 月 27 日 0:31
  • 3
    @Molly:如果您認爲這是浪費時間,那麼根本不要發表評論,只需忽略並繼續。爲什麼要批評這個問題?你可能不在乎,但其他人卻在乎。 
    – 馬斯
     2011 年 1 月 28 日 18:01
  • 2
    我感覺到你對此感到沮喪。我最近從 4GB DDR2 升級到 8GB DDR3。工作中的一個人說“確保你的交換大小爲 8-12GB”。爲什麼?我做的事情和以前一樣,現在我的物理內存是原來的兩倍;爲什麼我需要更多交換空間?   2011 年 2 月 12 日 21:14
  • 2
    不是主觀的 - 請仔細閱讀問題,特別是假設。我是從可靠來源詢問具體原因,而不是意見。   2011 年 2 月 17 日 4:55

16 個答案

15

這是一個微觀優化。關鍵是,在任何類似於正常操作的情況下,沒有理由這樣如果您的使用模式發生變化,它很容易傷害您。

在特殊情況下,它可能有意義,例如如果沒有本地可寫磁盤。

  •  
    我同意就保留它吧。   2009 年 9 月 10 日 2:57
  •  
    Windows 甚至可以從不可寫磁盤啓動嗎?   2009 年 9 月 10 日 9:39
  •  
    是的,但是您需要改變很多事情才能使其正常工作。例如,註冊表必須位於可寫磁盤上,因此您需要將其重定向到 ramdisk 等......   2009 年 9 月 14 日 10:19
  • 4
    當然,禁用交換是有原因的 - 第一個原因是,即使物理內存空閒,Windows 也會交換應用程序內存。因此,每當您離開計算機一小時後返回計算機時,您都會花費大量時間讓硬盤驅動器重新填充物理 RAM。說沒有理由禁用交換文件絕對是可怕的建議。 
    – PP。
     2010 年 1 月 15 日 17:40
  •  
    您是否確實注意到禁用頁面文件帶來的加速?我個人沒有,而且根據我所讀到的,大多數人也沒有。正如@Captain Segfault 所說,這是一個微優化。   2010 年 9 月 9 日 2:35
 
8

我已經運行具有 4GB RAM(Windows“官方”僅識別 3GB)的 Windows XP SP3 Professional 32 位筆記本電腦一年多了,沒有頁面文件。我圈子裏的人也一直試圖嚇唬我,說我不應該這樣做。

我使用內存非常密集的應用程序 - 在任何給定的時間點,我至少有兩臺虛擬機 (vmware),其上配置爲 100% 在 RAM 中運行,我至少有一個 Visual Studio 實例(其中有很多安裝的附加組件)、SQL Server 和一些“小型”應用程序,例如電子郵件、IM、IE 等。

除此之外,我還有一個永久的 256 MB Ramdisk。有時,我會在其他應用程序運行時使用 Adob​​e Photoshop。我也玩一些遊戲,包括 Quake3、Neverwinter Nights、Oblivion。

我沒有任何問題。

BlueNovember 請注意:我們的朋友非常客氣地詢問了客觀原因。因此,諸如“我懷疑......”之類的陳述是沒有根據的。發帖前請先了解清楚!休眠與分頁無關。它使用一個名爲 hiberfil.sys 的單獨文件,您可以在沒有頁面文件的情況下休眠。

PS:抱歉,夥計,我拒絕回到“正常”配置,這樣我實際上可以基準測試此設置的速度有多快,但只要看到硬盤活動導致的閃爍少得多,就非常令人欣慰。如果沒有別的原因,我會爲此禁用頁面文件,因爲當 HDD LED 不不斷閃爍時,至少您的計算機“感覺”更快。

不禁用頁面文件的唯一原因是如果您使用性能監視器 (PerfMon),因爲這取決於頁面文件並且至少需要 2 MB 頁面文件,否則以下對象的計數器將丟失:緩存、內存、對象、處理器和系統。

  • 1
    你總會發現有人傾向於告訴別人應該如何操作他們的計算機,從而助長了恐懼文化(“壞事”將會發生survivor2012.com 
    – 莫莉7244
     2009 年 9 月 10 日 3:02
  • 2
    呵呵。好一個。你會注意到我已經盡力避免這種情況。;-) 我只是描述我正在做的事情,將分析和接受留給讀者自由選擇。但我確實想嘗試消除這個神話:如果禁用頁面文件,你的電腦就會在你面前爆炸。 
    – 維爾
     2009 年 9 月 14 日 5:14
8

即使您可以將所有內容放入 RAM,也有很多理由保留頁面文件。

SF上的回答有125個贊,鏈接了很多可信的文章。一探究竟:

https://serverfault.com/questions/23621/any-benefit-or-detriment-from-removing-a-pagefile-on-an-8gb-ram-machine/23684#23684

  • 3
    雖然這一切可能都是真的,而且我肯定同意,但我很高興提供一個鏈接,微軟(那些花了很多時間思考這個問題的人:)明確建議禁用虛擬內存(我的 eee 電腦上幾乎沒有頁面文件近兩年了,早在 MS 發佈這些指南之前)。話雖如此,在具有現代硬盤驅動器和巨大高速緩存的臺式計算機上,這並沒有什麼區別。然而,每個人都有自己的。鏈接(PDF,第 10 頁):download.microsoft.com/download/2/0/a/... 
    – 莫莉7244
     2009 年 9 月 10 日 3:41
  • 3
    如果您的 eee 已使用 2 年,則它裝有第一代 SSD。禁用頁面文件將延長 SSD 的使用壽命,但顯然不是標準情況。   2009 年 9 月 10 日 11:14
  •  
    我沒有說標準程序,不是嗎?:) 我不會建議禁用頁面文件作爲“良好的計算實踐”,但是,如果有人想這樣做,那就讓他們吧。事實證明,儘管會發生各種“糟糕的事情”,但它一次又一次地正常工作,沒有出現任何問題。如果它不起作用,那麼只需點擊幾下即可獲得一個全新的頁面文件。如果您的硬盤驅動器/SSD 速度較慢,有一些程序可以讓您將系統內存分配爲硬盤驅動器緩存,以加快分頁速度。 
    – 莫莉7244
     2009 年 9 月 10 日 11:55
  •  
    我已經閱讀了該答案(事實上它已鏈接在我的問題中),這就是我發佈此問題的原因。   2009 年 9 月 16 日 4:44
 
8

從這個鏈接:

注意:Microsoft 強烈建議您不要禁用或刪除頁面文件。

要在 Windows XP 中禁用分頁文件,您應該至少擁有 768MB 的 RAM。

這是傑夫·阿特伍德對此的看法的鏈接。

  •  
    注意:我認爲這個數字太低了,在禁用頁面文件之前您應該擁有大量的內存,並且我確信您仍然會遇到各種問題。   2009 年 8 月 26 日 23:43
  •  
    不過,他們沒有給出該建議的原因 - 我懷疑這只是因爲大多數用戶不知道他們是否有足夠的 RAM,所以這是一個很好的“經驗法則”。至於分配不使用的內存的應用程序,該內存應該“保留”,而不是“提交”,因此它只佔用虛擬地址空間。如果他們確實提交了大量內存,他們不需要頁面文件,這並不能真正拯救我。   2009 年 8 月 27 日 0:29
  •  
    Jeff 博客文章的鏈接似乎已損壞。   2017 年 8 月 28 日 15:59
  • 1
    @艾薩克,已修復..   2017 年 8 月 29 日 16:44
5

我相信,如果您沒有頁面文件,那麼在出現 BSOD 的情況下,Windows 將無法寫入小型轉儲。這意味着您將無法使用適當的工具來分析問題。

如果您沒有遇到 BSOD,這可能不會打擾您,並且您當然可以足夠快地重新創建頁面文件,但爲什麼不做好準備呢?

4

我發現的最好的原因是頁面文件允許 Windows 使用更多的物理 RAM 作爲磁盤緩存,這可能比很少使用的內存頁面更好。Mark Russinovich 有一篇關於此的精彩文章,突破 Windows 的極限:虛擬內存,其中說道:

有些人認爲沒有分頁文件會帶來更好的性能,但一般來說,有分頁文件意味着 Windows 可以將修改列表上的頁面(代表未被主動訪問但尚未保存到磁盤的頁面)寫入到分頁文件,從而使該內存可用於更有用的目的(進程或文件緩存)。因此,雖然某些工作負載在沒有分頁文件的情況下可能會表現得更好,但一般來說,擁有分頁文件意味着系統可以使用更多的可用內存(不用擔心,如果沒有大的分頁文件,Windows 將無法寫入內核故障轉儲)足以容納它們)。

4

我運行的是 Windows XP,內存爲 4GB(3.5GB 可用)。我需要運行 Visual Studio 2008,它需要大量內存。我經常打開 3 到 4 個實例,每個實例佔用 500MB 或更多內存。

我對此非常惱火,因爲每當我需要快速關閉所有 Visual Studio 實例時,Windows 都會花很長時間才能關閉這些實例。花了3分鐘或更長時間。我意識到發生的情況是,即使有足夠的可用內存,Visual Studio 實例也會從 RAM 中分頁並進入頁面文件。當關閉應用程序時,它會將所有分頁數據加載回 RAM,然後將其關閉。本質上,它會在關閉實例之前將 2GB 數據從磁盤複製到內存中。

禁用分頁後,我注意到關閉多個 Visual Studio 實例時性能得到了巨大提升。它會佔用 100% 的 CPU 幾秒鐘,然後消失。現在可以在一分鐘內關閉 Windows,而不是幾分鐘。

但是,在啓動應用程序時,我沒有注意到任何性能提升,這是有道理的,因爲啓動時仍然必須從磁盤讀取數據。另外,我覺得禁用分頁後事情通常會更快。

另外,由於內存不足,我一年只遇到幾次程序崩潰的情況。通常,如果我打開太多程序,或者程序發瘋並開始瘋狂分配內存。

總之,我對禁用分頁感到非常滿意。Windows 中的內存管理非常糟糕。對於那些習慣於修改內存設置並意識到可能出現的問題的人,我建議這樣做。

2

與流行的觀點相反,頁面文件不僅僅是物理內存的廉價但緩慢的替代品。它旨在優化您所擁有的 RAM 的使用。

即使有 4GB RAM,您也可能沒有足夠的內存來保存所有內容。任務管理器中沒有任何內容可以揭示這一點。認識到這一點,Windows 設計者創建了一個系統,其中可執行代碼僅在需要時才被放入內存中,然後儘可能長時間地保留。如果系統發現這樣使用的內存有更好的用途,它將被重新分配。該系統自 1993 年發佈的 NT3.1 起就被 Microsoft 使用。自 1960 年代以來,它一直在大型系統中常規使用。

該系統適用於大多數形式的可執行代碼。但是修改後的數據必須寫入某個地方,即頁面文件,然後才能重新分配所使用的內存。頁面文件通常不用於存儲代碼,僅用於存儲數據。能夠調出代碼和數據使系統可以靈活地在必要時調出哪些內容。禁用頁面文件意味着只能重新分配用於代碼存儲的內存。所有修改的數據,即使是長時間未訪問且可能不再需要的數據,也必須永久保留在 RAM 中。但代碼分頁將像以前一樣繼續。缺少頁面文件,或者頁面文件太小,都會使系統失去平衡,並迫使 Windows 以次優方式進行分頁。這通常會影響性能。

  • 1
    你的第一句話聽起來很有希望,但其餘的答案最終還是老套的“你認爲你有足夠的內存,但你沒有”的論點。我認爲您基本上是說,在確定我需要多少 RAM 時,我沒有考慮代碼,只考慮了數據。一般來說,這是一個有效的觀點,但它並沒有回答這個問題。如果我有 x MB 物理 RAM 和 y MB 頁面文件,請參閱開頭部分... 另外,我不明白缺少頁面文件如何導致 Windows 分頁。   2010 年 7 月 23 日 0:08
  • 1
    您剛纔指出該系統自 1993 年以來一直在使用。您是否知道當時與現在相比有多少可用內存?我們談論的是 2-4MB 與 2-4GB,增加了 1000 倍。與此同時,硬盤的速度還沒有達到 1000 倍。因此,將 200MB 從 RAM 分頁到磁盤,然後再返回,確實非常昂貴!1993 年分頁 200KB 比現在分頁 200MB 便宜得多。 
    – 馬斯
     2011 年 1 月 28 日 13:47 
  •  
    @Mas:現在有SSD,並且有足夠的內存來關閉分頁(如果你確定你永遠不會填滿它)。   2011 年 2 月 2 日 15:46
1

如果您的內存達到最大,請求內存的一個或多個程序可能會突然崩潰。

這種風險將超過您可能獲得的任何性能收益。

  •  
    也就是說,如果您像問題所暗示的那樣有信心,那麼應該不會有太大問題。我還懷疑沒有設置頁面文件會阻止您休眠。   2009 年 8 月 26 日 23:55
  •  
    沒關係 - 它不會最大化。我們假設我有足夠的內存。順便說一句,我不認爲 Windows 會因藍屏而崩潰,除非 RAM 太少以至於操作系統本身無法容納。我在實踐中從未見過這種情況,但是,是的,我想如果您嘗試在 16MB RAM 上運行 XP,可能會發生這種情況。   2009 年 8 月 27 日 5:42
  •  
    是的,你不會藍屏,你只會得到某種內存不足的錯誤。   2009 年 9 月 10 日 2:54
1

我的建議是保留頁面文件,但在系統盤上手動將其修復爲較小的大小,例如128MB。

原因是一個實際的原因:Windows 確實希望有一個交換文件,並且如果沒有找到,通常會創建一個臨時的自動管理文件,從而消除了禁用它的任何便利。

此外,它會在某些操作中默默地失敗或行爲不當,例如藍屏死機、性能計數器、掛起/恢復/休眠,並且不知何故系統穩定性受到影響。所有這些都基於我的經驗,並且所有這些都隨着一個較小的頁面文件而消失。

請注意,交換文件很可能會在執行的前幾分鐘內被填充,在大多數情況下再也不會被觸及,因此您不會遭受交換文件通常產生的磁盤訪問損失。您可能會在會話中很快收到“內存不足”警報,您可以安全地忽略該警報(是的,交換已滿,那又怎樣?)

(我也非常不喜歡 superfetch,而是保留空閒內存以實現緩存效果)

1

一個沒有提到的答案是 Windows 使用頁面文件來存儲故障轉儲。藍屏計算機的功能將故障轉儲直接寫入磁盤上包含頁面文件的扇區(繞過 Windows 目前無法信任的文件系統驅動程序)。

如果沒有頁面文件,您將無法獲取故障轉儲信息。此外,如果您不使用頁面文件,它不會對您造成傷害,因此除了非常有限的一組場景之外,沒有理由將其關閉。

0

請考慮 SuperFetch 使用緩存加載剩餘內存,然後就清楚爲什麼我們不應該禁用頁面文件。串行任務(因爲多任務處理很糟糕)和緩存的應用程序啓動非常有用,因此以分頁爲代價讓 SuperFetch 工作是很好的。

  •  
    我不希望 Windows 決定我可能需要什麼。我不介意等待幾秒鐘來加載某些內容。我討厭的是,當我將應用程序置於焦點之外一段時間以執行其他操作,然後將該應用程序重新置於焦點中時,我必須等待 Windows 將應用程序從磁盤加載回內存。這對於佔用大量 RAM 的應用程序來說非常明顯。不過我發現這種行爲在 Windows 7 中有所改善。 
    – 馬斯
     2011 年 1 月 28 日 17:57
  •  
    @Mas:這是正常行爲,如果 SuperFetch 不存在的話,這將是無關緊要的。儘管如此,您仍然可以決定禁用 SuperFetch,但這不會加快將不活動的應用程序加載回內存的速度。如果非常明顯,您確定您的磁盤仍然處於良好狀態嗎?   2011 年 1 月 28 日 18:23 
  •  
    我的觀點是,我寧願讓我的應用程序在內存中準備好運行,而不是將它們換成 Super-Fetch 認爲我可能需要的東西。由於經常運行 Visual Studio 的多個實例,因此可能需要相當長的時間才能將這些實例加載回內存。 
    – 馬斯
     2011 年 2 月 2 日 15:08
  •  
    @Mas:您所描述的行爲不是我在幾臺計算機上看到的,並且 SuperFetch 也不會執行您所描述的操作。正如Coding Horror 文章中有關 SuperFetch 的描述“空高速緩存是浪費高速緩存”。此外,無需運行 Visual Studio 的多個實例,因爲您可以在一個解決方案的多個項目中擁有多個文件。如果您正在開發多個解決方案,那麼您可能需要考慮更改項目層次結構,因爲這不是推薦的工作方式。   2011 年 2 月 2 日 15:30 
  •  
0

如果你的問題是:

假設我有足夠的物理 RAM 來完成我所做的一切,並且

  • 我只執行一小部分固定任務,這些任務不是本地密集型文件訪問

  • 當所有這些任務與它們可以運行的最大可能的文件/數據以及 Windows 系統進程同時運行時,它所容納的 RAM 比安裝的 RAM 少

  • 並且環境中只會偶爾出現新的或意外的本地文件,並且訪問它們的速度並不重要

我有什麼理由不應該禁用頁面文件嗎?

你說是的,那就沒問題了。

嵌入式環境可能是最有可能應用的環境,例如收銀機操作系統安裝。

0

簡單的答案是,如果內存不足,Windows 就會變得很糟糕。

事情變得極其緩慢。

許多軟件包都存在內存泄漏,會慢慢消耗您的可用 RAM。

另外,Windows 使用一些 RAM 作爲硬盤驅動器的緩存。

除非你確實有足夠多的內存,否則最終將成爲一個問題。

0

根據我的個人經驗,禁用Windows頁面文件可能會導致隱藏的問題。

我有 32GiB 物理 RAM,並禁用頁面文件以避免不斷寫入 SSD。然後我玩3-8分鐘後總是崩潰Battlefield 5Call of Duty 16: MW我的遊戲只是隨機崩潰,沒有任何原因,頁面文件被禁用。

我認爲我的超頻 GPU、RAM 或 CPU 存在問題。然而,經過 5 個小時的調試,在我的硬盤上創建了 512MB 的頁面文件後,這個神奇的問題立即消失了。

Win10內存管理仍然存在一些問題。只是提供一下我的經驗供大家參考。

-1

頁面文件

我運行 32 位 XP,內存爲 4 GB(我知道,XP 只能看到 3GB,但它是交錯的,速度非常快),我想說兩點:

XP只能看到3GB內存。當我的機器已經有了這個文件時,頁面文件還有什麼意義呢?它正在保留永遠無法訪問的磁盤內存。除非它禁用了一些 RAM。所以你把辛苦賺來的錢花在了內存上,卻發現 XP 正在與磁盤約會。

如果您運行的是 XP 32 位且擁有 4GB 內存,請嘗試以下實驗:關閉頁面文件。重新啓動XP。刪除頁面文件。運行一些程序、Word、Excel、Chrome、IE Ex、看電影、播放音樂或電視。一切都應該運作良好。重新打開頁面文件,這次的大小非常小,比如 25 MB。重新啓動XP。運行一些程序、Word、Excel、Chrome、IE Ex、看電影、播放音樂或電視。您很快就會收到一條消息,指出虛擬內存不足。這證明 XP 即使不需要也使用頁面文件。檢查任務管理器性能選項卡(alt ctrl del)。峯值將遠低於總物理內存,那麼爲什麼 XP 使用頁面文件呢?爲什麼 XP 認爲內存不足?

從 DOS 和 Windows 98 時代開始,頁面文件就已經不合時宜了。如果您有足夠的內存,請將其刪除。

  • 4
    使用頁面文件根本不會禁用 RAM。雖然應用程序使用的 RAM 量可能不會超過(並且大多數 32 位應用程序無論如何都無法識別大地址),但它允許 Windows 將內容緩存到磁盤。如果您讓進程處於空閒狀態,則會將其寫入頁面文件,以便爲您實際使用的進程釋放更多內存。有時緩存可能不合適,但這就是原理。我建議您查找一些有關頁面文件如何工作以及它們到底做什麼的技術文檔。 
    – 蘇貝
     2010 年 9 月 9 日 4:22
  • 1
    David Read:您混淆了虛擬和物理尋址限制。您的 32 位 XP 肯定可以尋址超過 4 GB 的虛擬地址空間。每個進程只有 4 GB,但您可以有很多進程。您對“XP 即使不需要也使用頁面文件”的分析也是有缺陷的。事實上,XP 始終使用虛擬尋址,但這並不意味着它始終使用頁面文件。頁面文件只是允許同時存在更多的虛擬地址空間。如果您沒有,而您又需要它,程序就會崩潰。   2014 年 9 月 15 日 10:18

您必須登錄才能回答此問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章