修改SWAP虚拟内存使用权重-vm.swappiness

Eternal 发布于 2024-09-29 473 次阅读 最后更新于 2024-12-07


因为有优惠,入手了一个阿里云2核0.5G的香港服务器,0.5G的运存能干什么,肯定要加上SWAP虚拟内存啊(添加SWAP虚拟内存教程摸这里)。但添加完之后发现虚拟内存一直没有被使用,经过查询发现内核参数vm.swappiness是控制虚拟内存使用权重的,这个阿里云服务器默认swappiness=0,所以虚拟内存一直没有被使用。记录一下解决过程:

内核参数vm.swappiness控制换出运行时内存的相对权重,参数值大小对如何使用swap分区有很大联系。值越大,表示越积极使用swap分区,越小表示越积极使用物理内存。默认值swappiness=60,表示内存使用率超过100-60=40%时开始使用交换分区。swappiness=0的时候表示最大限度使用物理内存,然后才是swap空间;swappiness=100的时候表示积极使用swap分区,并把内存上的数据及时搬运到swap空间。(网上有的说,对于3.5以后的内核和RedHat 2.6.32之后的内核,设置为0会禁止使用swap,从而引发out of memory,这种情况可以设置为1。)

需要根据服务器运行的程序类型,来设置不同的参数值。例如,对于Oracle一般设置为10;对于MySQL一般设置为1,尽可能不用swap分区。

调整vm.swappiness的方法,我这里设置为默认值60:

1、查看参数值:

cat /proc/sys/vm/swappiness

2、临时调整:

sysctl vm.swappiness = 60 
cat /proc/sys/vm/swappiness

3、永久调整:

vim /etc/sysctl.conf

11_1

修改vm.swappiness=60,然后加载参数(使用这条命令不必重启即可生效):

sysctl -p

可以再使用cat /proc/sys/vm/swappiness查看一下是否修改成功,现在可以愉快的使用虚拟内存了😉

4、刷新SWAP

如果你已经使用了swap,里面已经有了数据,那当修改了vm.swappiness参数之后就不会立即看到效果,如果不想重启,可以使用以下命令刷新swap

swapoff -a && swapon -a

swapoff -a:系统将停止使用交换空间,所有的交换数据会被清空(或者重新加载到物理内存中),

swapon -a:用于重新启用系统中的所有交换空间,启用后会按照新设定的vm.swappiness来使用交换分区。

此作者没有提供个人介绍
最后更新于 2024-12-07