目的是用闲置的cpu周期来做ram中的压缩和解压缩。

Zram主要是通过Swap框架,把zram压缩池模拟成swap分区。

Key:交换分区的swp_entry_t,mkswapon时会每个swap分区都分配一个index,page_io时会申请空闲的swp_entry_t,同时存储在page结构体private中,方便后续缺页异常找到。

Zswap主要是通过frontswap框架,把匿名页在进入swap分区之前hook了,转移到自定义的压缩池。和Zram最大的区别是一定要有额外的真实的物理swap分区,不然那匿名页回收的时候根本看不到有swap空闲。另一点是Zswap的Hook是在达到swap分区之前实现的,因此会比Zram早接管。

Key:和Zram一样。

Zcache主要是通过Cleancache框架,把clean的文件页回收到压缩池。

当前只支持ext4、f2fs、btrfs文件系统,毕竟一个文件页的唯一性是superblock+inode+offset决定的。

Key: 文件系统+文件+文件偏移

参考:

In-kernel memory compression 翻译:内核内实现的内存压缩 - JciX ~

Documentation\vm\frontswap.rst

Documentation\vm\cleancache.rst

Documentation\vm\zswap.rst

Zram/Zswap/Zcache杂记相关推荐

  1. linux zram cpu开销,在cgroup下进行zram性能测试

    注意到zram有几个月时间了,据资料显示,最早使用内存压缩作为swap的,应该是苹果,从10.9开始支持,而Linux,有几种内存压缩的方法,分别是: zram,CentOS 6支持,但默认没有开启, ...

  2. kernel zram feature

    what is zram? Zram wiki zram zram(也称为 zRAM,先前称为 compcache)是 Linux 内核的一项功能,可提供虚拟内存压缩.zram 通过在 RAM 内的压 ...

  3. zRAM内存压缩技术原理与应用

    1. 技术背景 说到压缩这个词,我们并不陌生,应该都能想到是降低占用空间,使同样的空间可以存放更多的东西,类似于我们平时常用的文件压缩,内存压缩同样也是为了节省内存. 尽管当前android手机6GB ...

  4. Android6.0zram的作用,zram 简介

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 来源: https://pengzhangdev.github.io/zram/ 简介¶ 在linux内核的mm子系统中 ...

  5. linux服务器有必要开zram吗,Linux上开启zRAM

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 0x81 压缩内存 OS X 10.9添加了一项新特性,名字叫做压缩内存,在系统资源监视器里可以看到每个进程压缩后的内存 ...

  6. zRAM内存压缩技术分析及优化方向

    目录 1. zRAM出现的背景 2. zRAM软件架构 3. zRAM实现分析 3.1 zRAM驱动模块 3.2 数据流模块 3.3 压缩算法模块 3.4 zRAM读写流程 3.5 zRAM writ ...

  7. [原创]商城系统下单库存管控系列杂记(二)(并发安全和性能部分延伸)

      商城系统下单库存管控系列杂记(二)(并发安全和性能部分延伸)     前言   参与过几个中小型商城系统的开发,随着时间的增长,以及对系统的深入研究和测试,发现确实有很多值得推敲和商榷的地方(总有 ...

  8. Webpack系列-第一篇基础杂记

    系列文章 Webpack系列-第一篇基础杂记 Webpack系列-第二篇插件机制杂记 Webpack系列-第三篇流程杂记 前言 公司的前端项目基本都是用Webpack来做工程化的,而Webpack虽然 ...

  9. 黯然微信小程序杂记(三):微信小程序实现倒计时功能 附讲解教学 附源码

    黯然微信小程序杂记(三):微信小程序实现倒计时功能 附超详细注释 附源码 一.功能描述 二.界面展示 三.test.wxml代码 四.test.js代码(注释很详细 很易懂) CSDN私信我,有关微信 ...

最新文章

  1. 深度探秘.NET 5.0
  2. windows下python安装Numpy、Scipy、matplotlib模块
  3. 前端学习(3264):js中undefine中二相关属性
  4. 学习Spring Boot:(七)集成Mybatis
  5. 旧金山运输系统攻击者威胁将公布消费者和职工个人数据
  6. windows远程桌面无法粘贴复制的问题解决方法
  7. 【转】C#中base关键字的几种用法
  8. (个人)Linux基本指令收集
  9. mat opencv 修改roi_OpenCV开发笔记(七十三):红胖子8分钟带你使用opencv+dnn+yolov3识别物体...
  10. spring4.0.0的配置和使用
  11. 快速 二进制,八进制,十进制,十二进制转换 .源码,反码,补码,
  12. php 银行卡四要素验证,基于PHP的银行卡号实名认证(四要素)示例代码-六派数据...
  13. 危化品爆炸场景下的应急通信系统解决方案
  14. android删除本地图片,Android之删除图库照片
  15. 高分1(GF1)、高分2(GF2)卫星数据大气校正
  16. 高中关于人工智能方面的课题_人工智能的课题有什么研究方向
  17. R语言小白学习笔记12—概率分布
  18. 墨云saas系统总结
  19. 织梦调用banner图和栏目名称
  20. 基于web的IT技术论坛

热门文章

  1. 从零开始搭建Java开发环境第四篇:精选IDEA中十大提高开发效率的插件!
  2. scp 拷贝的两种方法
  3. Android 全局手势识别原理
  4. 火车头发布本地html,火车浏览器新浪博客自动调取本地文件发布脚本
  5. 申请专利的流程及步骤
  6. Macof泛洪攻击实验
  7. spring 配置文件报错 Cannot resolve class or package
  8. 基于最新导则下生态环评报告编制技术暨报告篇、制图篇、指数篇、综合应用篇系统性实践技能提升
  9. plsa主题模型matlab代码
  10. 种群内禀增长率matlab求法,[数学]微分方程模型.ppt