3

The question is mainly regarding the profiling tools available for ARM processors - Specifically ARM v7 ; I'm using a Linux

I played around with Intel and AMD processors and I know that they have various profiling tools like Perf, perfmon and valgrind which will allow me to monitor various counters like retired instructions, cache misses, floating point unit, integral units, etc.

However, I don't know if ARM also supports these kind of profiling tools. Do you know any tools that can be used on ARM processors.

I searched through the ARM reference manual but I failed to find the performance counters list. For example, in Intel processors you can find them in the ref. manual and OProfile webpage. Is there a manual or a webpage which lists the list of performance monitoring counters for ARM.

Thanks.

Oak Bytes
  • 4,649
  • 4
  • 36
  • 53
pistal
  • 2,310
  • 13
  • 41
  • 65

2 Answers2

5

ARMv7-A profile, which is targeted for hosting a rich OS has similar performance counters like Intel . It looks like you have looked into v7-M profile which is targeted for micro-controller environments. Most of the recent ARM cores that runs Linux, like Cortex-A9 are from this profile.

Perf already supports performance counters on ARM architecture, same with oprofile.

ARM company also provides a eye-candy eclipse based environment called DS-5 Streamline as well with lots of extra features to help you analyze performance issues.

auselen
  • 27,577
  • 7
  • 73
  • 114
0

Valgrind is supported on ARM. See here.

maverick1989
  • 342
  • 7
  • 20
  • Thanks for your answer. But There was some more detailed information below and therefore, I ticked it as correct. – pistal Jun 17 '13 at 06:26
  • No explanation required. I do not do this for votes. Thanks though :) – maverick1989 Jun 17 '13 at 14:23
  • I did not say that. Technical stuff is always fun - that's why most of us play at work! – pistal Jun 17 '13 at 14:38
  • But, from the [documentation for valgrind's profiler callgrind](http://valgrind.org/docs/manual/cl-manual.html): _"Callgrind's ability to detect function calls and returns depends on the instruction set of the platform it is run on. It works best on x86 and amd64, and unfortunately currently does not work so well on PowerPC, ARM, Thumb or MIPS code. This is because there are no explicit call or return instructions in these instruction sets, so Callgrind has to rely on heuristics to detect calls and returns."_ – Tor Klingberg Apr 05 '16 at 10:18
  • No it doesn't, it crashes with "Unrecognised instruction" – Soonts Nov 08 '17 at 08:11