linux获取当前进程的CPU使用率
来源:互联网 发布:国外必备软件 编辑:程序博客网 时间:2024/06/02 09:54
网上win下有好多例子,但是linux下的几乎没有。
查看了下win下获取的原理,就是一段时间里,系统态运行时间加上用户态运行时间,除以这段时间,就所CPU使用率。
仿照写了以下代码
先所获取当前时间的函数,用于计算时间流逝,精确到纳秒。
int64_tget_ticket(){struct timespec ts;int64_tustime = 0;clock_gettime(CLOCK_MONOTONIC, &ts);return ts.tv_sec*1.0e9+ts.tv_nsec;}
然后获取程序总的运行时间,可以使用getrusage()函数,返回的struct rusage结构体里面有两个time_val结构记录程序在用户和系统态运行的时间。
boolget_time_info(int64_t& systime, int64_t& nowtime){struct rusage rus;if (getrusage(RUSAGE_SELF, &rus) == 0){int64_t use_time = rus.ru_utime.tv_sec*1.0e9 + rus.ru_utime.tv_usec*1.0e3; // 用户态所用时间int64_t sys_time = rus.ru_stime.tv_sec*1.0e9 + rus.ru_stime.tv_usec*1.0e3; // 系统态所用时间systime = use_time + sys_time; // 记录当前总时间nowtime = get_ticket();// 记录当前时间return true;}return false;}
最后一个函数则是根据2次时间差计算CPU使用率
doubleget_cpu_usage_linux(){static int cpu_count = sysconf(_SC_NPROCESSORS_CONF); // cpu core numberdouble cpu = 0;int64_t systime=0, nowtime=0;if (get_time_info(systime, nowtime)) // 记录上一次运行的状态{sleep(1);// 间隔一秒int64_t systime2=0, nowtime2=0;if (get_time_info(systime2, nowtime2)) // 获得现在的状态{cpu = ((double)(systime2-systime)/(double)(nowtime2-nowtime))*(100/cpu_count); // 计算出cpu使用率return cpu;}}}
测试测试下效果:
void* thread(void*) // 死循环占满一个cpu{int64_t i = 0;while(1)i = get_ticket()*get_ticket();return 0;}int main(){pthread_t id;pthread_create(&id, 0, thread, 0);while (1)printf("cpu usage: %u%%\r\n", (int)get_cpu_usage_linux());return 0;}
输出结果:
root@ubuntu:/home/zcw# ./a.out
cpu usage: 49%
cpu usage: 49%
cpu usage: 49%
- linux获取当前进程的CPU使用率
- 获取当前进程的CPU使用率和内存使用
- vc获取当前进程CPU使用率
- 获取当前CPU使用率
- 获取进程cpu使用率
- 获取进程对应的CPU使用率
- C++ 获取特定进程的CPU使用率
- 获取单个进程CPU使用率
- 获取CPU的使用率
- 获取MSSQL当前Server的CPU 与 memory使用率
- python获取全部进程的CPU、内存使用率
- 转载:python获取全部进程的CPU、内存使用率
- 获取linux系统CPU使用率
- 获取系统的CPU使用率、内存使用率
- 获取当前进程Cpu使用率并自动导出到图表py脚本
- Linux 环境下监控进程内存和CPU的使用率
- delphi 获取当前进程的cpu占用率
- 获取 CPU 使用率的单元
- 各种日期函数使用说明
- h264解码器,s3c6410硬件mfc解码分析-H264
- First week:fight with delay evil
- 1.android:整理出15个Android很有用的代码片段(技巧)
- vim记忆上次浏览文件的位置
- linux获取当前进程的CPU使用率
- aMule代码分析(2)——CFileDataIO类和CFile类
- 想爱容易,相处难:当ASP.NET MVC爱上IoC
- java NIO /IO 非阻塞IO 和IO的区别及代码示例
- KDD-2013 Tutorial
- 记录自己的投资心得理会(1)
- Code Style Guidelines for Contributors
- Android 调用已安装市场,进行软件评分的功能实现
- ios摇一摇的实现