GPU裸金属服务器训练速度突然下降以及执行nvidia-smi卡顿的解决方案
1. 问题描述
笔者最近发现在高性能8卡GPU的裸金属上的训练任务突然变慢,以前1个epoch约2小时执行完成,最近1个epoch需要2天才能执行完成。 并且执行nvidia-smi也明显变很卡顿。
2. 问题分析
根据现象描述很可能出现了nvidia-smi D+进程。 首先了解什么是D+进程:
"D+"表示进程状态为"Uninterruptible Sleep (usually IO)",即进程正在等待I/O操作完成,此时无法被中断。
在正常情况下,nvidia-smi进程通常只会短暂地出现D+状态,因为它们是由内核控制的,该进程处于等待I/O操作完成的状态,可能是在读取或写入GPU相关的数据,这是正常的操作。但是,如果该进程一直处于"D+"状态,可能表明出现了I/O操作阻塞或其他问题,这可能导致系统死锁或其他问题。
当然如果想构造nvidia-smi D+进程,可以死循环一直执行nvidia-smi 体验D+进程带来的系统不稳定性, 如:
#!/bin/bash
while true; do
nvidia-smi &
sleep 1 # 可以根据需要调整间隔时间
done
然后执行查看产生nvidia D+进程
ps -aux | grep -w D+
结果如下:
这时候,你可以观察你的训练任务或者执行nvidia-smi等命令,几乎是卡顿无法执行,因为内核IO已经阻塞, 无法执行相关GPU命令,只能尝试释放D+进程。
3. 解决方案
"nvidia-smi"是一个NVIDIA GPU监视器命令行工具,用于查看GPU的使用情况和性能指标,可以帮助用户进行GPU优化和故障排除。 但是建议一定要在业务软件或训练算法中,避免频繁使用nvidia-smi命令功能获取相关信息,毕竟是和一个完全由内核控制的工具,存在锁死的风险。出现D+进程后可以尝试如下方法:
方法1: 可以根据ps -aux查到的进程号, 使用kill -9强制杀死进程
sudo kill -9 <进程ID>
方法2: 如果方法1执行后无法消除D+进程, 那么重启会解决您的一切烦恼。
- 点赞
- 收藏
- 关注作者
评论(0)