Zswap、Zram、Zcache 桌面使用场景

War*_*ren 12 linux swap virtual-memory memory-management

我一直在尝试了解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
Run Code Online (Sandbox Code Playgroud)

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

Ken*_*arp 8

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

内存

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

交换

Zswap 是内核内部分配的压缩交换空间,不会作为交换设备出现。Frontswap 使用它的方式与使用交换设备的方式相同,但以更有效的方式使用。

高速缓存

Zcache 是frontswap 和cleancache 的前端。

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

一些阅读:
Cleancache vs 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(zRAM 仍然在 Android 设备上启用)。

至于性能:那是你必须自己研究的东西。每个人都不一样。不过,理论上,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