My next server has turned into a bigger project than I originally intended. It will do file serving for the LAN, automated backups, possibly a database, and whatever other miscellaneous functions I don't want tied to my desktop. It will also serve Minecraft - there's a few kids in the family who play it constantly and I'd like to to play it with them once in a while. I might also set up voice chat on it, I haven't really looked into this.
I want to emphasize power management, since like most home servers it will spend most of it's time idle.
The main challenge is that I want it to roar to life when needed, but reduce everything to a low power state when it's idle. I don't mind a machine that guzzles electricity when it's doing work, I just hate when they suck power to do nothing at all. So my goal for this build is a machine that dynamically scales itself according to demand.
The hard drives will be activated on-demand, not spinning 24/7. CPU is undervolted and throttled. I want to get all the fans (except the PSU) under software control, including the chassis and hard drive cage fans.
Due to what I said above, it would have probably made sense to get a modern MicroATX board, but I didn't want to. 😀 I thought K8 Opterons were awesome when they came out and I wanted to play with one. The ability to dynamically throttle/undervolt the K8 helped convince me to try it.
The board is a Tyan S2882-D. About a year ago somebody on eBay was selling a bunch of these NOS at a good price. It's a very late manufacture (made in 2008 - this board came out more around ~2005). It had a later BIOS date than the newest public release BIOS, but that was misleading. It turns out the public release BIOS actually has better CPU support. I wasted a lot of time with confusing PowerNow/ACPI issues before realizing that.
I think these must have been ordered by a customer who wanted backups for their existing servers and never deployed them. That's maybe why they would have been ordered with an outdated BIOS. For some reason Tyan gave the outdated BIOS a newer date.
CPU is an Opteron OST280 2.4GHz dual core. Just using 1 because it's ample and duals would raise the idle power. I used WinXP with rmclock to do some undervolting experiments, and once I figured out safe settings, configured them in linux. It can idle with the fan (usually) stopped.
RAM is 2x 2GB DDR400 Reg ECC modules. It's plenty. It can definitely go up to 16GB using 2GB modules. 4GB modules might work, but there isn't much said about these by Tyan so it's uncertain. Either way it's still plenty of room to expand.
It's using a 66MHz Sil3124 SATA card because the onboard Sil3114 is connected to the slower 33MHz PCI bus. I'll be using this as a file server so I want the disk -> GbE performance to be as fast as possible. The onboard GbE and the SATA card are on different PCI-X buses.
I expect to start with 3x 2TB drives and a system drive. Long term, especially if I add more drives, I'm interested in SnapRAID.
It's running CentOS 6. As always, linux has been a slow battle but it has progressed. PowerNow throttling is fixed. Undervolting is done. Hard disks now spin down when idle. Minecraft is isolated using OpenVZ (I gave up on doing it with SELinux). Recently I've been working on temperature monitoring and software throttling of the fans (lm_sensors and so on).
I'd like the hard drive fans to be controlled by drive temperatures read through SMART. I haven't found a way to do this yet.
The onboard graphics is an ATI Rage XL. I thought this would be a good thing, because the Rage is one of the most common onboard graphics chips in the world. I thought it would be well supported, but apparently not. The Xorg devs decided it was obsolete and were seemingly proud of deciding to break it (along with many older video cards). I'm confused how they reasoned that a server OS doesn't need to support the nearly universal graphics chip of every server made in the mid-2000s. I don't think running linux on mid-2000s hardware is a rare pastime. Nobody at the distro or Xorg level bothered to add any detection, warnings, or automated workarounds for this. You just get a black screen for no apparent reason. It took some digging to understand the cause, and some screwing around to get past this problem, but it was possible by forcing an old version of Xorg and blocking it from updates.
This build has an interesting cooling issue. Due to undervolting there's a big difference in the CPU TDP between idle and high load.
The CPU fan is usually off when the CPU is idle. However, if hit with a load, it's shocking how quickly the core temperature can increase while the fan is spinning up. This needs work. If the fan ever failed, the CPU would be vapor in a few more seconds. I'm hoping there's a way to limit P-state transitions based on temperature.
This motherboard, like most multi-bus server boards, doesn't support S3 "Suspend to RAM". It's a bummer, but expected. I might set it to hibernate with wake-on-LAN, but that depends on what applications it runs.
Right now the idle power is about 67W (measuring with a Kill-A-Watt meter). 2 more drives need to be added (normally spun down), and I don't know whether I'll get complete control of the auxiliary case fans. Depending how things work out I expect the idle usage will land in the 65-70W range. 60W might be achievable somehow, but I think that's the lowest I could hope for with this motherboard. The old dual Coppermine setup has it beat on idle power by a good 20W.