
我剛剛在新的 240GB SSD 上安裝了 Ubuntu 15.04,並立即註意到最終安裝上的 /dev/ubuntu-vg/swap_1 是 137GB。這似乎有點過分,甚至適得其反,但也許 Ubuntu 安裝程式選擇了這一點,因為機器有 128GB RAM。
有沒有人強烈意識到擁有約 140GB 的交換區是否有用,如果沒有,交換區的合適大小應該是多少?我確實運行 I/O 繁重的二進位。雖然這可能不相關,但我會注意到該機器是雙 CPU Xeon (E5)。
在查閱了 Terrance 建議的以下連結後,我很想將自動 ~140GB 的交換空間減少到 ~4GB,因為它佔用了安裝 Ubuntu 的 240GB SSD 的一半以上!
答案1
系統上有這麼多 RAM,實際上不需要大的交換分區。大部分需要的是從 RAM 中交換可能會弄髒並需要交換的信息,但 4GB 到 16GB 之間的任何位置都足夠了。
來自下面的連結的重要資訊。
答案2
雖然您需要的交換量始終取決於您的工作負載,但這肯定是過多的交換量,幾乎可以肯定可以歸因於過於簡單的「交換 = RAM * x」類型的計算。
簡短的回答:在我看來,4GB 交換幾乎總是綽綽有餘。
長答案:交換總是旨在取代系統運作的時間不正常地- 也就是說,進程使用的 RAM 接近或超過了您擁有的實體 RAM 量。如果您正在運行的進程使用非常可預測的 RAM 量(例如,您配置了特定堆限制的資料庫伺服器),那麼您的 RAM 使用將在某種程度上穩定,並且不太可能使用交換。如果您確定進程使用的 RAM 永遠不會接近或超過實體 RAM,您甚至不需要任何交換。但在典型的伺服器上,通常會隨機運行一些任務,這些任務會在一段時間內消耗大量內存,當這導致 RAM 使用量接近或超過物理 RAM 時,交換將介入並保護您的系統終止進程或耗盡足夠的快取空間來有效運作。
我說,即使在具有大量RAM 的系統上,4GB 交換空間通常也綽綽有餘,因為我覺得如果您的系統已經在接近物理RAM 的情況下工作,這足以讓1 或2 個相對耗內存的進程超過物理RAM。我感覺就好像如果您的記憶體不足超過 4GB,則存在更嚴重的錯誤,需要透過配置您的記憶體消耗大的進程來修復。佔用明顯超過 2GB RAM 的進程通常會被編程為透過配置或智慧了解剩餘的實體 RAM 來以某種方式自我限制其 RAM 使用。
當然,關於多少交換量「綽綽有餘」的其他觀點會有所不同。有人會說1GB、2GB、8GB等,有人會說不需要任何有那麼多實體記憶體(但我不同意)。
還有一件事:「休眠」需要足夠的交換空間來寫入所有進程內存,因此如果您的交換空間明顯小於實體 RAM,您將無法休眠。在具有 128GB RAM 的系統上,您可能無論如何都不想休眠 - 僅僅為了休眠的特權而保留那麼多交換空間不僅會顯著佔用您的磁碟空間(特別是對於 SSD),而且速度也會相當慢 -想像一下恢復時從磁碟加載約128GB,這會比正常啟動慢得多。