关于虚拟机的乌班图内存不足的处理

查看你的系统里面的swappiness

$ cat /proc/sys/vm/swappiness
( 一般默认的都是60,因此输入这个命令执行会看到一个数值:60)

修改swappiness值为10

$ sudo sysctl vm.swappiness=10

但是这只是临时性的修改,在你重启系统后会恢复默认的60,所以,还要做一步:

$ gksudo gedit /etc/sysctl.conf
(注意有时候会提示 gksudo 命令未安装,需要安装一下,提示的有安装命令,复制粘贴执行即可)

在这个文档的最后加上这样一行

vm.swappiness=10
(保存,回头执行第一个命令查看是否将swappiness修改到了10)

解释以下几个专业名词

Swap:
swap分区在系统的物理内存不够用的时候,把物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap分区中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。

swappiness:
这个值的大小对如何使用swap分区是有着很大的联系。如果swappiness=0,表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。linux的基本默认设置为60,具体如下:

[root@timeserver ~]# cat /proc/sys/vm/swappiness
60 (输入命令查看默认值,默认都是60)

也就是说,你的内存在使用到100-60=40%的时候,就开始出现有交换分区的使用。而内存的速度会比磁盘快很多,这样子会加大系统IO读取,同时造的成大量页的换进换出,严重影响系统的性能,所以我们在操作系统层面,要尽可能使用内存,对该参数进行调整。

临时调整的方法如下,我们调成10:

[root@timeserver ~]# sysctl vm.swappiness=10
vm.swappiness = 10
[root@timeserver ~]# cat /proc/sys/vm/swappiness
10
这只是临时调整的方法,重启后会回到默认设置的

要想永久调整的话,需要将
需要在/etc/sysctl.conf修改,加上:

[root@timeserver ~]# cat /etc/sysctl.conf
kernel.shmall = 4294967296
vm.swappiness=10

激活设置

[root@timeserver ~]# sysctl -p

在linux中,可以通过修改swappiness内核参数,降低系统对swap的使用,从而提高系统的性能。

其实说的简单一点就是这样的

遇到的问题是这样的,新版本产品发布后,每小时对内存的使用会有一个尖峰。虽然这个峰值还远没有到达服务器的物理内存,但确发现内存使用达到峰值时系统开始使用swap。在swap的过程中系统性能会有所下降,表现为较大的服务延迟。对这种情况,可以通过调节swappiness内核参数降低系统对swap的使用,从而避免不必要的swap对性能造成的影响。

简单地说这个参数定义了系统对swap的使用倾向,默认值为60,值越大表示越倾向于使用swap。可以设为0,这样做并不会禁止对swap的使用,只是最大限度地降低了使用swap的可能性。

通过sysctl -q vm.swappiness可以查看参数的当前设置。

修改参数的方法是修改/etc/sysctl.conf文件,加入vm.swappiness=xxx,然后重启系统。这个操作相当于是修改虚拟系统中的/proc/sys/vm/swappiness文件,将值改为XXX数值。

如果不想重启,可以通过sysctl -p动态加载/etc/sysctl.conf文件,但建议这样做之前先清空swap。


你可能感兴趣的:(虚拟机,虚拟机,乌班图,ubuntu,内存不足,vm)