Ubuntu 将重新设计 Initram 虚拟文件系统的压缩策略

Ubuntu更改Initramfs的压缩算法至Zstd-19引发了解压慢和内存消耗大的问题,尤其对低端设备不利。测试显示,较低的Zstd级别在时间和内存效率上优于Zstd-19。开发者JulianAndresKlode提议根据内存大小采用不同的压缩等级,以优化启动性能和资源使用。Ubuntu22.04LTS可能会采纳新的压缩策略。
摘要由CSDN通过智能技术生成

此前,Ubuntu 将其 Initramfs 的压缩算法从 LZ4-9 (LZ4 压缩算法最高等级)改成了 Zstd -19 (Zstd 压缩算法最高等级)。然而 12 月 9 日,Canonical 公司的 Julian Andres Klode 提出,Zstd -19 压缩等级导致 Initramfs 出现非常严重的解压时间和内存消耗问题,目前他正在努力进行测试,以为 Ubuntu 重新设计恰当的 initramfs  压缩策略。

Initramfs 全称 init ram filesystem —— 是 Linux 一种基于内存的虚拟文件系统:先把目标 root 目录以压缩的 cpio 格式存放。然后 Linux 系统启动时会把 Initramfs 文件解压缩,根据解压出来的文件类型 / 目录来加载真实的文件系统。一些 Linux 系统如果因非正常关机造成文件系统损坏,则再次开机时会停留 Initramfs 的解压阶段不能正常启动图形化界面。

关于 Initramfs 我们介绍到这,既然 Initramfs 涉及到压缩和解压缩,那压缩算法对它的加载速度影响就非常大。Ubuntu 将压缩算法改成  Zstd-19 后出现解压速度慢和内存消耗大的问题,对低端设备或者嵌入式硬件非常不友好,比如只有 512MB RAM 的 Raspberry Pi Zero(树莓派 - zero),就老是崩溃。

为了搞清楚不同压缩等级所需的时间 / 内存,Canonical 公司的 Julian Andres Klode 做了不同压缩等级的测试。

在 ThinkPad T480s 桌面:

压缩等级用户态时间实耗时间 内存消耗压缩文件大小
lz4-99.65s11.09s12M64M
Zstd-15.69s6.99s24M57M
Zstd-612.59s8.58s99M47M
Zstd-1219.85s10.85s249M41M
Zstd-19 71.29s  26.95s 519M 35M

在 树莓派 Pi 4 (arm64) 的测试:

压缩等级用户态时间实耗时间 内存消耗压缩文件大小
lz4-921.10s 64.85s21M29M
Zstd-113.73s44.55s21M27M
Zstd-626.07s49.09s91M24M
Zstd-1248.18s54.67s203M22M
Zstd-19 130.07s92.80s350M20M

从测试结果的时间和内存消耗来看,即使是最低级的 Zstd-1,也比最高等级的 lz4 算法要优秀得多,因此选择 Zstd 算法肯定是对的,问题就出在最高级的 Zstd-19 ,它对压缩效果的提升并不大,所需的时间和内存却大幅增加。

基于此测试结果,Julian Andres Klode  提出自适应压缩级别的思路:在 512 MB 及以下内存的硬件使用 Zstd-1 ,在 2 GB 及以下内存的设备上使用 Zstd-6,其余设备则使用 Zstd-12。如此一来,所有搭载 Unbuntu 设备的 Initramfs 都只会占用 5% 左右的内存,降低压缩级别还能让有快速 I/O 的硬件开机时间减少几分之一秒,岂不美哉?

新的 Initramfs 压缩策略最晚应该会在 Ubuntu 22.04  发布,22.04 是一个长期支持的版本(LTS),大概在明年 2 月冻结新特性,3 月底发测试版。

后续更新:

  • 在 Julian Andres Klode 提出 “按内存决定压缩等级” 的想法后,同属 Canonical 公司的 Heinrich Schuchardt 作了一些回应:设备内存只是问题之一,还要考虑 Cpu 性能等其他因素,比如 SiFive 的 Unmatched 和树莓派 4 这两款板子,虽然有 8G 内存,但是 CPU 性能拉跨,这种设备也应该使用低级的压缩算法。
  • ... 后面有很多人参与讨论,涉及到对 I/O 的速度、开销,压缩算法边际收益等等的讨论,俺就不一一列举了,感兴趣的话可以从 Julian 的《重新评估默认的 initramfs 压缩》邮件开始阅读。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

<br_>

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值