显示全文:
监控CPU调度程序运行队列:
vmstat是Virtual Memory Statics(虚拟内存统计)的缩写,是实时系统监控工具。该命令通过使用knlist子程序和/dev/kmen伪设备驱动器访问这些数据,输出信息直接打印在屏幕。
vmstat命令输出包括以下内容:
(1),多少任务在运行
(2),CPU的使用情况
(3),CPU收到多少中断
(4),发生多少上下文切换
命令输出:
[root@www ~]# vmstat procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 1715728 19348 72648 0 0 28 3 34 29 0 0 97 2 0 vmstat 1 :每隔1s中刷新一次。
各输出字段含义解释:
procs:
r:运行队列长度 (就是说多少个进程真的分配到CPU),我测试的服务器目前CPU比较空闲,没什么程序在跑,当这个值超过了CPU数目,就会出现CPU瓶颈了。这个也和top的负载有关系,一般负载超过了3就比较高,超过了5就高,超过了10就不正常了,服务器的状态很危险。top的负载类似每秒的运行队列。如果运行队列过大,表示你的CPU很繁忙,一般会造成CPU使用率很高。
b:阻塞队列长度
memory:
swpd:交换内存已经使用的大小,
free:空闲内存
buffer:缓冲(之前的那一篇文章讲述了buffer和cache之间的区别)。
cache:缓存
swap:动态swap信息
si:swapin 物理内存到交换内存的转换
so:swapout 交换内存到物理内存的转换
io:
bi:blockin 物理磁盘块到交换内存块
bo:blockout 交换内存块到物理内存块
system:
in:终止,每秒的中断数,包括时钟中断。
cs:context switch:上下文切换
cpu:
us:用户空间占用百分比(用户进程执行时间)
sy:系统进程执行时间
id:空闲时间(包括IO等待时间)
wa:等待IO时间
vmstat可以添加的参数:
[root@www ~]# vmstat -help usage: vmstat [-V] [-n] [delay [count]] -V prints version. 显示vmstat的版本信息 -n causes the headers not to be reprinted regularly. 只在开始事显示一次各字段名称。 -a print inactive/active page stats. 显示活跃和非活跃的内存 -d prints disk statistics 显示磁盘统计信息 -D prints disk table 以表格形式显示disk信息。 -p prints disk partition statistics 显示指定磁盘分区统计信息 -s prints vm table 显示内存相关统计信息及多种系统活动数量。 -m prints slabinfo 显示slabinfo -t add timestamp to output 给输出添加时间戳 -S unit size 使用指定单位显示。参数有 k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024 bytes) delay is the delay between updates in seconds. 刷新时间间隔。如果不指定,只显示一条结果。 unit size k:1000 K:1024 m:1000000 M:1048576 (default is K) count is the number of updates. 刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷。 vmstat 1 5 :每1秒刷新一次,只显示5次。
补充知识:
解释下进程上下文的含义(也不一定太准确):
当一个进程在执行时,CPU的所有寄存器中的值、进程的状态以及堆栈中的内容被称为该进程的上下文。当内核需要切换到另一个进程时,它需要保存当前进程的所有状态,即保存当前进程的上下文,以便在再次执行该进程时,能够得到切换时的状态执行下去。在LINUX中,当前进程上下文均保存在进程的任务数据结构中。在发生中断时,内核就在被中断进程的上下文中,在内核态下执行中断服务例程。但同时会保留所有需要用到的资源,以便中继服务结束时能恢复被中断进程的执行。