zswap是什么

六六QA2021-04-12 04:18:45阅读(...)

zswap是一项Linux内核的虚拟内存压缩功能,可为将要交换的页面提供压缩回写缓存。

zswap 是一项 Linux 内核的虚拟内存压缩功能,可为将要交换的页面提供压缩回写缓存。

zswap是什么

简介

当内存页将要交换出去时,zswap 不将其移动到交换设备,而是对其执行压缩,然后存储到系统 RAM 内动态分配的内存池中。回写到实际交换设备的动作则会延迟,甚至能完全避免,从而显著减少 Linux 系统用于交换的 I/O;副作用则是压缩所需的额外 CPU 周期。zSWAP 并不虚拟一个块设备,而是 hook 到普通的 swap 代码里,在实际发生写入到磁盘/从磁盘读取的操作前,先利用自己管理的内存进行数据的换出/换入,内存不够用以后再使用传统的 swap 分区。所以 zSWAP 适用于本身已经有交换分区的系统,而 zRAM 更适合 Android 这样本身不配置交换分区的嵌入式系统。

发展背景

3.11 版 Linux 内核丰要实现了以下新功能:加入了用于创建安全临时文件的标识位 OTMPFILE;实验性的 Radeon 显卞动态电源管理支持,需要传递 radeon.dpm=1 参数启用;针对并行分布式文件系统 Lustre 的客户端支持;初步支持 NFS42 和具备 SELinmx 标签的 NFS 分区;详细的页面写入历史追踪等。此外还改善了 SYSVIPc 消息队列扩展性,允许应用程序请求低延迟网络 Polling,并增加可压缩交换分区缓存 Zswap。

zswap 与 zRam

zRam 其实有两个很大的问题,就是当内存快填满的时候,zRam 本身会试图向内存返回数据,而系统会试图向 zRam 中填充数据。

zRam 的实现是把自己虚拟成一个 swap 分区。而 zSwap 则是介入了内核的 swap 过程,将所有被系统 swap 出来的数据全部截留,存入自己的存储器中。这种实现方式有个好处,就是能和真正存在于硬盘上的 swap 分区联合使用。也避免了 zRam 的两大问题。  因为 zSwap 在面临内存不足时可以向 swap 分区写入数据,而不会试图向内存中返回数据。另一方面,如果有大段内存被空闲程序占据,zSwap 可以把这些数据填入硬盘中。由于这些内存极少被使用,所以存入较慢的硬盘也不会影响运行速度。

zSwap 其实可以工作在和 zRam 一样的模式下,只要不要设置 swap 分区即可。

收藏0个人收藏
走进科技生活方式