在没有 SWAP 的系统上安装 zRam 有什么好处吗?

在没有 SWAP 的系统上安装 zRam 有什么好处吗?

这里运行的是 Ubuntu 12.10,系统为 128Gb SSD 和 4GB RAM。自从安装了操作系统后,我意识到我不需要交换分区,因为我从不使用休眠功能,而且很少用完 RAM。但是,即使没有交换分区,当 RAM 已满时,安装 zRam 会带来任何真正的改善吗?

答案1

我认为是否有交换空间与 zRam 的实用性无关。无论是否安装了 zRam,如果内存不足且没有交换空间,就会发生糟糕的事情。:-)

如果您确实预计 RAM 会用完,那么 zRAM 可能会有所帮助,因为它本质上扩大了您可以存储在 RAM 中的数据量(假设它的熵不是过高),因此需要更长的时间才能填满。因此,如果您没有存储大量随机数,它可能会为您赢得更多时间。

如果您 99.9% 确定您的 RAM 不会耗尽(即您的仅用于网络的上网本上有 16GB),那么存储在 zRAM 中的任何内容都会不必要地需要额外的 CPU 时间来压缩和解压缩,所以在这种情况下它没有什么好处。

如果您的 RAM 使用率较高(例如平均超过 50-60%),那么使用 zRAM 可能会让您更加安心。(或者您可以购买更多 RAM。)

我想你必须评估你的正常和重负载的 RAM 利用率(平均值和最大值)以及你处理的数据类型。

答案2

是的,启用 zRAM 当然是最好的事情。为什么意味着 zRAM 将创建一个基于 RAM 的块设备,该设备充当交换磁盘,但被压缩并存储在内存中而不是交换磁盘中,从而允许非常快速的 I/O 并增加在系统开始交换到磁盘之前可用的内存量。

实际上,compcache 是原来的名称,现在已更改为 zRAM。

你可以使用以下命令安装sudo apt-get install zram-config

答案3

zRAM 仅在需要时才会使用,因此如果您不需要它,启用它不会有任何效果。我非常怀疑您在需要它时是否会注意到它正在工作。

答案4

我想说的是,如果 Linux 内核确实运行完美,那么使用 zRam 而没有真正的交换可能是毫无意义的,除非你确实知道 RAM 内容会压缩得很好,而你的 RAM 有点不够。

但是,我运行的系统有 32 GiB 的 RAM,没有真正的交换,我已经安装zram-config但修改/etc/init/zram-config.conf为仅使用 5% 的 RAM 作为 zram(而不是默认的 50%)。这允许内核看到一些交换,但该交换比任何 SDD 都快得多。因此,内核内所有与交换相关的代码路径都可以使用,我认为这已经解决了我在没有交换时遇到的一些问题。(也就是说,在我看来,当 RAM 碎片化并且系统没有任何交换时,内核不够聪明,无法解决这个问题。但是,使用 zRam 或 ramdisk 上的交换,内核能够将页面移动到交换并在交换期间重新定位。不过,这只是我的理论。)

TL;DR:没有真实交换空间的系统中 zRam 允许内核使用所有与交换相关的代码路径,这可能会避免一些错误。

相关内容