When purchasing server hardware, do you tend to purchase more power than you need, or not enough? Specifying the correct server for your current need is a fine art, and it's easy to get wrong. Here are some helpful hints and considerations to remember that will ensure you make the right server purchasing decision.
We're going to focus on standalone (non-blade) servers for the moment, but many aspects are also applicable to blade servers. Blade servers are wonderful for centralized management of the hardware, but the specs of the individual server blades can vary tremendously.
Want to avoid trudging down to the data center late at night, or even worse, across the world if something breaks? Then don't skimp on the management controller, lights out manager, or whatever the vendor is calling it. Many vendors ship a simple version by default: it may allow serial console access only, for example. Make sure to get the full-featured controller, because even if the hardware is only a few doors down, getting up from your desk should never be necessary.
If you aren't thinking of switching vendors any time soon, you might think that the management interface will always work the same as it has on all your other servers. Unfortunately, that's not the case. Sun's x86 hardware, for example, has many different hardware management controllers to choose from. The more expensive and feature-rich servers have the better controllers, but don't make the mistake of thinking the interface never changes. The unfortunate part is that you never know how well it works until you get a server on-site.
Hardware management comes in two forms: IPMI (most support), and the user interface. The user interface is more often than not, a Web-based Java application that provides remote console access. Some are extremely buggy, and others work quite well from all Web browsers. We can't make a recommendation, though, because these things change often.
Shucks, this one is a no-brainer: as much as you can afford. Within reason, that is. If you aren't going to run virtual machines, and this server's only job is to serve up some simple Web pages, then 16GB of RAM is likely overkill. Likewise, make sure you know what your application can support. Many Java applications are limited to a heap size of two or four gigabytes.
It's also overkill to purchase more than four gigabytes of RAM if you need to run a 32-bit operating system. Yes, Windows Server does some tricks and it can use more than that, but there's a huge performance hit.
If virtualization is in your future, load up as much as possible. You also want to pay attention to how many DIMM slots the server has. The eight gigabyte DIMMs are horribly expensive now, so you'll probably want to stick with four gigabyte sticks. Just remember, if you fill all the slots in the server, the only memory upgrade path is to buy higher capacity DIMMs.
Do you want to run many threads at an even pace or just a few threads as fast as possible? Sun's T2 processors aren't fast by any measure, but they can run many threads at the same speeds consistently. These are ideal for database servers, but not for Web servers.
Will this server be executing a wide variety of processes over and over again, as opposed to just running the same big application server constantly? If so, make sure you pay attention to the amount of cache each core of the CPU has.
For virtualization, you want the fastest multi-core processors available, with the largest amount of L2 cache. Cache is very important as it minimizes the number of times the CPU needs to fetch data from slower RAM. It makes a very noticeable difference on heavily used servers.
Disks, Controllers, and RAID
If you need local storage, do pay attention to the type of disks you're ordering. A SATA disk is likely to disappoint if you have an IO-heavy workload. SAS , and fibre channel disks should perform equally well, since they are both SCSI disks underneath.
Even if you don't need much local storage, you should always buy a server with a RAID controller that can mirror the operating system disks, unless you're SAN booting of course. You don't want the OS to crash just because of a failed disk. Likewise, if you're keeping tons of local storage for some reason, make sure to get a RAID card that does RAID-5, so that you can at least lose one disk at a time without losing data. If performance is a concern you should really be using iSCSI or SAN storage, but you may also think about a RAID 0+1 configuration to avoid the slower RAID-5 parity calculations.
If you're attaching to a SAN, make sure to include the correct HBA as well.
When servers started showing up with two or four gigabit NICs, I must admit I was confused. Why would someone need that many? Aside from large servers that do a lot of network IO, you might also want to separate out your iSCSI traffic from normal Ethernet. It's also important these days to make sure that the network cards support a TCP Offload Engine (TOE ). This will task the network card with computing TCP checksums, freeing your CPUs for more important things. In summary, most of these things may seem common sense, but you need to remember to ask all the right questions every time you spec a server. Here's a good checklist:
- Adequate hardware management controller
- Enough (but not too much) RAM, that's fast enough, but not faster than the CPU's front-side bus
- Enough memory slots for expansion, if that seems likely
- Correct CPU for this server's needs
- RAID-1 for the OS, and (optionally) other RAID levels for other local storage
- FC HBAs?
- Multiple gigabit NICs with TOE capabilities
Charlie Schluting is the author of Network Ninja, a must-read for every network engineer.