本文主要参考该文章。
1 简介
实验室同门在使用GPU服务器时遇到模型加载初始化时间过长(有时甚至达到10min)的情况,查询之后发现可以通过打开Nvidia GPU的Persistence-M模式来解决该情况,在此,也对该模式进行一个介绍以及启动方式进行记录。
首先介绍一下Persistence-M模式。
NVIDIA显卡持久模式(Persistence Mode)是一种让GPU驱动和内核模块保持加载和初始化状态的运行模式(即便没有程序在运行),避免了频繁的驱动加载/卸载开销,显著减少了首次调用GPU应用(如CUDA、深度学习任务)的延迟,确保了高性能和稳定性,对服务器、专业工作站、需要快速启动GPU任务的场景尤其重要。
—Gemini
该模式默是关闭的,打开之后可以提高模型加载速度,而且会一定程度上减小掉驱动的风险;代价就是会增加一定的功耗与温度。该模式的状态可以通过nvidia-smi命令来查看,如下图中的绿框所示,On表示该持久模式已经打开了。

2 启动Persistence-M模式
2.1 临时启动
使用如下命令可以启动Persistence-M模式:
1 | sudo nvidia-smi -pm 1 |
关闭命令如下:
1 | sudo nvidia-smi -pm 0 |
以上两个命令是临时的,只在当前有效,重启服务器之后会失效。
2.2 永久启动
若想要重启服务器之后保持打开Persistence-M模式,则需要添加启动进程。
首先,确定是否存在nvidia-persistenced命令:
1 | ❯ which nvidia-persistenced |
如果该命令不存在,则需要参考该文章来安装该命令。
然后,即可创建服务文件/etc/systemd/system/nvidia-persistenced.service(如果不存在的话):
1 | [Unit] |
以上命令通过限定使用用户nvidia-persistenced来运行,从而提高安全性。接下来就是创建该用户(如果不存在的话):
1 | sudo useradd -r -s /sbin/nologin nvidia-persistenced |
上述创建用户的命令的两个选项:
- 使用
-r表明创建的是一个系统账号(System Account),默认不会在\home下创建文件夹,且不会像普通账号一样有密码过期策略; - 使用
-s /sbin/nologin是指定该用户使用一个特殊的“假Shell“/sbin/nologin,表明该账号仅供后台服务使用,无法用于登录系统。
完成以上任务之后,就可以重新加载systemd:
1 | sudo systemctl daemon-reload |
此时,可以使用以下命令检查是否正常开启:
1 | ❯ ps aux | grep nvidia-persistenced |
在User列中写的是nvidia-p+就表明使用系统账号正常启动了。
2.3 文件指向/dev/null
在创建文件/etc/systemd/system/nvidia-persistenced.service时发现该文件已经存在了,且指向/dev/null(nvidia-persistenced.service -> /dev/null)。经过查询得知,当一个systemd服务文件指向/dev/null时,在Linux中被称为“Masked”(屏蔽/打标签掩盖)状态。这个状态比简单的“停止”或“禁用”更彻底,可以有效禁用文件、防止意外启动。
这里记录一下其启动及禁止命令:
1 | sudo systemctl mask nvidia-persistenced |