做者:张首富 时间: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