Linux – Redhat 5.5: Multi-thread process only uses 1 CPU of the available 8

linuxredhattask-schedulerthreads

Weird situation:
Redhat Enterprise 5.5 (stock install, no updates, x64) on a HP z800 workstation.
(Dual Xeon 2,2 Ghz. 8 cores, 16 if you count Hyper-threading. RH sees 16 cores.)

We have an application that can utilize 1, 2 or 4 threads for heavy calculations.
Somehow all these threads run on the same core at 100% load (the other 15 cores are nearly idle) so there is absolutely no benefit from the extra threads.
In fact there is a slight slowdown as the threads get in each others way on the single core.

How do I get them to run on separate cores (if possible)? Application is 64 bit. Can't change anything about the software except changing the threads setting.
Is there some obscure Linux setting I can try to change? (I'm a True64 and Aix guy. I use Linux, but have no in depth knowledge of the process scheduling on Linux.)


/proc/cpuinfo list al 16. top en gnome cpu-monitor both indicate only 1 core is used. I tried something similar to that perl thing as well. We can load all CPU to nearly 100% if we want to.
Application vendor claims: Yes it is multi-threaded but it is not optimized yet. That will be the next version (in August).

So I think the application is doing sub-threading within it's own process-space in stead of proper real separate process threads. Really nothing I can do about it then….

Best Answer

Download the stress utility from RPMforge or yum and run it with:

stress --cpu 16 to generate 16 workers. As stated above, run top with the 1 switch to show all CPUs in the listing.

Once you've verified the CPU listing and activity, Ctrl-C out of stress and run your application. Start top with the same switch and then use the H switch to show all process threads.