題 如果我有大量的RAM,或者我應該將它移動到虛擬RAM驅動器,我應該禁用交換文件嗎?


想像一下,我有大量的RAM。比方說64GB。對於即使是遊戲的PC也是如此。現在,Windows中的頁面文件的默認位置在主OS驅動器上,無論是HDD還是SSD,它們通常更快,但仍然沒有RAM快。

有些東西告訴我,禁用硬盤上的頁面文件或創建虛擬RAM驅動器並讓頁面文件存在可能會使Windows將其所有虛擬內存移動到RAM,從而提高系統的性能,但我不是很了解區域,所以可能根本不是真的。

我嘗試了兩種方法,但我無法分析結果,以便在記憶事物中達到我的知識水平。

這會有用嗎?如果沒有,為什麼?


92
2017-09-11 08:34


起源


在RAM磁盤上有一個頁面文件永遠不會完成任何事情。您帶走了一定數量的可用內存並添加了一定數量的虛擬內存。空總和。只是沒有分頁文件。 - usr
在某些情況下,在託管交換文件的ram磁盤實際上是壓縮的情況下,在Linux上執行此操作是有道理的。看到: en.wikipedia.org/wiki/Zram。但是我不認為Windows有這樣的功能。 - Matt H
答案是肯定的,但有很多非信徒。 - Mehrdad
@ user367257創建一個ram磁盤來存儲您的頁面文件就像借給你的朋友10英鎊,這樣他就有足夠的錢讓你從他那裡借10英鎊。它可能在技術上是可能的,但你所完成的只是不必要地使一個無處的旅程複雜化。 - Rob Moir
我會(而且確實)只關閉一個SSD,因為你只有這麼多的寫入(即使它現在很多),有6GB。它運作良好。 - Ry-


答案:


無論你有多少RAM,你都希望系統能夠有效地使用它。由於兩個原因,根本沒有分頁文件迫使操作系統低效地使用RAM。首先,它不能使頁面可丟棄,即使它們在很長一段時間內都沒有被訪問或修改,這會迫使磁盤緩存更小。其次,它必須保留物理RAM來支持不太可能需要它的分配(例如,私有的,可修改的文件映射),導致你可以擁有足夠的免費物理RAM並且拒絕分配的情況避免過度使用。

例如,考慮一個程序是否為4GB文件製作可寫的私有內存映射。操作系統必須為此映射保留4GB的RAM,因為程序可以想像地修改每個字節,並且沒有地方可以存儲RAM。所以馬上就浪費了4GB的RAM(它可以用來緩存乾淨的磁盤頁面,但就是這樣)。

如果你想充分利用你的RAM,你需要有一個頁面文件,即使它從未使用過。它充當保險策略,允許操作系統實際使用它擁有的RAM,而不是必須保留它以獲得非常不可能的可能性。

設計操作系統行為的人並非傻瓜。具有分頁文件為操作系統提供了更多選擇,並且不會產生錯誤。

嘗試將頁面文件放入RAM中沒有意義。如果你有大量的RAM,那麼頁面文件就不太可能被使用(它只需要在那裡),所以它的設備速度並不特別重要。


132
2017-09-11 15:43



我反駁了這一點。但是你的最後評論:我運行2台不同的機器,沒有交換。如果您確切知道機器將如何使用,那就完全沒問題了。 - spudone
我懷疑ramdrive中的頁面文件最初是作為貨物崇拜“解決方法”,因為如果檢測到沒有頁面文件,某些軟件將拒絕啟動。 (我被告知Adobe的圖形/視頻工具可以做到這一點。) - Dan Neely
@DavidSchwartz您提供的信息在技術上是正確的,並且知道這些信息是很好的。但是你得出的結論是,你應該總是有一個頁面文件,無論你有多少RAM是不正確的,我堅持認為這不應該是接受的答案。 - Jason Wheeler
我只是不喜歡聽到“頁面文件是神奇的所以不要關閉它們或者你會後悔”當我知道在許多常見情況下你 能夠 關閉它們,並安全地看到性能的提高,因為每當MMS想要做某事時你不再將磁盤I / O增加100%或更高。我想听到本次辯論另一方的人們所說的“是的,有些情況下你可以關閉它們並減少可能導致顛簸的磁盤I / O”。我不是說頁面文件總是壞的,也許你可以說它們並不總是必要的。 - Fred Hamilton
我意識到,所有這一切都讓我感到憤怒的是,一方似乎在說“頁面文件從不做任何事情而是好事”,而另一方則是“頁面文件很糟糕”,然後人們在一邊或另一邊紮根。 “真相”是,在某些情況下,它們非常有用,甚至可以防止崩潰,在其他情況下,它們不是必需的,實際上可以降低性能。我很高興這是我最後的陳述,無論如何。活得長久而繁榮,@大衛施瓦茨。 - Fred Hamilton


你的假設完全正確。

內存管理算法非常複雜,無論如何都不是完美的。即使有足夠的備用RAM,也會發生交換。在某些系統上,比如 Linux,你可以控制 swappiness,對其他人你不能。通過在仍有足夠RAM的情況下交換數據,系統以自己的方式為可能耗盡RAM的情況做好準備。

因此,禁用交換功能可能會提高性能,因為您只會使用速度更快的RAM。

有一點要考慮(你已經提到過了) - 你需要有 足夠 RAM可以容納您正在執行的所有程序,否則您將面臨運行的風險 內存不足。在這種情況下,性能將下降,某些進程可能會被操作系統終止,系統可能會遇到崩潰/凍結。 (閱讀更多相關信息 這裡

在某些機器上,尤其是那些將交換文件保留在HDD而不是SSD上的機器上,禁用交換的效果非常明顯。在其他方面,它並不那麼明顯。但即使你沒有得到明顯的改進,以另一種方式考慮它,通過禁用交換,你將節省自己的SSD上的一些磁盤空間。

通過禁用交換,您還可以防止內存算法執行不必要的操作 - 將數據從RAM移動到交換,反之亦然 - 如果是SSD,這將防止過度磨損。無論如何,這將通過消除不必要的操作來改善性能。

另外,閱讀:


30
2017-09-11 08:55



@ChrisH你也可能無法將sql數據庫加載到文字處理器中,因為那些完全在RAM中運行:-) - TylerH
這個答案是錯誤的,包含許多錯誤的信息。但是,弄清楚為什麼這是錯誤的簡單方法是 - 設計操作系統記憶行為的人可能是世界上最聰明的人。他們為什麼要設計一個系統,以便為其提供更多選擇(交換的選項,如果,只有當它認為最好時)會使其性能變差?只有白痴會設計出這樣的系統。 - David Schwartz
@DavidSchwartz,我不知道開發內存管理算法的人是否聰明,這對原創主題有什麼影響。 OP已經詢問禁用交換是否可以提高性能,並且我已經解釋過它可以在某些條件下在其他條件下導致問題。回答你為什麼(?)的問題 - 我可以說,因為算法並不完美,用戶需要對它們進行微調。這就是Linux中存在swappiness參數的原因,這就是為什麼禁用交換的原因。 - Art Gertner
@smc OP的用例沒有什麼不尋常之處。操作系統的概念 沒有適當調整沼澤標準用例 完全是胡說八道。 (有關您不想這樣做的原因,請參閱我的回答。) - David Schwartz
假設給定算法將始終為用戶做出理想的決定是不完美的。他們根據程序員確定的重要參數設置決策。這可能與用戶需要發生的事情直接相關。 - Anaksunaman


你能安全地禁用頁面文件嗎?

如果耗盡可用內存(包括虛擬內存),系統將無法繼續保證確定性執行,並自行結束。在此之前,操作系統將執行各種其他操作,例如查殺使用過多內存的程序。我想說的是,內存總是有限的,每個操作系統都可以處理這個問題。因此,將總可用內存限制為64 GB不會損害Windows - 即使使用頁面文件,許多系統也不能超過8 GB,因為使用1或2 GB RAM時,頁面文件通常比6或7 GB小很多。 應該注意的是,只要你有大量未使用的RAM,維護頁面文件的操作系統的開銷將無法測量。

將頁面文件放在ramdisk上是否有意義?

為了增加可用內存,大多數(如果不是所有)高級操作系統都使用某種交換文件,它們佔用RAM中的一些內存並且暫時不被訪問,將內存寫入硬盤(swapfile aka 頁面文件),並從RAM中刪除內存,以便更快的內存可用。交換文件用於擴展內存的最大大小,超出可用RAM的大小。

因此,使用ramdisk(通過ramdisk的大小減少可用內存)來託管交換文件(通過交換文件的大小增加可用內存)將起作用,但它沒有多大意義。它不會提供比禁用頁面文件更多的內存,但它仍然需要係統運行分頁算法。


14
2017-09-11 08:52



但是如果頁面文件位於虛擬RAM驅動器上,則用於將一些兆字節從RAM複製到虛擬硬盤驅動器或從其返回的時間將減少。如果頁面文件被完全禁用,那麼根本就沒有浪費時間。它是否正確? - user1306322
正確。將RAM中的字節複製到ramdisk上的頁面文件是最快的頁面文件。但根本不復制更聰明。 - Peter
Swapfiles可以彌補RAM的不足。如果有足夠的RAM,則無需補償。您的操作系統仍將使用交換文件,因此在這種情況下關閉它會更快。
@Mast這是一個粗略的過度簡化。 Swapfiles也可用於有效使用RAM。 - David Schwartz
@DavidSchwartz也許,但這就是向我解釋最好的解釋。在大多數情況下,少量的交換文件總是在沒有交換文件的情況下。但是,我沒有足夠的資源來支持這一點。


重申別人所說的話,將交換機移到一個直接的RAM磁盤上是沒有意義的(最常見的情況見下文)。它實現了在某些時候,當系統缺乏空閒內存時,一些數據以相當低效的方式從RAM移動到RAM。

交換HDD / SSD實現了操作系統可以清除一些完全未使用的RAM頁面並使用釋放的空間用於例如文件緩存或其他系統緩衝區。您可能沒有意識到系統分配的RAM緩衝區較少,因為沒有頁面文件時沒有可用的虛擬內存;所以實際上你可能通過禁用交換來阻礙你的表現。

但是,一個 壓縮RAM磁盤作為交換驅動器一個“ZSWAP”驅動器,在邊緣情況下(通常可能只需要幾個額外的MB RAM來避免交換到HDD)可以通過在一定程度上提高RAM段的空間效率來實現。


8
2017-09-11 15:42



提及ZSWAP的+1。它通常用於某些移動平台,以及在OS X 10.9中使用(儘管除了交換之外)。 - James_pic
請注意,“壓縮的RAM磁盤作為交換驅動器”仍然存在這樣的問題:除了實際的頁面文件之外,它不會對所有“分頁文件”執行任何操作。 - Jamie Hanrahan


如果您沒有頁面文件,那麼在BSOD(崩潰)的情況下,Windows將無法寫入崩潰轉儲文件。這意味著您將無法使用適當的工具分析問題。

將頁面文件放在RAM中是無用的,因為它可能在崩潰中丟失。

有關詳細信息,請參閱Microsoft文章 了解崩潰轉儲文件


4
2018-02-07 20:55





對於Windows,從馬口:

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

https://blogs.technet.microsoft.com/markrussinovich/2008/11/17/pushing-the-limits-of-windows-virtual-memory/

  • 可用內存 - 因此雖然這建議使用虛擬內存,但它也表明您需要非常大量的RAM才能確保從沒有頁面文件/虛擬內存中受益。我有4GB RAM 128GB SSD沒有頁面文件,但我用它來瀏覽網頁和輸入文字文檔。

4
2018-03-04 11:32



從我個人的經驗教訓,以及我向所有新員工宣講的內容:只有兩條規則。 #1:永遠不要相信微軟。 #2 ..你沒有聽規則1,所以沒有規則2。 - Nick


不要禁用交換文件  它不僅適用於內存不足的情況。 關閉它沒有直接的性能提升,windows只在需要時才從中讀取,它會一直寫入,因此只要需要就準備就緒。

如果您的內存大小超過4GB,則可以將其減少到大約2 / 3rds的內存大小,因為它會存儲壓縮的內存映像。如果SSD上沒有空間,則可以將其放在較慢的硬盤驅動器上,而其他重型磁盤訪問不會被訪問。但是在某個地方擁有一個是有益的。

有關原因的詳細信息,請參閱此答案。 https://superuser.com/a/286476/4236


3
2017-09-11 15:28