当前位置: 首页 > news >正文

KVM调整虚拟机与CPU铆钉(绑定)关系

虚拟机铆钉CPU

把虚拟机的vCPU绑定在物理CPU上,即VCPU只在绑定的物理CPU上调度,在特定场景下达到提升虚拟机性能的目的。比如在NUMAQ系统中,把vCPU绑定在同一个NUMA节点上,可以避免CPU跨节点访问内存,避免影响虚拟机运行性能。
如果未绑定,默认vCPU可在任何物理CPU上调度。具体的绑定策略由系统来决定。

系统CPU情况

本机的CPU情况,部分截取如下,共有15和core:

[root@localhost ~]# lscpu 
Architecture:            x86_64CPU op-mode(s):        32-bit, 64-bitAddress sizes:         46 bits physical, 57 bits virtualByte Order:            Little Endian
CPU(s):                  20On-line CPU(s) list:   0-15
Vendor ID:               GenuineIntelModel name:            Intel(R) Xeon(R) D-1744NTE CPU @ 2.30GHzCPU family:          6Model:               108Thread(s) per core:  2Core(s) per socket:  10Socket(s):           1Stepping:            1CPU max MHz:         3000.0000CPU min MHz:         500.0000BogoMIPS:            3000.00
Virtualization features:Virtualization:        VT-x
Caches (sum of all):L1d:                   480 KiB (10 instances)L1i:                   320 KiB (10 instances)L2:                    12.5 MiB (10 instances)L3:                    15 MiB (1 instance)
NUMA:NUMA node(s):          1NUMA node0 CPU(s):     0-15

异常样例

注意:可以先查看某一虚拟机CPU使用情况,使用virsh vcpuinfo+虚拟机ID,这里的虛拟机,必须是正在运行的虚拟机。每次重启虚拟机,虚拟机ID也会同步发生改变

[root@localhost ~]# virsh listId   Name   State
----------------------5    LMT    running8    TES    running14   BRO    running#下面的 5 表示本次为 LMT 分配的虚机ID
[root@localhost ~]# virsh vcpuinfo 5
VCPU:           0
CPU:            24
State:          running
CPU time:       54791.1s
CPU Affinity:   yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyVCPU:           1
CPU:            0
State:          running
CPU time:       54738.5s
CPU Affinity:   yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyVCPU:           2
CPU:            24
State:          running
CPU time:       54769.5s
CPU Affinity:   yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyVCPU:           3
CPU:            0
State:          running
CPU time:       54764.7s
CPU Affinity:   yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy#查看TES虚拟机的CPU 使用情况
[root@localhost ~]# virsh vcpuinfo 8
VCPU:           0
CPU:            24
State:          running
CPU time:       6883.3s
CPU Affinity:   yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyVCPU:           1
CPU:            24
State:          running
CPU time:       6743.5s
CPU Affinity:   yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy#查看BRO虚拟机的CPU 使用情况
[root@5GC ~]# virsh vcpuinfo 14
VCPU:           0
CPU:            0
State:          running
CPU time:       3200.7s
CPU Affinity:   yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyVCPU:           1
CPU:            0
State:          running
CPU time:       3256.7s
CPU Affinity:   yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyVCPU:           2
CPU:            0
State:          running
CPU time:       3254.7s
CPU Affinity:   yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyVCPU:           3
CPU:            24
State:          running
CPU time:       3246.5s
CPU Affinity:   yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyVCPU:           4
CPU:            0
State:          running
CPU time:       3250.2s
CPU Affinity:   yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyVCPU:           5
CPU:            24
State:          running
CPU time:       3234.4s
CPU Affinity:   yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyVCPU:           6
CPU:            0
State:          running
CPU time:       3212.7s
CPU Affinity:   yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyVCPU:           7
CPU:            0
State:          running
CPU time:       3241.4s
CPU Affinity:   yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyVCPU:           8
CPU:            0
State:          running
CPU time:       3211.0s
CPU Affinity:   yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyVCPU:           9
CPU:            0
State:          running
CPU time:       3218.6s
CPU Affinity:   yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy

从上面可以看到 3 虚机,共计需要: 4 + 2 + 10 == 16 个,但是有 9 个使用的都是物理核0。导致 BRO虚拟机(尽管预分配14和core)运行很慢!

具体配置方式

打开对应的配置文件,默认路径是:/etc/libvirt/qemu/

vim /etc/libvirt/qemu/BRO.xml<vcpu placement='static'>3</vcpu>
<vcpu vcpuset='13,15' >3</vcpu><!--这里原来的内容有placement='static' 我们把它去掉,添加上vcpuset='13,15'表示将该虚拟机的vcpu钉选到物理CPU为[13-15]上面--><cputune><vcpupin vcpu='0' cpuset='13'/><!--将vCPU 0钉选到物理CPU 13上面--><vcpupin vcpu='1' cpuset='14'/><!--将vCPU 1钉选到物理CPU 14上面--><vcpupin vcpu='2' cpuset='15'/><!--将vCPU 2钉选到物理CPU 15上面--></cputune>

请一定注意:<vcpu vcpuset='13,15' >3</vcpu> 这一行中的数字3表示,虚拟机占用3个CPU 核,需要和下面的 <cputune> 具体行数对应起来,否则一旦加载虚拟机,则会重启恢复到之前的CPU的铆钉配置。
此外,vcpupin 从 0 开始编号。

更新配置文件生效

修改完xml文件后,使用下面更新命令:

virsh define /etc/libvirt/qemu/BRO.xml

建议配置完成后,重启虚拟机 BRO

Reference

KVM VCPU Requests
CPU Pinning understanding
How to Perform CPU Pinning for KVM Virtual Machines and Docker Containers

http://www.lryc.cn/news/412405.html

相关文章:

  • 华火电焰灶:烹饪新宠,温暖与美味的完美融合
  • 理想发周榜,不是新能源市场的原罪
  • AHK是让任何软件都支持 Shift + 鼠标滚轮 实现界面水平滚动
  • 如何在C语言中实现求解超级丑数
  • secExample靶场之java反序列化漏洞复现
  • 解决升级Linux内核后,open files设置无效的问题。
  • 关于防范勒索病毒Play新变种的风险提示
  • 一款.NET开源、跨平台的DASH/HLS/MSS下载工具
  • MATLAB学习日志DAY21
  • Spingboot请求tcp 方式
  • leetcode刷题日记-括号生成
  • 小程序按钮分享
  • 多模态多智能体,在实现系统2(深思熟虑)方面的探索
  • 【CAN通讯系列8】如何准确接收数据?
  • RabbitMQ知识总结(基本概念)
  • Prel语言入门学习:一篇全面的指南
  • 在云服务器上自动化部署项目,jenkins和gitee
  • python 参数输入
  • Spring面试篇章——Spring基本概述
  • 股票预测模型中注意力多层Attention RNN LSTM 的应用
  • C语言 | Leetcode C语言题解之第313题超级丑数
  • PHP健身微信小程序系统源码
  • 树组件 el-tree 数据回显
  • 54、PHP 实现希尔排序
  • linux 虚拟机解压arm-linux-gcc-4.6.4-arm-x86_64.tar.bz2并arm-linux-gcc
  • 泛化的最近点迭代法(Generalized-ICP)
  • Java | Leetcode Java题解之第313题超级丑数
  • 单细胞数据整合-去除批次效应harmony和CCA (学习)
  • MuRF代码阅读
  • pycharm无法导入pyside2模块;“ModuleNotFoundError: No module named ‘PySide2“