3

I have a C++ application and i want to measure its performance on ARM board. The board is running ubuntu.

Currently i am considering valgrind and gprof to measure the performance.

What tools/techniques should i use to measure the performance?

MA1
  • 2,767
  • 5
  • 35
  • 51

1 Answers1

8

Here are the biggies I ran across last time I had to do this:

  • valgrind (only supported on cortex ARM processors.. boo)
  • mprof (not so hot with threads?)
  • gprof (not so hot with threads?)
  • oprofile (requires kernel mods, but most modern kernels have it. I've used this under ARM.
  • systemtap (recently ported to arm, looks awesome - like dtrace for Linux)
  • strace and ltrace can actually be useful sometimes, although very high-level
  • iostat et all as well if you want to kick it old school.
  • Fair amount of information in /proc/ and /sys if you dig
  • ioapps - IO tracing
  • lsof is useful for tracking stuck sockets and file handles
  • systat
  • pmap
  • iptraf
  • tcpdump
  • perftools - CPU and memory profiling
  • bootchart
  • QEMU can host ARM kernels / binaries, and can be instrumented from outside. It's proven useful to me a couple times.
  • Manual instrumentation using the gcc hooks

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

synthesizerpatel
  • 27,321
  • 5
  • 74
  • 91
  • 1
    Thanks. Any idea about how much effort is required for systemtap to setup it for performance measuring? As you have used oprofile, what you say should i consider it? – MA1 Feb 15 '12 at 19:53
  • 1
    I've only read about system tap, but I liked what I read. oprofile was a bit heavyweight and cryptic, but that was 3 years ago. If I had to go do this task again, if systemtap kernel settings are available I'd start going down that path first. – synthesizerpatel Feb 15 '12 at 20:37