免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3726 | 回复: 2
打印 上一主题 下一主题

XEN cpu 调度问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-02-01 22:27 |只看该作者 |倒序浏览
公司新上了一个8核的cpu,上面用xen虚拟了2个Windows。
但是通过各种配置,还是无法平衡cpu的压力。
大多都压在第一个cpu上。

下面是top的数据
Cpu0  : 20.6%us, 65.7%sy,  0.0%ni, 13.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu1  :  0.0%us,  0.0%sy,  0.0%ni, 96.2%id,  0.0%wa,  0.0%hi,  0.0%si,  3.8%st
Cpu2  :  1.0%us,  0.0%sy,  0.0%ni, 99.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu3  :  0.0%us,  0.0%sy,  0.0%ni, 99.0%id,  0.0%wa,  0.0%hi,  0.0%si,  1.0%st
Cpu4  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu5  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu6  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu7  :  1.0%us,  6.9%sy,  0.0%ni, 91.2%id,  0.0%wa,  0.0%hi,  0.0%si,  1.0%st

已经做了cpu和vcpu的绑定,但是效果不好
Name                              ID VCPUs   CPU State   Time(s) CPU Affinity
Domain2                         28     0     6   r--    2337.3 4-7
Domain2                         28     1     4   r--    2400.6 4-7
Domain2                         28     2     5   r--    2312.0 4-7

导致Windows断网等各种怪问题。

论坛徽章:
0
2 [报告]
发表于 2010-02-02 21:16 |只看该作者
CPU管理

  与内存一样,你也可以管理虚拟机的CPU分配。如果虚拟机使用的是准虚拟化,CPU的分配也可以动态更改。为虚拟机分配CPU时,不一定要根据服务器中的物理CPU数目来分。如果你愿意,是可以这么做。不过,这样做是绝对优化不了性能的。如果将虚拟机与指定的物理CPU绑定,会帮助你大大地提高虚拟机性能。除此之外,还可以调整CPU的运行队列(run queue),使某台虚拟机在CPU中具有更高的优先级。

  所有可运行的虚拟CPU(VCPU)都是由物理CPU中的本地运行队列管理的。这个队列是按优先级进行排序的,队列中的每个VCPU平分CPU资源。VCPU的优先级状态有两种值:over和under。Over表示它占用的CPU资源超过了资源平分值,under表示低于这个平分值。如果VCPU的当前状态为under,调度程序下次则会优先服务该VCPU。如果调度程序发现在其CPU上没有虚拟机为under状态,则会看其它CPU中是否有VCPU状态为under,如果发现,则立即服务该VCPU。通过这种方式,所有CPU都会平均分配CPU资源。

  通过设置weight和cap参数值,管理员可以管理CPU的优先级。Weight参数用于分配CPU cycle,是一个相对值。一个weight为128的VCPU比一个weight为64的VCPU获得的CPU cycle多一倍。因此,利用这个参数可以决定哪个VCPU获得更多,哪个获得更少。第二个设置CPU的参数是cap,它设置的是domain获得的CPU cycle百分数,是一个绝对值。如果设置为100,就表示那个VCPU会100%地占用物理CPU的可用cycle。如果cap为50,则表示该VCPU占用的CPU cycle绝不会超过总量的一半。

  在如下命令示例中, id为3的虚拟机weight为128,允许使用两个物理CPU的所有CPU cycle:

  xm sched-credit -d 3 -w 128 -c 200

  对于虚拟CPU,还要做的一个重要工作就是CPU分配。默认情况下,虚拟CPU与物理CPU是没有固定联系的。要提高性能,就需要为它们建立一个这样的联系,这个工作很简单易行。为虚拟CPU和物理CPU建立“联系”的主要好处是可以防止虚拟CPU到处游荡。如果没有“联系”,调度程序会为虚拟CPU选择一个物理CPU。当某个物理CPU处于繁忙状态时,虚拟CPU就会被转移,由另一个物理CPU服务。这个工作对性能的影响是很大的。因此,将虚拟CPU与物理CPU绑定是个不错的办法。
  
  绑定虚拟CPU时,首先利用xm list命令查看当前配置。然后,在你要查看CPU详细信息的domain中使用xm vcpu-list命令,命令输出结果如下:

  lin:~ # xm vcpu-list 2



  这个命令显示,ID 2 domain当前使用了一个CPU(ID 0),该CPU当前在物理CPU 0。为了确认它的状态,可以使用如下命令:
  
  xm vcpu-pin 2 0 1

  如果你再使用xm vcpu-list命令,你会看见CPU Affinity由原来的“any cpu”变为了CPU 1。


文章出处:DIY部落(http://www.diybl.com/course/6_sy ... 0090314/161390.html)

论坛徽章:
0
3 [报告]
发表于 2010-02-03 22:52 |只看该作者
一些系统的中断一般压在第一个cpu的多
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP