美文网首页
KVM性能优化之CPU篇

KVM性能优化之CPU篇

作者: ipfs_dht | 来源:发表于2019-04-24 11:19 被阅读0次

    简单说就是如何让CPU利用最大化。

    SMP技术

    ==对称指的就是CPU之间是平等的无主从,访问资源也是平等
    最大特点:就是CPU共享所有资源,比如总线,内存,IO系统等等。
    各个CPU之间是平等的关系,然后操作系统管理着这些CPU对资源的访问(通常是用队列的形式去管理)

    弊端:很快就显现出来了,那就是它的扩展能力不强
    如果服务器要提升性能增加CPU,那么内存(内存最大化的情况下)就明显不够了
    SMP型的服务器CPU最好是2-4颗就OK了,多余的就浪费了。

    NUMA技术

    CPU这块我们是针对NUMA这块的调优,意思就是非统一内存访问,它是一种解决多CPU共同工作的解决方案。

    有了NUMA技术那么就可以把几十个甚至上百个CPU组合在一个服务器內。

    每个CPU模块之间都是通过互联模块进行连接和信息交互,CPU都是互通互联的,
    同时,每个CPU模块平均划分为若干个Chip(不多于4个),每个Chip都有自己的内存控制器及内存插槽。

    在NUMA中还有三个节点的概念:

    1. 本地节点: 对于某个节点中的所有CPU,此节点称为本地节点。
    2. 邻居节点:与本地节点相邻的节点称为邻居节点。
    3. 远端节点:非本地节点或邻居节点的节点,称为远端节点。
      邻居节点和远端节点,都称作非本地节点(Off Node)。

    访问本地节点的速度最快,访问远端节点的速度最慢,即访问速度与节点的距离有关,距离越远访问速度越慢,此距离称作Node Distance。

    如果你的应用程序能有方法固定在一个CPU模块里,那么你的应用的性能将会有很大的提升。
    在CPU优化这块就是要让KVM绑定在指定的CPU上,这样减少跨CPU的交互使用,让KVM的性能提升。
    numactl --hardware
    numastat
    numastat -c qemu-kvm //相关进程的NUMA内存使用情况

    linux默认使用的就是NUMA自动平衡策略

    CPU绑定操作

    操作系统还有CPU特性都采用了NUMA架构,那么我们完全可以通过调整KVM对应的NUMA关系来达到KVM CPU这方面的优化。

    virsh vcpuinfo Win7-ent

    vCPU分别绑定

    virsh vcpupin Win7-ent 0 22

    virsh vcpupin Win7-ent 1 23

    virsh dumpxml Win7-ent

    CPU 热添加

    热添加是在Redhat7.0以后才出现的(要求KVM宿主机和虚拟机都得在7.0版本以后)

    给这个虚拟机添加第三个CPU,原来是2个,现在再添加一个变成3个: 也就是说不支持热减少
    setvcpus VM3_CentOS7.1 3 --live
    echo 1 >/sys/devices/system/cpu/cpu2/online //这是激活cpu

    总结

    到这为止, 以上就是KVM CPU方面的优化。总结起来就两点,一个是CPU绑定,还有一个就是热添加

    CPU绑定首先得了解NUMA技术,然后站在整个宿主机CPU资源的层面去调节。
    热添加,当你某个虚拟机正在运行,然后突然业务压力增大了,可以通过这方法达到0停机提升虚拟机CPU性能。

    相关文章

      网友评论

          本文标题:KVM性能优化之CPU篇

          本文链接:https://www.haomeiwen.com/subject/jyiwgqtx.html