oprofile抓不到采样数据问题和解决方法
浏览:1338次 出处信息
最近有同学反映在某些新机器上做性能调优的时候, oprofile 有时抓不到数据,我之前也遇到这个情况,很是无语,今天特地验证了下。
# 我们的操作系统和机器配置大概是这样的: $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 .. $sudo rm -f /root/.oprofile/daemonrc $sudo opcontrol --setup --no-vmlinux $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 --status Daemon running: pid 9253 Separate options: none vmlinux file: none Image filter: none Call-graph depth: 0 #这里喝杯茶,让子弹飞一会儿 $sudo opcontrol --shutdown 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文件!
经过无数次的分析和判断,再加上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
收工,回家睡觉,困了! 项目要用oprofile,本来我12:00前要睡觉的,唉!
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:批量添加主机到cacti+nagios的监控报警系统中
后一篇:如何用 minicpan 映像自己的 CPAN >>
文章信息
- 作者:Yu Feng 来源: Erlang非业余研究
- 标签: oprofile
- 发布时间:2011-04-01 13:34:18
近3天十大热文
- [53] IOS安全–浅谈关于IOS加固的几种方法
- [52] 如何拿下简短的域名
- [51] 图书馆的世界纪录
- [50] android 开发入门
- [50] Oracle MTS模式下 进程地址与会话信
- [49] Go Reflect 性能
- [46] 【社会化设计】自我(self)部分――欢迎区
- [46] 读书笔记-壹百度:百度十年千倍的29条法则
- [36] 程序员技术练级攻略
- [29] 视觉调整-设计师 vs. 逻辑