[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

【超过500家企业部署】AWS搭建、运维、监控服务

【超过500家企业部署】AWS搭建、运维、监控服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

[仅适用于 WordPress] 云服务器“Web Speed”

[仅适用于 WordPress] 云服务器“Web Speed”

[便宜]网站安全自动诊断“快速扫描仪”

[便宜]网站安全自动诊断“快速扫描仪”

[预约系统开发] EDISONE定制开发服务

[预约系统开发] EDISONE定制开发服务

[注册100个URL 0日元] 网站监控服务“Appmill”

[注册100个URL 0日元] 网站监控服务“Appmill”

【兼容200多个国家】全球eSIM“超越SIM”

【兼容200多个国家】全球eSIM“超越SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

【全球专属服务】Beyond北美及中国MSP

【全球专属服务】Beyond北美及中国MSP

[YouTube]超越官方频道“美由丸频道”

[YouTube]超越官方频道“美由丸频道”

【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 文章

【波斯猫备忘录】我用AWS免费框架试过了! 添加SWAP区

如果您觉得这篇文章有帮助,请点赞!
51
加载中...
51 票,平均:1.00 / 151
79,282
X Facebook 哈特纳书签 口袋
[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

写这篇文章的人

关于作者

野村由纪

大学毕业后,他在当地一家系统开发公司从事电子病历开发工作。
此后,他跳槽到一家移动应用程序开发公司,积累了开发翻盖手机和智能手机应用程序的经验,然后于 2013 年加入 Beyond。
在大阪办事处工作。 目前负责Web系统的设计和开发。
作为一种爱好,他在私生活中继续开发智能手机应用程序。
一位机械师,也是一位硬件极客。 电脑和自行车的组装就交给我们吧!