Startup, Locality

Found this bizarre feature on the Vista Compatibility Blog:  SetThreadPriority from Run key.

So they’ve hacked something in Windows to keep programs that launch at startup from raising their priority for 60 seconds at bootup.

This seems like a bizarre address-the-symptom kind of fix.  The problem is that every app wants to launch something at startup, and fight with each other for system resources.  There must be a better solution.

Personally I find most of the stuff that launches at startup is useless.  I haven’t checked in a few months, so lets see what I’ve got there now.  The easy way to find out is to click Start, Run, type MSCONFIG and hit Enter.

17 items.  Not bad.  But which ones do I really need?

iTunesHelper? No thanks.

Version Cue?  I don’t use it; I guess I forgot to turn it off when I installed CS2.

Vista Sidebar?  Ok I do use that, although according to Process Manager, there two instances of it running with a total of 84mb of committed RAM.  That’s pretty heavy for what I use it for; I’ll have to look into that.

Windows Live Messenger?  Ok.

Some Windows Media Player component (WMPNSCFG)?  No thanks.

Java, Quicktime, and Nero have processes running whose only purpose seems to be to check for updates. Guys, there’s a thing called the Scheduler you can use for that.

This list is actually pretty small compared to what’s common.  Usually your scanner, DVD drive, printer, mouse, keyboard, sound card and other devices all come with little tools that try to add features to Windows to differentiate their devices from the competition (IntelliPoint, IntelliType for example), and these add more grind at startup.

Back in the 95 and NT days, startup processes used to launch sequentially; now the OS tries to run them simultaneously.  The problem is this means there’s so much stuff happening simultaneously at launch that you end up with the disk thrashing.

Two separate processes might each start individually in 100ms; but if you start then simultaneously, and they each read from different parts of the disk, the thrashing this parallelism causes might increase their combined launch time to over a second.

Right now I wish there was a way to tell Windows to not launch a new process at startup until the paging counter drops below a certain threshold, just to keep from piling more work onto a busy system.  But there is no such setting.

Here’s an interesting consideration: the trend towards Flash based media, with new disks big enough to replace a typical laptop drive coming available now.  The cost of manufactiring Flash media should eventually drop below the cost of developing hard disks, to the point where we might all be using memory based mass storage in a few years.

This changes the math considerably.  Seek time mostly goes away, and the way Windows does it today becomes the most efficient method.