当我们使用oprofile时(不论是虚拟机还是实体机里)

若一:报:Cannot find event CPU_CLK_UNHALTED

若二:报:You cannot specify any performance counter events because OProfile is in timer mode.

我们可以使用下面的方法进行处理。

# 我们的操作系统和机器配置大概是这样的:
$sudo aspersa/summary
# Aspersa System Summary Report ##############################
        Date | 2011-03-31 16:26:05 UTC (local TZ: CST +0800)
    Hostname | my031226.sqa.cm4
      Uptime | 10:00,  4 users,  load average: 0.00, 0.78, 5.29
      System | Huawei Technologies Co., Ltd.; Tecal RH2285; vV100R001 (Main Server Chassis)
 Service Tag | 2102317716N0AA000062
     Release | Red Hat Enterprise Linux Server release 5.4 (Tikanga)
      Kernel | 2.6.18-164.el5
Architecture | CPU = 64-bit, OS = 64-bit
   Threading | NPTL 2.5
    Compiler | GNU CC version 4.1.2 20080704 (Red Hat 4.1.2-44).
     SELinux | Disabled
# Processor ##################################################
  Processors | physical = 2, cores = 12, virtual = 24, hyperthreading = yes
      Speeds | 24x2400.151
      Models | 24xIntel(R) Xeon(R) CPU X5670 @ 2.93GHz
      Caches | 24x12288 KB
..
 #profile 的基本步骤
$sudo rm -f /root/.oprofile/daemonrc   #删除某个文件
 
$sudo opcontrol --setup --no-vmlinux   #设置operfile配置
$sudo opcontrol --init                 #初始化
$sudo opcontrol --reset                #重新设置
$sudo opcontrol --start         #opcontrol 开始工作
Using 2.6+ OProfile kernel interface.   
Using log file /var/lib/oprofile/samples/oprofiled.log
Daemon started.                       #守护进程开启了
Profiler running.             #profiler正在跑
 
$sudo opcontrol --status                #profile的当前状态
Daemon running: pid 9253
Separate options: none
vmlinux file: none
Image filter: none
Call-graph depth: 0
 
#这里喝杯茶,让子弹飞一会儿
 
$sudo opcontrol --shutdown    #结束profile
Stopping profiling.
Killing daemon.
 
$opreport                     #打开报告
opreport error: No sample file found: try running opcontrol --dump   #结果没有内容
or specify a session containing sample files
 
$tree /var/lib/oprofile/samples/current/   #查看抓到的信息文件
/var/lib/oprofile/samples/current/
 
0 directories, 0 files                    #发现什么也没抓到
确实是没抓到sample文件!

#出现问题描述 没有抓到sample文件
经过无数次的分析和判断,再加上goolge大神的帮助,找到问题的根源了: $dmesg
|grep oprofile oprofile: using NMI timer interrupt. #如果你的CPU不被oprofile认识,或者说认识有问题,oprofile就会进入 timer interrupt模式 #表现如下: $ophelp Using timer interrupt. $sudo opcontrol --setup -e CPU_CLK_UNHALTED:6000:0:0:1 You cannot specify any performance counter events because OProfile is in timer mode. 如果你看到上面的字,对不起你肯定抓不到数据的,解决方案是这样的: 在oprofile模块加载的时候强制使用 timer=1.
#解决步骤 $sudo opcontrol
--deinit Daemon not running Unloading oprofile module $sudo modprobe oprofile timer=1 $dmesg|grep oprofile|tail -n 1 oprofile: using timer interrupt. 如果你看到上面的字说明你成功了。 我们再试验下: $sudo opcontrol --init && sudo opcontrol --reset && sudo opcontrol --start Using 2.6+ OProfile kernel interface. Using log file /var/lib/oprofile/samples/oprofiled.log Daemon started. Profiler running. #这里可以再喝杯咖啡,让子弹飞一会儿 $sudo opcontrol --shutdown Stopping profiling. Killing daemon. $opreport CPU: CPU with timer interrupt, speed 0 MHz (estimated) Profiling through timer interrupt TIMER:0| samples| %| ------------------ 719496 46.1320 no-vmlinux 432567 27.7349 ha_innodb_plugin.so.0.0.0 293343 18.8083 libc-2.5.so 111575 7.1539 mysqld 959 0.0615 perl 873 0.0560 libpthread-2.5.so 205 0.0131 oprofiled 188 0.0121 libmysqlclient.so.16.0.0 181 0.0116 ld-2.5.so 145 0.0093 bash 23 0.0015 libproc-3.2.7.so 16 0.0010 libnss_files-2.5.so 16 0.0010 libperl.so 11 7.1e-04 mysql 9 5.8e-04 ps 8 5.1e-04 gawk 8 5.1e-04 grep 5 3.2e-04 libm-2.5.so 3 1.9e-04 libcrypto.so.0.9.8e 3 1.9e-04 pkg-config 2 1.3e-04 libdl-2.5.so 2 1.3e-04 dircolors 2 1.3e-04 sshd 1 6.4e-05 ksh93 1 6.4e-05 more 1 6.4e-05 libselinux.so.1 1 6.4e-05 du 1 6.4e-05 sudo 1 6.4e-05 wc 1 6.4e-05 libnetsnmp.so.10.0.3 ... $tree current/ current/ |-- {kern} | `-- no-vmlinux | `-- {dep} | `-- {kern} | `-- no-vmlinux | `-- TIMER.0.0.all.all.all `-- {root} |-- bin ... 196 directories, 30 files

 

。。。。。

posted on 2017-09-21 15:45  进_进  阅读(886)  评论(0)    收藏  举报