Helping people with computers... one answer at a time.
Multi-core processors add an additional layer of complexity to software design - the result is that multiple cores are often underutilized.
I am running a VERY LONG Excel'03 Spreadsheet (can be configured to loop calculating alternatives for hours using an imbedded Basic Program/Macro). I am running this on a Quad Core Intel Q6600 with 4 GB under Win XP Pro.
When I check in Task Manager, the System Idle Process will not drop LOWER than 75% and the Excel Process will max out at 25%. I've tried upping the priority of the process and have checked the "affinity" to ensure it's using all 4 processor cores. The Performance Tab does show activity / load on all 4 processor windows.
What's up? Why can't I utilize more than 25% of my system when I want to use it for a high priority and very lengthy task?
It's one of the most frustrating things to experience. Here you go and spend extra money to get that super fast dual or quad core processor, throw a huge task at it expecting it to go 2 or 4 times faster...
And it just pokes along.
The good news, if you want to call it that, is that there's nothing wrong. The bad news is that ... there's nothing wrong. This is expected, depending on the software you're running.
(I'll use the quad core from the question throughout, but the same concepts apply to dual core machines ... just half as much. )
A quad core machine has the equivalent of 4 separate CPUs in a single chip. That means that each CPU can execute tasks independently of the others, and (over simplifying, of course) without being affected by the others.
It's kind of like having 4 computers instead of just one.
There are two times that this can be beneficial:
When you do several different processor-intensive things at once
When you use software that can do one processor-intensive thing and spread it across multiple processors
Now note the phrase "processor intensive" - reading email, browsing the web, typing up a document - these are not processor intensive things these days. Doing all those things, your processor is spending most of its time doing nothing and waiting for something else. It might be waiting for the next byte of data to come down your internet connection, the next block of data to arrive off of your hard disk, or it might be waiting for you to type the next character, but the bottom line is that it's waiting, doing next to nothing.
Processor intensive tasks typically involve calculations of some sort. Excel is a good example, but there are others like image, audio and video compression and manipulation. But for most folks, just surfing the web, today's processors are rarely a limiting factor.
Now, if you're doing just one processor-intensive thing, then a multiple-core machine can actually be quite nice. One core can be dedicated to whatever that thing is, and the other left free to handle whatever you might be doing. Even though all that email and surfing and typing doesn't use much CPU, it does use some. In a single core computer you'll immediately notice when the CPU is being completely used by some other process as the system bogs down. On a multiple core machine it's not uncommon to have a processor intensive task take up one core and have it not impact your other usage at all.
The true benefit of a multiple core machine is if you can use software that knows how to use multiple processors. In fact, that's why I'm using a quad core machine myself, the video processing software I have is multi-core aware, and will make use of all 4 processors when encoding video.
And there's the issue: software must be multi-processor aware (typically "multi-threaded", in computer-ese) in order to make use of more than one CPU or core at a time.
I'm guessing that Excel is not.
Now, part of me is surprised; if any consumer or small business application could benefit from multiple processor support it would be Excel.
On the other hand, having done multi-threaded programming, I also understand how incredibly difficult it is to do properly. On top of that, there is no practical way to take a random computer program or algorithm and "automatically" split it up so that the work can be divided among multiple processors. Since Excel allows you to, essentially, write a computer program in form of the cell relationships and the macro programming language, it has no way to know how to split up your work in a way that will succeed across multiple processors.
Not that there isn't an effort to figure out how to do this kind of stuff, but it remains well out of the realm of today's commercial and consumer software. It's still the stuff of computer science researchers.
Yes, it's that difficult.
The bottom line is that when you see a single program take up 25% of the CPU on a Quad core processor, you can almost bet that it's software that assumes and only knows how to use a single processor at a time.
And no, there's no easy magic setting that can make it do otherwise.
Did you waste money on your quad core machine? That's difficult for me to say. In general, unless you know you have a need for more, a dual core is quite sufficient and gives you perhaps the best tradeoff for common usage. If you like to do a lot of things on your computer all at the same time, or if like me, you know that you'll be running software that knows how to do four things at once, then the options are a tad broader.
Comments on this entry are closed.
If you have a question, start by using the search box up at the top of the page - there's a very good chance that your question has already been answered on Ask Leo!.
If you don't find your answer, head out to http://askleo.com/ask to ask your question.