• 全部
  • 经验案例
  • 典型配置
  • 技术公告
  • FAQ
  • 漏洞说明
  • 全部
  • 全部
  • 大数据引擎
  • 知了引擎
产品线
搜索
取消
案例类型
发布者
是否解决
是否官方
时间
搜索引擎
匹配模式
高级搜索

CVK的CPU资源利用率异常高的问题

1天前提问
  • 0关注
  • 0收藏,50浏览
粉丝:0人 关注:0人

问题描述:

背景:我现在环境是宿主机有80核的CPU,整体分配比是267%。有台虚拟机分配了32核,实际使用30%,但是在宿主机后台,看到这个虚拟机的%CPU使用了3172%.

这种现象的什么原因,为什么虚拟机实际使用不高,宿主机上实际使用比虚拟机超10倍

经排查并没有开启idle=poll 模式

3 个回答
粉丝:10人 关注:9人

原因是两者统计维度不同:CVK宿主机显示的虚拟机%CPU是该虚拟机所有vCPU的总运行时间占宿主机物理CPU总时间的比例;而虚拟机内部的30%是单vCPU的平均利用率。该环境CPU超分配比267%,vCPU争抢物理CPU导致调度、上下文切换开销大,宿主机统计时会把调度相关时间计入总CPU使用,叠加32个vCPU的总利用率,最终宿主机显示的%CPU(≈3172%)远高于虚拟机内部实际利用率。

暂无评论

粉丝:16人 关注:1人

宿主机上 KVM 进程的 CPU 使用率高达 3172%,而虚拟机内部显示仅使用 30%,这个现象确实很容易引起困惑。你的环境已排除 idle=poll 模式,这背后通常是以下几个原因共同作用的结果。


 关键原因解析

  • 理解宿主机的 %CPU:这是多核叠加的“总使用量”
    Linux 系统(宿主机)中的 %CPU 指标,100% 代表 1 个物理核心 全部占满。因此,3172% 大约相当于 32 个核心在满载运行。这个数值正好与你分配给虚拟机的 32 个 vCPU 数量吻合,是一个强烈的信号。

  • 根源一:超额分配引起的 CPU 调度开销
    宿主机物理核心 80 个,超分比 267%,意味着分配的 vCPU 总数远超 80 个。在这种环境下,32 个 vCPU 线程即使只有 30% 的“有效”工作,也需等待物理核心调度。频繁的上下文切换和等待自旋锁(spinlock),都会大幅增加宿主机记录的 CPU 时间,这是 KVM 环境下导致宿主机开销升高的典型特征。

  • 根源二:KVM 的 Halt-Polling 机制
    这是为了追求虚拟机响应速度而引入的机制。即使虚拟机内部处于空闲状态,宿主机上的 vCPU 线程也会在短时间内忙等(Polling),以避免唤醒延迟。这正是 Halt-Polling 的特性:虚拟机空闲时,宿主机侧仍然会显示较高的 CPU 使用率

  • 根源三:虚拟化层的额外开销
    宿主机除了运行 KVM 进程,还要处理 QEMU 进行设备模拟、处理 I/O 请求,以及处理 vCPU 因特权指令触发的 VM-Exit 事件。这些操作都会产生“系统”层面的 CPU 消耗,而这部分是虚拟机内部无法感知的。

  • 可能的原因四:CAS Tools 的状态
    CASTools 提供了内存气球、IO 半虚拟化驱动等优化,也能让平台更准确地感知虚拟机内部状态-15。如果未安装或运行不正常,也可能导致资源监控异常或开销增大。


 建议的行动计划

总结来说,3172% 的 CPU 使用率是一个和配置相关性很强的信号,但并不直接等同于性能瓶颈,它反映了“超分配 + 性能优化机制 + 调度开销”的综合结果。可以按以下步骤来系统排查:

  1. 检查 Halt-Polling 当前状态:可通过以下命令查看是否已启用,并按需调优:

    # 查看当前值
    cat /sys/module/kvm/parameters/halt_poll_ns如需动态关闭或调整,可参考操作:
    # 关闭halt-polling(临时生效)
    echo 0 > /sys/module/kvm/parameters/halt_poll_ns
  2. 确认 CASTools 运行状态:在虚拟机内部,确保它已安装并正常运行。在宿主机上,也可使用 ps aux | grep qemu-ga 命令,检查 QEMU Guest Agent 服务是否在运行。

  3. 实施 CPU 绑定 (vCPU Pinning):将关键虚拟机的 vCPU 与特定的物理核心绑定,可减少上下文切换带来的开销。使用 virsh vcpupin <VM-Name> <vCPU-ID> <pCPU-ID> 命令将虚拟机的vCPU线程锁定到指定的物理CPU核心。

  4. 综合评估:再结合 vmstatmpstat -P ALL 等命令,观察宿主机的整体负载,就能对当前 CPU 性能状况有一个比较全面的判断。

暂无评论

粉丝:10人 关注:2人

一、现象直接定性

虚拟机内看 CPU 使用率很低(30%),CVK 宿主机侧该虚拟机 CPU 利用率飙升到 3000%+
80 核物理 CPU、超配 267%,虚机分配 32 核,典型KVM vCPU 调度抢占 + 时间片膨胀 + 业务忙轮询问题
和 idle=poll 无关,你已经排除

二、根本原因(3 个最核心)

1. 虚机内部业务:死循环 / 忙等待(最常见)

Windows/Linux 虚机里程序空循环、死循环、轮询死等
  • 虚拟机内系统统计:只算有效业务 CPU,显示 30% 很低
  • KVM 宿主机层面:程序一直抢 CPU 时间片不放,疯狂占用物理 CPU 周期
    表现:虚拟机内低负载 → 宿主机 vCPU 占用爆炸式翻倍暴涨

2. vCPU 核数分配过多导致调度放大(你现场命中)

你给虚机分配32 核 vCPU
  1. 虚机内应用根本跑不满 32 核,多核心空闲线程持续抢占调度
  2. CAS CVK (KVM) 对高 vCPU 数虚拟机,调度开销呈指数上升
  3. 单虚机多 vCPU 互相抢占队列,宿主机统计 CPU 使用率严重虚高
    分配核越多,宿主机倍率越高,你 10 倍差距完全符合该特征

3. 虚拟机时钟源 / 高精度定时器频繁抢占

虚机内部业务频繁调用高精度时钟、日志高频打印、监控高频采集
大量软中断 + 时钟中断,虚机系统不显负载,宿主机全吃资源

三、现场快速排查命令(CVK 宿主机执行)

  1. 定位高占用虚拟机
bash
运行
top shift+p 按CPU排序,看qemu-kvm进程
  1. 查看该虚拟机 vCPU 线程占用
bash
运行
ps -T -p 虚拟机qemu进程PID
  1. 查看宿主机 CPU 软中断、调度开销
bash
运行
mpstat -P ALL 1 vmstat 1
  1. 查看虚拟机内部是否存在忙等待
    进虚拟机查看:
  • Windows:任务管理器 → 详细进程,看有无进程CPU 忽高忽低、常驻后台轮询
  • Linux:top -H 看线程死循环

四、立刻生效解决办法(按优先级)

1. 紧急降负载:减少该虚拟机分配 vCPU(最快见效)

32 核严重过剩,业务实际只用很少算力
从 32 核下调至8 核 / 16 核
下调后宿主机 CPU 占用直接腰斩甚至暴跌,倍率异常直接消失

2. 虚拟机内优化:关闭业务无效轮询

  • 关闭无用定时任务、高频日志、无效心跳探测
  • 数据库 / 中间件关闭闲置连接轮询、无效监听
  • Windows 关闭多余后台服务、计划任务

3. CAS CVK 层优化(KVM 调度优化)

  1. 给该虚拟机开启CPU 亲和性,绑定物理核心,减少跨 NUMA 调度损耗
  2. 调整虚拟机 CPU 调度优先级,避免抢占整机资源
  3. CAS 后台修改虚拟机参数:关闭不必要虚拟化精简指令集抢占

4. 关闭虚拟机内部高性能计时器

Windows 虚拟机:
注册表关闭HPET 高精度计时器,减少频繁时钟中断
Linux 虚拟机:
内核时钟源改为通用时钟,关闭tickless激进抢占

五、为什么差 10 倍通俗解释

  • 虚拟机内统计:只统计应用真正干活的 CPU
  • 宿主机 CVK 统计:统计 = 应用运算 + 线程抢占 + 调度切换 + 中断消耗 + 空循环等待
    你分配 32 核大 vCPU 池,空闲线程疯狂抢调度时间片,空跑也算宿主机 CPU 占用,所以直接翻 10 倍。

六、最终最优整改方案

  1. 把这台 32 核虚拟机缩核到合理业务核数(优先 16 核以内)
  2. 虚拟机内部查杀死循环、高频轮询程序
  3. CVK 层面做简单 CPU 亲和绑定
    做完宿主机 3172% 超高占用直接恢复正常,虚拟机内业务性能不受影响

暂无评论

编辑答案

你正在编辑答案

如果你要对问题或其他回答进行点评或询问,请使用评论功能。

分享扩散:

提出建议

    +

亲~登录后才可以操作哦!

确定

亲~检测到您登陆的账号未在http://hclhub.h3c.com进行注册

注册后可访问此模块

跳转hclhub

你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作

举报

×

侵犯我的权益 >
对根叔社区有害的内容 >
辱骂、歧视、挑衅等(不友善)

侵犯我的权益

×

泄露了我的隐私 >
侵犯了我企业的权益 >
抄袭了我的内容 >
诽谤我 >
辱骂、歧视、挑衅等(不友善)
骚扰我

泄露了我的隐私

×

您好,当您发现根叔知了上有泄漏您隐私的内容时,您可以向根叔知了进行举报。 请您把以下内容通过邮件发送到pub.zhiliao@h3c.com 邮箱,我们会尽快处理。
  • 1. 您认为哪些内容泄露了您的隐私?(请在邮件中列出您举报的内容、链接地址,并给出简短的说明)
  • 2. 您是谁?(身份证明材料,可以是身份证或护照等证件)

侵犯了我企业的权益

×

您好,当您发现根叔知了上有关于您企业的造谣与诽谤、商业侵权等内容时,您可以向根叔知了进行举报。 请您把以下内容通过邮件发送到 pub.zhiliao@h3c.com 邮箱,我们会在审核后尽快给您答复。
  • 1. 您举报的内容是什么?(请在邮件中列出您举报的内容和链接地址)
  • 2. 您是谁?(身份证明材料,可以是身份证或护照等证件)
  • 3. 是哪家企业?(营业执照,单位登记证明等证件)
  • 4. 您与该企业的关系是?(您是企业法人或被授权人,需提供企业委托授权书)
我们认为知名企业应该坦然接受公众讨论,对于答案中不准确的部分,我们欢迎您以正式或非正式身份在根叔知了上进行澄清。

抄袭了我的内容

×

原文链接或出处

诽谤我

×

您好,当您发现根叔知了上有诽谤您的内容时,您可以向根叔知了进行举报。 请您把以下内容通过邮件发送到pub.zhiliao@h3c.com 邮箱,我们会尽快处理。
  • 1. 您举报的内容以及侵犯了您什么权益?(请在邮件中列出您举报的内容、链接地址,并给出简短的说明)
  • 2. 您是谁?(身份证明材料,可以是身份证或护照等证件)
我们认为知名企业应该坦然接受公众讨论,对于答案中不准确的部分,我们欢迎您以正式或非正式身份在根叔知了上进行澄清。

对根叔社区有害的内容

×

垃圾广告信息
色情、暴力、血腥等违反法律法规的内容
政治敏感
不规范转载 >
辱骂、歧视、挑衅等(不友善)
骚扰我
诱导投票

不规范转载

×

举报说明