c++ 计算cpu占用率

时间:2020-12-18 09:01:36

计算CPU占用率就是获取系统总的内核时间 用户时间及空闲时间

其中空闲时间就是内核空转 所以内核时间包含空闲时间

然后计算

运行时间 = 内核时间 加 用户时间 减去 空闲时间

间隔时间 =  内核时间 加 用户时间

cpu使用率% = 运行时间 / 间隔时间 ;

无论单个进程cpu占用率还是系统整个cpu占用路 都是如此原理

核心代码就是如下几段

BOOL res = GetSystemTimes( &preidleTime, &prekernelTime, &preuserTime);
//间隔一段时间 例如间隔1秒后
BOOL res = GetSystemTimes( &idleTime, &kernelTime, &userTime );
// 计算数据间隔 LONGLONG idle = (idleTime - preidleTime);
LONGLONG kernel = (kernelTime - prekernelTime);
LONGLONG user = ( userTime - preuserTime);
int cpu = ((kernel - idle +user)*) /(kernel+user) ;

c++ 计算cpu占用率

代码见 http://www.oschina.net/code/snippet_614253_45586

对指定进程的CPU占用率 依旧是计算CPU空闲时间比

获取事件的办法可以使用 wmi 查询

或者调用API

// 获取指定进程时间
hProcess = OpenProcess(PROCESS_ALL_ACCESS, false, ProcInfo.th32ProcessID);

GetProcessTimes(hProcess, &creationTime, &exitTime, &kernelTime, &userTime))