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 国际许可协议
nsx-na1说道: 2023年4月30日 上午5:32
nsx-na1说道: 2023年4月30日 上午5:40 Dict=24以外的部分可以忽略,因为几乎没有使用交换分区。
Dict=24的压缩部分运行的时间非常长,有十几分钟,速度误差应该很小。这部分测试内存占用一直保持90%,交换分区占用130-250MB。 回复
nsx-na1说道: 2023年4月30日 上午5:55
发表回复 取消回复电子邮件地址不会被公开。必填项已用 标注 __ __