GPU持久化模式介绍
Persistence Mode是一个您可设置的驱动程序属性的术语,即使没有客户端连接到目标GPU,该属性也会保持目标GPU的初始化状态。通常,如果未开启持久化模式,则任何尝试与该GPU进行交互的程序调用都会导致该驱动程序加载、初始化GPU。当所有GPU客户端终止时,驱动程序将取消初始化GPU。驱动程序加载行为对终端您而言有两种重要的作用:
- 应用启动延迟
由于ECC清理行为,触发GPU初始化的应用程序可能会导致每个GPU短暂(1-3秒的数量级)启动成本。如果GPU已初始化,则不会进行清理。
- 保存驱动状态
如果驱动程序取消了GPU的初始化,则与该GPU相关的某些非持久状态将丢失,并在下次初始化GPU时恢复为默认状态。为了避免这种情况,GPU应该保持初始化状态。
GPU持久化模式未开启的影响
问题现象
1. GPU指令执行速度缓慢
云主机GPU相关指令响应速度变慢
2. GPU云主机掉卡
GPU云主机分配了四张PCI设备,lspci | grpe -i nvidia 查看有4张,nvidia-smi 执行下仅可查看到3张,且系统message日志有下述报错,建议开启驱动持久化模式
3. GPU利用率异常显示100%
使用 GPU 计算型实例的过程中,在系统内部使用 nvidia-smi 查看 GPU 状态时,可能遇到没有运行任何使用 GPU 的应用,但 GPU 使用率显示100%的情况
4. 英伟达驱动无法查找GPU设备
输入nvidia-smi,会报错No devices were found,但是执行lspci |grep -i nvidia输出正常
原因分析
GPU云主机未开启GPU的Persistence Mode
解决方法
您可以按照以下操作重新开启Persistence-M属性。通过安装NVIDIA GPU驱动安装包,将NVDIA提供的安装脚本(例如示例脚本和安装程序脚本)安装到 /usr/share/doc /NVIDIA GLX-1.0/samples/nvidia-persistencedinit .tar.bz2 路径下。
1. 执行以下命令,解压并安装NVIDIA提供的安装脚本。
cd /usr/share/doc/NVIDIA_GLX-1.0/sample*
bunzip2 nvidia-persistenced-init.tar.bz2
tar xvf nvidia-persistenced-init.tar
cd nvidia-persistenced-init && sh install.sh -u root
2. 执行以下命令,查看NVIDlA Persistence Daemon是否正常运行
systemctl status nvidia-persistenced
3. 执行以下命令,再次确认Persistence-M属性为开启(on)状态。
nvidia-smi
4. (可选)若您目前无需开启Persistence-M,您可以选择关闭Persistence-M
sudo systemctl stop nvidia-persistenced
sudo systemctl disable nvidia-persistenced
sudo systemctl status nvidia-persistenced
重启GPU云主机Persistence Mode属性设置失效,同时ECC状态/MIG功能设置失败
问题现象
在GPU云主机中安装Tesla驱动(Linux)时,该驱动版本为535或更高版本,通过nvidia-smi -pm 1命令方式开启Persistence Mode属性后,可能会导致以下问题:
- 重启GPU实例后,导致Persistence Mode属性开启失效(即Persistence Mode仍默认为Off状态)。
- ECC状态设置失败。
- MIG功能设置失败。
问题原因
由于Tesla驱动版本过高,即驱动版本为535或更高版本时,同时通过nvidia-smi -pm 1命令开启Persistence Mode属性,重启GPU实例后导致上述问题发生。
英伟达驱动R319或更高版本,建议您通过Persisent Daemon方式配置Persisent Mode,详细信息参见英伟达官方文档关于persistence-mode使用说明
解决方法
1. 查看dmesg日志时,如果存在以下提示
2. 建议您通过NVIDIA Persistence Daemon方式打开Persistence Mode属性,详细操作参考本帮助中心章节:GPU驱动开启持久化模式。