SWAP

 转自

https://www.cnblogs.com/coolops/p/12806595.html#commentform

 

什么是swap

swap是磁盘上的一个区域,可以是一个分区,也可以是一个文件,或者是它们的组合,简单点说,当系统物理内存不够时,Linux会将内存中不常访问的数据保存到swap上,这样系统就有更多的物理内存为各个进程服务,而当系统需要访问swap上存储的内容时,再将swap上的数据加载到内存中,这就是我们常说的swap out和swap in。

swap的主要功能

其实上面基本已经将swap的主要功能说了,这里再来重述一下:
(1)、当物理内存不足的时候,将某些在内存中所占用的程序暂时移动到swap当中,让物理内存可以被需要的程序来使用;
(2)、Linux会将内存中不常访问的数据保存到swap中,当系统需要再次调用的时候,就把它从swap加载到内存;
(3)、如果你的主机支持电源管理模式,也就是说,你的Linux主机系统可以进入"休眠"模式的话,那么,运行当中的程序状态则会被记录到swap中去,以作为"唤醒"主机状态的依据;
(4)、在某些程序运行时,本来就会利用swap特性来存放一些数据,比如在装Oracle11g的时候会检查swap size;

swap给我们带来什么好处

上面介绍了swap的主要功能,其实就是swap的优点。在说swap给我们带来好处之前先说说swap的缺点。由于swap是磁盘上的一个区域,要么是文件,要么是分区,甚至它们的组合,其实都逃不脱"在磁盘上",那么很明显的一个缺点就是速度,磁盘的速度和内存的速度不是一个量级的,就算现在的SSD磁盘,还是跟不上内存的速度,所以说如果不停的读写swap,对磁盘的性能是有很大的影响的,尤其是在物理内存吃紧,swap读写频率又高的极端情况下,这时候除了加物理内存别无他法了。

有的小伙伴看到这里可能在想,哇,我还用它干啥,我直接把我内存加够不就行了。骚年莫急,我将慢慢道来。
来看看下面这些情况:
(1)、有些应用程序在启动的时候会需要大量内存,但是在启动完成后需要的内存很小,这时候swap就很是时候了,假如全部用物理内存,其实就有点浪费资源了,谁的钱不是钱呢?你说是吧。
(2)、现在很多小伙伴开发都用Ubuntu,Ubuntu有休眠的功能,如果需要用到休眠的话,也是需要swap的,它会把休眠之前内存中的数据保存到swap中,你下次用的时候,就直接从swap加载到内存中,省的麻烦。
(3)、有些小公司讲究节约成本,甚至有的把这个当成kpi了,所以就不能把内存搞得蛮大了,我们就需要在保证系统正常运行所需内存的情况下,配备swap,既可以保证业务运行,也可以防患于未然。
(4)、现在大部分物理内存都够用了,很多公司也完全放弃了swap。但是谁也不知道下一秒会发生什么问题,比如内存泄漏,比如某个进程需要内存超过预期,这时候如果只有物理内存,可能就会直接OOM了,等不到我们收到报警,进行处理。如果这时候有swap,我们收到物理内存不够报警的时候还会有swap顶一下,回滚或者加内存什么的也有足够的时间,避免手忙脚乱发生生产事故。

posted on 2020-05-26 09:48  Karlkiller  阅读(2249)  评论(0编辑  收藏  举报

导航