首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >zram vs zcache终极指南:何时使用哪一个

zram vs zcache终极指南:何时使用哪一个
EN

Ask Ubuntu用户
提问于 2014-05-25 13:29:59
回答 2查看 78.1K关注 0票数 86
  1. 他们到底是什么?它们有什么不同(我在下面的答案中写了我的理解)
  2. 在Zswap系统中,当页面从zswap中被解压缩到实际交换区时,它是否存储在压缩后的交换区中?(或者它是在存储前解压的?,AFAICT仍然是压缩的,但我不能肯定)
  3. zcache的当前状态是什么?很明显是被移走了或者是在3.11里。这是什么意思?(http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=96256460487387d28b8398033928e06eb9e428f7)
EN

回答 2

Ask Ubuntu用户

回答已采纳

发布于 2016-10-12 12:18:31

对于2.,zswap似乎确实可以解压回传中的页面,从而确认@Cbhihe的评论。

mm/zswap.c,第828行:

代码语言:javascript
复制
/*
 * Attempts to free an entry by adding a page to the swap cache,
 * decompressing the entry data into the page, and issuing a
 * bio write to write the page back to the swap device.
 * ...
 */
static int zswap_writeback_entry(struct zpool *pool, unsigned long handle)
{
    ...
    
    case ZSWAP_SWAPCACHE_NEW: /* page is locked */
        /* decompress */
        ...
        
        ret = crypto_comp_decompress(tfm, src, entry->length,
                         dst, &dlen);
        ...
        kunmap_atomic(dst);    


$ git show
commit 1573d2caf713874cfe0d1336c823d0fb548d8bed
Merge: 4cdf8db 0a86248
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Tue Oct 11 23:59:07 2016 -0700

因此,在将压缩后的内存缓存写回磁盘之前很可能会忘记的情况下,zswap是有用的。它并不适用于大的、长寿命的堆,最终需要由实际的交换设备来支持。

票数 4
EN

Ask Ubuntu用户

发布于 2014-05-26 04:29:31

这三个系统有很多东西,但它们之间没有一个简单的比较,更不用说很好地解释它们。我想弄明白,但我的头爆炸了。然后我以为我拿到了,于是我试着把它写下来,然后我的头又爆炸了。(参见实现摘要)我认为在这里发布这篇文章会很有用,因为有许多stackexchange问题询问它们之间的两两比较。

关于在什么情况下使用的摘要:

  1. 如果在HDD/SSD上没有交换设备,则使用ZRAM。
  2. 如果您在HDD/SSD上有一个交换设备,ZSWAP。
  3. ZCACHE:它执行ZSWAP所做的工作,并压缩和加速文件系统页缓存。(它在内部要复杂得多,而且由于它还在开发中,所以不在主线内核中)。

实现摘要:

  1. ZRAM是一种基于压缩RAM的块设备(可用于交换)
  2. 如果已经有了交换,则ZSWAP是一个压缩缓存。
  3. ZCache是一种特殊类型的虚拟内存(超验内存)的后端,可用于缓存文件系统页或交换数据。

详细信息:

  • ZRAM:在RAM中制作一个块设备。当写入一个块时,该块将被压缩。当用作交换设备时,zram比其他交换设备具有更高的优先级:交换的页面优先发送到zram设备,直到它满了为止,只有这样才会使用任何其他交换设备。
    • 优点:独立于其他(物理)交换设备。当没有交换分区来扩展可用内存时,可以使用它。
    • 缺点:如果存在其他交换设备(HDD/SSD),则不会以最佳方式使用。由于zram设备是一个独立的交换设备,一旦它满了,任何需要交换的新页面都会直接发送到下一个交换设备,因此:。
      1. LRU (最近使用最少的)反转的可能性很大:它将是最近交换到缓慢磁盘的数据,而很久以前被替换掉的非活动页将保留在快速ZRAM中。
      2. 发送到磁盘并从磁盘读取的数据将在未压缩的情况下消耗大量带宽。

代码语言:javascript
复制
- **Status:** Merged into the mainline kernel 3.14. Once enabled on a system, it requires some userspace configuration to set up the swap devices and use them.
  • ZSWAP:frontswap系统挂钩尝试交换页面,并将zswap用作HDD/SSD交换设备的写回缓存:尝试压缩页面,如果它包含不可压缩的数据,则直接写入磁盘。如果数据被压缩,则将其存储在zswap内存池中。如果内存中的总压缩页超过一定大小时,内存中的页被交换出内存,则将最近使用最少的(LRU)压缩页写入磁盘,因为不太可能很快需要它。
    • 优点:非常有效地使用RAM和基于磁盘的交换。通过减少所需的写入和读取次数(数据被压缩并保存在RAM中)和减少这些I/O操作的带宽,从而使磁盘I/O最小化,因为数据是以压缩形式存在的。
    • 限制:它是基于磁盘的交换系统的增强,因此依赖于硬盘上的交换分区。
    • 状态:合并到3.11主线linux内核中。

  • ZCache:它是超越式内存系统的后端。超验内存提供了一个类似RAM的内存,只能通过putget调用一次访问一个页面。这与普通内存不同,普通内存一次可以访问一个字节。frontswapcleancache系统钩子分别尝试交换和回收文件系统页面缓存,并将它们发送到超越性内存后端。当zcache用作后端时,数据被压缩并存储在RAM中。当它被填满时,压缩的页面将被逐出到交换区中。(另一个后端是RAMster,它在联网的计算机上共享一个内存池)。只使用frontswap前端和zcache后端,就像使用zswap一样。(实际上zswap是zcache的一个简化子集)
    • 优点为交换和文件系统缓存提供压缩缓存。
    • 状态:由于它非常复杂,并且正在进行中,它仍然没有被主流化。

我找到的最好的资源是:

票数 108
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/471912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档