Профилирование сетевого программного обеспечения / Профилирование программного обеспечения с большим количеством системных вызовов - PullRequest
2 голосов
/ 07 июня 2011

Я работаю над сложным сетевым программным обеспечением и не могу определить, как улучшить производительность системы.

В частности, в одной части программного обеспечения, которая использует блокировку синхронных вызовов.Поскольку эта часть системы выполняет тяжелые вычисления, почти невозможно определить, вызвана ли медлительность этого компонента этими вычислениями или ожиданием других частей системы.

Существуют ли легковесные профилировщикичто может захватить эту информацию?Я не могу использовать сверхпрочный профиль, такой как valgrind, так как это полностью искажает результаты (хотя valgrind был бы идеален, поскольку он собирает всю необходимую информацию).

Я пытался использовать oProfile, но просто не смогполучить какие-либо значимые результаты из этого (возможно, если где-то есть краткое руководство ...).

Ответы [ 3 ]

1 голос
/ 07 июня 2011

Что вам нужно, это что-то, что дает вам сэмплы стека по времени настенных часов (не только процессорное время, как gprof ), и сообщает построчно (не только по функции) процент выборок, содержащих линия.

Zoom сделает это, но я просто делаю случайную паузу . Вот почему это работает . Вот пошаговый пример . Вот другое объяснение .

0 голосов
/ 02 июля 2011

Вы также можете выполнить некоторую устаревшую отладку printf и распечатать время до и после выполнения функции для стандартного вывода или системного журнала. Это примерно так же легко, как профилирование.

0 голосов
/ 07 июня 2011

Закомментируйте ваши "тяжелые вычисления" и посмотрите, все ли они медленные.Это скажет вам, если он ожидает в других системах по сети или вычислений.Ответ может не быть и / или может быть просто скоплением вещей.

...