December 31st, 2008

Is your computer "honest?"

I had another one of those experiences today which made me ask my computer (rhetorically, I suppose, and yes, silently as well), "What the hell are you doing?"

But seriously, in the era of "modern" operating systems and applications, there often are times when the computer will be busy doing something, but far be it for the user to ascertain precisely what. I verified this somewhat empirically today. I'm in the middle of reinstalling everything on my desktop, and as I write this, Windows XP Service Pack 3 is in the middle of "installing" (if you can call it that).

I just sat through the 10-or-so-minute phase which Microsoft Update likes to call "Preparing for Download," which precedes (in sequence) the actual download, the verification of the download, and finally, the actual installation (what do all these phases actually do?), plus probably a few other subsequent steps for good measure. But what really got me wondering was when I noticed that my computer was sitting there doing pretty much nothing for quite a while during this so-called "Preparing for Download" phase. There was sporadic disk activity, but nothing particularly intense or sustained.

The hard drive in this machine is quite fast, and probably total overkill for the speed of the old machine that plays host to it, so I thought "okay, maybe the aging processors (I have dual Pentium IIIs) are busy crunching through something -- who knows what -- related to this update." So I opened the Task Manager and took a peak at CPU usage, expecting it to be jacked to around 100%; but no, it was hovering pretty much around 50%. And the multitasking ethos of Windows would normally guarantee that any task, regardless of its priority, should have access to up to 100% of the CPU time if nothing else is demanding any (meaning that if CPU usage is below 100%, the computer simply isn't being fully utilized).

I checked network utilization just in case there was some massive amount of data being passed between my computer and the server, somehow intended to determine the full scope of a service pack dynamically customized for my specific configuration; but the network was completely idle. Not surprising, I suppose, since this was the "Preparing for Download" phase and not the actual downloading phase, but who am I to try to define these terms?

(Doesn't this remind you of that Spaceballs scene where Rick Moranis's Dark Helmet character asks Colonel Sanders why he's always "preparing" to do things? "Don't prepare, just go!" And then DH practically falls off the vehicle as it abruptly starts moving).

So let's summarize the system usage stats:

  1. Infrequent/minimal disk activity

  2. Only about 50% CPU usage

  3. Zero network utilization

What on earth could the machine actually be doing for those 10 minutes or so? Taking a little nap to rest up for the big update?

The nagging little conspiracy theorist in me (sometimes I let him out to see the sun and use the bathroom) wonders if Microsoft deliberately injects these "little" delays into its code to make you think your hardware is slower than it really is, and "encourage" you to upgrade. It's even a step beyond the old semi-legitimized racket, with the software developers and hardware manufacturers being in bed together, synergistically generating cash flow for each other: developers constantly release new versions of applications and operating systems which, rather than streamlining and optimizing code and fixing bugs, simply add layer upon layer of new "features" and bloat; you then need a new computer (or significant upgrades to your current one) to run the new software without wanting to hurl your increasingly slower machine out the window.

Declining to "upgrade" to the new applications and operating systems is, of course, not an option, since mutual dependencies, and a new version of one software component often requiring a new version of another, keep the cycle moving and leave you needing a supercomputer just to open the average overendowed, overwrought web page (which is most sites these days). Or, say, open Notepad to type up a LiveJournal entry. (Yes, it's miraculous I've gotten this far.)

We're trained to laugh at people with the naivety and nerve to complain about slow performance from what the world considers old hardware. My computer is a prime example: dual Pentium III processors at 600 MHz sounds like something out of the Mesozoic era, even if there are twin CPUs. But let's take a closer look. Traditionally, the CPU and other local, purely electronic components are the last parts of the system to create a performance bottleneck. RAM is a culprit only if you don't have enough of it. The graphics card gets in the way if you're pushing it hard with realtime 3D rendering (gaming etc.), but for the mostly 2D functionality in Windows XP and most everyday applications, any basic chipset should provide the needed acceleration to keep things snappy. Similarly, the CPU itself might be taxed by heavy-duty processing (e.g. Photoshop or games), but not by routine applications, document management, and system maintenance.

As the old mantra reminds us, the physical hard disk and the network are the biggest limitations. And while I can't do anything about the network beyond my apartment, I equipped my computer with the fastest storage interface its 32-bit PCI bus can handle. I also maxed it out with a gigabyte of RAM long ago, and I'm running an operating system (XP) that came out when a gig of RAM was still a lot. And although it would be a joke for a hardcore gamer, I have an AGP 2x graphics card with an ATI Radeon 9250 -- pretty much overkill for day-to-day use. So despite the age of the basic components of my system, there's literally no excuse for it to sit there doing nothing during lengthy procedures, unless the CPU usage is maxed out (in which case I have no legitimate gripe about the machine at least). But I keep an eye on the CPU usage meter, and as far as I can tell, there are times when my computer -- despite supposedly "doing something" -- is, from all indications, sitting there doing nothing (or very little).

It's bad enough the software and hardware industries are so good at helping each other ensnare your money to begin with. But what if they got even greedier and had programmers start throwing random "NOP/NOOP" instructions into their code just to make you wait and want to tear your hair out? (Well, that would be predicated upon the premise of anybody actually knowing assembly language anymore, but I'm sure there are ways to do that in today's bloated abstract programming languages.) I'm not putting this forth as a serious hypothesis, of course. Or am I...? It's interesting to think about, in any case.

But for all my experience with computers, I can't for the life of me figure out what my computer was doing while "Preparing" to download Service Pack 3 today. And naturally, as I close this piece, the SP3 install is finally reaching the "Performing cleanup" stage, which itself it turning into a 10-minute operation. Yes, cleanup. Considering the sheer chaos of files in various system folders that's considered "normal" in Windows, at this point, I don't think I even want to know.