Different compression formats for initramfs vs uncompressed

I’ve been working on improving boot times lately. I was doing uncompressed images in dracut.conf on the assumption that loading is faster without involving decompression, but I never tested this theory until now.

 

First I generated the images, got the final size, and the amount of time it took to create the images. This is handled by:

 

clear && sudo -e ‘/etc/dracut.conf.d/99-custom.conf’ &&  sudo time dracut –force –regenerate-all && sudo time lsinitrd | grep ‘Image:’ 

Next, I rebooted and immediately ran systemd-analyze

In-short, my theory was right with cat (uncompressed) coming in first at 15.112s, but gzip, lzo, and lz4 were still within 15 seconds and are half the file-size!

Testing done on a Dell Latitude 5591 (BIOS 1.32), openSUSE Tumbleweed (GNOME, 6.8.8-1-default), i5-8400H, SK hynix Gold P31 (1TB), UEFI mode, unencrypted with root on ext4.

cat
52M
3.13user 1.35system 0:04.18elapsed 107%CPU
0.25user 0.45system 0:00.41elapsed 169%CPU
Startup finished in 4.491s (firmware) + 603ms (loader) + 452ms (kernel) + 3.874s (initrd) + 5.691s (userspace) = 15.112s
graphical.target reached after 5.690s in userspace.

gzip
26M
11.61user 1.28system 0:05.05elapsed 255%CPU
2.18user 0.27system 0:02.08elapsed 118%CPU
Startup finished in 4.490s (firmware) + 504ms (loader) + 621ms (kernel) + 4.266s (initrd) + 5.602s (userspace) = 15.485s
graphical.target reached after 5.601s in userspace.

bzip2
26M
6.82user 1.28system 0:07.79elapsed 104%CPU
9.31user 0.41system 0:09.19elapsed 105%CPU
Startup finished in 4.477s (firmware) + 503ms (loader) + 2.651s (kernel) + 4.274s (initrd) + 5.572s (userspace) = 17.479s
graphical.target reached after 5.572s in userspace.

lzma
21M
19.94user 1.32system 0:20.89elapsed 101%CPU
5.89user 0.34system 0:05.74elapsed 108%CPU
Startup finished in 4.513s (firmware) + 486ms (loader) + 2.369s (kernel) + 4.151s (initrd) + 5.626s (userspace) = 17.147s
graphical.target reached after 5.626s in userspace.

xz
23M
23.75user 1.47system 0:07.23elapsed 348%CPU
4.82user 0.34system 0:04.65elapsed 110%CPU
Startup finished in 4.592s (firmware) + 496ms (loader) + 1.450s (kernel) + 4.246s (initrd) + 5.904s (userspace) = 16.690s
graphical.target reached after 5.904s in userspace.

lzo
26M
11.58user 1.35system 0:05.06elapsed 255%CPU
2.14user 0.31system 0:02.07elapsed 118%CPU
Startup finished in 4.647s (firmware) + 510ms (loader) + 631ms (kernel) + 4.004s (initrd) + 5.861s (userspace) = 15.655s
graphical.target reached after 5.861s in userspace.

lz4
26M
11.60user 1.31system 0:05.06elapsed 255%CPU
2.14user 0.30system 0:02.07elapsed 118%CPU
Startup finished in 4.507s (firmware) + 507ms (loader) + 631ms (kernel) + 4.165s (initrd) + 5.891s (userspace) = 15.702s
graphical.target reached after 5.891s in userspace.

zstd
25M
8.24user 1.39system 0:05.94elapsed 162%CPU
0.60user 0.45system 0:00.47elapsed 224%CPU
Startup finished in 4.500s (firmware) + 501ms (loader) + 503ms (kernel) + 4.071s (initrd) + 7.000s (userspace) = 16.577s
graphical.target reached after 7.000s in userspace.

Comments

Leave a Reply