Linux 系統上交換空間的介紹

學習如何修改你的系統上的交換空間的容量,以及你到底須要多大的交換空間。性能

當今不管什麼操做系統交換Swap空間是很是常見的。Linux 使用交換空間來增長主機可用的虛擬內存。它能夠在常規文件或邏輯捲上使用一個或多個專用交換分區或交換文件。學習

典型計算機中有兩種基本類型的內存。第一種類型,隨機存取存儲器 (RAM),用於存儲計算機使用的數據和程序。只有程序和數據存儲在 RAM 中,計算機才能使用它們。隨機存儲器是易失性存儲器;也就是說,若是計算機關閉了,存儲在 RAM 中的數據就會丟失。測試

硬盤是用於長期存儲數據和程序的磁性介質。該磁介質能夠很好的保存數據;即便計算機斷電,存儲在磁盤上的數據也會保留下來。CPU(中央處理器)不能直接訪問硬盤上的程序和數據;它們必須首先複製到 RAM 中,RAM 是 CPU 訪問代碼指令和操做數據的地方。在引導過程當中,計算機將特定的操做系統程序(如內核、init 或 systemd)以及硬盤上的數據複製到 RAM 中,在 RAM 中,計算機的處理器 CPU 能夠直接訪問這些數據。操作系統

交換空間內存

交換空間是現代 Linux 系統中的第二種內存類型。交換空間的主要功能是當所有的 RAM 被佔用而且須要更多內存時,用磁盤空間代替 RAM 內存。資源

例如,假設你有一個 8GB RAM 的計算機。若是你啓動的程序沒有填滿 RAM,一切都好,不須要交換。假設你在處理電子表格,當添加更多的行時,你電子表格會增加,加上全部正在運行的程序,將會佔用所有的 RAM 。若是這時沒有可用的交換空間,你將不得不中止處理電子表格,直到關閉一些其餘程序來釋放一些 RAM 。文檔

內核使用一個內存管理程序來檢測最近沒有使用的內存塊(內存頁)。內存管理程序將這些相對不常用的內存頁交換到硬盤上專門指定用於「分頁」或交換的特殊分區。這會釋放 RAM,爲輸入電子表格更多數據騰出了空間。那些換出到硬盤的內存頁面被內核的內存管理代碼跟蹤,若是須要,能夠被分頁回 RAM。數據分析

Linux 計算機中的內存總量是 RAM + 交換分區,交換分區被稱爲虛擬內存.it

Linux 交換分區類型內存管理

Linux 提供了兩種類型的交換空間。默認狀況下,大多數 Linux 在安裝時都會建立一個交換分區,可是也可使用一個特殊配置的文件做爲交換文件。交換分區顧名思義就是一個標準磁盤分區,由 mkswap 命令指定交換空間。

若是沒有可用磁盤空間來建立新的交換分區,或者卷組中沒有空間爲交換空間建立邏輯卷,則可使用交換文件。這只是一個建立好並預分配指定大小的常規文件。而後運行 mkswap 命令將其配置爲交換空間。除非絕對必要,不然我不建議使用文件來作交換空間。(LCTT 譯註:Ubuntu 近來的版本採用了交換文件而非交換空間,因此我對於這種說法保留見解)

頻繁交換

當總虛擬內存(RAM 和交換空間)變得快滿時,可能會發生頻繁交換。系統花了太多時間在交換空間和 RAM 之間作內存塊的頁面切換,以致於幾乎沒有時間用於實際工做。這種狀況的典型症狀是:系統變得緩慢或徹底無反應,硬盤指示燈幾乎持續亮起。

使用 free 的命令來顯示 CPU 負載和內存使用狀況,你會發現 CPU 負載很是高,可能達到系統中 CPU 內核數量的 30 到 40 倍。另外一個狀況是 RAM 和交換空間幾乎徹底被分配了。

事實上,查看 SAR(系統活動報告)數據也能夠顯示這些內容。在個人每一個系統上都安裝 SAR ,並將這些用於數據分析。

交換空間的正確大小是多少?

許多年前,硬盤上分配給交換空間大小是計算機上的 RAM 的兩倍(固然,這是大多數計算機的 RAM 以 KB 或 MB 爲單位的時候)。所以,若是一臺計算機有 64KB 的 RAM,應該分配 128KB 的交換分區。該規則考慮到了這樣的事實狀況,即 RAM 大小在當時很是小,分配超過 2 倍的 RAM 用於交換空間並不能提升性能。使用超過兩倍的 RAM 進行交換,比實際執行有用的工做的時候,大多數系統將花費更多的時間。

RAM 如今已經很便宜了,現在大多數計算機的 RAM 都達到了幾十億字節。個人大多數新電腦至少有 8GB 內存,一臺有 32GB 內存,個人主工做站有 64GB 內存。個人舊電腦有 4 到 8GB 的內存。

當操做具備大量 RAM 的計算機時,交換空間的限制性能係數遠低於 2 倍。Fedora 28 在線安裝指南 定義了當前關於交換空間分配的方法。下面內容是我提出的建議。

下表根據系統中的 RAM 大小以及是否有足夠的內存讓系統休眠,提供了交換分區的推薦大小。建議的交換分區大小是在安裝過程當中自動創建的。可是,爲了知足系統休眠,您須要在自定義分區階段編輯交換空間。

表 1: Fedora 28 文檔中推薦的系統交換空間

系統內存大小 推薦的交換空間 推薦的交換空間大小(支持休眠模式)
小於 2 GB 2 倍 RAM 3 倍 RAM
2 GB – 8 GB 等於 RAM 大小 2 倍 RAM
8 GB – 64 GB 0.5 倍 RAM 1.5 倍 RAM
大於 64 GB 工做量相關 不建議休眠模式
在上面列出的每一個範圍之間的邊界(例如,具備 2GB、8GB 或 64GB 的系統 RAM),請根據所選交換空間和支持休眠功能請謹慎使用。若是你的系統資源容許,增長交換空間可能會帶來更好的性能。

固然,大多數 Linux 管理員對多大的交換空間量有本身的想法。下面的表2 包含了基於我在多種環境中的我的經歷所作出的建議。這些可能不適合你,可是和表 1 同樣,它們可能對你有所幫助。

表 2: 做者推薦的系統交換空間

RAM 大小 推薦的交換空間
≤ 2GB 2X RAM
2GB – 8GB = RAM

8GB 8GB 這兩個表中共同點,隨着 RAM 數量的增長,超過某一點增長更多交換空間只會致使在交換空間幾乎被所有使用以前就發生頻繁交換。根據以上建議,則應儘量添加更多 RAM,而不是增長更多交換空間。如相似影響系統性能的狀況同樣,請使用最適合你的建議。根據 Linux 環境中的條件進行測試和更改是須要時間和精力的。
相關文章
相關標籤/搜索