vmstat的官方定义是:vmstat - Report virtual memory statistics,即虚拟内存的统计。

先来追根溯源:

什么是虚拟内存?

答:虚拟内存就是磁盘上虚拟出来可以当内存使用的一个文件

为什么要有虚拟内存?

答:程序需要经由内存来运行,如果程序执行时占用内存过多,内存耗尽,就会影响程序运行,在这种情况下,虚拟内存就会站出来——调用硬盘空间来充当内存,缓解内存紧张的状态,使程序顺利的运行下去。但是经由硬盘的读取远不如直接从内存来读取的效率高(所以有条件的话多买点内存条)

进入正题:

vmstat的监控项有什么?

答:进程,内存,分页,块I/O,traps和CPU活动

vmstat的参数?

-V prints version.   显示版本号
-n causes the headers not to be reprinted regularly.  字段名称只显示一次
-a print inactive/active page stats.  显示非活跃/活跃内存
-d prints disk statistics  显示磁盘数据信息
-D prints disk table  显示磁盘统计表
-p prints disk partition statistics  显示磁盘分区信息

如:[root@localhost /]# vmstat -p /dev/sda2

sda2       reads           read sectors            writes         requested writes
             41788           1781810             22914859         360923320

-s prints vm table  显示内存相关统计信息和各种活动数量
-m prints slabinfo  显示slabinfo信息,slab是Linux的一种内存分配机制,不具体关注了
-t add timestamp to output  在结果中显示时间
-S unit size  指定内存显示的单位,单位有k,K,m,M(1000, 1024, 1000000, or 1048576 bytes)

vmstat的结果解释:

[root@localhost /]# vmstat -S m

procs -----------memory---------- ---swap-- -----io---- --system--  -----cpu-----
r b        swpd free buff cache        si so         bi bo        in cs      us sy id wa st

procs      r  运行和等待CPU的进程数

b  等待资源的进程数

memory  swpd  虚拟内存使用量

free   空闲内存量

buff  作为buff使用的内存

cache  作为cache使用的内存

swap      si   从磁盘读入虚拟内存的交换量

so   从虚拟内存写入磁盘的交换量

IO         bi   从块设备读入的数据总量,读磁盘 kb/s

bo  从块设备写入的数据总量,写磁盘  kb/s

system  in  每秒中断数

cs  每秒上下文切换次数

cpu      us sy id wa   用户消耗、系统消耗、空闲状态、IO等待消耗百分比

st 虚拟机的cpu损耗

主要关注:

r   最好不要超过cpu总数,长期大于的话需要重点关注

b   长期很高时需要注意

swpd   最好不要大于0,如果大于0,接着看si,so,如果为0或很低的话,没事

si,so  数值比较高,并且在不断变化时,说明内存不够了,内存中的数据频繁交换到交换分区中,这往往对系统性能影响极大

bi,bo  数值高表示io压力大

扩展知识:

1 进程有哪些状态

答:进程是系统进行资源分配和调度的基本单位,它可以申请和拥有系统资源,是一个动态的概念。简单可理解为“一个程序”被执行的过程即为“一个进程”,主要的状态分为:就绪-运行-阻塞

就绪即为已获得资源,正在等待获取CPU;运行是获得CPU后程序执行的状态;阻塞是指进程等待某种条件(如I/O操作或进程同步),在条件满足之前无法继续执行的状态

vmstat中的r和b可从中理解其原理

2 块设备和字符设备

答:是i/o设备的两大分类。块设备将信息存储在固定大小的块中,每个块都有自己的地址。数据块的大小通常在512字节到32768字节之间。块设备的基本特征是每个块都能独立于其它块而读写。磁盘是最常见的块设备;字符设备是指在I/O传输过程中以字符为单位进行传输的设备,例如键盘,打印机等

3 上下文切换

答:是指CPU从一个线程或进程切换到另一个线程或进程。CPU切换到另一个进程需要保存当前进程的状态并恢复另一个进程的状态:当前运行任务转为就绪(或者挂起、删除)状态,另一个被选定的就绪任务成为当前任务。上下文切换包括保存当前任务的运行环境,恢复将要运行任务的运行环境。如果可运行的线程数大于CPU的数量,那么OS会强行暂停正在执行的线程,从而使其他线程能够使用CPU,这会引起上下文切换,而上下文切换会导致很大的CPU时间消耗,所以如果上下文切换频繁时,需要关注

通常在三种情况下可能会发生上下文切换:中断处理,多任务处理,用户态切换

4 中断

答:是指当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程。当发生中断时会引起上下文切换

linux 系统监控系列之vmstat的更多相关文章

  1. [转]linux 系统监控、诊断工具之 IO wait

    1.问题: 最近在做日志的实时同步,上线之前是做过单份线上日志压力测试的,消息队列和客户端.本机都没问题,但是没想到上了第二份日志之后,问题来了: 集群中的某台机器 top 看到负载巨高,集群中的机器 ...

  2. linux系统监控常用工具

    linux系统监控常用工具 一.系统核心工具包(coreutils) 1./bin/df 报告系统的磁盘空间用量 df -h  显示磁盘分区fdisk -l 2./bin/uname 显示系统信息 u ...

  3. Linux系统监控实用工具Glances

    Linux系统监控实用工具Glances Glances安装 Glances安装要求:python >= 2.6 和 psutil >= 0.4.1 1.第一步,安装了python-> ...

  4. python进行linux系统监控

      python进行linux系统监控 Linux系统下: 静态指标信息: 名称 描述 单位 所在文件 mem_total 内存总容量 KB /proc/meminfo disks 磁盘相关信息 - ...

  5. linux系统监控sar命令

    linux系统监控sar命令详解 sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告, 包 ...

  6. Linux系统监控命令及如何定位到Java线程

    >>PID.TID的区分 uid是user id,即用户id,root用户的uid是0,0为最高权限,gid是group id,用户组id,使用 id 命令可以很简单的通过用户名查看UID ...

  7. Linux性能监控top及vmstat命令

    监控的工具---top 第一行: 03:07:27 当前系统时间 3 days, 18:58 系统已经运行了3天18小时58分钟(在这期间没有重启过) 4 users load average: 0. ...

  8. Linux系统监控命令详解

    1. top命令 top命令经常用来监控Linux的系统状况,比如cpu.内存的使用,程序员基本都知道这个命令,但比较奇怪的是能用好它的人却很少,例如top监控视图中内存数值的含义就有不少的曲解. 输 ...

  9. Linux记录-linux系统监控命令汇总

    命令 功能应用 用法举例     free 查看内存使用情况,包括物理内存和虚拟内存 free -h或free -m     vmstat 对系统的整体情况进行统计,包括内核进程.虚拟内存.磁盘.陷阱 ...

随机推荐

  1. 在cygwin下编译c语言

    #include <stdio.h> int main (void) { printf("Hello World!\n"); ; } 1.保存到cygwin工作目录下 ...

  2. EF中的TPH、TPT、TPC

    1. Table Per Hierarchy(TPH):只建立一个表,把基类和子类中的所有属性都映射为表中的列2. Table Per Type(TPT):为基类和每个子类建立一个表,每个与子类对应的 ...

  3. SqlDbHelper备份,做项目时方便应用(目前不太全,把自己项目中的逐渐转移过来)

    ****************************************** 这是官网新闻左侧类别那部分用到的 **************************************** ...

  4. 《第一行代码》学习笔记12-UI(1)

    1.程序需要注销或者退出,用一个专门的集合类对所有的活动进行管理即可. 2.可视化编辑工具不利于真正了解界面背后的实现原理,通常这种方式制作的界面都不具有很好的屏幕适配性, 而且当需要编写较为复杂的界 ...

  5. TortoiseSVN上次文件显示被锁定

    1.可以使用SVN clean up来清除锁定. 2.如果不是本目录锁定,系统提示上一层目录锁定,需要到上一层或者根目录中清除. 3.如果在根目录下都无法clean的话,一般采取的方法是另外找一个目录 ...

  6. SignalR2.0开发实例之——群发消息

    一.前言 ASP .NET SignalR 是一个ASP .NET 下的类库,可以在ASP .NET 的Web项目中实现实时通信.什么是实时通信的Web呢?就是让客户端(Web页面)和服务器端可以互相 ...

  7. Web C# 导出Excel 方法总结

    方法1:微软推荐服务器需安装Excel型 依赖: 软件:Office Excel 2007-2013 引用:Microsoft Office 14.0 Object Library 1.1 数据准备 ...

  8. web qq 获取好友列表hash算法

    web qq 获取好友列表hash算法 在使用web qq的接口进行好友列表获取的时候,需要post一个参数:hash 在对其js文件进行分析之后,发现计算hash的函数位于: http://0.we ...

  9. block(三)揭开神秘面纱(上)

    block到底是什么 我们使用clang的rewrite-objc命令来获取转码后的代码. 1.block的底层实现 我们来看看最简单的一个block: [caption id="attac ...

  10. GetSystemTime API可以得到毫秒级时间

    用Now返回的日期格式中年只有2位,即2000年显示为00, 这似乎不太令人满意. 此外Now和Time都只能获得精确到秒的时间,为了得到更精确的毫秒级时间,可以使用API函数GetSystemTim ...