Navel Gazing…

This is the term I use for a system that’s spending a lot of time doing things other than the business purpose for which it is ostensibly designed.    I was reminded of it last night when I was booting up my personal laptop — a boot sequence that had gotten intolerably slow after I “upgraded” to Norton Internet Security 2007.

Originally, I was looking forward to the upgrade.  The laptop in question is about 3 years old right now and was still running NIS 2004.  My virus subscription was running out and Symantec offered the upgrade to 2007 for the same price as the virus subscription renewal.  I thought that was a good idea — encourage people to move off old versions by simply giving them the latest version for the same price they were going to pay anyway for the subscription renewal.

However, NIS 2007 is so comprehensive that my machine was spending all of its time “protecting” me and making so many of my tasks ridiculously slow that I started to wonder.  I wondered if the way to protect me was to not allow me to do anything :-)  I ended up removing the s/w and my machine is now responding to what I need it to do.

Anyway, that episode reminded me of systems where the bulk of the processing has little or nothing to do with the business purpose for the system.  I’m thinking of systems that spend lots of cycles producing management summary reports, web status pages, and/or constantly analyzing themselves instead of processing orders, adding journal entries, registering new users, etc.  It’s no secret that I love to watch charts of system utilization over time — and I wonder why systems that are “idle” have a constant run rate of 30-40%.  I used to say that if you don’t use the CPU you’ve bought, it’s just going to waste, but nowadays with power concerns and virtualization options, why waste any CPU?

In the end, I like metrics — determine the number of CPU seconds and I/O bytes per business transaction (per $$$ if you can) and get it as small as possible.  Find ways to be able to run on smaller hardware (smaller footprint, smaller rack space, less power required, etc).

Lately I’ve been looking more closely at compression too — (11g looks cool here) — how can I not only reduce storage costs, but bandwidth required too?  Oh, and backup requirements — can I make stuff small, read-only and with relaxed access / performance requirements?

You know what would be cool?  Automatic LRU partitioning of tables into Hot and Not Hot (:-)) areas where the Not Hot stuff could be compressed, made read-only after defined time, etc.  I bet that could be done “automatically”.

Leave a Reply

Posting code can be a pain. To make sure your code doesn't get eaten, you may want to pre-format it first by using HTML Encoder