通过xentrace、xentrace_format和xenalyze获取Xen执行的详细参数信息
发布:smiling 来源: PHP粉丝网 添加日期:2015-04-21 13:13:57 浏览: 评论:0
在Xen进行测试或调优的时候,需要进行比较底层的细节分析,比如统计VMExit的频率、VMExit的类型、VMExit消耗了多少CPU时间,这时就可以使用xentrace这个工具了.
xentrace是在xen源代码中自带的一个工具,在“make tools”编译时就会默认生成,xentrace生成的数据是二进制的格式,人的肉眼不能直接读取,可以使用xentrace_format转换为凡人能够直接读取的信息,xentrace_format解析后的数据信息量一般也比较大,可能还需要自己编写解析工具来提取自己需要的数据.
使用xentrace/xentrace_format来分析HVM的VMExit的情况,可以有如下操作:
- # # start Xen HVM guest before this tracing
- # xentrace -D -e 0x81000 -T 30 trace.data
- # cat trace.data | xentrace_format xen.git/tools/xentrace/formats | ./my-xentrace-analyzer.pl
其中-e 0×81000 是指“TRC_HVM_ENTRYEXIT”这类event的trace信息,包括VMEntry和VMExit,关于其他各种event的代号是多少,可以参考文末的参考文档;-T 30表示trace执行时间为30s.
使用xentrace_format时,需要一个格式文件作为参数,一般可以选择xen源代码中的tools/xentrace/formats这个文件.
另外,这里我还有一个自己的脚本提取自己感兴趣的数据,得到结果示例如下:
- VMExit Count: 1117671
- Type Total TSC TSC Ratio Total Count Count Ratio Avg TSC
- External Interrupt 2427891244 0.17 347544 0.31 6985
- Interrupt window 20988 0.00 10 0.00 2098
- HLT 9750387024 0.66 437459 0.39 22288
- VMCALL 178912 0.00 10 0.00 17891
- CR access 402600 0.00 72 0.00 5591
- I/O Instruction 1041358192 0.07 30747 0.03 33868
- PAUSE 35244752 0.00 8067 0.01 4369 --phpfensi.com
- Virtualized EOI 39250184 0.00 14425 0.01 2720
- EPT violation 44358300 0.00 3179 0.00 13953
- APIC write 1333734836 0.09 276158 0.25 4829
对于各种VMExit类型,可以参考Intel SDM 3C 中的附录 Appendix C “VMX Basic Exit Reasons” 中的介绍.
xen社区中也做了一个解析xentrace数据的工具,叫做xenalyze,没有在xen源代码中,是offline维护着的一个repository,我就使用过一下,对其还不是很熟悉.
xenalyze的源代码可以从http://xenbits.xen.org/ext/xenalyze/下载(使用hg clone命令).
在使用时,注意的是,xenalyze中用到了CPU的频率,需要根据自己CPU实际频率进行修改,否则计算出来每秒钟多少事件这样的信息就不准了,修改 xenalyze.c文件中的“#define DEFAULT_CPU_HZ 2400000000LL”这一行(已经表示2.4GHz了).
Tags: xentrace xentrace_format xenalyze
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)