交換空間是當今計算的一個共同方面,不管操作系統如何。Linux使用交換空間來增加主機可用的虛擬內存量。它可以在常規文件系統或邏輯卷上使用一個或多個專用交換分區或交換文件。
在一臺典型的計算機中有兩種基本的內存類型。第一種類型,隨機存取存儲器(RAM),用于存儲數據和程序,而這些數據和程序正在由計算機積極使用。除非程序和數據存儲在RAM中,否則計算機無法使用它們。RAM是易失性內存;也就是說,如果關閉計算機,存儲在RAM中的數據就會丟失。
硬盤是用于長期存儲數據和程序的磁性介質.磁性介質是非易失性的;存儲在磁盤上的數據即使從計算機中移除電源也保持不變。CPU(中央處理單元)不能直接訪問硬盤上的程序和數據;必須首先將其復制到RAM中,這就是CPU可以訪問其編程指令和這些指令要操作的數據的地方。在引導過程中,計算機將特定的操作系統程序(如內核、init或systemd)以及硬盤驅動器中的數據復制到RAM中,由計算機的處理器CPU直接訪問。
交換空間
交換空間是現代Linux系統中的第二種內存類型。交換空間的主要功能是當實際內存被填滿,需要更多的空間時,用磁盤空間代替RAM內存。
例如,假設您有一個具有8GB RAM的計算機系統。如果您啟動的程序不填充該RAM,一切都是好的,不需要交換。但是假設當您添加更多的行時,您正在處理的電子表格會增長,并且,再加上正在運行的所有其他內容,現在將填充所有的RAM。如果沒有可用的交換空間,您將不得不停止電子表格的工作,直到您可以通過關閉一些其他程序來釋放一些有限的RAM。
內核使用內存管理程序來檢測最近沒有使用內容的內存塊,也就是頁面。內存管理程序將這些相對較少使用的內存頁交換到專門指定用于“分頁”或交換的硬盤驅動器上的一個特殊分區。這將釋放RAM,并為將更多數據輸入電子表格騰出空間。內核的內存管理代碼會跟蹤那些交換到硬盤上的內存頁,如果需要的話,可以將它們分頁回RAM。
Linux計算機中的內存總量是RAM加上交換空間,稱為虛擬存儲器.
Linux交換的類型
Linux提供了兩種類型的交換空間。默認情況下,大多數Linux安裝都會創建交換分區,但也可以使用特殊配置的文件作為交換文件。交換分區正是它的名稱所暗示的-一個標準磁盤分區,由mkswap命令。
如果沒有可用的磁盤空間來創建新的交換分區,或者在卷組中可以為交換空間創建邏輯卷,則可以使用交換文件。這只是一個常規文件,它被創建并預先分配到指定的大小。然后mkswap命令將其配置為交換空間。除非絕對必要,否則我不建議使用文件作為交換空間。
震蕩
當整個虛擬內存(包括RAM和交換空間)幾乎滿時,就會發生震蕩。系統在交換空間和RAM之間花費大量的時間分頁內存塊,然后再分頁,這樣就只剩下很少的時間用于實際的工作了。這方面的典型癥狀是顯而易見的:系統變得緩慢或完全沒有響應,硬盤驅動器的活動幾乎不斷地亮著。
如果您能夠設法發出如下命令free這顯示了CPU負載和內存使用情況,您將看到CPU負載非常高,可能是系統中CPU核心數量的30至40倍。另一個癥狀是RAM和交換空間幾乎都被完全分配了。
之后,查看SAR(系統活動報告)數據也可以顯示這些癥狀。我在我工作的每一個系統上安裝了SAR,并使用它進行修復后的法醫分析。
適當的交換空間是多少?
許多年前,應該在硬盤上分配的交換空間數量的經驗法則是計算機中安裝的RAM數量的2倍(當然,大多數計算機的RAM是以KB或MB計算的)。因此,如果計算機有64 KB的RAM,128 KB的交換分區將是最佳大小。這條規則考慮到了這樣一個事實,即當時RAM的大小通常很小,為交換空間分配超過2X的RAM并不能提高性能。由于交換內存超過兩倍,大多數系統花費的時間比實際執行有用的工作花費的時間更多。
新聞熱點
疑難解答