If I could choose one concept to teach people about in selecting a computer to purchase or improving existing computer performance, it would be the concept of bottlenecks. Admittedly, that may seem like an odd concept on which to focus. But a key insight into improving or maximizing a computer’s potential is remove as many bottlenecks to system performance as possible. Adding more of component X won’t do much good if the bottleneck is component Y or Z. Sorting out the details isn’t easy, but armed with the concept of bottlenecks you can progress quite far.
Think of a computer as though it were an assembly line:
- The process begins with inputs/requests
- Then actions are taken by the computer to address those inputs/requests
- And finally the result is presented in the end.
Much of modern computer performance for everyday tasks is primarily a function of speed, not capacity. The capacity questions (e.g. how much storage do you need for your photo collection?) are also much easier to answer. The questions of speed, on the other hand, (e.g. how to I get my computer to boot up quickly?) require an overall understanding of the mix of components in the computer and how they interact.
Let’s take a very simplified example to illustrate the point – the process of booting up a computer. I want to draw attention to the fact that some parts of the computer complete their respective tasks much quicker than others. For the three example components listed below, each is doing its part of the start-up process. The CPU is reading data off of the hard drive and moving it to memory. During this process, the hard drive takes much longer than the other two components, meaning that the overall boot time is bottlenecked by the hard drive.
Adding more or faster memory won’t change the speed of the boot process. And neither will installing a faster CPU. But what if we eliminate (or at least reduce) the bottleneck in this scenario: the hard drive? If we replace the hard drive with a solid state drive we address the issue of speed directly. (An SSD can read/write data sometimes an order of magnitude faster than a hard drive). With this new component installed, the total time to complete the boot process is drastically reduced:
The bottleneck has been removed in this scenario, but a new one will be introduced. The SSD might be fast enough to keep up with everything else, but perhaps the CPU is now taking more time than any other single component. And this is only one scenario of many with simplifications, so the actual scope of the considerations to be made in purchasing or upgrading a computer is very large. The key is to focus on the most restrictive bottlenecks first, and then subsequent improvements become a matter of preference (i.e. how much more money are you willing to spend?)
In the end, the concept of bottlenecks is a very useful tool in understanding how to optimize and design computer systems to function optimally. For even the layperson without any technical background, simply asking the question “how do I eliminate the bottlenecks?” is an important step in the right direction. So the next time someone tries to sell you a new computer or upgrades to an existing computer, don’t be fooled by the flurry of ‘speeds and feeds’ that they will throw at you. Focus on the tasks you want to accomplish with your computer and address the bottlenecks first.
[The picture above is of a book I read during my time in the MBA program at Case Western Reserve University, and is probably required reading for any Operations class. It introduced (or at least formalized) the concept of bottlenecks for me.]