我有一个 C++ 应用程序,我想在 ARM 板上测量它的性能。开发板正在运行 ubuntu。
目前我正在考虑使用 valgrind 和 gprof 来衡量性能。
我应该使用哪些工具/技术来衡量性能?
最佳答案
这是我上次不得不这样做时遇到的大问题:
- valgrind (仅支持Cortex ARM 处理器.. 嘘)
- mprof(线程不是很热?)
- gprof(线程不是很热?)
- oprofile (需要内核模块,但大多数现代内核都有它。我在 ARM 下使用过它。
- systemtap (最近移植到 arm,看起来很棒 - 就像 Linux 的 dtrace)
- strace 和 ltrace 有时实际上很有用,虽然非常高级
- iostat 等,如果你想把它踢老派的话。
- 如果您挖掘,/proc/和/sys 中的信息量相当大
- ioapps - IO 追踪
- lsof 可用于跟踪卡住的套接字和文件句柄
- 系统统计
- pmap
- iptraf
- tcpdump
- perftools - CPU 和内存分析
- bootchart
- QEMU 可以托管 ARM 内核/二进制文件,并且可以从外部进行检测。多次证明它对我很有用。
使用 gcc Hook 手动检测
void __cyg_profile_func_enter (void *, void *) __attribute__((no_instrument_function));
void __cyg_profile_func_exit (void *, void *) __attribute__((no_instrument_function));
关于performance - 在 ARM 开发板上测量应用程序性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9299985/