你的位置:首页 > 操作系统

[操作系统]linux 系统监控系列之vmstat


vmstat的官方定义是:vmstat - Report virtual memory statistics,即虚拟内存的统计。

先来追根溯源:

什么是虚拟内存?

答:虚拟内存就是磁盘上虚拟出来可以当内存使用的一个文件

为什么要有虚拟内存?

答:程序需要经由内存来运行,如果程序执行时占用内存过多,内存耗尽,就会影响程序运行,在这种情况下,虚拟内存就会站出来——调用硬盘空间来充当内存,缓解内存紧张的状态,使程序顺利的运行下去。但是经由硬盘的读取远不如直接从内存来读取的效率高(所以有条件的话多买点内存条)

进入正题:

vmstat的监控项有什么?

答:进程,内存,分页,块I/O,traps和CPU活动

vmstat的参数?

-V prints version.   显示版本号
-n causes the headers not to be reprinted regularly.  字段名称只显示一次
-a print inactive/active page stats.  显示非活跃/活跃内存
-d prints disk statistics  显示磁盘数据信息
-D prints disk table  显示磁盘统计表
-p prints disk partition statistics  显示磁盘分区信息

如:[root@localhost /]# vmstat -p /dev/sda2

sda2       reads           read sectors            writes         requested writes
             41788           1781810             22914859         360923320

-s prints vm table  显示内存相关统计信息和各种活动数量
-m prints slabinfo  显示slabinfo信息,slab是Linux的一种内存分配机制,不具体关注了
-t add timestamp to output  在结果中显示时间
-S unit size  指定内存显示的单位,单位有k,K,m,M(1000, 1024, 1000000, or 1048576 bytes)

vmstat的结果解释:

[root@localhost /]# vmstat -S m

procs -----------memory---------- ---swap-- -----io---- --system--  -----cpu-----
r b        swpd free buff cache        si so         bi bo        in cs      us sy id wa st

procs      r  运行和等待CPU的进程数

             b  等待资源的进程数

memory  swpd  虚拟内存使用量

              free   空闲内存量

              buff  作为buff使用的内存

              cache  作为cache使用的内存

swap      si   从磁盘读入虚拟内存的交换量

             so   从虚拟内存写入磁盘的交换量

IO         bi   从块设备读入的数据总量,读磁盘 kb/s

            bo  从块设备写入的数据总量,写磁盘  kb/s

system  in  每秒中断数

            cs  每秒上下文切换次数

cpu      us sy id wa   用户消耗、系统消耗、空闲状态、IO等待消耗百分比      

            st 虚拟机的cpu损耗

主要关注:

r   最好不要超过cpu总数,长期大于的话需要重点关注

b   长期很高时需要注意

swpd   最好不要大于0,如果大于0,接着看si,so,如果为0或很低的话,没事

si,so  数值比较高,并且在不断变化时,说明内存不够了,内存中的数据频繁交换到交换分区中,这往往对系统性能影响极大

bi,bo  数值高表示io压力大

扩展知识:

1 进程有哪些状态

  答:进程是系统进行资源分配和调度的基本单位,它可以申请和拥有系统资源,是一个动态的概念。简单可理解为“一个程序”被执行后即为“一个进程”,主要的状态分为:就绪-运行-阻塞

        就绪即为已获得资源,正在等待获取CPU;运行是获得CPU后程序执行的状态;阻塞是指进程等待某种条件(如I/O操作或进程同步),在条件满足之前无法继续执行的状态

        vmstat中的r和b可从中理解其原理

2 块设备和字符设备

  答:是i/o设备的两大分类。块设备将信息存储在固定大小的块中,每个块都有自己的地址。数据块的大小通常在512字节到32768字节之间。块设备的基本特征是每个块都能独立于其它块而读写。磁盘是最常见的块设备;字符设备是指在I/O传输过程中以字符为单位进行传输的设备,例如键盘,打印机等