swap是什么?
Swap:交换分区
类似于Windows的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。
当用户提交程序,然后产生进程,在机器上运行。机器会判断当前物理内存是否还有空闲允许进程调入内存运行,如果有那么则直接调入内存进行运行;如果没有,那么会根据优先级选择一个进程挂起,把该进程交换到swap中等待,然后把新的进程调入到内存中运行。根据这种换入和换出,实现了内存的循环利用,让用户感觉不到内存的限制。从这也可以看出swap扮演了一个非常重要的角色,就是暂存被换出的进程。
1、首先扩展一个虚拟内存(交换分区)
1.1 查看swap分区是否启
cat /proc/swaps
没有启动swap时,是长这样的
1.2 创建8G大小的swap
dd if=/dev/zero of=/data/swap bs=1M count=8192
将/dev/zero内容写入/data/swap,读写块大小1024bytes ,块个数8192。
/dev/zero是个未使用的文件模版,可以用它来创建“干净”的文件。后两个参数可以控制文件大小。
如果根目录下没有data文件夹,则要先去创建,否则会提示:"dd: 打开'/data/swap' 失败: 没有那个文件或目录"
mkdir -p /data
2、将上面新建出的文件做成swap分区
mkswap /data/swap
如果出现该提示:"mkswap: /data/swap:不安全的权限 0644,建议使用 0600",则设置该文件的权限为0600即可
chmod 0600 /data/swap
3、激活启用分区
swapon /data/swap
4、查看状态
swapon -s
5、设置自动挂载交换分区
echo "/data/swap swap swap defaults 0 0" >> /etc/fstab
将 /data/swap swap swap defaults 0 0 写入文件 /etc/fstab
6、启用系统交换分区的配置
swappiness的值的大小对如何使用swap分区是有着很大的联系的。swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。linux的基本默认设置为60。也就是说,你的内存在使用到100-60=40%的时候,就开始出现有交换分区的使用。大家知道,内存的速度会比磁盘快很多,这样子会加大系统io,同时造的成大量页的换进换出,严重影响系统的性能,所以我们在操作系统层面,要尽可能使用内存,对该参数进行调整。
6.1 查看当前配置
cat /proc/sys/vm/swappiness
6.2 临时调整
sysctl vm.swappiness=60
6.3 若想永久修改,则编辑/etc/sysctl.conf文件,该文件中有vm.swappiness的变量配置,默认为0
6.31 编辑配置文件
vim /etc/sysctl.conf
6.32 追加或修改
vm.swappiness=60
6.33 启用配置
sysctl -p
7、查看swap分区是否启动
cat /proc/swaps
8、查看linux内存使用情况,会多显示一行Swap,可用内存8162M
free -m
拓展
删除交换分区
1、停止交换分区
swapoff /data/swap
2、删除/etc/fstab文件中的自动挂载
vim /etc/fstab
把这行删除 /data/swap swap swap defaults 0 0
3、删除分区文件
rm /data/swap