使用oprofile分析性能瓶颈用OProfile彻底了解性能luther@gliethttp:~$ sudo apt-get install oprofile
oprofile对应的内核驱动位于drivers/oprofile/目录
luther@gliethttp:/vobs/works/linux-2.6.31.1/drivers/oprofile$ ll
total 80K
-rw-r--r-- 1 luther luther 822 2009-09-24 23:45 timer_int.c
-rw-r--r-- 1 luther luther 663 2009-09-24 23:45 oprofile_stats.h
-rw-r--r-- 1 luther luther 2.2K 2009-09-24 23:45 oprofile_stats.c
-rw-r--r-- 1 luther luther 6.4K 2009-09-24 23:45 oprofilefs.c
-rw-r--r-- 1 luther luther 3.5K 2009-09-24 23:45 oprofile_files.c
-rw-r--r-- 1 luther luther 907 2009-09-24 23:45 oprof.h
-rw-r--r-- 1 luther luther 3.7K 2009-09-24 23:45 oprof.c
-rw-r--r-- 1 luther luther 858 2009-09-24 23:45 event_buffer.h
-rw-r--r-- 1 luther luther 4.1K 2009-09-24 23:45 event_buffer.c
-rw-r--r-- 1 luther luther 2.9K 2009-09-24 23:45 cpu_buffer.h
-rw-r--r-- 1 luther luther 12K 2009-09-24 23:45 cpu_buffer.c
-rw-r--r-- 1 luther luther 432 2009-09-24 23:45 buffer_sync.h
-rw-r--r-- 1 luther luther 14K 2009-09-24 23:45 buffer_sync.c
luther@gliethttp:~$ sudo opcontrol --no-vmlinux //表示不检测内核
luther@gliethttp:~$ sudo opcontrol --start
Using default event: CPU_CLK_UNHALTED:100000:0:1:1
Using 2.6+ OProfile kernel interface.
Using log file /var/lib/oprofile/samples/oprofiled.log
Daemon started.
Profiler running.
luther@gliethttp:~$ opcontrol --list-events 列出支持的所有event
luther@gliethttp:~$ sudo opcontrol -h // shutdown关闭
luther@gliethttp:~$ sudo opcontrol --init
luther@gliethttp:~$ sudo opcontrol --no-vmlinux
luther@gliethttp:~$ sudo opcontrol --event= CPU_CLK_UNHALTED:5000 --event=DATA_CACHE_MISSES:1000 --event=INSTRUCTION_CACHE_MISSES:1000 --event=MEMORY_REQUESTS:1000
luther@gliethttp:~$ sudo opcontrol --start
luther@gliethttp:~$ sudo opcontrol --dump
luther@gliethttp:~$ opreport
luther@gliethttp:~$ opcontrol --deinit // 卸载模块
或者直接
luther@gliethttp:~$ sudo opcontrol -h // shutdown关闭
luther@gliethttp:~$ sudo opcontrol --init
luther@gliethttp:~$ sudo opcontrol --start
luther@gliethttp:~$ gcc -o gliethttp_test main.c // 生成测试程序gliethttp_test
luther@gliethttp:~$ ./gliethttp_test // 运行被测试程序
luther@gliethttp:~$ sudo opcontrol --dump // 取出监控数据
luther@gliethttp:~$ sudo opcontrol --stop // 停止监控
luther@gliethttp:~$ opreport -l ./gliethttp_test // 取出和测试程序gliethttp_test相关的监控报告
luther@gliethttp:~$ opreport // 取出全部监控报告
如果加入-g编译,即gcc -g -o gliethttp_test main.c 那么我们可以使用opannotate --source分析源码
luther@gliethttp:~$ opannotate --source ./gliethttp_test
luther@gliethttp:~$ sudo opcontrol --stop // 停止数据收集
luther@gliethttp:~$ sudo opcontrol -h // 停止数据收集,同时退出daemon程序
luther@gliethttp:~$
sudo opcontrol --reset // 清空当前会话数据luther@gliethttp:~$
sudo opcontrol --status // 查看你自己配置了的事件《source性能分析工具Oprofile详细解析》
阅读(3876) | 评论(1) | 转发(0) |