目錄
- swap是什么?
- swap有什么用?
- swap使用典型場景
- 如何查看你的系統是否用到交換空間呢?
- 查看系統中swap in/out的情況
swap是什么?
swap就是磁盤上的一塊區域。它和Windows系統中的交換文件作用類似,但是它是一段連續的磁盤空間,并且會用戶不可見。
swap有什么用?
當系統物理內存吃緊時,Linux會將內存中不常訪問的數據保存到swap上。當然從用戶的角度來看就相當于內存變大了。但在內部其實是將一段物理磁盤即swap分區充當Wie內存來使用。當系統需要訪問swap上存儲的內容時,再將swap上的數據加載到內存中,所以就有換入和換出兩個過程。
- 換出,就是把進程暫時不用的內存數據存儲到磁盤中,并釋放這些數據占用的內存。
- 換入,則是在進程再次訪問這些內存的時候,把它們從磁盤讀到內存中來。
Swap 其實是把系統的可用內存變大了。即使服務器的內存不足,也可以運行大內存的應用程序。事實上,內存再大,對應用程序來說,也有不夠用的時候。
系統總是在物理內存不夠時,才進行Swap交換。swap大小是有上限的,一旦swap使用完,操作系統會觸發OOM-Killer機制,把消耗內存最多的進程kill掉以釋放內存
swap使用典型場景
我們常見的筆記本電腦的休眠和快速開機的功能,也基于 Swap 。休眠時,把系統的內存存入磁盤,這樣等到再次開機時,只要從磁盤中加載內存就可以。這樣就省去了很多應用程序的初始化過程,加快了開機速度。
如何查看你的系統是否用到交換空間呢?
怎么知道你的系統有沒有用到交換空間呢?只需要在root用戶下,運行下面的命令就可以知道了。
free -m # m 是指單位為MB,默認是KB
在日常應用中,通過上述命令看到交換空間的使用情況為0,那么你就不需要很大的虛擬內存,甚至可以完全不需要另辟硬盤空間作為虛擬內存。那么,萬一有一天你需要了呢,難道要重裝系統?大可不必,在Linux下虛擬內存不單可以放在單獨的交換分區,也可以是一個在正常分區下的交換文件。
查看系統中swap in/out的情況
并不是swap空間占用多就一定性能下降,真正影響性能是swap in和out的頻率,頻率越高,對系統的性能影響越大,我們可以通過vmstat
命令來查看swap in/out的頻率。
vmstat
(VirtualMeomoryStatistics,虛擬內存統計)是Linux中監控內存的常用工具,可對操作系統的虛擬內存、進程、CPU等的整體情況進行監視。
例如:要以3秒為時間間隔,連續收集10次性能數據,命令如下: