快速业务通道

Linux 系统cpu利用率计算

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-15

  Linux系统的cpu利用率不像windows的任务管理器这么直观能看到.top和vmstat是一个看到cpu利用率的方式.

  下面是我自己计算cpu使用率的方法,以备自己做监控视图用.

  [root@Centos5 admin]# more /proc/stat

  cpu 494881706 19 67370877 876689477 17202366 200116 0

  cpu0 96177278 1 13815598 71114795 780840 160297 0

  cpu1 55637645 2 7822250 116484226 2099600 5076 0

  cpu2 55163466 2 7460892 116965069 2441533 6266 0

  cpu3 59323490 2 7755772 112506339 2445624 6001 0

  cpu4 57541559 2 7651880 114524670 2321514 5737 0

  cpu5 56891878 3 7629496 115132164 2386230 5592 0

  cpu6 56887733 3 7617390 115174187 2355772 5791 0

  cpu7 57258654 1 7617597 114788022 2371250 5351 0

  这个是官方对cpu对第一行数据的解释:

  The number of jiffies (1/100ths of a second) that the system spent in user mode, user mode with low priority (nice), system mode, and the idle task, respectively. The last value should be 100 times the second entry in the uptime pseudo-file.

  各个参数的具体解释:

  第一排是cpu总计,下面是2个4核cpu的参数,故有8行数据.

  user (494881706) 从系统启动开始累计到当前时刻,用户态的CPU时间(单位:jiffies) ,不包含 nice值为负进程.1jiffies=0.01秒

  nice (19) 从系统启动开始累计到当前时刻,nice值为负的进程所占用的CPU时间(单位:jiffies)

  system (67370877) 从系统启动开始累计到当前时刻,核心时间(单位:jiffies)

  idle (876689477) 从系统启动开始累计到当前时刻,除硬盘IO等待时间以外其它等待时间(单位:jiffies)

  iowait (17202366) 从系统启动开始累计到当前时刻,硬盘IO等待时间(单位:jiffies) ,

  irq (200116) 从系统启动开始累计到当前时刻,硬中断时间(单位:jiffies)

  softirq (0) 从系统启动开始累计到当前时刻,软中断时间(单位:jiffies)

  CPU利用率技术脚本:

  本脚本持续显示cpu的利用率.

  #!/bin/bash

  while(true)

  do

  CPU_1=$(cat /proc/stat | grep ''cpu '' | awk ''{print $2" "$3" "$4" "$5" "$6" "$7" "$8}'')

Empire CMS,phome.net

  SYS_IDLE_1=$(echo $CPU_1 | awk ''{print $4}'')

  Total01=$(echo $CPU_1 | awk ''{printf "%.f",$1 $2 $3 $4 $5 $6 $7}'')

  sleep 2

  CPU_2=$(cat /proc/stat | grep ''cpu '' | awk ''{print $2" "$3" "$4" "$5" "$6" "$7" "$8}'')

  SYS_IDLE_2=$(echo $CPU_2 | awk ''{print $4}'')

  Total_2=$(echo $CPU_2 | awk ''{printf "%.f",$1 $2 $3 $4 $5 $6 $7}'')

  SYS_IDLE=`expr $SYS_IDLE_2 - $SYS_IDLE_1`

  Total=`expr $Total_2 - $Total01`

  TT=`expr $SYS_IDLE * 100`

  SYS_USAGE=`expr $TT / $Total`

  SYS_Rate=`expr 100 - $SYS_USAGE`

  echo "The CPU Rate : $SYS_Rate%"

  echo "------------------"

  done

Empire CMS,phome.net

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号