linux监控命令-vmstat

命令简介

vmstat(Virtual Memory Statistics 虚拟内存统计) 命令用来显示Linux系统虚拟内存状态,也可以报告关于进程、内存、I/O等系统整体运行状态。

用法

vmstat [-a] [-n] [-t] [-S unit] [delay [ count]]
vmstat [-s] [-n] [-S unit]
vmstat [-m] [-n] [delay [ count]]
vmstat [-d] [-n] [delay [ count]]
vmstat [-p disk partition] [-n] [delay [ count]]
vmstat [-f]
vmstat [-V]

选项

-a:显示活跃和非活跃内存
-f:显示从系统启动至今的fork数量 。
-m:显示slabinfo
-n:只在开始时显示一次各字段名称。
-s:显示内存相关统计信息及多种系统活动数量。
delay:刷新时间间隔。如果不指定,只显示一条结果。
count:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷。
-d:显示磁盘相关统计信息。
-p:显示指定磁盘分区统计信息
-S:使用指定单位显示。参数有 k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024 bytes)
-V:显示vmstat版本信息

linu内存

Linux系统的内存分为物理内存和虚拟内存两种。物理内存是真实的,也就是物理内存条上的内存。而虚拟内存则是采用硬盘空间补充物理内存,将暂时不使用的内存页写到硬盘上以腾出更多的物理内存让有需要的进程使用。当这些已被腾出的内存页需要再次使用时才从硬盘(虚拟内存)中读回内存。这一切对于用户来说是透明的。通常对Linux系统来说,虚拟内存就是swap分区。

linux CPU

在Linux系统中监控CPU的性能主要关注3个指标:运行队列、CPU使用率和上下文切换,理解这3个指标的概念和原理对于发现和处理CPU性能问题有很大的帮助。

1. 运行队列

   每个CPU都会维护一个运行队列,调度器会不断地轮询让队列中的进程运行,直到进程运行完毕将其由队列中删除。如果CPU过载,就会出现调度器跟不上系统要求,导致运行队列中等待运行的进程越来越多。正常来说,每个CPU的运行队列不要超过3,如果是双核CPU就不要超过6。


2. CPU使用率

   CPU使用率一般可以分为一下几个部分。

   a. 用户进程:运行用户进程所占用的CPU时间的百分比。

   b. 系统进程:运行系统进程和中断所占用的CPU的时间百分比。

   c. 等待IO:因为IO等待而使CPU处于idle状态的时间百分比。

   d. 空闲:CPU处于空闲状态的时间百分比。    

  如果CPU的空闲率长期低于10%,那么表示CPU的资源已经非常紧张,应该考虑进程优化或添加更多地CPU。“等待IO”表示CPU因等待IO资源而被迫处于空闲状态,这时候的CPU并没有处于运算状态,而是被白白浪费了,所以“等待IO应该越小越好。”


3.上下文切换

         通过CPU时间轮询的方法,Linux能够支持多任务同时运行。对于普通的CPU,内核会调度和执行这些进程,每个进程都会被分配CPU时间片并运行。当一个进程用完时间片或者被更高优先级的进程抢占时间块后,它会被转到CPU的等待运行队列中,同时让其他进程在CPU上运行。这个进程切换的过程被称为上下文切换。过多的山下文切换会造成系统的很大的开销。

参数解读

使用例子

vmstat 3 10 #每三秒采集一次 采集10次
[root@kuaihe-soa-001 ~]#vmstat 3 10
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 3  0      0 3411540 143276 4090752    0    0     0     2    0    0  2  0 97  0  0
 1  0      0 3411524 143276 4090776    0    0     0    44 11573 20813  2  1 97  0  0
 0  0      0 3411496 143276 4090812    0    0     0    23 12900 23074  3  1 97  0  0
 0  0      0 3411668 143276 4090836    0    0     0     7 12766 22840  3  1 97  0  0
 0  0      0 3411576 143276 4090864    0    0     0    43 13068 23159  3  1 96  0  0
 1  0      0 3410944 143276 4090916    0    0     0     1 15414 25585  4  1 95  0  0
 0  0      0 3411008 143276 4090940    0    0     0    40 13854 24412  3  1 96  0  0
 0  0      0 3411000 143276 4090976    0    0     0    35 13697 24478  3  1 96  0  0
 0  0      0 3411240 143276 4091012    0    0     0    49 15058 25377  4  1 95  0  0
 0  0      0 3411456 143276 4091040    0    0     0   137 13683 24426  3  1 96  0  0

内存监控

对于内存监控,需要关心的指标包括:swpd、free、buff、cache、si和so,尤其需要重视的是free、si和so

swpd 使用虚拟内存大小
free 空闲物理内存大小。
buff 用作缓冲的内存大小。
cache 用作缓存的内存大小,如果cache的值大的时候,说明cache处的文件数多,如果频繁访问到的文件都能被cache处,那么磁盘的读IO bi会非常小。
si 每秒从交换区写到内存的大小,由磁盘调入内存。
so 每秒写入交换区的内存大小,由内存调入磁盘。

如果free 空闲内存非常小,但是si 和 so长期为0 表示内存刚好够用,并没有频繁的从磁盘交换内存。暂时不会对系统产生影响

如果 si 或者so非常大,表示物理内存不够用,频繁的通过磁盘进行虚拟内存交换,因为磁盘读取性能很低,会产生性能影响 需要释放和增加物理内存

 

cpu监控

r:在运行队列中等待的进程数。

b:在等待IO的进程数。

cs:每秒的上下文切换的次数。

us:用户进程使用的CPU时间(%)。us过高 可能需要优化算法,或者有死循环

sy:系统进程使用的CPU时间(%)。

id:CPU空闲时间(%)。

wa:等待IO所消耗的CPU时间(%)。

1.如果 id非常小,同时b>0 wa非常高,那么表示cpu过高是io导致的 并非由于CPU资源不足。用户应检查系统中正在进行IO操作的进程,并进行调整和优化。

磁盘监控

bo:写数据到磁盘的速率,
bi:从磁盘读的速度

 注意:随机磁盘读写的时候,这2个值越大(如超出1024k),能看到CPU在IO等待的值也会越大。

posted @ 2020-09-03 10:04  意犹未尽  阅读(251)  评论(0编辑  收藏  举报