nvidia-driver中Persistence-M 作用

NVIDIA 驱动中的 Persistence Mode(持久化模式)是用于控制 GPU 在空闲时是否卸载驱动并释放资源的一个选项,主要用于提升性能、缩短响应延迟以及避免频繁加载驱动带来的开销


🔧 持久化模式的作用:

✅ 开启时(Persistence-M: Enabled):

  • NVIDIA 驱动和 GPU 相关模块始终常驻内存,即使没有正在运行的进程使用 GPU。
  • GPU 保持初始化状态,不会被频繁加载和卸载
  • 首次调用 GPU 时的启动延迟显著减少
  • 适用于 服务器、深度学习集群、高频调用 GPU 的应用环境

32e66862324a58479d055bfa76190471.png

❌ 关闭时(Persistence-M: Disabled):

  • 在 GPU 空闲时,驱动会被卸载,释放相关资源。
  • 再次使用 GPU 时,系统需要重新加载驱动,会产生初始化延迟
  • 更节能,适用于桌面系统或对启动延迟不敏感的场景

📦 举个例子:

如果你运行一个深度学习模型训练脚本,GPU 初始化通常会有 2~3 秒的延迟;如果持久化模式开启,第二次运行时这部分延迟会被消除。


🚀 如何设置持久化模式:

查看当前状态:

1
nvidia-smi

你会看到一列:

Persistence-M: Off  # 或者 On

设置开启:

1
sudo nvidia-smi -pm 1

设置关闭:

1
sudo nvidia-smi -pm 0

ubuntu通过xxx.run安装配置nvidia-persistenced

1.原因

  • 驱动来源:如果你用的是 .run 安装包(NVIDIA 官方 Linux 驱动),默认不会自动创建 systemd 服务文件。
  • 旧版本驱动:某些老版本驱动没有 nvidia-persistenced.service
  • **系统没装 nvidia-persistenced**:守护进程二进制可能不存在。

2.确认 nvidia-persistenced 是否存在

1
2
3
which nvidia-persistenced
# 或者
ls /usr/bin/nvidia-persistenced
  • 如果存在,可以手动创建 systemd 单元文件。

3.手动创建 systemd 服务文件

  1. 创建服务文件 /etc/systemd/system/nvidia-persistenced.service
1
2
3
4
5
6
7
8
9
10
11
12
[Unit]
Description=NVIDIA Persistence Daemon
After=network.target

[Service]
Type=forking
ExecStart=/usr/bin/nvidia-persistenced --user nvidia-persistenced
ExecStopPost=/bin/rm -rf /var/run/nvidia-persistenced
Restart=always

[Install]
WantedBy=multi-user.target
  1. 创建运行用户(如果没有):
1
sudo useradd -r -s /sbin/nologin nvidia-persistenced
  1. 重新加载 systemd:
1
2
sudo systemctl daemon-reload
sudo systemctl enable --now nvidia-persistenced

4.核验
nvidia-smi
636218c9afb9792c077e3bbf04b3bab3.png

💡 补充说明

  • 手动创建 systemd 服务是最通用方式,不依赖于发行版自带。
  • --user nvidia-persistenced 参数指定运行用户,避免守护进程用 root。

📝 注意事项:

  • 需要 root 权限设置持久化模式
  • 某些系统可能默认关闭该模式以节省功耗。
  • 多用户共享 GPU 的环境中,开启持久化模式可以避免初始化冲突