linux虚拟机cpu一分钟内负载,虚拟机性能调优-CPU篇

CPU优化分析主要是两个阶段,虚拟化层和宿主机层。

前期主要怀疑是虚拟化层的影响,主要的怀疑点包括:

1.超线程的影响

关闭超线程之后单核性能有略微提升,但多核性能反而更差,排除超线程的因素

2.NUMA架构和核迁移的影响

按理说如果不按照NUMA的架构来做核绑定,由于缓存和迁移的影响,或造成较大的性能损失,通过绑定物理核测试发现并没有大的提升,排除该因素

3.CPU模式的影响,包括指令集和缓存

分析与vmware的差异,发现我们的指令集和cpu缓存与真实物理机不一致,通过cpu-passthrough和替换qemu版本将host cpu的特性透传仍然无法提升cpu性能

排除了虚拟化层的影响,后来测试发现宿主机本身才是cpu性能的关键,部署了一个redhat对比环境发现宿主机跑分和redhat未经调优过系统差距很大。分析了内核配置参数差异(sysctl)和编译参数差异,没有发现可疑的地方。决定内核行为的并且用户可以干预的只剩下启动参数了,对比发现系统关闭了intel的cstate功能。

写了一个简单的死循环测试对比两个系统的表现,发现redhat内核有负载的cpu频率可以提高到3.1GHz,而当前host机只能达到2.6GHz,即使调整了cpufreq的模式为performance也无法让cpu达到更高的主频。所以基本可以确认是这个参数导致的。打开系统中cstate功能,跑speccpu可以达到和redhat类似的性能分数。

解决措施:目前发现cstate功能和调频功能有耦合,需要使能cstate来解决cpu性能问题,去掉启动参数intel_idle.max_cstate=0 idle=poll

intel cpu调频和节能相关的几个机制简介:

cpufreq:提供频率调节功能,可以让cpu根据不同负载使用不同的频率,达到性能和功耗的动态可调整,服务器一般配置为performance,个人pc可以配置为ondemand或者powersave模式

cstate:cpu深度睡眠节能模式,根据cpu睡眠器件,定义了多种睡眠状态,提供不同程度的节能选择,睡眠模式越高,唤醒代价越大。

pstate:通过调整cpu的电压使cpu工作在不同的频率,调频的一种机制

turbo boost:睿频技术,可以使cpu工作在高于额定主频模式来提升性能。

https://haypo.github.io/intel-cpus.html

https://software.intel.com/en-us/articles/power-management-states-p-states-c-states-and-package-c-states

http://xenserver.org/partners/19-dev-help/138-xs-dev-perf-turbo.html

本文来自网易实践者社区,经作者赵建明授权发布。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值