別々の種類のグラボで配信用の処理とゲーム用の処理を分けさせようとしてみた
PV増えたので,現在の状態追記しました.
思いついたわけ
PUBGをプレイしながらOBSでゲーム画面を配信していると、かなりカクつく
PUBGのGPU使用率を見てみると、9割強でOBSを使う余裕がなかった。そのため
簡単な発想ではあるけど、ゲーム用のGPUの他に配信用のGPUを別で使えないか?という疑問に思いました。PUBGのグラフィック設定を下げるとスムーズにゲーム配信をできるのだけど、妥協しながらゲーム配信をしたくなかったのでこの方法を思いつきました。
(2PC配信したいけど、もう一台PCを買う余裕がないためにとった愚策です。)
準備したもの
*ゲーム用GPU gtx1080 gb (この方法を思いついたときはgtx1060 6gb)
*配信用GPU gtx760 4gb (中古)
実装
実際、どういう風に実装するかといえば
GTX1080ー>nvidiaの専用プログラム設定orグローバル設定でPUBG専用とする
GTX760ー>nvidiaの専用プログラム設定でOBSを指定するorー>グローバル設定でGTX760を指定する方法です。
nvidiaの設定の3D設定画面で使用できるGPUがGTX1080とGTX760が出てきます
また、プログラム設定でプログラムごとに設定できます。
この方法を使って、OBSはGTX760の処理、PUBGはGTX1080の処理と割り当ててみます。
結果
それぞれのGPUを割り当てた時のGPU使用率は下記の画像になります
GPU0(PUBGの処理をするGTX1080)
GPU1(OBSの処理をGTX760)
GTX760は普段、使用率0%でOBSを起動して、使用すると42%ほどになり
OBSの処理をしてくれていることがわかる.
結果としては、うまくいっていますがGTX760でエンコードしてもあまり綺麗な画質で配信することができないというのが結論です.
”エンコードのラグが原因でスキップされたフレーム”が大量でるなどの問題は解決できるかもしれませんが...
画質設定を上げすぎるとGTX760も性能がいいわけではないため,すぐにカクつきます.
下記参照.
OBSの処理をGTX760がしてくれているのですが、成功にはなりませんでした。
PUBGの映像を出力しているのは、GTX1080であり
メインのGPUなのでエンコード以外の処理はgtx1080にかかってしまうようでした。
また、GPUの処理を軽くした分、PUBGのFPSを出そうとGPUが頑張るので
PUBGのGPU使用率自体は軽くなることはなかったです。PUBGのFPSは10FPSほど上がりましたが。
まだ、試行錯誤中ですので、気になるところにコメントいただけたらなぁと思います。
こういう風に設定してほしい、試してほしいがありましたら同様にコメントもらえるとやってみたいと思います。
追記(2021/10/06)
メインGPUが100%に近い状態でOBSを起動して,配信するとOBS動作分に耐えられなくて”エンコードのラグが原因でスキップされたフレーム”が大量に発生してカクカクな配信になります.
そこで画質と快適性を追い求めて,x264でエンコードすることにしました.
CPUをコア数が多いもの変更して,CPU性能をエンコードに当てることしてます.
構成・設定は以下の通り
エンコード: core i9 10850k 10core 20thread -> x264エンコード very fast
OBS動作: GTX760 -> OBS動かすだけでエンコードはしない.
ゲーム: GTX1080 -> ゲーム起動のみ.GTX760でOBSを起動しているため配信による影響は受けにくい.
1PCでゲームと綺麗な配信を両立できるのではと思いました.
結果(配信テストしました.
うーん,微妙.でも,スマホなどで見る分には綺麗なのではと思っています.
今回使ったcore i9 10850kではfastにするとカクつきが見られます.
もっとCPUのリソースが多ければもっと綺麗なのがいけるのではと考えてはいますが,高価なので考えものです.
総括
GPUを2枚使って,ゲームと配信別々に処理を分けることでゲームに影響を受けにくいゲーム配信環境が1PCでできないかと考えました.
1PCで配信できれば2台分の配信設定や音ズレ,ビデオキャプチャーの機材導入など2PCかかる不安材料を減らすことができます.
結果として,x264エンコードをCPU側で行い,ゲームと配信を分けることができました.通常時と配信時のFPS低下などの影響は少ないです(私が144−200FPS程度に絞ってるのも影響しています)
しかし,このためにわざわざGPUを増やす必要はないと考えます.
この画像からわかるようにNVDIA RTXシリーズでエンコードすれば画質もよく配信することができます.GTXシリーズを余らせている.
新規にRTXシリーズを増やすほど予算がない場合に考えられる代替手段になるかと思います.
もちろん,GPUを2枚動かすため電気代が増えるデメリットを考えておく必要があります.
個人的にすごい綺麗な配信だと思ったものを紹介
2BROのEscape From Tarkovの配信です.ただでさえこのゲームは木や葉っぱが多くブロックノイズが発生しやすいゲームであるにもかかわらず,4Kで配信しているという狂気.
どんな機材があったら,こんな綺麗にこのゲーム配信できるんだと初めてみたとき驚愕しました...
追記(2019/01/09)質問と回答
回答
2枚刺しのGPU使用で、進展はないですね。
1つ目の役割として 片方をPysX専用にすることで、FPS値の向上が見込めるものですが、PysXに対応したゲームがそもそも少ないです。
特にオンラインゲームでは一つもありません。
対応させるようにもしてなく開発は止まっているので わざわざ買ってするほど変わることはありません。
もちろんPUBGやR6Sにも対応していないと思います。 プレイ中、GPU使用率をみましたが 片方は微動だにしませんでした。
2つ目の役割として、エンコード処理を別のGPUに任せるもの 記事ではこちらを紹介しました。
配信の処理を別のGPUに任せるというもので 処理を軽減させ、プレイ中のゲームのFPS値を上昇させるものでした。
こちらは成功です。
最大30FPSぐらい上がりました。 しかし、これは軽減するだけで 配信ソフトのCPU使用率を0%にすることができません。
ハードウェアエンコード(NVENC)の部分だけ、別のGPUさせ ゲームの処理をしているGPU負荷を軽減させるものです。
その為、性能の低いGPU同士を使っても 値段ほどの効果は得られません。
GTX1070以上をお使いなら効果はあるかもしれません。
結果として、軽量で高画質な配信をしたいなら2PC配信が一番手っ取り早いです。 配信の軽さとして
2PC配信(キャプチャーボードも使ったもの)>>>2PC配信NDIプラグインを使用したもの>>>1PC 2GPU配信>>>1PC配信
このようになると今は、考えております。