unraid中如何使用nvidia-persistenced进行可持久化模式

直接在 go 文件中添加命令

  • 仅用于 Docker 容器的情况:如果仅在 Docker 容器中使用 GPU,可在 go 文件中直接添加nvidia-persistenced,添加完成后需重启系统 。这样设置后,即使没有应用程序使用 GPU,NVIDIA 驱动程序也会保持加载状态,有助于实现更好的频率缩放和电源管理.
  • 同时用于 Docker 容器和虚拟机的情况:若 GPU 既用于 Docker 容器又用于虚拟机,需要谨慎使用nvidia-persistenced。因为开启它可能导致虚拟机无法启动甚至使整个服务器崩溃。建议将用于虚拟机的显卡绑定到 vfio,然后仅在未绑定到 vfio 的显卡所对应的 go 文件中添加nvidia-persistenced.

通过脚本设置

  • 安装相关插件:在 Unraid 的 “应用” 中搜索并安装GPU StatisticsUser Scripts插件.
  • 编辑脚本:在 “User Scripts” 中新建一个脚本,粘贴以下代码 :
#!/bin/bash
# 检查驱动是否安装
command -v nvidia-smi &> /dev/null || { echo >&2 "nvidia driver is not installed you will need to install this from community applications... exiting."; exit 1; }
echo "本机已安装Nvidia驱动程序"
echo
echo "在当前的服务器上找到以Nvidia显卡"
echo
nvidia-smi --list-gpus
echo
echo "-------------------------------------------------------------"
# 为显卡设置持久性模式
nvidia-smi --persistence-mode=1
# 查询电源状态
gpu_pstate=$(nvidia-smi --query-gpu="pstate" --format=csv,noheader);
# 查询使用 GPU 的进程的 PID
gpupid=$(nvidia-smi --query-compute-apps="pid" --format=csv,noheader);
# 通过检查字符串中是否存在任何 PID 来检查 PState 是否为零并且没有运行的进程。
if ( "$gpu_pstate" == "P0" ) && ( -z "$gpupid" ); then
echo "没有找到对应 PID,因此没有正在运行的进程"
fuser -kv /dev/nvidia*
echo "电源状态为:"
echo "$gpu_pstate" # 显示当前电源状态
else
echo "电源状态为:"
echo "$gpu_pstate" # 显示当前电源状态
fi
echo
echo "-------------------------------------------------------------"
echo
echo "当前功耗为:"
# 检查GPU的当前功耗
nvidia-smi --query-gpu=power.draw --format=csv
exit
  • 设置脚本运行时机:保存脚本后,在右边选择 “At Starup of Array”,使脚本在阵列启动时运行

相关注意事项

  • 功耗问题:启用nvidia-persistenced会使驱动程序保持加载,即使没有应用程序使用 GPU 时,也会导致功耗比未加载驱动时略高.
  • 与虚拟机的兼容性:如前文所述,在虚拟机使用场景下,需要特别注意nvidia-persistenced可能引发的问题,要根据实际情况合理配置.

 

PS:大家自行测试是关闭的好,还是开启的好。国际惯例nvidia-smi --persistence-mode=1是开启,nvidia-smi --persistence-mode=0是关闭。

声明: 1.本站为个人非盈利站点,旨在个人学习、欣赏及记录等,故不受狭义的商业性版权限制,除非特别声明; 2.本站主要内容来源为本站编辑撰写、网友投稿(包括原创及非原创)、翻译外文和转载其他网站。
初缘的分享软路由与NAS随手笔记

NAS 上创建 YACReader 服务器

2023-10-22 21:08:48

优惠卷初缘的分享

#腾讯云#DNSPOD 15周年活动,送了一些优惠券 10年域名最低仅要23元

2020-3-10 16:18:53

搜索