Linux系统虚拟内存统计信息命令vmstat详解(系统监控和故障排除的好工具)

本文详细介绍了Linux系统中的vmstat命令,包括其基本用法、常用选项、输出字段及其含义,展示了如何通过实例分析虚拟内存、CPU使用和磁盘I/O情况,是系统监控和故障排除的必备工具。
摘要由CSDN通过智能技术生成

目录

一、vmstat简介

二、基本用法

(一)基本语法

(二)常用选项

三、典型实例

四、输出字段

(一)输出的主要字段介绍

(二)实例介绍

1、输出实例

2、字段的详细解释

(1) `procs`: 进程相关的信息

(2)`memory`: 内存使用情况

(3)`swap`: 交换空间使用情况

(4) `io`: 磁盘I/O信息

(5)`system`: 系统调用和中断信息

(6) `cpu`: CPU的使用情况

3、输出数据的详细解释

(1). 第一行(采样1)

(2). 第二行(采样2)

(3). 第三行(采样3)

五、其他


一、vmstat简介

        vmstat  是 Linux 系统中一个非常有用的命令,它用于报告虚拟内存统计信息。这个命令提供了关于内核进程、进程、中断、系统调用等的详细信息,是系统监控和故障排除的重要工具之一。

二、基本用法

(一)基本语法

        vmstat  的语法如下:

        vmstat [options] [interval [count]]

        - `options` 可以选择的参数,影响命令的输出和行为。

        - `interval` 指定两次数据收集之间的时间间隔,单位是秒。

        - `count` 指定数据收集的次数。

(二)常用选项

        vmstat命令的常用选项如下;

 `-f` 输出1秒内的平均值。

 `-s` 输出汇总信息。

 `-d` 输出磁盘IO统计信息。

 `-p` 输出每个进程的虚拟内存统计信息。

 `-n` 指定列出的字段数。

 `-t` 在输出中包含时间戳。

 `-T` 以毫秒为单位显示时间戳。

三、典型实例

1. 报告虚拟内存统计信息,每秒一次,共收集5次:

      vmstat 1 5

        实际操作效果如下:  

[root@ecs-52a1 home]#
[root@ecs-52a1 home]# vmstat 1 5
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      0 127416 161968 1874232    0    0    10    42    0    1  2  5 92  0  0
 0  0      0 128392 161956 1874036    0    0     0    32 14067 28036  0  2 98  0  0
 1  0      0 126148 161972 1874792    0    0     0   356 19122 33387  5 12 82  0  0
 0  0      0 126288 161992 1874776    0    0     0   200 14097 28234  1  2 97  0  0
 0  0      0 125892 162008 1874800    0    0     0   104 18141 32499  5  9 86  0  0
[root@ecs-52a1 home]#
[root@ecs-52a1 home]#

2. 报告虚拟内存统计信息,并且以逗号分隔的格式输出,适合于管道传输到其他命令:

      vmstat -s

          实际操作效果如下:

[root@ecs-52a1 home]#
[root@ecs-52a1 home]#    vmstat -s
      7953708 K total memory
      5791288 K used memory
      6126176 K active memory
      1408068 K inactive memory
       123964 K free memory
       162136 K buffer memory
      1876320 K swap cache
            0 K total swap
            0 K used swap
            0 K free swap
     82127230 non-nice user cpu ticks
        14846 nice user cpu ticks
    148396664 system cpu ticks
   3081549786 idle cpu ticks
      2238361 IO-wait cpu ticks
     25732380 IRQ cpu ticks
      5095330 softirq cpu ticks
            0 stolen cpu ticks
    326150807 pages paged in
   1410461793 pages paged out
            0 pages swapped in
            0 pages swapped out
   1341362713 interrupts
   2662073347 CPU context switches
   1705987596 boot time
   2496892639 forks
[root@ecs-52a1 home]#

3. 实时监控虚拟内存统计信息,直到用户按下任意键:  

   vmstat -s infinite

 注意:这个命令主要用在unix系统,其他系统不一定支持。

四、输出字段

(一)输出的主要字段介绍

        vmstat  的输出包括多个字段,这些字段提供了关于系统虚拟内存使用情况的详细信息。主要的字段包括:

 `procs` 进程相关的信息,包括正在运行、睡眠和僵尸进程的数量。

 `memory` 内存使用情况,包括活跃和空闲内存的数量。

 `swap` 交换空间的使用情况。

 `io` 磁盘IO信息,包括读写请求的数量和延迟。

 `system` 系统调用和中断的信息。

 `cpu` CPU的使用情况,包括用户时间、系统时间和等待时间。

(二)实例介绍

1、输出实例

        要求:每20秒收集一次系统虚拟内存统计信息,共收集3次。

        可以在linux命令行输入如下命令:

                vmstat 20  3

        输出结果如下所示:

2、字段的详细解释

(1) `procs`: 进程相关的信息

          - `r`: 正在运行或等待CPU的进程数。

          - `b`: 处于阻塞状态等待资源的进程数。

(2)`memory`: 内存使用情况

          - `swpd`: 使用的虚拟内存大小(KB)。

          - `free`: 空闲的物理内存大小(KB)。

          - `buff`: 作为缓冲区使用的内存大小(KB)。

          - `cache`: 作为缓存使用的内存大小(KB)。

(3)`swap`: 交换空间使用情况

          - 本例中没有使用交换空间,所以都是0。

(4) `io`: 磁盘I/O信息

          - `si`: 向磁盘写入的数据量(KB/秒)。

          - `so`: 从磁盘读取的数据量(KB/秒)。

          - `bi`: 磁盘写入请求次数。

          - `bo`: 磁盘读取请求次数。

(5)`system`: 系统调用和中断信息

          - `in`: 每秒产生的中断次数。

          - `cs`: 每秒处理的系统调用次数。

(6) `cpu`: CPU的使用情况

          - `us`: CPU处于用户模式的时间百分比。

          - `sy`: CPU处于系统模式的时间百分比。

          - `id`: CPU空闲时间百分比。

          - `wa`: CPU在等待I/O完成的时间百分比。

          - `st`: CPU在 stolen 模式(被其他操作系统偷取的时间)百分比。

3、输出数据的详细解释

        每一行代表一个时间点的统计信息。现在来分析每一行的具体数据:

(1). 第一行(采样1)

           - 没有进程正在运行或等待CPU(`r=0`,`b=0`)。

           - 使用的虚拟内存为0(`swpd=0`),空闲内存为121,720KB(`free=121720`),缓冲区和缓存大小分别为16,5108KB(`buff=165108`)和190,4304KB(`cache=1904304`)。

           - 没有磁盘I/O活动(`si=0`,`so=0`),但有一次写入请求(`bi=10`)和42次读取请求(`bo=42`)。

           - 系统中断和系统调用次数都很低。

           - CPU使用情况:2%用户模式,5%系统模式,92%空闲,0%等待I/O,0%被偷取。

(2). 第二行(采样2)

           - 进程状态与第一行相同。

           - 虚拟内存使用量略有增加,达到134,168KB(`swpd=0`),空闲内存减少到134,168KB(`free=134168`),缓冲区和缓存大小不变。

           - 有轻微的磁盘读取活动,读取请求为352次(`bi=4`),写入请求为0次(`bo=0`)。

           - CPU使用情况:3%用户模式,6%系统模式,91%空闲,0%等待I/O,0%被偷取。

(3). 第三行(采样3)

           - 进程状态与前两行相同。

           - 虚拟内存使用量继续减少到126,536KB(`swpd=0`),空闲内存进一步减少到126,536KB(`free=126536`),缓冲区和缓存大小不变。

          - 磁盘I/O活动有所增加,读取请求为132次(`bi=0`),写入请求为0次(`bo=0`)。

          - CPU使用情况:11%用户模式,6%系统模式,82%空闲,0%等待I/O0%被偷取。

        从这些数据中,我们可以看出系统的虚拟内存使用情况在采样期间有所波动,但总体上变化不大。磁盘I/O活动在前两次采样中很少,但在第三次采样中有所增加。CPU的使用率很低,大部分时间都处于空闲状态。这可能意味着系统在采样期间没有进行太多的计算任务,或者系统负载较轻。

        需要注意的是,vmstat 命令的输出可以根据系统的不同而有所变化,而且应该结合系统的实际运行情况来解读这些统计数据。在某些情况下,虚拟内存的使用情况和CPU的使用情况可能需要特别关注,因为它们直接影响到系统的性能。

五、其他

        vmstat  是一个在系统监控和性能分析中非常实用的工具,通过它可以获得系统运行的许多关键指标。在分析 vmstat  的输出时,应该关注内存和交换空间的使用情况,以及CPU的使用情况,这些信息可以帮助诊断系统性能问题。

        vmstat  不会对磁盘IO活动产生任何影响,因为它只是报告现有的统计信息。

        vmstat  提供的信息非常丰富,对于系统管理员来说,解读这些信息可能需要一定的系统知识。能够帮助管理员保持系统的良好运行状态。

    


文章正下方可以看到我的联系方式:鼠标“点击” 下面的 “威迪斯特-就是video system 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。


  • 31
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值