zoukankan      html  css  js  c++  java
  • c++ 计算cpu占用率

    计算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 

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

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

    或者调用API

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

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

  • 相关阅读:
    mysql 赋给用户权限 grant all privileges on
    ubuntu下aptget安装小型的lamp环境
    Linux系统进程管理
    SQLChapter1_Overview of SQL Server
    SQLChapter2Querying Data
    SQLexercise
    SQLChapter4Managing Databases and Table
    JavaUI添加事件(二)
    java ActionEventDemo
    JavaUI弹出对话框
  • 原文地址:https://www.cnblogs.com/itdef/p/4245863.html
Copyright © 2011-2022 走看看