I’d like to comment a bit abstractly.
In this article and the subsequent commentary much effort is being put forth to determine the benefit gained (I’ll refrain from using buzzwords) from developers using multi-core systems. To this end I have a few small points:
1 - I’m not sure I agree with an article that has an excuse written about people “buying in” to marketing hype that also assumes all readers of the content are software developers. Perhaps it is my own faux pas to assume that software developers have a basic level of knowledge and understanding about the systems on which they develop and therefore are technical enough to read through the hype presented by processor manufacturers.
2 - A solid technical argument about the realized benefits of multiple cores. This prompted me to think about the reasons we have multi-core, multi-cpu systems in the first place. I came up with the following:
- Performance
- High-availability
- Bragging rights
For the purpose of my opinion here, I’ll limit my discussion to the first two points.
Performance gains. Software is developed with increased threading so that larger, more CPU-intensive applications can RUN FASTER. Does this translate into allowing our operating systems to more effectively handle many applications running at once? Sure. A machine that is sluggish because the user is running multiple, cpu-intensive operations is obviously a fault of … oh wait. To whom do we assign the blame? The OS? The hardware? The user? The developers of the applications? So many points of variance and all in the interest of the commodity that none of us can ever retain or regain: Time.
The key question here then is not “will multiple cores help my development time or aid me in developing more hardware-aware applications” but rather “will a multi-core system help enable me or an end-user of my product save TIME?” If the answer is ever “yes,” then then the value of time becomes the dollar amount of the hardware + the additional time spent to make the software take advantage of the multiple cores. I’m sure there is a beautiful mathematical equation that outlines this but alas, it is still before noon on a Monday morning.
On the High Availability discussion, this argument doesn’t translate quite as well to the multi-core environment as it did the multi-cpu architecture. I’m not versed enough to speak to what happens if a cpu ‘core’ fails in a multi-core system but the educated guess would say that if a single core fails, an entire cpu replacement is not far off.
If I sum up my own arguments into actionable points, it would look like this:
“Only get a multi-core system if you can somehow save someone time"
and
"High availability is not a good reason to invest in a multi-core system.”
Wow. Reading that you’d think I have no definite position. Ironic. All of that philosophical ranting only to arrive at my true opinion. I think multi-core cpu’s are imperative for developers, as they provide overall system performance gains (regardless of development platform, your SYSTEM runs better…in theory any way).
2 cores is still very much the sweet spot.
4 cores is great if you perform those 3 tasks often that were mentioned above.
Why don’t we all just write better software? Let’s optimize our routines and learn to make improvements to our software that are hardware independent first, then worry about how well our code runs on certain hardware. The Good Lord only knows how crappy most of my code is…regardless of the number of processor cores available. Bad code is still bad code. Hehe.
Great article.