一、什么是swappiness
swappines是Linux的一個內(nèi)核參數(shù)歉铝,控制系統(tǒng)在進(jìn)行swap時盈简,內(nèi)存使用相對權(quán)重。
那么系統(tǒng)在進(jìn)行swap時太示,系統(tǒng)做了什么柠贤?
系統(tǒng)swap時在做什么?
在Linux系統(tǒng)中类缤,當(dāng)物理內(nèi)存不足時臼勉,系統(tǒng)會拿出預(yù)先設(shè)定好的部分硬盤空間當(dāng)swap分區(qū)使用,從而解決內(nèi)存容量不足的情況餐弱。
當(dāng)某進(jìn)程向系統(tǒng)請求內(nèi)存發(fā)現(xiàn)不足時宴霸,系統(tǒng)會把內(nèi)存中暫時不用的數(shù)據(jù)交換出去,放在swap分區(qū)中膏蚓,這個過程稱為swap out 瓢谢。
當(dāng)某進(jìn)程又需要這些數(shù)據(jù)且系統(tǒng)發(fā)現(xiàn)還有空閑物理內(nèi)存時,又會把swap分區(qū)中的數(shù)據(jù)交換回物理內(nèi)存中驮瞧,這個過程稱為swap in 氓扛。
當(dāng)然,swap大小是有上限的论笔,一旦swap使用完采郎,操作系統(tǒng)會觸發(fā)OOM-Killer機(jī)制千所,把消耗內(nèi)存最多的進(jìn)程kill掉以釋放內(nèi)存。
可以理解為系統(tǒng)在硬盤上設(shè)置swap分區(qū)蒜埋,當(dāng)內(nèi)存不足了淫痰,把這部分硬盤當(dāng)作內(nèi)存來用。
二理茎、swappiness有什么用
swappiness參數(shù)值可設(shè)置范圍在0到100之間黑界。
此參數(shù)值越低,就會讓Linux系統(tǒng)盡量少用swap分區(qū)皂林,多用內(nèi)存朗鸠;參數(shù)值越高就是反過來,使內(nèi)核更多的去使用swap空間础倍。
CentOS系統(tǒng)此參數(shù)的默認(rèn)值是30烛占,表示當(dāng)內(nèi)存使用超過70%,系統(tǒng)開始使用swap分區(qū)沟启。
這里CDH推薦swappiness為10忆家,表示當(dāng)內(nèi)存使用率超過90%,系統(tǒng)開始使用swap分區(qū)德迹。
三芽卿、如何修改swappiness
查看swappniess
cat /proc/sys/vm/swappiness
臨時修改
echo 10 > /proc/sys/vm/swappiness
或
sysctl vm.swappiness=10
臨時修改,當(dāng)前系統(tǒng)的swappiness為10胳搞,但重啟后卸例,系統(tǒng)的swappiness繼續(xù)恢復(fù)默認(rèn)值。
永久修改
vim /etc/sysctl.conf
在配置文件中添加參數(shù)
vm.swappiness=10
此方法為永久修改swappiness分區(qū)的辦法肌毅。