Linux — Как я могу отладить, какая часть многопоточной программы C ++ занимает слишком много времени?

У меня есть ситуация, когда я работаю с многопоточной программой на C ++ в CentOS (Linux) и пытаюсь выяснить, какая часть программы является «нагрузкой на процессор». Я уже определил нарушающий поток, используя команду «top» из консоли. Теперь мой вопрос: как я могу узнать, какая часть кода в этом потоке загружает процессор? Можете ли вы порекомендовать какие-либо средства / методы отладки, которые помогут в этой задаче? Если бы это могло сказать мне строки (строки), которые выполняются больше всего в программе, это должно быть полезно.

Я хотел бы посмотреть, смогу ли я выполнить оптимизацию в коде-нарушителе и / или посмотреть, происходит ли что-то неправильно. Кажется, что сам процесс работает правильно, за исключением того факта, что он замедляется и загружает процессор больше, чем мне кажется.

Я немного изучил инструменты valgrind и пока не смог произвести ничего полезного (хотя в valgrind много инструментов). Я попробовал инструмент helgrind до сих пор, и посмотрел на http://valgrind.org/docs/manual/manual.html для дальнейшего руководства. Похоже, что инструмент callgrind может быть полезен, если я смогу понять, как его использовать. Если кто-нибудь может сказать мне процедурно, как делать отладку, какие части кода «перезагружаются» с помощью valgrind, или указать мне на хороший ресурс, это было бы очень полезно.

2

Решение

Есть множество инструментов, которые дают вам эту информацию и многое другое — иногда слишком много информации. Если вы работаете в среде IA (архитектура Intel), у вас есть VTune, компилятор Intel предоставляет целый набор инструментов для анализа с различными накладными расходами на инструментарий, и есть много бесплатных и экспериментальных инструментов на https://software.intel.com/en-us/whatif/. Если вы используете архитектуру, отличную от IA, существует множество компиляторов и других инструментов анализа, доступных гораздо лучше, чем top. Есть также различные профессиональные инструменты.

Инструменты IA от Intel могут быть дорогими, но существуют различные студенческие и другие лицензии со скидкой.

1

Другие решения

Используйте профилировщик
Кроме того, вы можете написать свой собственный временной код, но это приводит к неточностям и ложной эффективности.

2

По вопросам рекламы [email protected]