3. 虚拟化支持

曦云系列GPU支持以下虚拟化特性:

  • 物理GPU透传模式,支持GPU直通到虚拟机中使用

  • SRIOV,基于硬件虚拟化的算力切分,支持以下两种模式:

    • Flat模式,在宿主机上直接使用VF

    • VF透传模式,支持VF直通到虚拟机中使用

  • sGPU(Sliced GPU),基于软件虚拟化的算力切分

不同的虚拟化特性可以满足不同的虚拟化场景需求,例如:

  • 需要硬件/OS隔离和GPU互联的场景可以使用物理GPU透传

  • 需要硬件隔离和算力切分的场景可以开启SRIOV

  • 需要细粒度算力显存资源切分的场景可以使用sGPU

3.1. 虚拟机环境配置选项

在使用物理GPU透传模式或VF透传模式时,需要使用虚拟机。在虚拟机中正确使用GPU的虚拟化功能,需要按照以下建议正确配置宿主机的BIOS和OS启动选项。

3.1.1. 宿主机BIOS配置说明

开启虚拟化首先需要确认BIOS的配置是否满足,常见影响虚拟化的BIOS配置如下:

  • CPU的虚拟化配置(以x86为例)

    • Intel CPU VT-x Support,选择 Enabled

    • AMD CPU AMD-V(或SVM)Support,选择 Enabled

  • MMIO空间相关配置

    MMIO Size,如果有该选项,建议使用最高配置

  • PCI相关配置

    • SRIOV Support,选择 Enabled

    • ARI Support,选择 Enabled

    • ACS Support,选择 Enabled

    • IOMMU(或SMMU)Support,选择 Enabled

备注

由于不同服务器厂商使用的BIOS版本不同,有些参数可能不支持或是隐藏的配置,如对BIOS的虚拟化支持有疑问,请咨询相关服务器厂商。

3.1.2. 宿主机Linux内核虚拟化参数配置

使用透传模式时,Linux内核参数需要增加IOMMU的相关配置。

操作步骤

例如,运行在Intel CPU上的Ubuntu系统中,使用root用户修改 /etc/default/grub

  1. GRUB_CMDLINE_LINUX_DEFAULT="" 修改为 GRUB_CMDLINE_LINUX_DEFAULT="iommu=pt intel_iommu=on"

  2. 执行以下命令。

    sudo update-grub
    
  3. 重启系统,登入系统查看 /proc/cmdline,确保改动生效。

    cat /proc/cmdline
    

x86平台上Linux内核IOMMU配置参数,参见表 3.1。Arm平台上Linux内核IOMMU配置参数,参见表 3.2

表 3.1 x86平台上Linux内核IOMMU配置参数

参数格式

说明

intel_iommu=on

启用Intel IOMMU

amd_iommu=on

启用AMD IOMMU

iommu=pt或iommu.passthrough=1

仅在PCI设备透传时使用IOMMU

表 3.2 ARM平台上Linux内核IOMMU配置参数

参数格式

说明

iommu.passthrough=1

仅在PCI设备透传时使用SMMU

3.1.3. Hypervisor支持

沐曦虚拟化功能支持以下Hypervisor:

  • QEMU/KVM及基于QEMU/KVM实现的云平台软件,例如OpenStack

  • VMware ESXi,仅支持物理GPU透传

3.1.4. 虚拟机配置建议

关于虚拟机的配置建议如下:

  • 对于x86平台,建议使用Q35虚拟硬件平台,Q35支持PCIe相关特性。

  • 配置虚拟机时,需要根据服务器的NUMA拓扑合理分配CPU与内存资源,否则可能会影响性能。

  • 对于虚拟机内支持PCIe P2P,由于虚拟机依赖IOMMU,默认需要开启ACS,开启ACS会影响PCIe设备的P2P I/O路径,引入性能问题。

    建议对支持ATS的PCIe设备透传后,打开其P2P路径上PCIe bridge的ACS Direct Translated bit,以降低ACS引入的性能损失。

  • 使用OpenStack的虚拟机管理软件配置GPU透传时,需要根据当前的固件版本选择设备类型:

    • 不支持SRIOV的固件,物理GPU透传对应的设备类型为type-PCI

    • 支持SRIOV的固件,物理GPU透传对应的设备类型为type-PF

    • 支持SRIOV的固件,VF透传对应的设备类型为type-VF

3.2. 内核驱动程序

曦云系列GPU的内核驱动有以下两个:

  • MetaX GPU Virtualization Manager(mxgvm),在开启GPU SRIOV硬件虚拟化的环境中,运行在宿主机上的PF驱动,负责管理监控VF的运行。SRIOV以外的虚拟化模式下,无需安装和加载此项。

  • MetaX GPU Driver(metax),驱动物理GPU和虚拟GPU(VF/sGPU),根据场景可以运行于宿主机或虚拟机上。

3.2.1. 驱动安装与反安装

  • SRIOV以外的虚拟化模式下,驱动的安装与反安装参见 2.2.3 安装驱动

  • SRIOV模式下,驱动的安装与反安装参见 3.5 SRIOV

3.2.2. mxgvm驱动的配置文件和主要参数

除加载mxgvm时可以指定参数之外,也可以编辑 /etc/mxgvm_config 来配置参数,常用参数参见表 3.3

表 3.3 mxgvm驱动的配置参数

参数格式

说明

vf_num=n

n 为VF的数量,默认值为4

针对C500系列,开启多VF时,建议使用4VF,兼顾多实例的同时,相比8VF可获得更高的利用率

pci-list=<bdf1>,<bdf2>

指定设备列表,配合 list-type 指定目标设备,BDF格式 <domain>:<bus>:<slot>.<func>,例如0000:01:00.1

list-type=<val>

val=0 时,pci-list 中的设备不开启SRIOV

val=1 时,pci-list 中的设备开启SRIOV,默认值为0

/etc/mxgvm_config 上会自动记录上一次mxgvm加载时的配置参数。再次加载时,若不指定任何参数,则默认使用 /etc/mxgvm_config 中的配置。

更改VF的数量无需重启,只需卸载mxgvm(参见 3.5.1.2 驱动加载与卸载),再使用新的 vf_num 参数重新加载mxgvm即可。

卸载mxgvm包时,会提示是否需要保留 /etc/mxgvm_config 文件,用户可根据自己的需求进行选择。

3.3. 设备模型

metax驱动程序用于驱动物理GPU和虚拟GPU(VF/sGPU),针对不同类型的设备,驱动定义了不同的设备模型,目前支持的设备模型有:

  • Native设备模型(默认),用于驱动真实可见的硬件设备,如物理GPU,SRIOV的VF

  • sGPU设备模型,用于软件虚拟GPU,适用于基于容器的云端业务场景

引入设备模型的目的在于细分虚拟化应用场景,满足多元化的业务需求。

驱动程序默认的设备模型为Native设备模型,用户可以在不重启主机不卸载驱动(无运行业务)的情况下切换设备模型,以满足线上的动态配置需求。

Native设备模型配置简单,除了指定Native模型无需其它配置,模型切换及sGPU模型的配置参见 3.6 sGPU

3.4. 物理GPU透传

物理GPU透传不需要开启SRIOV,因此不需要安装mxgvm驱动。

将目标物理GPU上所有业务停止后,配置虚拟机将GPU通过VFIO驱动绑定到虚拟机,启动虚拟机;然后在虚拟机里安装metax驱动,参见 2.2.3 安装驱动;驱动安装后,虚拟机启动时会自动加载metax驱动。

3.4.1. 固件

在物理GPU透传模式下,更新固件在虚拟机中进行,操作步骤参见 2.2.4 更新固件

备注

  • 请使用常规的VBIOS固件文件,不要使用带 -VF 后缀的VBIOS固件文件。

  • 更新VBIOS后,需要重启宿主机或对GPU执行warm reset才能使新VBIOS生效,只重启虚拟机无法使其生效。

3.4.2. 注意事项

若要对透传到虚拟机中的GPU执行warm reset,需要在宿主机安装mxhv包,具体参见《曦云® 系列通用GPU Warm Reset使用指南》中“PF透传虚拟机场景”章节。

3.5. SRIOV

SRIOV可以将物理GPU虚拟为多个VF使用,每个VF拥有物理GPU的部分硬件资源。开启SRIOV硬件虚拟化时可以指定VF数量,以及对哪些GPU设备开启虚拟化。

多个VF的资源是均等的。VF可以在宿主机上使用,这种使用方式称为flat模式;VF也可以透传到虚拟机中使用,这种使用方式称为透传模式。

3.5.1. Flat模式

3.5.1.1. 驱动安装与反安装

操作步骤

  1. 将驱动的run安装文件下载到目标机器上,进入文件所在目录,执行以下命令安装驱动:

    sudo ./metax-driver-x.x.x.x-deb-x86_64.run -- -f -m vt_flat
    
  2. 如果安装过程中检测到VBIOS版本过低,此时驱动只提供升级VBIOS的功能,不支持正常的业务功能,请根据 3.5.1.3 固件中的步骤升级VBIOS。

  3. 重启服务器。

    sudo reboot
    
  4. 执行以下命令,查询mxgvm驱动是否已加载。

    lsmod | grep mxgvm
    
  5. 执行以下命令,若回显信息列出所有GPU和VF的信息,则mxgvm驱动工作正常。

    maca-vt
    

    备注

    安装mxgvm包后,会在 /etc/modprobe.d 路径下生成 mxgvm.conf 配置文件,内容如下:

    options metax vf_only=1
    

    目的是让metax驱动只识别VF设备,不会自动和PF设备绑定。因此若不使用VF功能,需要反安装mxgvm包,否则物理GPU无法正常工作。

  6. (可选)若要反安装mxgvm包,执行以下命令,然后重启系统:

    sudo /opt/mxdriver/mxdriver-install.sh -U
    

3.5.1.2. 驱动加载与卸载

安装驱动包后,在系统启动时会自动加载mxgvm和metax。加载mxgvm时会启用GPU的SRIOV虚拟化功能,卸载mxgvm时会禁用GPU的SRIOV虚拟化功能。

若因配置需求,需要手动卸载mxgvm,执行以下操作步骤。

操作步骤

  1. 卸载VF驱动。

    sudo modprobe -r metax 或
    sudo rmmod metax
    
  2. 确保VF没有与任何驱动绑定后,执行以下命令查看mxgvm驱动的“Used by”计数。如果计数为0,说明mxgvm没有被VF使用,可以卸载。

    lsmod | grep mxgvm
    
  3. 卸载mxgvm驱动。

    sudo modprobe -r mxgvm 或
    sudo rmmod mxgvm
    

    备注

    卸载后,GPU的虚拟化功能关闭,VF设备不再可见。

手动加载mxgvm时可以通过vf_num参数来指定VF个数。例如,开启4VF:

sudo modprobe mxgvm vf_num=4

备注

此时metax驱动会自动加载,无需再手动加载。

3.5.1.3. 固件

在Flat模式下更新VBIOS固件的操作与PF模式一致,操作步骤参见 2.2.4 更新固件

备注

请务必安装带 -VF 后缀的VBIOS固件文件。

更新VBIOS并重启宿主机后,可使用以下命令检查当前VBIOS是否支持SRIOV:

sudo mx-smi --show-vbios | grep SRIOV

若显示为 Support,则当前VBIOS支持虚拟化。

3.5.2. VF透传

3.5.2.1. 驱动安装与反安装

操作步骤

  1. 将驱动的run安装文件下载到宿主机上,进入文件所在目录,执行以下命令安装驱动:

    sudo ./metax-driver-x.x.x.x-deb-x86_64.run -- -f -m vt_pt
    
  2. 如果安装过程中检测到VBIOS版本过低,此时驱动只提供升级VBIOS的功能,不支持正常的业务功能,请根据 3.5.2.3 固件中的升级步骤升级VBIOS。

  3. 重启服务器。

    sudo reboot
    
  4. 执行以下命令,查询mxgvm驱动是否已加载。

    lsmod | grep mxgvm
    
  5. 执行以下命令,若回显信息列出所有GPU和VF的信息,则mxgvm驱动工作正常。

    maca-vt
    
  6. 将需要透传的VF卡上所有业务停止后,配置虚拟机将VF透传进虚拟机,启动虚拟机。

  7. 在虚拟机里安装metax驱动,参见 2.2.3 安装驱动

  8. (可选)若要反安装mxgvm包,执行以下命令,然后重启系统:

    sudo /opt/mxdriver/mxdriver-install.sh -U
    

3.5.2.2. 驱动加载与卸载

安装驱动包后,在宿主机系统启动时会自动加载mxgvm,在虚拟机启动时会自动加载metax。加载mxgvm时会启用SRIOV虚拟化,卸载mxgvm时会禁用SRIOV虚拟化。

若因配置需求,需要手动卸载mxgvm,执行以下操作步骤。

操作步骤

  1. 在虚拟机中,执行以下命令卸载VF驱动。

    sudo modprobe -r metax 或
    sudo rmmod metax
    
  2. 关闭虚拟机,确保VF没有与任何驱动绑定后,执行以下命令查看mxgvm驱动的“Used by”计数。如果计数为0,说明mxgvm没有被VF使用,可以卸载。

    lsmod | grep mxgvm
    
  3. 卸载mxgvm驱动。

    sudo modprobe -r mxgvm 或
    sudo rmmod mxgvm
    

    备注

    卸载后,GPU的虚拟化功能关闭,VF设备不再可见。

手动加载mxgvm时可以通过vf_num参数来指定VF个数。例如,开启4VF:

sudo modprobe mxgvm vf_num=4

3.5.2.3. 固件

在VF透传模式下,无法在虚拟机中通过VF驱动更新VBIOS固件,需要在宿主机上操作,操作步骤参见 2.2.4 更新固件

备注

请务必安装带-VF后缀的VBIOS固件文件。

更新VBIOS并重启宿主机后,可使用以下命令检查当前VBIOS是否支持SRIOV:

sudo mx-smi --show-vbios | grep SRIOV

若显示为Support,则当前VBIOS支持虚拟化。

3.5.3. 注意事项

3.5.3.1. VF0显存大小

开启SRIOV后,当VF数量大于1时,VF0的显存比其它VF少256M。

3.5.3.2. Linux DRM对显卡数量的限制

Linux内核版本低于6.8的内核DRM子系统最多支持64个GPU设备。当服务器上GPU卡(包括物理GPU卡和VF GPU卡)超过64个时,超过内核DRM最多支持64数量限制的GPU将无法正常使用。

如果服务器自带显卡,有可能会占用一个DRM设备,此时内核DRM子系统最多只能支持63个GPU设备。

3.5.3.3. 互联模式的限制

一旦开启SRIOV,物理GPU与VF将不支持MetaXLink互联。

3.5.3.4. VF不支持ATS

开启SRIOV后,VF不支持ATS功能。

3.6. sGPU

sGPU是软件实现的算力切分方案,可以基于物理GPU创建最多16个虚拟GPU实例,称之为sGPU设备,主要面向基于容器的云端推理和小模型训练场景,不支持多租户场景。每个sGPU设备可以按照配额分配一定的物理GPU算力和显存单独进行计算。多个sGPU在同一张物理GPU上按照时分复用的方式运行,并按照各自的算力配额进行调度。

3.6.1. 设备管理

使用sGPU的第一步是确认物理GPU是否开启sGPU模型,具体参见 3.7.2.1 设置sGPU设备模型。开启sGPU模型后,可以根据业务需求创建sGPU实例,创建sGPU实例时可以指定实例所需的显存、算力配额。

每个sGPU实例在对应的物理GPU上都有一个sGPU ID,取值范围为0-15,用户可以结合物理GPU ID和sGPU ID找到对应的sGPU实例并进行各种配置操作。

在sGPU实例不再使用且无正在运行的业务时,可以移除sGPU实例来释放其所占用的物理GPU资源。

sGPU运行业务时,可以通过mx-smi命令查看GPU利用率,具体参见 3.7.2.9 查看sGPU利用率。需要结合具体的调度策略来解读利用率。

如何管理sGPU设备参见 3.7.2.2 创建和移除sGPU

3.6.2. 资源管理

3.6.2.1. 显存配额

sGPU的显存配额最小为1M,最大显存配额比物理GPU实际显存少,因为驱动需要预留部分显存作为内部使用。

除了创建sGPU时必须指定显存大小,创建后sGPU的显存支持动态伸缩,在业务运行时可以动态调整显存大小。 动态增大显存的前提是物理GPU有足够的可分配显存,动态减少显存的前提是减少的显存小于sGPU当前未使用的显存大小。

具体如何配置显存参见 3.7.2.3 配置显存配额

3.6.2.2. 算力配额

sGPU的算力配额粒度为1%,最大可配配额为100%。 如果创建sGPU时未指定算力配额且物理GPU可分配算力配额足够,默认算力配额为5%;如果物理GPU的可分配算力配额低于指定的算力配额,sGPU的算力配额为0。

sGPU支持三种调度策略,参见 3.6.3.1 调度策略。算力配额在不同的策略下有不同的解读:

  • 在Best effort策略下,不使用算力配额,即不论算力配额是什么值都不生效

  • 在Fixed share策略下,算力配额代表sGPU实例可使用的最大算力,0代表不参与调度

  • 在Burst share策略下,算力配额代表sGPU实例可使用的最小算力,0代表不参与调度

sGPU创建后,sGPU的算力配额支持动态伸缩,支持在业务运行时进行调整。动态增大算力配额的前提是物理GPU有足够的可分配算力配额。

具体如何配置算力参见 3.7.2.4 配置算力配额

3.6.3. 调度机制

sGPU基于时分复用的方式共享物理GPU算力,sGPU调度器提供了多种调度策略以满足不同的算力切分需求,不同的调度策略在算力利用率、并行度及算力控制上侧重不同。

3.6.3.1. 调度策略

sGPU支持三种调度策略:

  • Best effort策略(默认),物理GPU上的所有sGPU实例基于GPU最大硬件并行度并行工作,最大限度使用物理GPU的算力。

  • Fixed share策略,每个sGPU实例严格按照指定的算力配额使用物理GPU算力,在单位时间内一个sGPU实例使用完自己的算力配额后就会让给其它sGPU实例进行调度。

  • Burst share策略,如果物理GPU有可分配算力配额,可分配配额按照当前所有算力配额非0的sGPU实例数量进行均分,每个sGPU的实际算力配额为指定算力配额加均分后的配额之和。 如果物理GPU没有可分配配额,sGPU实例算力配额就是指定配额,等价于Fixed share策略。

物理GPU切换到sGPU模型后,默认调度策略是Best effort,该物理GPU上的所有sGPU实例统一按照物理GPU当前调度策略进行调度。 在sGPU模型下,即使物理GPU有sGPU正在运行业务时,也可以随时修改物理GPU的调度策略。如何配置调度策略参见 3.7.2.7 配置查看调度策略

3.6.3.2. sGPU优先级

sGPU支持在线/离线业务混布的功能,在线业务可以抢占离线业务,此功能通过设置sGPU的优先级来实现。sGPU支持两种优先级:

  • Normal(默认),此优先级的sGPU受物理GPU调度策略的控制,运行离线业务。

  • High,此优先级的sGPU不受物理GPU调度策略的控制,运行在线业务。

如何配置查看sGPU优先级参见 3.7.2.6 配置查看sGPU优先级

备注

  • sGPU创建时默认优先级为Normal,无论sGPU是否有业务在运行, 都可以动态调整sGPU的优先级。

  • 当物理GPU中存在High sGPU时,即使High sGPU没有运行业务,此物理GPU下的所有Normal sGPU都将不再调度。

  • 当Normal sGPU被High sGPU抢占后,Normal sGPU的业务处于挂起状态, 但占有的显存资源不会释放,直到该物理GPU的High sGPU都被移除才会继续运行。

  • 当物理GPU中存在多个High sGPU时,它们之间以Best effort策略进行调度。

3.6.3.3. timeslice

物理GPU提供了timeslice属性来定义1%的算力配额所对应的时间片,也就是说,调度窗口的大小是timeslice乘以100,timeslice的默认值为10ms,有效值为1ms-100ms。 timeslice的大小与业务的计算模式相关,对GPU使用率和吞吐率有一定的影响。 对于推理和小模型训练通常10ms是比较合适的,对于计算量较大的业务可以适当提高timeslice的值来获取更佳的GPU利用率和吞吐率。

如何配置timeslice参见 3.7.2.8 配置timeslice

3.6.4. 容器接口

将一个sGPU设备绑定到容器时,容器管理软件需要感知以下接口:

  • /dev/mxcd,metax驱动管理字符设备

  • /dev/dri/renderDXXX,sGPU所属物理GPU对应的DRI设备文件,XXX是3位的十进制数字,代表了DRI设备的minor ID

  • /dev/sgpuXXX,代表一个sGPU设备对应的字符设备,XXX是3位的十进制数字,代表了sGPU的minor ID

3.6.4.1. 获取物理GPU DRI设备文件的minor ID

  1. 执行以下命令查看物理GPU的设备ID和PCI总线地址的对应关系:

    mx-smi -L
    

    例如,获得如下显示结果:

    GPU#0 0000:01:00.0
    
  2. 执行以下命令获取物理GPU的DRI设备文件:

    ls -l /dev/dri/by-path | grep 0000:01:00.0
    

    例如,获得如下显示结果,其中renderD129即为要获取的设备信息:

    lrwxrwxrwx 1 root root 13 Oct 24 19:03 pci-0000:01:00.0-render -> ../renderD129
    

3.6.4.2. 获取sGPU设备文件的minor ID

在使用mx-smi显示sGPU实例时,会显示sGPU实例的minor ID,具体命令行参见 3.7.2.2 创建和移除sGPU

3.6.5. 注意事项

使用sGPU时需要注意以下问题:

  • 使用sGPU的Fixed share和Burst share调度策略时,MXMACA SDK不支持开启graph mode,运行业务时需要手动将下列环境变量的值设为0:

    • MACA_GRAPH_LAUNCH_MODE

    • MACA_DIRECT_DISPATCH

  • sGPU主要面向基于容器的云端业务场景,建议使用沐曦配套的容器组件进行部署管理

  • sGPU设备实例不支持互联功能,互联功能包括PCIe P2P和MetaXLink

  • sGPU的目标业务场景是推理和小模型训练,除了GPU的性能,服务器侧的硬件性能对该场景下性能指标也有较大影响

  • 当sGPU实例数量较多时,Best effort策略在某些平台上存在一定的算力不均衡

  • 隔离性不如SRIOV,致命故障或恶意代码会影响物理GPU上的所有sGPU实例,因此不支持多租户场景

  • 建议在生产环境部署中一个容器只绑定一个sGPU设备

  • 使用Profiler时,GPU与sGPU利用率信息会失真

3.7. mx-smi的虚拟化支持

本节仅列出虚拟化常用命令,更多mx-smi命令参见《曦云® 系列通用GPU mx-smi使用手册》。

3.7.1. SRIOV支持

3.7.1.1. 显示VF

显示当前系统所有GPU和VF设备。

mx-smi -L

显示结果中,每个VF都有特定的ID,可用于在其它操作中指定目标VF。

3.7.1.2. VF FLR

触发第二个VF的FLR。

mx-smi -i 1 –vfflr

3.7.2. sGPU支持

3.7.2.1. 设置sGPU设备模型

使用以下命令可以查看每个物理GPU当前是否开启sGPU设备模型:

mx-smi sgpu --show-mode

相应的输出结果如图 3.1 所示:

../_images/image4.png

图 3.1 查看设备模型

如果sgpu mode为Disabled,使用以下命令启用sGPU:

mx-smi sgpu --enable -i 0

其中的 -i 0 指定的是物理GPU的ID。使用 --disable 选项就会禁用sGPU,切换回Native设备模型。

3.7.2.2. 创建和移除sGPU

在sGPU设备模型下,使用以下命令可以在一张物理GPU上创建sGPU实例:

mx-smi sgpu -c --compute 10 --vram 4G --alias sgpu-test -i 0

命令行中的各个选项含义如下:

  • 选项 -c 表示创建sGPU实例

  • 选项 --compute 指明新建sGPU实例的算力为物理GPU的10%

  • 选项 --vram 指明新建sGPU实例的显存大小为4G

  • 选项 --alias 指明新建sGPU实例的别名,别名是用户自定义的字符串,便于区分设备

  • 选项 -i 指明在ID为0的物理GPU上创建sGPU

创建sGPU实例后,可以使用以下命令查看sGPU实例:

mx-smi sgpu

输出结果如图 3.2 所示:

../_images/image5.png

图 3.2 查看sGPU实例

若要将物理GPU 0上的sGPU ID为3的sGPU实例移除,执行以下命令:

mx-smi sgpu -r 3 -i 0

命令行中的各个选项含义如下:

  • 选项 -r 表示移除目标物理GPU上sGPU ID为3的sGPU实例

  • 选项 -i 指明目标物理GPU的ID为0

对正在运行业务的sGPU执行移除操作会报错,需要在业务终止后再进行移除。

一张物理GPU上最多可以创建16个sGPU实例,按照创建顺序,每个sGPU有自己的sGPU ID,ID值范围是0-15。

3.7.2.3. 配置显存配额

除了在创建sGPU时可以指定显存配额,sGPU创建后也可以通过以下命令修改显存大小:

mx-smi sgpu --set 0 --vram 4G -i 0

命令行中的各个选项含义如下:

  • 选项 --set 指明目标sGPU的ID为0

  • 选项 --vram 指明新的显存大小为4G

  • 选项 -i 指明目标物理GPU的ID为0

使用以下命令可以查看sGPU的显存配额和显存使用情况:

mx-smi sgpu --show-memory

输出结果如图 3.3 所示:

../_images/image6.png

图 3.3 查看sGPU内存信息

3.7.2.4. 配置算力配额

除了创建sGPU时可以指定算力配额,sGPU创建后也可以通过以下命令修改算力配额:

mx-smi sgpu --set 0 --compute 50 -i 0

命令行中的各个选项含义如下:

  • 选项 --set 指明目标sGPU的ID为0

  • 选项 --compute 指明新的算力配额为50%

  • 选项 -i 指明目标物理GPU的ID为0

3.7.2.5. 查看物理GPU可用资源

在创建sGPU前,可执行以下命令查看当前物理GPU可分配资源:

mx-smi sgpu --show-remain

输出结果中包含物理GPU总显存大小、可分配显存大小和可分配算力配额。

3.7.2.6. 配置查看sGPU优先级

执行以下命令修改sGPU的优先级:

mx-smi sgpu --set-queue-priority 1 -s 2 -i 0

命令行中的各个选项含义如下:

  • 选项 --set-queue-priority 指明目标sGPU的优先级为High

    • 0:Normal

    • 1:High

  • 选项 -s 指明目标sGPU的ID为2

  • 选项 -i 指明目标物理GPU的ID为0

执行以下命令查看当前sGPU的优先级:

mx-smi sgpu

显示页面的 Priority 列指明对应行的sGPU的优先级。

3.7.2.7. 配置查看调度策略

执行以下命令修改物理GPU的调度策略:

mx-smi sgpu --set-sched-class 1 -i 0

命令行中的各个选项含义如下:

  • 选项 --set-sched-class 指明目标GPU的调度策略为fixed share

    • 0:best effort

    • 1:fixed share

    • 2:burst share

  • 选项 -i 指明目标物理GPU的ID为0

执行以下命令查看当前物理GPU调度策略:

mx-smi sgpu --show-sched-class -i 0

3.7.2.8. 配置timeslice

执行以下命令修改物理GPU的timeslice:

mx-smi sgpu --set-timeslice 20 -i 0

命令行中的各个选项含义如下:

  • 选项 --set-timeslice 指明目标GPU的timeslice为20ms

  • 选项 -i 指明目标物理GPU

执行以下命令查看当前物理GPU的timeslice:

mx-smi sgpu --show-timeslice -i 0

3.7.2.9. 查看sGPU利用率

使用以下命令查看sGPU实例利用率:

mx-smi sgpu --show-usage