总的Cpu使用率计算

计算方法:

1、采样两个足够短的时间间隔的Cpu快照,分别记作t1,t2,其中t1、t2的结构均为:

(user、nice、system、idle、iowait、irq、softirq、stealstolen、guest)的9元组;

2、计算总的Cpu时间片totalCpuTime

a)把第一次的所有cpu使用情况求和,得到s1;

b)把第二次的所有cpu使用情况求和,得到s2;

c)s2 - s1得到这个时间间隔内的所有时间片,即totalCpuTime = j2 - j1 ;

3、计算空闲时间idle

idle对应第四列的数据,用第二次的idle - 第一次的idle即可

idle=第二次的idle - 第一次的idle

4、计算cpu使用率

pcpu =100* (total-idle)/total

5、同理可以用同样的方法求出其他进程和线程所占cpu资源

源码

#include

#include

#include

#define __DEBUG__ 1

#define CK_TIME 1

int main(int argc ,char *argv[])

{

FILE *fp;

char buf[128];

char cpu[5];

long int user,nice,sys,idle,iowait,irq,softirq;

long int all1,all2,idle1,idle2;

float usage;

while(1)

{

fp = fopen("/proc/stat","r");

if(fp == NULL)

{

perror("fopen:");

exit (0);

}

fgets(buf,sizeof(buf),fp);

#if __DEBUG__

printf("buf=%s",buf);

#endif

sscanf(buf,"%s%d%d%d%d%d%d%d",cpu,&user,&nice,&sys,&idle,&iowait,&irq,&softirq);

/*

#if __DEBUG__

printf("%s,%d,%d,%d,%d,%d,%d,%d\n",cpu,user,nice,sys,idle,iowait,irq,softirq);

#endif

*/

all1 = user+nice+sys+idle+iowait+irq+softirq;

idle1 = idle;

rewind(fp);

/*第二次取数据*/

sleep(CK_TIME);

memset(buf,0,sizeof(buf));

cpu[0] = '\0';

user=nice=sys=idle=iowait=irq=softirq=0;

fgets(buf,sizeof(buf),fp);

#if __DEBUG__

printf("buf=%s",buf);

#endif

sscanf(buf,"%s%d%d%d%d%d%d%d",cpu,&user,&nice,&sys,&idle,&iowait,&irq,&softirq);

/*

#if __DEBUG__

printf("%s,%d,%d,%d,%d,%d,%d,%d\n",cpu,user,nice,sys,idle,iowait,irq,softirq);

#endif

*/

all2 = user+nice+sys+idle+iowait+irq+softirq;

idle2 = idle;

usage = (float)(all2-all1-(idle2-idle1)) / (all2-all1)*100 ;

printf("all=%d\n",all2-all1);

printf("ilde=%d\n",all2-all1-(idle2-idle1));

printf("cpu use = %.2f\%\n",usage);

printf("=======================\n");

fclose(fp);

}

return 1;

}

linux /proc/stat 计算线程cpu,Linux下用/proc/stat文件来计算cpu的利用率(附源码)相关推荐

  1. Linux下stream内存带宽测试参数和示例详解附源码(总结)

    目录 一.简介 二.使用简介 2.1 测试内容简介 2.2 编译参数简介 2.3 具体参数示例 三.源码下载及使用 四.其他相关知识链接 FIO测试硬盘性能参数和实例总结 一.简介 本文通过实例详细讲 ...

  2. 【工作日推算】JS计算当前时间前N个工作日(去除周末及节假日,文尾附源码下载)

    [写在前面]前些日子忙了几天有关指标对比分析的功能,因为系统是对接券商类的业务,所以他们比较关注的是工作日的数据波动,因此前端指标对比数据需要拿工作日的,不然他们停市的数据比较也没用,故而今天针对之前 ...

  3. PHPCMS V9 实现下拉加载的方法,兼容手机端(附源码下载)

    PHPCMS V9 实现下拉加载的方法,兼容手机端 HTML部分 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 2 ...

  4. Linux嵌入式驱动开发01——第一个驱动Hello World(附源码)

    文章目录 全系列传送门 引言 驱动介绍 Hello World 1. 包含头文件 2. 驱动模块的入口和出口 3. 声明信息 4. 功能实现 完整代码 编译 第一种方法 第二种方法 编译成模块 第一步 ...

  5. linux打印文件名称唯美,程序员的情人节应该这么优雅度过(附源码)

    2018,2月,14日,和春节一前一后的情人节快要来了,IT 界的程序员你们想要度过这个美好的节日呢?你想用什么特别的方式对你爱的人表白呢? 我们程序员是有情怀,懂浪漫的,富有理想主义的一个族群,智商 ...

  6. 基于嵌入式linux五子棋游戏,Android 实战项目之五子棋 附源码

    Android五子棋游戏五子连珠算法实现 1.游戏规则 五子棋是两个人之间进行的竞技活动,黑方白方规则规则相同,黑棋必须先行,五连子的方向为横.竖.斜,如黑白色任一方先五子连一线则算胜出. 2.五子连 ...

  7. linux直流电机测试,带霍尔传感器编码器的直流减速电机测速原理讲解(附源码)...

    查看: 14294|回复: 83 带霍尔传感器编码器的直流减速电机测速原理讲解(附源码) 高级会员, 积分 891, 距离下一级还需 109 积分 积分金钱891 注册时间2019-4-22 在线时间 ...

  8. 由一次线上故障来理解下 TCP 三握、四挥 Java 堆栈分析到源码的探秘

    本文导读: 生产故障场景介绍 TCP 建连三次握手过程 TCP 断连四次挥手过程 结合 Java 堆栈剖析源码 再从堆栈中找到"罪魁祸首" 问题优化方案总结 1.生产故障场景介绍 ...

  9. 4个数字计算24点java算法(附源码)

    今天看到一个帖子说程序员面试考24点算法,想为什么不用程序来实现呢.在网上没有找到非常完美的算法,包括那个24点计算器,给出的结果重复的也较多.所以自己写了一个.在这儿贴出来给大家分享一下.附源码. ...

最新文章

  1. 独家 | 人工智能和大数据是如何联系在一起的?
  2. [Offer收割]编程练习赛50
  3. 怎么改PHP_PHP实现RPC(简版)
  4. 处理项目重大质量问题的思路和原则
  5. django Admin
  6. 国外网站评出对程序员最具影响的书籍清单
  7. 小霸王消失,好记星落灰,谁能“取悦”10后?
  8. O2O(online to offline)营销模式
  9. python之迭代器和生成器全解--包含实现原理及应用场景
  10. VS 2010 与 VS 2008的区别
  11. 非视距成像:硬件设备总结
  12. 多目标应用:基于MOGWO的地铁隧道上方基坑工程优化设计(提供MATLAB代码)
  13. Android 监控APP是否在后台运行
  14. 跟ChatGPT,聊聊ChatGPT
  15. (十六)记录 -- 1. 数据记录的概念
  16. torch.nn.Linear详解
  17. Linux 服务器被黑后处理方法
  18. 电流反馈运算放大器介绍及RF(反馈电阻)的作用
  19. SSVEP干电极介绍及其分类算法研究
  20. linux中的grep 过滤查找及“|”管道符、gzip/gunzip 压缩、zip/unzip 压缩

热门文章

  1. Django-ROM(字段,参数)
  2. 总结一下数据库的 一对多、多对一、一对一、多对多 关系
  3. 数据库(.udl)简单测试连接
  4. LNMP环境下压力测试时的主要调试参数
  5. 【灵感】wifi通过wifi发送优惠信息
  6. UI布局引擎Layout 之 QGraphicsLinearLayout
  7. sp_executesql (Transact-SQL) from MSDN
  8. JS === 实现通过点击td 跳转相应的图片
  9. Web前端-JavaScript基础教程下
  10. 去除input的自动填充色