Sleep is a very popular hardware feature of modern computers. Being able to temporarily pause what you’re currently doing, have the computer remain in a low power consumption state for some time, then go back to what you were previously doing in no time is definitely a very useful feature. However, I believe that this feature a bit overused nowadays, and that the “power off” feature should not become a niche use case. What I find especially alarming is the tendency, in modern desktop environments, to actively prevent users from using it, by making the power button turn the computer asleep instead of turning it off (Windows Vista, Windows 7…) or even hiding the power off functionality from the main UI unless a magic button is pressed (Gnome 3, Windows Vista…). Here are 5 reasons why I think this is a bad route to take.
Reason 1 : Power waste
Consuming a small amount of power is not the same as consuming no power at all. As an example, a middle-sized laptop which eats up roughly 14-25W when powered on and doing light work will see this drop to a few watts (1-3) when asleep, the remaining consumption being mainly due to the need to keep the RAM and part of the motherboard powered on. This is an impressive reduction, but not the same as not consuming any power at all. Batteries still get drained and likely won’t survive a night if the computer isn’t plugged in. All that power is mostly consumed for nothing, as you are likely to have completed your tasks before leaving the computer for an extended period.
The “booting consumes more process than sleep” myth of sleep proponents has also been busted many times, at least for long sleep periods like those involved when people leave their computer sleeping during the night. For a quick calculation, 45W for one minute is 2.7kJ, whereas 2W for 8 hours is 57.6kJ, about an order of magnitude more.
Reason 2 : Hardware longevity reduction
While the previous reason was more of a personal pet peeve, this one will probably be more of interest to everyone. Computer hardware ages when it is powered on and doing work, not when *you* are doing work on it. Keeping a computer running in sleep mode all the time will hence result in premature aging of those of its components which stay powered on. The RAM and the battery, in particular, are relatively fragile components, and replacing those can be quite difficult as manufacturers have a bad habit of overpricing spare parts and obsoleting them after one year or two.
Reason 3 : Terrible update situation
Even in the world of servers, which are an iconic example of “always-on” computer, you’ll rarely see uptimes of months, let alone years. One of the main reasons for that is that software should regularly be updated, and in current designs such updates require applications to be restarted in order to be applied. The simplest way to restart all applications, and the only way to restart core-level ones in current OSs (though I hope I can improve the situation), is to regularly turn off the computer.
So what happens in current desktop OSs ? After doing everything to make you use sleep all the times, desktop environment designers have no choice but to randomly bluntly suggest you to reboot the computer, sometimes going as far as brutally doing it for you, losing all of your unsaved data in the process (Windows Vista, Windows 7). An insane level of violence towards the user that wouldn’t be needed if computers were simply turned off every night.
Reason 4 : System cleanness decay
Despite best developer effort, all software has its quirks, and some quirks make the performance and stability of the computer decrease as time passes. Memory leaks are a typical example, which even garbage collection doesn’t fully address (bad coding combined with garbage collectors still eats up huge amounts of RAM and current GCs usually wait the last moment to start cleaning up their mess, freezing running applications due to memory starvation by doing so). Other slight system state degradations can happen over time : background services crash and aren’t restarted correctly, or are started and never stopped when they aren’t used anymore…
Regular reboots allow one to regularly go back to a clean slate, restoring full system performance and stability.
Reason 5 : Mind cleanness decay
A permanently sleeping system is not only problematic from a hardware and software point of view, it also has adverse effects on the user’s mental health and work performance. Let’s use a real-world metaphor to explain this.
When we work on a real desk, we naturally tend to put mess on it over time. Things which are left to do later, once some condition is met, things which we’re done with, things which we’d like to keep an eye on, things which we believe could be useful in the future… As time passes, the desk gets full of papers, tools, empty coffee cups, and other stuff that ends up getting in the way of our movements and polluting our visual field, decreasing our productivity little by little without us noticing.
If this wasn’t enough, a messy desk also reduces the benefic effects of sleep and rest breaks. Instead of coming from them with a fresh mind, ready to try new things and attack problems from new angles, we end up seeing things at the top of the pile of mess and reminding us things like “Oh, yeah, I must do this… and this… and I also was working on this…”. We end up going back to the stressed state that we tried to escape by leaving our desk for a while.
For all these reasons, regularly cleaning up a desk and removing the stuff encumbering it is an excellent practice as far as peace of mind and human performance is concerned. So why would we want to face a messy computer, full of stuff remaining from previous usage, each time we turn it back on ? A mess of opened applications with remaining data is exactly the same as a mess of papers on a desk : something stressful and distracting which gets in the way of productive work instead of helping it. Yet another excellent reason to regularly turn your computer off (and clean up its desktop, for people like me who abuse the ability to put files and shortcuts on it).
Bonus reason : Stop making up excuses for bad design
As can be seen above, there’s a range of reasons why I think that always putting computers to sleep is a terrible idea, and why power off should be used each time one is done with his current activities. Now, of course, it is also my duty to think about why people would want to use sleep all the time. Sadly, everything I can think of is the result of terrible current desktop OS design rather than genuine reasons to advocate sleep even in an idealized world of perfect OSs.
As an example, the most frequently mentioned benefit of sleep over regular shutdown/startup procedures is the time it takes for these procedures to complete, especially on Windows. It is certainly a legitimate concern to want a computer that’s available in seconds, rather than minutes. However, it should be mentioned that we had computers that booted in seconds dozens of years ago, and that we now have hardware that’s several thousands of times faster according to every possible metric. What has changed is the insane amount of operations that OS designers think must absolutely be performed on every startup. Some examples :
- Updates – A major source of shutdown and startup slowness on Windows is the system deciding that updating procedures must be performed at these very moments and can’t wait any longer. This is the consequence of Windows’ design not allowing opened files to be altered, which is undoubtedly a design problem as Unices do very well without this limitation.
- Hardware discovery – Before displaying a login screen, the thing which a modern OS spends most time at (at least on Linux) is to dynamically probe all installed hardware and initialize everything. I think that a lot has to be done in this area, by starting independent hardware drivers in parallel, deferring the launch of hardware drivers which aren’t actually needed until a later stage of boot (who needs a printer for typing in a password ?), and optimizing for the common case of a constant hardware configuration. Some Linux distros have already made impressive progress down this path.
- Random services and applications – Another thing which could certainly wait until the system is fully started or start at extremely low process priority, aside from hardware drivers that aren’t yet needed, is system services that aren’t yet needed. System updaters don’t need to be up right from the start, neither do graphic drivers’ control panels or online video game stores.
At least that’s what I intend to prove, by releasing a desktop OS that feels as comfortable as current ones (in the limit of its capabilities at least), yet sticks to the essential in its startup and shutdown process, and by doing so achieves near-instant login window display and a few seconds of overall initialization time.