首先,我们先来看看XenServer中Socket、Core、以及超线程后的核心之间在XenServer中CPU的排序关系,请参考下表:
CPU排序(以2路4核具有超线程功能CPU示范) | |||||||||||||||
Socket1 | Socket2 | ||||||||||||||
Core1 | Core2 | Core3 | Core4 | Core1 | Core2 | Core3 | Core4 | ||||||||
HT1 | HT2 | HT1 | HT2 | HT1 | HT2 | HT1 | HT2 | HT1 | HT2 | HT1 | HT2 | HT1 | HT2 | HT1 | HT2 |
#0 | #1 | #2 | #3 | #4 | #5 | #6 | #7 | #8 | #9 | #10 | #11 | #12 | #13 | #14 | #15 |
上表反应了XenServer中CPU的排序规则。
1、指定特定的VM使用指定的物理CPU可以使用命令:
[root@xenserver ~]# xe vm-param-set uuid=<VM UUID> VCPUs-params:mask=1,3,7
该命令用于设置特定UUID的VM使用物理CPU排序中的第1,3,7个CPU
2、设置VM中CPU的权重
[root@xenserver ~]# xe vm-param-set uuid=<VM UUID> VCPUs-params:weight=512
该命令设置vCPU的权重为512,默认dom0权重为256,权重决定VM在CPU时间片中所占比例,权重范围从0到65535
3、设置VM最大CPU使用率
[root@xenserver ~]# xe vm-param-set uuid=<VM UUID> VCPUs-params:cap=80
该命令用户设置VM最大可以使用的CPU为单个CPU的%80,设置为100,则为1个物理CPU的,设置为80,则只能使用一个物理CPU的80%性能,设置为400,则表示最大可以使用4个物理CPU。默认为0,不限制。
你好,我想问下XenServer上面的一台win7分配了4vcpu,怎么可以使这4个vcpu耗用vcpu资源平均
默认情况下,XS分配的所有vCPU的权重(Weight)是一样的,也就是每个vCPU可以实际获得的物理CPU资源都是相同的。
而如果一个VM有4vCPU,那么理论上来说,VM内部看到4个vCPU就像看到的是4个物理的CPU或者CPU Core。
但是如果要在VM内部平均工作负载到4个CPU,这个是由操作系统控制的,有些程序是单线程的,只能使用一个CPU,如果OS上只有这一个程序在运行的话,就会看到4个CPU中,一个CPU使用率可能已经到100%,其他三个的负载很低。这个是系统的设计,而不是由XS来控制的。
如果要实现,那么只能由操作系统(WIN7)来控制实现。
恩 但是应用程序是支持多核心的 我在用户物理PC上面打开此程序看到的CPU调用分配的比较均匀
物理PC上所有CPU之间差多少,在多少百分比波动?VM里面每个CPU使用率又是多少?
如果在VM中看到只有两个CPU使用率较高,另外两个较低,那么这个也是由于WIN7对CPU的支持决定的,默认情况下Windows 7最多支持两个物理CPU,所以即使分配了4个,但是WIN7实际可以使用的也只有2个。
这个是由XenServer特性决定的,默认情况下XenServer分配的vcpu对VM来说都是一个socket,而不是一个core,所以,可以参考另外一篇文章修改CPU设置,然后再进行测试。
XenServer中Windows 7与XP多vCPU支持配置:http://www.xenme.com/1223
恩已经修改过了
在一个资源池里,VM漂移到其它的服务器上会怎样?