У меня проблема с линейным масштабированием моего приложения в зависимости от количества потоков (например, 800 потоков вдвое увеличивает производительность 400 потоков в двухъядерном процессоре). И мое внутреннее чувство говорит мне, что нити спят или блокируются ... но я не вижу этого в callgrind.
То же самое делает callgrind для измерения времени функции или только времени, когда поток был активен для создания данных. Если не понятно, что я спрашиваю ... тема делает
i ++;
на 2 секунды, затем
sleep(1);//thread will not be scheduled to run for min 1 second...
... будет i++
составлять приблизительно 100% или приблизительно 66% графика вызовов.