1️⃣ dracut 的并行化能力
-
dracut 本身在 大多数模块操作和 cpio 打包阶段是串行执行的。
-
但是从 Linux 3.x 以后 ,dracut 内部会调用
cpio
或gzip/xz
等压缩工具。gzip
默认单线程,但可以用pigz
替代,支持多核压缩。xz
可以用xz -T0
来利用所有 CPU 核心。
所以 dracut 并不是完全单线程,但压缩阶段是性能瓶颈,使用多核压缩能显著加快生成速度。
2️⃣ 多核优化方法
方法 A:使用 pigz 代替 gzip
- 安装
pigz
:
bash
sudo dnf install -y pigz # openEuler/Fedora/RHEL
- 生成 initramfs 并使用 pigz:
bash
export COMPRESS=gzip
export COMPRESSPROG=pigz
dracut -f /boot/initramfs-6.6.103+.img 6.6.103+
pigz
会自动使用所有 CPU 核心并行压缩,速度比单核gzip
快很多。
方法 B:使用 xz 多线程
- 安装 xz 工具:
bash
sudo dnf install -y xz
- 指定 xz 多线程:
bash
dracut --xz -f /boot/initramfs-6.6.103+.img 6.6.103+
export XZ_OPT="-T0"
-T0
表示使用系统所有 CPU 核心。
方法 C:临时修改 dracut 默认压缩工具
dracut 默认压缩方式在 /etc/dracut.conf
或 /etc/dracut.conf.d/*.conf
配置:
ini
compress="xz" # 可改为 gzip 或 bzip2
compressflags="-T0" # 多核
然后执行:
bash
dracut -f /boot/initramfs-6.6.103+.img 6.6.103+
3️⃣ 总结
特性 | 说明 |
---|---|
默认 | 串行压缩,单线程 |
多核压缩 | 使用pigz (gzip 多核)或xz -T0 |
模块处理 | dracut 模块执行本身还是串行,但压缩阶段可以并行 |
效果 | 对大内核 (>300MB initramfs) 提升明显 |