Xen中绑定CPU

在最新Xen4.2中,对CPU的调度默认是基于Credit的调度算法,其效率还是不错的;不过,为了获得更好的CPU性能,我们有时还是需要将guest的vCPU绑定到固定的pCPU上去。在本文最后第2个链接中,IBM的文档提到在以前的Xen,是否绑定vCPU可能会导致2-3倍的性能差异;今后我有空时也考虑做下简单的关于vCPU是否绑定的性能对比。
本文主要说明,在Xen4.2中如何绑定dom0和guest的CPU。思路是:先限制dom0的vCPU数为2,然后绑定dom0的vCPU到固定的2个pCPU上;启动设置有4个vCPU的guest,将guest的vCPU绑定到固定的4个pCPU上。当然不要绑定geust的vCPU到和dom0同样的pCPU上,另外,为了获得更好的性能,最好将guest的多个vCPU都尽可能地绑定到同一个CPU的Node(Socket)上。

1. Dom0的vCPU个数设置和绑定:
对与dom0的vCPU个数,可以有两种方法来设置:
1.1 在grub中Xen启动行上添加dom0_max_vcpus=N参数,gurb.conf中的配置dom0仅使用2个vCPU的实例如下:

1.2 在dom0启动后,使用"xl vcpu-set $dom-ID N"命令来动态地设置

可以看出来,Dom0中的vCPU数量已经被设置为2了(这vcpu-list里面,"Domain-0 0 2 - --p 36.3 any cpu"这样的行没有调度到任何pCPU是没有意义的)。

对于dom0的vCPU绑定,使用"xl vcpu-set $dom-ID $Nvcpu $Npcpu"命令来实现虚拟CPU到物理CPU的绑定。

可以看到,经过绑定之后,dom0的0/1vCPU分别被绑定到,物理CPU的0/1之上(如:CPU Affinity一列所示)。

2. 设置和绑定guest的vCPU:
2.1 创建Guest时绑定:在guest的config文件中,写上如下的配置,则启动包含4个vCPU的guest,且其中四个CPU分别绑定到2/3/4/5号pCPU上。
关于hvm guest的配置文件个,请参考我前面一篇文章:Xen HVM guest配置

guest启动后,查看vCPU的情况,其操作过程如下:

2.2 guest创建后动态地用'xl vcpu-pin'命令来绑定vCPU到pCPU上。
在创建guest时,只是启动4个vCPU而不绑定(即没有“cpus = ["2", "3", "4", "5"]”这个配置)。
具体绑定vCPU的过程如下:

最后我们可以看到dom 4上的4个vCPU分别绑定到了2~5号pCPU上了。

延展阅读:
1.关于Xen的基于Credit的CPU调度器:http://wiki.xen.org/wiki/Credit_Scheduler
2.http://publib.boulder.ibm.com/infocenter/lnxinfo/v3r0m0/index.jsp?topic=%2Fliaai%2Fxen%2Frhel%2Fliaaixenrfirst.htm
3.在本问写作之时,在xen-unstable tree上有个bug,命令'xl vcpu-set'对guest失效,所以前面我没有对guest用这个命令。详情,请见我们报的一个bug:
http://bugzilla.xen.org/bugzilla/show_bug.cgi?id=1822

master

Stay hungry, stay foolish.

One Comment

发表评论

邮箱地址不会被公开。 必填项已用*标注

*