General Hardware Tips

Sometimes simple things make a world of difference. Computer hardware is one of those simple things! Below are some general tips for purchasing the best hardware for your money. Tips that will produce a reliable, high performance system without blowing your budget.

Get The Hardware Configuration Right! The phrase penny wise and pound foolish can often be used to describe the provisioning process for UNIX systems. I have seen many cases of (otherwise high performance) systems performing poorly due to uninformed decisions made when the machine was ordered. Here are a few tips to ensure you get the best performing machine for your dollar.

  1. Buy the fastest CPU you can afford. UNIX is a very CPU intensive operating system. Memory management, device drivers, the operating system and applications all compete for CPU resources. Always have more CPU than you need.

  2. Always buy at least 2 CPUs. UNIX is a multi-tasking system. Large back ground jobs such as reports are not supposed to impact interactive users but they do. Since a back ground job can only bind to one CPU, the remaining CPU(s) will be free to service your interactive users giving them acceptable levels of service.

    Intel used to enable 2-way symmetric multi-processing (SMP) in their retail processors (Pentium, Pentium Pro, Pentium II and Pentium III). Today, the only Intel processors that support multi-processing are Pentium IV Xeon and some older Pentium IIIs (the 512k cache version).

    Xeon processors come in two versions. The standard part will do 2-way SMP and are priced about 30% higher than a P4 at the same clock speed. For 4-way or higher (up to 8) SMP, you must buy the Xeon MP part. Xeon MPs are very expensive ($2,000 or more each). That puts them out of my price range.

    I'm looking forward to AMD's release of Opteron. This chip promises full 32 bit compatibility, leading edge performance, 64 bit upgradability and commodity level pricing.

  3. Next to CPU, the next most likely cause of contention is memory. Or, always buy more memory than you need. UNIX machines provisioned for one job often end up handling many other tasks. Running low on memory is a sure fire way to ruin performance.

    I know that UNIX memory is often expensive. I also know that most commercial UNIXs will not make use of excess memory so don't waste your money. However, when things get slow, always check memory utilization. Try

    uptime, top, vmstat & sar
    to query memory utilization.

  4. Don't buy slow disks. A machine is only as fast as its slowest disk! Saving a few hundred dollars by using slow, inexpensive 7,200 rpm SCSI disks is a false economy. 15,000 rpm disks can cary 150% to 300+% the load of a slow disk. When the marginal cost of good disks is compared to the overall cost of the system, the savings are usually insignificant.

  5. Don't use RAID 5! RAID 5 is a performance killer. In database environments that involve substantial database updates (such as nightly or monthly postings), the performance penalty of RAID 5 may take a job that might run in hours and stretch it out to days! Vendors often try to minimize the impact of RAID 5 overhead by selling overpriced hardware disk array controllers. The cost of these controllers usually far exceed the cost of the disks you avoid purchasing.

    Use RAID 5 only when you know you are in a 95+% read environment. Even then, watch for changes in disk use that impact performance.

  6. RAID 10 IS THE BEST! RAID 10 is a combination of disk mirroring (RAID 1) and striping (RAID 0). It yields an exceptionally fast array that is also highly redundant. Be prepared to justify why you don't select RAID 10.

  7. Don't put more than 4 disks on a SCSI controller. There is no sense purchasing fast SCSI disks if they all have to contend for access to a single SCSI bus. SCSI busses can only handle about 4 active disks before they become the bottleneck. Avoid performance issues and eliminate a single point of failure by provisioning at least two SCSI controllers. Spread your arrays across both controllers for maximum uptime.

  8. Your machine is only as fast as your network. I've seen machine where performance was completely throttled by network bandwidth. Provision Gigabit copper/fibre NICs for your servers and Gigabit capable switches for your network backbone. That way, your server will have the throughput it requires to service many clients.

  9. Finally, monitor your system. UNIX hosts have a way of acquiring new applications or of being asked to do more work by existing applications. A machine that is running well today may not be able to handle tomorrows load. Get a good sense of what your machine can handle and where potential bottlenecks lie. That way, you'll be prepared when performance issues arise.