Server Power & Performance:
A Buyers Guide To Upgrading Your System
Date: January 14, 2004
Author: Jason Rabel
The reality about what a "server" is has shifted over time, from a monolithic machine hidden deep within a large corporation's datacenter, to something that is becoming common place in the average home. The term "server" generally refers to a machine dedicated for a specific set of tasks, one might hear such references as: web server, database server, file server, application server, IRC server, mail server, FTP server, or even game server. No matter what a server is used for, users always expect peak performance from it; a slow or unresponsive server can cost a company or individual time and money because of lost productivity.
Server performance and tuning is such a broad area, that literally hundreds of books have been written on the subject. This article focuses on hardware only, tuning an operating system or software application is an entirely different subject best left for another day. For the purposes of this article we will assume that the software is running and configured properly.
So Your Server Is Running Slow?:
Servers these days perform such a variety of tasks that it is impossible to give a "one size fits all" solution on how to make it run better. However, one thing that most servers have in common is the programs (or services, or daemons, whatever you prefer to call them) like to cache large amounts of data to maximize performance. For instance, a web page that gets requested often seems common sense to cache it in memory where it can be accessed quickly instead of reading the file from the hard drive each and every time it is requested. Obviously data stored in memory can be accessed many times faster than even the fastest hard drives today.
When a server runs of out allocated memory to cache data, it is forced to start flushing (or emptying) the cache to make room for the newer data that is being read from the hard drive. If the cache settings are too small, then a performance hit is taken from the hard drive having to access commonly used data over and over. So to try and increase performance, the cache settings can be generally be increased via the program's configuration settings. However, if set too large, the system could run out of physical memory and be forced to start swapping to "virtual memory" (sometimes known as a page file or swap file). Virtual memory is really space set aside on the hard drive for RAM to write data to when it becomes full. This second scenario is an even worse situation than the first.
Simple solution? Add more RAM to the system. Adding RAM could be the most cost-effective way to increase application performance of a server, giving the greatest gains where caching is highly utilized (a couple examples are a web server and database server).
Not every situation will call for a simple RAM upgrade, sometimes faster (or more) processors are needed, or faster hard drives. Proper analysis of the system beforehand is key to determining what needs to be upgraded to maximize system performance. There are lots of monitoring tools available to record system vitals which can aid in an analysis. Also, just knowing the server role can help give a quick idea on what to look at. For instance, a file server could probably benefit from a faster disk array, or a game server could probably benefit from a faster CPU.