linux的swap相关

linux的系统采用的内存方案一般都是 物理内存+swap。物理内存供日常使用,swap用来救急。

但在实际使用的过程中,发现有时候物理内存还没被完全占用的情况下,已经开始使用swap了。而这时候,由于I/O瓶颈问题,会导致性能的降低,这就需要我们进行一下调整,能用物理内存的情况下尽量不要使用swap。

1.内核参数的调整。

有个参数,名为vm.swappiness,值的范围大概是0-100,0表示尽量使用物理内存,100表示尽量使用swap,而我们的目的是尽量使用物理内存。

kernel的文档(https://www.kernel.org/doc/Documentation/sysctl/vm.txt)中有如下说明:

swappiness

This control is used to define how aggressive the kernel will swap
memory pages.  Higher values will increase agressiveness, lower values
decrease the amount of swap.  A value of 0 instructs the kernel not to
initiate swap until the amount of free and file-backed pages is less
than the high water mark in a zone.

The default value is 60.

此时我们就将值设为0。

1) 在 /etc/sysctl.conf 中添加一行:

vm.swappiness=0

2) 执行命令:sysctl -p

3) 验证是否修改成功:sysctl vm.swappiness

2.尽管我们修改了此值,但是在swap中已经有内容了,使用free命令查看swap已经被占用了一些了,那么现在我们想把swap中的内容挪到物理内存中。

已知的一种方法是先将swap关闭,让内核自动完成内容迁移,再把swap打开。

操作方法如下:

1) 查看swap所在的分区:swapon -s

例如是 /dev/sda2

2) 关闭swap分区:swapoff /dev/sda2

3) 重新打开swap分区:swapon -a

4) 验证内存占用情况:free -h

以上记录了linux对swap进行调整的常用操作,可能文章中提到的方法并不是最优的,但是总归算是一种有效的解决方案。更深层次的内容还需要大量参考内核文档。

原文地址:https://www.cnblogs.com/vanwoos/p/7878071.html