In short, gain with minimal pain, a couple of small hitches. I went single-core to dual-core with a drop-in replacement CPU and it was almost as easy as replacing the batteries in a flashlight.
My main home server is getting old. It was bought in September of 2004, and featured an Athlon64 3500+ processor, 1GB of RAM, and a heap of hard disks. It’s still very fast as a file server, and has 3GB RAM now, so other responsibilities (backups, virus and spam filtering of email, etc.) are handled quite quickly too. However, I’m starting to do more server virtualization for work purposes (test environments with various OS and app configurations) on this server, so I figured it’d be nice to catch up to a more recent CPU that had multiple cores.
The Socket 939 processor line from AMD is almost phased out now. Upgrading to a new Socket AM2 CPU would mean a new motherboard, and based on the churn in the PC industry, that might lead to some serious cascading upgrades.
For example, the motherboard in this system died a couple of years ago, and it turned out that the PC industry switched to a new type of power connector, so I ended up having to also buy a new power supply also. At the same time, I had to rearrange hard disks because some were attached via a pair of PCI ATA-133 cards, but there were only 3 PCI slots on the new motherboard, and I also had a 3ware 8006-LP (SATA RAID) card, and a video card, fighting for room in those 3 slots. Fun!
The PC enthusiast solution to this sort of problem is apparently to buy a shiny new computer every year, full of brand new parts that match. That would be simple, but would cost about five times as much as what I’ve done. I was keen to keep the cascade of surprise upgrades to a minimum, which meant trying to stay with Socket 939, and maintaining the same clock rate.
Luckily the Opteron 175 fit the bill exactly: 2.2GHz, Socket 939, dual core, and about $150. That’s right in my price range for a non-critical but noticeable speed upgrade.
I bought it from Newegg, who by the way rock utterly. It showed up promptly and I opened it up, and… ugh. A new style of plug for the heatsink fan? Hmm, can I use the old heatsink? Maybe… but the new one looks much fancier. (The new one is on the left and the old one is on the right.)
Note the heat pipe:
It was pretty obvious what the copper tubing was for, but I didn’t know about the cool capillary circulation aspect (no pump!) nor that this had become mainstream technology for low-end coolers. Nifty.
Also notice that the new one (in the first photo alongside the old one) has pre-applied thermal paste. It’s the light gray square in the middle. I wiped most of the paste off of the old one, in anticipation of maybe needing to re-apply new paste and use it again due to the 3 vs. 4 pin problem.
Some reading about this plug switchover led me to believe that the 4th pin was optional and that the new plug was designed to fit into old-style plugs as needed. I tried it and it worked fine.
Here’s the socket with no CPU in it; you can see the white 3-pin connector labeled “CPU FAN” in the upper right corner.
And here is a close-up of the 4-pin cable plugged into the 3-pin connector, overhanging a large screw. Note that the right side of the plug has two plastic ridges designed to force you to plug it in the right way. Clever!
Still, if you fail to plug the CPU fan in and the CPU overheats and dies, you void your warranty, so I’m glad I checked before just plugging it in and hoping it’d work.
I thought about the conventional wisdom, which is first that “box coolers” (the CPU coolers that come in the box with CPUs from the manufacturer) are lame, and second that overclocking an Opteron 175 works well. Given that I have no intention of overclocking this thing, I figured that the box cooler would be fine.
After I put the server back together, I ran two instances of burnK7 (from the cpuburn package) for a little over an hour, to keep both cores super busy. burnK7’s mission in life is to make your CPU temperature as hot as possible. The temperature never exceeded 57C for either core, compared to an idle temperature of 37C. The ambient temperature was 69F, and the case is not particularly fancy (2 fans in, 1 out, plus one in the power supply), so I’d have to say that the box cooler and preinstalled thermal paste are fine.
Overclockers may disagree and favor fancier coolers, but from experience I know that in this server, the hard disks are more likely to overheat on a hot day. I added an external desk fan to this server’s rack last year to resolve that problem, which was caused mainly by poor external air circulation.
A couple of things went more easily than I had expected. First, when researching this upgrade I found that (at least for Ubuntu Gutsy, possibly for other Linux releases or distros) there regular AMD64 kernel has SMP support. So, no OS tweaking was required to support the Opteron 175’s dual cores. Second, VMware Server recognized the second CPU and used both CPUs when I ran some tests on two uniprocessor virtual servers. Interestingly, /proc/cpuinfo on a virtualized Linux server shows the right CPU name for what is a dual-core CPU, but only lists one core, which matches the VMware configuration for that virtual server.
VMware did complain in a couple of cases about the different CPU feature set, when resuming suspended VMs. You can dismiss the message and run the VM, and that works, but it warns each time in my case because they are set up as locked snapshots (always restoring from the point where it was originally suspended, before the CPU upgrade).
This is minor, and the fix to make the warnings go away is quick: resume the VM from the old snapshot (dismissing the warning message), unlock the snapshot, make a new snapshot, lock that, and suspend (or power off) the VM. Now when you resume it in the future the warning will not appear. That’s simple to do, but it wasn’t 100% seamless, so I thought I’d mention it. I am glad that there was a warning, though; that would have helped if there had been an actual problem caused by the CPU change. In my opinion VMware does exactly the right thing.
So, all in all this was a very pleasant upgrade; quick, cheap, and effective (for server workloads which parallelize easily, this server is almost twice as fast as before).