xen虚拟机cpu负载过高性能问题
2012-05-22 15:42:25 来源:WEB开发网 背景:
在Xen环境下,内存与CPU分配是可以动态改变的。通过动态更改内存与CPU分配,可以达到优化虚拟机性能的目的。
通常情况下,我们的虚拟机分配物理cpu的资源为自动分配的。当在一个物理机器上面分配多个虚拟机,并且虚拟机的cpu总和超过实际物理机器的cpu数量时,并且各个虚拟机在高负载的情况下,高负载的虚拟机会调用其他虚拟机器的资源
这次发现的问题是我们公司某系统新上线了三台虚机服务器,上线后发现,在流量是平均分配的前提下,新上的机器的负载比老机器高,新上的机器负载在8左右,而老机器的负载在4左右,查询了机器的配置和参数设置,新老机器都一样。后来通过iostat指令,发现新机票的steal值非常高,大于在40左右,而老机器的steal只有0.1左右。经与老大咨询,steal的值高会代表实体机的CPU负载高。后经由老大发现,新上线的三台虚拟机在一台实体机上,每个虚机分配了四个CPU,而实体机是个8CPU的服务器,导致了三个虚机之间征用CPU。(cpu要打开超线程!!!)
检查方法
1,检查系统状态
# iostat 1
avg-cpu: %user %nice %system %iowait %steal %idle
61.58 0.00 22.66 0.00 13.30 2.46
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
avg-cpu: %user %nice %system %iowait %steal %idle
58.77 0.00 23.70 0.00 17.54 0.00
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
xvda 8.49 0.00 520.75 0 552
xvda1 0.00 0.00 0.00 0 0
从这里我们可以看到 %steal 的值变化比较多,也就说明存在虚拟加之间在争用CPU的资源。
2. 检查各个虚拟机分配的CPU资源是否和物理机器的CPU资源一致。
解决方法
1. 如发现虚拟机的cpu资源(数量)大于物理机器的CPU资源。检查物理机器是否已经打开超线程,如果没有打开,需要打开。
2. 重启虚拟机后,检查资源是否还是解决。如果发现%steal 值恢复正常。问题解决。
更多精彩
赞助商链接