Xen上的CPU性能监视系统*

2012-11-23 04:18:16
舰船电子工程 2012年5期
关键词:内存利用率解析

(武汉数字工程研究所 武汉 430074)

1 引言

近年来,虚拟机的应用越来越广泛。利用虚拟化技术[1~2],单CPU可以模拟多CPU并行,一个平台可以同时运行多个操作系统,并且应用程序可以在相互独立的空间内运行而互不影响,从而降低了IT 基础结构总成本,显著提高计算机的工作效率[3]。在不断增加的虚拟化技术列表[4]中,属于虚拟硬件模式的Xen[5~6]成为最引人注目的技术之一。

目前,Xen虚拟机性能监视工具主要包括Xentop,Xenmon[7]和Xenman。其中,Xentop清晰明了地显示出当前系统运行状态。但如果Guest Domain有I/O 操作时,Xentop不能正确计算Domain0的CPU 利用率,且没有提供监测数据的记录功能。Xenmon统计的CPU 信息不够全面,不包含虚拟CPU 的性能参数。Xenman:是一款Xen Hypervisor的管理工具,其CPU 性能监视能力有限,不能统计虚拟CPU 的利用率及时间片等基本数据。

针对上述监视工具的不足,本文分析了CPU 利用率评估算法,设计实现了CPU 性能监视系统XCPUMon(Xen CPU Monitor),能准确、全面的获取各个Domain的CPU信息。

2 CPU 性能监视系统概述

Xen上可以运行多个Domain,其中Domain0 是随同Xen一起启动的特权Domain,拥有设备驱动并负责管理Domain1~N(统称DomainU)的运行。另外,Xen 将物理CPU(Physical CPU,PCPU)虚拟成了多个虚拟CPU(Virtual CPU,VCPU),并通过Domain0的管理将这些VCPU分配给了DomainU 进行使用。因此,XCPUMon 工作在Domain0上,从Domain0 上提取各个Domain(包括Domain0和DomainU)上各种CPU(包括PCPU 和VCPU)的使用信息,如图1所示。

图1 XCPUMon结构图

CPU 性能监视系统(XCPUMon)包括信息采集模块、信息解析模块、实时信息模块、信息记录模块和用户接口模块。

1)用户接口模块:系统通过用户接口模块获取控制信息,包括采样频率、采样信息种类、何时开始对实时信息进行统计等,将这些信息传递给实时信息模块和信息记录模块,同时显示实时信息模块评估计算出的结果信息。

2)信息采集模块在Xen上监测各种事件,采集所需要的CPU 相关信息,形成原始数据,传递给信息解析模块。

3)信息解析模块从原始数据中解析出各个Domain的状态、各个Domain上各种CPU 的时间片使用情况和I/O操作时内存页交换的次数等信息,传递给实时信息模块。

4)实时信息模块根据用户接口模块给出的控制信息,实时地将信息解析模块解析出来的信息,转化为用户所需要的信息,包括:1)当前各个Domain的状态;2)当前各个Domain的各个PCPU 的使用时间、利用率、阻塞时间等信息;3)当前各个Domain的各个VCPU 的使用时间、利用率等信息;4)从开机到现在各个Domain占有的CPU 时间片总数。并将这些信息传递给用户接口模块和信息记录模块。

5)信息记录模块则根据用户接口模块给出的控制信息,对实时信息模块所产生的数据进行统计、记录,形成历史统计信息。

3 CPU 利用率评估

尽管信息解析模块已经解析出了各个Domain的状态信息和各种CPU 的时间片使用情况,但CPU 的利用率还未计算出来。

Domain上CPU 利用率计算的基本原理是通过采样的方法,获取一段时间Tinterval里,该Domain 所占有的某种CPU 的时间Tcpu_onsume,然后通过如下公式即可获得实时的CPU 利用率信息:

由于通过信息解析模块获得CPU 的使用时间片累计总和,所以两次采样所得到的使用时间片之差-,即是采样点i到i+1之间所使用的CPU 时间片Tcpu_consume。至于Tinterval,可以使用定时技术,每隔一段时间会自动进行一次采样,定时器的间隔时间即为Tinterval。但这样得到的结果并不十分精确,因为针对某一CPU 的连续两次采样的时间间隔并不完全等于定时器的时间间隔,而是有一定的误差,所以在XCPUMon中并没有直接使用定时器的时间间隔,而是分别记录下了每次采样时的准确时间点,然后用两次采样时间点之差来作为Tinterval。所以CPU 的利用率计算方法如式(2)所示:

但是这样的计算方法,对于Guest Domain有I/O 操作执行时,不可以准确的得出CPU 的利用率。由Xen 的“Page-flipping”技术[8]的实施,在 Driver Domain(Domain0)中包含I/O 数据的内存页就会被替换成guest操作系统提供的一个未使用的页。而这些内存页的替换造成了新的系统开销。如I/O 数据从或向Guest Domain传输的过程就造成了新的系统开销。假设当前系统中有Domain0,Domain1~DomainN (统称DomainU),而其中Domain0作为Driver Domain。观察在Domain0处于执行期间Ts时间内与其他各个Domain之间的内存页交换总次数记为Ns,则一次内存页的交换产生的COSTs=Ts/Ns,同时通过信息的捕获可知DomainU 与Domain0之间的内存页交换次数为NdomU,则Domain0在实际的执行时间中应属于DomainU 的内存页交换时间为TdomU=NdomU*COSTs。

所以在计算Domain0的利用率时公式应为

而在计算DomainU 的利用率时公式应为

这样,当Guest Domain有I/O操作执行(即NdomU!=0时),各个Domain的CPU 的使用率也可以得到正确的显示。

4 测试与分析

测试环境如图2所示。

图2 测试环境

当前物理主机上运行了三个Domain,其ID 分别是Domain0、Domain1 和Domain2。CPU 性能监视软件运行在Domain0上。

4.1 DomainU 中无I/O 操作

当Domain1与Domain2都没有运行任何的应用程序,处于阻塞状态时,其CPU 利用率基本为0。观察Domain0的监视结果,如图3所示。

图3 XCPUMon Domain0的统计结果

由于Domain0是一个比较特殊的Domain,它是开机时就直接开启的一个虚拟机,同时其中还包含着一些设备驱动程序,所以Domain0 是一直处于运行状态,故其占用的CPU 一直大于0。在测试过程中,加入如下操作:终端中的操作、截取屏幕显示、窗口的切换等,造成突然CPU 的数据处理,如3中所示,在x轴约40处,即第一个CPU 利用率峰值是由于工作区的转换引起的。由图3可以得到当前CPU的性能数据分别为:PCPU0的利用率为3.52%,PCPU1的利用率为3.05%,VCPU0 的利用率为3.11%,VCPU1的利用率为3.45%。可以看出PCPU 利用率之和(6.57%)基本等于VCPU利用率之和(6.56%),说 明XCPUMon的监测数据是合理的。

表1 Domain0的统计结果

为了验证CPU 利用率的准确性,在Domain0上同时运行了Xentop与Xenmon,其结果如表1所示。Xentop显示的当前Domain0 的CPU 利用率情况为6.7%,与XCPUMon得到的6.6%的数据基本吻合。而Xemon会分页显示PCPU0的利用率为3.54%,PCPU1 的利用率为3.01%。与XCPUMon的PCPU0为3.52%,PCPU1为3.05%的数据基本一致。

综上可知,当Domain1 与Domain2中没有I/O 操作时,XCPUMon的数据测量是比较准确的。

4.2 DomainU 中有I/O 操作

当Domain2中未运行任何应用程序,Domain1 上运行一个间隔5s打印一次屏幕的测试程序时,XCPUMon 与Xentop的运行结果数据如表2所示。

表2 CPU 利用率的统计结果

Xentop的监视结果表明:当前Domain0 的CPU 利用率高达142.1%,这是由于在I/O 操作密集的应用程序运行时,Xentop统计的CPU 的利用率包含两个部分:另一部分为有I/O 应用程序运行的Domain1的CPU 利用率,一部分为Domain0在I/O 进程执行的过程中使用“Page-flipping”技术所产生的CPU 利用率。

而XCPUMon 显示Domain0 的PCPU0 利用率为3.95%,PCPU1 的利用率为3.52%,VCPU0 的利用率为3.65%,VCPU1的利用率为3.81%,总的虚拟机CPU 利用率为7.46%,远远低于Xentop中的142.1%,而Domain1中的CPU 利用率为79.51%,远远高于Xentop中Domain1的0.1%,这是由于Domain1中开始循环执行Print命令造成的。可见,通过对各个Domain的I/O 操作时的系统开销的加减,即使当有DomainU 中执行I/O 时,XCPUMon也可以比较准确的显示出各个Domain的CPU 利用率。

5 结语

我们下一步的工作:对采样间隔时间的设置。本系统采用定期采样的数据统计方法,其采样频率对统计出的CPU 性能数据会有一定的影响。在保证系统运行效率高,开销小的情况下,有效利用实时捕捉数据的统计方式来获取CPU 性能数据,减小CPU 性能监视软件对CPU 性能数据的影响。

[1]R.Goldberg,Survey of Virtual Machine Research[J].IEEE Computer,June,1974:34-45.

[2]P.Chen,B.Noble,When Virtual is Better Than Real[Z].HOT-OS,April,2001.

[3]Mendel Rosenblum,Tal Garfinkel,Virtual Machine Monitors:Current Technology and Future Trends[J].IEEE Computer,2005,5:4-10.

[4]J.E.Smith,Ravi Nair,An Overview of Virtual Machine Architecture[M].Morgan Kaufmann Publisher,2004:1-20.

[5]PaulBarham,BorisDragovic,KeirFraser,et al.Xen and the art of virtualization.Proceedings of the nineteenth ACM symposium on Operating Systems Principles,2003:1-20.

[6]D.Gupta and A.Vahdat,“Comparasion of the three CPU schedulers in Xen”,ACM SIGMETRICS Performance Evaluation Review,2007:15-31.

[7]D.Gupta,R.Gardner,and L.Cherkasovah,“Xenmon:Qos monitoring and performance profiling tool”,Technical Report HPL-2005-187,HP Labs,2005.

[8]L.Cherkasova and R.Gardner,“Measuring CPU Overhead for I/O Processing in the Xen Virtual Machine Monitor”,Proceedings of the Annual Technical Usenix Conference,2005.

[9]Nieh,O.Leonard,“Examining VMWare”,Dr.Dobb’s Journal,August,2000.

[10]A.Whitaker,M.Shaw,and S.D.Gribble,“Denali:Lightweight virtual machines for distributed and networked applications,”Technical Report 02-02-01,2002.

猜你喜欢
内存利用率解析
三角函数解析式中ω的几种求法
“春夏秋冬”的内存
当代陕西(2019年13期)2019-08-20 03:54:22
化肥利用率稳步增长
做好农村土地流转 提高土地利用率
睡梦解析仪
浅议如何提高涉烟信息的利用率
消费导刊(2017年24期)2018-01-31 01:29:29
电竞初解析
商周刊(2017年12期)2017-06-22 12:02:01
相机解析
板材利用率提高之研究
基于内存的地理信息访问技术