Hyper-V性能监控:

物理CPU: \Hyper-V Hypervisor Logical Processor(*)\%Total Run Time 

%Total Run Time :处理器处理来宾代码和虚拟机监控程序代码所花费时间的百分比

%Total Run Time = %Guest Run Time + %Hypervisor Run Time

 

虚拟CPU: \Hyper-V Hypervisor Virtual Processor(*)\%Guest Run Time

 

根分区CPU: \Hyper-V Hypervisor Root Virtual Processor(_Total)\%Total Run Time  (注:宿主机本身其实也是一台虚机,该虚机的配置=宿主机本身配置)

 

Hypervisor\Logical Processors:8 宿主机所有CPU核心总数量

Hypervisor\Virtual Processors:20=4C*3+8 > 8(3台运行中VM,每个VM 4vC,宿主8vC)

Hypervisor\Partitions :4=3+1 (3运行中VM+1根分区)

 

Hyper-V Hypervisor Logical Processor(_Total)\% Total Run Time:物理CPU总体使用率,可用
Hyper-V Hypervisor Logical Processor(_Total)\% Guest Run Time
Hyper-V Hypervisor Logical Processor(_Total)\% Hypervisor Run Time

 

单台VM CPU(每个核心)利用率:(该值与VM中任务管理器中看到的CPU利用率并不是一回事,不能直接使用该值来衡量VM CPU使用率,实际查看还是使用vM中的任务管理器)
Hyper-V Hypervisor Virtual Processor(2003_1:Hv VP 0)\来宾运行时间百分比
Hyper-V Hypervisor Virtual Processor(2003_1:Hv VP 1)\来宾运行时间百分比
Hyper-V Hypervisor Virtual Processor(2003_1:Hv VP 2)\来宾运行时间百分比
Hyper-V Hypervisor Virtual Processor(2003_1:Hv VP 3)\来宾运行时间百分比

Hyper-V Hypervisor Virtual Processor(_Total)\来宾运行时间百分比 (与vCPU数量有关系,不能直接使用该值来衡量实际VM的CPU利用率)
Hyper-V Hypervisor Virtual Processor(_Total)\虚拟机监控程序运行时间百分比
Hyper-V Hypervisor Virtual Processor(_Total)\总运行时间百分比

 

vCPU/pCPU:
write-host (@(gwmi -ns root\virtualization MSVM_Processor).count / (@(gwmi Win32_Processor) | measure -p NumberOfLogicalProcessors -sum).Sum) "virtual processor(s) per logical processor" -f yellow

 

Hyper-V性能监控_CPU_CPU性能监控

上图的最下面黑色区域代表硬件层,包含了硬件信息的描述,中间的Hypervisor层区域,Total代表看到物理CPU的总使用率;Guest代表包括了父分区以及其他正在运行的VM操作系统的总使用率;HvOh表示Hypervisor Overhead,这里的HvOh表示Hypervisor层自己的开销,它的开销数据代表着父分区和其他VM的开销。8Logical CPU,20Virtual CPU(4*3+8)

54%*(4/8)+57%*(4/8)+53%*(4/8)+5%*(8/8)= 87%(所有Guest OS<包括父分区>开销,,数值时刻处于动态,约等于90%)

56%*12/8  + 5%*(8/8)=89% ,约等于90%

当根分区或者子分区CPU压力增大时,Logical Processor\% Total Run Time都会增高。

如果vCPU个数(12,不包含根分区)大于LogicalCPU个数(8)时:第一台VM的CPU利用率达到80%,第二台VM的CPU利用率达到80%,则当第三台VM的CPU利用率逐渐增大时,会导致对物理CPU的争抢,三台VM的CPU利用率都会降低,最后达到一个均衡,如上图

 

物理CPU和虚拟CPU不能划等号,没有直接关系:

 测试:

宿主8C,VM01:8C,VM02:8C

测试1:

VM01和VM02同时开机,VM01的Cpu利用率达到80%(任务管理器),VM01:Hv VP 0:80%,Hyper-V Hypervisor Virtual Processor(_Total)\总运行时间百分比:50%。关闭VM02后,Hyper-V Hypervisor Virtual Processor(_Total)\总运行时间百分比:100%。

可得知Hyper-V Hypervisor Virtual Processor(_Total)\总运行时间百分比 与vCPU总数量有关系,vCPU数量越多(只算运行中的VM),该值越低

测试2:

VM01开机,VM02关机,VM01的Cpu利用率达到80%(任务管理器),VM01:Hv VP 0=80%,宿主CPU:80%。

启动VM02后,VM02的CPU达到80%(任务管理器)的时候,VM01:Hv VP 0=45%,  VM02:Hv VP 0=45%,VM02的CPU达到80%(任务管理器),宿主CPU:99%

总结:vCPU数量越多,宿主CPU利用率越高。当物理CPU利用率已达到100%时,再启动新的VM,则VM之间会争夺CPU资源,导致VM性能下降(此时 Hyper-V Hypervisor Virtual Processor(VM01:Hv VP 0)\总运行时间百分比 会下降,最终每台VM之间比例基本持平)。虽然VM01和VM02分别分配了8vCPU,但实际上只是抢到了4LCPU的资源,相当于4vCPU

测试3:

宿主共计48个logicalCPU,4个NUMA,每个NUMA 12个logicalCPU
使用计数器 HV VM Vid Partition\perferred NUMA Node Index(VM01)得知VM01位于NUMA节点1(LogicalCPU:12-23,共计12个)
VM2008:
分配给VM2008 4vCPU, CPU达到80%, 使用了NUMA1节点的8 个LogicalCPU
分配给VM2008 8vCPU, CPU达到80%, 使用了NUMA1节点的12 个LogicalCPU
分配给VM2008 12vCPU,CPU达到80%, 使用了NUMA1节点的12 个LogicalCPU
分配给VM2008 16vCPU(此时该VM需要使用两个NUMA节点LogicalCPU资源),当CPU达到80%, 使用了NUMA1和3节点的24 个LogicalCPU

VM2003:
分配给VM2003 1vCPU,CPU达到80%,使用了当前NUMA节点上的4个LogicalCPU
分配给VM2003 2vCPU,CPU达到80%,使用了当前NUMA节点上的4个LogicalCPU
分配给VM2003 4vCPU,CPU达到80%,使用了当前NUMA节点上的8个LogicalCPU
分配给VM2003 8vCPU,CPU达到80%,使用了当前NUMA节点上的8个LogicalCPU

总结:VM如果只位于某一个NUMA节点上,则不会使用其他NUMA节点上的资源,vCPU与logicalCPU并没有直接对应关系,4vC就会调用到8logicalCPU的资源

=======================================================

 

The “Hyper-V Hypervisor Virtual Processor” and “Hyper-V Hypervisor Root Virtual Processor” counter sets have the same counters.  The only difference between the two is the ““Hyper-V Hypervisor Root Virtual Processor” contains counters for only the Root Virtual Processors (VP’s) whereas “Hyper-V Hypervisor Virtual Processor”  has counter for all other partitions.

partition=分区=虚机,一个分区就是一个虚机,根分区就是宿主机

参考:http://blogs.msdn.com/b/tvoellm/archive/2008/05/12/hyper-v-performance-counters-part-four-of-many-hyper-v-hypervisor-virtual-processor-and-hyper-v-hypervisor-root-virtual-processor-counter-set.aspx

 

 

 

与在 Hyper-V 上运行来宾操作系统相关的成本

与所有服务器虚拟化软件一样,运行必需的虚拟化代码以支持在 Hyper-V 上运行的来宾操作系统都会产生一定的开销。以下各节总结了在 Hyper-V 虚拟机上运行来宾操作系统时所产生的特定资源开销:

CPU 开销

在 Hyper-V 虚拟机中运行来宾操作系统时所产生的 CPU 开销的范围是 9% 到 12%。例如,在 Hyper-V 虚拟机中运行的来宾操作系统通常有 88–91% 的空闲 CPU 资源可用于在物理硬件上运行的对等操作系统。

内存开销

在 Hyper-V 虚拟机中运行来宾操作系统时所产生的内存开销大约为 300 MB(用于虚拟机监控程序),加上第一次为每台虚拟机分配 1 GB RAM 时产生的 32 MB 内存开销,再加上以后每次为每台虚拟机分配 1 GB RAM 时产生的 8 MB 内存开销。

网络开销

与在 Hyper-V 虚拟机中运行来宾操作系统直接相关的网络延迟大约不到一毫秒 (ms),而且来宾操作系统维护的网络输出队列长度通常不超过 1。

磁盘开销

在 Hyper-V 中使用直通磁盘功能时,与在 Hyper-V 虚拟机中运行来宾操作系统相关联的磁盘 I/O 开销的范围是 6% 到 8%。例如,在 Hyper-V 上运行的来宾操作系统通常有 92–94% 的空闲磁盘 I/O 可用于在物理硬件上运行的对等操作系统。