linux - 如何查询每个进程的 GPU 处理负载?
问题描述
我需要监控每个进程的 GPU 处理负载 (%)。
例如(发明)
csgo - 60%
plasma - 5%
...
grep - 0%
作为替代方案,我可以根据线程使用情况计算:
csgo - 2500 threads (2500/4096 ~= 61%)
plasma - 204 threads
或者一些类似的启发式。它不需要精确,但可以很好地提示谁在使用 GPU。
为此,我一直在研究几个可能有所帮助的 API:OpenCL、Vulkan、Linux/Unix API。我不是其中任何一个方面的专家,但我还找不到解决方案。
通用(跨供应商)解决方案显然是首选,但 NVidia/AMD/Intel(或它们的某些子集)的每个供应商可能已经是一个很好的结果。
不幸的是,我无法解决这个问题以及如何查询这些数据。
如何查询每个进程的 GPU 负载(处理百分比)?
注意 1:我的尝试是在 root 权限下运行的。
注意 2:出于显而易见的原因,除非不可能,否则我会尽量远离 CUDA。
注 3:我目前正在研究 nvapi,但这只会解决 NVidia 供应商。
注 4:我以 C++ 语言为目标注 5:考虑到我找不到任何相关的 API 条目,共享一个空示例来启动 Vulkan 或 OpenCl 似乎效率不高。
一些相关主题:
如何获取每个进程的 GPU 使用率?
此答案针对 Windows,解决方案专门针对 Tesla/Quatro NVidia 卡,这不是我的情况。此外,Direct3D 不是 Linux 上的解决方案。
解决方案
推荐阅读
- flutter - 将变换应用于小部件而不重绘小部件树
- c# - C# SQLite vs DataTable:“指定的转换无效。”
- javascript - NGINX 部署的 socket.io 服务器的 Socket.io 客户端问题
- css - 更改 Flexdashboard 中值框的高度
- java - RestAssuredMockMvc 请求属性未作为 ArrayList 传递
- sql - 如何防止红移中的锁定。(共享锁停止写作业)
- html - Github 页面未显示并继续加载
- python - 正则表达式序列强密码
- powershell - 用于 PowerShell 的 Intellisense 在 vscode 中飞溅?
- javascript - 尝试使用多选进行下拉时出错?