Win XP Throttling my Processors?

Zorba

Lifer
Oct 22, 1999
15,613
11,255
136
I have been running some very intensive simulations (the last one took 35 hours to run) on my computer for a research project.

My computer (a little old, but that isn't the main problem) has the following specs:
Dual 1.8GHz Xeon (512KB of L2)
1.5GB Ram
SCSI Hard drive
Motherboard has the 860 chipset.
Win XP Pro with all the latest updates

When I run my simulations, the program will only use 25% of the CPU according to task manager. At first I thought task manager was full of it, but then I realized I could run three simulations at once with no performance hit, each one only using 25% of the CPU. It also doesn't change at all, it stays at 25% for the entire simulation making me think the program is being throttled by something.

I have compiled the program with many different options, many of which speed it up but it still won't use more than 25% of the CPU. I have also changed the performance setting in XP but it doesn't help.

Any ideas?
 

biostud

Lifer
Feb 27, 2003
19,742
6,824
136
If the xeons have hyperthreading and your application isn't SMP aware it will most likely only use one of the logical cores, and that will be 25% of your logical processing power (~50% of the actual due to HT). If you run several instances of the program you might need to set the affinity of the programs to the other cores.
 

Zorba

Lifer
Oct 22, 1999
15,613
11,255
136
How is using one processor only equal to 25% of the processing power?

Also to make a program SMP aware is it just a compiling option or does it actually have to be programmed differently? I was trying to figure that out in my compiler's help and it made it sound like it was just a compiler option.
 
Mar 19, 2003
18,289
2
71
Originally posted by: Zorba
How is using one processor only equal to 25% of the processing power?

That's just how Windows shows processor utilization (and it makes sense if you think about it). I have an Opteron 170 (dual core), and if I run a process that maxes out one core but doesn't use the other at all, then it shows 50% utilization in Task Manager. The same idea scales as you add more cores (logical or physical). Edit: This is why you can run multiple simulations at once with no performance hit. They're each using only one (logical) core, or 25%. It's only being "throttled" by the fact that each instance only uses one core.

As for making a program SMP aware, I don't really have any experience in the area but my understanding is that in order to get any real gains out of SMP, you have to create the threads to share the work yourself - I don't know that any compilers can do such a thing automatically, except maybe for simple stuff that doesn't have to synchronize a lot of data (like a separate thread for the UI, etc.).
 

Nothinman

Elite Member
Sep 14, 2001
30,672
0
0
Also to make a program SMP aware is it just a compiling option or does it actually have to be programmed differently? I was trying to figure that out in my compiler's help and it made it sound like it was just a compiler option.

You have to design the app to be multithreaded, it requires a completely different design from a single threaded app. Don't you think more people would do it, if it only required setting an option in the build tools?
 

Zorba

Lifer
Oct 22, 1999
15,613
11,255
136
Originally posted by: Nothinman
Also to make a program SMP aware is it just a compiling option or does it actually have to be programmed differently? I was trying to figure that out in my compiler's help and it made it sound like it was just a compiler option.

You have to design the app to be multithreaded, it requires a completely different design from a single threaded app. Don't you think more people would do it, if it only required setting an option in the build tools?

Well that is what I figured, but the documentation for my compiler sucked and that is what it made it sound like.
 

Zorba

Lifer
Oct 22, 1999
15,613
11,255
136
Originally posted by: SynthDude2001
Originally posted by: Zorba
How is using one processor only equal to 25% of the processing power?

That's just how Windows shows processor utilization (and it makes sense if you think about it). I have an Opteron 170 (dual core), and if I run a process that maxes out one core but doesn't use the other at all, then it shows 50% utilization in Task Manager. The same idea scales as you add more cores (logical or physical). Edit: This is why you can run multiple simulations at once with no performance hit. They're each using only one (logical) core, or 25%. It's only being "throttled" by the fact that each instance only uses one core.

Ah, I get it, I never really read that much about Xeon before and didn't realize they had two logical cores. That is why I didn't get why windows was reporting 25% instead of 50%. Thanks for the information.