NVIDIA 持久守护进程在系统日志中不断启动和停止

NVIDIA 持久守护进程在系统日志中不断启动和停止

我在 Ubuntu 17.10 上,有英特尔和 Nvidia GTX 1060 卡(通常选择后者),以及驱动程序版本387.22

我注意到我的中有以下条目/var/log/syslog

  • Nov 22 18:46:36 [machine name omitted] systemd[1]: Starting NVIDIA Persistence Daemon...
  • [一些不相关的条目]
  • Nov 22 18:46:36 [...] systemd[1]: Started NVIDIA Persistence Daemon.
  • [一些不相关的条目]
  • Nov 22 18:46:36 [...] systemd[1]: Stopping NVIDIA Persistence Daemon...
  • Nov 22 18:46:36 [...] nvidia-persistenced: PID file unlocked.
  • Nov 22 18:46:36 [...] nvidia-persistenced: PID file closed.
  • Nov 22 18:46:36 [...] nvidia-persistenced: The daemon no longer has permission to remove its runtime data directory /var/run/nvidia-persistenced
  • Nov 22 18:46:36 [...] nvidia-persistenced: Shutdown (1115)
  • Nov 22 18:46:36 [...] gdm3: GdmDisplay: display lasted 1.202396 seconds
  • Nov 22 18:46:36 [...] systemd[1]: Stopped NVIDIA Persistence Daemon.

奇怪的是,这些条目(以及我可能在这里省略的一些相关条目)正在发生持续地,多次,有时在同一个时间戳内。

这听起来很可疑——为什么守护进程以这种方式不断启动和停止,这不会严重影响性能吗?

我之所以问这个问题,是因为我仍然不明白为什么我的机器在 17.10 版本上的表现比 17.04 版本差这么多(特别是在游戏方面) - 请参阅相关问题

显然,桌面和依赖项是这里的主要嫌疑人,而不是驱动程序版本(因为我记得看到与以前的版本完全相同的情况)。

问题

  • 上述情况是否反映正常行为?如果不是,如何调查/修复它?
  • 这是否与运行游戏等要求高的应用程序时的性能问题有关?

编辑

有趣的是,如果我使用旧版 Unity 桌面登录,这些日志条目似乎不会出现。从纯桌面角度来看,性能似乎也快了很多(虽然这可能是我的想象),但游戏性能却差不多。

答案1

虽然这是一个老问题,但我还是在Ubuntu 18.04nvidia 驱动程序 390也就是说,nvidia-persistence 守护进程在启动期间(有时,并非总是)频繁地刷新屏幕。因此,我的解决方案是通过使用单独的 systemd 服务

如前所述,这似乎是启动 nvidia-persistence 守护程序的错误配置。更准确地说,udev 规则似乎是我的问题所在。因此,我修改/lib/udev/rules.d/71-nvidia.rules并注释掉了关机和开机下的操作。如其他答案中提到的,您也可以注释掉加载和卸载的行。

现在守护进程不会在开机时启动。因此,我们必须手动安排守护进程的启动。我们可以通过复制来实现/lib/systemd/system/nvidia-persistenced.service,例如

sudo cp /lib/systemd/system/nvidia-persistenced.service /lib/systemd/system/nvidia-persistenced-manual.service

现在修改/lib/systemd/system/nvidia-persistenced-manual.service成如下所示的样子:

[Unit]
Description=NVIDIA Persistence Daemon
Wants=syslog.target
Requires=local-fs.target

[Service]
Type=forking
User=root
Group=root
ExecStart=/usr/bin/nvidia-persistenced
ExecStopPost=/bin/rm -rf /var/run/nvidia-persistenced

[Install]
WantedBy=multi-user.target

要启用该服务,请执行

sudo systemctl enable nvidia-persistenced-manual.service

如果旧服务仍处于启用状态,则运行

sudo systemctl disable nvidia-persistenced.service

这样,守护进程将在系统启动时启动。您可以随意修改此行,ExecStart=/usr/bin/nvidia-persistenced例如包括--verbose--user [...]

请记住,在我的默认方式中,守护进程正在运行root 权限。如果您不想这样,请确保使用该参数运行守护进程--user

总而言之,这不是一个完美的解决方案,但它能够修复我的系统上的错误。

答案2

这些条目是由 Nvidia 包中不必要的配置文件引起的:

  • 从 shell 运行命令 nvidia-smi,您必须在左上角的某处看到“Persistence-M On”。
  • 您可以测试您的 Nvidia 驱动程序在没有“Persistence-M”的情况下是否可以正常工作。
  • 转到 /lib/systemd/system/ 。在这里您将找到一个名为 nvidia-persistenced.service 的文件。重命名或移动。
  • 转到 /lib/udev/rules.d/
  • 以 root 身份打开配置文件 71-nvidia.rules
  • 注释掉#开机与关机以及加载与卸载下的动作。
  • 重启并检查。

感谢 void75、forums.linuxmint.com

相关内容