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

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

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

  1. Java虚拟机学习总结(4)—— JVM 性能调优常用参数详解

    前言 在JVM性能调优时有三个组件: 堆大小调整(内存最够大的话,尽量搞大点) 垃圾收集器调整 JIT 编译器(比较深,需要掌握源码才能更好的优化更加底层) 大多数调优选项都与调整堆大小和为您的情况选 ...

  2. linux mysql数据库优化_MySQL_Linux下MySQL数据库性能调优方法,以下的环境具备一定的代表性 - phpStudy...

    Linux下MySQL数据库性能调优方法 以下的环境具备一定的代表性,可以说是中小企业一般配置和工作环境.希望通过本文能让大家理解Linux下MySQL数据库性能调优方法. 硬件准备环境: 硬盘: 1 ...

  3. 深入理解JVM虚拟机14:JVM性能调优的6大步骤,及关键调优参数详解

    JVM内存调优 对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数. 1.Full GC 会对整个堆进行整理,包括Young.Tenured和Perm.Full GC因为需要对 ...

  4. JVM(Java虚拟机)详解(JVM 内存模型、堆、GC、直接内存、性能调优)

    JVM(Java虚拟机) JVM 内存模型 结构图 jdk1.8 结构图(极简) jdk1.8 结构图(简单) JVM(Java虚拟机): 是一个抽象的计算模型. 如同一台真实的机器,它有自己的指令集 ...

  5. 深入理解Java虚拟机:Jvm性能调优

    本篇内容包括:Jvm 性能调优简介:根据需求目标进行 Jvm 调优规划(即 调优的目标.调优的步骤):Jvm 调优参数.命令.工具:以及 Java 中的内存泄露问题的详解- 一.Jvm 性能调优简介 ...

  6. kvm虚拟机性能调优

    kvm虚拟机性能调优 kvm性能优化,主要集中在cpu.内存.磁盘.网络,4个方面,当然对于这里面的优化,也是要分场景的,不同的场景其优化方向也是不同的,下面具体聊聊这4个方面的优化细节. 1. CP ...

  7. gateway 内存溢出问题_带你学习jvm java虚拟机 arthas/性能调优/故障排除/gc回收/内存溢出等...

    学完本课程,您将掌握: 内存溢出问题实战 CPU飙升问题实战 阿里巴巴Arthas在线诊断 Class字节详细拆解 手写类加载器.四种类加载器.双亲委托模型 对象创建.存储.访问.加载解析 性能调优. ...

  8. java中数组的内存模型_Java如何在内存有限的情况下实现一个超大数组?jvm性能调优+内存模型+虚拟机原理能解决什么样问题...

    在上一篇文章中,小编为您详细介绍了关于<变频器调速问题?三星R458更换CPU>相关知识.本篇中小编将再为您讲解标题Java如何在内存有限的情况下实现一个超大数组?jvm性能调优+内存模型 ...

  9. 循序渐进linux——基础知识、服务器搭建、系统管理、性能调优、集群应用_第四讲,Proxmox部署与应用...

    大家好!今天小编继续给大家介绍Ceph存储系统第四讲<Proxmox部署与应用>.在前几讲给大家介绍了Ceph存储系统基础知识,大家应该已经对Ceph有个大概了解,当然了解归了解,在实际工 ...

  10. linux打印jvm内存堆栈_5款强大的JVM 性能调优监控工具

    原文链接:www.iteye.com/blog/josh-persistence-2161848 现实企业级Java应用开发.维护中,有时候我们会碰到下面这些问题: OutOfMemoryError, ...

最新文章

  1. Ubuntu 14.04 python3.6 安装
  2. C++重载运算符最好声明为友元
  3. 信号 应用场景 内置信号 内置信号操作 自定义信号
  4. 御龙在天手游怎么不显示服务器了,御龙在天手游进不去怎么办 闪退原因及解决办法...
  5. 一个大屏监控380个泵房,13000个设备,智能水务是怎么实现的?
  6. MySQL学习笔记_6_SQL语言的设计与编写(下)
  7. 计算机入门培训考试,计算机基础培训考试习题.doc
  8. Http请求报文解析
  9. 在qt中出现During startup program exited with code 0xc0000135错误原因
  10. Java实现 已知ListString list = new ArrayListString();list .add(张三丰,北京);......要求:求出每个地区有多少人,都是谁?
  11. 安卓x5webview 加载网页 失败_#PY小贴士# 抓下来的网页为什么没有我要的内容?...
  12. java脚本引擎parseint方法_autojs脚本引擎调用java的jsoup爬取科学网博客的指定id的好友名字...
  13. 通过SqlDbx导出*.sql,然后倒入到SQLServer2005
  14. 软件开发过程中常见漏洞的解析
  15. 计算机存储单位:bit, Byte, KB, MB, GB, TB, PB, EB, ZB, BB
  16. 不定积分——1/(1+x^4)的不定积分
  17. js中offset、client、scroll【总结】
  18. IDM下载器最新稳定版本6.33.2
  19. 项目一 认识Linux操作系统
  20. v-charts legend设置排列对齐的方法

热门文章

  1. Flutter学习 — 给新页面传值
  2. 微服务中的健康监测以及其在ASP.NET Core服务中实现运行状况检查
  3. Python数据挖掘-关键字提取
  4. Mybatis的简单增删查改(CRUD)
  5. BZOJ 1051 || POJ 2186 受欢迎的牛 Tarjan
  6. 与时间有关的10个短语
  7. Tomcat加载类机制 - 我们到底能走多远系列(14)
  8. AjaxUpload
  9. QoS队列调度技术详解
  10. NoSQL之MongoDB复制集配置、数据导出导入