首页 > 其他分享 >云平台采集的虚拟机CPU利用率与实际的使用率差很多?与这个参数息息相关!

云平台采集的虚拟机CPU利用率与实际的使用率差很多?与这个参数息息相关!

时间:2023-06-22 15:32:14浏览次数:36  
标签:poll VCPU 虚拟机 idle 内核 使用率 CPU

一、概述

主流的云平台都实现了对虚拟机资源使用率的监控,如网络流入流出带宽、CPU和内存利用率、磁盘利用率等。


在没有安装平台定制的vmtools情况下,很有可能出现平台监控数据与虚拟机内部数据不相符的情况,如云平台显示虚拟机CPU使用率长期接近100%,并产生相应资源使用率高的告警,但实际登陆到虚拟机内部,发现虚拟机CPU使用率才10%~20%,甚至更小。总的来说就是云平台检测到的数据并不准确!


二、影响云平台监控的参数

开门见山,当虚拟机内核配置了idle=poll时,会导致qemu采集数据不准确。在笔者接触的操作系统中,只有部分版本的麒麟系统默认配置了idle=poll,大部分系统如centos、redhat、欧拉等系统没有配置。


三、idle配置的作用

Linux内核的idle配置是用于管理系统空闲时的行为的。当系统处于空闲状态时,CPU可能会浪费很多资源,因此Linux内核提供了一些机制来最大化利用系统资源。


具体来说,Linux内核的idle配置可以控制以下行为:


- CPU调度:Linux内核的idle配置可以决定如何在CPU上进行调度。当系统空闲时,内核可以选择将CPU的时间片分配给其他进程,或者将CPU放入睡眠状态,以降低功耗并延长电池寿命。


- 节能:通过让CPU进入低功耗模式,Linux内核的idle配置可以显著降低系统的能耗。当CPU处于空闲状态时,内核会降低CPU的频率,减少电压并关闭一些不必要的组件,从而节省能源。


- 热管理:通过让CPU进入空闲状态,Linux内核的idle配置可以帮助管理CPU的温度。当CPU处于高负载状态时,它会产生大量热量,因此将CPU放入空闲状态可以使其冷却并降低温度。


总之,Linux内核的idle配置可以优化系统的性能和能效,减少能耗和热量,并最大化利用系统资源。



开启idel=poll在虚拟化场景下,对监控影响的


原理如下:

虚拟化的场景下,Qemu缺省对GuestOS提供HLT指令作为idle的唯一机制,当虚拟机的CPU进入idle状态时,就会调用HLT该指令把该CPU挂起,此时会陷入VMM处理,VMM知道该VCPU目前不需要使用了,便将该VCPU所在线程挂起进入睡眠状态。当另一个VCPU需要唤醒该挂起的VCPU时,就在虚拟机内发起IPI中断(CPU间通信的机制),陷入到VMM中,随后便是执行kvm_vcpu_kick0和schedule0函数,最后注入IPI中断到目标VCPU。


如果一个虚拟机内任务频繁处于idle和有任务之间,就会存在大量的vmexit以及IPI中断,这会对虚拟化层带来一些开销。因此虚拟机使用idle=poll启动选项,能够完全避免VCPU执行HTL指令,因此,该VCPU在物理机上对应的线程将一直占用cpu(除非被中断或者抢占),那么该线不会睡眠。


从物理机角度来看,由于本该挂起进入睡眠的VCPU,现在不再睡眠,而是持续占有CPU。


四、优缺点

优点:CPU不再睡眠,IPI中断耗时明显减少,CPU性能有所提高。

缺点

1、从物理机角度来看,由于本该挂起进入睡眠的VCPU,现在不再睡眠,而是持续占有CPU。这对云主机可不是件好事情,因为这部分"空闲"CPU配额本该交给别的虚拟机来执行,现在却被禁止了HTL的虚拟机在空转,实在是在经济上不划算。


2、虚拟机中禁止HTL也不是所有情况下都有明显效果。假如虚拟机中的业务场景CPU负载很高,到了100%,该场景中自然不会调用HTL(VCPU没有空闲,自然不会进入idle状态)。因此,修改idle=poll启动选项就失去了作用。


为了在物理机经济效益和虚拟机性能最大化之间取得折中,目前内核的方案是提供了halt_poll_ns机制,即在VCPU HTL之前,先轮询下有没有虚拟中断要来,来的话就马上注入虚拟机,如果超过轮询上限都没有虚拟中断过来,才真正进入睡眠。


华为FusionSphere建议配置halt_poll_ns值为20000



我是运维少年,欢迎关注我同名的公众号~

标签:poll,VCPU,虚拟机,idle,内核,使用率,CPU
From: https://blog.51cto.com/xiaowangzai/6534924

相关文章

  • 如何提高虚拟机性能?利用这个特性来实现!
    第一章什么是绑核线程绑核是指将线程绑定到特定的CPU核心上执行,而不允许线程在不同核心之间切换执行。这种操作可以有效地减少操作系统的上下文切换和负载均衡的开销,从而提高程序的执行效率。没有绑核的线程则可以在多个CPU核心上随意切换执行。这虽然可以让操作系统更加灵活地分......
  • Centos 下查看服务器CPU的信息
    实时查看CPU每核的线程利用率top后按1,如下图所示,我们可以看到有8个CPU,每行显示的就是该CPU的使用率:查看当前操作系统内核信息#uname-aLinuxdb1.xxx.com2.6.18-194.el5xen#1SMPFriApr215:34:40EDT2010x86_64x86_64x86_64GNU/Linux依次是操作系统名称:Linux ......
  • LoadRunner 监控到的Linux服务器CPU的一些主要指标说明
    CPU的主要指标:CPUUtilizationCPU使用率,CPU的使用时间百分比,75%以上就比较高了。在任意时间内,CPU有7个状态:1.idle,表示CPU闲置并等待工作分配.2.user,表示CPU在运行用户的进程3.system,表示CPU在执行kernel工作4.nice,表示CPU花费在被nice改变过优先级的process......
  • 虚拟机(linux)环境搭建
    软件安装准备1搜索VMware并下载2.以管理员身份启动,正常安装。注意安装完选择许可证,密钥使用:JU090-6039P-08409-8J0QH-2YR7F即可3.使用此网址:Indexof/ubuntu-releases/16.04/(zju.edu.cn)。下载desktop-iso版本软件使用4.新建自定义虚拟机,注意linux系统,处理器配置选为2,2......
  • 虚拟机网络配置命令之访问外网问题
    问题:ping百度不通:ping:www.baidu.com:Temporaryfailureinnameresolution cat/etc/sysconfig/network-scripts/ifcfg-ens33vi/etc/sysconfig/network-scripts/ifcfg-ens33切换网络时dns服务器地址可能会变,这个时候需要手动设置一下域名地址比如在图书馆的网络默认的......
  • Docker与虚拟机
    虚拟机(virtualmachine)是在操作系统中模拟硬件设备,然后运行另一个操作系统,比如在Windows系统里面运行Ubuntu系统,这样就可以运行任意的Ubuntu应用了。Docker和虚拟机的差异:1、docker是一个系统进程;虚拟机是在操作系统中的操作系统2、docker体积小、启动速度快、性能好;虚拟机......
  • linux下安装Ipmi工具,调整服务器CPU风扇速度.
    安装ipmi工具yum-yinstallipmitool加载模块modprobeipmi_si&&modprobeipmi_devintf&&modprobeipmi_msghandler查看模块lsmod|grepipmi开启风扇控制设置风扇为手动模式ipmitoolraw0x300x300x010x0000为手动模式01为自动模式设置CPU风扇转速ipmit......
  • 用cloudmonkey批量创建虚拟机
    需求:1.root磁盘120G(这个在做镜像的时候已经做好)2.需要用到share网络3.添加500G磁盘并且挂载早虚拟机上面#!/bin/bashzone_id=d530fee4-413a-463b-abf5-4fdcf523077bnetwork_id=96eb15a6-ccd3-4e33-adf0-b5f3e63e2466serviceofferingid='b1fb445d-2571-4803-a3f5-93f0ad81b245't......
  • JVM 虚拟机笔记,不一定全,但是一定靠谱
    在学习JVM之前,先分享一则信息:2009年4月20日,Orace宣布正式以74亿美元的价格收购市值曾超过2000亿美元的Sun公司,传奇的SunMicrosystems从此落幕成为历史。一、Java虚拟机的介绍首先登场的是,虚拟机的始组:SunClassic/ExactVM,SunClassic被誉为世界上第一款商用Ja......
  • kafka学习之三_信创CPU下单节点kafka性能测试验证
    kafka学习之三_信创CPU下单节点kafka性能测试验证背景前面学习了3controller+5broker的集群部署模式.晚上想着能够验证一下国产机器的性能.但是国产机器上面的设备有限.所以想着进行单节点的安装与测试.并且记录一下简单结果希望对以后的工作有指导意义发现producer......