• linux资源管理命令之-----vmstat


    一、作用及语法:
    命令用来显示Linux系统虚拟内存状态,也可以报告关于进程、内存、I/O等系统整体运行状态。
    vmstat [options] [delay [count]]
    二、vmstat各字段说明
    ======================================================
    [root@smiletest /]# 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 3592 123600 127964 1229856 0 0 0 25 2 7 0 0 100 0 0
    ======================================================
    1、procs
    r:表示运行和等待CPU时间片的进程数(就是说多少个进程真的分配到CPU),这个值如果长期大于系统CPU个数,说明CPU不足,需要增加CPU
    b:表示在等待资源的进程数,比如正在等待I/O或者内存交换等。
    2、memory
    swpd:表示交换内存使用总量,即虚拟内存已使用的大小(单位KB),如果大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器。
    free:表示当前空闲的物理内存
    buff:表示baffers cached内存大小,也就是缓冲大小,一般对块设备的读写才需要缓冲
    Cache:表示page cached的内存大小,也就是缓存大小,一般作为文件系统进行缓冲,频繁访问的文件都会被缓存,如果cache值非常大说明缓存文件比较多,如果此时io中的bi比较小,说明文件系统效率比较好
    3、swap
    si:数据进入swap中的数据速率(kb/s),如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。
    so数据离开swap的速率(kb/s)
    注意:一般情况下si、so的值都为0,如果si、so的值长期不为0,则说明系统内存不足,需要增加系统内存
    4、io
    bi:从块设备读入数据到系统的速度,即读磁盘,单位kb/s
    bo:表示写到块设备数据的总量,即写磁盘,单位kb/s
    注意:如果bi+bo的值过大,且wa值较大,则表示系统磁盘IO瓶颈
    5、system
    in:表示某一时间间隔内观测到的每秒设备终端数
    cs:表示每秒产生的 上下文切换次数,
    例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源,也要尽量避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用,是不可取的。
    注意:
    这两个值越大,则由内核消耗的CPU就越多
    6、CPU
    us:表示用户进程消耗的CPU时间百分比,us值越高,说明用户进程消耗CPU时间越多,如果长期大于50%,则需要考虑优化程序或者算法
    sy:表示系统内核进程消耗的CPU时间百分比,一般来说us+sy应该小于80%,如果大于80%,说明可能存在CPU瓶颈
    id:表示CPU处在空间状态的时间百分比
    wa:表示IP等待所占用的CPU时间百分比,wa值越高,说明I/O等待越严重,根据经验wa的参考值为20%,如果超过20%,说明I/O等待严重,引起I/O等待的原因可能是磁盘大量随机读写造成的,也可能是磁盘或者监控器的贷款瓶颈(主要是块操作)造成的
    综上所述,如果评估CPU,需要重点关注procs项的r列值和CPU想的us、sy、wa列的值
    三、使用实践
    一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数,如:
    [root@smiletest /]# vmstat 2 1
    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 3592 124444 128008 1229888 0 0 0 25 2 7 0 0 100 0 0
    2表示每个两秒采集一次服务器状态,1表示只采集一次。
  • 相关阅读:
    完整的验证码识别流程基于svm(若是想提升,可优化)
    linux离线搭建Python环境及安装numpy、pandas
    帮助维度理解
    遇到eclipse安装插件一直报错问题(版本问题)
    雷林鹏分享:Java 集合框架
    雷林鹏分享:Java 数据结构
    雷林鹏分享:Java 包(package)
    雷林鹏分享:Java 接口
    雷林鹏分享:Java 封装
    雷林鹏分享:Java 抽象类
  • 原文地址:https://www.cnblogs.com/--smile/p/11121524.html
Copyright © 2020-2023  润新知