Technology in terms you understand. Sign up for the Confident Computing newsletter for weekly solutions to make your life easier. Click here and get The Ask Leo! Guide to Staying Safe on the Internet — FREE Edition as my thank you for subscribing!

Why Won’t My Program Use More than 25% of the CPU?

Multi-core processors add an additional layer of complexity to software design. Occasionally that can manifest as only a portion of the CPU being used.
Speed Limit sign saying 25% with a Windows desktop as background.
(Image: DALL-E 3)
Question:

I am running a very long Excel spreadsheet which can be configured to loop calculating alternatives for hours using an embedded Basic program/macro. I am running this on a Quad Core Intel Q6600 with 4 GB.

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 four processor cores. The Performance tab does show activity/ load on all four 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 spend extra money to get that super fast quad-(or more) core processor, throw a huge task at it expecting it to go four times faster…

…and it just pokes along.

The good news, if you want to call it that, is there’s nothing wrong. The bad news is there’s nothing to be fixed. This is expected depending on the software you’re running.

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

TL;DR:

25% CPU usage

Multi-core machines have multiple CPUs on a single processor. This adds complexity to software design, and many applications are not written to take advantage of it, thus using only a single core. That’s why processor-intensive operations max out at 25% CPU usage on a quad-core system.

Definition: core

A core is, in essence, a single CPU, or Central Processing Unit.

Thus, a quad-core machine has the equivalent of four separate CPUs on a single chip. Each CPU can execute tasks independently of the others (I’m oversimplifying, of course) without being affected by the others.

It’s kind of like having four computers instead of just one. (I’ll be using the quad-core as my example throughout this article, but the comments apply to all multi-core processor chips, though the math might change a little).

Unfortunately, this also leads to some common confusion in terminology, as the acronym CPU isn’t always used consistently.

CPU or CPU?
CPU or CPU? Click for larger image. (Image: askleo.com)

The term CPU is sometimes used to refer to each core in a processor, as I’ve used it in the image above left. More often, and more correctly, it’s used to refer to the entire processor, no matter how many cores it contains.1 Unless you’re specifically interested in some aspect of having multiple cores, the distinction isn’t really important.

There are at least two situations in which multiple-core processors can be beneficial:

  • When you do several processor-intensive things at once.
  • When you use software that can spread one processor-intensive task across multiple processors.

What it means to be processor-intensive

Note the phrase processor intensive. Reading email, browsing the web, or typing up a document are not processor-intensive tasks. As you do any of those things, the computer’s processor is spending most of its time idle, waiting to be asked to do 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 from your hard disk, or the next character you type. The bottom line is that your computer’s processor spends most of its time just waiting, doing almost nothing.

Processor-intensive tasks usually involve calculations of some sort. Excel is a good example, but there are others, like image, audio, and video compression and manipulation. Anything that does a lot of calculations or manipulates a lot of data in your computer’s RAM could be processor-intensive. When such a task is in progress, it typically uses as much of the processor’s capabilities as it can to complete its work.

Hyperthreading

One additional confusing technology is hyper-threading. Hyper-threading makes a single core look like two cores to most software.

Hyper-threading is fairly complex. As a gross oversimplification, it amounts to optimizing the CPU to treat certain operations as if there were two CPUs instead of one. Just like true multi-core processors, software has to be written as multi-threaded to take advantage of hyper-threading.

It’s no longer the sales point it once was, but hyper-threading remains present in most modern Intel x86 CPUs. My 16-core desktop, for example, shows as having 32 cores in some software, including Process Explorer.

Multiple cores

Now, if you’re doing just one processor-intensive thing, then a multiple-core machine can be quite nice. One core can be dedicated to that task, leaving others free to handle whatever you might be doing, like surfing the web or reading your email. Even though those activities don’t use much CPU, they do use some.

In a single-core computer, you immediately notice when the CPU is being used completely by a process because the system bogs down. On a multiple-core machine, it’s not uncommon to have a processor-intensive task take up one core completely and not affect your other usage at all.

The true benefit of a multiple-core machine becomes apparent when you use software that knows how to use multiple processors. In fact, that’s why I’m now on a 16-core machine; the video processing software I use is multi-core aware and makes use of all CPUs when encoding video. It works much faster than it would on a single-core machine.

And there’s the issue: software must be multi-processor aware (or multi-threaded, in computer-ese) to make use of more than one CPU or core at a time.

I’m guessing that your version of Excel is not.

Multi-core software

I’m a bit surprised; if any consumer or small-business application could benefit from multiple-processor support, it would be Excel.

On the other hand, having actually done multi-threaded programming in the past, I also understand how incredibly difficult it is to do properly. It’s seriously complicated, hard, and error-prone.

On top of that, there is no practical way to take a random computer program or algorithm and “automatically” split it up to divide the work among multiple processors. Software must be designed to use multiple processors.

Since Excel essentially allows you to write a computer program as cell relationships and its macro programming language, it has no way of knowing how to split up your work to succeed when spread across multiple processors.

There are certainly efforts to figure out how to do it, but it’s still at the research stage.

It’s that difficult.

Do this

When you see a single program consistently take up 25% of the CPU on a quad-core processor, you can almost bet that the software only knows how to use a single processor at a time.

In fact, without even knowing how many cores are present, seeing a computer “pegged” at 25% usage is a good sign that it’s a quad-core machine running single-core processor-intensive software.

And there’s no magic setting that can make it do otherwise.

Did you waste money on your one-core, four-core, or twelve-core machine? It really depends on how you use your machine, but it’s highly unlikely.

Multiple cores help prevent your machine from bogging down due to the actions of only one single-core program. It’s also handy when you’re doing multiple things at once, be it multiple browser windows or other programs on your machine. Multiple cores help keep your system responsive as you juggle all those activities.

Most machines are multi-core these days — usually four cores at least. It’s unlikely you’d be able to buy a single-core processor, but even if you could, I’d advise against it.

But I’ll be the first to admit that my 16-core machine is wasted most of the time. It’s only when I run multiple virtual machines, which I do often, or fire up that video encoding software, that all the cores really come into play. Then, for me, it’s well worth the expense.

Give one of your cores something to do: Subscribe to Confident Computing! Less frustration and more confidence, solutions, answers, and tips in your inbox every week.

Footnotes & References

1: It’s never used to refer to the box that sits on your desk or floor to which your monitor, keyboard, and mouse are connected. That’s the computer, which contains the CPU and a lot more.

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. Comments that don't add value will be removed, including off-topic or content-free comments, or comments that look even a little bit like spam. All comments containing links and certain keywords will be moderated before publication.

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