查看使用 oprofile 分析性能瓶颈的源代码
←
使用 oprofile 分析性能瓶颈
跳转到:
导航
,
搜索
因为以下原因,你没有权限编辑本页:
您刚才请求的操作只有这个用户组中的用户才能使用:
用户
您可以查看并复制此页面的源代码:
== oprofile 快速上手 == ;;a. 初始化 <source lang=bash> opcontrol --init </source> 该命令会加载oprofile.ko模块,mount oprofilefs。成功后会在/dev/oprofile/目录下导出一些文件和目录如: cpu_type, dump, enable, pointer_size, stats/ ;;b. 配置 主要设置计数事件和样本计数,以及计数的CPU模式(用户态、核心态) <source lang=bash> opcontrol --setup --event=CYCLES:1000::0:1 则是设置计数事件为CYCLES,即对处理器时钟周期进行计数 样本计数为1000,即每1000个时钟周期,oprofile 取样一次。 处理器运行于核心态则不计数 运行于用户态则计数 --event=name:count:unitmask:kernel:user name: event name, e.g. CYCLES or ICACHE_MISSES count: reset counter value e.g. 100000 unitmask: hardware unit mask e.g. 0x0f kernel: whether to profile kernel: 0 or 1 user: whether to profile userspace: 0 or 1 </source> ;;c. 启动 <source lang=bash> opcontrol --start </source> ;;d. 运行待分析之程序 <source lang=bash> ./ffmpeg -c cif -vcodec mpeg4 -i /root/paris.yuv paris.avi </source> ;;e. 取出数据 <source lang=bash> opcontrol --dump opcontrol --stop </source> ;;f. 分析结果 <source lang=bash> opreport -l ./ffmpeg </source> 则会输出如下结果: <source lang=bash> CPU: GODSON2E, speed 0 MHz (estimated) Counted CYCLES events (Cycles) with a unit mask of 0x00 (No unit mask) count 10000 samples % symbol name 11739 27.0148 pix_abs16_c 6052 13.9274 pix_abs16_xy2_c 4439 10.2154 ff_jpeg_fdct_islow 2574 5.9235 pix_abs16_y2_c 2555 5.8798 dct_quantize_c 2514 5.7854 pix_abs8_c 2358 5.4264 pix_abs16_x2_c 1388 3.1942 diff_pixels_c 964 2.2184 ff_estimate_p_frame_motion 852 1.9607 simple_idct_add 768 1.7674 sse16_c 751 1.7283 ff_epzs_motion_search 735 1.6914 pix_norm1_c 619 1.4245 pix_sum_c 561 1.2910 mpeg4_encode_blocks 558 1.2841 encode_thread 269 0.6190 put_no_rnd_pixels16_c 255 0.5868 dct_unquantize_h263_inter_c ...... </source> <br><br>
返回到
使用 oprofile 分析性能瓶颈
。
个人工具
登录
名字空间
页面
讨论
变换
查看
阅读
查看源代码
查看历史
操作
搜索
导航
首页
社区专页
新闻动态
最近更改
随机页面
帮助
工具箱
链入页面
相关更改
特殊页面