15.7.6. 配置虚拟 CPU 上限
您可以使用虚拟 CPU (vCPU)上限来限制虚拟机(VM)可以使用的 CPU 资源量。vCPU 上限可通过防止单个虚拟机过度使用主机的 CPU 资源来提高整体性能,并使 hypervisor 更轻松地管理 CPU 调度。
流程
查看主机上当前的 vCPU 调度配置。
# virsh schedinfo <vm_name> Scheduler : posix cpu_shares : 0 vcpu_period : 0 vcpu_quota : 0 emulator_period: 0 emulator_quota : 0 global_period : 0 global_quota : 0 iothread_period: 0 iothread_quota : 0要为虚拟机配置一个绝对 vCPU 上限,请设置
vcpu_period和vcpu_quota参数。两个参数都使用一个数字值,其代表以微秒为单位的持续时间。使用
virsh schedinfo命令设置vcpu_period参数。例如:# virsh schedinfo <vm_name> --set vcpu_period=100000在本例中,
vcpu_period被设置为 100,000 微秒,这意味着调度程序在此时间间隔内强制实施 vCPU 上限。您还可以使用
--live --config选项来配置一个正在运行的虚拟机,而无需重启它。使用
virsh schedinfo命令设置vcpu_quota参数。例如:# virsh schedinfo <vm_name> --set vcpu_quota=50000在本例中,
vcpu_quota被设置为 50,000 微秒,它指定虚拟机在vcpu_period时间间隔内可以使用的最大 CPU 时间。在本例中,vcpu_quota被设置为vcpu_period的一半,因此虚拟机在此间隔内可使用最多 50% 的 CPU 时间。您还可以使用
--live --config选项来配置一个正在运行的虚拟机,而无需重启它。
验证
检查 vCPU 调度参数是否有正确的值。
# virsh schedinfo <vm_name> Scheduler : posix cpu_shares : 2048 vcpu_period : 100000 vcpu_quota : 50000 ...