一、关于swap的几点说明
1,swap一般称作为“交换空间”,其作用相当于Windows上的“虚拟内存”。
2,swap实际上是硬盘上的一块空间。
3,swap内保存的数据并不能直接供CPU直接使用。CPU如果想用swap内的数据,需要先把数据从硬盘转移到内存,然后再交给CPU。
4,swap内保存的是暂时不使用的或者使用频率很低的数据。
5,数据从swap到内存的速度比从内存到cpu的速度,要慢几百倍甚至上千倍。
二、关于内存不足
1,swap存在的意义在于存放不经常使用的数据,而不是物理内存放不下的数据。
2,如果经常使用的数据在物理内存中存放不下,内核会被迫将部分数据分配到swap。
3,如果第2条所写的发生了,接下来会产生大量的硬盘读写IO,原因参见〖关于swap的几点说明〗中的第2条。
4,接上条,大量的硬盘读写IO会产生的后果为:
(1)CPU在处理运算时会有大量的时间在等待硬盘IO,严重影响服务器的响应速度。
(2)同服务器上的其他VPS都会受到影响(除非使用的不是同一硬盘)。
5,*请注意区分“使用swap”和“进行swap”:
(1)使用swap,是指数据存放在swap中,是固定的状态,不会占用硬盘IO。
如下图,系统虽然占用了13M的swap,但是没有进行swap交换。
(2)进行swap,是指把数据从swap转移到物理内存,或者从物理内存转移到swap的操作,是执行的过程。
如下图,系统几乎每秒都在进行大量内存交换操作。
三、对于内存不足的建议
(1)如果内存不足,应该及时升级VPS内存。否则不光会影响到自己的VPS系统,而且会影响到其他的VPS。
(2)不要尝试通过增加swap来解决内存不足的问题,问题根源是由于物理内存不足,再多的swap也是于事无补的。