linux下使用drain命令驱逐和移除指定GPU卡

我们在linux系统中使用GPU时有时遇到了坏卡的情况,我们希望能够自动不使用坏掉的卡,也就是让系统和程序自动跳过不使用GPU卡,我们需要将GPU卡标记为驱逐状态,那么今天我们就来介绍下如何标记指定的GPU卡为驱逐状态。

1.drain命令参数介绍

我们使用nvidia-smi命令中的drain参数来对卡进行驱逐

nvidia-smi drain

此命令包含以下可选参数

-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: 展示帮助信息

2.查看GPU卡的驱逐状态

例如我们查询GPU卡状态并记录第一块GPU卡的信息

nvidia-smi -i 0

获取到0号GPU卡的PCI地址为0000:06:00.0

可以使用如下命令查看0号GPU卡的驱逐状态

nvidia-smi drain -p 0000:06:00.0 -q
The current drain state of GPU 00000000:06:00.0 is: not draining.

可以看到0号GPU卡的驱逐状态是不驱逐

3.修改GPU卡的驱逐状态

使用-m 修改指定GPU卡的驱逐状态,1是驱逐,0是不驱逐

nvidia-smi drain -p 0000:06:00.0 -m 1
Successfully set GPU 00000000:06:00.0 drain state to: draining.

再次执行查询驱逐状态时,0号GPU卡的状态已经是驱逐状态

nvidia-smi drain -p 0000:06:00.0 -q
The current drain state of GPU 00000000:06:00.0 is: draining.

4.移除指定GPU卡

移除由-p参数指定的GPU设备,同时还需要该GPU必须已经使用-m参数设置为驱逐状态, GPU的持久模式必须禁用

首先关闭0号GPU卡的持久模式

nvidia-smi -i 0 pm 0

然后设置0号GPU卡为驱逐状态

nvidia-smi drain -p 0000:06:00.0 -m 1

最后移除0号GPU卡

nvidia-smi drain -p 0000:06:00.0 -r
GPU 00000000:06:00.0 successfully removed.

然后我们可以使用nvidia-smi命令进行验证

202508111018026987157649.png

可以看到0号GPU卡使用nvidia-smi命令已经不显示

5.加入被移除的GPU卡

也是使用drain命令加上-d参数就能发现GPU卡并添加,这个时候可以

nvidia-smi drain -d
Discovery completed successfully.  Any discovered GPUs will now appear in the enumeration list and device count.

再次使用nvidia-smi命令发现已经可以查看到0号在列表中了。

202508111020494518170264.png

再次查询0000:06:00.0这块卡的状态

nvidia-smi drain -p 0000:06:00.0 -q
The current drain state of GPU 00000000:06:00.0 is: not draining.

发现自动去掉了之前设置的驱逐状态。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.sulao.cn/post/774

评论列表

0%