首页/云/云平台与虚拟化速查/virsh schedinfo 调度参数查看
虚拟化操作94 条

virsh schedinfo 调度参数查看

schedinfo 显示域的 cgroup 调度参数(cpu_shares、vcpu_period/quota、emulator 限制等),用于核查 CPU 份额与配额是否按规划生效。

云平台与虚拟化速查云更新于 2026-10-13

是什么

virsh schedinfo 显示与设置虚机的 CPU 调度参数,底层对应 Linux cgroup 的 cpu 控制器。cpu_shares 是相对权重,只在资源竞争时决定分配比例;vcpu_period 与 vcpu_quota 才是真正的限速手段,两者的比值决定单块 vCPU 能用的 CPU 时间上限。核查“规划里的 CPU 限制到底生效没有”,看这条命令就够了。

基本信息

查看virsh schedinfo vm1,输出当前调度器与各项参数
加权virsh schedinfo vm1 --set cpu_shares=512,默认值通常是 1024
限速vcpu_quota 与 vcpu_period 配合,quota 设为负数表示不限制
生效范围加 --live 影响运行中的虚机,加 --config 写入持久配置
对应关系参数直接映射到 cgroup cpu 控制器,容器侧的限制逻辑相同

查看与调整

查看与调整
virsh schedinfo vm1                                  # 查看当前参数
virsh schedinfo vm1 --set cpu_shares=512             # 降权,仅在争用时生效
virsh schedinfo vm1 --set vcpu_quota=40000 \
  --set vcpu_period=100000 --live                    # 限制为单核的四成
virsh schedinfo vm1 --live --config                  # 核对两类参数是否都写入

输出逐列读法

参数含义判读要点
Scheduler调度器类型默认 posix,一般不需要改
cpu_sharesCPU 相对权重只在争抢时起作用,不能当硬上限
vcpu_period调度周期(微秒)默认 100000,改动会影响所有 vCPU
vcpu_quota周期内可用配额(微秒)为 -1 表示不限速;与 period 的比值即上限
emulator_*模拟器线程的限制大内存虚机可单独限速,避免模拟器抢 CPU
iothread_*IO 线程的限制配合 iothread 使用时才生效
换算关系:vcpu_quota 除以 vcpu_period 得到单块 vCPU 可用的 CPU 比例。上面示例中 40000 除以 100000 等于四成,四块 vCPU 的理论上限就是 1.6 核。
只加 --live 的修改重启后失效,只加 --config 的修改不会立刻作用于运行中的虚机;改完同时确认这两处,否则会出现“重启后限制消失”的怪现象。

典型使用场景

  • 多租户宿主机上做资源隔离:给低优先级虚机降权,给核心业务保份额
  • 核查规划落地:确认运维方案里写的 CPU 限制是否真的写进了虚机定义
  • 临时压测:测试期间限制虚机 CPU 上限,避免压测流量挤占同宿主其他业务
  • 性能事件复盘:把配额与权重参数作为证据,判断限速是否由配置引起
  • 容量回收前的评估:统计各虚机的份额与配额,识别长期闲置却仍占用大量额度的虚机

易错点

  • 把 cpu_shares 当成硬上限:它只是相对权重,独占时仍可用满 CPU
  • 只改运行态不写配置,宿主或虚机重启后限制失效
  • quota 设得过小又没有监控,业务直接被限速却查不出原因
  • 对同一虚机叠加使用多种限制手段(调度参数与外部 cgroup 规则),实际生效值互相冲突

数据来源与参考

  • virsh 手册:schedinfo
  • libvirt 文档:CPU 调度参数
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌