Linux 六大压缩算法横评:Ubuntu 19.10 最终选择 LZ4

在近日发布的 Canonical 官方博文中,来自内核团队的 Ubuntu 工程师 Colin Ian King 介绍了 Ubuntu 19.10 操作系统启动方面的一些改进。

Ubuntu 19.10(Eoan Ermine)操作系统计划于10月17日正式发布,工程师在文章中表示通过过去数月的努力已经找到了更快的压缩/解压缩算法。

图0:Linux 六大压缩算法横评:Ubuntu 19.10 最终选择 LZ4

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 的速度不够快。

图1:Linux 六大压缩算法横评:Ubuntu 19.10 最终选择 LZ4

图2:Linux 六大压缩算法横评:Ubuntu 19.10 最终选择 LZ4

图3:Linux 六大压缩算法横评:Ubuntu 19.10 最终选择 LZ4

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 中的默认压缩算法。

图4:Linux 六大压缩算法横评:Ubuntu 19.10 最终选择 LZ4

当前的压缩方法是`xz -c -z -`,它是单线程的,速度很慢,所以团队希望用更快的算法来将其替换。

虽然多线程 xz 早已出现,但是在一些意外情况下无法完成功能,所以很快就被淘汰了。

新的想法是使用 Facebook 的 zstd 算法,zstd 又叫 Zstandard,它是一种快速无损压缩算法,主要应用于 zlib 级别的实时压缩场景,并且具有更好的压缩比。

zstd 还可以以压缩速度为代价提供更强的压缩比,速度与压缩权衡可通过小增量进行配置。

经过一系列测试后 Arch 团队得出结论,理想的 zstd 级别将是“-18”,`zstd -c -T0 -18 -`相比`xz -c -z -`的优势是:

  • 压缩时速度大幅提高
  • 解压速度大幅提高
  • 稳定、可重复的多线程

图5:Linux 六大压缩算法横评:Ubuntu 19.10 最终选择 LZ4

解压速度的提高将大大提高 pacman 的包安装速度。

目前 zstd 已经处在项目主干上,等待发布。

余下全文(1/3)
分享这篇文章:

请关注我们:

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注