linux swap交換分區(qū)(詳解)
linux
1.什么是SWAP
$ swapon -s Filename Type Size Used Priority /swap.img file 2097148 0 -2
從功能上講,交換分區(qū)主要是在內存不夠用的時候,將部分內存上的數據交換到swap空間上,以便讓系統(tǒng)不會因內存不夠用而導致oom或者更致命的情況出現(xiàn)。所以,當內存使用存在壓力,開始觸發(fā)內存回收的行為時,就可能會使用swap空間。
2. swappiness調節(jié)什么
/proc/sys/vm/swappiness
這個文件,是個可以用來調整跟swap相關的參數。這個文件的默認值是60,可以的取值范圍是0-100
$ cat /proc/sys/vm/swappiness 60 $ sysctl -q vm.swappiness vm.swappiness = 60 $ sysctl vm.swappiness=10 $ sysctl -q vm.swappiness vm.swappiness = 10
持久操作
$ vim /etc/sysctl.conf vm.swappiness=10 #到末行,需要重啟生效
定義內核使用swap的積極程度:
- 值越高,內核就會越積極的使用swap;
- 值越低,就會降低對swap的使用積極性。
- 如果這個值為0,那么內存在free和file-backed使用的頁面總量小于高水位標記(high water
- mark)之前,不會發(fā)生交換。調整為0意味著,盡量通過清緩存來回收內存。
- 設置為100表示內存發(fā)生回收時,從cache回收內存和swap交換的優(yōu)先級一樣。就是說,如果目前需求100M內存,那么較大機率會從cache中清除50M內存,再將匿名頁換出50M,把回收到的內存給應用程序使用。但是這還要看cache中是否能有空間,以及swap是否可以交換50m。
file-backed:
就是上文所說的文件映射頁的大小
3. 什么時候會進行swap操作?
kswapd周期檢查和直接內存回收的兩種內存回收機制。當申請的內存大于剩余內存的時候,就會觸發(fā)直接回收。那么kswapd進程在周期檢查的時候觸發(fā)回收的條件是什么呢?還是從設計角度來看,kswapd進程要周期對內存進行檢測,達到一定閾值的時候開始進行內存回收。這個所謂的閾值可以理解為內存目前的使用壓力,就是說,雖然我們還有剩余內存,但是當剩余內存比較小的時候,就是內存壓力較大的時候,就應該開始試圖回收些內存了,這樣才能保證系統(tǒng)盡可能的有足夠的內存給突發(fā)的內存申請所使用。
kswapd根據內存水位標記決定是否開始回收內存,如果標記達到low就開始回收,回收到剩余內存達到high標記為止。
查看當前系統(tǒng)的內存水位標記
$ cat /proc/zoneinfo
4. swap分區(qū)的優(yōu)先級(priority)
可以使用-p參數指定相關swap空間的優(yōu)先級, 值越大優(yōu)先級越高 ,可以指定的數字范圍是-1到32767.
$ swapoff /dev/sdc1; swapon -p 0 /dev/sdc1 $ swapon -s Filename Type Size Used Priority /dev/sdc1 file 2097148 0 0 $ cat /proc/swaps Filename Type Size Used Priority /dev/sdc1 file 2097148 0 0
/etc/ fstab
放入一個條目,以使其在每次Linux重新啟動時生效:
/dev/sdc1 swap swap pri=0 0 0
5. 啟停swap
$ swapoff -a 停止 $ swapon -a 啟動
6. 創(chuàng)建swap空間
制作swap文件 dd if=/dev/sda3 of=./swapfile bs=1M count=1G mkswap ./swapfile 啟用swap文件 $ swapon swapfile $ swapon -s Filename Type Size Used Priority /swap.img file 2097148 3340 0 /mnt/swapfile file 6388156 0 -2 關閉swap空間 $ swapoff swapfile $ swapon -s Filename Type Size Used Priority /swap.img file 2097148 3156 0
以上就是linux swap交換分區(qū)(詳解)的詳細內容,更多關于linux swap交換分區(qū)的資料請關注腳本之家其它相關文章!,希望大家以后多多支持腳本之家!
相關文章
CentOS 下yum安裝mysql、jdk和tomcat的方法
這篇文章主要介紹了CentOS 下yum安裝mysql、jdk和tomcat的方法的相關資料,需要的朋友可以參考下2016-10-10Linux系統(tǒng)下利用C程序輸出某進程的內存占用信息
這篇文章主要給大家介紹了關于在Linux系統(tǒng)下利用C程序輸出某進程的內存占用信息的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友下面來一起看看吧。2017-12-12