`

Linux下的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=第二次的第四列 - 第一次的第四列

6、计算cpu使用率

pcpu =100* (total-idle)/total

 

 

实现:(Bash脚本)

#!/bin/sh  
 
##echo user nice system idle iowait irq softirq  
CPULOG_1=$(cat /proc/stat | grep 'cpu ' | awk '{print $2" "$3" "$4" "$5" "$6" "$7" "$8 " "$9 " "$10}')  
SYS_IDLE_1=$(echo $CPULOG_1 | awk '{print $4}')  
Total_1=$(echo $CPULOG_1 | awk '{print $1+$2+$3+$4+$5+$6+$7+$8+$9}')  
 
sleep 5  
 
CPULOG_2=$(cat /proc/stat | grep 'cpu ' | awk '{print $2" "$3" "$4" "$5" "$6" "$7" "$8 " "$9 " "$10 }')  
SYS_IDLE_2=$(echo $CPULOG_2 | awk '{print $4}')  
Total_2=$(echo $CPULOG_2 | awk '{print $1+$2+$3+$4+$5+$6+$7+$8+$9}')  
 
SYS_IDLE=`expr $SYS_IDLE_2 - $SYS_IDLE_1`  
 
Total=`expr $Total_2 - $Total_1`  
SYS_USAGE=`expr $SYS_IDLE/$Total*100 |bc -l`  
 
SYS_Rate=`expr 100-$SYS_USAGE |bc -l`  
 
Disp_SYS_Rate=`expr "scale=3; $SYS_Rate/1" |bc`  
echo $Disp_SYS_Rate% 

 

 

参考文章:

http://www.blogjava.net/fjzag/articles/317773.html

http://server.51cto.com/sCollege-188250.htm

 

分享到:
评论

相关推荐

    Linux_CPU占用率原理与精确度分析

    CPU占用率计算原理 ##### 1.1 相关概念 在Linux系统中,CPU利用率是衡量系统性能的一个重要指标,它反映了CPU的工作状态和效率。为了更好地理解CPU占用率的计算原理,我们需要先了解以下几个与之相关的基本概念:...

    linux-让多核CPU达到指定的CPU使用率脚本

    - 脚本可能通过监控`/proc/stat`文件获取CPU利用率信息,该文件提供了系统运行状态的实时统计。 - 脚本会自动排除自身占用的CPU%,确保计算的CPU使用率反映的是其他进程的使用情况。 - 当CPU使用率低于某个设定...

    LINUXCPU利用率算法android.pdf

    本文将深入探讨如何利用/Linux/proc/文件系统中的信息来计算CPU利用率。 首先,我们关注的是`/proc/cpuinfo`文件。这个文件提供了关于系统中CPU的详细信息,如处理器型号、频率、缓存大小等。例如,`processor`字段...

    CPU利用率组件源码

    4. **计时器**:为了计算CPU利用率,源码可能使用`clock_gettime`或`gettimeofday`等函数来获取当前时间,以便计算时间差。 5. **解析算法**:CPU使用率的计算涉及到对原始数据的处理,这可能包括从字符串中提取...

    用java获取CPU占用率

    **Linux平台下的CPU占用率计算** 对于Linux系统,CPU占用率的计算通常是通过对`/proc/stat`文件的解析。该文件包含了系统自启动以来的统计信息,包括CPU时间的详细记录。代码中`getCpuRateForLinux()`方法试图打开...

    模拟CPU使用率曲线

    2. 数据处理:计算出一定时间间隔内的平均CPU利用率,可能需要考虑多核CPU的情况。 3. 曲线绘制:利用图形库(如Qt、wxWidgets、GTK+或Web前端的D3.js等)将数据可视化为曲线,用户可以调整时间范围、分辨率、颜色等...

    用java取得linux系统cpu、内存的实时信息

    - **计算使用率**:利用两次读取之间的时间差,计算出CPU的使用效率。这涉及到在两次读取之间暂停一小段时间(如1秒),以便对比前后两次的数据,从而得出CPU的使用变化。 - **结果返回**:最终,将计算出的CPU使用...

    用QT编程测试Linux下CPU占用;

    在这个项目中,我们将专注于两个关键的QT组件:QT定时器和按钮的图像更换,并将它们应用于监控Linux系统的CPU利用率。 首先,我们需要理解Linux系统中获取CPU占用率的基本原理。在Linux中,可以通过读取`/proc/stat...

    《操作系统原理与Linux实践教程》习题参考答案.pdf

    在非抢占式调度中,Job1、Job2和Job3按照进入系统的顺序执行,计算每个作业的周转时间、CPU利用率和I2设备利用率。而在优先级调度中,Job1优先级最高,可以抢占CPU,但不能抢占I1和I2设备。通过构建作业调度时序图,...

    获取cpu,内存,流量利用率源码

    例如,CPU利用率可能通过比较两次采样间的CPU空闲时间差来计算;内存利用率是已用内存与总内存的比值;网络流量利用率则可能是最近一段时间内发送和接收的数据量除以总时间。 5. **数据可视化** 获取到这些利用率...

    linux监控cpu脚本

    - `echo "cpu: $((100 - cpu))%, $DATE, $TIME" > $OUTFILE`:如果CPU使用率低于50%,则计算剩余可用CPU百分比,并记录到指定文件中。 - `echo "system no error" | mutt -s "message" mailaddress@qq....

    获取每个线程的CPU使用率源代码

    通常,操作系统会维护关于线程执行的信息,包括其运行时间、等待时间等,这些信息可用于计算线程的CPU使用率。 在Windows系统中,我们可以使用`Windows Performance Counter (WPC)` API来获取这些数据。`WPC`提供了...

    实用全面的linux教程大全

    Linux下的CPU利用率计算原理详解.docx Linux操作系统中内存buffer和cache的区别.docx Linux服务器环境搭建(设置).pdf linux简明维护手册.pdf Linux系统命令及其使用详解.doc Linux系统性能监控工具.doc Linux系统...

    Linux_CPU.rar_cpu occupancy

    本文将深入探讨Linux CPU占用率的基本原理、计算方法以及精度分析。 CPU占用率是通过跟踪CPU在一段时间内执行用户进程和内核进程的时间比例来计算的。在Linux系统中,可以通过`top`, `htop`, `vmstat`, `mpstat`等...

    cpu占用率查看源码

    在大多数操作系统中,如Linux、Windows和macOS,都有API或者系统调用来获取CPU利用率数据。对于开发者来说,了解这些源码有助于理解系统的工作原理,优化性能监控工具,甚至排查系统性能问题。 在Linux系统中,CPU...

    C++获取特定进程CPU使用率的实现代码

    C++获取特定进程CPU使用率的实现代码 本文将介绍如何使用 C++ 实现获取特定进程的 CPU 使用率,并提供相关的实现代码。 一、获取进程 CPU 使用率的原理 要获取进程的 CPU 使用率,我们需要使用 Windows API 中的 ...

    [BUPT]计算机组成原理课件.zip

    10. Linux系统下的硬件操作:简要介绍在Linux环境下如何查看和控制硬件资源,如查看内存使用、CPU占用率,以及使用I/O设备。 通过学习这些内容,学生不仅能够理解计算机硬件的运作细节,还能够具备分析和设计简单...

    分析cpu使用情况的方法-linux查看cpu使用情况.pdf

    5. **上下文切换CPU利用率**:CPU用于在不同进程间切换的时间。 6. **nice值**:表示进程的优先级,nice值越高,进程获得CPU时间片的机会越小。 7. **实时进程队列长度**:这是等待CPU调度的高优先级进程的数量。 ...

Global site tag (gtag.js) - Google Analytics