32

有谁知道 Linux 内核中的 ZRAM 和 ZSWAP 功能有什么区别?似乎它们非常相似——将压缩页面存储在 ram 中。

4

2 回答 2

54

兹拉姆

  • 状态:自 3.14 版(2014 年 3 月)起在主线内核中可用

  • 实现:压缩块设备,内存在数据存储时动态分配

  • 用途:将 zram 块设备配置为交换设备,以消除对物理交换设备或交换文件的需要

  • 好处

    1. 无需物理交换设备。当上网本第一次出现时,这种光束很受欢迎。Zram(然后是 compcache)允许用户避免交换,从而缩短这些内存受限系统中 SSD 的使用寿命。

    2. zram 块设备可用于交换以外的其他应用程序,任何您可能使用块设备的应用程序。

  • 缺点

    1. 一旦页面存储在 zram 中,它将一直保留在那里,直到页面被调入或失效。最先被调出的页面将是最旧的页面(LRU 列表),这些是不经常访问的“冷”页面。随着系统继续交换,它会移动到更热的页面(更频繁地访问),由于冷页面消耗的交换槽,这些可能无法存储。zram 不能做的(compcache 可以选择配置块支持设备)是将页面逐出到物理磁盘。理想情况下,您希望将内核内压缩交换空间中的数据老化到磁盘,以便您可以使用内核内存来缓存热交换页面或释放它以提高效率。

zswap

  • 状态:自 3.11 版(2013 年 9 月)起在主线内核中可用

  • 实现:用于交换页面的压缩内核缓存。内核缓存被压缩,压缩算法可使用 CryptoAPI 插入,页面存储是动态分配的。较旧的页面可以被逐出到磁盘,从而使其成为一种后写缓存。

  • 用途:缓存用于常规交换设备(或交换文件)的交换页。

  • 好处

    1. 与交换代码的集成(使用 Frontswap API)允许 zswap 选择仅存储压缩良好并处理内存分配失败的页面,在这些情况下,页面被发送到支持交换设备。

    2. 缓存中最旧的页面被推送到后备交换设备,为新页面腾出空间,这解决了缺少页面驱逐会出现的 LRU 反转问题。

  • 缺点

    1. 需要一个物理交换设备(或交换文件)。
于 2013-09-03T18:04:25.377 回答
17

ZRAM是 Linux 内核的一个模块,以前称为“compcache”。ZRAM 通过避免在磁盘上进行分页来提高性能,而是使用 RAM 中的压缩块设备进行分页,直到需要使用硬盘驱动器上的交换空间。由于使用 RAM 比使用磁盘快,zram 允许 Linux 在需要交换/分页时更多地使用 RAM,尤其是在安装较少 RAM 的旧计算机上。

ZSWAP是用于交换页面的轻量级压缩缓存。它获取正在被换出的页面并尝试将它们压缩到动态分配的基于 RAM 的内存池中。zswap 基本上用 CPU 周期换取可能减少的交换 I/O。如果从压缩缓存的读取速度比从交换设备的读取速度快,这种权衡还可以显着提高性能。

于 2013-08-26T05:41:43.660 回答