コンテキスト
最近、nVidiaドライバーを375.26に更新し、FFmpegN-83180-gcf3affaとOBS17.0.2-5-g43e4a2eを再コンパイルしました(これらの番号が意味をなさない場合は申し訳ありませんが、どのバージョン番号が重要かはよくわかりません)。 Debianマシン。 RAMにサスペンドを実行すると、OBSは、マシンを再起動するための唯一の修正で動作を停止します。
再現方法
出力構成:
録音を開始し、停止して動作することを確認します
記録を開始すると、OBSは次のエラーで失敗します:
[h264_nvenc @ 0x3fdd1e0] Failed creating CUDA context for NVENC: 0x3e7
[h264_nvenc @ 0x3fdd1e0] No NVENC capable devices found
システム情報
アクションボタンの動作に違いがある場合は、XFCE4.10を使用します。
質問
コンピューターを起動した後にこのエラーが発生しないように、毎回再起動しない方法はありますか?
編集1
私はOBSがこの問題の原因であることを知っています。
テストケース1:
テストケース2:
テストケース3:
Cannot init CUDA
で失敗私の推測では、OBSは録画が停止してもストリームを閉じません。おそらく、プログラムを終了するまで、パフォーマンス(?)の理由で永続化されますか?これを修正する方法がわかりません。エラーが表示されたら、OBSを再起動しても効果はありません。システムを再起動する必要があります。
それでも、GPUは他のすべての処理に完全に問題がないようですが、glxinfo
、nvidia-smi
、nvidia-settings
はすべて、GPUが実際に他のタスクの処理に使用されていることを確認しています。 RAMへのサスペンド後に問題が発生するのはNVENCだけのようです。
編集2
ここにdmesg
ログがあります:https://www.diffchecker.com/wto7KPJZ
タブ付きの「元の」はサスペンドを実行した後に変更されたものであり、タブ付きの「変更された」は私が提案した修正を実行した後に変更されたものです。
FFmpegは、システムをサスペンドする前にh264_nvencストリームが開始された(そして停止されたが、これは必要ありません)場合にのみCUDAinitにロックアップします。 OBSが一時停止する前にh264_nvencエンコーダーで何も記録しない場合は、再度ログインすると正常に機能します。
ログイン後にOBSがロックすると、次の方法で使用できるようになります。
ターミナルで実行:
Sudo rmmod nvidia_uvm && Sudo modprobe nvidia_uvm
OBSを再度開きます
アンロードする場合nvidia_uvm
が機能しません。この問題が発生したことはありませんが、DRMモジュールとモードセットモジュールも再ロードする必要がある場合があります。