Измерение производительности приложений на плате разработки ARM - PullRequest
3 голосов
/ 15 февраля 2012

У меня есть приложение на C ++, и я хочу измерить его производительность на плате ARM. Доска работает под управлением Ubuntu.

В настоящее время я рассматриваю valgrind и gprof для измерения производительности.

Какие инструменты / методы я должен использовать для измерения производительности?

1 Ответ

8 голосов
/ 15 февраля 2012

Вот те важные вещи, с которыми я столкнулся в прошлый раз, когда мне нужно было сделать это:

  • valgrind (поддерживается только на процессорах ARM Cortex .. Boo)
  • mprof (не так горячо с потоками?)
  • gprof (не так жарко с потоками?)
  • oprofile (требуются моды ядра, но в большинстве современных ядер оно есть.Я использовал это в ARM.
  • systemtap (недавно портированный на arm, выглядит потрясающе - как dtrace для Linux)
  • strace и ltrace иногда могут быть полезны,хотя и очень высокого уровня
  • iostat et все также хорошо, если вы хотите пнуть его старой школы.
  • Достаточное количество информации в / proc / и / sys, если вы копаете
  • ioapps - трассировка ввода-вывода
  • lsof полезна для отслеживания зависших сокетов и файловых дескрипторов
  • systat
  • pmap
  • iptraf
  • tcpdump
  • perftools - профилирование процессора и памяти
  • загрузочная диаграмма
  • QEMU может принимать ARM ядер / двоичных файлов, и могут быть оснащены извне.Это оказалось полезным для меня пару раз.
  • Ручное оснащение с помощью крючков gcc

    void __cyg_profile_func_enter (void *, void *) __attribute__((no_instrument_function)); void __cyg_profile_func_exit (void *, void *) __attribute__((no_instrument_function));

...