Jos*_*aum 4 c linux profiling performance-testing oprofile
使用统计执行分析器OProfile可视化我的C应用程序的调用图配置文件时,它会多次包含以下警告.警告对我来说相当神秘:
warning: dropping hyperspace sample at offset 1af9 >= 2be8 for binary /home/myuser/mybinary
Run Code Online (Sandbox Code Playgroud)
我在Xen虚拟化环境中使用OProfile,如下所示:
modprobe oprofile timer=1
opcontrol --no-vmlinux
opcontrol --start
(wait for profiling data to accumulate)
opcontrol --stop
opreport --session-dir=/var/lib/oprofile --exclude-dependent --demangle=smart \
--symbols /home/myuser/mybinary --callgraph
Run Code Online (Sandbox Code Playgroud)
最后一个命令的完整输出是:
Overflow stats not available
CPU: CPU with timer interrupt, speed 0 MHz (estimated)
Profiling through timer interrupt
warning: dropping hyperspace sample at offset 84d0 >= 79a0 for binary /home/myuser/mybinary
warning: dropping hyperspace sample at offset 7ac0 >= 79a0 for binary /home/myuser/mybinary
warning: dropping hyperspace sample at offset 7d90 >= 79a0 for binary /home/myuser/mybinary
warning: dropping hyperspace sample at offset 7ac0 >= 79a0 for binary /home/myuser/mybinary
warning: dropping hyperspace sample at offset 7d90 >= 79a0 for binary /home/myuser/mybinary
warning: dropping hyperspace sample at offset 8210 >= 79a0 for binary /home/myuser/mybinary
samples % symbol name
-------------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
之后,它会打印看似合理的调用图数据.
"超空间"警告意味着什么?是什么导致的?它会影响分析结果吗?我该如何解决?
Maynard Johnson在给邮件列表的邮件中解释了这个警告:
有报道称,由oprofile内核驱动程序记录的样本似乎归因于错误的二进制文件,特别是如果采样率非常高或者进行调用图分析(因为调用图分析,如高采样率,也会导致oprofile内核驱动程序的非常高的开销和内部样本缓冲区的溢出).我怀疑那是你遇到的.不幸的是,这是一个非常阴险的错误,没有人能够找到根本原因.内核驱动程序会报告其内部缓冲区的溢出计数,并且oprofiled日志会将其打印出来.为方便起见,从oprofile 0.9.5开始,opreport在发现非零溢出计数时也会打印警告,并建议降低采样间隔.
我建议您查看/var/lib/oprofile/samples/oprofiled.log并查找上述配置文件运行的溢出统计信息(日志条目带有时间戳).如果你只看到一些或很小的百分比(比如说,不到3%),你可能只是忽略了异常.一般来说,为避免/限制此类事物,您应该以最低的采样率进行分析,尤其是在进行callgraph分析时.那么"实用"是什么意思呢?好吧,与任何基于样本的分析器一样,oprofile本质上是统计的.您拥有的数据点越多,您对数据的信心就越大.因此,对于100%的置信度,您应该(理论上)将计数值设置为"1".但是,不太实际,因为您的机器可能看起来锁定,因为正在完成的大部分工作是记录样本.对于循环事件分析,你可以使用数百万左右的计数值(在今天的处理器上)并且仍然对数据非常有信心.对于其他事件,它实际上取决于它们的发生频率.
归档时间: |
|
查看次数: |
878 次 |
最近记录: |