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

  使用vmstat命令可以输出一条服务器状态信息:

  

  可以在vmstat命令后添加2个参数,第一个参数表示间隔多长时间获取一次信息,单位为秒,第二个参数表示输出几个信息后停止获取:

    

  第二个参数是缺省的,如果省略,则会一直输出状态信息,直至使用"Ctrl + C"停止vmstat:

    


  现在来详细解释下这些参数:

  procs

    r  -->  当前等待运行的进程队列,如果其超过了cpu内核数目,则表示这个cpu负载过高,cpu很繁忙,服务器的状态很危险。

    b  -->  表示阻塞的进程。

  memory 

    swpd  -->  虚拟内存已使用的大小,也就是已经有多少内存已经被交换到了交换文件货磁盘,如果大于0,表示机器物理内存不足了,如果不是程序内存泄露的原因,那么就该升级内存了或者把耗内存的任务迁移到其他机器。

    free  -->  空闲的物理内存的大小,或者说是未分配的可用内存。

    buff  -->  正在使用中的内存。

    cache  -->  直接用来记忆我们打开的文件,给文件做缓冲,也有一种说法是显示了有多少内存可以被交换到交换文件或者磁盘上。

  swap

    si   -->  每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。

    so  -->  每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上。

  io

    bi   -->  块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte。

    bo  -->  块设备每秒发送的块数量,例如我们读取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO过于频繁,需要调整。

  system

    in  -->  每秒CPU的中断次数,包括时间中断。

    cs  -->  每秒系统为了处理任务而上下文切换的次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用。

  cpu

    us  -->  用户CPU使用时间,即处理器在非内核程序消耗的时间。

    sy  -->  系统CPU使用时间,即处理内核相关任务消耗的时间,如果太高,表示系统调用时间长,例如是IO操作频繁。

    id  -->  空闲CPU使用时间,一般来说,id + us + sy = 100。

    wt  -->  等待IO CPU时间。


  显示活跃和非活跃内存

  在vmstat后加入-a选项

  

  显示磁盘统计数据总结

  vmstat也可以打印系统磁盘活动统计。使用-D选项

  

  显示单位

  可以选择你想打印的显示单位字符。在-S后跟上k (小写,1000)、 K (大写,1024)、 m (小写,1000000)、 M (大写,1048576) 字节. 如果你不想选择单位,默认使用的是K (1024)。 

  

  

  显示某个磁盘分区的详细统计数据

  可以使用-p选项跟上设备名

  

  

 

【随笔】vmstat性能监测的更多相关文章

  1. 【系统监控】性能监测 vmstat,mpstat,iostat

    一.系统整体性能监测工具:uptime [root@WebServer ~]# uptime (同w命令输出的第一行信息) 09:40:52 up 5 days, 57 min, 1 user, lo ...

  2. Linux按照CPU、内存、磁盘IO、网络性能监测

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

  3. Linux 性能监测:介绍

    看了某某教程.读了某某手册,按照要求改改某某设置.系统设定.内核参数就认为做到系统优化的想法很傻很天真:)系统优化是一项复杂.繁琐.长期的 工作,优化前需要监测.采集.测试.评估,优化后也需要测试.采 ...

  4. Linux性能监测

    1.Linux性能监测:监测目的与工具介绍 看了某某教程.读了某某手册,按照要求改改某些设置.系统设定.内核参数就认为做到系统优化的想法很傻很天真:)系统优化是一项复杂.繁琐.长期的工作,优化前需要监 ...

  5. Linux 性能监测工具总结

    前言: Linux系统出现问题时,我们不仅需要查看系统日志信息,而且还要使用大量的性能监测工具来判断究竟是哪一部分(内存.CPU.硬盘……)出了问题.在Linux系统中,所有的运行参数保存在虚拟目录/ ...

  6. inux按照CPU、内存、磁盘IO、网络性能监测

    http://my.oschina.net/chape/blog/159640 系统优化是一项复杂.繁琐.长期的工作,优化前需要监测.采集.测试.评估,优化后也需要测试.采集.评估.监测,而且是一个长 ...

  7. Linux性能监测:CPU篇(转)

    http://os.51cto.com/art/201012/239880.htm CPU 的占用主要取决于什么样的资源正在 CPU 上面运行,比如拷贝一个文件通常占用较少 CPU,因为大部分工作是由 ...

  8. Linux 性能监测:IO

    磁盘通常是计算机最慢的子系统,也是最容易出现性能瓶颈的地方,因为磁盘离 CPU 距离最远而且 CPU 访问磁盘要涉及到机械操作,比如转轴.寻轨等.访问硬盘和访问内存之间的速度差别是以数量级来计算的,就 ...

  9. Linux 性能监测:Memory

    这里的讲到的 "内存" 包括物理内存和虚拟内存,虚拟内存(Virtual Memory)把计算机的内存空间扩展到硬盘,物理内存(RAM)和硬盘的一部分空间(SWAP)组合在一起作为 ...

随机推荐

  1. Apache Shiro 使用手册(一)Shiro架构介绍

    一.什么是Shiro Apache Shiro是一个强大易用的Java安全框架,提供了认证.授权.加密和会话管理等功能:  认证 - 用户身份识别,常被称为用户"登录": 授权 - ...

  2. 黄聪:jquery 校验中国身份证号码

    大陆18位身份证(第二代身份证) 身份号码是一组具有特征组合码,由十七位数字本体码和一位校验码组成. 排列顺序从左至右依次为:六位数字地区码,八位数字生日码,三位数字顺序码和一位数字校验码. 校验方法 ...

  3. Android学习笔记(二)

    Google在Android4.0之后加入了Action Bar的功能.但是有时候标题栏会相当占用屏幕空间,使得内容区域变小,这里演示如何隐藏标题栏. 隐藏标题栏的方法很简单,打开上节的FirstAc ...

  4. (C#) Tasks 中的异常处理(Exception Handling.)

    多线程编程中要注意对线程异常的处理.首先写个例子. 一个线程用于显示信息(Show Messages).主线程用于做其他工作(Do Works). using (Task taskShowMessag ...

  5. CSS布局概述

    1.HTML5文档类型 由于Bootstrap使用了HTML5特定的HTML元素和CSS属性,所以使用Bootstrap的时候,所有的HTML文件都需要在其顶部引用HTML5的DOCTYPE属性,如下 ...

  6. EditText----

    ==============01   editText属性 1.输入法Enter键图标的设置: 软件盘的界面替换只有一个属性android:imeOptions,这个属性的可以取的值有normal,a ...

  7. 关于@Html.Action()的异常“控制器或该控制器未实现 IController。”

    解决之前: @Html.Action("BottomHelp", "Articles", new { num = 5}) 解决之后: @Html.Action( ...

  8. PHP上传大文件 分割文件上传

    最近遇到这么个情况,需要将一些大的文件上传到服务器,我现在拥有的权限是只能在一个网页版的文件管理系统来进行操作,可以解压,可以压缩,当然也可以用它来在线编辑.php文件. 文件有40M左右,但是服务器 ...

  9. onmouseover和onmouseout的那些事

    这篇文章来自一个偶然...以前刚开始学习javascript事件的时候就被一个东西搞得晕头撞向的.就是一对名字很相近的事件.一组是onmouseover()和onmouseout().另一组就是onm ...

  10. sql 简单事务例子

    BEGIN TRY BEGIN TRAN ) BEGIN UPDATE table SET ... END ELSE BEGIN UPDATE table SET ... UPDATE table S ...