使用PerfMon计数器监控虚拟机性能
2008-12-30 16:52:05 来源:WEB开发网如果你已经在微软的Hyper-V上运行一些已虚拟化的服务器,那么你可能想得到这些虚拟服务器的性能概况。你也想查看虚拟主机上的虚拟机消耗了多少资源。在物理环境里,完成查看任务包括查看PerfMon里的一些计数器。在本文中,我们将描述如何使用Hyper-V里的PerfMon计数器,以便有效的监控虚拟机的性能。
Hyper-V里的PerfMon计数器
在新服务器里安装Hyper-V,以便在物理主机上运行更多的计算机,这也意味着有更多套的PerfMon计数器应用。同时,Hyper-V的hypervisor驱动这些宿主其中的虚拟机的方式将更改性能测试的方法。如果你计划监视虚拟机的性能,就必须学习如何让Hyper-V的新PerfMon计数器更有效。
一个物理处理器每次只能运行一个指令。每个计数器,不管是物理是还是虚拟的,假定它们随时都有无限制的唯一的访问物理处理器的权限。这意味着Hyper-V的hypervisor的主要角色在调度处理器里,因需要访问虚拟机。单个主机上的多个虚拟机,也意味着不能被hypervisor有效地照顾,需要等待。
虚拟机获得处理器注意的每个时间段非常小,所以看起来这些虚拟机是在同时运行。实际上不是这么回事。举列来说,如果你从宿主在虚拟机里的PerfMon实例的全负荷的虚拟机上查看% Processor Time计数器,可能看见100%利用率。不过如果你同时查看主机本身的计数器,你将发现情况不是这样,利用率相当低。hypervisor的处理器资源调度
使用PerfMon计数器监视控虚拟机
为了获得虚拟机处理器的真实利用率,不是查看Processor% Processor Time这个计数器就能得到的。这个计数器给的是系统上所有活动的总体处理器利用率。对于某个虚拟机,使用计数器Hyper-V Hypervisor Virtual Processor% Guest Run Time ({instanceName})查看处理器利用率。{instanceName}的值等于与该虚拟机相关的虚拟处理器数量的计算机名。这样的话,只显示与该虚拟机运行相关的处理器利用率。如果你想增加与该虚拟机相关的hypervisor处理器开销的数量,使用Hyper-V Hypervisor Virtual Processor% Total Run Time ({instanceName})。
使用新计数器的一个好处是可以每次跨虚拟机决定单个处理器的使用。如果在PerfMon图表中添加多个计数器,每个虚拟机实例一个,就可以识别哪台虚拟机在消耗特定数量的处理器资源。
你可以看见另一套叫做Hyper-V Hypervisor Logical Processor的计数器也可用。然而,Hyper-V将虚拟机配置里所分配的虚拟处理器作为一个整体,逻辑处理器等于系统上的实际处理器数量。实际上,虚拟处理器能运行在任何逻辑处理器上以完成任务。
当作逻辑处理器的计数器与物理处理器不同,这是由于它要考虑每个插座的核心数量以及超线程CPU。因此,拥有多线程的一个双核四插座的计算机有16个逻辑处理器。附加的计数器将再次显示Hyper-V系统上的处理器利用率。先前的计数器通过某个虚拟机显示利用率,第二个计数器则通过单个处理器设备显示利用率。在进行性能监控时,这两个计数器都可以用来查看Hyper-V使用逻辑处理器的情况。
最后一个需要监控的处理器计数器是Hyper-V Logical ProcessorContext Switches/sec。由于任何具体的处理器只能每次运行一个指令,并且Hyper-V的hypervisor的工作就是换出运行指令让其以为虚拟机过程是同时进行的,这个计数器识别虚拟机从任何逻辑处理器换出的比率。
Context Switche的高比率意味着服务器花了大量时间在进程中进行交换,并且可能导致虚拟机超载。可以卸载一个或更多虚拟机提升整体性能。观察这个计数器的最佳方式是与环境里其他计数器进行比较。如果你发现有台服务器与其他服务器相比,计数器比率较高的话,考虑跨可用主机重新平衡虚拟机之间的资源。
更多精彩
赞助商链接