Re: Amendment: Update on reducing initramfs size and speed up

2023-08-11 Thread Benjamin Drung
On Fri, 2023-08-11 at 19:32 +, Benjamin Drung wrote:
> On Mon, 2023-07-31 at 22:49 +, Benjamin Drung wrote:
> > On Mon, 2023-07-31 at 20:45 +0100, Dimitri John Ledkov wrote:
> > > On Mon, 31 Jul 2023 at 20:41, Benjamin Drung  wrote:
> > > > 
> > > > On Thu, 2023-07-27 at 11:51 +1200, Michael Hudson-Doyle wrote:
> > > > > 
> > > > > 
> > > > > On Thu, 27 Jul 2023 at 09:21, Benjamin Drung 
> > > > > wrote:
> > > > > > On Wed, 2023-07-26 at 17:53 +0200, Benjamin Drung wrote:
> > > > > > > Hi all,
> > > > > > > 
> > > > > > > A few weeks ago, I posted an idea how to reduce the initramfs size
> > > > > > > and
> > > > > > > speed up the generation:
> > > > > > > 
> > > > > > > https://lists.ubuntu.com/archives/ubuntu-devel/2023-July/042652.html
> > > > > > > 
> > > > > > > This post sparked a lively discussion. The initial idea was
> > > > > > > ditched for
> > > > > > > a better solution: mkinitramfs will put all compressed files
> > > > > > > (kernel
> > > > > > > modules and firmware files) into a cpio archive that is not
> > > > > > > compressed
> > > > > > > (because compressing compressed files makes no sense). All other
> > > > > > > files
> > > > > > > will be added to a cpio archive that gets compressed. As next
> > > > > > > steps, the
> > > > > > > kernel modules and firmware files need to be shipped compressed.
> > > > > > > 
> > > > > > > After several iterations for the implementation and review by
> > > > > > > Daves
> > > > > > > Jones, I just uploaded initramfs-tools 0.142ubuntu8 to mantic that
> > > > > > > puts
> > > > > > > compressed kernel modules and firmware files in an uncompressed
> > > > > > > cpio
> > > > > > > (https://launchpad.net/bugs/2028567).
> > > > > > > 
> > > > > > > I created/updated the follow-up tickets and added my patches to
> > > > > > > them:
> > > > > > > 
> > > > > > > Ship kernel modules Zstd compressed
> > > > > > > https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2028568
> > > > > > > 
> > > > > > > compress firmware in /lib/firmware
> > > > > > > https://bugs.launchpad.net/ubuntu/+source/linux-firmware/+bug/1942260
> > > > > > > 
> > > > > > > And without further ado, here come the benchmark results:
> > > > > > > 
> > > > > > > The benchmarks were done either on an AMD Ryzen 7 5700G with
> > > > > > > schroot and
> > > > > > > overlay on tmpfs or on the hardware mentioned. All tests were
> > > > > > > running
> > > > > > > the latest Ubuntu mantic development release.
> > > > > > > 
> > > > > > > * minimal: schroot with linux-image-generic initramfs-tools zstd
> > > > > > > * full: minimal + busybox-initramfs cryptsetup-initramfs
> > > > > > >isc-dhcp-client kbd lvm2 mdadm ntfs-3g plymouth plymouth-theme-
> > > > > > > spinner
> > > > > > > * nvidia: full + linux-headers-generic nvidia-driver-525
> > > > > > > * nvidia fw: nvidia + compressed /lib/firmware/nvidia/525.125.06/
> > > > > > > * VisionFive 2: VisionFive 2 RISC-V board
> > > > > > > * RPi Zero 2: Raspberry Pi Zero 2 ARM board (running armhf)
> > > > > > > 
> > > > > > > "next" means using kernel/firmware/initramfs from ppa:bdrung/ppa
> > > > > > > i.e.
> > > > > > > * initramfs-tools 0.142ubuntu7bd4
> > > > > > > * linux 6.3.0-7.7bd2
> > > > > > > * linux-firmware 20230629.gitee91452d-0ubuntu1bd1
> > > > > > > 
> > > > > > > > >| build   | size   | uncompressed
> > > > > > > > size  |
> > > > > > > > > test   | time| in bytes  | in MiB | in bytes  | in
> > > > > > > > MiB |
> > > > > > > > > |-|---||---
> > > > > > > > -|
> > > > > > > > > minimal| 4.30 s  |  66701818 |  63.6  | 224087608 |
> > > > > > > > 213.7  |
> > > > > > > > > minimal next   | 4.54 s  |  59935186 |  57.2  |  67738810 |
> > > > > > > > 64.6  |
> > > > > > > > > full   | 7.15 s  | 118007038 | 112.5  | 387976843 |
> > > > > > > > 370.0  |
> > > > > > > > > full next  | 7.29 s  | 106937908 | 102.0  | 128610985 |
> > > > > > > > 122.7  |
> > > > > > > > > nvidia | 7.04 s  | 209200523 | 199.5  | 513554279 |
> > > > > > > > 489.8  |
> > > > > > > > > nvidia next| 7.21 s  | 195246287 | 186.2  | 235288174 |
> > > > > > > > 224.4  |
> > > > > > > > > nvidia fw next | 7.16 s  | 191329102 | 182.5  | 213078234 |
> > > > > > > > 203.2  |
> > > > > > > > > VisionFive 2   | 142.9 s | 121895035 | 116.2  | 411160836 |
> > > > > > > > 392.1  |
> > > > > > > > > VF 2 next  | 126.7 s | 111651453 | 106.5  | 134120804 |
> > > > > > > > 127.9  |
> > > > > > > > > RPi Zero 2 | 109.5 s |  39803044 |  40.0  |  69592789 |
> > > > > > > > 66.4  |
> > > > > > > > > RPi Zero 2 ²   | 103.5 s |  39804499 |  40.0  |  69592789 |
> > > > > > > > 66.4  |
> > > > > > > > > RPi Zero 2 next| 101.2 s |  31463352 |  30.0  |  41145762 |
> > > > > > > > 39.2  |
> > > > > > > 
> > > > > > > ² Updated initramfs-tools (but no compressed modules or firmware)
> > > > > > > 
> > > > > > > The build time was averaged over five 

Re: Amendment: Update on reducing initramfs size and speed up

2023-08-11 Thread Benjamin Drung
On Mon, 2023-07-31 at 22:49 +, Benjamin Drung wrote:
> On Mon, 2023-07-31 at 20:45 +0100, Dimitri John Ledkov wrote:
> > On Mon, 31 Jul 2023 at 20:41, Benjamin Drung  wrote:
> > > 
> > > On Thu, 2023-07-27 at 11:51 +1200, Michael Hudson-Doyle wrote:
> > > > 
> > > > 
> > > > On Thu, 27 Jul 2023 at 09:21, Benjamin Drung 
> > > > wrote:
> > > > > On Wed, 2023-07-26 at 17:53 +0200, Benjamin Drung wrote:
> > > > > > Hi all,
> > > > > > 
> > > > > > A few weeks ago, I posted an idea how to reduce the initramfs size
> > > > > > and
> > > > > > speed up the generation:
> > > > > > 
> > > > > > https://lists.ubuntu.com/archives/ubuntu-devel/2023-July/042652.html
> > > > > > 
> > > > > > This post sparked a lively discussion. The initial idea was
> > > > > > ditched for
> > > > > > a better solution: mkinitramfs will put all compressed files
> > > > > > (kernel
> > > > > > modules and firmware files) into a cpio archive that is not
> > > > > > compressed
> > > > > > (because compressing compressed files makes no sense). All other
> > > > > > files
> > > > > > will be added to a cpio archive that gets compressed. As next
> > > > > > steps, the
> > > > > > kernel modules and firmware files need to be shipped compressed.
> > > > > > 
> > > > > > After several iterations for the implementation and review by
> > > > > > Daves
> > > > > > Jones, I just uploaded initramfs-tools 0.142ubuntu8 to mantic that
> > > > > > puts
> > > > > > compressed kernel modules and firmware files in an uncompressed
> > > > > > cpio
> > > > > > (https://launchpad.net/bugs/2028567).
> > > > > > 
> > > > > > I created/updated the follow-up tickets and added my patches to
> > > > > > them:
> > > > > > 
> > > > > > Ship kernel modules Zstd compressed
> > > > > > https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2028568
> > > > > > 
> > > > > > compress firmware in /lib/firmware
> > > > > > https://bugs.launchpad.net/ubuntu/+source/linux-firmware/+bug/1942260
> > > > > > 
> > > > > > And without further ado, here come the benchmark results:
> > > > > > 
> > > > > > The benchmarks were done either on an AMD Ryzen 7 5700G with
> > > > > > schroot and
> > > > > > overlay on tmpfs or on the hardware mentioned. All tests were
> > > > > > running
> > > > > > the latest Ubuntu mantic development release.
> > > > > > 
> > > > > > * minimal: schroot with linux-image-generic initramfs-tools zstd
> > > > > > * full: minimal + busybox-initramfs cryptsetup-initramfs
> > > > > >isc-dhcp-client kbd lvm2 mdadm ntfs-3g plymouth plymouth-theme-
> > > > > > spinner
> > > > > > * nvidia: full + linux-headers-generic nvidia-driver-525
> > > > > > * nvidia fw: nvidia + compressed /lib/firmware/nvidia/525.125.06/
> > > > > > * VisionFive 2: VisionFive 2 RISC-V board
> > > > > > * RPi Zero 2: Raspberry Pi Zero 2 ARM board (running armhf)
> > > > > > 
> > > > > > "next" means using kernel/firmware/initramfs from ppa:bdrung/ppa
> > > > > > i.e.
> > > > > > * initramfs-tools 0.142ubuntu7bd4
> > > > > > * linux 6.3.0-7.7bd2
> > > > > > * linux-firmware 20230629.gitee91452d-0ubuntu1bd1
> > > > > > 
> > > > > > > >| build   | size   | uncompressed
> > > > > > > size  |
> > > > > > > > test   | time| in bytes  | in MiB | in bytes  | in
> > > > > > > MiB |
> > > > > > > > |-|---||---
> > > > > > > -|
> > > > > > > > minimal| 4.30 s  |  66701818 |  63.6  | 224087608 |
> > > > > > > 213.7  |
> > > > > > > > minimal next   | 4.54 s  |  59935186 |  57.2  |  67738810 |
> > > > > > > 64.6  |
> > > > > > > > full   | 7.15 s  | 118007038 | 112.5  | 387976843 |
> > > > > > > 370.0  |
> > > > > > > > full next  | 7.29 s  | 106937908 | 102.0  | 128610985 |
> > > > > > > 122.7  |
> > > > > > > > nvidia | 7.04 s  | 209200523 | 199.5  | 513554279 |
> > > > > > > 489.8  |
> > > > > > > > nvidia next| 7.21 s  | 195246287 | 186.2  | 235288174 |
> > > > > > > 224.4  |
> > > > > > > > nvidia fw next | 7.16 s  | 191329102 | 182.5  | 213078234 |
> > > > > > > 203.2  |
> > > > > > > > VisionFive 2   | 142.9 s | 121895035 | 116.2  | 411160836 |
> > > > > > > 392.1  |
> > > > > > > > VF 2 next  | 126.7 s | 111651453 | 106.5  | 134120804 |
> > > > > > > 127.9  |
> > > > > > > > RPi Zero 2 | 109.5 s |  39803044 |  40.0  |  69592789 |
> > > > > > > 66.4  |
> > > > > > > > RPi Zero 2 ²   | 103.5 s |  39804499 |  40.0  |  69592789 |
> > > > > > > 66.4  |
> > > > > > > > RPi Zero 2 next| 101.2 s |  31463352 |  30.0  |  41145762 |
> > > > > > > 39.2  |
> > > > > > 
> > > > > > ² Updated initramfs-tools (but no compressed modules or firmware)
> > > > > > 
> > > > > > The build time was averaged over five runs.
> > > > > > 
> > > > > > > > improvement  | build time | size   | uncompressed size |
> > > > > > > > --|||---|
> > > > > > > > minimal  |  105.6 %   | 89.9 % |  30.2 %   |
> > > > > > > > full  

Re: Amendment: Update on reducing initramfs size and speed up

2023-07-31 Thread Benjamin Drung
On Mon, 2023-07-31 at 20:45 +0100, Dimitri John Ledkov wrote:
> On Mon, 31 Jul 2023 at 20:41, Benjamin Drung  wrote:
> > 
> > On Thu, 2023-07-27 at 11:51 +1200, Michael Hudson-Doyle wrote:
> > > 
> > > 
> > > On Thu, 27 Jul 2023 at 09:21, Benjamin Drung 
> > > wrote:
> > > > On Wed, 2023-07-26 at 17:53 +0200, Benjamin Drung wrote:
> > > > > Hi all,
> > > > > 
> > > > > A few weeks ago, I posted an idea how to reduce the initramfs size
> > > > > and
> > > > > speed up the generation:
> > > > > 
> > > > > https://lists.ubuntu.com/archives/ubuntu-devel/2023-July/042652.html
> > > > > 
> > > > > This post sparked a lively discussion. The initial idea was
> > > > > ditched for
> > > > > a better solution: mkinitramfs will put all compressed files
> > > > > (kernel
> > > > > modules and firmware files) into a cpio archive that is not
> > > > > compressed
> > > > > (because compressing compressed files makes no sense). All other
> > > > > files
> > > > > will be added to a cpio archive that gets compressed. As next
> > > > > steps, the
> > > > > kernel modules and firmware files need to be shipped compressed.
> > > > > 
> > > > > After several iterations for the implementation and review by
> > > > > Daves
> > > > > Jones, I just uploaded initramfs-tools 0.142ubuntu8 to mantic that
> > > > > puts
> > > > > compressed kernel modules and firmware files in an uncompressed
> > > > > cpio
> > > > > (https://launchpad.net/bugs/2028567).
> > > > > 
> > > > > I created/updated the follow-up tickets and added my patches to
> > > > > them:
> > > > > 
> > > > > Ship kernel modules Zstd compressed
> > > > > https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2028568
> > > > > 
> > > > > compress firmware in /lib/firmware
> > > > > https://bugs.launchpad.net/ubuntu/+source/linux-firmware/+bug/1942260
> > > > > 
> > > > > And without further ado, here come the benchmark results:
> > > > > 
> > > > > The benchmarks were done either on an AMD Ryzen 7 5700G with
> > > > > schroot and
> > > > > overlay on tmpfs or on the hardware mentioned. All tests were
> > > > > running
> > > > > the latest Ubuntu mantic development release.
> > > > > 
> > > > > * minimal: schroot with linux-image-generic initramfs-tools zstd
> > > > > * full: minimal + busybox-initramfs cryptsetup-initramfs
> > > > >isc-dhcp-client kbd lvm2 mdadm ntfs-3g plymouth plymouth-theme-
> > > > > spinner
> > > > > * nvidia: full + linux-headers-generic nvidia-driver-525
> > > > > * nvidia fw: nvidia + compressed /lib/firmware/nvidia/525.125.06/
> > > > > * VisionFive 2: VisionFive 2 RISC-V board
> > > > > * RPi Zero 2: Raspberry Pi Zero 2 ARM board (running armhf)
> > > > > 
> > > > > "next" means using kernel/firmware/initramfs from ppa:bdrung/ppa
> > > > > i.e.
> > > > > * initramfs-tools 0.142ubuntu7bd4
> > > > > * linux 6.3.0-7.7bd2
> > > > > * linux-firmware 20230629.gitee91452d-0ubuntu1bd1
> > > > > 
> > > > > > >| build   | size   | uncompressed
> > > > > > size  |
> > > > > > > test   | time| in bytes  | in MiB | in bytes  | in
> > > > > > MiB |
> > > > > > > |-|---||---
> > > > > > -|
> > > > > > > minimal| 4.30 s  |  66701818 |  63.6  | 224087608 |
> > > > > > 213.7  |
> > > > > > > minimal next   | 4.54 s  |  59935186 |  57.2  |  67738810 |
> > > > > > 64.6  |
> > > > > > > full   | 7.15 s  | 118007038 | 112.5  | 387976843 |
> > > > > > 370.0  |
> > > > > > > full next  | 7.29 s  | 106937908 | 102.0  | 128610985 |
> > > > > > 122.7  |
> > > > > > > nvidia | 7.04 s  | 209200523 | 199.5  | 513554279 |
> > > > > > 489.8  |
> > > > > > > nvidia next| 7.21 s  | 195246287 | 186.2  | 235288174 |
> > > > > > 224.4  |
> > > > > > > nvidia fw next | 7.16 s  | 191329102 | 182.5  | 213078234 |
> > > > > > 203.2  |
> > > > > > > VisionFive 2   | 142.9 s | 121895035 | 116.2  | 411160836 |
> > > > > > 392.1  |
> > > > > > > VF 2 next  | 126.7 s | 111651453 | 106.5  | 134120804 |
> > > > > > 127.9  |
> > > > > > > RPi Zero 2 | 109.5 s |  39803044 |  40.0  |  69592789 |
> > > > > > 66.4  |
> > > > > > > RPi Zero 2 ²   | 103.5 s |  39804499 |  40.0  |  69592789 |
> > > > > > 66.4  |
> > > > > > > RPi Zero 2 next| 101.2 s |  31463352 |  30.0  |  41145762 |
> > > > > > 39.2  |
> > > > > 
> > > > > ² Updated initramfs-tools (but no compressed modules or firmware)
> > > > > 
> > > > > The build time was averaged over five runs.
> > > > > 
> > > > > > > improvement  | build time | size   | uncompressed size |
> > > > > > > --|||---|
> > > > > > > minimal  |  105.6 %   | 89.9 % |  30.2 %   |
> > > > > > > full |  102.0 %   | 90.6 % |  33.1 %   |
> > > > > > > nvidia   |  101.7 %   | 91.5 % |  41.5 %   |
> > > > > > > VisionFive 2 |   88.7 %   | 91.6 % |  32.6 %   |
> > > > > > > RPi Zero 2   |   92.4 %   | 79.0 % |  59.1 %   |
> > > > > 
> 

Re: Amendment: Update on reducing initramfs size and speed up

2023-07-31 Thread Benjamin Drung
On Thu, 2023-07-27 at 19:40 +0200, Adrien Nader wrote:
> On Thu, Jul 27, 2023, Adrien Nader wrote:
> > On Thu, Jul 27, 2023, Michael Hudson-Doyle wrote:
> > > On Thu, 27 Jul 2023 at 09:21, Benjamin Drung  wrote:
> > > 
> > > > On Wed, 2023-07-26 at 17:53 +0200, Benjamin Drung wrote:
> > > > > Hi all,
> > > > > 
> > > > > A few weeks ago, I posted an idea how to reduce the initramfs size and
> > > > > speed up the generation:
> > > > > 
> > > > > https://lists.ubuntu.com/archives/ubuntu-devel/2023-July/042652.html
> > > > > 
> > > > > This post sparked a lively discussion. The initial idea was ditched 
> > > > > for
> > > > > a better solution: mkinitramfs will put all compressed files (kernel
> > > > > modules and firmware files) into a cpio archive that is not compressed
> > > > > (because compressing compressed files makes no sense). All other files
> > > > > will be added to a cpio archive that gets compressed. As next steps, 
> > > > > the
> > > > > kernel modules and firmware files need to be shipped compressed.
> > > > > 
> > > > > After several iterations for the implementation and review by Daves
> > > > > Jones, I just uploaded initramfs-tools 0.142ubuntu8 to mantic that 
> > > > > puts
> > > > > compressed kernel modules and firmware files in an uncompressed cpio
> > > > > (https://launchpad.net/bugs/2028567).
> > > > > 
> > > > > I created/updated the follow-up tickets and added my patches to them:
> > > > > 
> > > > > Ship kernel modules Zstd compressed
> > > > > https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2028568
> > > > > 
> > > > > compress firmware in /lib/firmware
> > > > > https://bugs.launchpad.net/ubuntu/+source/linux-firmware/+bug/1942260
> > > > > 
> > > > > And without further ado, here come the benchmark results:
> > > > > 
> > > > > The benchmarks were done either on an AMD Ryzen 7 5700G with schroot 
> > > > > and
> > > > > overlay on tmpfs or on the hardware mentioned. All tests were running
> > > > > the latest Ubuntu mantic development release.
> > > > > 
> > > > > * minimal: schroot with linux-image-generic initramfs-tools zstd
> > > > > * full: minimal + busybox-initramfs cryptsetup-initramfs
> > > > >   isc-dhcp-client kbd lvm2 mdadm ntfs-3g plymouth 
> > > > > plymouth-theme-spinner
> > > > > * nvidia: full + linux-headers-generic nvidia-driver-525
> > > > > * nvidia fw: nvidia + compressed /lib/firmware/nvidia/525.125.06/
> > > > > * VisionFive 2: VisionFive 2 RISC-V board
> > > > > * RPi Zero 2: Raspberry Pi Zero 2 ARM board (running armhf)
> > > > > 
> > > > > "next" means using kernel/firmware/initramfs from ppa:bdrung/ppa i.e.
> > > > > * initramfs-tools 0.142ubuntu7bd4
> > > > > * linux 6.3.0-7.7bd2
> > > > > * linux-firmware 20230629.gitee91452d-0ubuntu1bd1
> > > > > 
> > > > > > >| build   | size   | uncompressed size 
> > > > > > >  |
> > > > > > > test   | time| in bytes  | in MiB | in bytes  | in 
> > > > > > > MiB |
> > > > > > > |-|---|||
> > > > > > > minimal| 4.30 s  |  66701818 |  63.6  | 224087608 | 213.7 
> > > > > > >  |
> > > > > > > minimal next   | 4.54 s  |  59935186 |  57.2  |  67738810 |  64.6 
> > > > > > >  |
> > > > > > > full   | 7.15 s  | 118007038 | 112.5  | 387976843 | 370.0 
> > > > > > >  |
> > > > > > > full next  | 7.29 s  | 106937908 | 102.0  | 128610985 | 122.7 
> > > > > > >  |
> > > > > > > nvidia | 7.04 s  | 209200523 | 199.5  | 513554279 | 489.8 
> > > > > > >  |
> > > > > > > nvidia next| 7.21 s  | 195246287 | 186.2  | 235288174 | 224.4 
> > > > > > >  |
> > > > > > > nvidia fw next | 7.16 s  | 191329102 | 182.5  | 213078234 | 203.2 
> > > > > > >  |
> > > > > > > VisionFive 2   | 142.9 s | 121895035 | 116.2  | 411160836 | 392.1 
> > > > > > >  |
> > > > > > > VF 2 next  | 126.7 s | 111651453 | 106.5  | 134120804 | 127.9 
> > > > > > >  |
> > > > > > > RPi Zero 2 | 109.5 s |  39803044 |  40.0  |  69592789 |  66.4 
> > > > > > >  |
> > > > > > > RPi Zero 2 ²   | 103.5 s |  39804499 |  40.0  |  69592789 |  66.4 
> > > > > > >  |
> > > > > > > RPi Zero 2 next| 101.2 s |  31463352 |  30.0  |  41145762 |  39.2 
> > > > > > >  |
> > > > > 
> > > > > ² Updated initramfs-tools (but no compressed modules or firmware)
> > > > > 
> > > > > The build time was averaged over five runs.
> > > > > 
> > > > > > > improvement  | build time | size   | uncompressed size |
> > > > > > > --|||---|
> > > > > > > minimal  |  105.6 %   | 89.9 % |  30.2 %   |
> > > > > > > full |  102.0 %   | 90.6 % |  33.1 %   |
> > > > > > > nvidia   |  101.7 %   | 91.5 % |  41.5 %   |
> > > > > > > VisionFive 2 |   88.7 %   | 91.6 % |  32.6 %   |
> > > > > > > RPi Zero 2   |   92.4 %   | 79.0 % |  59.1 %   |
> > > > > 
> > > > > Building the initramfs takes more CPU cycles (see tests on tmpfs), but
> > > > > saves time on 

Re: Amendment: Update on reducing initramfs size and speed up

2023-07-31 Thread Dimitri John Ledkov
On Mon, 31 Jul 2023 at 20:41, Benjamin Drung  wrote:
>
> On Thu, 2023-07-27 at 11:51 +1200, Michael Hudson-Doyle wrote:
> >
> >
> > On Thu, 27 Jul 2023 at 09:21, Benjamin Drung 
> > wrote:
> > > On Wed, 2023-07-26 at 17:53 +0200, Benjamin Drung wrote:
> > > > Hi all,
> > > >
> > > > A few weeks ago, I posted an idea how to reduce the initramfs size
> > > > and
> > > > speed up the generation:
> > > >
> > > > https://lists.ubuntu.com/archives/ubuntu-devel/2023-July/042652.html
> > > >
> > > > This post sparked a lively discussion. The initial idea was
> > > > ditched for
> > > > a better solution: mkinitramfs will put all compressed files
> > > > (kernel
> > > > modules and firmware files) into a cpio archive that is not
> > > > compressed
> > > > (because compressing compressed files makes no sense). All other
> > > > files
> > > > will be added to a cpio archive that gets compressed. As next
> > > > steps, the
> > > > kernel modules and firmware files need to be shipped compressed.
> > > >
> > > > After several iterations for the implementation and review by
> > > > Daves
> > > > Jones, I just uploaded initramfs-tools 0.142ubuntu8 to mantic that
> > > > puts
> > > > compressed kernel modules and firmware files in an uncompressed
> > > > cpio
> > > > (https://launchpad.net/bugs/2028567).
> > > >
> > > > I created/updated the follow-up tickets and added my patches to
> > > > them:
> > > >
> > > > Ship kernel modules Zstd compressed
> > > > https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2028568
> > > >
> > > > compress firmware in /lib/firmware
> > > > https://bugs.launchpad.net/ubuntu/+source/linux-firmware/+bug/1942260
> > > >
> > > > And without further ado, here come the benchmark results:
> > > >
> > > > The benchmarks were done either on an AMD Ryzen 7 5700G with
> > > > schroot and
> > > > overlay on tmpfs or on the hardware mentioned. All tests were
> > > > running
> > > > the latest Ubuntu mantic development release.
> > > >
> > > > * minimal: schroot with linux-image-generic initramfs-tools zstd
> > > > * full: minimal + busybox-initramfs cryptsetup-initramfs
> > > >isc-dhcp-client kbd lvm2 mdadm ntfs-3g plymouth plymouth-theme-
> > > > spinner
> > > > * nvidia: full + linux-headers-generic nvidia-driver-525
> > > > * nvidia fw: nvidia + compressed /lib/firmware/nvidia/525.125.06/
> > > > * VisionFive 2: VisionFive 2 RISC-V board
> > > > * RPi Zero 2: Raspberry Pi Zero 2 ARM board (running armhf)
> > > >
> > > > "next" means using kernel/firmware/initramfs from ppa:bdrung/ppa
> > > > i.e.
> > > > * initramfs-tools 0.142ubuntu7bd4
> > > > * linux 6.3.0-7.7bd2
> > > > * linux-firmware 20230629.gitee91452d-0ubuntu1bd1
> > > >
> > > > > || build   | size   | uncompressed
> > > > > size  |
> > > > > | test   | time| in bytes  | in MiB | in bytes  | in
> > > > > MiB |
> > > > > ||-|---||---
> > > > > -|
> > > > > | minimal| 4.30 s  |  66701818 |  63.6  | 224087608 |
> > > > > 213.7  |
> > > > > | minimal next   | 4.54 s  |  59935186 |  57.2  |  67738810 |
> > > > > 64.6  |
> > > > > | full   | 7.15 s  | 118007038 | 112.5  | 387976843 |
> > > > > 370.0  |
> > > > > | full next  | 7.29 s  | 106937908 | 102.0  | 128610985 |
> > > > > 122.7  |
> > > > > | nvidia | 7.04 s  | 209200523 | 199.5  | 513554279 |
> > > > > 489.8  |
> > > > > | nvidia next| 7.21 s  | 195246287 | 186.2  | 235288174 |
> > > > > 224.4  |
> > > > > | nvidia fw next | 7.16 s  | 191329102 | 182.5  | 213078234 |
> > > > > 203.2  |
> > > > > | VisionFive 2   | 142.9 s | 121895035 | 116.2  | 411160836 |
> > > > > 392.1  |
> > > > > | VF 2 next  | 126.7 s | 111651453 | 106.5  | 134120804 |
> > > > > 127.9  |
> > > > > | RPi Zero 2 | 109.5 s |  39803044 |  40.0  |  69592789 |
> > > > > 66.4  |
> > > > > | RPi Zero 2 ²   | 103.5 s |  39804499 |  40.0  |  69592789 |
> > > > > 66.4  |
> > > > > | RPi Zero 2 next| 101.2 s |  31463352 |  30.0  |  41145762 |
> > > > > 39.2  |
> > > >
> > > > ² Updated initramfs-tools (but no compressed modules or firmware)
> > > >
> > > > The build time was averaged over five runs.
> > > >
> > > > > | improvement  | build time | size   | uncompressed size |
> > > > > |--|||---|
> > > > > | minimal  |  105.6 %   | 89.9 % |  30.2 %   |
> > > > > | full |  102.0 %   | 90.6 % |  33.1 %   |
> > > > > | nvidia   |  101.7 %   | 91.5 % |  41.5 %   |
> > > > > | VisionFive 2 |   88.7 %   | 91.6 % |  32.6 %   |
> > > > > | RPi Zero 2   |   92.4 %   | 79.0 % |  59.1 %   |
> > > >
> > > > Building the initramfs takes more CPU cycles (see tests on tmpfs),
> > > > but
> > > > saves time on disk IO. Daves Jones saw much bigger time savings on
> > > > his
> > > > Raspberry Pis but his tests were on lunar.
> > > >
> > > > Build time influence:
> > > > + add_directories plus uniq take 

Re: Amendment: Update on reducing initramfs size and speed up

2023-07-31 Thread Benjamin Drung
On Thu, 2023-07-27 at 11:51 +1200, Michael Hudson-Doyle wrote:
> 
> 
> On Thu, 27 Jul 2023 at 09:21, Benjamin Drung 
> wrote:
> > On Wed, 2023-07-26 at 17:53 +0200, Benjamin Drung wrote:
> > > Hi all,
> > > 
> > > A few weeks ago, I posted an idea how to reduce the initramfs size
> > > and
> > > speed up the generation:
> > > 
> > > https://lists.ubuntu.com/archives/ubuntu-devel/2023-July/042652.html
> > > 
> > > This post sparked a lively discussion. The initial idea was
> > > ditched for
> > > a better solution: mkinitramfs will put all compressed files
> > > (kernel
> > > modules and firmware files) into a cpio archive that is not
> > > compressed
> > > (because compressing compressed files makes no sense). All other
> > > files
> > > will be added to a cpio archive that gets compressed. As next
> > > steps, the
> > > kernel modules and firmware files need to be shipped compressed.
> > > 
> > > After several iterations for the implementation and review by
> > > Daves
> > > Jones, I just uploaded initramfs-tools 0.142ubuntu8 to mantic that
> > > puts
> > > compressed kernel modules and firmware files in an uncompressed
> > > cpio
> > > (https://launchpad.net/bugs/2028567).
> > > 
> > > I created/updated the follow-up tickets and added my patches to
> > > them:
> > > 
> > > Ship kernel modules Zstd compressed
> > > https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2028568
> > > 
> > > compress firmware in /lib/firmware
> > > https://bugs.launchpad.net/ubuntu/+source/linux-firmware/+bug/1942260
> > > 
> > > And without further ado, here come the benchmark results:
> > > 
> > > The benchmarks were done either on an AMD Ryzen 7 5700G with
> > > schroot and
> > > overlay on tmpfs or on the hardware mentioned. All tests were
> > > running
> > > the latest Ubuntu mantic development release.
> > > 
> > > * minimal: schroot with linux-image-generic initramfs-tools zstd
> > > * full: minimal + busybox-initramfs cryptsetup-initramfs
> > >    isc-dhcp-client kbd lvm2 mdadm ntfs-3g plymouth plymouth-theme-
> > > spinner
> > > * nvidia: full + linux-headers-generic nvidia-driver-525
> > > * nvidia fw: nvidia + compressed /lib/firmware/nvidia/525.125.06/
> > > * VisionFive 2: VisionFive 2 RISC-V board
> > > * RPi Zero 2: Raspberry Pi Zero 2 ARM board (running armhf)
> > > 
> > > "next" means using kernel/firmware/initramfs from ppa:bdrung/ppa
> > > i.e.
> > > * initramfs-tools 0.142ubuntu7bd4
> > > * linux 6.3.0-7.7bd2
> > > * linux-firmware 20230629.gitee91452d-0ubuntu1bd1
> > > 
> > > > |                | build   | size               | uncompressed
> > > > size  |
> > > > | test           | time    | in bytes  | in MiB | in bytes  | in
> > > > MiB |
> > > > ||-|---||---
> > > > -|
> > > > | minimal        | 4.30 s  |  66701818 |  63.6  | 224087608 |
> > > > 213.7  |
> > > > | minimal next   | 4.54 s  |  59935186 |  57.2  |  67738810 | 
> > > > 64.6  |
> > > > | full           | 7.15 s  | 118007038 | 112.5  | 387976843 |
> > > > 370.0  |
> > > > | full next      | 7.29 s  | 106937908 | 102.0  | 128610985 |
> > > > 122.7  |
> > > > | nvidia         | 7.04 s  | 209200523 | 199.5  | 513554279 |
> > > > 489.8  |
> > > > | nvidia next    | 7.21 s  | 195246287 | 186.2  | 235288174 |
> > > > 224.4  |
> > > > | nvidia fw next | 7.16 s  | 191329102 | 182.5  | 213078234 |
> > > > 203.2  |
> > > > | VisionFive 2   | 142.9 s | 121895035 | 116.2  | 411160836 |
> > > > 392.1  |
> > > > | VF 2 next      | 126.7 s | 111651453 | 106.5  | 134120804 |
> > > > 127.9  |
> > > > | RPi Zero 2     | 109.5 s |  39803044 |  40.0  |  69592789 | 
> > > > 66.4  |
> > > > | RPi Zero 2 ²   | 103.5 s |  39804499 |  40.0  |  69592789 | 
> > > > 66.4  |
> > > > | RPi Zero 2 next| 101.2 s |  31463352 |  30.0  |  41145762 | 
> > > > 39.2  |
> > > 
> > > ² Updated initramfs-tools (but no compressed modules or firmware)
> > > 
> > > The build time was averaged over five runs.
> > > 
> > > > | improvement  | build time | size   | uncompressed size |
> > > > |--|||---|
> > > > | minimal      |  105.6 %   | 89.9 % |      30.2 %       |
> > > > | full         |  102.0 %   | 90.6 % |      33.1 %       |
> > > > | nvidia       |  101.7 %   | 91.5 % |      41.5 %       |
> > > > | VisionFive 2 |   88.7 %   | 91.6 % |      32.6 %       |
> > > > | RPi Zero 2   |   92.4 %   | 79.0 % |      59.1 %       |
> > > 
> > > Building the initramfs takes more CPU cycles (see tests on tmpfs),
> > > but
> > > saves time on disk IO. Daves Jones saw much bigger time savings on
> > > his
> > > Raspberry Pis but his tests were on lunar.
> > > 
> > > Build time influence:
> > > + add_directories plus uniq take several milliseconds
> > > + depmod on compressed kernel modules take hundreds of
> > >    milliseconds longer
> > > - copying smaller kernel modules (due to compression) is faster
> > > - cpio archive that needs to be compressed is smaller
> > > - not storing 

Re: Amendment: Update on reducing initramfs size and speed up

2023-07-28 Thread Adrien Nader
On Thu, Jul 27, 2023, Adrien Nader wrote:
> On Thu, Jul 27, 2023, Michael Hudson-Doyle wrote:
> > On Thu, 27 Jul 2023 at 09:21, Benjamin Drung  wrote:
> > 
> > > On Wed, 2023-07-26 at 17:53 +0200, Benjamin Drung wrote:
> > > > Hi all,
> > > >
> > > > A few weeks ago, I posted an idea how to reduce the initramfs size and
> > > > speed up the generation:
> > > >
> > > > https://lists.ubuntu.com/archives/ubuntu-devel/2023-July/042652.html
> > > >
> > > > This post sparked a lively discussion. The initial idea was ditched for
> > > > a better solution: mkinitramfs will put all compressed files (kernel
> > > > modules and firmware files) into a cpio archive that is not compressed
> > > > (because compressing compressed files makes no sense). All other files
> > > > will be added to a cpio archive that gets compressed. As next steps, the
> > > > kernel modules and firmware files need to be shipped compressed.
> > > >
> > > > After several iterations for the implementation and review by Daves
> > > > Jones, I just uploaded initramfs-tools 0.142ubuntu8 to mantic that puts
> > > > compressed kernel modules and firmware files in an uncompressed cpio
> > > > (https://launchpad.net/bugs/2028567).
> > > >
> > > > I created/updated the follow-up tickets and added my patches to them:
> > > >
> > > > Ship kernel modules Zstd compressed
> > > > https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2028568
> > > >
> > > > compress firmware in /lib/firmware
> > > > https://bugs.launchpad.net/ubuntu/+source/linux-firmware/+bug/1942260
> > > >
> > > > And without further ado, here come the benchmark results:
> > > >
> > > > The benchmarks were done either on an AMD Ryzen 7 5700G with schroot and
> > > > overlay on tmpfs or on the hardware mentioned. All tests were running
> > > > the latest Ubuntu mantic development release.
> > > >
> > > > * minimal: schroot with linux-image-generic initramfs-tools zstd
> > > > * full: minimal + busybox-initramfs cryptsetup-initramfs
> > > >   isc-dhcp-client kbd lvm2 mdadm ntfs-3g plymouth plymouth-theme-spinner
> > > > * nvidia: full + linux-headers-generic nvidia-driver-525
> > > > * nvidia fw: nvidia + compressed /lib/firmware/nvidia/525.125.06/
> > > > * VisionFive 2: VisionFive 2 RISC-V board
> > > > * RPi Zero 2: Raspberry Pi Zero 2 ARM board (running armhf)
> > > >
> > > > "next" means using kernel/firmware/initramfs from ppa:bdrung/ppa i.e.
> > > > * initramfs-tools 0.142ubuntu7bd4
> > > > * linux 6.3.0-7.7bd2
> > > > * linux-firmware 20230629.gitee91452d-0ubuntu1bd1
> > > >
> > > > > || build   | size   | uncompressed size  |
> > > > > | test   | time| in bytes  | in MiB | in bytes  | in MiB |
> > > > > ||-|---|||
> > > > > | minimal| 4.30 s  |  66701818 |  63.6  | 224087608 | 213.7  |
> > > > > | minimal next   | 4.54 s  |  59935186 |  57.2  |  67738810 |  64.6  |
> > > > > | full   | 7.15 s  | 118007038 | 112.5  | 387976843 | 370.0  |
> > > > > | full next  | 7.29 s  | 106937908 | 102.0  | 128610985 | 122.7  |
> > > > > | nvidia | 7.04 s  | 209200523 | 199.5  | 513554279 | 489.8  |
> > > > > | nvidia next| 7.21 s  | 195246287 | 186.2  | 235288174 | 224.4  |
> > > > > | nvidia fw next | 7.16 s  | 191329102 | 182.5  | 213078234 | 203.2  |
> > > > > | VisionFive 2   | 142.9 s | 121895035 | 116.2  | 411160836 | 392.1  |
> > > > > | VF 2 next  | 126.7 s | 111651453 | 106.5  | 134120804 | 127.9  |
> > > > > | RPi Zero 2 | 109.5 s |  39803044 |  40.0  |  69592789 |  66.4  |
> > > > > | RPi Zero 2 ²   | 103.5 s |  39804499 |  40.0  |  69592789 |  66.4  |
> > > > > | RPi Zero 2 next| 101.2 s |  31463352 |  30.0  |  41145762 |  39.2  |
> > > >
> > > > ² Updated initramfs-tools (but no compressed modules or firmware)
> > > >
> > > > The build time was averaged over five runs.
> > > >
> > > > > | improvement  | build time | size   | uncompressed size |
> > > > > |--|||---|
> > > > > | minimal  |  105.6 %   | 89.9 % |  30.2 %   |
> > > > > | full |  102.0 %   | 90.6 % |  33.1 %   |
> > > > > | nvidia   |  101.7 %   | 91.5 % |  41.5 %   |
> > > > > | VisionFive 2 |   88.7 %   | 91.6 % |  32.6 %   |
> > > > > | RPi Zero 2   |   92.4 %   | 79.0 % |  59.1 %   |
> > > >
> > > > Building the initramfs takes more CPU cycles (see tests on tmpfs), but
> > > > saves time on disk IO. Daves Jones saw much bigger time savings on his
> > > > Raspberry Pis but his tests were on lunar.
> > > >
> > > > Build time influence:
> > > > + add_directories plus uniq take several milliseconds
> > > > + depmod on compressed kernel modules take hundreds of
> > > >   milliseconds longer
> > > > - copying smaller kernel modules (due to compression) is faster
> > > > - cpio archive that needs to be compressed is smaller
> > > > - not storing intermediate cpio archives saves time
> > 

Re: Amendment: Update on reducing initramfs size and speed up

2023-07-27 Thread Adrien Nader
On Thu, Jul 27, 2023, Michael Hudson-Doyle wrote:
> On Thu, 27 Jul 2023 at 09:21, Benjamin Drung  wrote:
> 
> > On Wed, 2023-07-26 at 17:53 +0200, Benjamin Drung wrote:
> > > Hi all,
> > >
> > > A few weeks ago, I posted an idea how to reduce the initramfs size and
> > > speed up the generation:
> > >
> > > https://lists.ubuntu.com/archives/ubuntu-devel/2023-July/042652.html
> > >
> > > This post sparked a lively discussion. The initial idea was ditched for
> > > a better solution: mkinitramfs will put all compressed files (kernel
> > > modules and firmware files) into a cpio archive that is not compressed
> > > (because compressing compressed files makes no sense). All other files
> > > will be added to a cpio archive that gets compressed. As next steps, the
> > > kernel modules and firmware files need to be shipped compressed.
> > >
> > > After several iterations for the implementation and review by Daves
> > > Jones, I just uploaded initramfs-tools 0.142ubuntu8 to mantic that puts
> > > compressed kernel modules and firmware files in an uncompressed cpio
> > > (https://launchpad.net/bugs/2028567).
> > >
> > > I created/updated the follow-up tickets and added my patches to them:
> > >
> > > Ship kernel modules Zstd compressed
> > > https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2028568
> > >
> > > compress firmware in /lib/firmware
> > > https://bugs.launchpad.net/ubuntu/+source/linux-firmware/+bug/1942260
> > >
> > > And without further ado, here come the benchmark results:
> > >
> > > The benchmarks were done either on an AMD Ryzen 7 5700G with schroot and
> > > overlay on tmpfs or on the hardware mentioned. All tests were running
> > > the latest Ubuntu mantic development release.
> > >
> > > * minimal: schroot with linux-image-generic initramfs-tools zstd
> > > * full: minimal + busybox-initramfs cryptsetup-initramfs
> > >   isc-dhcp-client kbd lvm2 mdadm ntfs-3g plymouth plymouth-theme-spinner
> > > * nvidia: full + linux-headers-generic nvidia-driver-525
> > > * nvidia fw: nvidia + compressed /lib/firmware/nvidia/525.125.06/
> > > * VisionFive 2: VisionFive 2 RISC-V board
> > > * RPi Zero 2: Raspberry Pi Zero 2 ARM board (running armhf)
> > >
> > > "next" means using kernel/firmware/initramfs from ppa:bdrung/ppa i.e.
> > > * initramfs-tools 0.142ubuntu7bd4
> > > * linux 6.3.0-7.7bd2
> > > * linux-firmware 20230629.gitee91452d-0ubuntu1bd1
> > >
> > > > || build   | size   | uncompressed size  |
> > > > | test   | time| in bytes  | in MiB | in bytes  | in MiB |
> > > > ||-|---|||
> > > > | minimal| 4.30 s  |  66701818 |  63.6  | 224087608 | 213.7  |
> > > > | minimal next   | 4.54 s  |  59935186 |  57.2  |  67738810 |  64.6  |
> > > > | full   | 7.15 s  | 118007038 | 112.5  | 387976843 | 370.0  |
> > > > | full next  | 7.29 s  | 106937908 | 102.0  | 128610985 | 122.7  |
> > > > | nvidia | 7.04 s  | 209200523 | 199.5  | 513554279 | 489.8  |
> > > > | nvidia next| 7.21 s  | 195246287 | 186.2  | 235288174 | 224.4  |
> > > > | nvidia fw next | 7.16 s  | 191329102 | 182.5  | 213078234 | 203.2  |
> > > > | VisionFive 2   | 142.9 s | 121895035 | 116.2  | 411160836 | 392.1  |
> > > > | VF 2 next  | 126.7 s | 111651453 | 106.5  | 134120804 | 127.9  |
> > > > | RPi Zero 2 | 109.5 s |  39803044 |  40.0  |  69592789 |  66.4  |
> > > > | RPi Zero 2 ²   | 103.5 s |  39804499 |  40.0  |  69592789 |  66.4  |
> > > > | RPi Zero 2 next| 101.2 s |  31463352 |  30.0  |  41145762 |  39.2  |
> > >
> > > ² Updated initramfs-tools (but no compressed modules or firmware)
> > >
> > > The build time was averaged over five runs.
> > >
> > > > | improvement  | build time | size   | uncompressed size |
> > > > |--|||---|
> > > > | minimal  |  105.6 %   | 89.9 % |  30.2 %   |
> > > > | full |  102.0 %   | 90.6 % |  33.1 %   |
> > > > | nvidia   |  101.7 %   | 91.5 % |  41.5 %   |
> > > > | VisionFive 2 |   88.7 %   | 91.6 % |  32.6 %   |
> > > > | RPi Zero 2   |   92.4 %   | 79.0 % |  59.1 %   |
> > >
> > > Building the initramfs takes more CPU cycles (see tests on tmpfs), but
> > > saves time on disk IO. Daves Jones saw much bigger time savings on his
> > > Raspberry Pis but his tests were on lunar.
> > >
> > > Build time influence:
> > > + add_directories plus uniq take several milliseconds
> > > + depmod on compressed kernel modules take hundreds of
> > >   milliseconds longer
> > > - copying smaller kernel modules (due to compression) is faster
> > > - cpio archive that needs to be compressed is smaller
> > > - not storing intermediate cpio archives saves time
> > >
> > > Saving 10 to 20 percent on the initramfs size and only needing half or a
> > > third of the size when unpacked (i.e. needed memory during boot) is a
> > > good improvement.
> >
> > The smaller initramfs overall 

Re: Amendment: Update on reducing initramfs size and speed up

2023-07-26 Thread Dimitri John Ledkov
On Thu, 27 Jul 2023 at 00:51, Michael Hudson-Doyle
 wrote:
>
>
>
> On Thu, 27 Jul 2023 at 09:21, Benjamin Drung  wrote:
>>
>> On Wed, 2023-07-26 at 17:53 +0200, Benjamin Drung wrote:
>> > Hi all,
>> >
>> > A few weeks ago, I posted an idea how to reduce the initramfs size and
>> > speed up the generation:
>> >
>> > https://lists.ubuntu.com/archives/ubuntu-devel/2023-July/042652.html
>> >
>> > This post sparked a lively discussion. The initial idea was ditched for
>> > a better solution: mkinitramfs will put all compressed files (kernel
>> > modules and firmware files) into a cpio archive that is not compressed
>> > (because compressing compressed files makes no sense). All other files
>> > will be added to a cpio archive that gets compressed. As next steps, the
>> > kernel modules and firmware files need to be shipped compressed.
>> >
>> > After several iterations for the implementation and review by Daves
>> > Jones, I just uploaded initramfs-tools 0.142ubuntu8 to mantic that puts
>> > compressed kernel modules and firmware files in an uncompressed cpio
>> > (https://launchpad.net/bugs/2028567).
>> >
>> > I created/updated the follow-up tickets and added my patches to them:
>> >
>> > Ship kernel modules Zstd compressed
>> > https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2028568
>> >
>> > compress firmware in /lib/firmware
>> > https://bugs.launchpad.net/ubuntu/+source/linux-firmware/+bug/1942260
>> >
>> > And without further ado, here come the benchmark results:
>> >
>> > The benchmarks were done either on an AMD Ryzen 7 5700G with schroot and
>> > overlay on tmpfs or on the hardware mentioned. All tests were running
>> > the latest Ubuntu mantic development release.
>> >
>> > * minimal: schroot with linux-image-generic initramfs-tools zstd
>> > * full: minimal + busybox-initramfs cryptsetup-initramfs
>> >   isc-dhcp-client kbd lvm2 mdadm ntfs-3g plymouth plymouth-theme-spinner
>> > * nvidia: full + linux-headers-generic nvidia-driver-525
>> > * nvidia fw: nvidia + compressed /lib/firmware/nvidia/525.125.06/
>> > * VisionFive 2: VisionFive 2 RISC-V board
>> > * RPi Zero 2: Raspberry Pi Zero 2 ARM board (running armhf)
>> >
>> > "next" means using kernel/firmware/initramfs from ppa:bdrung/ppa i.e.
>> > * initramfs-tools 0.142ubuntu7bd4
>> > * linux 6.3.0-7.7bd2
>> > * linux-firmware 20230629.gitee91452d-0ubuntu1bd1
>> >
>> > > || build   | size   | uncompressed size  |
>> > > | test   | time| in bytes  | in MiB | in bytes  | in MiB |
>> > > ||-|---|||
>> > > | minimal| 4.30 s  |  66701818 |  63.6  | 224087608 | 213.7  |
>> > > | minimal next   | 4.54 s  |  59935186 |  57.2  |  67738810 |  64.6  |
>> > > | full   | 7.15 s  | 118007038 | 112.5  | 387976843 | 370.0  |
>> > > | full next  | 7.29 s  | 106937908 | 102.0  | 128610985 | 122.7  |
>> > > | nvidia | 7.04 s  | 209200523 | 199.5  | 513554279 | 489.8  |
>> > > | nvidia next| 7.21 s  | 195246287 | 186.2  | 235288174 | 224.4  |
>> > > | nvidia fw next | 7.16 s  | 191329102 | 182.5  | 213078234 | 203.2  |
>> > > | VisionFive 2   | 142.9 s | 121895035 | 116.2  | 411160836 | 392.1  |
>> > > | VF 2 next  | 126.7 s | 111651453 | 106.5  | 134120804 | 127.9  |
>> > > | RPi Zero 2 | 109.5 s |  39803044 |  40.0  |  69592789 |  66.4  |
>> > > | RPi Zero 2 ²   | 103.5 s |  39804499 |  40.0  |  69592789 |  66.4  |
>> > > | RPi Zero 2 next| 101.2 s |  31463352 |  30.0  |  41145762 |  39.2  |
>> >
>> > ² Updated initramfs-tools (but no compressed modules or firmware)
>> >
>> > The build time was averaged over five runs.
>> >
>> > > | improvement  | build time | size   | uncompressed size |
>> > > |--|||---|
>> > > | minimal  |  105.6 %   | 89.9 % |  30.2 %   |
>> > > | full |  102.0 %   | 90.6 % |  33.1 %   |
>> > > | nvidia   |  101.7 %   | 91.5 % |  41.5 %   |
>> > > | VisionFive 2 |   88.7 %   | 91.6 % |  32.6 %   |
>> > > | RPi Zero 2   |   92.4 %   | 79.0 % |  59.1 %   |
>> >
>> > Building the initramfs takes more CPU cycles (see tests on tmpfs), but
>> > saves time on disk IO. Daves Jones saw much bigger time savings on his
>> > Raspberry Pis but his tests were on lunar.
>> >
>> > Build time influence:
>> > + add_directories plus uniq take several milliseconds
>> > + depmod on compressed kernel modules take hundreds of
>> >   milliseconds longer
>> > - copying smaller kernel modules (due to compression) is faster
>> > - cpio archive that needs to be compressed is smaller
>> > - not storing intermediate cpio archives saves time
>> >
>> > Saving 10 to 20 percent on the initramfs size and only needing half or a
>> > third of the size when unpacked (i.e. needed memory during boot) is a
>> > good improvement.
>>
>> The smaller initramfs overall size (less to load into memory and unpack)
>> and the smaller compressed cpio 

Amendment: Update on reducing initramfs size and speed up

2023-07-26 Thread Benjamin Drung
On Wed, 2023-07-26 at 17:53 +0200, Benjamin Drung wrote:
> Hi all,
> 
> A few weeks ago, I posted an idea how to reduce the initramfs size and
> speed up the generation:
> 
> https://lists.ubuntu.com/archives/ubuntu-devel/2023-July/042652.html
> 
> This post sparked a lively discussion. The initial idea was ditched for
> a better solution: mkinitramfs will put all compressed files (kernel
> modules and firmware files) into a cpio archive that is not compressed
> (because compressing compressed files makes no sense). All other files
> will be added to a cpio archive that gets compressed. As next steps, the
> kernel modules and firmware files need to be shipped compressed.
> 
> After several iterations for the implementation and review by Daves
> Jones, I just uploaded initramfs-tools 0.142ubuntu8 to mantic that puts
> compressed kernel modules and firmware files in an uncompressed cpio
> (https://launchpad.net/bugs/2028567).
> 
> I created/updated the follow-up tickets and added my patches to them:
> 
> Ship kernel modules Zstd compressed
> https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2028568
> 
> compress firmware in /lib/firmware
> https://bugs.launchpad.net/ubuntu/+source/linux-firmware/+bug/1942260
> 
> And without further ado, here come the benchmark results:
> 
> The benchmarks were done either on an AMD Ryzen 7 5700G with schroot and
> overlay on tmpfs or on the hardware mentioned. All tests were running
> the latest Ubuntu mantic development release.
> 
> * minimal: schroot with linux-image-generic initramfs-tools zstd
> * full: minimal + busybox-initramfs cryptsetup-initramfs
>   isc-dhcp-client kbd lvm2 mdadm ntfs-3g plymouth plymouth-theme-spinner
> * nvidia: full + linux-headers-generic nvidia-driver-525
> * nvidia fw: nvidia + compressed /lib/firmware/nvidia/525.125.06/
> * VisionFive 2: VisionFive 2 RISC-V board
> * RPi Zero 2: Raspberry Pi Zero 2 ARM board (running armhf)
> 
> "next" means using kernel/firmware/initramfs from ppa:bdrung/ppa i.e.
> * initramfs-tools 0.142ubuntu7bd4
> * linux 6.3.0-7.7bd2
> * linux-firmware 20230629.gitee91452d-0ubuntu1bd1
> 
> > || build   | size   | uncompressed size  |
> > | test   | time| in bytes  | in MiB | in bytes  | in MiB |
> > ||-|---|||
> > | minimal| 4.30 s  |  66701818 |  63.6  | 224087608 | 213.7  |
> > | minimal next   | 4.54 s  |  59935186 |  57.2  |  67738810 |  64.6  |
> > | full   | 7.15 s  | 118007038 | 112.5  | 387976843 | 370.0  |
> > | full next  | 7.29 s  | 106937908 | 102.0  | 128610985 | 122.7  |
> > | nvidia | 7.04 s  | 209200523 | 199.5  | 513554279 | 489.8  |
> > | nvidia next| 7.21 s  | 195246287 | 186.2  | 235288174 | 224.4  |
> > | nvidia fw next | 7.16 s  | 191329102 | 182.5  | 213078234 | 203.2  |
> > | VisionFive 2   | 142.9 s | 121895035 | 116.2  | 411160836 | 392.1  |
> > | VF 2 next  | 126.7 s | 111651453 | 106.5  | 134120804 | 127.9  |
> > | RPi Zero 2 | 109.5 s |  39803044 |  40.0  |  69592789 |  66.4  |
> > | RPi Zero 2 ²   | 103.5 s |  39804499 |  40.0  |  69592789 |  66.4  |
> > | RPi Zero 2 next| 101.2 s |  31463352 |  30.0  |  41145762 |  39.2  |
> 
> ² Updated initramfs-tools (but no compressed modules or firmware)
> 
> The build time was averaged over five runs.
> 
> > | improvement  | build time | size   | uncompressed size |
> > |--|||---|
> > | minimal  |  105.6 %   | 89.9 % |  30.2 %   |
> > | full |  102.0 %   | 90.6 % |  33.1 %   |
> > | nvidia   |  101.7 %   | 91.5 % |  41.5 %   |
> > | VisionFive 2 |   88.7 %   | 91.6 % |  32.6 %   |
> > | RPi Zero 2   |   92.4 %   | 79.0 % |  59.1 %   |
> 
> Building the initramfs takes more CPU cycles (see tests on tmpfs), but
> saves time on disk IO. Daves Jones saw much bigger time savings on his
> Raspberry Pis but his tests were on lunar.
> 
> Build time influence:
> + add_directories plus uniq take several milliseconds
> + depmod on compressed kernel modules take hundreds of
>   milliseconds longer
> - copying smaller kernel modules (due to compression) is faster
> - cpio archive that needs to be compressed is smaller
> - not storing intermediate cpio archives saves time
> 
> Saving 10 to 20 percent on the initramfs size and only needing half or a
> third of the size when unpacked (i.e. needed memory during boot) is a
> good improvement.

The smaller initramfs overall size (less to load into memory and unpack)
and the smaller compressed cpio (less to decompress) have a positive
effect on the boot speed, especially on systems with slow CPU and/or
slow IO.

When looking at the "kernel" time from systemd-analyze, the improvement
ranges from 1.62s - 1.36s = 0.26s in a VM on my desktop to a heavily
noticeable 37.9s - 16.5s = 21.4s on the VisionFive 2 RISC-V board.

-- 
Benjamin Drung
Debian & Ubuntu Developer

--