在虚拟机场景下使用ATB Models进行推理时,为提高性能,需要用户进行手动绑核操作:
- 在虚拟机中,使用npu-smi info命令查询npu对应的pci id,如图1所示。
图1 npu 0对应的pci id为0000:08:00.0
- 查询物理机和虚拟机的pci id对应关系。在物理机上使用virsh edit {虚拟机名称}查询,虚拟机名称可通过virsh list --all查询到。
查询页面如
图2所示,其中可以找到物理机和虚拟机的pci之间的关系。
图2 虚拟机上的pci id 0000:08:00.0对应了物理机的0000:C1:00.0
- 在物理机上使用命令cat /sys/bus/pci/devices/{pci id}/numa_node查询NUMA(Non Uniform Memory Access Architecture) node,如图3所示。
图3 0000:C1:00.0对应的NUMA node为6
- 在物理机上使用命令lscpu查询NUMA node对应的cpu,如图4所示。
图4 NUMA node 6对应的cpu为192-223
- 查询物理机和虚拟机的NUMA node对应关系,在物理机上使用命令virsh edit {虚拟机名称}查询,虚拟机名称可通过命令virsh list --all查询。查询页面如图5所示:
红框1表示了虚拟机cpu和物理机cpu的对应关系,如:虚拟机cpu 191对应了物理机247。
红框2的<numa>中cell id='0' cpus='0-23'表示numa_node = 0时,虚拟机CPU号为0-23。
物理机NUMA node 6的cpu为192-223,经查询,其对应虚拟机cpu为144-167,即物理机NUMA node 6对应虚拟机NUMA node 6,因此npu 0对应的虚拟机NUMA node为6。
图5 虚拟机配置界面
- 在虚拟机中执行echo x > /sys/bus/pci/devices/{pci id}/numa_node,其中x为5中查询到的npu对应的虚拟机NUMA node,pci id为虚拟机上的pci id。
以npu 0为例,命令为echo 6 > /sys/bus/pci/devices/0000\:08\:00.0/numa_node。
至此虚拟机npu 0完成绑核操作。
- 通过查询MindIE LLM日志,验证绑核成功的npu。查询日志的方式请参见《MindIE日志及错误码参考》“日志参考 > MindIE LLM日志参考 > 查看日志”章节。
当日志如下图6所示,即可显示绑定成功的npu。
图6 绑定成功的npu