当前第2页 返回上一页
有了上面的背景知识,接下来我们就可以计算具体CPU的使用情况了。具体计算方式如下:
1 2 3 4 | Total CPU time since boot = user+nice+system+idle+iowait+irq+softirq+steal
Total CPU Idle time since boot = idle + iowait
Total CPU usage time since boot = Total CPU time since boot - Total CPU Idle time since boot
Total CPU percentage = Total CPU usage time since boot/Total CPU time since boot * 100%
|
有了上面的计算公式,计算某一CPU使用率或者系统总的CPU占用率也就是不难了。
示例:计算系统整体CPU占用情况
首先从/proc/stat中获取 t1时刻系统总体的user、nice、system、idle、iowait、irq、softirq、steal、guest、guest_nice的值,得到此时Total CPU time since boot(记为total1)和 Total CPU idle time since boot(记为idle1)。
其次,从/proc/stat中获取t2时刻系统总的Total CPU time since boot(记为total2)和Total CPU idle time since boot(记为idle2)。(方法同上一步)
最后,计算t2与t1之间系统总的CPU使用情况。也就是:
1 | CPU percentage between t1 and t2 = ((total2-total1)-(idle2-idle1))/(total2-total1)* 100%
|
其中, ((total2-total1)-(idle2-idle1))实际上就是t1与t2时刻之间系统CPU被占用的时间(总时间 - 空闲时间)。
下面是一段计算时间段内CPU被占用情况的脚本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #!/bin/bash
# by Paul Colby (http:
PREV_TOTAL=0
PREV_IDLE=0
while true; do
# Get the total CPU statistics, discarding the 'cpu ' prefix.
CPU=(`sed -n 's/^cpu\s//p' /proc/stat`)
IDLE=${CPU[3]} # Just the idle CPU time.
# Calculate the total CPU time.
TOTAL=0
for VALUE in "${CPU[@]}" ; do
let "TOTAL=$TOTAL+$VALUE"
done
# Calculate the CPU usage since we last checked.
let "DIFF_IDLE=$IDLE-$PREV_IDLE"
let "DIFF_TOTAL=$TOTAL-$PREV_TOTAL"
let "DIFF_USAGE=(1000*($DIFF_TOTAL-$DIFF_IDLE)/$DIFF_TOTAL+5)/10"
echo -en "\rCPU: $DIFF_USAGE% \b\b"
# Remember the total and idle CPU times for the next check.
PREV_TOTAL= "$TOTAL"
PREV_IDLE= "$IDLE"
# Wait before checking again.
sleep 1
done
|
以上就是Linux中如何计算特定CPU使用率的详细内容,更多文章请关注木庄网络博客!
返回前面的内容
相关阅读 >>
Linux端口不通
nfs服务简介及使用方法
为什么要学习Linux
Linux无法解析域名
Linux如何安装qq
关于迁云工具 windows gui 版本介绍
Linux 文件权限详解
Linux和centos的区别
Linux中xargs的用法详解
Linux不支持所有命令怎么办
更多相关阅读请进入《Linux》频道 >>
转载请注明出处:木庄网络博客 » Linux中如何计算特定CPU使用率