sta*_*icd 74 performance swap kernel ram
sta*_*icd 95
关于这三个系统有很多东西,但都没有对它们进行简单的比较,更不用说很好地解释它们了。我试图理解它,但我的头爆炸了。然后我以为我明白了,所以我试着把它写下来,我的头又爆炸了。(请参阅实现摘要)我认为在此处发布此内容会很有用,因为有许多关于它们之间成对比较的 stackexchange 问题。
ZRAM: 在 RAM 中创建交换设备。此处发送的页面在存储时会被压缩。它比其他交换设备具有更高的优先级:被换出的页面优先发送到 zram 设备,直到它已满,然后才使用任何其他交换设备。
ZSWAP:该frontswap
系统挂钩尝试换出的页面和用途zswap作为回写缓存的HDD / SSD交换设备:试图压缩页面,如果它不好包含可压缩数据是直接写入到磁盘中。如果数据被压缩,则存储在 zswap 内存池中。如果当 RAM 中的总压缩页面超过特定大小时页面被换出内存,则最近最少使用 (LRU)压缩页面将写入磁盘,因为它不太可能很快被需要。
ZCache:它是 Transcendent 内存系统的后端。超验内存提供了类似 RAM 的内存,通过使用put
和get
调用,一次只能访问一个页面。这与一次可以访问一个字节的普通内存不同。在frontswap
与cleancache
系统挂钩的企图交换和回收文件系统缓存页分别并将它们发送到超越的存储后端。当zcache用作后端时,数据被压缩并存储在RAM中。当它填满时,压缩的页面被驱逐到交换区。(另一个后端是 RAMster,它在联网的计算机之间共享一个 RAM 池)。仅使用frontswap
前端与zcache
后端的工作方式就像zswap
. (其实zswap是zcache的一个简化子集)
我找到的最好的资源是:
关于2.,zswap 似乎确实解压了回写页面,证实了@Cbhihe 的评论。
mm/zswap.c,第 828 行:
/*
* 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
Run Code Online (Sandbox Code Playgroud)
因此,zswap 对于压缩的内存缓存在写回磁盘之前可能很快被遗忘的情况非常有用。它不适用于具有大型且长期存在的堆的应用程序,这些堆最终需要实际交换设备的支持。
归档时间: |
|
查看次数: |
68281 次 |
最近记录: |