Technology in terms you understand. Sign up for my weekly newsletter, "Confident Computing", for more solutions you can use to make your life easier. Click here.

Why is only one core on my multi-core processor being maxed out?

//
I’m experiencing a strange quirk using one of my programs. At times of intense calculations, the program itself stops responding. Yet my PC remains perfectly usable. I’ve looked into the resource manager and I notice at these times, the program is using exactly 25% of the available processor power. That figures constant until the program unfreezes. My processor has 4 cores and all are available. The program is allowed to use all the cores though none of them are registering high usage at the time the program freezes other than the one. Do you have any idea why this might be happening and possibly a way to get the program to use the rest of the resources that it has available to it?

I experience almost the exact same thing from time to time. I too, have a quad core machine and occasionally it will be running at exactly 25% CPU usage as only one of the cores is maxed out by some program that I’m running.

But I know why.

Become a Patron of Ask Leo! and go ad-free!

Using multiple cores

Unfortunately, the bottom line is that there’s really no simple switch to throw that will force a program to use more cores. Software, as it turns out, actually has to be written to use multiple cores. The software has to figure out how to best divide up the work that it’s doing because only that software, or its authors, know if what it’s doing even can be broken up between more than one core.

Multiple cores means that the CPU can quite literally do more than one thing at a time. But not all problems or calculations can actually be constructed in a way that allows them to be solved or processed across cores.

4 CoresSometimes it’s a linear, one CPU kind of a thing. It’s kind of like driving to the grocery store. Having two cars isn’t going to help you get there any faster. In fact, there’s no way that two cars could get a single person from point A to point B any faster than a single car (assuming of course that both cars are the same).

Obviously, if you have eight people that need to go and each car only holds four, then the two cars can make sense. However, you need to have two cars, (i.e. multiple processors), and the people need to be instructed to take both. Otherwise, they just use the first car and take twice as long.

In other words, the program needs to know to use multiple CPUs.

I can’t know what the limitations are of the program that you’re using. However, I’m convinced that your problem is caused by one of two things. Either the processing can actually only be done step by step using a single CPU, or the software has simply not been modified or written to take advantage of more than one CPU. This is typically true of older software.

This absolutely does not mean that multiple cores are a waste. As you’ve seen, the program can stall completely and yet your machine remains usable: that’s thanks to having more than one core. Also, we often run more than one program. Even if each one uses only a single core, they can run side by side. And there’s a lot of software that actually does take advantage of multiple cores. For example, my next machine is going to have twelve cores because the video processing software that I’ll be using knows exactly what to do with that.

10 comments on “Why is only one core on my multi-core processor being maxed out?”

  1. This is a good article, but it does not address the problem i am experiencing.
    The program, is using exactly 25% of ALL available processor power. That means, all 4 cores are at 25-28% (taking into account other processes). It seems like it is adding up the 25% from each processor, and saying “woah, there’s my 100%, i’m freezing untill something lets up”.

    Regards, Bob.

    • The software you’re using only understands how to use one single CPU core at a time, but it’s up to Windows to assign which core the work runs on. If you could slow down time you’d see that your program requests CPU time and Windows lets it run on core #1. A few milliseconds later Windows might decide to let it run on core #4 (or #2 or #3, or #1 again). So at any given instant in time, your program is using 100% of one CPU and 0% of the other 3 cores, but if you look at any CPU-usage graph the numbers displayed will be averaged over a longer time period (typically around 1 second) so it’s quite possible to see your program using an average of 25% of each CPU core.

      This is a simplified description, you can start reading more:
      http://en.wikipedia.org/wiki/Scheduling_(computing)

  2. “the people need to be instructed to take both. Otherwise, they just use the first car and take twice as long.” Actually in this example, it’ll take 3 times as long as the car will have to drive back to get the other 4 people waiting.

  3. This may be a dumb question, but couldn’t the program in question be moved to the other drive to increase performance? I have an older Acer laptop with the problem of C drive being near full but D drive, shown as data, is nearly empty. I’m experiencing slowed performance.

    • A drive is completely unrelated to a processor core. A core is a CPU (central processing unit or brain of the computer), and a drive is a magnetic or solid state device used to store data which can be processed by the CPU. It’s like the CPU is your stove and the drives are like your cupboards. The pots and pans and food processor etc. are like the programs on the drive in which the food (the data) is processed.

    • Moving to another drive certainly won’t affect CPU usage. In some rare cases disk performance can be impacted, but it’s VERY rare that a programs location will adversely affect anything other than its startup time.

  4. Hey, I stumbled upon this site in a desperate effort to get Oblivion to play on my 1Ghz quad core. I’ve been modding Skyrim and Oblivion over the past few days, and one of the ways modders have extended these games is through running a script extender that integrates with the executable at runtime. So I’m wondering, would it be possible to write a program that injects itself into a single core program and intercepts sections of it’s internal scripting language to be run on a separate core? A game like Oblivion runs scripts multiple times per frame on a single core, and from what I’ve been reading it processes them in parallel with a main loop that does a few instructions from each script in turn. This program would basically replace the script in RAM with a stub that would act like a function call, triggering the helper program to process that section of script on another core. The main loop is then free to move on to the next script, and when it comes back around to that script, it receives the finished variable, which it may need to pass on to another script.

Leave a reply:

Before commenting please:

  • Read the article.
  • Comment on the article.
  • No personal information.
  • No spam.

Comments violating those rules will be removed. Typically that's off-topic or content-free comments, or comments that look even a little bit like spam. All comments containing links will be moderated before publication.

I want comments to be valuable for everyone, including those who come later and take the time to read.