한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

游戏卡顿白皮书 › L7 服务器操作系统(内核)

CPU 窃取时间(虚拟机) CPU steal time

原因 ID so-steal · 主责 运维团队·系统运维 · 配合 外部·外部

在含图示和实验的完整版中打开此卡片 →

物理服务器(hypervisor)把虚拟机的 CPU 时间暂时让给其他虚拟机期间(CPU 窃取),游戏服务器会停住。

起因 同一宿主机上的其他虚拟机大量占用 CPU → 结果 本虚拟机每次失去几 ms 到几十 ms 的运行机会 → 画面表现 tick 耗时莫名飙升,表现为一卡一卡、卡住

症状
一卡一卡, 卡住
因素
停顿
谁会遇到
全服
何时出现
偶尔随机
负责方
主责 运维团队·系统运维 · 配合 外部·外部
运维团队要做的事
监控 steal 指标(top、vmstat 的 st);使用独占核心或专用宿主机;避开 CPU 积分耗尽就降速的突发型实例;steal 持续偏高的实例先停止再启动,迁到其他宿主机。
外部要做的事
向云厂商报告 steal 持续偏高的宿主机。
监控图上
偶发随机尖峰 · %steal、服务器 tick 耗时
查看位置
把 mpstat -P ALL 1 的 %steal 和服务器 tick 耗时放在同一时间轴上看
确认依据
tick 冲高的时刻 %steal 也一起冲高,停止再启动、迁到其他宿主机后下降
排除依据
%steal 接近 0 而 tick 冲高,看游戏服务器内部的原因(“服务器 GC 全局停顿”“锁竞争”)。容器环境看“容器 CPU 限流(CFS 配额)”
确认手段
运维工具即可确认(无需游戏代码)

出处

  1. proc_stat(5) — Linux manual page Linux man-pages
    steal:虚拟化环境中因为在运行其他操作系统而被夺走的时间
  2. Standard mode for burstable performance instances AWS
    突发型实例消耗积分来超出基准性能,积分用完后 CPU 使用率会降到基准水平
  3. How EC2 instance stop and start works AWS
    实例停止后再启动,大多会迁到新的宿主机
  4. mpstat(1) — Linux manual page sysstat
    %steal:hypervisor 运行其他虚拟 CPU 期间,本虚拟 CPU 被迫等待的时间比例

相关原因

同一层:L7 服务器操作系统(内核)

其他层中同样导致“一卡一卡”的原因

查看含图示和实验的原卡片