Software Tweak Makes Linux Boot In Under 200 ms
An anonymous reader writes "A version of Linux has been created that radically speeds up system boot time -- to less than 200 milliseconds (ms) from power-up to application code startup. The techniques, created by Real-time Linux vendor FSMLabs, are processor independent, and boot times of under 100 mS are expected in the future." Update: 09/30 01:04 GMT by T : Yep -- both headline and post should have read "ms" (milliseconds) rather than "mS" (milli Siemens); thanks to all the alert readers.
This isn't for desktop linux, only for embedded devices.
any linux user wants to sacrifice their uptime to boot faster
this is certianly incredible, but it is not yet available for x86 platforms. Do note, that this is not the boot sequence up till you get the login prompt, but just the initial loading of the kernel.
> "I allege that SCO is full of it" -Linus
RTFA
"Yodaiken said the new fast boot technology also supports many Intel x86 boards"
It works by loading the OS to RAMDisk from Flash... Sounds like eXecute In Place.
Not the most original thing in the world, but definitely necessary to keep Linux in step with other heavy embedded operating systems like WinCE and VxWorks.
Note that for embedded systems the main interest is how long it takes for the kernel to load, not how long it is before a multi-user server or workstation has a prompt that says "login" on a pretty X display.
So, this is a good improvement it seems, but shaves away 4.5 seconds or so out of maybe 30 sconds or over a minute for many people. Combined with the parallel init scripts work mentioned a few days ago,though, I'm guessing that Linux systems will be booting a lot faster with the major releases in 6 months to a year.
Live barefoot!
free engravings/woodcuts
I have noticed that *nix boot times are noticibly longer than Windows XP boot times. I have never been able to figure out why this is - does anybody know?
Thanks
John
...And when they came for me, there was no one left to speak out for me." - Martin Niemoeller (1892-1984)
Keep the image that the kernel creates AFTER boot - simply load that into memory and restart.
That said - you still need the long boot the first time, and after any hardware changes. Also, I am guessing to get it into the sub second range - hard drives are right out as well - and all of the silly boot managers. But for an embedded device - who cares
I have mod points and I am not afraid to use them
Although this article refers to embedded systems, the earlier Booting Linux Faster article contained an overlooked post by TornSheetMetal, who had a great idea on how to make Linux, or any operating system start up faster on any system.
Simply run every startup script simultaneously, but have each script block until its dependencies have started. Nothing waits longer than it needs to, and there is no need for additional complex systems to check and manage dependencies.
This is VERY easy to do with daemontools and svok (both written by D.J. Bernstein, the author of qmail). Switch over and you'll never go back.
It's hard for thee to kick against the pricks.
alias uptime="echo '5:33pm up 22342352324 days, 6:28, 2124315623 users, load average: 2432.40, 12312.31, 123123.19'"
For the hard drive - rather than put executables down 1-n on the hard drive - Windows (for many years) figures out the load order of sectors of the executable - and fragments them across the sectors in that order - net effect +10-50% load time boost from using the hard drive effectively
For drivers - there is this really interesting way that windows is now initializing driver loading by putting them into the kernel image itself... Kind of like taking modules in Linux - and rather than having the overhead of loading the module each time you boot - insert it into the kernel - and letting the kernel load (with a "static" module in now) - This one is a little trickier to put into a Linux environment... what does the GPL say if I have a loadable module - yet the kernel now statically links it in as an optimization... I don't even want to go there
I have mod points and I am not afraid to use them
when linux boots 200 mS before I turn the computer on.
But what does electrical conductance have to do with boot times? 100 mS is 100 milliSiemens. Milliseconds is abbreviated ms.
)9TSS
check out www.linuxbios.org. Too bad I don't have any motherboards with a supported BIOS. It sounds way cool. Kind of like turning a legacy PC into a modern embedded device. heh
Linux doesn't crash. It "creatively parks".
I have something in common with Stephen Hawking...
// Code to make Linux startup look like it's doing something
// Insert in a few hundred random places
long foo = 0;
while (foo < 10000000)
{
foo++;
}
...
Go RTFA - several points: You don't just simply "load an image into memory" and have a running system. This is why properly supporting APM is difficult on any machine. All your hardware needs to be reinitialized. Network connections need to be reestablished (getting IP and so on), file systems need to be remounted, there are all kinds of timer-driven things that need special handling, and so on and so forth.
What these guys are doing is optimizing for embedded systems - where the kernel is hardwired for exactly the same hardware every time. You don't need to probe, and you don't need to guess what state the hardware is in - it's a closed system and it's the same at every power-on. Furthermore there are all kinds of things you can initialize simultaneously when you can optimimize for a deterministic environment - if your video system wants a moment to do a POST, you can spend that time initializing a network interface, for example.
Also, the definition of "boot time" for this dicussion is the time until the first application-level code runs. That's something like only 1/3 to 1/2 of the boot time for a typical linux server or desktop that you're thinking of. Most of the time is spent bringing up userland services and loading the graphical environment. There's a big savings on big workstation in flushing RAM to disk, but not so much for small embedded systems, where application state is very minimal (eg a Tivo, or a wireless router).
What a misleading article.
Could've at least put non x86 or embedded device in the title.
We have secretly replaced these Slashdot mods' sense of humor with a rusty nail. Let's see if they notice!!
Scene one, Act One
:(
Adrian Lamo in a orange prison jump suit conferencing wit his attorney.
Ring Ring
Attorney: Hold on Adrian, I have to take this call. (talking into cellphone) Yeah.. ok... Great! ok..Thanks!
Great news Adrian!
Adrian: (curious/happy): What?!
Attorney: I just saved 4.8 seconds on my Linux boot time with FSMLabs!
Adrian:
... that when a company doesn't put its kernel changes out immediately, there's calls for hanging them for violating the GPL, but when a linux company optimizes boot-up routines in the kernel, nobody is asking when the patches are going to be making it into the mainline kernel?
from the looks of the article, FSMLabs has been basically profiling the kernel, looking for sticking points, and optimizing them.
why wouldn't at least some of this work be contributed back to the mainline kernel? it is modifications on a GPL'd kernel, after all.
I had a professor tell us this story of one of his previous coworkers:
She had designed and implemented a simple service on top of unix which was accessed by a moderate number of users. When the time to put it into production came, she looked at her remaining few crashing bugs and determined to put in a monitoring loop that would reboot the server if such a situation happened. She also determined that no data loss would occur.
Why did she do this workaround, and how did she determine what bugs she could leave in?
She had a 5 digit company phone extension. She determined that someone could call her, if she let her phone ring twice, in a short period of time. During this time the server would have finished rebooting and start serving again. She could answer the call and simply say, "Try it again", whereupon the user would find that his operation worked this time.
So remember - if your server can reboot itself (and does so automatically and safely) before they can finish dialing tech support, you have no worries!
-Adam
Try instead setting an "automatic login" to a default user... count your time period up to the point where everything has stopped loading (your hard-drive will stop ticking, heh) and all your tray icons etc etc are in place. Significant difference between that and booting just to the initial user-selection/login screen
For linux, you can try a few hard-disk tricks. Also, your filesystem might be slow... try reiser as it seems to run quite nicely. For swap partitions, put them at the end of your hard disk. Just before the swap partitions, if you have any always-loading speed-required files, try making a partition there where you can stick 'em.
There are lots of things you could tweak... being able to stick "/lib/modules" or "/usr/bin" at the end of a hard-disk could actually save you some time if you're loading a lot of stuff from there on bootup, as files on the outer rim of the HDD would load faster...
Actually, the "S" unit refers to the Imperial Second, which is defined as the interval of time between now... and now.
oh wait. these are embbeded systems for things security, monitoring equipment etc. yeah i can see reboot times being critical.
Load average of 123123.19?! Holy crap. I'd rather it look like this:
5:33pm up 22342352324 days, 6:28, 2124315623 users, load average: 0.01, 0.00, 0.00
The uber-server.
For servers a big draw back is that if you have to patch the kernel (or update it) you must reboot, but if the acual reboot only takes less than a second, users might hardly notice the downtime (you could reboot and keep a 99.99% uptime).
...Windows might boot faster, but as we all know windows has D.S.S. capabilities which means "Delayed Service Startup":)
In other words, it loads everything AFTER you login, no joke;)
It's too bad the damn power companies havn't spent some time improving their boot times... it took them like a week to restore my power *grumble*
Problem is dependency but I've seen some quite good solution to this.
If you want to make some daemons run, and some daemons depend on others, why not use a GNU tool specially designed to handle dependencies? Make the initscript into a makefile, and GNU Make should handle starting daemons quite nicely.
Will I retire or break 10K?
Won't someone here get a clue! This has nothing to do with a server or desktop computer! ... so give up all the bragging about how this beats windows, and all the boasting that you haven't booted in 4 years so it doesnt matter...
This doesn't affect you.
George Bush + Linux = "I will not let information get in the way of the fight against Windows"
Some slow-to-start program (e.g. galeon) can be started in 'daemon mode' to speed up the GUI start-up response (most of the initialization time is done by the daemon at boot time).
But it should not be difficult to make a program that just ldopen() a bunch of shared libraries and then stays alive (dunno if it will be swapped out, however).
If there is some KDE program that does not display anything but still uses most of the KDE libraries, it could be started as a service with a fake account, just to keep those libraries in memory.
Ciao
----
FB
It's been 17 seconds since you hit 'reply'! It's been 16 seconds since you hit 'reply'! It's been 15 seconds since you hit 'reply'! It's been 14 seconds since you hit 'reply'! It's been 13 seconds since you hit 'reply'!
Seeks storms aren't inevitable doing stuff in parrallel. The Kernel's quite capable of handling a modest amount of simultaneous disk accessing. It's only doing too much at once in parralel that leads to "thrashing".
Perhaps a solution would be the equivalent to "make -j", where you can tune how many simultaneous things to run. In fact "make" is a good model for this whole approach, since the control mechanism will also need to do dependency-blocking.
Other refinements that occur to me:
- Things could be marked as "light", "medium", or "heavy", and the "weight" of simultaneous running processes kept constant.
- The control process could be adaptive, tracking the "load average" and altering the "weight" of individual processes to seek a best aggregate run time.
This is a timed version of my kernel boot sequence on an RTE-V850E/ME2-CB board (a rather pokey processor -- 80MHz); the first column is seconds:
[ 0.002619 ] Linux version 2.4.21-uc0 (miles@mcspd15) (gcc version 2.9-v850ice-000414-nmit-20010327) #62 Wed Jul 16 16:03:57 JST 2003
[ 0.009299 ] On node 0 totalpages: 8192
[ 0.019597 ] zone(0): 8192 pages.
[ 0.030390 ] zone(1): 0 pages.
[ 0.030635 ] zone(2): 0 pages.
[ 0.030891 ] CPU: NEC V850E/ME2
[ 0.031065 ] Platform: Midas lab RTE-V850E/ME2-CB
[ 0.031322 ] Kernel command line:
[ 0.031869 ] 50 BogoMIPS (precomputed)
[ 0.067024 ] Memory: 24388K/32768K available (291K kernel code, 150K data)
[ 0.068884 ] Dentry cache hash table entries: 4096 (order: 3, 32768 bytes)
[ 0.069639 ] Inode cache hash table entries: 2048 (order: 2, 16384 bytes)
[ 0.070279 ] Mount cache hash table entries: 512 (order: 0, 4096 bytes)
[ 0.071467 ] Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.072234 ] Page-cache hash table entries: 8192 (order: 3, 32768 bytes)
[ 0.073991 ] POSIX conformance testing by UNIFIX
[ 0.074414 ] Linux NET4.0 for Linux 2.4
[ 0.074663 ] Based upon Swansea University Computer Society NET3.039
[ 0.075648 ] Starting kswapd
[ 0.078020 ] Serial driver version 5.05c (2001-07-08) with no serial options enabled
[ 0.078538 ] ttyS00 at 0xfe08000 (irq = 90) is a 16550A
[ 0.079150 ] Blkmem copyright 1998,1999 D. Jeff Dionne
[ 0.079349 ] Blkmem copyright 1998 Kenneth Albanowski
[ 0.079544 ] Blkmem 1 disk images:
[ 0.079889 ] 0: 876000-FCE7FF [VIRTUAL 876000-FCE7FF] (RW)
[ 0.084282 ] VFS: Mounted root (romfs filesystem) readonly.
[ 0.085781 ] Freeing unused kernel memory: 20K freed
Whoo, 80ms!
Not that useful though (no network devices; network devices seem to take forever to start)...
We live, as we dream -- alone....
Just copying a kernel or a suspend image from flash will give a quite noticeable delay.
And take a look at swsusp - restarting a suspended kernel is NOT trivial. You need to reinitialise hardware, some of which may not allow you to read back their state (graphics cards being a common culprit) so that you need to know what state they were in on suspend.
"milli Siemens"?
Is that some sort of miniturized German electronics manufacturer?
I always thought that mS stood for "milli Sievert", a unit for ionizing radiation...
__
Not believing in force is like not believing in gravity.
First of all, most people in this thread. are talking about suspend/standby, not hibernate. Hibernate is a no-power mode ('cept the clock) which writes all RAM data to disk, while standby is a low-power mode (no display, disk, etc.) that just basically waits. Hibernate is historically somewhat less reliable, although either will destroy open network connections. Both modes work quite well in Win2k+, although I'd certainly be scared in 95/98/ME.
On most laptops I've seen, you can set the bios to send standby, hibernate, or nothing to the OS when you close the case. Any effect can be used with the case open by selecting it from the Start-> Shutdown menu.
On my 233Mhz Thinkpad 600 (which is a wonderful if aged machine, but which isn't technically supported by Windows 2000 which is running it) I have case-close mapped to standby and the power-button mapped to hibernate. I also have autohibernate on low battery. So if I close it it goes to standby and from standby it'll shutdown if it gets in danger of running out of power to stay going. (Standby does _not_ last indefinitely on battery)
I've had Windows 2000 fail to recover on hibernate, but not very often and that machine had other issues. I've _thought_ standby was failing on this laptop because the response time to the wakeup button-press varies and isn't particularly fast. It's occasionally woken up without the mouse, but the mouse is finicky to start with (again, W2k doesn't properly support the onboard mouse) Sleeping and waking again has always fixed the problem, all applications still running.
All of that said, however, I certainly recommend saving everything important before sleeping, hibernating, changing power sources, or transporting the machine (even in case-closed but staying on mode) All of those things are somewhat more risky than doing nothing, but less risky than some applications.
Looking for freelance Actionscript (Flash/Flex) or ColdFusion work and/or freelance developers. Email me, put Slashdot
MacOS X is by far the best desktop environment _I've_ ever used, and it's far better than XP. It does tend to be more expensive, of course.
It does almost everything you want it to, and it does it automatically, and they're constantly building new features in smooth ways.
It also has one of the largest available software bases around: It runs MacOSX software, MacOS7/8/9 software, linux/BSD software compiled for PPC (X11 isn't installed by default, but the OpenOffice.org installer smoothly includes it, for instance, and it's on the OSX CD) and has an available emulator (VPC) that allows you to run x86 in a window, including Windows or Linux.
Even they aren't perfect, but they're closer than anybody else. Oh, and "Mail" rocks, hard.
Looking for freelance Actionscript (Flash/Flex) or ColdFusion work and/or freelance developers. Email me, put Slashdot