ZRAM 与磁盘交换分区对比测试

ZRAM 与磁盘交换分区对比测试 __2023年4月30日 __3条评论 __334次阅读 __0人点赞 __Tao_Qi 在内存比较捉急的小鸡上,开启 swap 可以减少出现 OOM 而杀掉进程的情况。然而用硬盘分区作为 swap 有几个明显的缺陷:一是速度慢,二是影响其他进程磁盘 io 的速度。 ZRAM 在安卓手机上几乎都是默认开启的,它相对于磁盘交换分区的优势是不会影响其他 io 进程,缺点是更吃 CPU。 前段时间开了一台 bytevirt 的 214M 内存的小鸡。这么小的内存用 alpine 应该比较合适,但是 openrc 我不会用,所以装了 debian,这样就肯定要开 swap 了。但是这家的 SSD 速度感人 : 用 sysbench 测试顺序读写:
[code]

Throughput:
    read, MiB/s:                  340.05
    written, MiB/s:               0.00

Throughput:
    read, MiB/s:                  0.00
    written, MiB/s:               93.66

[/code]

16K 随机读写:
[code]

Throughput:
    read, MiB/s:                  6.55
    written, MiB/s:               4.37

[/code]

我发现论坛上几乎没有讨论 ZRAM):
[code]

7-Zip (z) 22.01 (x64) : Copyright (c) 1999-2022 Igor Pavlov : 2022-07-15
 64-bit locale=C.UTF-8 Threads:1

 d24
Compiler: 10.2.1 20210110 GCC 10.2.1
Linux : 5.10.0-15-cloud-amd64 : #1 SMP Debian 5.10.120-1 (2022-06-09) : x86_64
PageSize:4KB THP:never hwcap:2 hwcap2:2
Intel(R) Xeon(R) CPU E3-1241 v3 @ 3.50GHz (306C3) 

1T CPU Freq (MHz):  3567  3439  3446  3505  3473  3460  3438

RAM size:     181 MB,  # CPU hardware threads:   1
RAM usage:    220 MB,  # Benchmark threads:      1

                       Compressing  |                  Decompressing
Dict     Speed Usage    R/U Rating  |      Speed Usage    R/U Rating
         KiB/s     %   MIPS   MIPS  |      KiB/s     %   MIPS   MIPS

22:       3403   100   3326   3311  |      41719   100   3574   3562
23:       2786    90   3151   2839  |      40143    99   3500   3475
24:         27    46     64     30  |      39143    99   3460   3436
----------------------------------  | ------------------------------
Avr:      2072    79   2180   2060  |      40335    99   3512   3491
Tot:              89   2846   2776

[/code]

磁盘 swap 组:
[code]

                       Compressing  |                  Decompressing
Dict     Speed Usage    R/U Rating  |      Speed Usage    R/U Rating
         KiB/s     %   MIPS   MIPS  |      KiB/s     %   MIPS   MIPS

22:       3621    99   3560   3523  |      42135    99   3627   3598
23:       3119    97   3260   3178  |      40484    99   3551   3504
24:         20     9    256     22  |      36118    92   3438   3171
----------------------------------  | ------------------------------
Avr:      2253    68   2359   2241  |      39579    97   3539   3424
Tot:              83   2949   2833

[/code]

测试结果的说明可以参考这里。 这里的关键数据是 Dict=24 时的 Compressing 部分,只有这部分高强度使用交换分区。截取出来是:
[code]

// zram
Dict     Speed Usage    R/U Rating
         KiB/s     %   MIPS   MIPS
24:         27    46     64     30

[/code]
[code]

// 磁盘 swap
Dict     Speed Usage    R/U Rating
         KiB/s     %   MIPS   MIPS
24:         20     9    256     22

[/code]

其中 Speed 项,即压缩速度,尽管 zram 用的不是最快的算法(没有用 lz4 而是 zstd),zram 还是比磁盘 swap 快了 35%,这就是本次测试的结论。 再看 Usage 项,即 CPU 使用率,zram 组为 46%,其余时间在进行 zram 压缩/解压缩;而磁盘 swap 组只有 9%,其余时间在等待磁盘 io。 最后的结论是,在硬盘不太快的 vps 上,建议使用 zram 作为交换空间。 本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议

  1. nsx-na1说道: 2023年4月30日 上午5:32
  2. nsx-na1说道: 2023年4月30日 上午5:40 Dict=24以外的部分可以忽略,因为几乎没有使用交换分区。

Dict=24的压缩部分运行的时间非常长,有十几分钟,速度误差应该很小。这部分测试内存占用一直保持90%,交换分区占用130-250MB。 回复

  1. nsx-na1说道: 2023年4月30日 上午5:55

发表回复 取消回复电子邮件地址不会被公开。必填项已用 标注 __ __

本文著作权归作者 [ doudoudoubao ] 享有,未经作者书面授权,禁止转载,封面图片来源于 [ 互联网 ] ,本文仅供个人学习、研究和欣赏使用。如有异议,请联系博主及时处理。

发表留言