绑核是什么
把虚机的 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 节点内,才能避免跨节点访问带来的额外时延。