【要約】カーネルの深淵を覗いた男、USBハブを抜いて帰る [Qiita_Trend] | Summary by TechDistill
> Source: Qiita_Trend
Execute Primary Source
// Problem
VRChatユーザーが顔トラッキングを使用する際、特定のCPUコアがDPC負荷で飽和し、ゲームのFPSが激減する問題に直面した。調査の結果、以下の技術的課題が判明した。
- ・Core 1のDPC負荷が最大99%に到達。
- ・VRChatのFPSが55fpsから14fpsへ激減。
- ・原因はusbvideo.sysによる高頻度なDPC発行。
- ・DirectShowバックエンドによる高フレームレートなストリーミング。
// Approach
調査者は、カーネル設定やバイナリパッチを用いて、ソフトウェア的な解決を段階的に試みた。実施したアプローチは以下の通りである。
- ・割り込みアフィニティの設定:USBコントローラの割り込みを別コアへ移動。
- ・MSI-Xの有効化:レジストリ操作による割り込み分散の試行。
- ・バイナリパッチ:.NET DLLを書き換え、DirectShowからMSMFへバックエンドを変更。
- ・USBポートの入れ替え:コントローラ変更による負荷分散の試行。
- ・物理構成の変更:USBハブを介さず、カメラを直接接続。
// Result
カメラをUSBハブから切り離し、直接接続することで、システム負荷が劇的に改善した。得られた成果は以下の通りである。
- ・Core 1のDPC負荷が96%から4.2%へ激減。
- ・VRChatのFPSが14fpsから75fpsへ安定。
- ・原因は多段カスケードされたVIA製ハブによる転送ジッターであった。
Senior Engineer Insight
> 本件は、高度なソフトウェア解析が物理レイヤーの不備を見落とす典型例である。低レイテンシ環境では、カーネルの挙動だけでなく、USBハブの品質やカスケード構成といった物理的変数を先に検証すべきだ。AIによるデバッグは強力だが、ハードウェアの抜き差しという物理的検証を代替できない。現場では、まず物理層の健全性を確認する習慣が不可欠である。