ROOT Limiting CPU Usage When Running


ROOT Version: 6.08.02
Platform: Ubuntu 16.04
Compiler: Not Provided


Hello. I’ve noticed that when running ROOT on my 4 core (8 logical processors) PC laptop with Intel i5 8300H, it never goes above 25% CPU usage. At first I thought that it was only using 1 core, but later noticed that my computer spreads the work load over all cores. I tried PROOF-lite with the assumption that it was using only 1 core for the process, and it didn’t work, which I’m sure is a result of the workload being spread out through all the cores instead of 1.

I also tried to limit ROOT’s CPU usage to only 1 core then use PROOF, but that didn’t work either.

I would understand if ROOT simply doesn’t use all the CPU as I would want, but is there anything I can do? I have a workload that will take many hours to complete, and even up to a full day or two. I would like to be able to speed up the completion of the workload. Any ideas to increase CPU usage by ROOT?

Note: I used the command of “TProof::Open(”")" to activate PROOF, I also tried setting workers equal to different numbers less than 8 and no improvement.

Thanks.

@ganis, perhaps you can help here?

Thank you,
Oksana.

Dear Samuel,

Not sure to understand: a CPU bounded ROOT analysis shows in top up to 100% CPU even in single core and up to N * 100% in PROOF-Lite, with N the number of effective cores of the machine.

Could you please provide an example of what you are doing, showing the problem?

G Ganis

PS:

PROOF-Lite started with TProof::Open("") starts a number of independent processes equal to the number of effective CPUs provided by the machine, probably 8 in your case. Each process uses one of more cores, depending on the nature of code run inside

1 Like

I’m doing data analysis using TTrees. When running the file normally, ROOT shows (in task manager) to be using less than 25% of the CPU. When I check each core, my computer appears to spread the work load over all the cores too (so even though it’s only using 25%, each core is being utilized). I want to be able to use more than 25% of the CPU. Any ideas for why it is maxed out at 25%?

I noticed that on another PC of mine, which has two cores, ROOT only uses 50% of the CPU and it is spread across both cores like the other PC.

The file is pretty complicated at this point, but I calculate moon and sun positions in the sky, work with a lot of random numbers, and I also add, subtract, multiply, or divide 10+ histograms (part of what makes it take a long time, plus how many times I make those random numbers). It’s a bit long to show here so I attached it for your convenience.

Thanks again.

Read_muons2D3.C (37.4 KB)

Also the file requires additional data files which I haven’t included, in case you try to run it.

Execute man top and search for “Irix” and/or “Solaris”.
Google also for “processor affinity”.

I tried running it with Irix mode on (as well as off) and nothing changed. Same less than 25% cpu usage.

And I should clarify that the CPU hangs around 23%, not exactly 25%.

Okay, so I think I’ve figured a way around my problem. I’m still a relative novice with C++ and coding that I didn’t realize how useful multi-threading is in this case. It was just that my program was doing a single thread which made it lower than 25%, so using multi threading I am able to increase it past 25%.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.