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.
Article C3621 - January 14, 2009
Kevin, I just realized the same thing as you did: while Excel 2007 can use multiple cores for spreadsheet calculations, it can not when it comes to VBA programs. 2 thoughts on this: 1) maybe it's faster in some VBA applications to convert them to pure spreadsheet calculations 2) I do a lot of Monte Carlo simulation in my VBA programs and here the rule for Multi-processor use would be quite simple: calculate half of the scenarios with 1 processor and the other half with the other - of course there is no way to tell this to Excel - but I am trying now to run 2 instances of Excel in parallel and then combine the results "manually".
Posted by: Stephan at March 1, 2009 2:41 AMMy issue is a little more intreaging as my work PC locks at 25% CPU useage when running certain large Excel files, but when I interogate Task Manager I find that it seems to be usnig 50% of core 3 and 50% of core 4. I assume this si a little harder to explain, as it is obviously splitting the process across two cores of my quad core, but using all of neither of them. any ideas???
Posted by: Martyn at June 30, 2009 7:01 AMHi Leo. I often get the "not responding" problem (using XP) that you have written about elsewhere. Especially when I'm on a slow internet connection. Everything grinds to a halt.
The IT guy who supports our business says "your laptop is rubbish - too old - get one with a dual core processor". But I want to be sure this will fix the problem. How can I tell? Does it depend on the "multi-threaded programming" you mention above, or will two processors allow my PC to ignore the not-responding programme and get on with my other work meanwhile?
Any hints welcome, and thanks for the useful info on your site.
10-Apr-2010
Posted by: Jonathan at April 9, 2010 9:20 AM
Everyone talked about the problem but not the solution regarding excel talking 50% of core2 and 25% of Quad...i check n it is muti threaded, there is a option to turn it off or on in excel, yet it doesnt take more then 50% i have a lot of formula in my workbooks mostly referenced to other workbook, it would be very helpful if excel took 100% of my processor...anyone have any ideas??
Posted by: Tahmaseeb at October 10, 2010 9:27 PMI have a multithreaded software that does a lot of math calculation. It starts with 70-80% cpu usage. After some time (5 - 10 min) the cpu usage drops to 20% and you can tell that the software does much less work per min. Does any one know what is going on and how to fix it such that it will run with 70% usage all the time?
My computer is a dual core windows 7 laptop.
Thanks.
Posted by: Sun at May 5, 2011 6:19 AM