如何获取每个进程的GPU使用率? [英] How do I get GPU usage per process?
本文介绍了如何获取每个进程的GPU使用率?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个我不久前编写的温度监控程序,它监控我的AMD显卡上的温度和风扇,检查风扇故障或过热。 它的问题是,它需要事先知道哪个进程将使用GPU(图形处理器),以便终止它或优雅地停止它,以避免过热。
为了使我的程序更动态,我需要一种方法来找出哪个进程正在使用GPU,很像哪个进程正在使用CPU时间(任务管理器)。Sysinterals的Process Explorer就是这样一个应用程序。
我在问,我如何在Windows中用C实现这一点?我知道,如果有这样的方法,它将针对Vista和更高版本。
推荐答案
如果您有特斯拉主板或高端Quadro,并且运行在Windows Server 2008 R264位、Windows 764位(或32/64位Linux)上,则可以使用NVML。
下载最新NVML SDK (Tespla Deployment Kit),看看这两个功能:
nvmlReturn_t nvmlDeviceGetComputeRunningProcesses (nvmlDevice_t device,
unsigned int infoCount,
nvmlProcessInfo_t * infos)
nvmlReturn_t nvmlDeviceGetTemperature (nvmlDevice_t device,
nvmlTemperatureSensors_t sensorType,
unsigned int * temp)
注意:
nvmlReturn_t nvmlDeviceGetFanSpeed (nvmlDevice_t device, unsigned int * speed)
它"检索设备风扇的预期运行速度",而不是实际的风扇速度。因此您不能使用它来检查风扇故障。
我不知道可以在GeForce主板上使用的nvmlDeviceGetComputeRunningProcess替换,但WindowsNvAPI(它也可以在GeForce上使用)允许查询风扇速度和温度。
这篇关于如何获取每个进程的GPU使用率?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文