1. 在linux交換空間作用是什麼
Linux交換空間(swap space)是磁碟上的一塊區域,可以是一個分區或一個文件,或者是他們組合。當系統物理內存吃緊時,Linux會將內存中不常訪問的數據保存到swap上,這樣系統就有更多的物理內存為各個進程服務。
Linux 交換空間(swap space)是磁碟上的一塊區域,可以是一個分區,也可以是一個文件,或者是他們的組合。簡單點說,當系統物理內存吃緊時,Linux 會將內存中不常訪問的數據保存到 swap 上,這樣系統就有更多的物理內存為各個進程服務,而當系統需要訪問 swap 上存儲的內容時,再將 swap 上的數據載入到內存中,這就是我們常說的 swap out 和 swap in。
交換空間 Linux swap
理論上來說,如果物理內存足夠多並且不需要休眠功能,那 swap 就沒什麼用,可關鍵問題是我們很難保證物理內存在任何情況下都夠用,因為總有意想不到的情況發生,比如某些進程耗內存超預期,伺服器壓力超預期,內存泄漏等。
Linux swap 的好處
1.對於一些大型的應用程序(如 LibreOffice、video editor 等),在啟動的過程中會使用大量的內存,但這些內存很多時候只是在啟動的時候用一下,後面的運行過程中很少再用到這些內存。有了 swap 後,系統就可以將這部分不這么使用的內存數據保存到 swap 上去,從而釋放出更多的物理內存供系統使用。
2.很多發行版(如 ubuntu)的休眠功能依賴於 swap 分區,當系統休眠的時候,會將內存中的數據保存到 swap 分區上,等下次系統啟動的時候,再將數據載入到內存中,這樣可以加快系統的啟動速度,友判所以如果要使用休眠的功能,必須要配置 swap 分區,並且大小一定要大於等於物理內存
3.在某些情況下,物理內存有限,但又想運行耗內存的程序怎麼辦?這滑手時可以通過配置足夠的 swap 空間來達到目標,雖然慢一點,但至少可以運行。
4.雖然大部分情況下,物理內存都是夠用的,但是總有一些意想不到的狀況,比如某個進程需要的內存超過了預期,或者有進程存在內存泄漏等,當內存不夠的時候,就會觸發內核的 OOM killer,根據 OOM killer 的配置,某些進程會被 kill 掉或者系統直接重啟(默認情況是優先 kill 耗內存最多的那個進程),不過有了 swap 後好讓改,可以拿 swap 當內存用,雖然速度慢了點,但至少給了我們一個去 debug、kill 進程或者保存當前工作進度的機會。
5.如果看過 Linux 內存管理,就會知道系統會盡可能多的將空閑內存用於 cache,以加快系統的 I/O 速度,所以如果能將不怎麼常用的內存數據移動到 swap 上,就會有更多的物理內存用於 cache,從而提高系統整體性能。
2. Linux上如何清理內存緩存、緩沖與交換空間
在Linux系統中,內存管理是一項關鍵任務,但有時可能會遇到內存使用過高的情況。Linux提供了多種方式來清理內存緩存、緩沖和交換空間,以保持系統資源的有效利用。以下是幾種清理方法的概述:
1. 清除頁面緩存(pagecache):通過執行`sync`命令,可以刷新文件系統緩沖區,而不會中斷進程或服務。這通常是最安全的選項,特別是在生產環境中,可以使用`echo 1 > /proc/sys/vm/drop_caches`來清除頁面緩存。
2. 清除目錄項和inode:如果需要進一步清理,可以清除頁面緩存、目錄項和i節點,但這需要謹慎操作,因為這可能會影響正在運行的應用。生產環境中,通常僅在明確了解其影響後才執行`echo 3 > /proc/sys/vm/drop_caches`。
3. 清理交換空間:如果內存不足,可以考慮清除交換空間,但要注意這可能導致系統性能短暫下降。執行`sudo swapoff -a`來關閉所有交換分區,然後`sudo sync`和`sudo swapon -a`來重新啟用。
在管理內存緩存時,應謹慎行事,因為頻繁的清理可能會對系統性能產生負面影響。僅在必要且了解可能影響時清理,例如在測試或性能優化時。不建議在生產環境中設置定時任務自動清理,以免因意外情況導致服務中斷。
清理內存緩存和交換空間前,務必通過運行`free -h`命令來監控內存使用情況,確保操作的合理性和安全性。同時,歡迎在論壇上分享你的經驗和建議,共同提升Linux系統的管理效率。
原文作者:- - 內核技術中文網 - 構建全國最權威的內核技術交流分享論壇
原文地址:Linux上如何清理內存緩存、緩沖與交換空間? - 圈點 - 內核技術中文網 - 構建全國最權威的內核技術交流分享論壇
3. Linux 中的 Swap與swappiness
Linux 管理內存時以頁為基本單位,通過Swap機制在物理RAM不足時將部分內存移動至硬碟上的預設空間,形成虛擬內存。交換空間有重要性和缺點,它能釋放物理內存,但磁碟訪問速度慢會導致性能下降。交換空間包括交換分區和交換文件,可以通過命令行工具查看和管理。
要了解交換空間信息,使用swapon -s命令,它顯示系統中所有交換空間的使用情況。Linux會在多個交換空間間智能切換以提高性能。添加交換分區需先標記並創建交換文件系統。在配置中,Swappiness參數決定何時開始使用Swap,其范圍為0到100,值越高,系統越可能提前使用Swap,影響性能。默認值60意味著當內存使用超過40%時,Swap會被啟用。
Swappiness可通過調整內核參數來優化,臨時改變用cat命令和sysctl,永久更改則在/etc/sysctl.conf中設置。要清除Swap空間,可以使用swapon和swapoff命令。swapon用於啟用交換,swapoff則用於關閉。這兩個命令都有相應的選項和描述供管理員操作。
4. 怎麼設置掛載點/與交換空間
在Linux系統中設置掛載點/與交換空間的步驟如下:

設置根掛載點:
- 在Linux系統安裝過程中,選擇手動分區。
- 創建第一個分區作為根掛載點,這個分區將包含系統的所有文件和目錄。
- 設置分區大小、文件系統類型等參數,並確保將其掛載為根目錄。
設置交換空間:
- 創建另一個分區作為交換空間。
- 分區大小:通常設置為物理內存的1.5倍到2倍左右,但也可以根據實際情況進行調整。例如,可以設置分區大小為1536M。
- 設置用途:在分區設置中,將其指定為SWAP交換空間分區。
- 確定創建:完成分區設置後,確認並創建該分區。
補充說明:
- SWAP的作用:SWAP是Linux下的虛擬內存分區,用於在物理內存使用完之後,將磁碟空間虛擬成內存來使用。它與Windows系統的交換文件作用類似,但它是一段連續的磁碟空間,並且對用戶不可見。
- 性能考慮:雖然SWAP分區可以作為虛擬內存使用,但其速度比物理內存慢得多。因此,如果需要更快的速度,應優先考慮增加物理內存。SWAP分區只是臨時的解決辦法。
- 其他交換空間類型:除了swap分區外,Linux下還可以創建swap文件作為交換空間。這適用於沒有空閑分區可用,但硬碟空間已經分配完畢的情況。