LINUX.ORG.RU

Срезы по времени или отклонение во времени вызова.

 , , kcachegrind,


1

2

Нужно в программе найти функции у которых есть большое время отклонения от их среднего времени выполнениия. Проблема состоит в том что есть программа которая притормаживает в определенные моменты времени. Есть моменты когда суперцикл программы НЕ успевает отработать по таймингам и нужно найти эти места.

Не обязательно через valgrind, но только без замеров через gettimeofday Есть идеи?

★★

Последнее исправление: andreykyz (всего исправлений: 1)

Есть идеи?

Да, просто добавь код для замера времени выполнения функции через системные часы. И пиши лог.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Да, просто добавь код для замера времени выполнения функции через системные часы. И пиши лог.

Этот метод мне известен, но это обезьяний труд. Проект слишком большой.

andreykyz ★★
() автор топика

Есть идеи. Perf.

anonymous
()
Ответ на: комментарий от andreykyz

Этот метод мне известен, но это обезьяний труд. Проект слишком большой.

Не хотите добавлять вручную код для замеров? У gcc есть опция -finstrument-functions, она заставляет при каждом входе и выходе из функции выполнять пользовательский код. Вот тут например http://balau82.wordpress.com/2010/10/06/trace-and-profile-function-calls-with... написано как это можно использовать для трейса и профилирования

Deleted
()
Ответ на: комментарий от andreykyz
$strace -T /bin/date
...
open("/etc/localtime", O_RDONLY|O_CLOEXEC) = 3 <0.000026>
write(1, "\320\237\321\202. \320\260\320\262\320\263.  2 15:51:55 EEST 2"..., 36Пт. авг.  2 15:51:55 EEST 2013
) = 36 <0.000021>
close(2)                                = 0 <0.000013>
man strace
...
-T          Show the time spent in system calls. This records the time difference between the beginning and the end of each system call.
joy4eg ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.