OProfile是Linux平台支持的一款功能强大的性能分析工具。网络上很多关于如何安装在虚拟机上安装OProfile的文章,但很多都存在抄袭来抄袭去且并不能安装成功。现经本人整理和实验后,现将OProfile在Linux虚拟机上的安装过程分享之。
为了保证虚拟机能够正常启动,在安装虚拟机的过程中,请将磁盘模式设置为IDE。否则,升级内核后,将会报"pci 18.2: no compatible bridge window for [io 0xf000-0xffff]"错误,且无法启动虚拟机!
图1 设置磁盘模式
内核的配置可参考博文《Linux内核升级》,配置完成后,再对内核配置文件.config进行如下修改:
// 加上OPROFILE配置 CONFIG_PROFILING=y CONFIG_OPROFILE=m(注:m表示编译为模块,y表示编译到内核中) CONFIG_OPROFILE_EVENT_MULTIPLEX=y // 加上APIC配置 CONFIG_X86_IO_APIC=y CONFIG_X86_LOCATE_APIC=y CONFIG_PCI_IOAPIC=y
有了①、②的配置之后,便可进行内核的编译和替换了(注:可参考博文《Linux内核升级》)
内核升级完成后,这时使用OProfile会报如下错误:
#opreport -l ./a.out Overflow stats not available error: no sample files found: profile specification too strict?
解决方案:
#opcontrol --deinit #modprobe oprofile timer=1 #echo "options oprofile timer=1" >> /etc/modprobe.conf
⑤、执行过程
// 加载模块 #opcontrol --init // 是否对内核进行测试(一般不测试内核) #opcontrol --no-vmlinux // 重置测试数据 #opcontrol --reset // 开始 #opcontrol --start // 运行程序(注:可执行文件编译时,需加上编译选项-g) #./a.out // 把收集到的数据写入文件 #opcontrol --dump // 停止 #opcontrol --stop // 关闭守护进程 #opcontrol --shutdown // 卸载模块 #opcontrol --deinit // 源码时间分析 #opannotate --source ./a.out // 生成测试报告 #opreport -l ./a.out