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)有這么多的硬盤(pán)恨狈。但是你會(huì)分配到具有32 GB RAM的系統(tǒng)的交換大惺杌? 64GB禾怠?那將是一個(gè)荒謬的硬盤(pán)浪費(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)使用部分硬盤(pán)內(nèi)存并將其分配給正在運(yùn)行的應(yīng)用程序衣迷。
這聽(tīng)起來(lái)非常不錯(cuò),這意味著如果我們?nèi)绻峙?0GBSwap交換空間酱酬,系統(tǒng)或許可以同時(shí)運(yùn)行成百上千的應(yīng)用程序壶谒?是這樣么?大錯(cuò)特錯(cuò)I殴痢:共恕!
你知道的贵少,程序運(yùn)行速度十分重要呵俏;
RAM訪問(wèn)數(shù)據(jù)的大小為納秒級(jí)堆缘;
SSD訪問(wèn)數(shù)據(jù)(以微秒為單位)滔灶,而普通硬盤(pán)以毫秒為單位訪問(wèn)數(shù)據(jù);
這意味著RAM比SSD快1000倍吼肥,比普通HDD快100,000倍录平。
如果應(yīng)用程序過(guò)分依賴(lài)Swap交換空間,則其性能將下降缀皱,因?yàn)樗鼰o(wú)法以與RAM中相同的速度訪問(wèn)數(shù)據(jù)斗这。
因此,完成相同任務(wù)可能需要幾分鐘才能完成任務(wù)啤斗,而不需要花費(fèi)1秒鐘完成任務(wù)表箭。這將使應(yīng)用程序幾乎無(wú)用。這被稱(chēng)為計(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的硬盤(pán)。
分配幾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的這種方案淤井。
你更傾向于使用哪種方案呢布疼?