0

当我在具有 2 个 CPU 插槽和 4 个 GPU 的裸机主机系统上安装 Nvidia CUDA Toolkit 时,NUMA 设置如下所示:

numactl --hardware

available: 6 nodes (0,8,252-255)
[...]

在哪里:

  • 0 和 8 是 CPU
  • 252,253,254,255 是 GPU

安装 CUDA 后,我们可以检查 cpuset.mems:

$ cat /sys/fs/cgroup/cpuset/cpuset.mems 
0,8,252-255

现在我的问题是:当我将 2 个 GPU 传递给 KVM 来宾时,使用:

[...]
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <source>
        <address domain='0x0004' bus='0x04' slot='0x00' function='0x0'/>
      </source>
      <address type='pci' domain='0x0000' bus='0x01' slot='0x01' function='0x0'/>
    </hostdev>
      <source>
        <address domain='0x0004' bus='0x05' slot='0x00' function='0x0'/>
      </source>
      <address type='pci' domain='0x0000' bus='0x01' slot='0x02' function='0x0'/>
    </hostdev>
[...]

我希望设置是

  • CPU0 NUMA ID 0
  • GPU1 NUMA ID 255
  • GPU2 NUMA ID 254

但似乎他们正在获得随机值:

numactl --hardware
available: 3 nodes (0,5-6)

有时是0,7-8有时0,5-6

KVM/libvirt 中是否有可能修复 GPU 编号,或者至少告诉他们从 255 开始倒退,因为它是裸机完成的?

谢谢!

4

0 回答 0