驱逐状态(DRAIN STATES)
本文为NVIDIA-SMI系列命令详解第十五篇-驱逐状态,介绍和演示了nvidia-smi 命令的驱逐选项drain及其附加参数,命令如下:
nvidia-smi drain
该命令用于展示和修改GPU设备的驱逐状态。
支持的参数列表如下:
[-p | --pciid]: GPU PCI 地址,格式如下 XXXX:YY.Z.a
其中 XXXX = 域
YY = 总线
Z = 设备
a = 功能
[-m | --modify]: 修改由 -p 参数指定的 GPU 设备的驱逐状态。
修改此状态时持久模式必须禁用.
0 = 不驱逐
1 = 驱逐
[-q | --query]: 查询由 -p 参数指定的 GPU 设备的驱逐状态。
[-r | --remove]: 如果可能, 移除由 -p 参数指定的 GPU 设备
该 GPU 必须已经使用 -m 参数设置为 驱逐状态 且
该 GPU 的持久模式必须禁用.
[-d | --discover]: 发现系统上之前被移除的所有的 GPU 设备
[-h | --help]: 展示帮助信息
各参数详解
-p 指定 GPU 设备的 PCI 地址
GPU PCI 地址,格式如下 XXXX:YY.Z.a,
-
XXXX = 域
-
YY = 总线
-
Z = 设备
-
a = 功能
运行示例
查看 0 号 GPU 的 驱逐 状态
nvidia-smi -i 0
获取到 0 号 GPU 的 PCI 地址为0000:65:01.0
执行
nvidia-smi drain -p 0000:65:01.0 -q
查询 0 号 GPU 的驱逐状态
可以看到 0 号 GPU 的驱逐状态是 不驱逐
-m 修改指定 GPU 的驱逐状态
修改由 -p 参数指定的 GPU 设备的驱逐状态。
-
0 = 不驱逐
-
1 = 驱逐
注意:
修改此状态时持久模式必须禁用
运行示例
修改 0 号 GPU 的驱逐状态为驱逐
nvidia-smi drain -p 0000:65:01.0 -m 1
可以看到,执行完 驱逐 命令后,0号 GPU 的状态变为 驱逐状态。
再次执行nvidia-smi drain -p 0000:65:01.0 -q查询驱逐状态时,0号 GPU 的状态已经是 驱逐状态
-q 查询指定的 GPU 设备的驱逐状态
查询由 -p 参数指定的 GPU 设备的驱逐状态。
运行示例
查询 0 号 GPU 的驱逐状态
先执行
nvidia-smi -i 0
获取到 0 号 GPU 的 PCI 地址为0000:65:01.0
再执行
nvidia-smi drain -p 0000:65:01.0 -q
查询 0 号 GPU 的驱逐状态
可以看到 0 号 GPU 的驱逐状态是 驱逐
-r 移除由 -p 参数指定的 GPU 设备
如果可能, 移除由 -p 参数指定的 GPU 设备
注意:
该 GPU 必须已经使用 -m 参数设置为 驱逐状态
该 GPU 的持久模式必须禁用
运行示例
移除 0 号 GPU
执行
nvidia-smi -i 0 pm 0
设置禁用 0 号 GPU 的持久模式
执行
nvidia-smi drain -p 0000:65:01.0 -m 1
设置 0 号 GPU 为 驱逐 状态
执行
nvidia-smi drain -p 0000:65:01.0 -r
移除 0 号 GPU,可以看到 0 号 GPU 移除失败,并不是所有的设备都支持移除 GPU。
虽然结果提示 移除 失败,但是再执行nvidia-smi命令查询时
发现原本 8 张 GPU 卡 只显示了 7张,且 PCI 地址为0000:65:01.0的 GPU 设备未显示。
执行
lspci | grep 65:01.0
可以看到 GPU 设备仍然挂载在系统上,只是未在nvidia-smi命令中展示。
-d 发现系统上之前被移除的所有的 GPU 设备
发现系统上之前被移除的所有的 GPU 设备
运行示例
发现系统上之前被移除的所有的 GPU 设备
nvidia-smi drain -d
可以看到,发现设备完成。
再次执行nvidia-smi命令
可以看到,最早的 0 号设备仍未显示。
执行
nvidia-smi drain -p 0000:65:01.0 -m 0
设置 0 号 GPU 设备的 驱逐状态为 未 驱逐,再执行nvidia-smi命令
可以看到 0 号 GPU 又展示出来了。
-h 打印帮助信息
运行示例
展示 nvidia-smi drain 的帮助信息
nvidia-smi drain -h
对应内容如下:
nvidia-smi drain -h
drain -- Display drain state information about the system as well as remove and discover devices.
Usage: nvidia-smi drain [options]
Options include:
[-p | --pciid]: GPU PCI ID in the format XXXX:YY.Z.a
where XXXX = domain
YY = bus
Z = device a = function
[-m | --modify]: Modify the drain state of a GPU specified by -p.
Persistence mode must be disabled to perform this function.
0 = not draining
1 = draining
[-q | --query]: Query the drain state of a GPU specified by -p.
[-r | --remove]: If possible, remove the GPU specified by -p.
The GPU must have already been put in a drain state using -m and
persistence mode for this GPU must be disabled.
[-d | --discover]: Discover all GPUs on the system that had previously been removed.
[-h | --help]: Display help information