我这里有一台旧笔记本电脑,只有 512 MB 内存。自从几个内核版本发布以来,我正在使用兹拉姆将其中 256 MB 转换为压缩的 ramdisk,然后将其用作交换区。事实证明,这是非常成功的,系统的响应速度更快,(硬盘支持的)交换使用率大幅下降,这导致之前的系统速度减慢。
从linux 3.0开始,内核还包括清理缓存使用 zram 之类的东西作为后端应该透明地压缩页面缓存中的页面。据我所知,这与兹拉姆。
我应该在笔记本电脑上同时启用这两个功能吗?或者确实清理缓存实际上取代了兹拉姆解决方案?
编辑:我找到了这个gentoo 论坛链接,似乎我还必须启用CONFIG_ZCACHE
它,然后使清理缓存使用兹拉姆获得与我以前拥有的类似的东西。所以看来我启用了所有这些并且不使用兹拉姆之后明确。有人能证实这一点吗?
答案1
Zram 创建一个由压缩 RAM 支持的块设备。您可以使用该块设备进行交换。通常内存压力首先导致缓存被丢弃,只有在大部分缓存被释放并且内存仍然紧张时系统才会开始交换。
CleanCache 允许将页面缓存中的页面迁移到后端,例如 xen tmem,它是由虚拟机管理程序管理并在多个 VM guest 虚拟机之间共享的内存。这样做的目的是允许多个虚拟机来宾使用相同的内存来缓存相同的数据,而不是每个虚拟机都拥有自己的缓存和相同数据的自己的副本。
ZCache 是另一个 CleanCache 后端。它不是将内存传递给虚拟机管理程序来保存(这仅适用于使用 Xen VM 环境的情况),而是存储压缩在 ram 中的缓存页面,类似于 Zram。不同之处在于,ZCache 透明地存储缓存页面,但 Zram 创建一个可用于交换的块设备。
如果您有内存消耗大的应用程序,那么您将需要交换空间来支持它们,因此您仍然需要使用 zram(可能具有非常高的交换值)。这是因为 CleanCache 只压缩缓存页;应用程序内存必须发送到交换区。如果您没有在应用程序上使用所有内存,则可以将 CleanCache 与 ZCache 后端结合使用,通过压缩磁盘缓存来更有效地利用剩余内存进行磁盘缓存。您甚至可以混合使用这两种技术。
答案2
作为上述答案的补充,另请参阅https://lwn.net/Articles/454795了解该技术的详细解释。
据我了解,兹拉姆将被取代前交换,它尚未出现在主线内核中,但其优点是无需配置固定的交换大小。这将使启用两者变得容易清理缓存和前交换(代替兹拉姆和清理缓存,其中内存用于兹拉姆不能用于清理缓存)。