[Forward Content] 替 swap 辩护:常见的误解
Tofloor
poster avatar
SamLukeYes
deepin
2022-09-11 16:40
Author

最近看到有不少坛友在问和 swap 有关的问题,看来有必要单独开一帖来转载这篇文章了。

太长不看:

  1. 对维持系统的正常功能而言,有 swap 是相对挺重要的一部分。没有它的话会更难做到合理的内存管理。
  2. swap 的目的通常并不是用作紧急内存,它的目的在于让内存回收能更平等和高效。事实上把它当作「紧急内存」来用的想法通常是有害的。
  3. 禁用 swap 在内存压力下并不能避免磁盘I/O造成的性能问题,这么做只是让磁盘I/O颠簸的范围从匿名页面转化到文件页面。这不仅更低效,因为系统能回收的页面的选择范围更有限了,而且这种做法还可能是加重了内存压力的原因之一。
  4. 内核 4.0 版本之前的交换进程(swapper)有一些问题,导致很多人对 swap 有负面印象,因为它太急于(overeagerness)把页面交换出去。在 4.0 之后的内核上这种情况已经改善了很多。
  5. 在 SSD 上,交换出匿名页面的开销和回收文件页面的开销基本上在性能/延迟方面没有区别。在老式的磁盘上,读取交换文件因为属于随机访问读取所以会更慢,于是设置较低的 vm.swappiness 可能比较合理(参阅正文中关于 vm.swappiness 的描述)。
  6. 禁用 swap 并不能避免在接近 OOM 状态下最终表现出的症状,尽管的确有 swap 的情况下这种症状持续的时间可能会延长。在系统调用 OOM 杀手的时候无论有没有启用 swap,或者更早/更晚开始调用 OOM 杀手,结果都是一样的:整个系统留在了一种不可预知的状态下。有 swap 也不能避免这一点。
  7. 可以用 cgroup v2 的 memory.low 相关机制来改善内存压力下 swap 的行为并且避免发生颠簸。

英文原文:https://chrisdown.name/2018/01/02/in-defence-of-swap.html

中文翻译:https://farseerfc.me/zhs/in-defence-of-swap.html

许可证:CC BY-SA 4.0

Reply Favorite View the author
All Replies
ljq790615
deepin
2022-09-11 17:22
#1

简而言之,swap分区还是需要的,dde环境貌似不怎么用它,哈啊哈

Reply View the author
SamLukeYes
deepin
2022-09-11 17:31
#2
ljq790615

简而言之,swap分区还是需要的,dde环境貌似不怎么用它,哈啊哈

不一定要用 swap 分区,还可以用 swapfile 或者 zram。在内存不紧张的时候,swap 一点都没用到也是很正常的。

Reply View the author
jjcui8595
Moderator
2022-09-11 17:59
#3

感谢分享

Reply View the author
pzm9012
Moderator
2022-09-11 18:19
#4

感谢分享

Reply View the author
liwl
deepin
2022-09-11 18:54
#5

agree

Reply View the author
来自Ubuntu的某位用户
deepin
2022-09-11 21:11
#6

我安装arch一定会分swap分区,说不分swap分区会影响性能,系统不能休眠

Reply View the author
SamLukeYes
deepin
2022-09-11 21:15
#7
来自Ubuntu的某位用户

我安装arch一定会分swap分区,说不分swap分区会影响性能,系统不能休眠

其实用 swapfile 也可以休眠的,而且休眠也不那么必需我觉得tail

Reply View the author
SU🌳
deepin
2022-09-12 23:49
#8

不管怎么说,只要SWAP有占用,不管占用多少M系统卡得要死。

Reply View the author
wtz
deepin
2022-09-13 00:48
#9

如果用的是叠瓦盘的话就别搞swap了。

Reply View the author
SamLukeYes
deepin
2022-09-13 01:06
#10
SU🌳

不管怎么说,只要SWAP有占用,不管占用多少M系统卡得要死。

不至于,这通常是不恰当的配置导致的。如果实在担心硬盘上的 swap 影响性能,可以用 zram swap。

Reply View the author
SamLukeYes
deepin
2022-09-13 01:07
#11
wtz

如果用的是叠瓦盘的话就别搞swap了。

zram 还是可以有的

Reply View the author
xuqi
deepin testing team
2022-09-28 19:45
#12

like

Reply View the author
vivian_me
deepin testing team
2022-10-10 23:30
#13

感谢分享呀

Reply View the author