http://blog.csdn.net/paopaoc/article/details/9093125
在游戏的性能调优过程中,经常会需要获取CPU占用率、IO、显卡GPU占用率等基础性能数据,下面就简述一下获取nvdia显卡GPU占用率的方法。 nvdia 显卡在驱动安装后,可以通过nvapi.dll来获取显卡的相关信息。有关nvdia、AMD显卡sdk的相关资料在它们的网站上均有下载,但貌似非注册开发者可获取到的信息有限。
下面提供一个简单封装了的用来获取显卡信息的c++类,由于代码是根据网上可找到的有限资料写成,难免可能存在错误,如有问题欢迎指出。
- // KGpuMon.h 源代码
- #pragma once
- #define MAX_GPU_NUM 4L // 监控的GPU个数(NVIDIA定义的最多GPU个数是64,这里最多只监控4个)
- #define MY_PROCESS_ERROR(Condition) do { if (!(Condition)) goto Exit0; } while (false)
- #define MAX_DISPLAY_CARDS 4 // 最多监控4块显卡(暂时应该够了吧)
- // 常量定义
- #define MAX_PHYSICAL_GPUS 64
- #define SHORT_STRING_MAX 64
- #define MAX_THERMAL_SENSORS_PER_GPU 3
- #define MAX_CLOCKS_PER_GPU 0x120
- #define MAX_PSTATES_PER_GPU 8
- #define MAX_USAGES_PER_GPU 33
- #define MAX_COOLER_PER_GPU 20
- #define MAX_MEMORY_VALUES_PER_GPU 5
- // 接口ID值