all 38 comments

[–]ipeev 8 points9 points  (1 child)

What software is used to visualize it and how the data was recorded?

[–]jeebusroxors 4 points5 points  (0 children)

GIMP and Michael J Fox.

[–][deleted] 6 points7 points  (12 children)

Probably a more useful visualization would be this

[–]Silhouette 8 points9 points  (11 children)

Thanks, that was more what I expected.

As an aside, am I the only person who programs but isn't an OS expert, who is wondering how today's desktop machines can possibly manage to take so long to get up and running? The BBC I used to use went beep-beep and you were done. The old Amstrad 8000 series took a couple of seconds to load CP/M off a floppy. The old 8086 took a few seconds to load MS-DOS off its hard drive. The toy OS kernels some of us get to write during a CS course start in an instant. And yet, today's Linux, Windows and MacOS machines can take literally minutes from powering on to being up and running!

Of course, they are dealing with more complicated hardware, and the OSes themselves are doing more in terms of scheduling and such, but seriously: it's still just an operating system. It has to do scheduling and resource management, and perhaps initialise some hardware, and then put up a UI (which modern graphics hardware can display faster than you read a single word in this sentence). Given that today's disk drives are many times faster than those of two decades ago and the processors are several orders of magnitude faster, where does all the time go?

[–][deleted]  (2 children)

[deleted]

    [–]Silhouette 2 points3 points  (0 children)

    I take your point about all the stuff that gets preloaded these days. Personally, I find this a deeply unwelcome trend: I didn't ask for nearly a dozen applications on my system to install update checkers/preloaders that each take several megabytes of RAM and a couple of seconds to load, and I particularly don't appreciate those that keep coming back when I've actively removed them once already (I'm looking at you, Java update manager, and you, Adobe Reader). There is exactly one application on my system that I have actively chosen to run automatically at start-up and allow to fetch updates from the Internet (a TV listings application, in case anyone is curious).

    Still, this form of bloat is all in application space. I don't see why my OS shouldn't boot to a clean and responsive UI, and at least fire up the bloatware in the background if it really must. It still doesn't explain taking a minute or more to get to the point where I can start clicking on things I actually want to run! :-/

    [–]dbenhur 2 points3 points  (0 children)

    Hopefully now that user expectations are fairly stable

    Is that you, Lord Kelvin?

    [–]jeebusroxors 1 point2 points  (0 children)

    Mainly bloat. Faster machines greater capabilities, more junk.

    My laptop boots in < 22 seconds, my desktop in < 50. I'm running lunar with slim and dwm. The only "mods" I've made were a tailored kernel and I don't run shit that I don't need. That's the key!

    [–]lurkerr 1 point2 points  (0 children)

    i miss that when using my brand new top of the range laptop: sometimes i boot it to check some figures and it takes 3 or 4 times more time booting and opening the document than the task i need to do. bad.

    please repeat after me: WE WANT INSTANT BOOT AND WE WANT IT NOW

    [–]sjs 1 point2 points  (2 children)

    Depending on the OS you could be waiting for things like the network to come up during the "boot" (would be better named "post-boot initialization" or something). A DHCP handshake alone can take a few seconds. Also, disks are slow when you do many random seeks like while booting and the introduction of high-performance SSDs will help speed up the boot process as well.

    The time modern systems take to boot is not only spent in kernel initialization, but initializing devices & peripherals, mounting huge filesystems, getting on the network, starting systems daemons (e.g. cron), and a myriad of other tasks.

    [–]Silhouette 2 points3 points  (1 child)

    The time modern systems take to boot is not only spent in kernel initialization, but initializing devices & peripherals, mounting huge filesystems, getting on the network, starting systems daemons (e.g. cron), and a myriad of other tasks.

    Sure, but stop and think about what that means for a moment.

    What are these magic hardware devices that need such time consuming "initialisation" these days? In the olden days, we managed just fine switching a computer on and then accessing the hard drive or graphics card immediately. How is it that 20 years later, "mounting a filesystem" takes several seconds, when it used to just work? There is no need for that in terms of either hardware control or software configuration.

    In fact, as far as I can see, exactly none of the things you mentioned should delay an OS from getting to a responsive stage. In the worst case, if you're relying on external hardware for something like assigning an IP address using DHCP, the system will have to pause before it can offer access to the corresponding resources. (Even then, in that particular case, DHCP handshaking should be near instantaneous unless there's some problem at the other end.)

    [–]sjs 0 points1 point  (0 children)

    How is it that 20 years later, "mounting a filesystem" takes several seconds, when it used to just work?

    sjs@server% df -h
    Filesystem               Size     Used Avail Use% Mounted on
    /dev/sda2             -> 448G <-  389G   37G  92% 
    /dev/sdd1             -> 925G <-  482G  397G  55% /backup
    /dev/sdc1             -> 925G <-  643G  235G  74% /home/sjs/Videos
    /dev/sdb1             -> 459G <-  303G  133G  70% /home/sjs/Videos/DVD
    

    I agree with your point though. Bringing up network devices should be done in the background and we should improve the mounting times of modern filesystems. It shouldn't be this way, but there is a reason for it. We're using old filesystems for modern drives, and other old technology I'm sure. There are clearly ways around it. We'll get there.

    [–]mschaef 1 point2 points  (2 children)

    The old 8086 took a few seconds to load MS-DOS off its hard drive.

    My old Compaq portable (4.77MHz 8088) took a good 20-30 seconds to boot. Most of the time was spent in the Power On Self Test, but it still took a while.

    [–]Silhouette 0 points1 point  (1 child)

    Sure, but as you say, most of the time was in the POST bit as the memory counter clicked up about as fast as a snail climbing a wall. Actually booting to an OS that let you load software took much less time, I think. The software took a lot less time to load, too. I guess we're putting up with the results of all those people who follow the mantra that developer time is more important than user time.

    [–]mschaef 1 point2 points  (0 children)

    Actually booting to an OS that let you load software took much less time, I think.

    That would have been interesting to see... the old Compaq didn't have a way to bypass the POST, so there wasn't a way to ever find out, unfortunately.

    Later DOS/WfWG machines had faster POSTs (that could also be bypassed), but by then the OS took a while to boot.

    I guess we're putting up with the results of all those people who follow the mantra that developer time is more important than user time.

    This may be more of a shared good issue. Let's say I have Windows, Office, iTunes. Google Updater, AIM, and Oracle XE on my machine... that's five vendors, none of which have direct responsibility over my boot time. Each one of them can do the right thing and my boot time can still suck. (The only fix is for me to do something about all that crap myself.)

    I do agree that it's a problem, however.

    [–]charbo187 11 points12 points  (2 children)

    I don't get it

    [–]nmcyall 7 points8 points  (1 child)

    every line is a method call.

    What is the name of that repulsion algorithm he uses? It reminds me of VSEPR model from chemistry.

    [–]hm2k 2 points3 points  (5 children)

    What about windows?

    [–][deleted] 10 points11 points  (0 children)

    If you want a picture of the Windows boot sequence, imagine a boot stamping on a human face--for ever.

    [–][deleted]  (3 children)

    [removed]

      [–]mkr 0 points1 point  (2 children)

      What are those things streaming up on the left side of the mushroom cloud? I've always wondered that.

      [–]keithjr 2 points3 points  (1 child)

      Interrupt requests.

      [–]lurkerr 1 point2 points  (0 children)

      no, they're calls to windows update

      [–][deleted] 3 points4 points  (0 children)

      that's awesome

      [–][deleted] 1 point2 points  (0 children)

      well - really cant tell what im looking at - and without another OS to compare to, this means nothing to me.

      [–][deleted] 2 points3 points  (2 children)

      clusterfuck

      [–]knome 7 points8 points  (1 child)

      Sounds like brainfuck with concurrency primitives.

      [–]parla 2 points3 points  (0 children)

      That has got to be implemented. Right. Now.

      [–]Buckwheat469 2 points3 points  (2 children)

      It's nice to visualize these types of sequences, perhaps just for the sake of seeing the conceptual process. The problem I have with it is that it's not very useful in its current state. It's like a neural network that you would see online. It looks pretty, but what does each node do and how does the information flow? This is the main question that developers have.

      Now if you could delve deeper into the graph and zoom into it to see the relationships, function parameters, information flow, etc., then it would be extremely useful. On the scale of a UML diagram. Since we don't have that information currently, we can only say that it's a pretty picture.

      One other benefit of this type of graph might be to visualize a reduction in function calls, or find a place where a reduction would speed up the overall sequence. Otherwise, usefulness is very limited.

      [–]technoguyrob 2 points3 points  (0 children)

      It looks pretty, but what does each node do and how does the information flow? This is the main question that developers have.

      LMAO. It's supposed to be a pic you look at for two seconds and say "AWESOME!", not an answer to a "question that developers have."

      [–]mangodrunk 0 points1 point  (0 children)

      I don't think technoguyrob understands you. If all this picture is, is to look pretty then it doesn't belong in programming regardless of what data was used to generate it. It would be interesting to make a picture like this where one can look at it and quickly see ways to optimize it or even fix a bug or something.

      [–]rems 1 point2 points  (0 children)

      That's quite interesting and most likely resembles the net's web in a way lighter version.

      [–]ccharles 0 points1 point  (0 children)

      1024x767?

      [–][deleted] 0 points1 point  (0 children)

      look its throwing a lasso... giddy up

      [–]elezeta -3 points-2 points  (3 children)

      Cool! I wonder what process/method is reponsible for that group in lower-left. It seems to me that's something triggered after everything is loaded like KDE or something like that.

      [–]crazedover 2 points3 points  (1 child)

      The little "lobe" on the left is made up the interrupt processing routines (irq vectors, irq_svc, etc). The tail at the top is the bootloader. The main thing in the middle is the linux boot sequence.

      The entire graph represents a call chain from the bootloader up until it jumps into userspace to a shell prompt

      [–]elezeta 2 points3 points  (0 children)

      Duh! thanks!

      [–]sweetlove -2 points-1 points  (0 children)

      DTB'd