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