C(Windows)-GPU使用率(负载%)

Dan*_*Dan 5 c windows gpu

根据Internet上的许多消息来源,可以使用D3DKMTQueryStatistics获得GPU使用(负载)。

如何查询DirectX中的GPU使用率?

我已经成功地从这里使用代码进行了一些修改,从而获得了内存信息:http ://processhacker.sourceforge.net/forums/viewtopic.php?t=325#p1338

但是我没有找到D3DKMT_QUERYSTATISTICS结构的成员,该成员应该包含有关GPU使用情况的信息。

Ant*_*lov 4

查看gpumon.cEtpUpdateNodeInformation中的函数。它查询每个 GPU 节点的进程统计信息。每个显卡可以有多个处理节点:

queryStatistics.Type = D3DKMT_QUERYSTATISTICS_PROCESS_NODE
...
totalRunningTime += queryStatistics.QueryResult.ProcessNodeInformation.RunningTime.QuadPart
...
PhUpdateDelta(&Block->GpuRunningTimeDelta, totalRunningTime);
...
block->GpuNodeUsage = (FLOAT)(block->GpuRunningTimeDelta.Delta / (elapsedTime * EtGpuNodeBitMapBitsSet));
Run Code Online (Sandbox Code Playgroud)

它收集进程运行时间并除以实际时间跨度。