我在 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.04 相比,为什么我的机器在 17.10 中表现如此糟糕(尤其是在游戏方面),我仍然一无所知 - 请参阅相关问题。
显然,桌面和依赖项是这里的主要嫌疑人,而不是驱动程序版本(我记得看到与以前的版本完全相同)。
问题
- 以上是否反映了正常行为,如果不是,如何调查/修复它?
- 这是否与运行要求苛刻的应用程序(例如游戏)时的性能问题有关?
编辑
有趣的是,如果我使用旧的 Unity 桌面登录,这些日志条目似乎不会出现。从纯桌面的角度来看,性能似乎也快了很多(尽管这可能是我的想象),但游戏性能却完全一样。
虽然这是一个老问题,但我自己在Kubuntu 18.04和nvidia driver 390上仍然遇到过。即,nvidia-persistence 守护进程在引导期间向屏幕发送垃圾邮件(有时,并非总是如此)。因此,我的解决方案通过使用单独的 systemd 服务绕过了系统启动时的标准 nvidia 守护程序启动。
如前所述,这似乎是启动 nvidia-persistence 守护进程的错误配置。更准确地说,udev 规则似乎是我的问题。因此,我修改
/lib/udev/rules.d/71-nvidia.rules
并注释掉了断电和上电下的动作。就像其他答案中提到的那样,您也可以注释掉加载和卸载的行。现在守护程序不会在开机时启动。因此,我们必须手动安排守护进程的启动。我们可以通过复制来实现
/lib/systemd/system/nvidia-persistenced.service
,例如现在修改
/lib/systemd/system/nvidia-persistenced-manual.service
为如下所示:要启用该服务,请执行
如果旧服务仍然启用,请运行
这样,守护程序将在系统启动时启动。随意修改该行
ExecStart=/usr/bin/nvidia-persistenced
,例如 include--verbose
或--user [...]
.请记住,在我的默认方式中,守护程序以root 权限运行。如果您不希望这样做,请确保使用
--user
参数运行守护程序。总而言之,这不是一个完美的解决方案,但它能够修复我系统上的错误。
这些条目是由 Nvidia 包中不必要的配置文件引起的:
感谢 void75,forums.linuxmint.com