Linux 六大压缩算法横评:Ubuntu 19.10 最终选择 LZ4
在近日发布的 Canonical 官方博文中,来自内核团队的 Ubuntu 工程师 Colin Ian King 介绍了 Ubuntu 19.10 操作系统启动方面的一些改进。
Ubuntu 19.10(Eoan Ermine)操作系统计划于10月17日正式发布,工程师在文章中表示通过过去数月的努力已经找到了更快的压缩/解压缩算法。
Ubuntu Kernel 团队对 initramfs 的六种压缩方法进行了基准测试,包括 BZIP2,GZIP,LZ4,LZMA,LZMO 和 XZ,以测量 Linux 内核的加载时间以及解压缩时间。主要使用 x86 TSC(Time Stamp Counter)在 x86 设备上进行基准测试。
根据测试结果,团队发现 LZ4 是 Ubuntu 19.10(Eoan Ermine)的最佳压缩/解压缩方法,这是因为 BZIP2,LZMA 和 XZ 的解压缩速度很慢,因此在进一步的测试中很快就被排除了。在压缩大小方面,GZIP 效果最好,能将文件压缩至最小,其次是 LZO(大约比 GZIP 大 16%)和LZ4(大约比 GZIP 大 25%),而在压缩时间方面,LZ4 比 GZIP 快 7 倍,LZO 比 GZIP 快约 1.25 倍,因此可以看到 GZIP 的速度不够快。
Colin Ian King 表示:“即使在慢速运行的传输媒介和慢速 CPU 上,LZ4 内核的更长加载时间也会带来更快的压缩时间。不过伴随着媒介传输速度的提升,GZIP,LZ4 和 LZO 之间的加载时间差减小,压缩时间变化来看 LZ4 是最大的赢家。”
自 Ubuntu 18.10(Cosmic Cuttlefish)发布以来,LZ4 已经在 Ubuntu 中默认使用,但看起来 Canonical 将保留 Ubuntu 19.10(Eoan Ermine)操作系统中内核和 initramfs 的默认压缩/解压缩方法。
LZ4 是一种无损数据压缩算法,可提供极快的压缩和解压缩速度。在 Ubuntu 19.10(Eoan Ermine)中,LZ4 将用于x86(64位)、PPC64le(PowerPC 64位Little Endian)和 s390(IBM System z)内核。
Arch Linux 计划将 zstd 作为默认压缩算法
过去几周,Arch Linux 维护人员比较了不同的压缩算法,最终计划使用 zstd 取代 devtools 中的默认压缩算法。
当前的压缩方法是`xz -c -z -`,它是单线程的,速度很慢,所以团队希望用更快的算法来将其替换。
虽然多线程 xz 早已出现,但是在一些意外情况下无法完成功能,所以很快就被淘汰了。
新的想法是使用 Facebook 的 zstd 算法,zstd 又叫 Zstandard,它是一种快速无损压缩算法,主要应用于 zlib 级别的实时压缩场景,并且具有更好的压缩比。
zstd 还可以以压缩速度为代价提供更强的压缩比,速度与压缩权衡可通过小增量进行配置。
经过一系列测试后 Arch 团队得出结论,理想的 zstd 级别将是“-18”,`zstd -c -T0 -18 -`相比`xz -c -z -`的优势是:
- 压缩时速度大幅提高
- 解压速度大幅提高
- 稳定、可重复的多线程
解压速度的提高将大大提高 pacman 的包安装速度。
目前 zstd 已经处在项目主干上,等待发布。
你也许感兴趣的:
- 【外评】电脑从哪里获取时间?
- 【外评】为什么 Stack Overflow 正在消失?
- Android 全力押注 Rust,Linux 却在原地踏步?谷歌:用 Rust 重写固件太简单了!
- 【外评】哪些开源项目被广泛使用,但仅由少数人维护?
- 【外评】好的重构与不好的重构
- C 语言老将从中作梗,Rust for Linux 项目内讧升级!核心维护者愤然离职:不受尊重、热情被消耗光
- 【外评】代码审查反模式
- 我受够了维护 AI 生成的代码
- 【外评】Linux 桌面市场份额升至 4.45
- 【外评】作为全栈开发人员如何跟上 AI/ML 的发展?
你对本文的反应是: