linux /proc/stat 计算线程cpu,Linux下用/proc/stat文件来计算cpu的利用率(附源码)
总的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的利用率(附源码)相关推荐
- Linux下stream内存带宽测试参数和示例详解附源码(总结)
目录 一.简介 二.使用简介 2.1 测试内容简介 2.2 编译参数简介 2.3 具体参数示例 三.源码下载及使用 四.其他相关知识链接 FIO测试硬盘性能参数和实例总结 一.简介 本文通过实例详细讲 ...
- 【工作日推算】JS计算当前时间前N个工作日(去除周末及节假日,文尾附源码下载)
[写在前面]前些日子忙了几天有关指标对比分析的功能,因为系统是对接券商类的业务,所以他们比较关注的是工作日的数据波动,因此前端指标对比数据需要拿工作日的,不然他们停市的数据比较也没用,故而今天针对之前 ...
- 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 ...
- Linux嵌入式驱动开发01——第一个驱动Hello World(附源码)
文章目录 全系列传送门 引言 驱动介绍 Hello World 1. 包含头文件 2. 驱动模块的入口和出口 3. 声明信息 4. 功能实现 完整代码 编译 第一种方法 第二种方法 编译成模块 第一步 ...
- linux打印文件名称唯美,程序员的情人节应该这么优雅度过(附源码)
2018,2月,14日,和春节一前一后的情人节快要来了,IT 界的程序员你们想要度过这个美好的节日呢?你想用什么特别的方式对你爱的人表白呢? 我们程序员是有情怀,懂浪漫的,富有理想主义的一个族群,智商 ...
- 基于嵌入式linux五子棋游戏,Android 实战项目之五子棋 附源码
Android五子棋游戏五子连珠算法实现 1.游戏规则 五子棋是两个人之间进行的竞技活动,黑方白方规则规则相同,黑棋必须先行,五连子的方向为横.竖.斜,如黑白色任一方先五子连一线则算胜出. 2.五子连 ...
- linux直流电机测试,带霍尔传感器编码器的直流减速电机测速原理讲解(附源码)...
查看: 14294|回复: 83 带霍尔传感器编码器的直流减速电机测速原理讲解(附源码) 高级会员, 积分 891, 距离下一级还需 109 积分 积分金钱891 注册时间2019-4-22 在线时间 ...
- 由一次线上故障来理解下 TCP 三握、四挥 Java 堆栈分析到源码的探秘
本文导读: 生产故障场景介绍 TCP 建连三次握手过程 TCP 断连四次挥手过程 结合 Java 堆栈剖析源码 再从堆栈中找到"罪魁祸首" 问题优化方案总结 1.生产故障场景介绍 ...
- 4个数字计算24点java算法(附源码)
今天看到一个帖子说程序员面试考24点算法,想为什么不用程序来实现呢.在网上没有找到非常完美的算法,包括那个24点计算器,给出的结果重复的也较多.所以自己写了一个.在这儿贴出来给大家分享一下.附源码. ...
最新文章
- 独家 | 人工智能和大数据是如何联系在一起的?
- [Offer收割]编程练习赛50
- 怎么改PHP_PHP实现RPC(简版)
- 处理项目重大质量问题的思路和原则
- django Admin
- 国外网站评出对程序员最具影响的书籍清单
- 小霸王消失,好记星落灰,谁能“取悦”10后?
- O2O(online to offline)营销模式
- python之迭代器和生成器全解--包含实现原理及应用场景
- VS 2010 与 VS 2008的区别
- 非视距成像:硬件设备总结
- 多目标应用:基于MOGWO的地铁隧道上方基坑工程优化设计(提供MATLAB代码)
- Android 监控APP是否在后台运行
- 跟ChatGPT,聊聊ChatGPT
- (十六)记录 -- 1. 数据记录的概念
- torch.nn.Linear详解
- Linux 服务器被黑后处理方法
- 电流反馈运算放大器介绍及RF(反馈电阻)的作用
- SSVEP干电极介绍及其分类算法研究
- linux中的grep 过滤查找及“|”管道符、gzip/gunzip 压缩、zip/unzip 压缩