[arch-projects] [mkinitcpio][PATCH] init: add timestamp at start of initramfs if binary exists

Tom Gundersen teg at jklm.no
Sun May 6 10:54:51 EDT 2012


This will allow us to tell how much time was spent in the initramfs,
which might be good for working on optimizations and making sure we
don't regress.

If a binary able to produce the timestamp is not installed this is a
noop.

I'll post separately an install hook to the systemd package that will
install systemd-timestamp as /usr/bin/timestamp. However, it would be
trivial to replace this by an independent implementation if people
want to use this without systemd.

With this patch I get the following on my (ancient) laptop:

  $ systemd-analyze
  Startup finished in 294ms (kernel) + 2684ms (initramfs) + 15741ms (userspace) = 18720ms

FWIW, 1 second is spent on inserting the needed modules, and 1.5 seconds
on mounting the rootfs (mounting btrfs is slow!).

Signed-off-by: Tom Gundersen <teg at jklm.no>
---
 init |    6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/init b/init
index 8e9ad90..98328ce 100644
--- a/init
+++ b/init
@@ -1,6 +1,10 @@
 #!/usr/bin/ash
 PATH=/usr/bin
 
+if [ -x /usr/bin/timestamp ]; then
+    RD_TIMESTAMP=$(/usr/bin/timestamp)
+fi
+
 . /init_functions
 
 mount -t proc proc /proc -o nosuid,noexec,nodev
@@ -109,6 +113,6 @@ if [ "${udevd_running}" -eq 1 ]; then
     udevadm info --cleanup-db
 fi
 
-exec env -i "TERM=$TERM" /sbin/switch_root /new_root $init "$@"
+exec env -i "TERM=$TERM" "RD_TIMESTAMP=$RD_TIMESTAMP" /sbin/switch_root /new_root $init "$@"
 
 # vim: set ft=sh ts=4 sw=4 et:
-- 
1.7.10.1



More information about the arch-projects mailing list