当前位置:网站首页>【ELT.ZIP】OpenHarmony啃论文俱乐部—数据密集型应用内存压缩
【ELT.ZIP】OpenHarmony啃论文俱乐部—数据密集型应用内存压缩
2022-06-27 16:19:00 【InfoQ】
- 本文出自
ELT.ZIP团队,ELT<=>Elite(精英),.ZIP为压缩格式,ELT.ZIP即压缩精英。
- 成员:
- 上海工程技术大学大二在校生
- 合肥师范学院大二在校生
- 清华大学大二在校生
- 成都信息工程大学大一在校生
- 黑龙江大学大一在校生
- 华南理工大学大一在校生
- 我们是来自
6个地方的同学,我们在OpenHarmony成长计划啃论文俱乐部里,与华为、软通动力、润和软件、拓维信息、深开鸿等公司一起,学习和研究操作系统技术…
揭秘谷歌应用EROFS到安卓的原因
EROFS为何能在文件压缩系统领域大放光彩
神秘的LZ4m如何给内存压缩领域带来新的生机

介绍
数据密集型(data-intensive)
数据密集型WKdmLZ4mWKdmLZ4 分析
从算法上看

- LZ4 主要在其
滑动窗口与哈希表部分,滑动窗口每次扫描 4 字节的输入流,并检查窗口中的字符串是否在之前出现过。
- 为了辅助匹配,LZ4 维护了一个哈希表,并将 4 字节的字符串从输入流开始的地方映射。
- 如果哈希表中包含当前滑动窗口中的字符串,那么将从当前扫描位置继续匹配字符串,前后两个具有相同前缀的子串能够匹配出一个最长子串,对应哈希表条目更新到当前起始扫描位置。
- 滑动窗口继续移动,不断更新哈希表中没有的子串的条目,直到滑动窗口达到结尾。
从结构上看

- 输入流被编码成了一个编码单元,一个
编码单元(Encoding unit)由首部(Token)和主体(Body)两个部分组成。
- 每个
编码单元都以 1 字节的首部开始,首部的前四位用来表示主体(Body)的字面量长度的大小,首部的后四位用来表示匹配长度的大小。
- 如果字符串超过15字节,也就是首部的
字面量长度的 4 位全为 1 时(1111),首部的字面量长度将减去 15 并放在首部后面的主体上。
主体(Body)由字面量数据与匹配描述组成,其中匹配描述由向后的匹配偏移量与匹配长度组成。
- 主体中偏移量由 2 字节编码,因此 LZ4 可以回溯到 64 KB(
2^16/1024)来查找匹配。
- 紧跟在某个
匹配(Match)之后的其他匹配(Match)以类似的方式编码,只是标记中的文字长度字段被设置为0000,并且主体(Body)省略了字面量(Literal)部分。
LZ4m 分析
通用压缩算法
偏移量(Offset)首部的字面量长度首部的匹配长度主体的字面量的偏移量首部(Token)字面量长度(Literal length)匹配长度(Match length)主体(Body)匹配偏移量(Match offset)
首部(Token)主体评估
- 将 LZ4 和 LZO1x 评估为通用算法的代表,将 WKdm 评估为专业算法。论文收集了通过交换从主内存中清除的数据来收集内存数据。
- 压缩比是页面的平均值,压缩比越小意味着相同数据的压缩大小越小。WKdm的压缩比最大,其次是LZ4m,LZ4,最后是LZO1x,速度归一化为 LZ4m。与通用算法(即 LZ4 和 LZO1x)相比,LZ4m 显示出可比较的压缩比,仅降低了 3%。
- LZ4m 在速度上优于这些算法高达 2.1× 和 1.8× 分别用于压缩和解压缩。LZ4m 在压缩比和解压速度上高于 WKdm 许多,但代价是压缩速度下降了 21%。综上,LZ4m 在压缩比损失的情况下,大幅提高了 LZ4 的压缩/解压速度。

- 下图显示了页面压缩率的累积分布。LZ4m 的压缩比曲线仅次与于 LZO 和 LZ4 算法一些,没有很大差距。而 WKdm 显示出明显的压缩比曲线,远远落后于其他算法。并且 6.8% 的页面根本无法使用 WKdm 进行压缩,而使用其他页面的比例不到 1%。这表明 WKdm 的压缩加速可以通过其较差的压缩比来抵消
- 进一步比较 4 字节粒度的匹配偏移量和匹配长度的含义为目的,将从跟踪匹配长度入手,如图原始 LZ4 和 LZ4m 结果中计算匹配子串的长度,与累积匹配计数进行比较。放大了 LZ4 和 LZ4m 匹配长度在 0 到 32 之间的原始结果,增加的粒度只减少了总长度匹配的出现 2.5%,这意味着 4 字节粒度方案对找到匹配的机会影响很小,在匹配长度上的劣势也是微不足道的。

- 时间和压缩比之间的关系,通过测量每个页面的压缩时间并平均具有相同压缩比的页面的时间可以获得算法的压缩速度。压缩良好的压缩页面的时间在算法中是相似的。比起 LZ4 和 LZO1x,LZ4m 显示出了出色的压缩速度 。因为 LZ4m 的扫描过程,如果没有找到前缀匹配,扫描窗口会提前 4 个字节,从而在难以压缩的页面上提高四倍的扫描速度。
- 算法的解压缩速度与平均解压速度除以压缩比,速度的获得方式与平均压缩速度相同。 LZ4m 在几乎整个压缩比范围内的解压缩速度都优于其他算法。

结论
- LZ4 是目前综合来看效率最高的压缩算法,更加侧重压缩解压速度,压缩比并不是第一。
- 利用内存数据的固有特性优化了一种流行的通用压缩算法,根据数据,LZ4m 能极大地提高了压缩/解压缩速度,而压缩比没有实质性损失。
- LZ4m 针对小块大小进行了优化。最大偏移量为 270(在 LZ4 中为 65535)。
- LZ4m 背后开发人员计划将这种新的压缩算法用于现实世界的内存压缩系统。但从2017年后找不到更多的代码。

参考文献
边栏推荐
- How to turn off the server terminal name of vscode
- MySQL数据库登录和退出的两种方式
- Offline disk group
- Market status and development prospect forecast of global triisopropyl chlorosilane industry in 2022
- Teach you to use elastic search: run the first hello world search command
- Oracle的NUMBER长度超过19之后,实体使用Long映射,导致出现问题是为什么?
- 「技术课堂」如何用 VSCode 从 0 到 1 改写 TDengine 代码
- Simple anti shake for wechat applet
- Anfulai embedded weekly report (issue 252): February 7, 2022 to February 13, 2022
- 为什么要从 OpenTSDB 迁移到 TDengine
猜你喜欢

Wanzhou gold industry: what knowledge points do you need to master to invest in precious metals?

Technology sharing | introduction to kubernetes pod

Simple anti shake for wechat applet

(5) SPI application design and simulation verification 1 - logic sorting

Advanced learning of MySQL -- Application -- view, stored procedure, trigger

推荐几个开源的物联网平台

PostgreSQL数据库WAL——资源管理器RMGR

建立自己的网站(10)

国产数据库认证考试指南汇总(2022年6月16日更新)

如何查看 MySQL 表的索引信息?
随机推荐
Bit.Store:熊市漫漫,稳定Staking产品或成主旋律
Allocate aligned heap space
Teach you to use elastic search: run the first hello world search command
实现时序数据库(Time Series Database)在特定场景下“远超”通用数据库的难点
Redis系列2:数据持久化提高可用性
R language statistics a program running time function system time
如何制作登录界面
Wanzhou gold industry: what knowledge points do you need to master to invest in precious metals?
Seata中 SelectForUpdateExecutor 可以先获取全局锁,再执行 sql吗?
Openssf security plan: SBOM will drive software supply chain security
新产品新人事新服务,英菲尼迪继续深耕中国未来可期!
【网络研讨会】MongoDB 携手 Google Cloud 加速企业数字化创新
银河麒麟V10系统激活
Characteristics of time series data
Application practice of day13 for loop distinguish the application of traversing break continue
Tdengine connector goes online Google Data Studio store
How to turn off the server terminal name of vscode
Recommend several open source IOT platforms
Advanced learning of MySQL -- Application -- Optimization of other SQL statements
推荐几个开源的物联网平台