-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
4% CPU usage during FeatureExtraction on multi-core system #1352
Comments
That´s because the chunk does not need / can not handle more resources. Here is a analogy to describe the situation: "20 musicians play a symphony of 94 minutes. How long do 40 musicians need to play the same symphony?" Computing chunks in parallel can speed up the process by computing in parallel instead of in sequence, but this does not change the requirements of the individual chunk. To speed up the process, you could try to disable "Force CPU extraction" to utilize the GPU. |
I am not sure I understand the analogy, as we are not talking about a single frame being processed, but thousand of frames instead. There are 3500+ frames and 64 threads which should allow creating 50+ batches (considering the memory constraint, it seems to be 52), so I would expect 50+ threads to be fully utilized. What am I missing here? |
If you look at the output, that should already happen:
|
The point is, that one chunk does not necessarily need or can not utilize the full resource of a single thread. (MESHROOM_USE_MULTI_CHUNKS is still experimental) |
Is the problem restricted to this single node |
"I tested this [MESHROOM_USE_MULTI_CHUNKS] on a 48 core workstation. The speed-up is not huge, it reduces the overall computation time by ~10%. This reduces computation time in FeatureExtraction, SfM, DepthMapping and Meshing but increases computation time slightly in DMFilter and Texturing." "Here are the results for a test with 2000 images: When you run your graph without MESHROOM_USE_MULTI_CHUNKS, does the cpu consumption max out? |
I am curious how you managed to get 100%, while I seem to be getting around ~4% per thread. Different settings? |
Maybe the CPU clock at 1GHz, also the images were quite large. (multithreaded program will run slower on a faster CPU because the CPU is getting more threads into a blocked state faster than a slower CPU would. *) |
The test images I am working on are quite small, that might have a huge impact.
No. I tried it without the parameter, with |
If you want to max out your cpu you should force cpu extraction and use |
I forced CPU extraction, but it seems to make no difference. |
Ok I checked again an 4% is not much indeed. In power saving mode, my PC runs at 50% capacity, but in Power mode it runs at 100%. Did you check your power consumption settings? If you don´t have a supported GPU, don´t change forceCpuExtraction, by default (1) it is set to use the CPU. |
I am not sure what you mean. The process is running in a VM, has a niceness=0 (i.e. default) and from what I can tell, the underlying host is not throttling in any way. |
With a VM there could also be other bottlenecks like write/read time to the hard drive / network drive. As you can see here, there are multiple factors at play: |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. |
This issue is closed due to inactivity. Feel free to re-open if new information is available. |
I am running Meshroom on Linux with different core/thread counts and it seems that Meshroom is rarely using any.
For example, in this 64-thread system, it uses 3-4% of each core:
I ran Meshroom with the following command:
Log
The text was updated successfully, but these errors were encountered: