24 seconds !
Par liberforce le vendredi 17 octobre 2008, 00:40 - Computers / Informatique - Lien permanent
This is my new boot time, thanks to the instructions of Mandriva's kernel star, pterjan :-p. Thanks for having been so reactive.
If you didn't,
you should read my previous entry about boot
time. So, how did these 9 seconds (compared to 2009.0 without the fix, and
7 compared to 2008.1) disapeared ? Well, first, I'd tell you I'm not sure
they're completely gone, because I felt that loging in was sensibly slower
(more time until I have a wallpaper) but I have no numbers for this, as I only
measured the boot time until gdm for 2008.1 and 2009.0. So maybe the
"graphical
desktop startup time" is a bit longer, but not 7 seconds longer, so I'm
sure I won some time...
So where was the problem ? Well it seems that the usb-storage
module is at fault. Yes. Again. Here is what fcrozat told us a few weeks ago in
his article named "Improving
boot time on a general Linux distribution, not an easy task" :
We also had reports of "udev takes forever" when people had usb storage devices plugged on their system. We did some tests and it was adding about 5s to boot, mostly because of "usb-storage" settle delay (which is 5s), when udev coldplug starts. To try to reduce this, we are now loading usb-storage module before udev is started, if an usb mass storage device is detected, to make sure the 5s "usb-storage" settle delay is done in parallel with udev. Average gain : 3s (there is still a penalty of about 2s when usb mass storage is plugged but we can't really do anything about it ATM).
From my lsinitrd output, pterjan could see that my initrd was loading the
usb-storage module. I had no USB storage device connected, but it
was nonetheless slowing me. In fact, it seems that an old buggy version of
harddrake used to add instructions to load
usb-storage in /etc/modprobe.conf. It's an old bug,
but unluckily, if the command is already there, no tool will remove it for you.
I saw today that my work laptop running 2008.1 has the same problem.
The solution was to remove the /sbin/modprobe usb_storage;
command from my /etc/modprobe.conf , and to regenerate the initrd
(which I had never done before - don't laugh). This was easy. It seems this
module is only required to be in the initrd if your root
(/) partition is on an USB storage device.
If you want to do the same, first make sure you have another kernel on which you'll be able to boot (it may be the case if you upgraded from 2008.1 like me). If not, backup your current initrd (you'll however need a live CD to restore it in case you're in trouble). Then, as root, call this command :
mkinitrd -f /boot/initrd-$(uname -r).img $(uname -r)
This will regenerate the initrd for the kernel version you're currently running. Then bootchart again. Then enjoy.
Commentaires
Ahhm, much better.
For mkinitrd, you forgot -f to force generation if initrd already exist.
Try also to add --without-usb on mkinitrd command line, you might gain 1s in boot time (we discovered that yesterday).
Also, make sure you have "preload" package installed, it should speedup GNOME login after two or three logins.
If you don't change your hardware on your system, try disabling harddrake by adding HARDDRAKE_ONBOOT=no to /etc/sysconfig/system
Hum, the --without-usb option is undocumented (unless it's a new option in 2009.0). I only saw --force-usb on my 2008.1 system. Oh, and the -f flag is because to backup the file I had changed its name :-) , but you're right, i'm going to change it.
Yes, it is undocumented ;)
Nope, adding the
--without-usbleads to +2 seconds on my computer (I tested twice). For the login slowness, it seems it's due to the GNOME splash screen when the mdkapplet is launched.