How To Speed Up Linux Booting
An anonymous reader writes "A common complaint about Linux is the amount of time the operating system takes to start. Like Linux itself, there are plenty of options and lots of flexibility for boot-time optimization. From dependency-based solutions like initng to event-based solutions like upstart, there's an optimization solution that should fit your needs. Using the bootchart package, you can dig in further to understand where your system is spending its boot time to optimize even more."
I thought one of the arguments for linux was that you didn't need to reboot - like you do with Windows. So the boot time should not matter :-)
Any sufficiently advanced bug is indistinguishable from a feature.
Most bootscripts are very generic in that they will try to load all sorts of RAID drivers, various services that are not needed, special fonts, etc.. I've gone in on my computers and wrote a very simple, quick, and to-the-point bootscript (easy to do with a little BASH knowledge), and my system boots up remarkedly fast. Granted, my bootscript isn't very portable, but one of the benefits of Linux is the ability to customize it.
Another trick is to prelink files and let KDE (if that is what you use) know about it. Even the startkde script can be long and drawn out, so trimming the fat and only including what's needed on your system can make a big difference. I've shaved over 13 seconds off a boot sequence by writing a minimum bootscript for my hardware, and that was using a relatively fast distro to start with.
-Mike
There are more things in heaven and earth, Horatio, Than are dreamt of in your philosophy.
The "bootchart" tool mentioned in the article looks promising. But it's mostly unlabeled bars. Until they figure out how to correctly identify all the processes running during boot, it's not too helpful.
The CPU utilization during booting is much higher than I would have expected. That's interesting, and unexpected. For most of the first ten seconds of post-kernel startup, the system is CPU bound, while the disk is idle more than half the time. Where is all that CPU effort going?
If it can be done on a 200MHz ARM9 processor in just over a second, anyone else can do it:
http://www.embeddedarm.com/epc/ts7400-spec-h.htm
Or maybe he's just counting the time until the computer is actually usable. With Linux once the computer is booted, and you see the desktop, it's ready to use. With windows, it takes another 20 seconds (at least) after the desktop appears for it to actually become usable.
Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
Replying to my own post? Nice. I found this comparison between upstart and launchd. Long story short, launchd isn't event driven.
Ma notebooks now use Safe Sleep, which is kind of a hibernate/standby hybrid. When you put it to sleep, it writes the RAM contents to disk as if it was hibernating, and that can take a few seconds depending on how much RAM is in use. Unlike hibernation, when you wake, it wakes instantly because it doesn't go to the RAM image on disk unless there has been a power failure during sleep. It just resumes from whatever was in RAM at sleepytime.
This best-of-both-worlds approach actually makes it possible to change the notebook battery without an internal backup battery, and yet not lose your session. When you resume after a power cut, it loads the RAM image from disk and all your apps are as you left them running.
But if I do have to do a cold boot, my Mac Pro reaches the desktop in 15 seconds. I am not a Linux user but I certainly hope that Linux has optimized startup with caches by now. (If I make a major change to the system, such as an update or add/remove kernel extension, startup takes much longer as the caches need to be rebuilt.)
Anybody else appalled by the amount of people saying "just don't turn it off"?. I know I am. It's shocking for various reasons:
If you leave your computer on 24/7 just for convenience, then perhaps you ought to consider the possibility that you are a spoilt rich selfish pussy and not the infallible sysadmin you undoubtedly believe yourself to be.
I am running Kubuntu 6.10, and I have to say that I have been pleasantly surprised with Upstart, for the most part. It really is much quicker than the older boot sequences, as well as Windows XP, in my personal tests. I still have a couple qualms, however.
/boot/grub/menu.lst and commenting out "quiet splash" takes care of it, but I don't always want to perform a status check when booting. This is a really simple thing to provide accomodation for, and I may just be unaware of a more simple solution that is already in place. If anyone knows of one, please enlighten me.
The lack of a method to switch back to the traditional, detailed boot sequence is annoying. Editing
The other problem comes as a result of the first. There is, with no option to switch to a detailed boot sequence, also no way to skip network detection. I am used to just issuing 'Ctrl+C' to skip it, and so it is quite frustrating sometimes. If you aren't connected to a network, or if you connect only after you have brought the system up, you are stuck waiting however long the default timeout is, unless you, again, perform a manual edit. This wouldn't be so much of an issue if arguments could be passed by default at boot-time, but as far as I know they cannot.
Once again, if anyone knows of solutions to these issues that I am ignorant of, I'd be grateful to hear them. Other than what I have related, though, K/X/Ubuntu 6.10 boots very quickly, and I am quite happy with it.
"We may face a scorched and lifeless earth, but they're accountable to their shareholders first."
I know this is off-thread, but is there anyway to speed up Windows booting? At least with Linux you can tune and serialize or parallelize the boot process for speed. Is there anyway to do this with Windows? The 35 processes that launch out of my system tray just don't want play nice together on boot :)
Sorry for the offtopic, but this is a sincere post.
All in all, playing with parallelized OS startup is very nice but the real problem lies elsewhere...
In my experience (data center, 350+ Intel-based servers, Linux + Windows plus a bunch of SPARC Solaris boxes), the OS boot time is negligible compared to the time needed for hardware initialization:
- BIOS startup
- Memory check
- Remote Console init (DRAC/XSCF etc.)
- RAID Controller(s) init, disk spinup
- RAID Consistency Check, volume initialization
- Start Boot Sequence
Especially the disk subsystems cause large delays - most time is spent waiting for the GRUB screen.
Parallelizing the hardware initialization is where we could make some significant progress.
-- Gxis! Ed.
You insult lots of experienced Linux users who do care about their machines booting several times slower than an XP pc.
That's an insult to everyone's intelligence. There is no such machine, unless you have serious hardware problems and the present article is the "more power to you" that I mentioned. Many live CDs boot faster than XP and most installed distributions boot faster than that.
You may have a laptop and you may be happy with "hibernating" it, but many of us need to power off PCs. An office PC I power on every day, my home's PC I power on and off when I get and leave home.
You should happy be like me. I'm aware of the issue. Ultimately, if you care about power consumption you are going to get a laptop or desktop with reasonable power management. Test it out before you buy it or send it back if you can't and it does not work. Microsoft continues to design complex and "extensible" non standards for power management, so it's not easy. Comfort yourself by knowing that M$'s dirty tricks make things harder for their own users than they are for you.
Of course, there are benefits to having at least one machine that you never turn off and that never sleeps. I have contact information, archives of photos, music, movies and work that I can get to anywhere by sftp and KDE makes it all look local. This is much easier than syncing three or four laptops and desktops. Wake on lan might be nice, but my equipment is all so old, I've never bothered trying. For at least one machine, I never will. A modest server consumes 50 watts or less, kind of like some light bulbs I never turn off. I get more use by far out of the servers than I do light bulbs. Your business might also consider that a reasonable convenience.
Friends don't help friends install M$ junk.
Or maybe he's just counting the time until the computer is actually usable. With Linux once the computer is booted, and you see the desktop, it's ready to use. With windows, it takes another 20 seconds (at least) after the desktop appears for it to actually become usable.
For my machine and GNOME, not true. GNOME goes through its splash screen and shows a desktop, but it is still loading panel applets and the clock. It takes several more seconds. It's hardly usable because loading anything while it's at this stage takes forever.
I used to think KDE starts slower than GNOME. Now I think it's a dead heat. KDE shows its splash screen and it's there longer, but KDE is almost (if not entirely) done loading when it says "KDE is up and running." GNOME seems to take the Windows approach: show the desktop to fool 'em, even though it is actually still loading.
Penny - plain text accounting
The full implementation of upstart isn't in Ubuntu yet- It was delayed until Feisty +1. So yes, upstart can still be much faster than it is now.
s tcount=8
See http://ubuntuforums.org/showpost.php?p=2264992&po
How about duel boot laptops? After all, Linux's hardware support for laptops isn't that great, and many people still have things they need (or prefer) to do in Windows or some other OS. Hibernation doesn't remount partitions, so guess what happens if you hibernate, boot another OS, edit a file, then resume?
If boot time didn't matter then people wouldn't complain about it. You could hibernate all the time, but hibernation isn't perfect (or safe in all situations), and some people just like to start with a "clean slate" in the morning. Boot time is actually one of the big things that keeps me from using Linux very often. When I wake up in the morning and want to check my RSS feeds I have three options. First I turn on my laptop (which is off to conserve energy, prevent my P4 from acting like a space heater for my dorm room, keep the room quiet, and cut down on EM interference that keeps my "atomic" clocks from syncing), and get to my boot manager. If I choose BeOS (my primary OS) I can wait 30 seconds for the OS to load (since I'm stuck with 1 MB/sec disk read speed, normally it would be ~7 seconds), immediately launch Firefox in ~5 seconds (same problem) and I'm done. If I choose Windows I wait about 40 seconds for my desktop, and about 20 seconds for Windows to finish so I can launch Firefox. With Linux I have to wait 2 - 3 minutes for it to boot and I can launch Firefox immediately. Hibernation wouldn't work since I use one Firefox profile on a shared drive.
So, even though hibernation works for you, it's not a valid excuse for an unnecessarily long boot time. (Oh, and if you're wondering why I still use the BeOS despite crappy hardware support, it's because it tends to be an order of magnitude faster for opening folders, e-mail, and non-ported applications. I get pissed off if I have to wait for a program and there isn't a hardware or network bottleneck that's causing the delay.)