I used to have a problem when I booted into Windows Vista. Even waiting a few moments before I logged-in, my network connection wouldn’t be ready. No IP address was available, even if I set one manually the NIC just would not serve up anything network-related. Rebooting the NIC by disabling-enabling it from the Manage Network Connections would never fail.
It seems to me that the order my hardware is booting it probably at issue here. While the NIC is trying to go online, some resource required to initialize it is in use by something else. Sifting through Event Viewer did not turn up any clues either. But by the time I’m logged in that resource is free again, by the process that initializes the NIC has given up trying by that time.
So this got me to wondering why there couldn’t be a background process that’s surveying all your services and hardware to determine what’s running and what’s not running? You know:
- RAID-array: check
- Video-display: check
- NIC: check
- Database-server: check
- Web-server: check
- …ad nauseum…
…Then if one of those services was to fail, the background process that’s noting these problems would check to see if it had a history of failing, note its dependencies and determine a better order for booting. For example, a web-server booting before the NIC would be a problem in most cases, so the algorithm that determines the boot order would push that service down the ordered-list of services to boot up.
Furthermore, if this boot-up analysis saw things were all booting up fine, but detected some services could boot in parallel because they had mutually-exclusive dependencies then the ordered-boot up list could be optimized by reordering and re-synchronizing the boot order again.
This would be advantageous to a Windows or Linux based PC because the hardware and services of all the machines out there covers a very wide spectrum of configurations and duties. Today, boot order optimization is a manual task that is probably overlooked by all but the uber-geek administrator types. This automated approach is well within our grasp already and we only need to write an application that will do the dirty work for us.
Tags: optimization, windows, linux