嵌入式开发板老化过程中显示温度与负载的关系脚本的用法

有一次测试过程需要查看开发板在增加负载的过程是否正常,由于在增加负载的过程中打印温度,打印温度可以通过脚本直接体现出来,负载也可以使用top命令打印出来,但是top命令用于保存脚本就比较费劲了,如何将负载打印到脚本中更适合保存呢?

这个时候我们就用到vmstat命令了。

vmstat命令是最常见的Linux/Unix监控工具,属于sysstat包。可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令,一个是Linux/Unix都支持,二是相比top,我可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)。

使用vmstat -h  查看帮助

root@localhost:~# vmstat -h

Usage:

 vmstat [options] [delay [count]]

Options:

 -a, --active           active/inactive memory   显示活跃和非活跃内存

 -f, --forks            number of forks since boot   显示从系统启动至今的fork数量

 -m, --slabs            slabinfo  显示slabinfo

 -n, --one-header       do not redisplay header  只在开始时显示一次各字段名称。

 -s, --stats            event counter statistics  显示内存相关统计信息及多种系统活动数量

 -d, --disk             disk statistics  显示磁盘相关统计信息。

 -D, --disk-sum         summarize disk statistics

 -p, --partition <dev>  partition specific statistics  显示指定磁盘分区统计信息

 -S, --unit <char>      define display unit  使用指定单位显示。参数有 k 、K 、m 、M,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024 bytes)

 -w, --wide             wide output  指定输出宽度

 -t, --timestamp        show timestamp

 -h, --help     display this help and exit

 -V, --version  output version information and exit

For more details see vmstat(8).

不做详细描述,下面只针对这个场景来描述我的使用方法

一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数 如 vmstat 2 1

 显示字段说明如下:

类别

项目

含义

说明

Procs(进程)

r

等待执行的任务数

展示了正在执行和等待cpu资源的任务个数。当这个值超过了cpu个数,就会出现cpu瓶颈。

B

等待IO的进程数量

 

Memory(内存)

swpd

正在使用虚拟的内存大小,单位k

 

free

空闲内存大小

 

buff

已用的buff大小,对块设备的读写进行缓冲

 

cache

已用的cache大小,文件系统的cache

 

inact

非活跃内存大小,即被标明可回收的内存,区别于free和active

具体含义见:概念补充(当使用-a选项时显示)

active

活跃的内存大小

具体含义见:概念补充(当使用-a选项时显示)

Swap

si

每秒从交换区写入内存的大小(单位:kb/s)

 

so

每秒从内存写到交换区的大小

 

IO

bi

每秒读取的块数(读磁盘)

块设备每秒接收的块数量,单位是block,这里的块设备是指系统上所有的磁盘和其他块设备,现在的Linux版本块的大小为1024bytes

bo

每秒写入的块数(写磁盘)

块设备每秒发送的块数量,单位是block

system

in

每秒中断数,包括时钟中断

这两个值越大,会看到由内核消耗的cpu时间sy会越多

 

秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目

cs

每秒上下文切换数

CPU(以百分比表示)

us

用户进程执行消耗cpu时间(user time)

us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期超过50%的使用,那么我们就该考虑优化程序算法或其他措施了

sy

系统进程消耗cpu时间(system time)

sys的值过高时,说明系统内核消耗的cpu资源多,这个不是良性的表现,我们应该检查原因。这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足

Id

空闲时间(包括IO等待时间)idle

一般来说 us+sy+id=100

wa

等待IO时间(iowait)

wa过高时,说明io等待比较严重,这可能是由于磁盘大量随机访问造成的,也有可能是磁盘的带宽出现瓶颈。

st

实时进程占用cpu的时间(steal time)

 

最终,我的老化脚本如下

#!/bin/bash

while true

do

vmstat 1 3

echo -----------------------------------

echo "`date +%T`  current temperature : =`cat /sys/class/thermal/thermal_zone0/temp`"

done

使用vmstat 1 3的原因是我如果每次只打印一次,发现经常有cpu数据不正常的情况,后面2次都是正确的,为了保险,我每次打印3次,后面的语句作用是显示当前温度(实际温度*1000)

运行结果如下:

 怎么样,是不是比较好用了啊,后面我再不同负载下的对应数据就不在这里显示了。

Guess you like

Origin blog.csdn.net/mainmaster/article/details/120327147