热搜: Windows  yum  Edge浏览器  校园  Python  Win10  Access  企业版  替换  Linux 
  • 首 页
  •  
     
    当前位置: 首页 » 系统运维 » Linux系统 » 正文

    vmstat:一个标准的报告Linux系统虚拟内存统计工具

    放大字体  缩小字体 发布日期:2017-02-05  浏览次数:320
    核心提示:什么是 RAM?在智能手机世界,我们每一个人都知道 RAM。因此,我不想深入介绍,这样我就简要概括下。RAM 代表“随机访问内存(Random Access Memory)”,是一种计算机数据存储,它会存储经常使用的程序来提升系统性能。什么是虚拟内存?虚拟内存是一种内存管理方

    vmstat:一个标准的报告Linux系统虚拟内存统计工具

    什么是 RAM?

    在智能手机世界,我们每一个人都知道 RAM。因此,我不想深入介绍,这样我就简要概括下。RAM 代表“随机访问内存(Random Access Memory)”,是一种计算机数据存储,它会存储经常使用的程序来提升系统性能。

    什么是虚拟内存?

    虚拟内存是一种内存管理方式,计算机通过临时将最近未使用的程序数据从 RAM 转移到硬盘,以平衡或管理内存的短缺。

    什么是 vmstat?

    vmstat 是一个标准的工具,它会报告 Linux 系统的虚拟内存统计。vmstat 会报告有关进程、内存、分页、块 IO、陷阱(中断)和 cpu 活动的信息。它可以帮助 Linux 管理员在解决问题时识别系统瓶颈。

    在 Linux 中安装 Sysstat

    Linux 中没有独立的 vmstat 包。它与 sysstat 绑定在一起,并在大多数发行版的默认仓库上都有。如果还没有安装,只要基于你的发行版输入下面的命令。

    [在 CentOS/RHEL 中安装 vmstat] 
    $ sudo yum install sysstat 
    [在 Fedora 中安装 vmstat] 
    $ sudo dnf install sysstat 
    [在 Debian/Ubuntu 中安装 vmstat] 
    $ sudo apt-get install sysstat 
    [在 Arch Linux 中安装 vmstat] 
    $ sudo pacman -S sysstat 
    [在 Mageia 中安装 vmstat] 
    $ sudo urpmi sysstat 
    [在 openSUSE 中安装 vmstat] 
    $ sudo zypper install sysstat 
    

    不带参数运行 vmstat

    假设你已经成功安装 vmstat,在终端中不带参数运行 vmstat,它会向你展示 vmstat 的默认结果。

    # vmstat 
    procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- 
     r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa 
     2  0  79496 1614120 139240 787928   0    0    23    10    0    0 11  1 88  0 
    

    当你看到上面的输出,你可能已经大致了解了它是什么以及它的目的。不要担心,我们将深入解释每个参数,以便你可以了解 vmstat 的用途和目的。

    procs:procs 中有 r 和 b 列,它报告进程统计信息。在上面的输出中,在运行队列(r)中有两个进程在等待 CPU 并有零个休眠进程(b)。通常,它不应该超过处理器(或核心)的数量,如果你发现异常,最好使用 top 命令进一步地排除故障。

    • r:等待运行的进程数。
    • b:休眠状态下的进程数。

    memory: memory 下有报告内存统计的 swpd、free、buff 和 cache 列。你可以用 free -m 命令看到同样的信息。在上面的内存统计中,统计数据以千字节表示,这有点难以理解,最好添加 M 参数来看到以兆字节为单位的统计数据。

    • swpd:使用的虚拟内存量。
    • free:空闲内存量。
    • buff:用作缓冲区的内存量。
    • cache:用作高速缓存的内存量。
    • inact:非活动内存的数量。
    • active:活动内存量。

    swap:swap 有 si 和 so 列,用于报告交换内存统计信息。你可以用 free -m 命令看到相同的信息。

    • si:从磁盘交换的内存量(换入,从 swap 移到实际内存的内存)。
    • so:交换到磁盘的内存量(换出,从实际内存移动到 swap 的内存)。

    I/O:I/O 有 bi 和 bo 列,它以“块读取”和“块写入”的单位来报告每秒磁盘读取和写入的块的统计信息。如果你发现有巨大的 I/O 读写,最好使用 iotop 和 iostat 命令来查看。

    • bi:从块设备接收的块数。
    • bo:发送到块设备的块数。

    system:system 有 in 和 cs 列,它报告每秒的系统操作。

    • in:每秒的系统中断数,包括时钟中断。
    • cs:系统为了处理所以任务而上下文切换的数量。

    CPU:CPU 有 us、sy、id 和 wa 列,报告(所用的) CPU 资源占总 CPU 时间的百分比。如果你发现异常,最好使用 top 和 free 命令。

    • us:处理器在非内核程序消耗的时间。
    • sy:处理器在内核相关任务上消耗的时间。
    • id:处理器的空闲时间。
    • wa:处理器在等待IO操作完成以继续处理任务上的时间。

    以 MB 方式输出

    默认情况下,vmstat 以千字节为单位显示内存统计,这是非常难以理解的,最好添加 -S m 参数以获取以兆字节为单位的统计。

    # 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 
     1  0    103    371    406   2116    0    0    40    15    0    0 11  1 87  0 
    

    以延迟方式运行 vmstat 获取更好的统计信息

    默认情况下,vmstat 的单次统计信息不足以进一步进行故障排除,因此,添加更新延迟(延迟是更新之间的延迟,以秒为单位)以定期捕获活动。如果你想以 2 秒延迟运行 vmstat ,只需使用下面的命令(如果你想要更长的延迟,你可以根据你的愿望改变)。

    以下命令将每 2 秒运行一次,直到退出。

    # vmstat 2 
    procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- 
     r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa 
     1  0 105500 325776 416016 2166912   0    0    40    15    0    0 11  1 87  0 
     0  0 105500 325644 416016 2166920   0    0     0    13 1083 1174 11  1 87  0 
     0  0 105500 308648 416024 2166928   0    0     1    16 1559 1453 16  2 82  0 
     0  0 105500 285948 416032 2166932   0    0     0    12  934 1003  9  1 90  0 
     0  0 105500 326620 416040 2166940   0    0     1    27  922 1068  9  1 90  0 
     0  0 105500 366704 416048 2166944   0    0     0    17  835  955  9  1 90  0 
     0  0 105500 366456 416056 2166948   0    0     1    22  859  918  9  1 90  0 
     0  0 105500 366456 416056 2166948   0    0     0    15 1539 1504 17  2 81  0 
     0  0 105500 365224 416060 2166996   0    0     1    19  984 1097 11  1 88  0 
    

    带延迟和计数运行 vmstat

    或者,你可以带延迟和特定计数运行 vmstat,一旦达到给定的计数,然后自动退出。

    以下命令将每 2 秒运行一次,10 次后自动退出。

    # vmstat 2 10 
    procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- 
     r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa 
     1  0  79496 1581916 157380 810412   0    0    23    10    0    1 11  1 88  0 
     2  0  79496 1559464 157380 810416   0    0     1     1 1821 1749 21  2 77  0 
     0  0  79496 1583768 157384 810416   0    0     1    46  681  799  9  1 90  0 
     2  0  79496 1556364 157384 810428   0    0     1     1 1392 1545 15  2 83  0 
     0  0  79496 1583272 157384 810428   0    0     1     0 1307 1448 14  2 84  0 
     2  0  79496 1582032 157384 810428   0    0     1    41  424  605  4  1 96  0 
     1  0  79496 1575848 157384 810428   0    0     1     0 1912 2407 26  2 71  0 
     0  0  79496 1582884 157384 810436   0    0     1    69  678  825  9  1 90  0 
     2  0  79496 1569368 157392 810432   0    0    11    26  920  969  9  1 90  0 
     1  0  79496 1583612 157400 810444   0    0     7    39 2001 2530 20  2 77  0 
    

    显示活动和非活动内存

    默认情况下,vmstat 会显示除活动和非活动内存之外的内存统计信息。如果要查看活动和非活动内存统计信息,请在 vmstat 后添加 -a 参数。

    # vmstat -a 
    procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- 
     r  b   swpd   free  inact active   si   so    bi    bo   in   cs us sy id wa 
     1  0 105500 2387592 415148 584112   0    0    40    15    0    1 11  1 87  0 
    

    打印磁盘统计

    在 vmstat 后面添加 -d 参数会以每个磁盘一行的方式显示统计(包含读、写和 IO)。

    # vmstat -d 
    disk- ------------reads------------ ------------writes----------- -----IO------ 
           total merged sectors      ms  total merged sectors      ms    cur    sec 
    ram0       0      0       0       0      0      0       0       0      0      0 
    ram1       0      0       0       0      0      0       0       0      0      0 
    ram2       0      0       0       0      0      0       0       0      0      0 
    ram3       0      0       0       0      0      0       0       0      0      0 
    ram4       0      0       0       0      0      0       0       0      0      0 
    ram5       0      0       0       0      0      0       0       0      0      0 
    ram6       0      0       0       0      0      0       0       0      0      0 
    ram7       0      0       0       0      0      0       0       0      0      0 
    ram8       0      0       0       0      0      0       0       0      0      0 
    ram9       0      0       0       0      0      0       0       0      0      0 
    ram10      0      0       0       0      0      0       0       0      0      0 
    ram11      0      0       0       0      0      0       0       0      0      0 
    ram12      0      0       0       0      0      0       0       0      0      0 
    ram13      0      0       0       0      0      0       0       0      0      0 
    ram14      0      0       0       0      0      0       0       0      0      0 
    ram15      0      0       0       0      0      0       0       0      0      0 
    loop0      0      0       0       0      0      0       0       0      0      0 
    loop1      0      0       0       0      0      0       0       0      0      0 
    loop2      0      0       0       0      0      0       0       0      0      0 
    loop3      0      0       0       0      0      0       0       0      0      0 
    loop4      0      0       0       0      0      0       0       0      0      0 
    loop5      0      0       0       0      0      0       0       0      0      0 
    loop6      0      0       0       0      0      0       0       0      0      0 
    loop7      0      0       0       0      0      0       0       0      0      0 
    fd0        0      0       0       0      0      0       0       0      0      0 
    sda   16604050 904497 2594882190 57455732 30037054 28093770 2160032056 118189160      0  40915 
    sdb   257357577 479985 3124712204 577235320 8502519 1283237 36645890 11250948      0 182336 
    

    总结磁盘统计

    在 vmstat 后面添加 -D 会显示全局统计(包括全部的磁盘、分区、全部读、合并的读、读取的扇区、写、合并的写、写入的扇区和 IO)。

    # vmstat -D 
               27 disks 
                3 partitions 
        275754028 total reads 
          1388030 merged reads 
       5751195976 read sectors 
        638710116 milli reading 
         38795040 writes 
         29520659 merged writes 
       2209820333 written sectors 
        130210652 milli writing 
                0 inprogress IO 
           224704 milli spent IO 
    

    打印指定分区统计

    vmstat 添加 -p 参数后面跟上设备名会显示指定分区统计(包括读、读取的扇区、写以及请求的写)。

    # vmstat -p /dev/sdb1 
    sdb1          reads   read sectors  writes    requested writes 
                    3115      27890     839453  206728016 
    

    vmstat 统计信息带上时间戳

    当你想在特定时间区间内找到内存尖峰时,用 vmstat 命令添加 -t 参数,后跟延迟和计数。

    注意:此组合不适用于基于 Debian 的系统。

    # vmstat -t 1 5 
    procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ ---timestamp--- 
     r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st 
     0  0      0 6981416 181324 24588604    0    0     0     1    0    0  0  0 100  0  0    2017-01-11 15:42:15 MST 
     2  0      0 6981276 181324 24588604    0    0     0     0   91   40  0  0 100  0  0    2017-01-11 15:42:16 MST 
     0  0      0 6982016 181324 24588604    0    0     0     0   75  116  0  0 100  0  0    2017-01-11 15:42:17 MST 
     0  0      0 6982016 181324 24588604    0    0     0     0   43   39  0  0 100  0  0    2017-01-11 15:42:18 MST 
     0  0      0 6982280 181324 24588604    0    0     0     0  113  185  0  0 100  0  0    2017-01-11 15:42:19 MST 
    

    打印更多统计

    vmstat 后面跟上 -s 参数会显示不同统计的总结。

    # vmstat -s 
         32849392  total memory 
         25864128  used memory 
         16468180  active memory 
          8320888  inactive memory 
          6985264  free memory 
           181324  buffer memory 
         24588612  swap cache 
         20970492  total swap 
                0  used swap 
         20970492  free swap 
           891075 non-nice user cpu ticks 
             6532 nice user cpu ticks 
          1507099 system cpu ticks 
      18925265601 idle cpu ticks 
           113043 IO-wait cpu ticks 
              108 IRQ cpu ticks 
             4185 softirq cpu ticks 
                0 stolen cpu ticks 
          4071862 pages paged in 
        216759718 pages paged out 
                0 pages swapped in 
                0 pages swapped out 
        369611221 interrupts 
        477861261 CPU context switches 
       1478258826 boot time 
          2196121 forks 
    

    打印 slab 统计

    vmstat 后面跟上 -m 参数会显示 slab 信息。

    # vmstat -m 
    Cache                       Num  Total   Size  Pages 
    nf_conntrack_expect           0      0    240     16 
    nf_conntrack_ffffffff81b2a920     18     60    312     12 
    fib6_nodes                   24     59     64     59 
    ip6_dst_cache                16     30    384     10 
    ndisc_cache                   7     30    256     15 
    ip6_mrt_cache                 0      0    128     30 
    RAWv6                        35     35   1088      7 
    UDPLITEv6                     0      0   1024      4 
    UDPv6                         4     12   1024      4 
    tw_sock_TCPv6                 0      0    320     12 
    request_sock_TCPv6            0      0    192     20 
    TCPv6                         4      6   1920      2 
    fat_inode_cache               5      6    672      6 
    fat_cache                     0      0     32    112 
    ioat2                      4096   4140    128     30 
    ext4_inode_cache          34322  34364   1000      4 
    ext4_xattr                    0      0     88     44 
    . 
    . 
    . 
    

    阅读更多关于 vmstat

    如果你想了解关于 vmstat 的更多选项,请阅读手册。

    # vmstat --help 
    或者 
    # man vmstat 
    

    作者简介:

    Magesh Maruthamuthu,热爱玩所有的 Linux 发行版


    小编为您推荐“vmstat:一个标准的报告Linux系统虚拟内存统计工具”相关文章

    Ubuntu虚拟机与win7主机方便传文件的实现方法

    Win8判断电脑所用系统是32位还是64位的方法
    很多用户对64位系统还是欣然向往的,但他们得先明白自己当前的使用的系统是32位还是64位,不知道的朋友可以看看下面的判断教程

    无线网络链接错误怎么修复?
    刚上网几分钟突然掉线,再连接就连接不上了,出现标题栏为“连接接到宽带连接时出错”窗口。那么无线网络链接错误怎么修复?下面小编就为大家介绍一下,来看看吧

    第三周作业
    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。2、取出最后登录到当前系统的用户的相关信息。3、取出当前系统上被用户当作其默认shell的最多的那个shell。4、将/etc/passwd中的第三个字段数值最大的后10个用户

    tomcat几种连接池配置代码(包括tomcat5.0,tomc
    Tomcat6.0连接池配置 实现代码,大家可以参考下。

     
    TAGS: Linux
     
     
    猜你想看
     
    更多..
    与本文有关Linux
    • ?第五周作业
      1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行;[root@localhost ~]# grep-E ^[[:space:]]+ /boot/grub/grub.conf root (hd0,0)kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS.UTF-8 rd_NO_MD rd_LVM_L
      02-05 关键词:Linux命令SELinux
    • 如何在Linux系统上显示当前及子目录中的文件数量
      如何在Linux系统上显示当前及子目录中的文件数
      在本指南中,我们将介绍如何在 Linux 系统上显示当前工作目录或任何目录及其子目录中的文件数量。我们将使用 find 命令,它用于搜索目录层次结构中的文件,以及 wc 命令,它会打印每个文件或来自标准输入的换行符、单词和字节计数。以下是我们在 find 命令中
      02-05 关键词:Linux
    • CentOS 7.0 RPM 安装MySQL 5.7
      CentOS 7.0 RPM 安装MySQL 5.7
      首先安装好CentOS 7,这个不多说。RPM包的种种当前的GA版本是5.7.17-1,RPM包地址: https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.17-1.el7.x86_64.rpm-bundle.tar ,略大,557.1M。下载完后可以验证下MD5,#md5sum mysql-standard-5.7.18-linux
      02-05 关键词:MySQLCentos
    • Linux服务器LVM逻辑卷配置过程
      Linux服务器LVM逻辑卷配置过程通过使用Linux的逻辑卷管理器(Logical Volume Manager, LVM),用户可以在系统运行时动态调整文件系统的大小,把数据从一块硬盘重定位到另一块硬盘,也可以提高I/O操作的性能,以及提供冗余保护,它的快照功能允许用户对逻辑卷进
      02-05 关键词:Linux
    • 基于VMware的虚拟Linux集群搭建-lvs+keepalived
      基于VMware的虚拟Linux集群搭建-lvs+keepalived
      通过 keepalived 实现 lvs 服务器的的双机热备和真实服务器之间的负载均衡的blog 挺多的,在搭建的时候也参考了相关博文,不同人搭建的实验环境不一样,本文是基于 VM 搭建的虚拟集群环境,全部虚拟机网卡模式为 NAT 方式相连,处于同一网段。搭建环境: 使用
      02-05 关键词:LVSkeepalived
    • Ubuntu 下 MySQL 多实例配置
      项目需求测试MySQL的并发性能,故而需要启动多个实例,即在一台机器上启动多个MySQL服务。只是一个简单需求,也折腾了好几天,本文做一个记录,也希望能帮助更多有此需求的人,节约时间和精力。本文主要从以下几个方面展开:方法简介实验环境MySQL安装MySQL启
      02-05 关键词:MySQLUbuntu
    • 如何在Linux中让sudo密码会话的超时更长些
      如何在Linux中让sudo密码会话的超时更长些
      在最近的文章中,我们向你展示了 在 Linux 中设置 sudo 的十条 sudoers 实用配置]1以及让 sudo 在你输入错误的密码时“嘲讽”你,在本文中,我们发现了另一个 sudo 贴士,在 Ubuntu Linux 中使 sudo 密码会话(超时)更长或更短。在 Ubuntu 及其衍生版如 Linux
      02-05 关键词:Linux命令
    • Linux中更改转移mysql数据库目录的步骤
      前几天发现由于MySQL的数据库太大,默认安装的/var盘已经再也无法容纳新增加的数据,只能想办法转移数据的目录。网上有很多相关的文章写到转移数据库目录的文章,但转载的过程中还会有一些错误,因为大部分人根本就没测试过,这篇文章是本文测试过整理好后分
      02-05 关键词:MySQLLinux
    • Linux查找find命令详解
      Linux查找–find命令首先,大家如果看到有什么不懂的地方,欢迎吐槽!!!find命令的格式findpathname-options[ -print -exec -ok ...]pathname #是find命令所查找的目录路径,例如.表示当前目录,/表示根目录-print #表示find命令将匹配的文件输出到标准输出
      02-05 关键词:Linux命令
    • N26 第五周作业
      1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行;[root@localhost ~]# cat /boot/grub/grub.conf | grep ^[[:space:]]2、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行;[root@localhost ~]# c
      02-05 关键词:Linux命令
     
    相关评论
     
    猜你喜欢
     
    网站首页 | 关于我们 | 联系方式 | 使用协议 | 版权隐私 | 网站地图 | 网站留言