ZRAM 与 ZSWAP 是否更适合低端硬件?

ZRAM 与 ZSWAP 是否更适合低端硬件?

我花了两天时间研究这两个可以节省一点内存的功能。以下是我对它们的理解:

  • ZRAM:一旦 RAM 的使用率达到 100%(或剩余的不可压缩内存),它就会压缩一些数据并将其放入 ZRAM 交换中以降低 RAM 使用率。如果交换设备空间不足,则 ZRAM 开始写入磁盘/SSD 交换(如果存在)。

  • ZSWAP:与 ZRAM 类似,当 RAM 使用率达到 100%(或者当 RAM 使用率达到“不可压缩内存大小”限制时)时,数据开始被压缩并存储在 ZSWAMP 池中,一旦该池已满,最近最少使用的块将写入磁盘/SSD 交换。如果该块不可压缩,则数据将直接写入磁盘/SSD 交换。

我说得对吗?

1-这两者中哪一个使用更多的CPU?

2- 对于 RAM 较低的设备来说哪个更好?

3- 对于配备 HDD 的设备,哪个更好?(因为 HDD 与 SSD 相比速度太慢)

我有 8GB RAM 和 1TB HDD,以及 i5-9400f CPU。我很难做决定,因为我的 RAM 很低,而且存储设备很慢,而不是 SSD。

答案1

1-这两者中哪一个使用更多的CPU?

显然,ZRAM 会尝试压缩所有内容,甚至是不可压缩的数据,并将其保存在分配的压缩缓存中,从而浪费 RAM 空间和 CPU。

2- 对于 RAM 较低的设备来说哪个更好?

ZSWAP 在几乎所有情况下都表现更好,因为它的 RAM 缓存是动态的,可以根据需要缩小或扩展。因此内存管理效率更高。

3- 对于配备 HDD 的设备,哪个更好?(因为 HDD 与 SSD 相比速度太慢)

ZSWAP,因为它可以更好地利用 RAM。

答案2

正如 harrymc 在他的回答中所说,ZSWAP 中的 RAM 使用效率更高。但是,我认为这个结论并不完整。它过于专注于这个小方面。我明白他的意思,但这个确切的答案让我相信 ZSWAP 总是更好。在切换到使用 ZRAM 的 Fedora Silverblue 后,我在我的机器上经历了相反的情况,在内存压力下,它应该工作得更糟。但它的效果要好得多,所以我做了很多调查,想添加我的想法,并尝试解释可能导致差异的原因。

一如既往,这取决于哪种更好。工作量将产生影响。

我想补充一点:ZSWAP 会增加硬盘驱动器对不可压缩数据的 IO 负载。它根本不会将数据保存在 RAM 中,而是始终将其写入磁盘。如果应用程序依赖于快速硬盘驱动器(高 IO 负载),这可能会导致应用程序性能大幅下降。

对于 HDD 来说,这个问题确实很严重。对于 HDD 的使用,我个人总是默认使用 ZRAM,而不是 ZSWAP。

但即使在 SSD 上,这也很容易带来更好的性能,尤其是延迟。查看任何 SSD 的性能基准时,您会发现,在随机读取 4k 块时,它们的性能确实不太好;因此,如果您的 NVME PCIE Gen5 SSD 以每秒 80MB 的速度读取数据,那么这比 ZRAM 在现代 CPU 上的速度要慢得多(大约 100 倍)。这对实际工作负载的影响有多大还有待测试,根据我的经验,在台式机上 ZRAM 的表现要好得多。

另一方面,如果存在大量不可压缩的数据,ZRAM 就无法对这些数据做任何有用的事情;它会消耗 CPU 时间来(不)压缩它,最终导致 RAM 太少。

相关内容