Zswap、Zram、Zcache桌面使用场景

Zswap、Zram、Zcache桌面使用场景

我一直试图理解其中的区别用例适用于 Zswap、Zram 和 Zcache。对于这个长/措辞稍显草率的问题提前表示歉意。我做了很多谷歌搜索,我了解到 zram 基本上是一个用于压缩交换的块设备,而 zswap 使用 frontswap api 在内核中进行压缩。看来zswap的一个优点是它可以在压力下以LRU方式将一些页面移动到后备交换区,而zram则不能这样做(请确认,不确定这是否属实)。

所以这是我的问题: 1.)作为桌面用户,zcache/zswap/zram 之间的性能差异是什么,特别是 zswap 和 zram?例如,内存碎片(导致内存过度使用和浪费的那种)是否更好/更差?

额外问题:2.) 对于桌面性能(包括桌面的响应能力,加上破坏性最小的交换行为和健全的内存管理),是否存在上述(例如,zram+zswap 或 zram+zcache)的理想组合?

*非常感谢引用来源。

我应该补充一点,我是一个经验丰富的 Linux 用户(5 年),并且尝试真正理解我的系统(包括内核)是如何工作的。然而,我不是程序员,只有非常基础的编程知识(3学分的大学课程)。但如果需要的话,请具备技术性;我会用自己的时间解析你的意思。

系统规格:

Linux Mint 15
Processor:Core 2 Quad 6600 (2.4ghz)
Ram: 8G
linux kernel: liquorix 3.11 series
Storage: 128 GB SSD, 1TB HDD 5400rpm

请不要发表“购买更多内存”的评论!我已经在这块主板上最大化了内存,并且在可预见的未来有 0 美元的升级预算。然而,我喜欢保持开放的内存密集型程序(多个浏览器是我的内存的主要消费者),所以我不介意在合理的性能下降限制内进行交换。

答案1

我尝试回答这些问题的最好方法就是说出这三个问题实际上是什么。

零内存

zRAM 本质上只不过是一个交换设备。内存管理会将页面推送到交换设备,zRAM 将压缩该数据,根据需要分配内存。

零交换

Zswap 是一个压缩交换空间,由内核内部分配,并不显示为交换设备。 frontswap 使用它的方式与交换设备的使用方式相同,但方式更有效。

Z缓存

Zcache 是 frontswap 和 cleancache 的前端。

Zcache 取代了 zRAM,因此您并不希望它们两者争夺资源,尽管有一些讨论关于两者如何在适当的情况下良好地协同工作。现在我不会费心去尝试,让专家来解决这个问题。

一些阅读:
Cleancache 与 zram?
https://lwn.net/Articles/454795/
https://www.kernel.org/doc/Documentation/vm/zswap.txt
http://www.zeropoint.com/Support/ZCache/ZCachePro/ZCacheAdvantages.html

就我个人而言,我刚刚在所有具有足够新内核的系统上禁用了 zRAM 并启用了 Zcache(在 Android 设备上仍启用了 zRAM)。

至于表现:那是你必须审视自己的事情。每个人都是不同的。不过,从理论上讲,Zcache 的内存效率应该比 zRAM 高得多,并且它在两个级别上工作(frontswap 和 cleancache),并且它可以根据需要分页到交换设备(例如,在硬盘驱动器上)。您还可以选择使用哪种压缩算法,如果它使用太多的 CPU(我无法想象它会)。

更新:Zcache 已从 3.11 内核中删除(目前),因此 zRAM 再次成为较新内核中的唯一选项。 https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1256503/comments/3 http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=96256460487387d28b8398033928e06eb9e428f7

相关内容