swap 分区
作者:张首富
时间:2020-06-18
w x:y18163201
什么是 swap 分区
Linux中Swap(即:交换分区),类似于Windows的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。Android是基于Linux的操作系统,所以也可以使用Swap分区来提升系统运行效率 。
交换分区,英文的说法是swap,意思是“交换”、“实物交易”。它的功能就是在内存不够的情况下,操作系统先把内存中暂时不用的数据,存到硬盘的交换空间,腾出内存来让别的程序运行,和Windows的虚拟内存(pagefile.sys)的作用是一样的。
以上解释来自于百度百科
什么时候才会使用 swap 分区
其实是Linux通过一个参数swappiness来控制的。当然还涉及到复杂的算法。
这个参数值可为 0-100,控制系统 swap 的使用程度。高数值可优先系统性能,在进程不活跃时主动将其转换出物理内存。低数值可优先互动性并尽量避免将进程转换处物理内存,并降低反应延迟。默认值为 60。注意:这个只是一个权值,不是一个百分比值,涉及到系统内核复杂的算法。
修改这个权重
echo 10 > /proc/sys/vm/swappiness
sysctl vm.swappiness=10 #临时修改
echo "vm.swappiness=10" >> /etc/sysctl.conf #永久修改
sysctl -p #生效
swap分区设置多大合适
关于这个问题,应该说只能有一个统一的参考标准,具体还应该根据系统实际情况和内存的负荷综合考虑,像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 |
如何创建 swap 分区
利用剩余磁盘创建 分区来生成swap 分区
1,首先利用 fdisk 方式创建一个分区出来
2,然后使用 mkswap 方式来格式化分区
mkswap /dev/sdb2
3,启动交换分区
swapon /dev/sdb2
4,设置成开机自动启动
echo "/dev/sdb2 swap swap defaults 0 0" >> /etc/fstab
利用剩余空间创建 swap 分区
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分区
只需要按照上面步骤创建 swap 分区,挂载上去之后就自动扩容上去了
如何缩减 swap 分区
1,用下面命令查看下当前 swap 分区上面挂载了那些磁盘
swapon -s / cat /proc/swaps
2,关闭对应的 swap 分区
swapoff /dev/sdb2