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
Performance loss between 2020.3 and 2021.1.1 #355
Comments
Does the application use TBB only inside Embree or some other parts of the application also can use TBB? |
I would say no -- there is a few appearances of |
Thinking about it, the 2021.1.1 build configuration was
I will try:
... just to see if that makes a difference. |
Did it have any arguments or was it created by default? |
No arguments |
At this point, I think I should explain our runtime configuration because this is looking more like a runtime issue rather than build time. The embree application runs in its own docker container on a server machine and there may be multiple instances of the container running concurrently (6 concurrent containers in the case that I'm testing). In the test scenario, each of the processes is under roughly equal (fairly significant) load. They are each fed work tasks from another process via RPC. Here's a dump of embree's runtime configuration:
We don't set up any CPU affinity, etc. through the docker-compose.yml, we just let TBB in each of the container processes work out the CPU load-balancing amongst themselves. Historically, this has worked pretty well. With 2021.1.1, it's as if it is stubbornly under-utilizing the hardware it has at its disposal (that's just a guess - I don't have much direct evidence to support that theory). Has TBB's oversubscription logic changed significantly with 2021.1.1? Again, switching back to TBB 2020.3 completely changes the performance profile. |
There are some known issues with
There is no special changes related to oversubscription but oneTBB was improved to send external threads to sleep when there is work disbalance and nothing to do. In theory, oversubscription might increase disbalance and this logic might bring some issues but it is just supposition. To get the previous TBB behavior in that aspect, try to replace the body of
|
Thanks for the info. I will look into it. |
@alexey-katranov your suggested change to |
Unfortunately, no. Do you have reproducer or steps how to reproduce the issue? |
No, I don't... and it's going to be tedious to trim to a form that I can release to you. I will see what I can do. |
@mikemccarty-vertex , any updates ? BTW there were a number of fixes since that. Can v2021.4 be tried ? |
@anton-potapov thanks for checking in. We've been holding at 2020.3 since this ticket was logged. I will give 2021.4 a try when I get some time. |
@mikemccarty-vertex , friendly reminder :) |
@anton-potapov I think I'm going to close this issue for now. When I get some time to retest, I will reopen if necessary. Thanks for the reminder. |
I have an embree-3.12.2-based raytracing application (built on ubuntu 18.04) where if I update tbb from 2020.3 to 2021.1.1, the throughput performance drops significantly (I would estimate up to an order of magnitude slower) when under load. It is very consistent and obvious.
Both tbb and embree are rebuilt locally from scratch. The only application source code changed during the migration is the removal of the usage of
tbb::task_scheduler_init
during the initialization phase, which I have understood was effectively non-functional anyway.Any ideas/recommendations?
The text was updated successfully, but these errors were encountered: