3

我想像在 Windows taskmgr.exe 中那样测量每个进程的 GPU 使用率,但是在尝试使用 pyNVML 库时遇到了几个问题。结果,我有几个问题。

首先,目前是否可以使用 Python 测量 Windows 中每个进程的确切 GPU 使用率?我已经尝试过nvidia-smi查询,但这似乎没有显示每个进程的内存使用和利用率百分比。

其次,如果可以使用 Python 以这种方式测量 GPU 使用率,我想以与 Windows 10 的 Windows taskmgr.exe 类似的方式测量和显示它。

到目前为止,这是我的代码:

nvmlInit()
deviceCount = nvmlDeviceGetCount()
#print(deviceCount)
for device_id in range(deviceCount):
    hd = nvmlDeviceGetHandleByIndex(device_id)
    #print(handle)

cps = nvmlDeviceGetGraphicsRunningProcesses(hd)

for ps in cps :
    pp = ps.pid
    #print(pp)
    try :
        name = str(nvmlSystemGetProcessName(ps.pid))
        n = name.split("\\")
        #print(n[len(n)-1][:-1])
        process_name = n[len(n)-1][:-1]
        if process_name == 'chrome.exe':
            print(process_name, pp, ps.usedGpuMemory)
    except:
        pass

我的结果:

chrome.exe 16688 None

英伟达-smi

如您所见,这并没有显示每个进程的 GPU 内存使用情况,但我需要 taskmgr 的 GPU 部分中显示的信息。(我不需要可视化。)

任务管理器

我的电脑规格是 Windows 10 pro、GTX 950、i5-6600

如果目前在 Python 中这是不可能的,您是否有任何其他建议可以自动收集每个进程的 GPU 使用情况。

谢谢你。

4

1 回答 1

0

查看 Jonathan DEKHTIAR 的答案,这里解释了它不起作用的原因。作为一种解决方法,您可以尝试从 powershell 获取值Get-Counter -Counter "\GPU Engine(*)\Utilization Percentage"

于 2021-03-29T17:51:45.627 回答