查找哪些进程正在使用专用显卡

查找哪些进程正在使用专用显卡

我正在开发一个简单的 Bumblebee GUI 工具。它的一个功能是显示当前正在使用专用显卡的进程列表。现在我列出所有正在运行的进程并检查它们的父进程:如果父进程是,则optirun意味着该进程正在使用专用显卡。

问题是,这不适用于primusrun,因为在使用 启动程序时,没有任何进程被这样调用primusrun program_name。有没有办法检测 primusrun 启动的进程或使用专用显卡的进程?谢谢。

(这更像是一个与编程相关的问题,也许它属于 StackOverflow,但我对代码示例不感兴趣,而是对查找这些过程的通用方法感兴趣)。

答案1

您可以尝试查看哪些进程打开了 GPU 设备节点(例如fuser -v /dev/nvidiactl),但这是一个成本高昂的操作(与系统中打开的文件总数成正比)。更有效(但很难实现)的方法可能是使用 netlink 发现连接到 Bumblebee 的辅助 X 的程序;xlsclients 不会成功,因为它列出的是窗口,而不是连接的客户端。它也是 Bumblebee 特有的,而使用设备节点可以让您发现用于 PRIME 卸载的离散 GPU 用户。

对于此类问题,请随时使用 Bumblebee/primus 问题跟踪器。这是一个相对模糊的话题,因此直接联系会增加获得答案的机会。

相关内容