Cleancache vs zram?

lyt*_*nyn 9 linux kernel cache swap zram

我这里有一台只有 512 MB 内存的旧笔记本电脑。由于一些内核版本,我使用zram将其中的 256 MB 转换为压缩的 ramdisk,然后用作交换。这已被证明是非常成功的,并且系统响应更快,(硬盘支持的)交换使用率大幅下降,这使系统之前变慢了。

从 linux 3.0 开始,内核还包含cleancache,它使用 zram 之类的东西作为后端应该透明地压缩页面缓存中的页面。据我所知,这与zram不同。

我应该在我的笔记本电脑上启用这两个功能吗?还是cleancache实际上取代了zram解决方案?

编辑:我找到了这个gentoo 论坛链接,在那里我似乎还必须启用CONFIG_ZCACHE它,然后让cleancache使用zram来获得类似于我以前的东西。所以似乎我启用了所有这些并且之后没有明确使用zram。有人可以证实这一点吗?

psu*_*usi 9

Zram 创建了一个由压缩 ram 支持的块设备。您可以使用该块设备进行交换。通常内存压力首先导致缓存被丢弃,只有在大部分缓存被释放并且内存仍然紧张后,系统才会开始交换。

CleanCache 允许将页面缓存中的页面迁移到后端,例如 xen tmem,它是由虚拟机管理程序管理并在多个 VM 来宾之间共享的内存。这样做的目的是允许多个 VM 来宾使用相同的 ram 缓存相同的数据,而不是每个都拥有自己的缓存和相同数据的自己的副本。

ZCache 是另一个 CleanCache 后端。它不是将内存传递给虚拟机管理程序来保存(这仅适用于您使用 Xen VM 环境的情况),而是将缓存页面存储在 ram 中,类似于 Zram。不同之处在于 ZCache 透明地存储缓存页面,但 Zram 创建了一个可用于交换的块设备。

如果您有内存占用的应用程序,那么您将需要交换空间来支持它们,因此您仍然希望使用 zram(可能具有非常高的 swappiness 值)。这是因为 CleanCache 只压缩缓存页面;必须将应用程序内存发送到交换。如果您没有在应用程序上使用所有内存,那么您可以将 CleanCache 与 ZCache 后端一起使用,通过压缩磁盘缓存来更有效地利用剩余内存进行磁盘缓存。您甚至可以混合使用这两种技术。


lyt*_*nyn 7

作为上述答案的补充,还可以参阅https://lwn.net/Articles/454795以获取对该技术的详细说明。

据我了解,zram将被frontswap取代,它尚未出现在主线内核中,但具有无需配置固定交换大小的优点。这将使同时启用cleancachefrontswap(而不是zramcleancache,其中用于zram 的内存不能用于cleancache)变得容易。