鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

功能测试

前提条件

已提前创建虚拟机,可支持虚拟机规格包括但不限于2C8G、4C8G、4C16G、8C16G、16C32G、32C64G。

内存带宽限制

  1. 编辑虚拟机XML。
    1
    virsh edit <vm name>
    
  2. 使用以下XML将Node 0内存带宽限制到60%。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <domain type='kvm'>
    ......
      <cputune>
        <memorytune vcpus='0-31'>
          <node id='0' bandwidth='60'/>
        </memorytune>
      </cputune>
    ......
    </domain>
    
  3. 启动虚拟机。
    1
    virsh start <vm name>
    
  4. 查看对应MPAM控制组是否创建成功,控制组目录在“/sys/fs/resctrl”,新的控制组名根据vm id、name以及限制的vCPU列表决定。
    1. 查看是否有对应控制组。
      ll /sys/fs/resctrl

    2. 查看对应控制组schemata文件内容是否与XML配置匹配。
      cat /sys/fs/resctrl/<group name>/schemata

  5. 进入虚拟机使用lmbench测试带宽观察是否有对应变化。
    • 不同规格虚拟机能够达到的内存带宽上限不同,MPAM是根据理论上限限制带宽,并非虚拟机能达到的实际上限,测试过程重点关注变化趋势。
    • 测试中使用的命令需要根据虚拟机规格自行调整并发数量-P以及内存页大小参数,-P参数保持与vCPU数量一致。

    以32C64G规格虚拟机为例。

    1. 将虚拟机绑核在NUMA 0,设置内存带宽为50,启动并进入虚拟机,使用以下命令测试内存带宽,得到当前内存带宽。
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      <cputune>
          <vcpupin vcpu='0' cpuset='0'/>
          <vcpupin vcpu='1' cpuset='1'/>
          ......
          <vcpupin vcpu='30' cpuset='30'/>
          <vcpupin vcpu='31' cpuset='31'/>
      </cputune>
      <numatune>
          <memnode cellid='0' mode='strict' nodeset='0'/>
      </numatune>
      
      1
      /opt/lmbench/bin/bw_mem -P 32 -N 5 512M rd
      

    2. 重复上述步骤将内存带宽修改为80,重启虚拟机,使用相同命令再次测试,观察带宽是否有明显上升。
      1
      2
      virsh shutdown <vm name>
      virsh start <vm name>
      

L3 Cache限制

libvirt限制L3 Cache时,要求独占Cache Line,需要事先调整其他控制组(包括默认控制组)的Cache Line使用情况,空余出足够的Cache Line。

  1. 修改默认控制组L3 Cache数据,将最高两位掩码对应的Cache Line设置为空闲。
    1
    echo "L3:1=3ffffff" > /sys/fs/resctrl/schemata
    
  2. 编辑虚拟机XML。
    1
    virsh edit <vm name>
    
  3. 使用以下XML将Node 0 L3 Cache限制为4MiB,对应机型的两条Cache Line。
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    <domain type='kvm'>
    ......
      <cputune>
        <cachetune vcpus='0-15'>
          <cache id='0' level='3' type='both' size='4' unit='MiB'/>
          <cache id='0' level='3' type='priority' size='2'/>
        </cachetune>
      </cputune>
    ......
    </domain>
    
  4. 启动虚拟机。
    1
    virsh start <vm name>
    
  5. 查看对应MPAM控制组是否创建成功,控制组目录在“/sys/fs/resctrl”,新的控制组名根据vm id、name以及限制的vCPU列表决定。
    1. 查看是否有对应控制组。
      1
      ll /sys/fs/resctrl
      

    2. 查看对应控制组schemata文件内容是否与XML配置匹配。
      1
      cat /sys/fs/resctrl/<group name>/schemata
      

  6. 查看对应控制组的监控数据,观察限制是否生效,数据是否与XML设置的大小匹配,数据单位为Byte。
    1
    2
    cd /sys/fs/resctrl/<group name>/mon_data/mon_L3_01
    watch -n 1 grep . *