【IT工程师问答】你真的了解内存SWAP吗?
你好。
我是 Nomushin,公司里最大的硬件极客(自称)。
内存交换?你认识这个词吗?现代计算机变得越来越复杂并且具有充足的内存,因此您在一般使用计算机时可能没有意识到这一点。
我们的一项服务,服务器监控,包括SWAP监控,如果SWAP消耗量增加,就会发出警报。
“SWAP是邪恶的!SWAP应该死!!”
我想也有一些委员这么认为。 …图片?你在吗? ?
然而,令人惊讶的是,很少有人了解 SWAP 的工作原理以及为什么需要这种机制。
那么,SWAP背后的逻辑是什么,为什么需要监控呢?我将简要解释一下如果没有 SWAP 会发生什么。
请注意,本文不讨论SWAP的具体设置。
计算机的结构(PC、服务器) * 超粗略的解释
给您一个非常粗略的解释,计算机由三个主要部分组成:
・CPU
・内存(DRAM)
[主存储]・存储(SSD、HDD等) [辅助存储]
大家知道,CPU是计算机的大脑,是控制计算的部分。
内存是CPU暂时存储输入数据以进行计算的地方,而存储是永久存储数据的地方(DRAM断电时会丢失数据。)
这里需要注意的是
CPU不能直接访问存储(辅助存储) 有些人可能会想,“不对,我写的程序是读取磁盘上的文件!!”,但在这种情况下,操作是先将存储上的文件扩展到内存,然后再读取磁盘上的文件。磁盘,CPU 处理它。
还有一件事。
内存和存储之间的主要区别在于速度。
当我用 SSD 替换 HDD 进行存储时,我惊讶于它的运行速度!我想有些人有过这样的经历。 (现在配备HDD的电脑越来越少了……)
应该是这样。 SSD 的速度明显快于 HDD。
那么如何比较内存(DRAM)和SSD呢?
DRAM 是迄今为止最快的。数字不同。
速度有多种标准,例如访问时间和传输速度,但 DRAM 是所有标准中最快的。
更具体地说,CPU 配备了多层高速缓存 (SRAM),其速度比 DRAM 快几个数量级,但这超出了本主题的范围,所以我们暂时将其放在一边。
关于互换
你了解计算机的一般结构吗?
现在进入主题:SWAP。
你知道SWAP这个词是什么意思吗?
当我问谷歌时,它说
“交换”和“替换” 那么,当SWAP发生时,就意味着某些东西正在被某些东西取代......? ? ?
首先什么是SWAP区?
简单来说,在存储上创建的“虚拟内存区域” 。
虽然是“虚拟内存区域”,但它是在存储上创建的,因此访问数据的速度与存储相当,“与内存相比非常慢”。
另外,该SWAP区域是保留用于SWAP发生时使用的,因此文件不能被其他操作写入该区域。因此,例如,如果您预留1GB的SWAP空间,则目标存储的可用空间将减少1GB。
那么这个SWAP区什么时候使用呢?
那就是你内存不足的时候。
如果您同时运行多个程序,或者某个特定程序消耗大量内存,您可能会注意到运行该程序所需的数据无法存储在内存中。溢出来了! ! ’是时候了。
如上所述,CPU无法直接访问存储(辅助存储) ,因此运行程序所需的所有数据都必须存储在内存中。如果内存溢出,程序将无法正常运行。由于内存不足,会出现错误。
但是,如果启用了 SWAP 并且有足够的 SWAP 空间(足够大以存储从内存中溢出的数据),它将起作用。
这个技巧
如下: 1)为了让CPU获取必要的数据,将内存中不经常使用的数据写入SWAP区域(存储)
2)将数据从存储写入到成为的区域。 1) 的结果是释放内存。这是通过加载过程实现的
在内存和存储之间 SWAP!! 。
这允许计算机执行处理,就好像内存量增加了一样。
然而,当然也有一些权衡。
正如我之前多次说过的,存储速度很慢。如果每次内存不足时都频繁读写数据,处理自然会变慢。磁盘 I/O 也会增加。
结果,你最终陷入了一种
可以移动但很不舒服的境地。但这比因错误而陷入困境要好。
这就是SWAP发生时操作变慢的原因。
因此,你不应该忽视SWAP的出现,但它是一个有用的功能,可以让一些没有它就无法工作的东西发挥作用。
是的, 是我母亲在有限的家庭预算内维持收支平衡的智慧……!
*顺便说一句,上面的解释是针对Linux的,但Windows也有相当于SWAP的东西,称为
“虚拟内存”。 ↓就是这个了。
在初始状态下,Windows应该根据安装的内存大小计算推荐值并自动分配。
结论
结论如下。
- 当SWAP频繁发生时,系统运行会变得非常缓慢。
- 但如果不设置SWAP,则存在因内存不足而导致程序无法启动的情况。
- 如果没有足够的内存供 Linux 运行,则可能会出现 OOM Killer。
基于以上所述,
- 需要根据系统内存消耗设置合适的SWAP区大小。
- 经常消耗 SWAP 空间的系统应该首先考虑扩大内存大小。
- 如果SWAP消耗继续无限制地扩大,则可能是程序存在问题(内存泄漏等)或设置不正确,因此需要排查。
我想你可以这么说。
适当配置SWAP,构建稳定的系统!
最后
这里是我所属的系统开发服务网站SEKARAKU Lab。
SEKARAKU 实验室: https://sekarakulab.beyondjapan.com
Beyond是从服务器设计搭建到运营的一站式服务,所以如果您在服务器端开发方面遇到任何问题,请随时联系我们。
感谢您阅读到最后。
近年来,硬件变得越来越复杂,软件也引入了有效处理内存的机制,所以我们可能不再知道SWAP了。
然而,即使在今天,它仍然是每个操作系统中包含的重要功能。
本文仅提供了粗略的解释,但如果您有兴趣,请深入挖掘并了解更多信息。
点击此处查看其他 SWAP 文章