xen cpu调节
时间:2010-11-08 来源:hsiung2007
xen客户机启动的时候,虚拟CPU是由dom0系统决定固定在某个物理 CPU核心上的,这个分配具有随机性,比如我们的机器上有2个双核的处理器,也就是说有4个cpu核心,同时我们分配4个核给我们的虚拟客户机,那么我们 在客户机也看到4个cpu核心的,但是这四个vcpu核心并不是真的对应着物理机器上的四个核,可能四个虚拟cpu对应的是物理cpu中的1~4个核,也 就是说有下面4个可能:
4vcpu=1cpu
4vcpu=2cpu
4vcpu=3cpu
4vcpu=4cpu
4vcpu=1cpu
4vcpu=2cpu
4vcpu=3cpu
4vcpu=4cpu
vcpu指虚拟CPU核心
cpu指物理CPU核心
cpu指物理CPU核心
因此,当我们的虚拟客户机上如果运行的是运算密集型的任务的时候,就必须看看我们vcpu与物理CPU的对应,必要的情况下手工固定VCPU到 物理CPU上,使该虚拟机可以使用所有的物理核心;而如果你正在运行IO密集型任务,那么最好就分配一个超线程或整个核给dom0,并且固定其他的域让他 们不能使用CPU 0。
要查看vcpu于cpu的对应情况,可以使用两种方法:
1、使用xm vcpu-list命令
xm vcpu-list #列出所有域的CPU对应情况
xm vcpu-list domname #列出指定域的CPU对应情况
如果不进行VCPU固定,上面的list结果在最后一列CPU关联关系(cpu affinity)的值应该是any cpu,并且第三第四列就列出了VCPU和其对应的CPU
要查看vcpu于cpu的对应情况,可以使用两种方法:
1、使用xm vcpu-list命令
xm vcpu-list #列出所有域的CPU对应情况
xm vcpu-list domname #列出指定域的CPU对应情况
如果不进行VCPU固定,上面的list结果在最后一列CPU关联关系(cpu affinity)的值应该是any cpu,并且第三第四列就列出了VCPU和其对应的CPU
2、进入virsh,运行vcpuinfo命令
vcpuinfo domname #列出指定域的CPU对应情况
如果不进行VCPU固定,上面的命令的结果中,列表中的CPU关联关系项(CPU Affinity)的值应该全部为y,物理CPU有多少核就有多少个y,而如果有指定的话,只有对应的核为y,其他的为-,比如我们的机器有4个核,那 么:
没有进行VCPU固定: CPU Affinity: yyyy
将VCPU固定在第二个核(编号为1)上: CPU Affinity: -y--
Xen中虚拟客户机的cpu动态调整有两种方法
1、使用xm vcpu-set命令可以设置cpu个数
xm vcpu-set domname vcpu-num
使用xm vcpu-pin命令可以固定vcpu到物理cpu
xm vcpu-pin domname vcpu cpu
vcpu--虚拟cpu的号码(号码可以用cat /proc/cpuinfo命令得到,一般从0~N-1[其中N为CPU核数])
cpu--主机中cpu的号码
2、进入virsh,然后用setvcpus命令进行设置
setvcpus domname vcpu-num
使用vcpupin命令可以将vcpu固定到物理cpu
vcpupin domname vcpu cpu
vcpuinfo domname #列出指定域的CPU对应情况
如果不进行VCPU固定,上面的命令的结果中,列表中的CPU关联关系项(CPU Affinity)的值应该全部为y,物理CPU有多少核就有多少个y,而如果有指定的话,只有对应的核为y,其他的为-,比如我们的机器有4个核,那 么:
没有进行VCPU固定: CPU Affinity: yyyy
将VCPU固定在第二个核(编号为1)上: CPU Affinity: -y--
Xen中虚拟客户机的cpu动态调整有两种方法
1、使用xm vcpu-set命令可以设置cpu个数
xm vcpu-set domname vcpu-num
使用xm vcpu-pin命令可以固定vcpu到物理cpu
xm vcpu-pin domname vcpu cpu
vcpu--虚拟cpu的号码(号码可以用cat /proc/cpuinfo命令得到,一般从0~N-1[其中N为CPU核数])
cpu--主机中cpu的号码
2、进入virsh,然后用setvcpus命令进行设置
setvcpus domname vcpu-num
使用vcpupin命令可以将vcpu固定到物理cpu
vcpupin domname vcpu cpu
两种配置方法可以混用。
由于上面已经提到物理CPU的分配默认是由系统分配的,所有动态地增加CPU个数之后,应该检查CPU分配情况以确保是否满足了自己的需求
###################
用xm sched-credit -d 3 -w 128 -c 200命令来分配cpu资源,-d[--domain],-w[--weight],-c[--cap],在实验过程中,我设置了-w,将domain 0:domain1 =2:1,但是,在实际的运行过程中,domain1占用的cpu资源却不止1/3。原来在没有设定-c的情况下,若domain0没有运行应用程序,需 要极少cpu资源的情况下,domain1就会自动去“偷取”domain0的cpu资源,直到总的cpu资源占用为100%。所以,若要指定某一 domain只能使用总的cpu的一部分时,必须设定-c的值。因为-c的优先级高于-w。
比如,你若指定domain1只能使用总的cpu的 20%那只需要设置-c 20就可以,而权重设置(weight)只有在两边都在运行时cpu的分配比例,但-c不设置还是会存在偷cpu的可能。
此 外,domain 0 是不能通过xm vcpu-pin来设置的,在/etc/xen/xend-config.sxp中,有个变量为dom0-cpus ,如果系統是多处理器的环境SMP(symmetric multiprocessing) ,就可以限制 Dom0 可以使用的 CPU 个数,1 代表 Dom0 只能使用一顆 CPU,以此类推...这么做的好处是可以保留 CPU 資源給 DomU 來使用.
由于上面已经提到物理CPU的分配默认是由系统分配的,所有动态地增加CPU个数之后,应该检查CPU分配情况以确保是否满足了自己的需求
###################
用xm sched-credit -d 3 -w 128 -c 200命令来分配cpu资源,-d[--domain],-w[--weight],-c[--cap],在实验过程中,我设置了-w,将domain 0:domain1 =2:1,但是,在实际的运行过程中,domain1占用的cpu资源却不止1/3。原来在没有设定-c的情况下,若domain0没有运行应用程序,需 要极少cpu资源的情况下,domain1就会自动去“偷取”domain0的cpu资源,直到总的cpu资源占用为100%。所以,若要指定某一 domain只能使用总的cpu的一部分时,必须设定-c的值。因为-c的优先级高于-w。
比如,你若指定domain1只能使用总的cpu的 20%那只需要设置-c 20就可以,而权重设置(weight)只有在两边都在运行时cpu的分配比例,但-c不设置还是会存在偷cpu的可能。
此 外,domain 0 是不能通过xm vcpu-pin来设置的,在/etc/xen/xend-config.sxp中,有个变量为dom0-cpus ,如果系統是多处理器的环境SMP(symmetric multiprocessing) ,就可以限制 Dom0 可以使用的 CPU 个数,1 代表 Dom0 只能使用一顆 CPU,以此类推...这么做的好处是可以保留 CPU 資源給 DomU 來使用.
預設 為 "0" 代表 Dom0 不受限制系統上所有的 CPU 都會使用到.
相关阅读 更多 +