美文网首页
vmsate命令

vmsate命令

作者: xhz的个人小屋 | 来源:发表于2018-05-18 14:19 被阅读0次

    Vmstat

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

    vmstat(选项)(参数)
    -a:显示活动内页;
    
    -f:显示启动后创建的进程总数;
    
    -m:显示slab信息;
    
    -n:头信息仅显示一次;
    
    -s:以表格方式显示事件计数器和内存状态;
    
    -d:报告磁盘状态;
    
    -p:显示指定的硬盘分区状态;
    
    -S:输出信息的单位。default is K
    

    slab是Linux操作系统的一种内存分配机制。其工作是针对一些经常分配并释放的对象,如进程描述符等,这些对象的大小一般比较小,如果直接采用伙伴系统来进行分配和释放,不仅会造成大量的内存碎片,而且处理速度也太慢。而slab分配器是基于对象进行管理的,相同类型的对象归为一类(如进程描述符就是一类),每当要申请这样一个对象,slab分配器就从一个slab列表中分配一个这样大小的单元出去,而当要释放时,将其重新保存在该列表中,而不是直接返回给伙伴系统,从而避免这些内碎片。slab分配器并不丢弃已分配的对象,而是释放并把它们保存在内存中。当以后又要请求新的对象时,就可以从内存直接获取而不用重复初始化。

    [root@ESX-02-VM4 ~]# vmstat -SM -a 1
    procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
     r  b   swpd   free  inact active   si   so    bi    bo   in   cs us sy id wa st
     0  0    499    311   1647   1529    0    0     5  1555    0    0  6  0 92  1  0
     0  0    499    311   1647   1529    0    0     0    56  502  522  0  0 100  0  0
    

    详细说明:
    procs
    r:等待执行的任务数量
    展示了正在执行和等待cpu资源的任务个数。当这个值超过了cpu个数,就会出现cpu瓶颈。
    b:等待IO的进程数量
    memory
    swapd:正在使用虚拟的内存大小,单位k或者M
    free:空闲内存大小
    buff:已用的buff大小,对块设备的读写进行缓冲
    cache:已用的cache大小,文件系统的cache
    inact:非活跃内存大小,即被标明可回收的内存,区别于free和active 参数-a补充说明
    active:活跃的内存大小
    swap
    si:每秒从磁盘交换区写入内存的大小
    so:每秒从内存写到磁盘交换区的大小
    IO
    bi:每秒读取的块数(读磁盘)Block size: 1024
    bo:每秒写入的块数(写磁盘)
    system
    in:每秒中断数,包括时钟中断
    cs:每秒上下文切换数
    这两个值越大,会看到由内核消耗的cpu时间会越多
    CPU
    us:用户进程执行消耗cpu时间(user time),us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期超过50%的使用,那么我们就该考虑优化程序算法或其他措施了
    sys:系统进程消耗cpu时间(system time) sys的值过高时,说明系统内核消耗的cpu资源多,这个不是良性的表现,我们应该检查原因。
    Id:空闲时间(包括IO等待时间)
    wa:等待IO时间 Wa过高时,说明io等待比较严重,这可能是由于磁盘大量随机访问造成的,也有可能是磁盘的带宽出现瓶颈。

    单独拿Swap和IO参数来看:
    内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。
    当看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,这个是不正确的。不能光看这一点,还要结合swap的si和so,
    如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。
    当内存的需求大于RAM的数量,服务器启动了虚拟内存机制,通过虚拟内存,可以将RAM段移到SWAP DISK的特殊磁盘段上,
    这样会 出现虚拟内存的页导出和页导入现象,页导出并不能说明RAM瓶颈,虚拟内存系统经常会对内存段进行页导出,
    但页导入操作就表明了服务器需要更多的内存了, 页导入需要从SWAP DISK上将内存段复制回RAM,导致服务器速度变慢。

    相关文章

      网友评论

          本文标题:vmsate命令

          本文链接:https://www.haomeiwen.com/subject/uyqgdftx.html