当前位置: 首页 > Java > 正文

某应用在压测一台物理机上的多台虚拟机时不能保持线性增长的案例

关键字:
1 星2 星3 星4 星5 星 (暂无评分)
Loading ... Loading ...
baidu_share

现象描述:

一台16 core(HT)的物理机上,创建了8个虚拟机,每个虚拟机独占两个core,每个虚拟机里部署的都是同样的应用,按道理来说,在应用没有瓶颈的情况下,每增加一台虚拟机,tps应该可以保持线性增长,不过在压测的时候发现,在增加到第四台的时候(每次4台挑选的都是不同的机器),有些时候能线性增长,有些时候不能。

解决过程:
1、经过手工调整其中某台虚拟机的cpu,发现在12/13 cpu加入时,整个tps就会下降,于是猜想莫非和这两个核还有关系;

2、猜测是和中断处理有关系,发现core 12处理的中断确实比较其他的多一些,于是把irqbalance关了,调整了中断的绑定,还是一样的现象;

3、看了下四台虚拟机绑定的cpu的分布状况,发现12/13刚好和其中一台虚拟机绑定的4/5是同样的两个core,4/12其实是同一个core HT的,5/13是另一个core HT的,而这个应用是很耗cpu的,单压某个虚拟机cpu us就可以到90%左右,所以如果压测的4台如果有CPU刚好是同一个Core HT的,性能自然是上不去的。

总结:
和各种文章中讲的一样,CPU HT只有在理论的某些场景能达到2个真实core的性能,但多数情况都达不到,貌似很多场景的经验值是2 core(HT) = 1.3 Core。

本文固定链接: http://www.chepoo.com/application-cause-virtual-host-linear-growth.html | IT技术精华网

某应用在压测一台物理机上的多台虚拟机时不能保持线性增长的案例:等您坐沙发呢!

发表评论