kvm-cpu资源管理

1、基础知识

1.1、简介

在虚拟机不关机的情况下,对CPU进行调整操作叫热调整。它是在Redhat7.0以后才出现的功能,所以要使用这功能,那必须要求KVM宿主机和虚拟机规格必须一致,而且在7.0+版本。
目前cpu热调整命令,只能增加,不能减少,想要减少的话,可以进入虚拟机中,关闭某个使用的CPU即可。

1.2、公有云上的虚拟机为什么不支持cpu的热调整

1、因为客户创建的虚拟机类型不一致,不满足热添加和热删除的前提条件,所以为了管理的方便就统一不允许了
2、因为创建虚拟机会有个调度的问题,创建的虚拟机的命令,会将创建的虚拟机调度到某一台宿主机上,具体调度到哪台宿主机上,没有办法保证,由于受宿主机的配置影响,所以热添加和热删除的功能没有办法保证

1.3、常见命令介绍

1.3.1、热调整

virsh setvcpus <虚拟机名称> <cpu个数> --live
注意:
默认后面会有 --live 属性,标识热调整,默认不会更改后端的配置,如果需要更改后端的配置,需要使用 --config

1.3.2、cpu绑定

virsh vcpupin <虚拟机名称> <虚拟机CPU号> <宿主机CPU号>

1.3.3、cpu重置

virsh shutdown <虚拟机名称>
virsh start <虚拟机名称>

2、准备工作

2.1、查看宿主机的cpu个数

root@localhost:~# lscpu 
Architecture:            x86_64
  CPU op-mode(s):        32-bit, 64-bit
  Address sizes:         45 bits physical, 48 bits virtual
  Byte Order:            Little Endian
CPU(s):                  4   # 共4核CPU
  On-line CPU(s) list:   0-3 # 在线CPU编号0-3
Vendor ID:               AuthenticAMD
  BIOS Vendor ID:        AuthenticAMD
  Model name:            AMD Ryzen 7 4800H with Radeon Graphics
    BIOS Model name:     AMD Ryzen 7 4800H with Radeon Graphics           CPU @ 2.9GHz
    BIOS CPU family:     2
    CPU family:          23
    Model:               96
    Thread(s) per core:  1
    Core(s) per socket:  4
    Socket(s):           1
    Stepping:            1
    BogoMIPS:            5789.14

2.2、宿主机查看所有的cpu状态

root@localhost:~# cat /sys/devices/system/cpu/cpu0/online 
cat: /sys/devices/system/cpu/cpu0/online: No such file or directory

root@localhost:~# cat /sys/devices/system/cpu/cpu1/online 
1

root@localhost:~# cat /sys/devices/system/cpu/cpu2/online 
1

root@localhost:~# cat /sys/devices/system/cpu/cpu3/online 
1

注意:cpu0里面有可能没有online,这不影响,如果非要看的话,可以手工添加个,可以看到:宿主机的3个cpu都是处于工作状态中

2.3、查看虚拟机当前的cpu状态

root@localhost:~# virsh edit CentOS-8-x86_64 
<domain type='kvm'>
  <name>CentOS-8-x86_64</name>
  <uuid>373fc909-9a6d-482b-9740-0b1363ec5aca</uuid>
  <metadata>
    <libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0">
      <libosinfo:os id="http://centos.org/centos/7.0"/>
    </libosinfo:libosinfo>
  </metadata>
  <memory unit='KiB'>2097152</memory>
  <currentMemory unit='KiB'>2097152</currentMemory>
  <vcpu placement='static'>2</vcpu> # 两个CPU
  <resource>
    <partition>/machine</partition>
  </resource>

3、实战

3.1、调整配置,让cpu支持动态调整功能

3.1.1、关闭虚拟机

virsh shutdown CentOS-8-x86_64

3.1.2、编辑虚拟机配置

root@localhost:~# virsh edit CentOS-8-x86_64
# 原内容
# <vcpu placement='static'>1</vcpu>

# 修改后
 <vcpu placement='static' current='1'>4</vcpu>

注意:
 意思就是,当前的cpu可以动态调整,当前的cpu个数为1,可调整的最大个数为4
 一般情况下,虚拟机可以支持255个,但是最大只能设置253个。
 如果操作异常,有可能导致以下异常情况 error: operation failed: Failed to query numad for the advisory nodeset

3.1.3、启动虚拟机后查看效果

virsh start CentOS-8-x86_64

# virsh  dominfo  CentOS-8-x86_64
Id:             1
Name:           CentOS-8-x86_64
UUID:           373fc909-9a6d-482b-9740-0b1363ec5aca
OS Type:        hvm
State:          running
CPU(s):         1
CPU time:       19.9s
...

# virsh  vcpuinfo  CentOS-8-x86_64
VCPU:           0
CPU:            3
State:          running
CPU time:       24.2s
CPU Affinity:   yyyy

3.2、动态调整CPU

3.2.1、增加CPU

virsh setvcpus CentOS-8-x86_64 4 --config
virsh vcpuinfo CentOS-8-x86_64

3.2.2、减少CPU

virsh setvcpus CentOS-8-x86_64 2 --config
virsh vcpuinfo CentOS-8-x86_64

# 调整cpu的时候,同步修改配置
grep vcpu /etc/libvirt/qemu/CentOS-8-x86_64.xml

3.3、设置cpu方法

3.3.1、普通重置

virsh shutdown CentOS-8-x86_64
virsh start CentOS-8-x86_64

3.3.2、同步重置

virsh setvcpus CentOS-8-x86_64 1 --config
virsh vcpuinfo CentOS-8-x86_64
grep vcpu /etc/libvirt/qemu/CentOS-8-x86_64.xml

3.4、cpu绑定

3.4.1、虚拟机内部CPU号绑定

virsh vcpupin CentOS-8-x86_64 0 1   # 将kvm的0号cpu绑定在宿主机的1号cpu上
virsh vcpupin CentOS-8-x86_64 1 0   # 将kvm的1号cpu绑定在宿主机的0号cpu上

3.4.2、检查效果

root@localhost:~# virsh vcpuinfo CentOS-8-x86_64
VCPU:           0
CPU:            1
State:          running
CPU time:       25.9s
CPU Affinity:   -y--

VCPU:           1
CPU:            0
State:          running
CPU time:       0.8s
CPU Affinity:   y---

VCPU:           2
CPU:            3
State:          running
CPU time:       0.1s
CPU Affinity:   yyyy

 

posted @ 2023-05-22 15:54  小粉优化大师  阅读(97)  评论(0编辑  收藏  举报