• vmstat


    vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监控。是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。

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

    3、各列参数含义:
    类别 参数 含义 备注
    procs(进程) r 运行队列中进程数量  
    b 等待IO的进程数量  
    memory(内存) swpd 使用虚拟内存大小,单位k 如果swpd的值不为0,但是si,so的值长期为0,这种情况不会影响系统性能
    free 空闲物理内存大小  
    buff 用作缓冲的内存大小 对块设备的读写进行缓冲
    cache 用作缓存的内存大小 文件系统的cache;如果cache的值大的时候,说明cache处的文件数多,如果频繁访问到的文件都能被cache处,那么磁盘的读IO bi会非常小
    swap si 每秒从交换区写到内存的大小,由磁盘调入内存,单位:kb/s 内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗;如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。
    so 每秒写入交换区的内存大小,由内存调入磁盘
    io bi 每秒读取的块数 块设备每秒接收的块数量,单位是block,这里的块设备是指系统上所有的磁盘和其他块设备,现在的Linux版本块的大小为1024bytes
    bo 每秒写入的块数 设备每秒发送的块数量,单位是block;随机磁盘读写的时候,这2个值越大(如超出1024k),能看到CPU在IO等待的值也会越大
    system(系统) in 每秒中断数,包括时钟中断

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

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

    cs 每秒上下文切换数
    cpu(以百分比显示) us 用户进程执行时间百分比(user time) us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超50%的使用,那么该考虑优化程序算法或者进行加速
    sy 内核系统进程执行时间百分比(system time) sy的值过高时,说明系统内核消耗的cpu资源多,这个不是良性的表现,应该检查原因;这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足
    id 空闲时间百分比(包括io等待时间) 一般来说 us+sy+id=100
    wa IO等待时间百分比 wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)
    st 虚拟机使用的cpu时间  
    4、活跃和非活跃内存

     vmstat -a 2 5 【-a 显示活跃和非活跃内存,所显示的内容除增加inact和active】

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

     active:活跃的内存大小

    5、常见问题及分析:

     1、如果r经常大于4 ,且id经常少于40,表示cpu的负荷很重。

     2、如果bi,bo 长期不等于0,表示内存不足。

     3、r(运行队列)展示了正在执行和等待CPU资源的任务个数。当这个值超过了CPU数目,就会出现CPU瓶颈了。

        查看CPU核心数:cat /proc/cpuinfo|grep processor|wc -l

        当r值超过了CPU个数,就会出现CPU瓶颈,解决方法:增加CPU个数和核数;通过调整任务执行时间,如大任务放到系统不繁忙的情况下进行执行,进而平衡系统任务;调整已有任务的优先级

     4、通过vmstat识别CPU满负荷:

        vmstat中CPU的度量是百分比的,当us+sy的值接近100的时候,表示CPU正在接近满负荷工作。但要注意的是,CPU 满负荷工作并不能说明什么,Linux总是试图要CPU尽可能的繁忙,使得任务的吞吐量最大化。

        唯一能够确定CPU瓶颈的还是r(运行队列)的值。

  • 相关阅读:
    1007 素数对猜想 (20 分)
    1005 继续(3n+1)猜想 (25 分)
    1002 写出这个数 (20 分)
    1001 害死人不偿命的(3n+1)猜想 (15 分)
    mysql常用操作
    mysql乱码问题
    mysql忘记root密码
    linux开机启动
    fedora 调整屏幕亮度
    Access denied for user 'root'@'localhost' (using password:YES) 解决方案
  • 原文地址:https://www.cnblogs.com/Xinenhui/p/15950854.html
Copyright © 2020-2023  润新知