查看iowait

最近要查看机器的iowait,然后归档上报。

然,也不至于用iostat或top去查看吧。

可以简单的通过 /proc/stat 里数据计算得出。

cpu  112216782 86129 367346873 4215542628 637164767 0 117780861 12842902
cpu0 40060944 9462 84479918 637423609 80407725 0 59473944 8641218
cpu1 13940069 17530 53987139 719940168 110865169 0 10911865 834881
cpu2 14275668 15139 56090586 714804966 113160039 0 11312806 837616
cpu3 14459456 15468 57329103 714884660 111165623 0 11800002 842509
cpu4 14726290 14812 57779218 712654430 112449028 0 12027437 845605
cpu5 14754352 13715 57680907 715834792 109117180 0 12254805 841070
intr 37225654298 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3327877866 739123971 67 2628 3449931938 175 2090539383 3406509974 177 2094578205 3472705776 165 2095694749 3517432158 173 2106529406 3513976333 138 2130263198 0 873 3011 0 39098223 56622766 1606 171852279 385268825 467164711 423569215 411514811 435030416 422187971 418361805 395261978 421782205 427809197 454914842 350043086 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ctxt 120176658410
btime 1353296426
processes 4693449682
procs_running 5
procs_blocked 1
输出解释
CPU 以及CPU0、CPU1、CPU2、CPU3、CPU4、CPU5、CPU6、每行的每个参数意思(以第一行为例)为:

参数 解释
user (112216782) 从系统启动开始累计到当前时刻,用户态的CPU时间(单位:jiffies) ,不包含 nice值为负进程。1jiffies=0.01秒
nice (86129) 从系统启动开始累计到当前时刻,nice值为负的进程所占用的CPU时间(单位:jiffies)
system (367346873) 从系统启动开始累计到当前时刻,核心时间(单位:jiffies)
idle (4215542628) 从系统启动开始累计到当前时刻,除硬盘IO等待时间以外其它等待时间(单位:jiffies)
iowait (637164767) 从系统启动开始累计到当前时刻,硬盘IO等待时间(单位:jiffies) ,
irq (0) 从系统启动开始累计到当前时刻,硬中断时间(单位:jiffies)
softirq (117780861) 从系统启动开始累计到当前时刻,软中断时间(单位:jiffies)

CPU时间=user+system+nice+idle+iowait+irq+softirq

“intr”这行给出中断的信息,第一个为自系统启动以来,发生的所有的中断的次数;然后每个数对应一个特定的中断自系统启动以来所发生的次数。
“ctxt”给出了自系统启动以来CPU发生的上下文交换的次数。
“btime”给出了从系统启动到现在为止的时间,单位为秒。
“processes (total_forks) 自系统启动以来所创建的任务的个数目。
“procs_running”:当前运行队列的任务的数目。
“procs_blocked”:当前被阻塞的任务的数目。
那么CPU利用率可以使用以下两个方法。先取两个采样点,然后计算其差值:
cpu usage=(idle2-idle1)/(cpu2-cpu1)*100
cpu usage=[(user_2 +sys_2+nice_2) - (user_1 + sys_1+nice_1)]/(total_2 - total_1)*100

好吧,来计算iowait值吧。

再cat /proc/stat

cpu  112221015 86132 367364306 4215697910 637184722 0 117788014 12843450
cpu0 40062450 9462 84484015 637444213 80410910 0 59478331 8641540
cpu1 13940580 17531 53989532 719966145 110869916 0 10912289 834929
cpu2 14276195 15139 56093325 714831787 113163803 0 11313011 837661
cpu3 14459993 15468 57331720 714911515 111168878 0 11800793 842555
cpu4 14726807 14813 57781608 712682592 112451423 0 12028028 845649
cpu5 14754988 13716 57684104 715861655 109119789 0 12255558 841112
intr 37232851446 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3328006748 739139750 67 2628 3450147342 175 2090628622 3406717971 177 2094668154 3472914361 165 2095783112 3517648280 173 2106616867 3514165266 138 2130353624 0 873 3011 0 39099708 56623728 1606 171857075 385273734 467180769 423585853 411530066 435051670 422211561 418396987 395279869 421801778 427831144 454932102 355396292 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ctxt 120182824057
btime 1353296426
processes 4693650118
procs_running 5
procs_blocked 0


iowait = (637184722-637164767)/(5463185549-5462980942) = 0.0975 = 9.75%

参考文档

http://www.linuxhowtos.org/System/procstat.htm

http://blog.sina.com.cn/s/blog_691c5f870100mmqx.html

原文地址:https://www.cnblogs.com/cloudstorage/p/2943385.html