web-dev-qa-db-ja.com

専用のビデオカードを使用しているプロセスを見つける

私は単純なBumblebeeGUIツールに取り組んでいます。その機能の1つは、現在専用のビデオカードを使用しているプロセスのリストを表示することです。今のところ、実行中のすべてのプロセスを一覧表示し、それらの親を確認します。親プロセスがoptirunの場合、このプロセスが専用のビデオカードを使用していることを意味します。

問題は、プログラムがprimusrun program_nameで起動されている間、そのようなプロセスが呼び出されないため、これがprimusrunで機能しないことです。 primusrunによって起動されたプロセスまたは専用のビデオカードを使用しているプロセスを検出する方法はありますか?ありがとう。

(これはプログラミング関連の質問であり、StackOverflowに属している可能性がありますが、コード例ではなく、これらのプロセスを見つける一般的な方法に興味があります)。

2
ov1d1u

GPUデバイスノードが開いているプロセス(fuser -v /dev/nvidiactlなど)を確認することはできますが、コストのかかる操作です(システムで開いているファイルの総数に比例します)。より効率的な(しかし実装が非常に難しい)アプローチには、おそらくネットリンクを使用してバンブルビーのセカンダリXに接続されたプログラムを発見することが含まれます。 xlsclientsは、接続されたクライアントではなくウィンドウを一覧表示するため、それをカットしませんでした。また、Bumblebee固有ですが、デバイスノードを使用すると、PRIMEオフロード用の個別のGPUユーザーを検出することもできます。

このような質問には、遠慮なくBumblebee/primus課題追跡システムを使用してください。比較的あいまいなトピックなので、直接連絡すると回答が得られる可能性が高くなります。

4
amonakov