中文
注册

在虚拟化环境中使能cluster调度优化特性

在使用cluster调度优化特性之前,需要使能cluster调度优化特性。本文将介绍在虚拟化环境中使能cluster调度优化特性的方法。

在虚拟化环境中,虚拟机的ACPI或DT信息是由虚拟化组件生成的。虚拟化组件会根据用户配置的CPU拓扑信息生成ACPI或DT,并将其与虚拟机内核一起加载到虚拟机内存地址空间中,以支持虚拟机内部感知CPU拓扑信息,从而优化任务调度决策。

本文将展示如何设置虚拟机的vCPU拓扑信息,以及验证虚拟机是否已经接收到这些信息,最后使能cluster调度优化特性。

使能cluster调度优化特性要求用户具有root权限,操作步骤如下:

  1. 查看物理机CPU的拓扑结构和cluster分组情况。

    不同型号的CPU cluster分组可能会有所不同,因此在使用之前需要确认CPU cluster的分组情况。

    cat /sys/devices/system/cpu/cpu0/topology/cluster_cpus_list

    预期结果:

    0-3

    本例表示CPU0所在的cluster中包含CPU 0~3,即4个core为一组cluster。

  2. 设置虚拟机xml配置。

    例如需要配置16个CPU的虚拟机,则需要设置vCPU的拓扑配置。

    1. 使用libvirt对虚拟机配置进行管理,执行如下命令打开虚拟机的xml配置文件,其中VM是待编辑的虚拟机的名称。
      virsh edit VM
    2. 按“i”进入编辑模式,在编辑界面中修改虚拟机的xml。

      将第一行<domain type='kvm'>修改为如下内容。

      <domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>

      在domain节中添加以下内容。

        <cputune>
          <vcpupin vcpu='0' cpuset='32'/>
          <vcpupin vcpu='1' cpuset='33'/>
          <vcpupin vcpu='2' cpuset='34'/>
          <vcpupin vcpu='3' cpuset='35'/>
          <vcpupin vcpu='4' cpuset='36'/>
          <vcpupin vcpu='5' cpuset='37'/>
          <vcpupin vcpu='6' cpuset='38'/>
          <vcpupin vcpu='7' cpuset='39'/>
          <vcpupin vcpu='8' cpuset='40'/>
          <vcpupin vcpu='9' cpuset='41'/>
          <vcpupin vcpu='10' cpuset='42'/>
          <vcpupin vcpu='11' cpuset='43'/>
          <vcpupin vcpu='12' cpuset='44'/>
          <vcpupin vcpu='13' cpuset='45'/>
          <vcpupin vcpu='14' cpuset='46'/>
          <vcpupin vcpu='15' cpuset='47'/>
          <emulatorpin cpuset='32-47'/>
        </cputune>
        <qemu:commandline>
          <qemu:arg value='-smp'/>
          <qemu:arg value='cpus=16,maxcpus=16,sockets=1,dies=1,clusters=4,cores=4,threads=1'/>
        </qemu:commandline>
      • 在vcpupin中,vcpu代表虚拟机中的CPU编号,而cpuset则代表物理机中的CPU编号,通过这个参数完成vCPU和物理CPU的1:1绑核操作。
      • QEMU的commandline中描述了vCPU的拓扑,其中包括16个CPU,最大支持16个CPU。每个CPU都位于一个socket上,每个socket上有一个die,每个die上有4个cluster,每个cluster上有4个core,每个core可以执行1个线程。这种拓扑结构可以帮助优化虚拟机的性能。
      • 在配置vCPU拓扑时,需要注意符合物理CPU的结构,以确保最佳的性能优化效果。在设置cores为4时,qemu会将vCPU 0-3绑定在一个cluster上。因此,在使用vcpupin对vCPU和物理CPU进行绑定时,需要绑定在同一个cluster上的4个物理CPU,例如CPU 32~35。如果物理CPU不在同一个cluster上,可能会导致期望的优化效果失效。
    3. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。
  3. 确认vCPU拓扑生效。
    1. 启动虚拟机。
      virsh start VM --console
    1. 等待虚拟机系统启动完成后,在虚拟机控制台中执行如下命令查看CPU0所属的CPU集群中的CPU编号列表。
      cat /sys/devices/system/cpu/cpu0/topology/cluster_cpus_list

      预期结果:

      0-3

    根据2中的参数说明,可以发现vCPU 0~3被绑定在同一个cluster上,而这个cluster中的物理核心为32~35。由此可知,拓扑已经生效。

  4. 在虚拟机中使能cluster调度优化,将Linux内核的调度器设置为集群调度器。
    echo 1 > /proc/sys/kernel/sched_cluster
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词