私は単純なBumblebeeGUIツールに取り組んでいます。その機能の1つは、現在専用のビデオカードを使用しているプロセスのリストを表示することです。今のところ、実行中のすべてのプロセスを一覧表示し、それらの親を確認します。親プロセスがoptirun
の場合、このプロセスが専用のビデオカードを使用していることを意味します。
問題は、プログラムがprimusrun program_name
で起動されている間、そのようなプロセスが呼び出されないため、これがprimusrun
で機能しないことです。 primusrunによって起動されたプロセスまたは専用のビデオカードを使用しているプロセスを検出する方法はありますか?ありがとう。
(これはプログラミング関連の質問であり、StackOverflowに属している可能性がありますが、コード例ではなく、これらのプロセスを見つける一般的な方法に興味があります)。
GPUデバイスノードが開いているプロセス(fuser -v /dev/nvidiactl
など)を確認することはできますが、コストのかかる操作です(システムで開いているファイルの総数に比例します)。より効率的な(しかし実装が非常に難しい)アプローチには、おそらくネットリンクを使用してバンブルビーのセカンダリXに接続されたプログラムを発見することが含まれます。 xlsclientsは、接続されたクライアントではなくウィンドウを一覧表示するため、それをカットしませんでした。また、Bumblebee固有ですが、デバイスノードを使用すると、PRIMEオフロード用の個別のGPUユーザーを検出することもできます。
このような質問には、遠慮なくBumblebee/primus課題追跡システムを使用してください。比較的あいまいなトピックなので、直接連絡すると回答が得られる可能性が高くなります。