I have a multi-threaded programs. We use an own implementation of the thread pool. First, the load of the project is enough. compred to single thread, the program of two threads is more faster.
When we increase the number of threads, greater than 2, performance begins terrible. Obviously, we encountered a multi-threaded performance issues. Then, we started using Intel® VTune ™ Amplifier XE 2017
Performance analysis, we put this tool integrated into the VS2013. Then a surprising thing happened when I click on the star button of Intel® VTune ™ Amplifier XE , the project begin to run, plug collects
Data . We found that when we started this project through the plug-in, with the increase in the number of threads, the performance becomes higher, the running time is shortened. We can open up to 20 threads. And time is shortened 20 times
So, we want to know, can Intel® VTune ™ Amplifier XE 2017 change the operation mode of multithreaded programs ? Why does this happen.
I have been troubled by this problem for a long time.
Could you please provide more details to understand the problem:
Time of single-threaded application, time of multi-threaded application with 20 thread, time of multi-threaded application with 20 threads under VTune profiling.
What VTune analysis type did you use? (Hotspots? Concurrency? Locks & Waits or any other?)
What kind of synchronization objects do you use to implement your own thread pools?
Thanks & Regards, Dmitry