** Description changed:

  [ Impact ]
  
  When compared to Ubuntu 23.10, creating intramfs files with update-
  initramfs takes 2 to 5 times more time on ARM devices.
  
  IIUC, dracut-install usage was added to initramfs-tools to speed up the
  process. But now its way slower. Even running update-initramfs on jammy,
  which doesn't use dracut-install, is way faster then the time taken on
  Noble.
  
  first bad commit -
  
https://github.com/dracutdevs/dracut/commit/3de4c7313260fb600507c9b87f780390b874c870
  
  Updating the initrd on a Raspberry Pi Zero 2W on Ubuntu 24.04 (noble)
  with initramfs-tools 0.142ubuntu25.1 takes over six minutes:
  
  ```
  bdrung@zero2w:~$ sudo hyperfine --warmup 1 -r 10 "update-initramfs -u"
  Benchmark 1: update-initramfs -u
-   Time (mean ± σ):     402.751 s ±  5.592 s    [User: 166.316 s, System: 
228.909 s]
-   Range (min … max):   394.380 s … 411.445 s    10 runs
+   Time (mean ± σ):     402.751 s ±  5.592 s    [User: 166.316 s, System: 
228.909 s]
+   Range (min … max):   394.380 s … 411.445 s    10 runs
  ```
  
  [ Test Plan ]
  
  1. Measure `update-initramfs -u` before the update.
  2. Log the content of the initrd before the update: `lsinitramfs 
/boot/initrd.img`
  3. update dracut-install / initramfs-tools-core
  4. Measure `update-initramfs -u`. It should be faster (the performance 
improvements on amd64 should be very small and might be within the measurement 
uncertainty).
  5. Check with lsinitramfs that the content of the newly generated initrd 
hasn't changed.
  
  [ Where problems could occur ]
  
  The code that is responsible for including the kernel modules into the
  initrd is touched. Negative consequences could be that some needed
  kernel modules will not be included any more (should be covered by the
  test case) or that building new initrds will fail.
  
  The initramfs-tools fix changes how manual_add_modules behaves.
  `manual_add_modules` does not copy kernel modules, but queues them for
  being copied when the newly added function `apply_add_modules` is
  called.
  
  I checked all instances of calls to `manual_add_modules` for possible
  regressions (see comment #15). Only miniramfs needs to be adjusted to
  also call `apply_add_modules`. But this change could break consumers of
  the `manual_add_modules` function that are outside of the Ubuntu
  archive. I googled for `apply_add_modules` but found no public outside
  users.
  
+ [ Benchmarks ]
+ 
+ Stock noble on a Raspberry Pi Zero 2W:
+ 
+ ```
+ bdrung@zero2w:~$ sudo hyperfine -r 5 "update-initramfs -u"
+ Benchmark 1: update-initramfs -u
+   Time (mean ± σ): 415.664 s ± 6.015 s [User: 166.728 s, System: 232.523 s]
+   Range (min … max): 409.139 s … 422.632 s 5 runs
+ ```
+ 
  [ Other Info ]
  
  $ lsb_release -rd
  No LSB modules are available.
  Description:  Ubuntu 24.04 LTS
  Release:      24.04
  
  $ apt-cache policy dracut-install
  dracut-install:
    Installed: 060+5-1ubuntu3
    Candidate: 060+5-1ubuntu3
    Version table:
   *** 060+5-1ubuntu3 500
          500 http://ports.ubuntu.com/ubuntu-ports noble/main arm64 Packages
          100 /var/lib/dpkg/status

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2065180

Title:
  performance regression in dracut-install 060

To manage notifications about this bug go to:
https://bugs.launchpad.net/dracut/+bug/2065180/+subscriptions


-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to