Benjamin Drung ce03a2ef1c mkinitramfs: Do not store intermediate main cpio archive
Storing the intermediate main cpio archive in a temporary file is not
needed. The intermediate cpio archive can be directly piped into the
compressor command. This reduces the execution time a bit and reduces
the risk of the temporary directory (normally in `/var/tmp`) to run out
of space.

Benchmarks
----------

Benchmark on my desktop machine with an AMD Ryzen 7 5700G in a tmpfs
chroot with Debian unstable on 2024-06-03. initramfs-tools 0.143:

```
$ schroot-wrapper -p initramfs-tools=0.143,initramfs-tools-core=0.143,linux-image-generic,firmware-linux,zstd,cryptsetup-initramfs,lvm2,kbd,mdadm,ntfs-3g,plymouth,console-setup,hyperfine -u root -c unstable
(unstable)root@desktop:~# hyperfine "update-initramfs -u"
Benchmark 1: update-initramfs -u
  Time (mean ± σ):     11.255 s ±  0.026 s    [User: 12.467 s, System: 5.728 s]
  Range (min … max):   11.194 s … 11.282 s    10 runs
(unstable)root@desktop:~# ls -l /boot/initrd.img-*
-rw-r--r-- 2 root root 67758475 Jun  3 10:54 /boot/initrd.img-6.8.12-amd64
```

This commit is significant faster and the generated initrd is roughly
the same size:

```
$ schroot-wrapper -p ../initramfs-tools_0.143_all.deb,../initramfs-tools-core_0.143_all.deb,linux-image-generic,firmware-linux,zstd,cryptsetup-initramfs,lvm2,kbd,mdadm,ntfs-3g,plymouth,console-setup,hyperfine -u root -c unstable
(unstable)root@desktop:~# hyperfine "update-initramfs -u"
Benchmark 1: update-initramfs -u
  Time (mean ± σ):     10.283 s ±  0.029 s    [User: 11.620 s, System: 5.785 s]
  Range (min … max):   10.230 s … 10.335 s    10 runs
(unstable)root@desktop:~# ls -l /boot/initrd.img-*
-rw-r--r-- 1 root root 67757960 Jun  3 10:53 /boot/initrd.img-6.8.12-amd64
```

Benchmark on a Raspberry Pi Zero 2W with Debian unstable on 2024-06-03
and `COMPRESSLEVEL=1` set in `/etc/initramfs-tools/conf.d/compress.conf`
due to the low memory. initramfs-tools 0.143:

```
$ schroot-wrapper -p initramfs-tools=0.143,initramfs-tools-core=0.143,linux-image-generic,firmware-linux,zstd,cryptsetup-initramfs,lvm2,kbd,mdadm,ntfs-3g,plymouth,console-setup,hyperfine -u root -c unstable
(unstable)root@zero2w:~# hyperfine -r 10 "update-initramfs -u"
Benchmark 1: update-initramfs -u
  Time (mean ± σ):     206.167 s ±  4.261 s    [User: 53.232 s, System: 112.503 s]
  Range (min … max):   199.821 s … 210.960 s    10 runs
(unstable)root@zero2w:~# ls -l /boot/initrd.img-*
-rw-r--r-- 1 root root 83542031 Jun  3 12:13 /boot/initrd.img-6.8.12-arm64
```

Same result here. This commit is significant faster and the generated
initrd is roughly the same size:

```
$ schroot-wrapper -p ./initramfs-tools_0.143_all.deb,./initramfs-tools-core_0.143_all.deb,linux-image-generic,firmware-linux,zstd,cryptsetup-initramfs,lvm2,kbd,mdadm,ntfs-3g,plymouth,console-setup,hyperfine -u root -c unstable
(unstable)root@zero2w:~# ls -l /boot/initrd.img-*
-rw-r--r-- 1 root root 83540544 Jun  3 11:26 /boot/initrd.img-6.8.12-arm64
(unstable)root@zero2w:~# hyperfine -r 10 "update-initramfs -u"
Benchmark 1: update-initramfs -u
  Time (mean ± σ):     175.592 s ±  5.514 s    [User: 54.224 s, System: 112.979 s]
  Range (min … max):   166.502 s … 182.111 s    10 runs
```

Signed-off-by: Benjamin Drung <benjamin.drung@canonical.com>
2024-06-03 16:01:15 +02:00
2024-06-01 21:55:07 +01:00
2023-02-27 22:29:35 +10:00
Description
initramfs-tools
2 MiB
Languages
Shell 68.3%
Roff 22.3%
C 9.3%