CPU绑定操作
使用virsh vcpuinfp命令查看虚拟机VCPU和物理CPU的对应关系# virsh vcpuinfo 16
VCPU: 0
CPU: 3
状态: running
CPU 时间: 12581.6s
CPU关系: yyyy
#可以看到VCPU0被调度到物理机CPU3上,目前是使用状态,使用时间是12581.6s。
使用emulatorpin命令可以查看虚拟机可以使用哪些物理逻辑CPU
virsh#进入虚拟化的交互式终端
virsh # emulatorpin 16
模拟器: CPU 亲和性
----------------------------------
*: 0-3
可以看到0-3都可以使用,意味着可以强制将VCPU调度到任何物理CPU核上
在线绑定虚拟机的CPU
可以强制虚拟机只能在部分物理CPU之间调度。例如,使编号为16的虚拟机CPU在26-31之间调度
virsh emulatorpin 16 26-31 --live
通过以下命令查看绑定是否生效
virsh emulatorpin 21
emulator: CPU Affinity
-----------------------------------------------------------
*: 26-31
强制VCPU和物理机CPU-对一绑定
强制VCPU和物理机CPU-对一地绑定,例如强制VCPU 0和物理机CPU 28绑定,强制VCPU 1和物理机CPU 29绑定,强制VCPU 2和物理机CPU 30绑定,强制VCPU 3和物理机CPU 31绑定,命令如下:
virsh vcpupin 21 0 28
virsh vcpupin 21 1 29
virsh vcpuin 21 2 30
virsh vcpuin 21 3 31
CPU绑定技术的原理:CPU绑定实际上是Libvirt通过CGROUP来实现的,通过CGROUP直接去绑定KVM虚拟机进程也可以。CGROUP不仅可以做CPU绑定,还可以限制虚拟机磁盘、网络资源控制。
CPU绑定技术适用的应用场景:
[*]系统的CPU压力比较大
[*]多核CPU压力不平衡,可以通过cpu pinning技术人工进行调配
补充:
NUMA在虚拟机话应用之外的提示:
某些应用,比如数据库,为了保证性能,需要尽量适用更多的内存,如果使用系统默认的NUMA自动平衡策略,有可能一个CPU的内存消耗光,另外一个CPU还有大量的内存可以使用,但是系统却去调用swap来使用,造成性能严重降低。使用这些内存消耗型的应用时,可以考虑直接将系统的NUMA自动平衡策略关闭。
未完断续。。。。
页:
[1]