Skip to content

Commit 82908b4

Browse files
committed
fix (about_Swap_on_linux): fix description
1 parent e7ba8e2 commit 82908b4

File tree

1 file changed

+20
-7
lines changed
  • content/posts/about_swap_on_linux

1 file changed

+20
-7
lines changed

content/posts/about_swap_on_linux/index.md

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,9 @@ title = '关于Linux的swap那些事情'
5656

5757
`ZSWAP` 其实不会创建一个块,但是需要 `swap` 的存在,当系统打算往 `swap` 里面写入数据的时候,`ZSWAP` 会拦截写入,然后进行压缩到内存中的一部分区域。
5858

59-
`ZSWAP` 同样会在内存压力高的时候驱逐匿名页到 `swap` 中,这一点跟 `ZRAM` 很像,从 `Linux 6.8` 开始,支持禁用回写块,仅仅用作内存压缩。
59+
`ZSWAP` 同样会在内存压力高的时候驱逐匿名页到 `swap` 中,这一点跟 `ZRAM` 不一样,因为如果长期 `ZRAM` 占满,那么系统就会转而使用磁盘 `SWAP` 交换,此时变慢会变得很明显(尤其是磁盘速度较慢的时候)。
60+
61+
`Linux 6.8` 开始,支持禁用回写块,仅仅用作内存压缩。
6062

6163
---
6264

@@ -66,21 +68,27 @@ title = '关于Linux的swap那些事情'
6668

6769
既然这两者都可以在使用时相互替代,那么究竟如何选择呢?
6870

69-
我的推荐是,如果内存足够,也要使用休眠的设备,比如笔记本之类,使用 `ZSWAP` 并且禁用回写块。这样 `swap` 就专注于配置休眠,至于避免 `OOM` 来说,笔记本应该不会有需要很多内存的场景...吗?
71+
### 桌面环境
72+
73+
如果内存足够,更推荐使用 `ZSWAP`
74+
75+
如要使用休眠,可以考虑禁用回写块。这样 `swap` 就专注于配置休眠,但这样负载高了就更容易出现 `OOM`,这点需要权衡,一般也不会跑大型任务的时候考虑休眠吧?
76+
77+
### 其他环境
7078

71-
如果服务器,或者高性能的PC,那么还是推荐使用 `ZRAM` 加上一个小 `SWAP`,这样可以很好的避免了内存使用的尖锋,也享受了内存压缩的红利
79+
小内存的设备,比如安卓,更加倾向于 `ZRAM`。原因是 `ZSWAP` 要求真实的 `SWAP` 设备,但是闪存一般来说没那么耐写
7280

73-
但是全都要呢?还是配置 `ZRAM` 加上一个回写块,和一个休眠 `swap`。不过如果使用内存过多,还是会溢出到休眠的swap导致休眠失败。想要修改,可能得 HACK 一点的办法,在休眠前激活这个分区,然后再绕过检查...
81+
服务器可以使用 `ZRAM` 加上一个小 `SWAP`,这样可以很好的避免了内存使用的尖锋,也享受了内存压缩的红利。
7482

7583
不推荐同时使用 `ZSWAP``ZRAM`,这样会造成冲突。
7684

7785
---
7886

7987
两者有什么优势呢?
8088

81-
`ZSWAP`:管理起来更直观,因为是钩子,所以不会出现一个 `swap` 块。
89+
`ZSWAP`:管理起来更直观,对于桌面体验来说更加友好。因为是钩子,所以不会出现一个 `swap` 块。
8290

83-
`ZRAM`:不仅仅是内存压缩,实际上块设备可以格式化来存东西。
91+
`ZRAM`更适合小内存闪存不可多写的设备。不仅仅是内存压缩,实际上块设备可以格式化来存东西。
8492

8593
## 观察
8694
![zswap](zswap.webp)
@@ -93,4 +101,9 @@ title = '关于Linux的swap那些事情'
93101

94102
---
95103

96-
如果是一个 `ZRAM` 的设备,那么 `htop` 甚至可以单独调出一条来显示它,从观察角度来说,`ZRAM` 相对方便一些。
104+
如果是一个 `ZRAM` 的设备,那么 `htop` 甚至可以单独调出一条来显示它,从观察角度来说,`ZRAM` 相对方便一些。
105+
106+
107+
## 参考
108+
109+
(电源管理/挂起与休眠 - Arch Linux 中文维基)[https://wiki.archlinuxcn.org/wiki/%E7%94%B5%E6%BA%90%E7%AE%A1%E7%90%86/%E6%8C%82%E8%B5%B7%E4%B8%8E%E4%BC%91%E7%9C%A0#Disable_zswap_writeback_to_use_the_swap_space_only_for_hibernation]

0 commit comments

Comments
 (0)