自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux交換空間(swap space)的那些優(yōu)缺點(diǎn)

系統(tǒng) Linux
每次安裝Linux的時(shí)候,都會(huì)要求配置交換分區(qū),那么這個(gè)分區(qū)是干嘛的呢?不設(shè)置這個(gè)分區(qū)有什么后果?如果一定要設(shè)置,設(shè)置多大比較合適?本篇將試圖回答這些問題并盡量覆蓋所有swap相關(guān)的知識(shí)。

Linux交換空間(swap space)的那些優(yōu)缺點(diǎn)

每次安裝Linux的時(shí)候,都會(huì)要求配置交換分區(qū),那么這個(gè)分區(qū)是干嘛的呢?不設(shè)置這個(gè)分區(qū)有什么后果?如果一定要設(shè)置,設(shè)置多大比較合適?本篇將試圖回答這些問題并盡量覆蓋所有swap相關(guān)的知識(shí)。

下面的所有例子都在ubuntu-server-x86_64 16.04下執(zhí)行通過

什么是swap?

swap space是磁盤上的一塊區(qū)域,可以是一個(gè)分區(qū),也可以是一個(gè)文件,或者是他們的組合。簡(jiǎn)單點(diǎn)說,當(dāng)系統(tǒng)物理內(nèi)存吃緊時(shí),Linux會(huì)將內(nèi)存中不常訪問的數(shù)據(jù)保存到swap上,這樣系統(tǒng)就有更多的物理內(nèi)存為各個(gè)進(jìn)程服務(wù),而當(dāng)系統(tǒng)需要訪問swap上存儲(chǔ)的內(nèi)容時(shí),再將swap上的數(shù)據(jù)加載到內(nèi)存中,這就是我們常說的swap out和swap in。

為什么需要swap?

要回答這個(gè)問題,就需要回答swap給我們帶來了哪些好處。

  • 對(duì)于一些大型的應(yīng)用程序(如LibreOffice、video editor等),在啟動(dòng)的過程中會(huì)使用大量的內(nèi)存,但這些內(nèi)存很多時(shí)候只是在啟動(dòng)的時(shí)候用一下,后面的運(yùn)行過程中很少再用到這些內(nèi)存。有了swap后,系統(tǒng)就可以將這部分不這么使用的內(nèi)存數(shù)據(jù)保存到swap上去,從而釋放出更多的物理內(nèi)存供系統(tǒng)使用。
  • 很多發(fā)行版(如ubuntu)的休眠功能依賴于swap分區(qū),當(dāng)系統(tǒng)休眠的時(shí)候,會(huì)將內(nèi)存中的數(shù)據(jù)保存到swap分區(qū)上,等下次系統(tǒng)啟動(dòng)的時(shí)候,再將數(shù)據(jù)加載到內(nèi)存中,這樣可以加快系統(tǒng)的啟動(dòng)速度,所以如果要使用休眠的功能,必須要配置swap分區(qū),并且大小一定要大于等于物理內(nèi)存
  • 在某些情況下,物理內(nèi)存有限,但又想運(yùn)行耗內(nèi)存的程序怎么辦?這時(shí)可以通過配置足夠的swap空間來達(dá)到目標(biāo),雖然慢一點(diǎn),但至少可以運(yùn)行。
  • 雖然大部分情況下,物理內(nèi)存都是夠用的,但是總有一些意想不到的狀況,比如某個(gè)進(jìn)程需要的內(nèi)存超過了預(yù)期,或者有進(jìn)程存在內(nèi)存泄漏等,當(dāng)內(nèi)存不夠的時(shí)候,就會(huì)觸發(fā)內(nèi)核的OOM killer,根據(jù)OOM killer的配置,某些進(jìn)程會(huì)被kill掉或者系統(tǒng)直接重啟(默認(rèn)情況是優(yōu)先kill耗內(nèi)存最多的那個(gè)進(jìn)程),不過有了swap后,可以拿swap當(dāng)內(nèi)存用,雖然速度慢了點(diǎn),但至少給了我們一個(gè)去debug、kill進(jìn)程或者保存當(dāng)前工作進(jìn)度的機(jī)會(huì)。
  • 如果看過Linux內(nèi)存管理,就會(huì)知道系統(tǒng)會(huì)盡可能多的將空閑內(nèi)存用于cache,以加快系統(tǒng)的I/O速度,所以如果能將不怎么常用的內(nèi)存數(shù)據(jù)移動(dòng)到swap上,就會(huì)有更多的物理內(nèi)存用于cache,從而提高系統(tǒng)整體性能。

swap的缺點(diǎn)?

上面介紹了swap的優(yōu)點(diǎn),那swap的缺點(diǎn)呢?swap是存放在磁盤上的,磁盤的速度和內(nèi)存比較起來慢了好幾個(gè)數(shù)量級(jí),如果不停的讀寫swap,那么對(duì)系統(tǒng)的性能肯定有影響,尤其是當(dāng)系統(tǒng)內(nèi)存很吃緊的時(shí)候,讀寫swap空間發(fā)生的頻率會(huì)很高,導(dǎo)致系統(tǒng)運(yùn)行很慢,像死了一樣,這個(gè)時(shí)候添加物理內(nèi)存是唯一的解決辦法。

由于系統(tǒng)會(huì)自動(dòng)將不常用的內(nèi)存數(shù)據(jù)移到swap上,對(duì)桌面程序來說,有可能會(huì)導(dǎo)致最小化一個(gè)程序后,再打開時(shí)小卡一下,因?yàn)樾枰獙wap上的數(shù)據(jù)重新加載到內(nèi)存中來。

到底要不要swap?

上面介紹了什么是swap以及它們的優(yōu)缺點(diǎn),那么到底要不要配置swap呢?答案是:看情況。

下面分別討論內(nèi)存不夠用、內(nèi)存勉強(qiáng)夠用和內(nèi)存很充裕這三種情況下服務(wù)器和桌面環(huán)境對(duì)swap的選擇。

內(nèi)存不夠用

不管是桌面還是服務(wù)器,當(dāng)物理內(nèi)存明顯不夠用,而又想跑程序的話,添加swap是唯一的選擇,慢點(diǎn)總比不能工作強(qiáng)。

內(nèi)存勉強(qiáng)夠用

建議配置swap,這樣內(nèi)核會(huì)將不常用的數(shù)據(jù)從內(nèi)存移到swap上,從而有更多的物理內(nèi)存供系統(tǒng)調(diào)用,提升系統(tǒng)性能,同時(shí)也避免因偶爾的物理內(nèi)存不夠造成進(jìn)程異常退出,提升系統(tǒng)穩(wěn)定性,但對(duì)服務(wù)器來說,一定要限制或者監(jiān)控swap空間的使用情況,當(dāng)出現(xiàn)swap空間使用超預(yù)期或者swap in/out頻繁時(shí),要及時(shí)采取措施,不然對(duì)性能影響很大

內(nèi)存充裕

理論上來說,如果物理內(nèi)存足夠多并且不需要休眠功能,那swap就沒什么用,可關(guān)鍵問題是我們很難保證物理內(nèi)存在任何情況下都?jí)蛴?,因?yàn)榭傆幸庀氩坏降那闆r發(fā)生,比如某些進(jìn)程耗內(nèi)存超預(yù)期,服務(wù)器壓力超預(yù)期,內(nèi)存泄漏等。

在內(nèi)存充裕的這種情況下,如果發(fā)生異常,swap能幫到我們嗎?

桌面環(huán)境

一般不會(huì)開什么監(jiān)控功能,所以也沒法提前預(yù)知內(nèi)存使用異常,當(dāng)內(nèi)存被用光的時(shí)候,分兩種情況:

  • 配置了swap:在系統(tǒng)變慢的時(shí)候能感覺到,可能還有機(jī)會(huì)殺掉一些進(jìn)程和保存當(dāng)前工作進(jìn)度,當(dāng)然也會(huì)出現(xiàn)慢的想砸電腦的情況,不過在磁盤如此廉價(jià)的情況下,浪費(fèi)點(diǎn)磁盤空間換取這樣的一個(gè)機(jī)會(huì)還是值得的。
  • 沒有配置swap:內(nèi)核的OOM killer被觸發(fā),可能連保存工作進(jìn)度的機(jī)會(huì)都沒有。

服務(wù)器環(huán)境

服務(wù)器一般都會(huì)配置監(jiān)控程序,當(dāng)內(nèi)存用量達(dá)到一個(gè)閾值的時(shí)候告警或者會(huì)自動(dòng)重啟異常的進(jìn)程。但如果沒有監(jiān)控呢?當(dāng)內(nèi)存被用光的時(shí)候,分兩種情況:

  • 配置了swap:這時(shí)服務(wù)器還能提供服務(wù),但性能會(huì)降低好幾個(gè)檔次,直到最終處于幾乎死機(jī)狀態(tài),并且這一過程將持續(xù)很長(zhǎng)一段時(shí)間,對(duì)服務(wù)器來說是個(gè)災(zāi)難;所以配置swap只能讓服務(wù)再茍延殘喘一會(huì)兒,然后就是長(zhǎng)時(shí)間的服務(wù)中斷(比如原來是每秒處理1000個(gè)請(qǐng)求的服務(wù)器,由于頻繁使用swap,導(dǎo)致現(xiàn)在每秒只能處理50個(gè)請(qǐng)求,站在系統(tǒng)角度,進(jìn)程還在運(yùn)行,但是在業(yè)務(wù)角度服務(wù)已經(jīng)幾乎中斷了)。
  • 沒配置swap:這時(shí)內(nèi)核的OOM killer被觸發(fā),在默認(rèn)配置下,耗內(nèi)存的進(jìn)程會(huì)被優(yōu)先kill掉,這種進(jìn)程一般就是我們的業(yè)務(wù)進(jìn)程,這時(shí)守護(hù)進(jìn)程就會(huì)自動(dòng)重啟該業(yè)務(wù)進(jìn)程(沒有守護(hù)進(jìn)程?開什么玩笑),這種情況只會(huì)造成服務(wù)中斷一會(huì)會(huì)兒(取決于進(jìn)程重啟的時(shí)間),不會(huì)出現(xiàn)上面因配置了swap而導(dǎo)致性能很差且服務(wù)持續(xù)中斷的情況。就算OOM killer沒有kill掉預(yù)期的進(jìn)程,我們通過測(cè)試也能發(fā)現(xiàn),然后將OOM killer配置成重啟系統(tǒng),那也比配置了swap在那里茍延殘喘的好。

從上面可以看出,對(duì)服務(wù)器來說,似乎不配置swap更好,可以讓有問題的進(jìn)程盡快重啟,縮短業(yè)務(wù)受影響的時(shí)間。

并且,就算沒有配置監(jiān)控程序,我們還有cgroups中的內(nèi)存控制模塊,可以控制一組進(jìn)程所能使用的***內(nèi)存數(shù),當(dāng)超過這個(gè)數(shù)的時(shí)候,可以觸發(fā)相應(yīng)的行為,比如重啟進(jìn)程等。

總的來說,對(duì)于桌面環(huán)境來說,一般內(nèi)存沒有服務(wù)器端那么充裕,并且由于使用場(chǎng)景原因,會(huì)打開很多不同類型的GUI窗口,但前臺(tái)的進(jìn)程只有一個(gè),大部分都是在后臺(tái)待命,所以配置swap對(duì)提升性能還是有必要的;對(duì)于服務(wù)器來說,配置的內(nèi)存都比較充裕,啟動(dòng)起來的進(jìn)程也都是要干活的進(jìn)程(不然就不應(yīng)該被啟動(dòng)起來),并且也沒有休眠的需求,再加上有了cgroups之后,可以更輕松的限制進(jìn)程的內(nèi)存使用,個(gè)人認(rèn)為配置swap基本沒什么必要了,看看coreos,默認(rèn)就沒有swap。

swap大小配置多少比較合適?

既然配置swap對(duì)桌面系統(tǒng)有幫助,那么配置多少大小的swap比較合適呢?下面是ubuntu給出的建議:

  • 當(dāng)物理內(nèi)存小于1G且不需要休眠時(shí),設(shè)置和內(nèi)存同樣大小的swap空間即可;當(dāng)需要休眠時(shí),建議配置兩倍物理內(nèi)存的大小,但***值不要超過兩倍內(nèi)存大小
  • 當(dāng)物理內(nèi)存大于1G且不需要休眠時(shí),建議大小為round(sqrt(RAM)),其中RAM為物理內(nèi)存大小;當(dāng)需要休眠時(shí),建議大小是RAM+round(sqrt(RAM)),但***值不要超過兩倍內(nèi)存大小
  • 如果兩倍物理內(nèi)存大小的swap空間還不夠用,建議增加內(nèi)存而不是增加swap

下面是詳細(xì)的不同物理內(nèi)存情況下的建議,***列是物理內(nèi)存的大小,第二列和第三列是不需要和需要休眠兩種情況下推薦的大小,第四列是不要超過的***值 

 物理內(nèi)存(MB)  不需要休眠  需要休眠  ***值
 256          256       512     512
 512          512       1024    1024
 1024         1024      2048    2048

物理內(nèi)存(GB)  不需要休眠  需要休眠  ***值
  1          1         2        2
  2          1         3        4
  3          2         5        6
  4          2         6        8
  5          2         7        10
  6          2         8        12
  8          3         11       16
  12         3         15       24
  16         4         20       32
  24         5         29       48
  32         6         38       64
  64         8         72       128
  128        11       139       256 

怎么配置swap?

當(dāng)我們確定好配置多大的swap空間后,具體應(yīng)該怎么配置呢?當(dāng)然可以在系統(tǒng)安裝的時(shí)候分配好,但如果對(duì)安裝時(shí)分配的大小不滿意,我們還可以在后面進(jìn)行調(diào)整。在這里將不介紹安裝的時(shí)候怎么配,只介紹如何往系統(tǒng)中添加更多的swap空間。

Linux下有兩種類型的swap空間,swap分區(qū)和swap文件,他們有各自的特點(diǎn):

  • swap分區(qū)上面由于沒有文件系統(tǒng),所以相當(dāng)于內(nèi)核直接訪問連續(xù)的磁盤空間,效率相對(duì)要高點(diǎn),但由于swap分區(qū)一般安裝系統(tǒng)時(shí)就分配好了了,后期要縮減空間和擴(kuò)容都很不方便。
  • swap文件放在指定分區(qū)的文件系統(tǒng)里面,所以有可能受文件系統(tǒng)性能的影響,但據(jù)說2.6版本以后的內(nèi)核可以直接訪問swap文件對(duì)應(yīng)的物理磁盤地址,相當(dāng)于跳過了文件系統(tǒng)直接訪問磁盤,不過如果swap文件在磁盤上的物理位置不連續(xù)時(shí),還是會(huì)對(duì)性能產(chǎn)生不利影響,但其優(yōu)點(diǎn)就是靈活,隨時(shí)可以增加和移除swap文件。

查看系統(tǒng)中已經(jīng)配置的swap

使用命令swapon -s即可查看系統(tǒng)中在用的swap

  1. dev@dev:~$ swapon -s 
  2. Filename                Type        Size    Used    Priority 
  3. /dev/dm-1               partition   524284  0       -1  

如果配置有多個(gè)swap分區(qū)或者文件的話,這里將會(huì)有多行,每行代表一個(gè)正在被系統(tǒng)使用的swap分區(qū)或文件,下面是每個(gè)字段的意思:

  • Filename:如果swap類型是分區(qū),這里將是分區(qū)的路徑,如果swap類型是文件,這里將是文件的路徑
  • Type:swap的類型,partition代表這是一個(gè)swap分區(qū),file代表這是一個(gè)swap文件
  • Size:swap的大小,單位是k,這里524284表示的差不多是512M
  • Used:已經(jīng)被使用的大小,這里0表示還沒有被使用到
  • Priority:優(yōu)先級(jí),優(yōu)先級(jí)高的swap將會(huì)被優(yōu)先使用,同等優(yōu)先級(jí)的swap將會(huì)被均勻的使用(round-robin算法),優(yōu)先級(jí)可以通過“swapon -p”命令來設(shè)置

查看系統(tǒng)中swap in/out的情況

并不是swap空間占用多就一定性能下降,真正影響性能是swap in和out的頻率,頻率越高,對(duì)系統(tǒng)的性能影響越大,我們可以通過vmstat命令來查看swap in/out的頻率

#參數(shù)2表示每?jī)擅虢y(tǒng)計(jì)一次,si和so兩列就是每秒swap in和out的次數(shù)

  1. #參數(shù)2表示每?jī)擅虢y(tǒng)計(jì)一次,si和so兩列就是每秒swap inout的次數(shù) 
  2. dev@ubuntu:~$ vmstat 2 
  3. procs------------memory--------------swap----io-----system-----------cpu----- 
  4.  r b    swpd  free  buff cache      si so   bi bo   in  cs      us sy id wa st 
  5.  0 0    70232 75620 7940 209476     0  0    0  0    111 180     0  1  99 0  0 
  6.  0 0    70232 75620 7940 209476     0  0    0  0    116 186     1  1  99 0  0 
  7.  0 0    70228 75620 7940 209476     2  0    2  0    120 193     1  1  98 1  0 
  8.  0 0    70228 75620 7940 209476     0  0    0  0    117 186     0  0  100 0 0 
  9.  0 0    70228 75620 7940 209476     0  0    0  0    113 184     0  1  99 0  0  

添加swap分區(qū)

在添加swap分區(qū)前,首先得有一個(gè)空閑的分區(qū),如果是一塊新的磁盤,可以用fdisk來創(chuàng)建一個(gè)新的分區(qū)用于swap。

注意:磁盤分區(qū)操作一定要小心,弄不好就會(huì)造成數(shù)據(jù)丟失、系統(tǒng)掛掉的后果。磁盤分區(qū)操作不是本篇要介紹的內(nèi)容,所以這里不會(huì)討論fdisk怎么用。

  1. #本篇使用的測(cè)試環(huán)境是虛擬機(jī),/dev/sdb是一塊新加的硬盤并且已經(jīng)用fdisk創(chuàng)建好了一個(gè)分區(qū) 
  2. #本例中將使用/dev/sdb1這個(gè)分區(qū) 
  3. dev@dev:~$ sudo fdisk -l /dev/sdb 
  4. Device     Boot Start     End Sectors Size Id Type 
  5. /dev/sdb1        2048 4194303 4192256   2G 83 Linux 
  6.  
  7. #創(chuàng)建swap分區(qū) 
  8. dev@dev:~$ sudo mkswap /dev/sdb1 
  9. Setting up swapspace version 1, size = 2 GiB (2146430976 bytes) 
  10. no label, UUID=d69621de-618a-4bea-9a96-b8e8b0d0ea40 
  11.  
  12. #查看系統(tǒng)中現(xiàn)在正在使用的swap,以便于和添加后做比較 
  13. dev@dev:~$ swapon -s 
  14. Filename                Type        Size    Used    Priority 
  15. /dev/dm-1                               partition   524284  0   -1 
  16.  
  17. #將新的分區(qū)加入到系統(tǒng)中 
  18. dev@dev:~$ sudo swapon /dev/sdb1 
  19.  
  20. #這時(shí)候可以看到新的swap分區(qū)已經(jīng)被加入到系統(tǒng)中了,并且優(yōu)先級(jí)比原來的要低 
  21. dev@dev:~$ swapon -s 
  22. Filename                Type        Size    Used    Priority 
  23. /dev/dm-1               partition   524284  0       -1 
  24. /dev/sdb1               partition   2096124 0       -2 
  25.  
  26. #為了保證系統(tǒng)重啟后會(huì)自動(dòng)加載我們新的swap分區(qū),需要修改/etc/fstab文件 
  27. dev@dev:~$ sudo sh -c 'echo "/dev/sdb1 none  swap    sw   0    0" >> /etc/fstab' 
  28. #查看一下,確保寫入成功,這里的***條是原來的系統(tǒng)的swap分區(qū),第二條是我們剛添加的 
  29. dev@dev:~$ grep swap /etc/fstab 
  30. /dev/mapper/dev--vg-swap_1 none            swap    sw              0       0 
  31. /dev/sdb1 none  swap    sw   0    0  

添加swap文件

添加swap文件就簡(jiǎn)單多了,也沒有分區(qū)操作那么有風(fēng)險(xiǎn)。

  1. #先創(chuàng)建一個(gè)新的512M的文件,用來作為swap文件,文件路徑可以隨便 
  2. #fallocate這個(gè)命令依賴于文件系統(tǒng),有些老的文件系統(tǒng)不支持這個(gè)命令,比如ext2, 
  3. #這種情況下可以用dd來實(shí)現(xiàn)同樣的效果: 
  4. #sudo dd if=/dev/zero of=/mnt/512MiB.swap bs=1024 count=524288 
  5. #fallocate和dd的區(qū)別在于: 
  6. #fallocate是先聲明這么多,然后在具體用到的時(shí)候文件系統(tǒng)才分配真正的物理磁盤空間,就是用一點(diǎn)分配一點(diǎn), 
  7. #而dd是一開始就實(shí)實(shí)在在的寫了512m的數(shù)據(jù)到物理磁盤空間。 
  8. #所以作為測(cè)試來說fallocate方便些,因?yàn)閯傞_始不用寫任何數(shù)據(jù),要快 
  9. dev@dev:~$ sudo fallocate -l 512m /mnt/512MiB.swap 
  10.  
  11. #修改文件的權(quán)限,避免其他用戶對(duì)這個(gè)文件進(jìn)行誤操作 
  12. dev@dev:~$ sudo chmod 600 /mnt/512MiB.swap 
  13.  
  14. #格式化為swap文件 
  15. dev@dev:~$ sudo mkswap /mnt/512MiB.swap 
  16.  
  17. #將新的文件加入到系統(tǒng)中 
  18. dev@dev:~$ sudo swapon /mnt/512MiB.swap 
  19.  
  20. #這時(shí)候可以看到新的swap文件已經(jīng)被加入到系統(tǒng)中了,類型為file 
  21. #這里可以看到由于優(yōu)先級(jí)***,***個(gè)swap分區(qū)/dev/dm-1已經(jīng)被使用了24K 
  22. dev@dev:~$ swapon -s 
  23. Filename                Type        Size    Used    Priority 
  24. /dev/dm-1               partition   524284  24      -1 
  25. /dev/sdb1               partition   2096124 0       -2 
  26. /mnt/512MiB.swap        file        524284  0       -3 
  27.  
  28. #從free命令的輸出可以看到,經(jīng)過前面兩輪添加swap分區(qū)和文件, 
  29. #現(xiàn)在系統(tǒng)的交換空間已經(jīng)變成3G(3144692K)了 
  30. dev@dev:~$ free 
  31.               total        used        free      shared  buff/cache   available 
  32. Mem:         500192       39112        9564        1996      451516      430820 
  33. Swap:       3144692          24     3144668 
  34.  
  35. #同樣為了保證系統(tǒng)重啟后會(huì)自動(dòng)加載我們新的swap文件,需要修改/etc/fstab文件 
  36. dev@dev:~$ sudo sh -c 'echo "/mnt/512MiB.swap none  swap    sw   0    0" >> /etc/fstab'  

注意:不是所有的文件系統(tǒng)都支持創(chuàng)建swap文件,如btrfs,在btrfs分區(qū)里創(chuàng)建swap文件將失敗。

取消所有的swap

如果經(jīng)過深思熟慮之后,確定不再需要swap,那么可以將所有的swap分區(qū)和文件從系統(tǒng)中移除,步驟和上面的剛好相反

  1. #停掉所有系統(tǒng)正在使用的swap 
  2. dev@dev:~$ sudo swapoff -a 
  3.  
  4. #swapon -s命令沒有任何輸出,free命令顯示swap空間為0,說明swapoff成功 
  5. dev@dev:~$ swapon -s 
  6. dev@dev:~$ free 
  7.               total        used        free      shared  buff/cache   available 
  8. Mem:         500192       35924      348888        2004      115380      433924 
  9. Swap:             0           0           0 
  10.  
  11. #當(dāng)然我們還需要修改/etc/fstab,否則下次重啟后,系統(tǒng)又會(huì)重新掛載相應(yīng)的swap分區(qū)和文件 
  12. #使用自己喜歡的編輯器,將/etc/fstab中跟swap相關(guān)的三行刪掉即可(本例中是三行,請(qǐng)根據(jù)實(shí)際情況調(diào)整)  

如何優(yōu)化swap性能?

怎么配置swap可以讓它的性能更好呢?

  • 盡量使用swap分區(qū),相對(duì)于swap文件來說,分區(qū)肯定是連續(xù)的物理磁盤空間,而swap文件有可能不是
  • 將swap分區(qū)和系統(tǒng)所在的分區(qū)放在不同的磁盤上,這樣就不會(huì)和系統(tǒng)盤搶同一個(gè)磁盤的I/O帶寬
  • 如果有多塊磁盤的話,可以在每個(gè)盤上創(chuàng)建一個(gè)swap分區(qū),并且將它們的優(yōu)先級(jí)設(shè)置的一樣,這樣內(nèi)核就會(huì)平均的訪問這些swap分區(qū),性能相當(dāng)于原來的N倍(這里N是磁盤的數(shù)量)

不過話又說回來了,如果頻繁的訪問swap的話,怎么優(yōu)化swap都沒用,跟內(nèi)存比還是低幾個(gè)數(shù)量級(jí),性能還是下降的厲害,如果不頻繁訪問swap的話,優(yōu)化swap又有啥意義呢?所以其實(shí)優(yōu)化swap性能的實(shí)際意義不大,這里了解一下就好。

配置swappiness

有時(shí)我們桌面環(huán)境確實(shí)配置了比較充裕的內(nèi)存,并且也配置了swap空間,這個(gè)時(shí)候就希望盡量減少swap空間的使用,避免對(duì)系統(tǒng)性能造成影響,Linux早就幫我們考慮到這種情況了,在2.6內(nèi)核中,增加了一個(gè)叫做swappiness的參數(shù),用于配置需要將內(nèi)存中不常用的數(shù)據(jù)移到swap中去的緊迫程度。這個(gè)參數(shù)的取值范圍是0~100,0告訴內(nèi)核盡可能的不要將內(nèi)存數(shù)據(jù)移到swap中,也即只有在迫不得已的情況下才這么做,而100告訴內(nèi)核只要有可能,盡量的將內(nèi)存中不常訪問的數(shù)據(jù)移到swap中。

Ubuntu的desktop和server的默認(rèn)配置都是60(可能會(huì)隨著版本變化),對(duì)于桌面環(huán)境來說,界面的響應(yīng)速度直接關(guān)系到系統(tǒng)的流暢程度,如果內(nèi)存比較充裕的話,可以將這個(gè)值設(shè)置的小一點(diǎn),這樣就盡可能的把數(shù)據(jù)留在內(nèi)存中,從而喚醒后臺(tái)界面程序會(huì)更快一些,Ubuntu desktop建議將該值設(shè)置為10,當(dāng)然大家可以根據(jù)swap空間的實(shí)際使用情況,任意調(diào)整這個(gè)參數(shù),直到自己滿意的水平為止。對(duì)于服務(wù)器來說,主要性能衡量標(biāo)準(zhǔn)是整體的處理能力,而不是具體某一次的響應(yīng)速度,能把更多的內(nèi)存用來做I/O cache可能效果更好,所以Ubuntu server建議保持60的默認(rèn)值。

  • 查看當(dāng)前系統(tǒng)中swappiness的值
  1. dev@dev:~$ cat /proc/sys/vm/swappiness 
  2. 60  
  • 修改當(dāng)前系統(tǒng)中swappiness的值
  1. dev@dev:~$ sudo sysctl vm.swappiness=10 
  2. vm.swappiness = 10 
  3. dev@dev:~$ cat /proc/sys/vm/swappiness 
  4. 10  

上面通過sysctl修改的swappiness值在系統(tǒng)重啟后會(huì)失效,要想重啟后繼續(xù)生效,需要修改配置文件/etc/sysctl.conf,將下面這行修改成10,如果文件中找不到這行的話,在文件末位加上這行就可以了

  1. vm.swappiness=10   
責(zé)任編輯:龐桂玉 來源: segmentfault
相關(guān)推薦

2010-11-23 13:57:50

MySQL獨(dú)立表空間

2009-11-24 16:42:17

SUSE交換空間swa

2010-05-24 14:50:20

Swap space

2019-04-16 13:12:52

2010-05-24 15:07:52

Swap space

2010-05-24 13:46:26

Swap文件

2010-05-24 15:15:38

Swap space

2010-05-24 13:13:25

Swap空間

2009-12-15 10:49:22

2021-10-09 09:52:17

云存儲(chǔ)公共云遷移

2010-05-24 09:11:24

swap空間

2010-05-24 15:03:12

Swap space

2009-10-23 13:03:15

2011-08-19 09:21:42

2010-04-30 10:59:11

Unix Swap

2015-07-17 10:02:15

Linux桌面環(huán)境

2012-07-13 15:29:49

2022-07-18 13:36:13

零信任網(wǎng)絡(luò)安全

2010-06-21 14:14:33

OSPF協(xié)議

2018-05-17 11:05:56

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)