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

雖然這是一個老問題,但我自己仍然遇到過庫班圖 18.04英偉達驅動程式390。也就是說,nvidia-persistence 守護程式會在啟動期間向螢幕發送垃圾訊息(有時,並非總是如此)。因此,我的解決方案透過使用獨立的系統服務

如前所述,這似乎是啟動 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 [...]

請記住,在我的預設方式中,守護程式正在運行根權限。如果您不希望這樣做,請確保使用參數運行守護程序--user

總而言之,這不是一個完美的解決方案,但它能夠修復我係統上的錯誤。

答案2

這些條目是由 Nvidia 軟體包中不必要的設定檔引起的:

  • 從 shell 執行命令 nvidia-smi,您必須在左上角的某個位置看到「Persistence-M On」。
  • 您可以在沒有「Persistence-M」的情況下測試您的 Nvidia 驅動程式是否正常運作。
  • 轉到 /lib/systemd/system/ 。在這裡您將找到一個名為 nvidia-persistenced.service 的檔案。重新命名或移動。
  • 轉到/lib/udev/rules.d/
  • 以 root 身分開啟設定檔 71-nvidia.rules
  • 註解掉 # 上下電、載入和卸載下的動作。
  • 重新啟動並檢查。

感謝 void75、forums.linuxmint.com

相關內容