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. Smile)

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.

"Processor intensive tasks typically involve calculations of some sort."

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 « »

Share this article with your friends:

Share this article on Facebook Tweet this article Email a link to this article
Leo Leo A. Notenboom has been playing with computers since he was required to take a programming class in 1976. An 18 year career as a programmer at Microsoft soon followed. After "retiring" in 2001, Leo started Ask Leo! in 2003 as a place for answers to common computer and technical questions. More about Leo.

Not what you needed?

16 Comments
Chris
January 15, 2009 8:38 AM

I never tried this myself, but would setting the affinity of a "multi-threaded" application to use only 3 out of the 4 cores actually listen to you and leave a single core free for other things?

It would be nice too, to see some kind of logo or something on the software that tells you how many cores it's programmed to work for... Like movie ratings you see on DVDs.... wishful thinking.. lol

Jeff Lentz
January 20, 2009 9:18 AM

Right on the money, as always, Leo. When I built my own quad-core at home and was doing processor cooling fan tests, I had to run four separate instances of Prime95 (a single-thread prime number searching program commonly used for "loading" a processor for testing) to get my CPU utilization up to 100%. Each instance grabbed exactly 25% of my quad-core chip, maxing out just the processor it was running on.

Julian Hicks
January 20, 2009 11:11 AM

One of the confusing things about Windows use of multiple cores is that it 'spreads the work out' [i.e. it uses all the cores], even when it doesn't need to. WIth only one task running, it only needs to use one of the cores.

Chris; of course your suggestion about affinity will work [and leave one processor free] but that's not what a multi-core application wants! It would want to run on all four CPUs but you would have limited it to three. [You don't need to leave one 'free', as the System will run things 'in the right order' anyway; i.e. the dispatcher will prioritise as appropriate].

Julian Hicks
January 20, 2009 11:17 AM

P.S. I find the best value CPU speeed per Pound spent [sorry, Dollar spent :-)] comes from the cheaper dual core processors [not Hyperthreaded ones though!]. 2 x 3GHz is more useful and cheaper than 4 x 2.5, for example. The Excel sample quoted would run at 3GHZ with one CPU unused rather than at 2.5GHz with three CPUs unused.

Rob White
January 20, 2009 12:23 PM

Excel 2007 has a setting where you can specify how many of the available processors it can use. Excel 2003 doesn't.

Paul Higgins
January 24, 2009 7:44 AM

Rob, perhaps you could tell us where the setting is? Thanks in advance.

Dimitris
January 25, 2009 12:41 AM

Excel 2007 to use all available cores:
Click Office Button, goto excel options, advanced and look for the section formulas. Enable multi threaded calculation

Paul Higgins
January 27, 2009 4:04 AM

Thanks Dimitri.

Kevin
February 12, 2009 7:06 PM

I have the same trouble running Excel VBA code. The "Enable multi-threaded" option does not seem to solve the problem, still 25% the cpu being used. I made a sample VBA program and timed how long it took to run. Here are some comparative results on some of my machines and my colleagues machines(in seconds):
Single core Results
MyDeskTop (2.79GHz, 1GB, XP) 71
MyWorkLaptop (2.2 GHz, 1GB, W2000) 84
JasonComp (P4 3.0 GHz, 1GB, XP) 61

Dual Core Results:
John (1.83 GHz duo, 2GB ram, XP) 59
Akio (2.16 Duo celeron,3.4GB, XP) 49
Kevin (2.4 Core 2 Duo, 3 GB ram, XP) 42

Quad Core results:
Tom (3.0 GHz Quad Xeon, XP, 64 bit, 3 GB ram) 36 Kevin (2.83 Quad Core, 3 GB ram, XP 32) 37 Note that the quad core only seems to run at dual core speed?? Why?

Also for all results for the single core, the task manager shows CPU at 100%, for dual core, it shows the CPU at 50%, and for the quad, CPU @ 25%. Bizarre results. The dual core calculates almost twice as fast as the single of the same GHz, but the quad core shows no improvement in calculation speed over the dual core. Why????? I am desperate because I write alot of VBA code and feel I wasted my money with the quad core. Maybe should have gone with a dual and overclocked. How can I speed up Excel VBA so that it runs at a suitable speed on my quad core?
Also, has anyone tried running Excel VBA on vista? any difference in speed? I am grateful for any replies. Thanks, Kevin

I would be shocked if Excel could somehow spread the work of an arbitrary VBA macro acros multiple cores. As I said earlier, how to spread work across multiple processors is one of those incredibly complex problems that simply isn't solvable by today's software.
- Leo
13-Feb-2009

Stephan
March 1, 2009 2:41 AM

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".

Martyn
June 30, 2009 7:01 AM

My 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???

Jonathan
April 9, 2010 9:20 AM

Hi 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.

A multi-core processor won't fix anything - if a program has a problem it'll probably still have a problem. But yes, a multi-core processor might allow you greater control over your computer while the problem is happening. I have to say "might" because of course it all depends on the specifics.
Leo
10-Apr-2010

Tahmaseeb
October 10, 2010 9:27 PM

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??

Sun
May 5, 2011 6:19 AM

I 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.

Imran Amjad
May 14, 2012 9:15 PM

Hi,

Just to add here, in .net 4 framework, a Task Parallel library TPL is introduced using which you can run as many excel.exe in parallel as many cores your system has. I just did that in recent project. Let me know if anyone needs help on it.

Tim Auger
May 24, 2012 4:30 PM

I can't speak for earlier versions, but Excel 2007 certainly uses as many cores as are available and the benefit of the additional cores in my quad core pc is very noticeable compared to colleagues' dual core ones.

On the other hand Access running 'action queries' - typically a series of those in a macro - seems only to use 1 core. Always seems odd to me.

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.