給Linux分配多少Swap空間才夠呢?

Swap交換大小應(yīng)該是多少?交換應(yīng)該是RAM大小的兩倍還是RAM大小的一半?如果我的系統(tǒng)有幾GB的RAM,我是否需要交換?
也許這些是關(guān)于在安裝Linux時(shí)選擇交換大小的最常見(jiàn)問(wèn)題。
這不是什么新鮮事。交換大小一直存在很多混亂。

Swap兩倍于內(nèi)存的時(shí)代已經(jīng)過(guò)去

很長(zhǎng)一段時(shí)間,推薦的交換大小是RAM大小的兩倍,但這條黃金法則不再適用于現(xiàn)代計(jì)算機(jī)。

我們的系統(tǒng)RAM大小高達(dá)128 GB,許多舊計(jì)算機(jī)甚至沒(méi)有這么多的硬盤。但是你會(huì)分配到具有32 GB RAM的系統(tǒng)的交換大小? 64GB?那將是一個(gè)荒謬的硬盤浪費(fèi),不是嗎?

在了解需要分配Swap空間應(yīng)該分配多大之前,讓我們先快速了解交換內(nèi)存的一兩件事。
這些有助于讓每個(gè)人真正理解為什么Linux需要Swap交換空間。

什么是Swap?Swap什么時(shí)候會(huì)被使用到?

我們都知道計(jì)算機(jī)系統(tǒng)在運(yùn)行的時(shí)候會(huì)使用到RAM(Random Access Memory),當(dāng)只有少數(shù)應(yīng)用程序在運(yùn)行時(shí),系統(tǒng)會(huì)使用可用的RAM進(jìn)行管理。

但是如果有很多很多的程序在運(yùn)行,那么就需要非常大容量RAM,這時(shí)候計(jì)算機(jī)RAM不夠,應(yīng)用程序就會(huì)崩潰。

當(dāng)RAM耗盡時(shí),Swap交換空間會(huì)被系統(tǒng)使用。當(dāng)RAM耗盡時(shí),Linux系統(tǒng)使用部分硬盤內(nèi)存并將其分配給正在運(yùn)行的應(yīng)用程序。

這聽(tīng)起來(lái)非常不錯(cuò),這意味著如果我們?nèi)绻峙?0GBSwap交換空間,系統(tǒng)或許可以同時(shí)運(yùn)行成百上千的應(yīng)用程序?是這樣么?大錯(cuò)特錯(cuò)!??!

你知道的,程序運(yùn)行速度十分重要;
RAM訪問(wèn)數(shù)據(jù)的大小為納秒級(jí);
SSD訪問(wèn)數(shù)據(jù)(以微秒為單位),而普通硬盤以毫秒為單位訪問(wèn)數(shù)據(jù);
這意味著RAM比SSD快1000倍,比普通HDD快100,000倍。

如果應(yīng)用程序過(guò)分依賴Swap交換空間,則其性能將下降,因?yàn)樗鼰o(wú)法以與RAM中相同的速度訪問(wèn)數(shù)據(jù)。
因此,完成相同任務(wù)可能需要幾分鐘才能完成任務(wù),而不需要花費(fèi)1秒鐘完成任務(wù)。這將使應(yīng)用程序幾乎無(wú)用。這被稱為計(jì)算術(shù)語(yǔ)中的顛簸。

Swap交換空間只是用來(lái)應(yīng)急的,所以它的分配要適量。

為什么需要Swap交換空間

以下是需要交換空間Swap的幾個(gè)原因

  • 如果系統(tǒng)的RAM小于1GB,就必須使用Swap交換空間,不然沒(méi)運(yùn)行幾個(gè)應(yīng)用程序,他們就會(huì)崩潰
  • 如果系統(tǒng)運(yùn)行了非常重的應(yīng)用程序,例如視頻制作軟件,使用Swap交換空間可以防止因?yàn)镽AM空間不夠用導(dǎo)致的軟件崩潰
  • 如果電腦休眠了,斷電RAM會(huì)被斷電;RAM沒(méi)有斷電記憶功能,因此要將這些內(nèi)容暫時(shí)存入Swap交換空間里,當(dāng)從休眠中恢復(fù)過(guò)來(lái)的時(shí)候,這些內(nèi)容會(huì)被重新讀入RAM,保證程序繼續(xù)運(yùn)行
  • 為了避免有些程序瘋狂的吃掉很多內(nèi)存,這個(gè)時(shí)候需要Swap來(lái)幫助我們規(guī)避這些風(fēng)險(xiǎn)

當(dāng)RAM很大的時(shí)候,需不需要分配很大的交換空間?

如果你的RAM有32GB或者64GB,你的系統(tǒng)可能永遠(yuǎn)都不會(huì)使用到這么多的交換分區(qū)。

我猜測(cè),如果你的系統(tǒng)有32GB的RAM,它或許至少有100GB的硬盤。
分配幾GB的交換空間應(yīng)該也無(wú)關(guān)痛癢,如果錯(cuò)誤的程序開(kāi)始濫用RAM,它將提供額外的“穩(wěn)定性”。

應(yīng)該分配多大的Swap交換空間

現(xiàn)在回到這個(gè)最大的問(wèn)題上,應(yīng)該給Linux分配多少Swap空間才夠。
答案是沒(méi)有一個(gè)確切的答案,不過(guò)倒是有一些建議,不同的人根據(jù)自己的實(shí)際情況分配交換空間的大小。

如果根據(jù)Red Hat的建議,他們建議是分配RAM 20%的換空間,也就是RAM是8GB,分配1.6GB交換空間。

CentOS建議

  • 如果RAM小于2GB,就分配和RAM同等大小的Swap交換空間。
  • 如果RAM大于2GB,就分配2GB交換空間

Ubuntu考慮到系統(tǒng)需要休眠,

  • 如果RAM小于1GB,Swap空間至少要和RAM一樣大,甚至是要為RAM的兩倍大小
  • 如果RAM大于1GB,Swap交換空間應(yīng)該至少等于RAM大小的平方根,并且最多為RAM大小的兩倍
  • 如果要休眠,Swap交換大小應(yīng)該等于RAM的大小加上RAM大小的平方根

Ubuntu建議的Swap分配表

Ram大小 Swap大小 激活Swap后合計(jì)大小
256MB 256MB 512MB
512MB 512MB 1GB
1GB 1GB 2GB
3GB 2GB 5GB
4GB 2GB 6GB
6GB 2GB 8GB
8GB 3GB 11GB
12GB 3GB 15GB
16GB 4GB 20GB
32GB 6GB 38GB
64GB 8GB 72GB
128GB 11GB 139GB

結(jié)語(yǔ)

事實(shí)上沒(méi)有一個(gè)真正確定的Swap交換空間分配大小,根據(jù)實(shí)際情況來(lái)吧,如果你不在乎多點(diǎn)交換空間,可以使用兩倍于RAM的這種方案。
你更傾向于使用哪種方案呢?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容