限られた御仁へのTIPSかもですが, Linux環境でnvidiaのグラボを使っていて, かつサスペンド/ハイバネートを利用する運用をしていると, サスペンドからの復帰時にブラックスクリーンになって再開できないことがあります.
そうなってしまった場合, gdmを再起動することで復旧してきました.
sudo systemctl restart gdm
サスペンド復帰後に, OpenCLまたはCUDAを使うアプリケーションがちゃんと動かなくなることもあり, その場合はnvidia関連のカーネルモジュールを読み込み直したりしてました.
sudo bash -c "modprobe -r nvidia_uvm && modprobe nvidia_uvm"
次の設定を行うことでこの問題を回避できるようになりました.
次のカーネルモジュール向けのパラメータを追加.
options nvidia NVreg_PreserveVideoMemoryAllocations=1 NVreg_TemporaryFilePath=/var/tmp
サービス nvidia-suspendとnvidia-hibernateを有効化 (archlinuxの場合は, nvidia-utils パッケージに含まれる).
sudo systemctl enable nvidia-hibernate.service && $ sudo systemctl enable nvidia-suspend.service
デフォルトでは、システムのサスペンドと復帰時に NVIDIA の Linux ドライバーは必須のビデオメモリの割り当てのみを保存し復元します。NVIDIA 曰く ([7]、nvidia-utils パッケージの /usr/share/doc/nvidia/html/powermanagement.html): 結果として生じるビデオメモリの内容の消失は、ユーザスペースの NVIDIA ドライバーや一部のアプリケーションによって部分的に補われます。しかし、電源管理サイクルの終了時にレンダリングの破損やアプリケーションのクラッシュなどの機能不全が発生する可能性があります。
デフォルトでは、ビデオメモリの内容は (tmpfs である) /tmp に保存されます。NVIDIA は、最高のパフォーマンスを得るために他のファイルシステムを使うことを推奨しています。また、/tmp のサイズがメモリの容量に対して不十分である場合も、他のファイルシステムを使う必要があります: NVreg_TemporaryFilePath オプションで別の場所を指定してください (例えば、NVreg_TemporaryFilePath=/var/tmp)。
サスペンド時のVRAMのデータを退避することに失敗していた, ということが原因だったのかと思います (ログからそれを読み取れず, 長らく謎だったのですが).
なお, ArchLinux環境下の話で, 標準パッケージの nvidia のインストールで起きていた問題です.
ディストリビューションによっては, このあたりをちゃんとチューニングした設定が入っているかも?