Supporting LZ4 as initramfs compressor

Balint Reczey balint.reczey at canonical.com
Mon Mar 19 14:59:24 UTC 2018


Hi,

Initramfs-tools uses gzip compression by default which served us well
for quite some time but LZ4 offers way faster decompression while
making a only slightly bigger initramfs files.

On my old laptop the initramfs extraction time decreased from ~1.2s to ~0.24s:
(with lz4)
kernel: [    0.297726] Unpacking initramfs...
kernel: [    0.535061] Freeing initrd memory: 77940K
kernel: [    0.301637] Unpacking initramfs...
kernel: [    0.539109] Freeing initrd memory: 77940K
(with gzip)
kernel: [    0.273748] Unpacking initramfs...
kernel: [    1.490066] Freeing initrd memory: 57140K
kernel: [    0.281729] Unpacking initramfs...
kernel: [    1.498493] Freeing initrd memory: 57140K

The increase in the initrd.img size is ~14%:
(lz4)
-rw-r--r-- 1 root root 66709065 márc  19 14:24
/boot/initrd.img-4.15.0-12-generic
(gzip)
-rw-r--r-- 1 root root 58510993 márc  19 12:57
/boot/initrd.img-4.15.0-12-generic.bak

Initramfs creation speed also improved a bit from ~24s to ~21s wall clock time:
(lz4)
update-initramfs: Generating /boot/initrd.img-4.15.0-12-generic
14.97user 6.31system 0:20.47elapsed 103%CPU (0avgtext+0avgdata
22368maxresident)k
update-initramfs: Generating /boot/initrd.img-4.15.0-12-generic
15.18user 6.49system 0:20.48elapsed 105%CPU (0avgtext+0avgdata
22308maxresident)k
(gzip)
update-initramfs: Generating /boot/initrd.img-4.15.0-12-generic
18.23user 6.77system 0:23.61elapsed 105%CPU (0avgtext+0avgdata
22396maxresident)k
update-initramfs: Generating /boot/initrd.img-4.15.0-12-generic
18.38user 6.83system 0:23.82elapsed 105%CPU (0avgtext+0avgdata
22292maxresident)k

Base on the results I plan adding LZ4 compression support to
initramfs-tools as requested in LP: #1488620 [1] in the next days
without setting it as default and I propose setting LZ4 as default for
18.10.

I'm aware of the old problem of /boot filling up with kernels and
initramfs files but unattended-upgrades already removes old kernels
[2] and update-manager is planned to do the same starting with 18.04
[3] thus Ubuntu systems will have enough space in /boot to allow
slightly bigger initrd files.

Cheers,
Balint

[1] https://bugs.launchpad.net/ubuntu/+source/initramfs-tools/+bug/1488620
[2] https://launchpad.net/ubuntu/+source/unattended-upgrades/1.0ubuntu1
[3] https://code.launchpad.net/~rbalint/update-manager/remove-autoremovable-kernels/+merge/341599



More information about the ubuntu-devel mailing list