入门指南
1. PCIe 设备基本信息查询
-
为确保服务器和操作系统已经识别 MTT S 系列 GPU,在 Host 操作系统中输入
lspci -d 1ed5:命令查询设备 ID# MTT S3000$ lspci -d 1ed5:03:00.0 3D controller: Moore Threads Technology Co.,Ltd MTT S300003:00.1 Multimedia audio controller: Moore Threads Technology Co.,Ltd MTT HDMI/DP Audio正常情况下,对应显卡的显示内容应该如上所示
2. vGPU 切分
vGPU 的切分支持两种方式
- mdevctl 工具
- 直接操作设备文件
两种方式的本质都是对设备文件进行操作以达到对 vGPU 设备管理的目的。MT vGPU 支持的显卡切分类型请见附录 MTT S 系列显卡支持的 vGPU 切分类型。
切分方式一:推荐使用 mdevctl 工具对显卡进行切分操作,使用mdevctl工具切分显卡的流程如下:
-
查看 GPU PCI 设备 BDF 地址
$ lspci -d 1ed5:03:00.0 3D controller: Moore Threads Technology Co.,Ltd MTT S300003:00.0 为 GPU 的 BDF 地址
$ virsh nodedev-list --cap pci| grep 03_00_0pci_0000_03_00_0完整的标识地址为 0000:03:00.0
-
创建 vGPU
$ mdevctl start -u c4f702ca-c69d-4d7d-a526-5fdcf78d3428 -p 0000:03:00.0 --type mtgpu-1101c4f702ca-c69d-4d7d-a526-5fdcf78d3428是 UUID ,是 vGPU 设备的唯一标识;此 ID 可以是固定的 ID,也可以通过 uuidgen 工具生成:uuidgen=> xxxxxxx-pGPU PCI 设备的 BDF 地址-typevGPU 切分类型
-
查看创建的 vGPU 设备
$ mdevctl listc4f702ca-c69d-4d7d-a526-5fdcf78d3428 0000:03:00.0 mtgpu-1101
切分方式 2: 操作设备文件
-
查看并操作文件设备
$ find /sys/ -name mdev_supported_types/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/0000:02:00.0/0000:03:00.0$ echo c4f702ca-c69d-4d7d-a526-5fdcf78d3428 > /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/0000:02:00.0/0000:03:00.0/mdev_supported_types/mtgpu-1101/create设备文件实际地址可按照这种方式去定位,/sys/class/mdev_bus/domain\:bus\:slot.function/mdev_supported_types/ ,上面的地址 0000:03:00.0,则 domain 为 0000、bus 为 03、slot 为 00、funtion 为 0
-
查看切分出的 vGPU 设备
$ ls /sys/bus/mdev/devices/c4f702ca-c69d-4d7d-a526-5fdcf78d3428
3. 常用操作
3.1 vGPU 查询
方法 1,使用 mdevctl 工具
$ mdevctl list
c4f702ca-c69d-4d7d-a526-5fdcf78d3428 0000:03:00.0 mtgpu-1101
方法 2,操作设备文件
$ ls /sys/bus/mdev/devices/
c4f702ca-c69d-4d7d-a526-5fdcf78d3428
3.2 vGPU 删除
方法 1,使用 mdevctl 工具
$ mdevctl stop -u c4f702ca-c69d-4d7d-a526-5fdcf78d3428
方法 2,操作设备文件
$ echo 1 > /sys/bus/mdev/devices/c4f702ca-c69d-4d7d-a526-5fdcf78d3428/remove
3.3 调度方式配置
摩尔线程的 vGPU 支持两种调度方式:性能最优调度方式和时间切片调度方式。
注意:默认配置为性能最优调度方式
性能最优调度方式 (Best-effort scheduling)
性能最优调度方式,遵循以下规则
- 跨多个 vGPU 来平衡性能
- 每个 vGPU 独占整个 GPU 处理周期。
处理期间不会被其他 vGPU 打断,只有在周期完成后,其他 vGPU 才会继续使用。 在某些极端的场景下,某个 vGPU 渲染任务多且重,有可能会导致其他 vGPU 无法获得时间片,从而导致经常挂起的状态。
时间切片调度方式 (Time-sliced scheduling)
在此种调度方式下,激活的 vGPU 会等分当前 GPU 的算力,即 equal share mode
配置 MT vGPU 调度方式
调度方式通过安装驱动时进行修改。
- 在 /etc/modprobe.d 目录下创建
mtgpu.conf文件。 - 在配置文件中,赋予参数
mtgpu_vgpu_scheduling_policy不同值(0 或 1)来选择调度方式。其中,0表示使用 Best Effort Scheduling;1表示使用 Time Sliced Scheduling。
参考如下配置:
option mtgpu mtgpu_vgpu_scheduling_policy=0
说明:如果选择了 Time Sliced Scheduling,
mtgpu_vgpu_time_sliced_value的值会决定时分复用的时间,以毫秒为单位。
- 重新加载 mtgpu 驱动或重启服务器生效
3.4 限制最大分辨率
mtgpu-1101 类型默认可以支持 4K 显示,由于 4K 对 GPU 资源消耗较多,并发时可能会影响其他用户的体验,因此 mtgpu-1101 类型 4k 显示功能可以在加载驱动阶段禁用
- 在 /etc/modprobe.d 目录下创建
mtgpu.conf文件,在配置文件中添加
options mtgpu vgpu_1g_support_4k=0
- 重新加载 mtgpu 驱动或重启服务器生效
3.5 禁用 Guest 驱动自动升级
Host 驱动升级 后 Guest 默认会收到升级提醒,可以通过配置文件关闭升级提醒
- 在 /etc/modprobe.d 目录下创建
mtgpu.conf文件,在配置文件中添加
options mtgpu vgpu_upgrade_mode=0
- 重新加载 mtgpu 驱动或重启服务器生效
说明:2.5.0 升级到 2.5.6 仍然需要删除 /var/local/mthreads/wddm_driver.zip 关闭 Guest 升级服务,2.5.6 升级到更高版本时可以通 vgpu_upgrade_mode=0 配置关闭
3.6 使用 MT Virtual Display
查看 MT-virt 显示器标号,例如 MT-virt 显示器为 2 号显示器,屏幕设置成仅在 2 上显示
