首页/云/云平台与虚拟化速查/virsh 绑核:vcpupin 与 emulatorpin
虚拟化操作94 条

virsh 绑核:vcpupin 与 emulatorpin

把 vCPU 绑定到指定物理核可减少调度抖动与跨 NUMA 访问;先用 nodecpumap 查看可用核,再做绑定并复测延迟型业务。

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

绑核是什么

把虚机的 vCPU 绑定到指定物理核,可以减少调度抖动与跨 NUMA 节点访问带来的时延波动;把模拟器线程也绑定起来,则能避免 IO 处理线程在核间漂移。绑核属于精细调优手段,前提是先看清热点与拓扑,否则容易把可用容量切得更碎。

基本信息

查看物理核查询宿主的物理核与在线范围
绑定 vCPU把指定 vCPU 固定到一组物理核上
绑定模拟器线程把设备模拟相关线程固定到单独的核心上
持久化区分只对当前运行实例生效与写入定义文件生效两种方式
拓扑感知按 NUMA 节点绑定可减少远端内存访问
容量影响绑核会占用物理核,宿主上其他负载可用核数随之减少

查看与绑定

查看与绑定
virsh nodecpumap                 # 查看宿主可用物理核
virsh vcpupin vm1                # 查看当前 vCPU 绑定情况
virsh vcpupin vm1 0 2            # 把 vCPU0 绑定到物理核 2
virsh vcpupin vm1 1 3            # 把 vCPU1 绑定到物理核 3
virsh emulatorpin vm1 0-1        # 把模拟器线程绑定到核 0 与 1
# 加 --live 只影响当前实例,加 --config 写入定义;按需要组合使用

命令与生效范围

命令作用对象生效范围
查询物理核映射宿主物理核只读,用于规划绑定范围
绑定 vCPU指定 vCPU视参数决定即时生效或写入定义
绑定模拟器线程设备模拟线程同上,需与 vCPU 绑定一起规划
查看当前绑定全部 vCPU只读,用于核对绑定结果
绑核后宿主其他负载可能被挤到剩余核上,需同步调整宿主侧调度与预留,避免相互拖累。对延迟敏感的业务,绑核通常要配合独占与资源预留策略,单独绑核收益有限。
规划绑定前先看清拓扑:用节点的核信息与能力查询命令确认物理核数量、线程与 NUMA 分布,再决定把哪些核分给虚拟机。把同一虚拟机的 vCPU 与内存放在同一 NUMA 节点内,才能避免跨节点访问带来的额外时延。

易错点

  • vCPU 数量与物理核不匹配时硬绑:可用容量被切碎,整体吞吐反而下降
  • 只绑 vCPU 未绑模拟器线程:IO 处理线程仍在核间漂移,延迟抖动依旧存在
  • 忽略 NUMA 拓扑:vCPU 与内存分属不同节点,跨节点访问带来额外时延
  • 只做即时绑定不写定义:宿主重启或虚机重建后配置丢失,性能表现前后不一致
  • 绑核后未复核宿主其他负载:关键业务改善的同时其他服务出现明显退化
  • 未核对超线程与 NUMA 拓扑就分配:把多个 vCPU 绑到同一物理核的兄弟线程上,实际算力没有增加

数据来源与参考

  • virsh 手册:vcpupin / emulatorpin
  • libvirt 文档:CPU 绑定
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌