Category: performance

  • 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.