CPU利用率

内存利用率

在《Windows下使用PDH获取性能计数器(CPU、内存、网络流量等)》中介绍了通过性能计数器获取计算机性能信息,若只是获取CPU利用率及内存利用率,可以直接通过API获取。Windows提供了相关函数来获取:

  • GetSystemTimes:获取CPU的空闲、内核、用户使用时间;

  • GetProcessTimes:获取进程的内核、用户使用时间,以及创建、退出时间等;

  • GlobalMemoryStatusEx:获取内存相关的详细信息;

CPU利用率

GetProcessTimes返回的使用时间是FILETIME格式的,获取CPU利用率只需获得一段时间内空闲时间与使用时间即可方便计算得到。为了得到当前CPU利用率,需要调用两次(间隔一段时间,如1s),然后计算其差值。

其中kernelTime中包含idleTime,所以需要减去后才能得到实际的内核使用时间。

__int64 Filetime2Int64(const FILETIME &ftime)
{LARGE_INTEGER li;li.LowPart = ftime.dwLowDateTime;li.HighPart = ftime.dwHighDateTime;return li.QuadPart;
}__int64 CompareFileTime2(const FILETIME &preTime, const FILETIME &nowTime)
{return Filetime2Int64(nowTime) - Filetime2Int64(preTime);
}double getCpuUsage()
{FILETIME preIdleTime;FILETIME preKernelTime;FILETIME preUserTime;GetSystemTimes(&preIdleTime, &preKernelTime, &preUserTime);Sleep(1000);FILETIME idleTime;FILETIME kernelTime;FILETIME userTime;GetSystemTimes(&idleTime, &kernelTime, &userTime);auto idle = CompareFileTime2(preIdleTime, idleTime);auto kernel = CompareFileTime2(preKernelTime, kernelTime);auto user = CompareFileTime2(preUserTime, userTime);if (kernel + user == 0)return 0;return 1.0*(kernel + user - idle) / (kernel + user);
}

内存利用率

通过GlobalMemoryStatusEx获取内心相关详细信息,信息的详细结构:

typedef struct _MEMORYSTATUSEX {DWORD     dwLength;DWORD     dwMemoryLoad;DWORDLONG ullTotalPhys;DWORDLONG ullAvailPhys;DWORDLONG ullTotalPageFile;DWORDLONG ullAvailPageFile;DWORDLONG ullTotalVirtual;DWORDLONG ullAvailVirtual;DWORDLONG ullAvailExtendedVirtual;
} MEMORYSTATUSEX, *LPMEMORYSTATUSEX;

其中dwMemoryLoad即为内存利用率。

const int Byte2MB = 1024 * 1024;
void getMemoryRate() {MEMORYSTATUSEX memStatus;memStatus.dwLength = sizeof(memStatus);GlobalMemoryStatusEx(&memStatus);int nAvail = (int)(memStatus.ullAvailPhys / Byte2MB);int nTotal = (int)(memStatus.ullTotalPhys / Byte2MB);cout << "Memory: " << memStatus.dwMemoryLoad << "%, " << nAvail << "/" << nTotal << endl;
}

[C++]-Windows下获取CPU、内存利用率相关推荐

  1. python3 获取cpu 内存利用率

    python通过第三方包psutil来获取cpu和内存信息 1.通过pip安装psutil: pip install psutil 2.获取指定进程的内存/CPU利用率: # 定义一个进程列表 pro ...

  2. Qt windows下获取CPU、主板、硬盘、网卡等相关信息

    首先磁盘ID和磁盘序列号是不一样的,磁盘的一些相关信息可通过以下方式获取 查看步骤,右键我的电脑---->选择属性---->选择设备管理器---->展开磁盘驱动器    就可以看到磁 ...

  3. java获取windows系统信息(CPU,内存,文件系统,硬盘大小)

    Java怎么获取windows系统信息,如CPU,内存,文件系统,硬盘大小? java实现这些功能的确有点麻烦,没有C语言方便.java在windows这方还是弱了一点.不过麻烦是麻烦点,针对这些功能 ...

  4. golang 获取cpu 内存 硬盘 使用率 信息 进程信息

    目录 1.获取 cpu 内存 磁盘使用率 2.获取本机信息 3. 获取CPU信息 4. 获取内存信息 5.获取磁盘信息 6.获取网络信息 7. 获取进程信息 使用库: go get github.co ...

  5. c语言windows获取时间,【转载】c/c++在windows下获取时间和计算时间差的几种方法总结...

    一.标准C和C++都可用 1.获取时间用time_t time( time_t * timer ),计算时间差使用double difftime( time_t timer1, time_t time ...

  6. Windows下获取视频设备的一种改进实现

    之前在https://blog.csdn.net/fengbingchun/article/details/102806822中介绍过在Windows下获取视频设备列表的方法.其实那种实现方法是有缺陷 ...

  7. C++在windows下获取本地主机ipv4地址和ipv6地址的代码

    把内容过程中经常用的内容段记录起来,下面内容段是关于C++在windows下获取本地主机ipv4地址和ipv6地址的内容,应该是对码农有所用处. #include <Winsock2.h> ...

  8. Windows下获取usb视频设备vendor id和product id的4种方法

    之前在https://blog.csdn.net/fengbingchun/article/details/103507754 博文中介绍过如何在Linux获取usb视频设备的vendor id和pr ...

  9. linux下如何获取cpu的利用率

    "proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以文件系统的方式为访问系统内核数据的操作提供接口.用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些 ...

最新文章

  1. 后盾网lavarel视频项目---laravel 使用laracasts/flash插件提示信息
  2. 小F的2013应届校招历程小结
  3. 深入理解JVM虚拟机(十):Java内存模型与多线程
  4. DBA(二):percona软件、innobackupex备份与恢复
  5. 成功解决sklearn\ensemble\weight_boosting.py:29: DeprecationWarning: numpy.core.umath_tests is an interna
  6. 使用remix和matemask部署智能合约到以太坊测试网络
  7. Centos7 Git源码安装
  8. 【PHP入门到精通】:Ch05:字符串处理
  9. 06_jQuery_内容过滤
  10. Flask笔记-通过Model访问数据库
  11. 通过jquer连接数据库里面的数据、LINQ简介
  12. mysql的存储引擎_Mysql数据库3种存储引擎有什么区别?
  13. 面试官:Spring该选择哪个构造方法来进行实例化?画重点要考的
  14. 教务管理系统设计与实现
  15. html5 最小化,当前界面最小化快捷键 窗口最小化和全屏化的快捷键是什么?
  16. 一位程序员工作10年总结的10条建议
  17. MySQL初始密码的查看
  18. 萝卜怎么吃最治病:白菜萝卜汤养胃暖身
  19. 学完高性能计算后的发展怎么样?
  20. Linux大全——Linux系统学习资源合集

热门文章

  1. 纸飞机飞行曲线matlab,纸飞机飞行最远的抛出角度数学建模分析
  2. 今日头条频道管理(自带动画效果)
  3. Windows10家庭版 SMB共享文件 方法
  4. SG600城市智能灯杆网关+云平台解决方案
  5. 【操作系统】-同步互斥-【王道模拟】-在一间酒吧里有3个音乐爱好者队列...
  6. 巨量千川(放量投放)也可以玩出 ROI10 ?
  7. apr协议的使用粗解和练习
  8. 行业案例 | 汽车售后服务升级,AR 应用成为差异化优势
  9. PDF文件限制密码如何取消
  10. mac:设置多久后息屏