做者:張首富 時間:2020-06-18 w x:y18163201
Linux中Swap(即:交換分區),相似於Windows的虛擬內存,就是當內存不足的時候,把一部分硬盤空間虛擬成內存使用,從而解決內存容量不足的狀況。Android是基於Linux的操做系統,因此也可使用Swap分區來提高系統運行效率 。算法
交換分區,英文的說法是swap,意思是「交換」、「實物交易」。它的功能就是在內存不夠的狀況下,操做系統先把內存中暫時不用的數據,存到硬盤的交換空間,騰出內存來讓別的程序運行,和Windows的虛擬內存(pagefile.sys)的做用是同樣的。bash
以上解釋來自於百度百科markdown
實際上是Linux經過一個參數swappiness來控制的。固然還涉及到複雜的算法。app
這個參數值可爲 0-100,控制系統 swap 的使用程度。高數值可優先系統性能,在進程不活躍時主動將其轉換出物理內存。低數值可優先互動性並儘可能避免將進程轉換處物理內存,並下降反應延遲。默認值爲 60。注意:這個只是一個權值,不是一個百分比值,涉及到系統內核複雜的算法。ide
修改這個權重性能
echo 10 > /proc/sys/vm/swappiness sysctl vm.swappiness=10 #臨時修改 echo "vm.swappiness=10" >> /etc/sysctl.conf #永久修改 sysctl -p #生效
關於這個問題,應該說只能有一個統一的參考標準,具體還應該根據系統實際狀況和內存的負荷綜合考慮,像ORACLE的官方文檔就推薦以下設置,這個是根據物理內存來作參考的。操作系統
RAM | Swap Space |
---|---|
Up to 512 MB | 2 times the size of RAM |
Between 1024 MB and 2048 MB | 1.5 times the size of RAM |
Between 2049 MB and 8192 MB | Equal to the size of RAM |
More than 8192 MB | 0.75 times the size of RAM |
1,首先利用 fdisk 方式建立一個分區出來code
2,而後使用 mkswap 方式來格式化分區進程
mkswap /dev/sdb2
3,啓動交換分區內存
swapon /dev/sdb2
4,設置成開機自動啓動
echo "/dev/sdb2 swap swap defaults 0 0" >> /etc/fstab
1,建立一個目錄,(可省略,可是不建議)
mkdir /swapdir && cd /swapdir
2,使用 dd 命令建立大小合適的的交換文件:
dd if=/dev/zero of=/swapfile bs=1M kcount=1000 建立一個名爲swapfile 的 1G 的交換文件
3,格式化此文件
mkswap /swapdir/swapfile
4,啓用交換分區
swapon /swapdir/swapfile
5,設置開機自啓動
echo "/swapdir/swapfile swap swap defaults 0 0" >> /etc/fstab
只須要按照上面步驟建立 swap 分區,掛載上去以後就自動擴容上去了
1,用下面命令查看下當前 swap 分區上面掛載了那些磁盤
swapon -s / cat /proc/swaps
2,關閉對應的 swap 分區
swapoff /dev/sdb2