5

我正在使用 OPROFILE 来收集一些性能数据。但我遇到了麻烦。

这是我的外壳:

~ # rm -f /root/.oprofile/daemonrc
~ # opcontrol --setup --no-vmlinux
~ # opcontrol --init
~ # opcontrol --reset
~ # opcontrol --start
~ # opcontrol --status

Daemon running: pid 14909    
Separate options: none
vmlinux file: none    
Image filter: none    
Call-graph depth: 0

~ # opcontrol --shutdown

Stopping profiling.
Killing daemon.

~ # opreport

error: no sample files found: profile specification too strict?

~ # tree /var/lib/oprofile/

/var/lib/oprofile/
├── abi
├── complete_dump
├── jitdump
├── opd_pipe
└── samples
    ├── current
    │   └── stats
    │       ├── bt_lost_no_mapping
    │       ├── cpu0
    │       │   ├── backtrace_aborted
    │       │   ├── sample_invalid_eip
    │       │   ├── sample_lost_overflow
    │       │   └── sample_received
    │       ├── event_lost_overflow
    │       ├── multiplex_counter
    │       ├── sample_lost_no_mapping
    │       └── sample_lost_no_mm
    └── oprofiled.log


5 directories, 13 files

~ # dmesg |grep oprofile

oprofile: using NMI interrupt.


~ # uname -a

Linux localhost.localdomain 2.6.32-220.4.2.el6.x86_64 #1 SMP Tue Feb 14 04:00:16 GMT 2012 x86_64 x86_64 x86_64 GNU/Linux

~ # cat /proc/cpuinfo 

processor   : 0    
vendor_id   : GenuineIntel   
cpu family  : 6    
model       : 44    
model name  : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz   
stepping    : 2    
cpu MHz     : 2400.085   
cache size  : 12288 KB   
fpu     : yes    
fpu_exception   : yes    
cpuid level : 11    
wp      : yes   
flags       : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc up arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 popcnt aes hypervisor lahf_lm ida arat epb dts    
bogomips    : 4800.17    
clflush size    : 64   
cache_alignment : 64   
address sizes   : 40 bits physical, 48 bits virtual   
power management:
4

2 回答 2

1

某些 CPU 类型不提供hardware support使用硬件性能计数器所需的功能。在这些机器上,OProfile 回退到使用timer interrupt for profiling,回退到使用实时时钟中断来收集样本。

您可以通过使用 timer=1 模块参数来强制使用定时器中断。如果 OProfile 是作为内核模块构建的,那么您必须使用 modprobe 命令传递 'timer=1' 参数。在执行 'opcontrol --init' 或编辑 opcontrol 命令调用 modprobe 以传递 'timer=1' 参数之前执行此操作

modprobe oprofile timer=1

然后继续您的分析过程

于 2013-09-03T10:26:48.443 回答
0

我在基于 RHEL6 的发行版上遇到了类似的问题。在某个时候,我开始使用perf,通过它我可以获得分析器报告和带注释的源代码。

于 2013-07-11T13:53:38.763 回答