计算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)*100) /(kernel+user) ;
代码见 http://www.oschina.net/code/snippet_614253_45586
时间: 2024-09-29 22:09:05