tools:oproflie[常用命令]

使用oprofile进行cpu使用情况检测,需要经过初始化、启动检测、导出检测数据、查看检测结果等步骤,以下为常用的oprofile命令。

初始化

  • opcontrol --no-vmlinux : 指示oprofile启动检测后,不记录内核模块、内核代码相关统计数据
  • opcontrol --init : 加载oprofile模块、oprofile驱动程序

检测控制

  • opcontrol --start : 指示oprofile启动检测
  • opcontrol --dump : 指示将oprofile检测到的数据写入文件
  • opcontrol --reset : 清空之前检测的数据记录
  • opcontrol -h : 关闭oprofile进程

查看检测结果

  • opreport : 以镜像(image)的角度显示检测结果,进程、动态库、内核模块属于镜像范畴
  • opreport -l : 以函数的角度显示检测结果
  • opreport -l test : 以函数的角度,针对test进程显示检测结果
  • opannotate -s test : 以代码的角度,针对test进程显示检测结果
  • opannotate -s /lib64/libc-2.4.so : 以代码的角度,针对libc-2.4.so库显示检测结果
  • opcontrol --status:查看当前设置的状态,确保设置正确

一般来说,我们做应用程序的性能测试不需要关注内核的性能。另外需要关注cpu的周期事件,因此需要进行如下设置

opcontrol --setup --event=eventname:count:unitmask:kernel:user

这里解释一下event参数的各个项的意思:

说明

eventname

要关注的事件名称,常用的事件名称及功能如下:

CPU_CLK_UNHALTED: CPU的执行时间,性能测试时最常用的事件
LLC_MISSES: L2 cache失效情况。

DTLB_MISSES: 数据TLB失效情况。
一般做性能测试时只会用到CPU_CLK_UNHALTED。

count

事件抽样频率,oprofile并不是对每次事件都进行记录,而是进行抽样,每多少次事件进行一次数据收集,如果抽样太低,会导致事件数据的收集占用太多的cpu.因此每个事件,oprofile给了一个最小值,每类事件的最小值可以通过opcontrol --list-events查到。

unitmask

事件的掩码,通过opcontrol --list-events可查看相应事件的掩码意义,这里不细说了。

kernel

是否收集内核的事件。0表示不收集,1表示收集。

user

是否收集用户的事件。0表示不收集,1表示收集。

对性能测试时,一般使用的设置参数如下:

opcontrol --setup --event=CPU_CLK_UNHALTED:10000:0:0:1

 

常见步骤:

1.echo 0 > /proc/sys/kernel/nmi_watchdog

2.opcontrol --init

3.opcontrol --vmlinux=xxx/xxx/xxx/vmlinux或者 opcontrol --no-vmlinux

4.opcontrol --reset

5.opcontrol --start

6. 运行程序

7.opcontrol --dump

8.opcontrol --stop 

9.opcontrol --shutdown

10.opcontrol --deinit

11.opannotate --source 运行程序路径名

12.opreport -l 运行程序路径名

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值