歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux中的SWAP交換分區

Linux中的SWAP交換分區

日期:2017/2/28 14:31:20   编辑:Linux教程

大多數 Linux 在系統安裝時都會提醒並建議你劃分一個 SWAP 交換分區,如果你是從 Windows 切換到 Linux 的新用戶,興許對這個 SWAP 會感到十分疑惑。

SWAP 交換分區到底是干什麼用的呢?我們是否真的需要劃一個 SWAP 分區呢?答案是:視情況而定!SWAP 分區在一些情況下可以提升 Linux 操作系統性能,但在某些情況下又會成為系統運行的瓶頸,下面我們就來詳細介紹下 Linux 中的 SWAP 交換分區。

存放內存溢出來的數據

如何擴展/刪除SWAP分區 http://www.linuxidc.com/Linux/2014-03/98311.htm

在OpenStack虛擬機實例中創建SWAP分區的一種方法 http://www.linuxidc.com/Linux/2013-07/87380.htm

Linux 中交換空間 (SWAP)應該分多大才好? http://www.linuxidc.com/Linux/2013-05/84252.htm

Linux SWAP 分區建立及釋放內存 http://www.linuxidc.com/Linux/2013-03/81890.htm

Linux SWAP 交換分區配置說明 http://www.linuxidc.com/Linux/2013-03/82008.htm

Ubuntu 12.04的SWAP設置 http://www.linuxidc.com/Linux/2013-03/80208.htm

簡單來說,SWAP 交換分區是用來存放內存溢出來的數據。我們可以將內存想像成一個盆子,運行程序時的數據都被作為水放在內存這個盆子當中。如果你運行太多的應用程序,導致水過多而(內存這個)盆子已經裝不下時,就會將多於部分的水裝到 SWAP 交換分區當中。

從理論上講,SWAP 交換分區增大了可以使用的內存空間,但事實並非如此。因為內存的數據交換速度是非常快的,而 SWAP 交換分區是把物理磁盤當成內存的載體,也就是說:雖然使用 SWAP 可以讓我們運行更多或更大的應用程序了,但物理磁盤的數據交換速度遠比不上物理內存,因此也就可能造成運行性能的下降。而對硬盤特別是 SSD 磁盤的頻繁讀寫,也會造成磁盤壽命的縮短和性能下降。

其實,我們可以把 SWAP 交換分區比喻成 Windows 中的 pagefile 頁面文件,但兩者在技術實現上仍有許多差異。

SWAP優先級

SWAP 交換分區會將內存中較少使用的數據移到磁盤當中,從而將更多的內存空間騰出來給其它的重要應用,也就是說:內存中較少使用的數據會被移動 SWAP 分區。

“較少使用”其實取決於“swappiness”阈值,在 Linux 中其實是一個可配置項。較高在 swappiness 值意味著數據更有可能被移到 SWAP 分區,較低的 swappiness 表示數據不太可能被移到 SWAP 分區。

SWAP與Linux休眠

最後還有一點需要注意:Linux 系統休眠的數據是存儲到 SWAP 交換分區中的,也就是說如果系統沒有配置 SWAP 交換分區,在 Linux 上是無法進行休眠的。

你是否需要SWAP分區呢?

你有必要為自己的 Linux 劃一個 SWAP 分區嗎?SWAP 交換分區對你來說是必要的嗎?絕對不是! Linux 系統不配置 SWAP 也可以運行得很好,是否需要劃分 SWAP 分區也有如下幾個優缺點:

優點:

  • 內存用完時,提供更多運行空間
  • 可以休眠

缺點:

  • SWAP對磁盤的占用設定好之後是固定的,無法動態調整
  • 增加了磁盤的讀寫次數和損耗幾率
  • 不一定提高性能(詳細解釋見下文)

SWAP起反作用的情況

開啟 SWAP 交換分區也並非問題能提升 Linux 性能,在某些情況下使用 SWAP 可能比不使用更糟。

如果你在一台1GB內存和5400轉硬盤的上網本上安裝了 Linux,只需要多打開幾個浏覽器標簽並多開幾個應用就會造成內存占完而開始使用 SWAP 交換分區。由於硬盤只有5400轉,隨後便開始出現性能瓶頸。這是因為硬盤轉速太慢,而又有大量的數據需要訪問到 SWAP 交換分區,所以會造成機器越來越慢。在此時,我們通常需要重啟系統來完全清除 SWAP 的內容。

關於SWAP的建議

  • 如果你需要 Linux 休眠功能,那麼當然就要劃分 SWAP 分區。該分區一般為你內存大小外加 10-25%
  • 如果你的內存小於4GB,並且希望得到小的性能提升(至少7200轉磁盤),可以劃分一個交換分區
  • 如果你的磁盤轉速小於7200轉,建議不要劃分 SWAP 交換分區

更改Swappiness

我們可以直接在 /etc/sysctl.conf 文件中對 swappiness 值進行編輯,在該文件中找到 vm.swappiness 並對其值進行更改(最好是10),如果你沒找到這個參數,可以直接在文件末尾添加:

1 vm.swappiness=10

該值主要表示我們希望 Linux 從內存與 SWAP 分區進行數據交換的強度,值為 10 則表示當內存占用到 90% 時開始將數據寫入 SWAP。Ubuntu 的默認 swappiness 值為 60,這表示當內存占用到 40% 時開始將數據寫入 SWAP。

Copyright © Linux教程網 All Rights Reserved