{"id":93,"date":"2024-05-07T05:33:00","date_gmt":"2024-05-07T05:33:00","guid":{"rendered":""},"modified":"2026-01-12T04:09:56","modified_gmt":"2026-01-12T09:09:56","slug":"different-compression-formats-for-initramfs-vs-uncompressed","status":"publish","type":"post","link":"https:\/\/blog.realmofespionage.xyz\/?p=93","title":{"rendered":"Different compression formats for initramfs vs uncompressed"},"content":{"rendered":"<p>I&#8217;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.<\/p>\n<p>&nbsp;<\/p>\n<p>First I generated the images, got the final size, and the amount of time it took to create the images. This is handled by:<\/p>\n<p>&nbsp;<\/p>\n<p>clear &amp;&amp; sudo -e &#8216;\/etc\/dracut.conf.d\/99-custom.conf&#8217; &amp;&amp;&nbsp; sudo time dracut &#8211;force &#8211;regenerate-all &amp;&amp; sudo time lsinitrd | grep &#8216;Image:&#8217;&nbsp;<\/p>\n<p><\/p>\n<p>Next, I rebooted and immediately ran systemd-analyze<\/p>\n<p><\/p>\n<p>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!<\/p>\n<p><\/p>\n<p>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.<\/p>\n<p><\/p>\n<p>cat<br \/>52M<br \/>3.13user 1.35system 0:04.18elapsed 107%CPU<br \/>0.25user 0.45system 0:00.41elapsed 169%CPU<br \/>Startup finished in 4.491s (firmware) + 603ms (loader) + 452ms (kernel) + 3.874s (initrd) + 5.691s (userspace) = 15.112s <br \/>graphical.target reached after 5.690s in userspace.<\/p>\n<p>gzip<br \/>26M<br \/>11.61user 1.28system 0:05.05elapsed 255%CPU<br \/>2.18user 0.27system 0:02.08elapsed 118%CPU<br \/>Startup finished in 4.490s (firmware) + 504ms (loader) + 621ms (kernel) + 4.266s (initrd) + 5.602s (userspace) = 15.485s <br \/>graphical.target reached after 5.601s in userspace.<\/p>\n<p>bzip2<br \/>26M<br \/>6.82user 1.28system 0:07.79elapsed 104%CPU<br \/>9.31user 0.41system 0:09.19elapsed 105%CPU<br \/>Startup finished in 4.477s (firmware) + 503ms (loader) + 2.651s (kernel) + 4.274s (initrd) + 5.572s (userspace) = 17.479s <br \/>graphical.target reached after 5.572s in userspace.<\/p>\n<p>lzma<br \/>21M<br \/>19.94user 1.32system 0:20.89elapsed 101%CPU<br \/>5.89user 0.34system 0:05.74elapsed 108%CPU<br \/>Startup finished in 4.513s (firmware) + 486ms (loader) + 2.369s (kernel) + 4.151s (initrd) + 5.626s (userspace) = 17.147s <br \/>graphical.target reached after 5.626s in userspace.<\/p>\n<p>xz<br \/>23M<br \/>23.75user 1.47system 0:07.23elapsed 348%CPU<br \/>4.82user 0.34system 0:04.65elapsed 110%CPU<br \/>Startup finished in 4.592s (firmware) + 496ms (loader) + 1.450s (kernel) + 4.246s (initrd) + 5.904s (userspace) = 16.690s <br \/>graphical.target reached after 5.904s in userspace.<\/p>\n<p>lzo<br \/>26M<br \/>11.58user 1.35system 0:05.06elapsed 255%CPU<br \/>2.14user 0.31system 0:02.07elapsed 118%CPU<br \/>Startup finished in 4.647s (firmware) + 510ms (loader) + 631ms (kernel) + 4.004s (initrd) + 5.861s (userspace) = 15.655s <br \/>graphical.target reached after 5.861s in userspace.<\/p>\n<p>lz4<br \/>26M<br \/>11.60user 1.31system 0:05.06elapsed 255%CPU<br \/>2.14user 0.30system 0:02.07elapsed 118%CPU<br \/>Startup finished in 4.507s (firmware) + 507ms (loader) + 631ms (kernel) + 4.165s (initrd) + 5.891s (userspace) = 15.702s <br \/>graphical.target reached after 5.891s in userspace.<\/p>\n<p>zstd<br \/>25M<br \/>8.24user 1.39system 0:05.94elapsed 162%CPU<br \/>0.60user 0.45system 0:00.47elapsed 224%CPU<br \/>Startup finished in 4.500s (firmware) + 501ms (loader) + 503ms (kernel) + 4.071s (initrd) + 7.000s (userspace) = 16.577s <br \/>graphical.target reached after 7.000s in userspace.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;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. &nbsp; First I generated the images, got the final size, and the amount of time it took to create the images. This [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26],"tags":[],"class_list":["post-93","post","type-post","status-publish","format-standard","hentry","category-linux-os"],"_links":{"self":[{"href":"https:\/\/blog.realmofespionage.xyz\/index.php?rest_route=\/wp\/v2\/posts\/93","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.realmofespionage.xyz\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.realmofespionage.xyz\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.realmofespionage.xyz\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.realmofespionage.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=93"}],"version-history":[{"count":1,"href":"https:\/\/blog.realmofespionage.xyz\/index.php?rest_route=\/wp\/v2\/posts\/93\/revisions"}],"predecessor-version":[{"id":115,"href":"https:\/\/blog.realmofespionage.xyz\/index.php?rest_route=\/wp\/v2\/posts\/93\/revisions\/115"}],"wp:attachment":[{"href":"https:\/\/blog.realmofespionage.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=93"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.realmofespionage.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=93"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.realmofespionage.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=93"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}