Blog:博客园 个人

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

语法格式:

vmstat [options] [delay [count]]

delay:刷新时间间隔。如果不指定,只显示一条结果。

count:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷。

参数说明

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

输出信息说明

类别:

  • procs:进程
  • memory:内存
  • swap:虚拟内存
  • io:磁盘io
  • system:系统内核
  • cpu:CPU时间百分比
procs
项目 说明
r 等待执行的任务数,当这个值超过了CPU数目,就会出现CPU瓶颈了
b 处在非中断睡眠状态的进程数,大于0表示进程阻塞
memory
项目 说明
swpd 正在使用的swap大小单位K,如果大于0,表示物理内存不足
free 空闲的物理内存空间
buff 已使用的buff大小,对块设备的读写进行缓冲
cache 已使用的cache大小,文件系统的cache
inact 非活跃内存大小
active 活跃的内存大小
swap
项目 说明
si 交换内存使用,由磁盘调入内存
so 交换内存使用,由内存调入磁盘
io
项目 说明
bi 从块设备读入的数据总量(读磁盘) (KB/s),如果这个值大于0,表示物理内存不够用或者内存泄露了
bo 写入到块设备的数据总理(写磁盘) (KB/s) ,如果这个值大于0,表示物理内存不够用或者内存泄露了
system

这2个值越大,会看到由内核消耗的CPU时间会越多。

项目 说明
in 每秒产生的中断次数
cs 每秒产生的上下文切换次数
cpu
项目 说明
us 用户进程消耗的CPU时间百分比。us 的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超过50% 的使用,那么就该考虑优化程序算法或者进行加速了
sy 内核进程消耗的CPU时间百分比,其中包括消耗在system、irq、softirq状态的时间。sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性的表现,我们应该检查原因
id 系统空闲消耗的总CPU时间百分比
wa IO等待消耗的CPU时间百分比。wa的值高时,说明IO等待比较严重,这可能是由于磁盘大量作随机访问造成,也有可能是磁盘的带宽出现瓶颈(块操作)
st Time stolen from a virtual machine. Prior to Linux 2.6.11, unknown.

示例

不加任何参数:

[root@test ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 18536908 381556 58920 35857652 0 0 2 6 0 0 2 2 96 1 0

以上示例显示的是自系统启动后它记录的统计信息的均值。在CPU一栏显示,CPU有2%的时间用于执行用户应用程序代码,2%的时间用于系统代码,其余96%的时间处于空闲状态。

每2秒刷新输出结果,共计10条数据:

[yanhuauser@mams-103 optest]$ vmstat 2 10 |tee vmstat.log
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 3 18244556 320756 58848 37127060 0 0 2 6 0 0 2 2 96 1 0
2 2 18233548 319008 58856 37107488 4546 0 4554 64 35098 28464 5 5 84 6 0
2 1 18233548 365572 58864 36950716 8 0 8 640 40116 27700 6 7 83 5 0
1 2 18233292 321304 58880 37012480 134 0 134 92 35978 33730 5 2 88 6 0
1 1 18233292 374516 58880 36972972 12 0 12 106 31706 25987 3 2 90 5 0
4 2 18233292 302484 58888 37047228 8 0 10 32 26781 24285 5 3 87 5 0
1 2 18233292 371552 58904 36977100 12 0 12 78 30176 25186 5 3 87 5 0
3 0 18233292 307768 58912 37015744 24 0 24 42 36149 26812 1 5 89 5 0
0 3 18233036 377984 58920 36941756 194 0 212 64 35131 26675 2 3 90 5 0
3 2 18233036 567952 58920 36795824 22 0 22 0 30918 25781 2 2 90 6 0

以上示例中,第一组数据是CPU ticks,显示的是自系统启动的CPU时间,这里的“tick”是一个时间单位。虽然精简的vmstat输出仅显示四个CPU状态——us、sy、id和wa,这里则显示了全部CPU ticks的分布情况。

Linux性能优化:CPU性能分析工具--vmstat的更多相关文章

  1. mysql性能优化-慢查询分析、优化索引和配置 (慢查询日志,explain,profile)

    mysql性能优化-慢查询分析.优化索引和配置 (慢查询日志,explain,profile) 一.优化概述 二.查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 ...

  2. redis性能优化、内存分析及优化

    redis性能优化.内存分析及优化 1.优化网络延时 2.警惕执行时间长的操作 3.优化数据结构.使用正确的算法 4.考虑操作系统和硬件是否影响性能 5.考虑持久化带来的开销 5.1 RDB 全量持久 ...

  3. oracle性能优化之awr分析

    oracle性能优化之awr分析 作者:bingjava 最近某证券公司系统在业务期间系统运行缓慢,初步排查怀疑是数据库存在性能问题,因此导出了oracle的awr报告进行分析,在此进行记录. 导致系 ...

  4. linux性能优化cpu 磁盘IO MEM

    系统优化是一项复杂.繁琐.长期的工作,优化前需要监测.采集.测试.评估,优化后也需要测试.采集.评估.监测,而且是一个长期和持续的过程,不 是说现在优化了,测试了,以后就可以一劳永逸了,也不是说书本上 ...

  5. Android 性能优化 五 性能分析工具dumpsys的使用

    Android提供的dumpsys工具能够用于查看感兴趣的系统服务信息与状态,手机连接电脑后能够直接命令行运行adb shell dumpsys 查看全部支持的Service可是这样输出的太多,能够通 ...

  6. mysql性能优化-慢查询分析、优化索引和配置

    一.优化概述 二.查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 profiling分析查询 2索引及查询优化 三.配置优化 1)      max_connec ...

  7. [转]mysql性能优化-慢查询分析、优化索引和配置

    一. 优化概述 MySQL数据库是常见的两个瓶颈是CPU和I/O的瓶颈,CPU在饱和的时候一般发生在数据装入内存或从磁盘上读取数据时候.磁盘I/O瓶颈发生在装入数据远大于内存容量的时候,如果应用分布在 ...

  8. mysql性能优化-慢查询分析、优化索引和配置【转】

    一.优化概述 二.查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 profiling分析查询 2索引及查询优化 三.配置优化 1)      max_connec ...

  9. mysql性能优化-慢查询分析、优化索引和配置 MySQL索引介绍

    MySQL索引介绍 聚集索引(Clustered Index)----叶子节点存放整行记录辅助索引(Secondary Index)----叶子节点存放row identifier-------Inn ...

  10. 9.mysql性能优化-慢查询分析、优化索引和配置

    目录 一.优化概述 二.查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 profiling分析查询 2索引及查询优化 三.配置优化 max_connections ...

随机推荐

  1. 并发编程实战-ConcurrentHashMap源码解析

    jdk8之前的实现原理 jdk1.7中采用的数据结构是Segment + HashEntry 的方式进行实现.主要的结构如下图: ConcurrentHashMap 并不是将每个方法都在同一个锁上同步 ...

  2. PyQt(Python+Qt)学习随笔:使用pyqtConfigure建立信号和槽的连接

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在PyQt中,一般信号和槽的连接是通过connect方法建立的,语法如下: connect(slot ...

  3. Java基础学习之异常处理(6)

    @ 目录 1.异常是什么 1.1.Error 1.2.Exception 2.异常处理机制 2.1.捕获异常 2.2.抛出异常 3.自定义异常 3.1.自定义检查性异常 3.2.自定义运行时异常 1. ...

  4. 学习笔记:舞蹈链 Dancing Links

    这是一种奇妙的算法用来解决两个问题: 精确覆盖问题:给定一个矩阵,每行是一个二进制数,选出尽量少的行,使得每一列恰好有一个 \(1\) 重复覆盖问题:给定一个矩阵,每行是一个二进制数,选出尽量少的行, ...

  5. spring入门学习

    开发步骤: 1.导入Spring开发的基本坐标 2.编写接口和实现类 3.创建Spring核心配置文件 4.在Spring核心配置文件中配置实现类 5.使用Spring的API获得Bean实例Bean ...

  6. 七、Jmeter测试元件-线程

    线程组元素是任何测试计划的起点.所有控制器和采样器必须在线程组下.其他元素(例如,侦听器)可以直接放置在测试计划下. 名称:相当于一个业务流程 继续:当取样器出错时 会继续请求: 举例:1-当一个线程 ...

  7. 一文带你彻底了解大数据处理引擎Flink内存管理

    摘要: Flink是jvm之上的大数据处理引擎. Flink是jvm之上的大数据处理引擎,jvm存在java对象存储密度低.full gc时消耗性能,gc存在stw的问题,同时omm时会影响稳定性.同 ...

  8. Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient

    hive安装时遇到的问题 解压后指定了hive-env.sh文件的Hadoop_home  & hive_conf 两个参数后,先直接bin/hive 用Derby数据库启动一下,然后再配置其 ...

  9. git 上传 + 分支

    Git   上传 创建本地文件夹,更改为项目仓库(test) (1) 新建文件夹   test (2) 打开文件夹   git init 把项目添加到仓库内(test) (1) 复制项目到文件夹内 ( ...

  10. [OI笔记]NOIP2017前(退役前)模拟赛的总结

    好久没写blog了- 在noip2017前的最后几天,也就是在我可能将要AFO的前几天写点东西吧- 记录这最后几个月打的那些大大小小的模拟赛 一些比赛由于不允许公开所以就没有贴链接跟题面了- 2017 ...