More is always better, right? Wrong! Before you start deciding that your life isn't complete without quad cores and multiple CPUs, it makes sense to understand how you use your computer. If you're like me, with currently Outlook, Word (6 different documents), PowerShell (three different windows, two different accounts), Remote Desktop (8 different remote machines open), Excel, Windows Explorer, Internet Explorer 7(4 windows, two 64-bit, two 32-bit, and more tabs than I can count), Windows Mail, and Live Writer all open and running at the same time, then more CPU cores is a very good thing. Along with as much RAM as I can cram into this thing. Because I'm always running a lot of different things and moving back and forth between them, Windows Vista 64-bit is able to do a good job of spreading the work across the available CPUs. And I see a real advantage on this dual-core Opteron 64 workstation as compared to my single core Turion 64 notebook or my somewhat older (but actually slightly higher clock speed) Athlon 64 single core workstation.
But what about my friend Owen? He uses his computer to do one thing at a time. He's just not a multi-tasking kind of guy, especially around computers. So when he bought a brand spanking new Quad-Core processor desktop computer, his expectations were that it would be 4 times faster than his old single core (but 3.6 GHz clock speed) computer. He was sadly disappointed, I'm afraid. He figured that more was better and four times more should be four times better. It wasn't, obviously, but let's look at some of the misunderstanding of multi-processors. (And whether we're talking multi-core or
multi-socket, it's really the same dynamic.)
If I start MS Word, it uses one processor. It doesn't know anything about multiple CPUs and doesn't know how to take advantage of them. Now if it spawns a print job, the OS should generally assign that to a different CPU, IF that makes sense in the overall scheme of the load. If I start Excel, it would generally go to a different CPU. Again, assuming other CPUs aren't already loaded. But if all I'm running is a single application (game, business app, browser, whatever), then that application will NOT split across CPUs unless it was explicitly written to do so. And at this point, it's generally true that only applications designed to run in multi-processor or compute cluster environments are written to take advantage of more than one CPU.
At the same price point, I can have a processor with a single core, two
cores or four cores. That single core processor will have a faster clock
speed than the 2 core, and the 2 core will have a faster clock speed than
the 4 core. So, for a single task, the single core processor can actually do the work faster, all other things being equal.
Now, add on to the speed different the multi-processor overheads. We have to deal with the partitioning of memory, and the overhead of managing the extra cores and trying to distribute any work loads, and the interprocess communication (IPC) that now must cross CPU boundaries (and thus use slower mechanisms than internal CPU registers), and you begin to see why multiple cores is not a panacea. Add to that the serious limitations of the Intel memory transport links and off-chip memory controller, and you can even end up with issues when you have multiple cores running multiple processes if they're using enough memory to saturate that buss. On my dual Xeon 5130 server (4 cores total)with 16 GB of fbDIMM RAM, I can't realistically use more than about 12 - 12.5 GB of RAM before that memory buss saturates and the whole machine grinds to a crawl. On my dual Xeon 5350 server (8 cores total), that's not an issue. It has 16 GB of RAM and I routinely push up to 15 GB and a bit over without an issue. (neither of the servers is CPU bound, even running nearly a dozen Virtual Machines.)
So, before you go out and buy a multi-core system, do some serious thinking about the kind of computing you do. If you're like my friend Owen, and you pretty much do one thing at a time, save yourself a bit of money and buy a single or at most dual core system, but one that has an inherently faster clock speed and/or more efficient CPU. And spend the difference where it will do you some real good - on a faster hard disk and I/O subsystem.
Well, really, part 4.5. Since I posted about my (and other users) bad experiences with the power supplies in my HP ML350 and DL380 units, I've gotten a call from the Product Manager for the ML350. She's a very nice person who is passionate about her product, as well she should be. We met at SMBNation 2007 this year, where we had a good and productive chat, unlike the usual vendor interactions at these things. At the end, we exchanged cards (doesn't one always) but unlike the usual, we actually followed up in email after.
Anyway, back to the phone call. She'd seen my post about the bad power supplies, and wanted to know what she could do to make it right. Which is a nice gesture, and I certainly appreciate it. BUT, more to the point, she told me that they had an actual manufacturing problem on a series of power supplies, and that their field and support people should know about it. And should work proactively with their customers to get power supplies in the affected range pulled and replaced. So, if you're running an HP DL380 G5 or ML350 G5, talk to your HP rep to determine if your power supply is in the range of known problems, and if it is, get that rep to swap it out BEFORE it fails.
Overall, I think that's the right thing to do. No company is exempt from the occasional manufacturing issue, though I know from personal experience how hard HP works to get it right the first time. And I'd like to see them be even more proactive, perhaps in the same way that an automaker will issue a service alert that tells dealers to swap out or repair defective parts regardless of warranty or other status at no charge to the customer. But clearly they're working to resolve this and get the bad ones out of service. That's a good thing, since this is a seriously good server, and I hate to see it let down by a weak part. And it's yet another reminder, if we needed one, about why redundancy is a good thing! (Hmmm, I wonder if I can retroactively fit a second power supply into this ML350?)
As anyone who reads this blog knows, I'm a big fan of PowerShell, the new shell and scripting language from Microsoft. Well, they've just released a Community Technology Preview (CTP) of what the next version will look like. See the PowerShell team's blog post on it. This is a very early look at what's coming down the pike. One new feature I'm pleased about is a graphical editor for PowerShell. While I personally use Gvim as my editor for PowerShell, I think having an integrated graphical editor will make it easier to transition to PowerShell for many, and that's a good thing.
One thing to note about this CTP - you can't install it alongside the shipping version. You need to uninstall your current PowerShell and then install the CTP. So don't do it on a production environment, please! This is an early look, not a production ready release. Also, the extension for PowerShell scripts hasn't changed with this release - it's still .ps1. But that's because they expect full compatibility with existing version 1 scripts.