Fortune has an article about multi-core CPUs and the struggles of software to make use of them.

If you follow software development at all, you knew this was coming, and like a car crash, can't seem to look away, though you know it's going to be ugly.

And it is all a question of market maturity. Funny thing about computers, in many ways the market has grown up over the last 20 years, but due to an endless stream of innovation, in many ways it hasn't.

This particular problem is probably the best example we have of this phenomenon.

Not every car needs to be a Maserati when a beat up old Ford will get you to work every day. This is common sense applied regularly in every industry and field of endeavor out there - you don't send strategic bombers to blanket the country where a bank robbery is occurring. And yet in computers, bigger and faster is always assumed to be better for every application. That's where the first, truly useful, wave of Virtualization came in - putting all of those servers that were using a tiny percentage of their resources together on one box... Because we always had to have the newest, fastest box. Many of you are about to decry "but that's all they sold..." yeah, that's a part of the problem. The other part is that while you're bringing in the faster bigger brighter box through the front door, perfectly serviceable boxes were going out your back door as "too old".

The other part of the problem is that this is a tools issue, not a developer issue. The vast majority of developers in today's world are focused on business problems, not technical problems. With millions of developers across the globe, asking them to do what we would have done even 10 years ago - relearn everything to the "cool new standard" - is not acceptable. Some will, no doubt, those who, like me, are intrigued by difficult programming problems (in my case preferably close to the metal), but most won't. It's not their job. Even if it was their job, the state of software development is such that most development occurs in virtual machines or as interpreted languages - not development that could or should have to worry about what the CPU is doing. And honestly, for most enterprise developers, their eyes glaze over when you start to say "parallel development". Start talking about atomic operations, protected code segments, and locks, and you'll lose them completely. That's no business problem.

So what do we do? Well, the tool vendors need to figure it out. Either your VM can handle multiple CPUs or it can't. Just let us know, so we know whether we need more cores or more boxes when the time comes. You could lay this at the feet of OS vendors - and I could make that case since that's one of the ways the development tools could be generated - but do you really want your OS wasting even more cycles worrying about whether your machine is multi-core or not? Yeah, me either.

Do I wish I was involved in the research? Oh heck yes, that type of development is really fun - in that frustrating until you get it sort of way. Do I think that Fortune mis-represented the problem? Only kind of. They never come out and say that the Enterprise should be worried about it, but their target market includes C-Level execs, and they never clearly state that this is not - and should not be - an enterprise problem either. Tool vendors and in some cases appliance vendors will have to struggle with this problem, but enterprise developers? Nope.

What can you do in the meantime? Well first off, don't oversize too much. Unless you're certain your app can take advantage of multi-core, it may not be doing you any good. Second off, when your application outgrows that server, save it as a hand-me-down, don't let Bob take it home to add to his network. Other apps likely don't have the same sizing requirements. And finally, watch the smart folks at Intel and AMD, that's where the problem is likely to be fixed first... Intel sells a C++ compiler that can directly take advantage of multi-core, so they're on the road to the solution, just need a little time to bubble it up to more commonly used enterprise languages.


/Reading: M10 GMC in Action

Share this post :