vmstat:虚拟内存统计

vmstat 是解决内存相关性能问题时最有用的工具之一。
vmstat 命令是 procps-ng 软件包的一部分,其中包括其他有用的性能分析命令,例如 free 和 top。

vmstat 命令,如果没有给定参数,将打印自启动以来各种系统统计数据的平均值。
vmstat 命令接受两个参数。
第一个是延迟,第二个是计数。
延迟是输出之间以秒为单位的值。
计数是要报告的统计信息的迭代次数。
如果没有给出计数,vmstat 将不断报告统计信息。

默认情况下,内存统计信息以 KiB 为单位报告。
-S 选项允许将其更改为分别使用 -S k 、 -S m 和 -S M 以 KB、MB 或者 MiB 报告。

vmstat 输出的第一行自启动以来始终是平均值,因此在收集指标时,请删除第一行并使用后续行。
输出的前两行是标题信息,第三行是正常运行时间平均值。
以下示例显示了从输出的第四行开始的 vmstat 输出:

# vmstat 10 | tail -n +4
 1  0      0 479748   1044 570784    0    0     0     5   90  132  0  0 100  0  0
 0  0      0 475952   1044 570912    0    0     0     0   81  130  0  0 100  0  0
 0  0      0 479456   1044 570856    0    0     0    52   87  137  0  0 100  0  0
...

vmstat 列概述

iostat 和 mpstat 示例

  1. 显示 /dev/sda 的扩展输出。
# iostat -x sda
Linux 5.4.10-x86_64-linode132 (mylabserver.com) 	02/09/2021 	_x86_64_	(1 CPU)
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           8.12    0.08    2.85    0.09    0.24   88.63
Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               1.76     7.13    3.55    4.17   122.57    93.88    56.07     0.00    0.83    0.71    0.93   0.88   0.68
  1. 显示 CPU0 的 CPU 统计信息:
# LANG=C mpstat -P 0
Linux 5.4.10-x86_64-linode132 (mywebserver.com) 	02/09/21 	_x86_64_	(1 CPU)
06:32:13     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
06:32:13       0    8.12    0.08    2.37    0.09    0.22    0.25    0.24    0.00    0.00   88.63
之路教程 https://onitr oad .com

sar 例子

  1. 为 sar 创建一个系统范围的别名,强制 sar 使用 24 小时制报告。
    将其输入到当前 shell 中。
# echo "alias sar='LANG=c sar'" >> /etc/bashrc
# source /etc/bashrc
  1. 保留 60 天的存档而不是 28 天。
    更改 /etc/sysconfig/sysstat 中的 HISTORY 变量。
# vim /etc/sysconfig/sysstat
HISTORY=60
  1. 报告 I/O 和传输速率统计信息:
# sar -b
Linux 5.4.10-x86_64-linode132 (mylabserver.com) 	02/09/2021 	_x86_64_	(1 CPU)
12:00:02 AM       tps      rtps      wtps   bread/s   bwrtn/s
12:10:01 AM     38.16     31.03      7.14   1655.33    390.20
12:20:01 AM     12.11      5.81      6.30    280.99    239.08
12:30:01 AM      8.40      2.34      6.06    105.99    229.95
12:40:01 AM      7.38      1.62      5.76     23.48    211.41
12:50:01 AM      8.69      2.64      6.04    125.33    230.58
01:00:01 AM      8.09      2.26      5.83     77.72    227.70
01:10:02 AM     12.25      6.10      6.15    215.14    235.73
...
Average:        12.81      6.41      6.40    343.31    255.49
  1. 报告CPU0的利用率:
# sar -P 0
Linux 5.4.10-x86_64-linode132 (web.onitroad.com) 	02/09/2021 	_x86_64_	(1 CPU)
12:00:02 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
12:10:01 AM       0     11.69      0.00      2.96      0.28      0.06     85.01
12:20:01 AM       0      9.87      0.00      2.53      0.12      0.04     87.44
12:30:01 AM       0      9.96      0.00      2.48      0.09      0.04     87.43
12:40:01 AM       0      9.59      0.00      2.43      0.06      0.04     87.88
12:50:01 AM       0      9.80      0.00      2.46      0.09      0.05     87.59
...
Average:          0     10.00      0.02      2.60      0.14      0.15     87.08
  1. 从当前日志文件报告网络设备统计信息。
# sar -n DEV
Linux 5.4.10-x86_64-linode132 (mylabserver.com) 	02/09/2021 	_x86_64_	(1 CPU)
12:00:02 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
12:10:01 AM    dummy0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12:10:01 AM     tunl0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12:10:01 AM   ip_vti0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12:10:01 AM   ip6gre0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12:10:01 AM     teql0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12:10:01 AM      sit0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
...
Average:       dummy0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:        tunl0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:      ip_vti0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:      ip6gre0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:        teql0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:         sit0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
...
  1. 配置另外的 cron 作业以收集除磁盘数据之外的电源使用数据。
    在 /etc/sysconfig/sysstat 文件中修改以下内容:
SADC_OPTIONS="-S POWER"
如何使用 vmstat、sar、iostat 和 mpstat 分析基本系统性能

在这篇文章中,将讨论大多数 Linux 系统默认包含的一些基本分析工具。
本文中介绍的工具 vmstat、sar、iostat 和 mpstat 相对简单,但提供的基本数据在分析系统性能时非常有用。
对于大多数示例,我们将使用 CentOS 8 机器。

sar:系统活动报告器

sar 命令是一个多用途的分析工具,它是 sysstat 包的一部分。
它以两种模式工作。
它可以每 10 分钟读取一次 cron 作业收集的数据,也可以用于收集有关系统状态的瞬时数据。

注意:cron 作业安装为 /etc/cron.d/sysstat ,它运行 /usr/lib64/sa/sa1 和 /usr/lib64/sa/sa2 命令,使用 /usr/lib64/sa/sadc 收集数据和萨尔。
此数据存储在 /var/log/sa/sadd 中,其中 dd 是该月的两位数日期。

注意:与 vmstat 命令一样,sar 可以使用 delay 和 count 参数来执行,以报告特定迭代次数的统计信息以及每次迭代之间的指定延迟量。

在开始之前确保已安装 sar。
如果未安装,请使用 yum 安装:

# yum install sysstat

安装后,配置 sar 以 5 分钟间隔收集数据:

# vim /etc/cron.d/sysstat
# Run system activity accounting tool every 10 minutes
*/5 * * * * root /usr/lib64/sa/sa1 1 1

为了在使用 sar 时获得最佳结果,请确保使用 LANG 环境变量设置区域设置,以提供 24 小时时间支持。
例如,如果按第一列(时间列)对 sar 数据进行排序,则 en_US.UTF-8 语言环境会将 01:00:00 PM 置于 02:00:00 AM 之前。
这可能会扭曲数据点并使图表毫无价值。
c 语言环境是满足这种排序要求的语言环境。
在处理 sar 数据时,像这样覆盖语言环境:

# LANG=C sar -q
Linux 4.18.0-193.28.1.el8_2.x86_64 (2713138b141c.mylabserver.com) 	02/09/21 	_x86_64_	(2 CPU)
00:00:01       runq-sz   plist-sz    ldavg-l    ldavg-S    1davg-15     blocked
00:10:01             0        317       0.20       0.17        0.18           0
00:20:01             0        317       0.00       0.07        0.13           0
... Output Truncated ...

事实上,可以简单地为 sar 创建一个别名。
将以下行添加到 /etc/bashrc 或者 ~/.bashrc :

alias sar='LANG=C sar'

通过使用 -f 选项,sar 可用于读取日志文件之一(或者任何一般的 sar 数据文件)。

# sar -q -f /var/log/sa/sa09
Linux 4.18.0-193.28.1.el8_2.x86_64 (2713138b141c.mylabserver.com) 	02/09/2021 	_x86_64_	(2 CPU)
00:00:01       runq-sz   plist-sz    ldavg-l    ldavg-S    1davg-15     blocked
00:10:01             0        317       0.20       0.17        0.18           0
00:20:01             0        317       0.00       0.07        0.13           0
... Output Truncated ...

一些配置可以在 /etc/sysconfig/sysstat 文件中完成。
例如,更改 HISTORY 变量以设置为 sar 保留存档的天数。

iostat 和 mpstat

与 sar 一样,iostat 和 mpstat 也是 sysstat 包的一部分。
iostat 和 mpstat 都支持延迟和计数参数,就像 vmstat 命令一样。
iostat 报告设备的 CPU 和 I/O 统计信息。
分区和网络文件系统 (NFS)。

mpstat 命令报告与 CPU 相关的统计信息。
与 sar 一样,可能需要将 LANG 配置为 24 小时制。

vmstat 示例

  1. vmstat 命令,如果没有给定参数,将打印出自启动以来各种系统统计数据的平均值:
# 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      0 424444   1044 615940    0    0    89    14   58   78  1  0 98  1  0
  1. 下面是一个例子,其中 vmstat 将每 10 秒输出一次统计信息,直到被中断:
# vmstat 10
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 426440   1044 615872    0    0    88    14   58   78  1  0 98  1  0
 0  0      0 426072   1044 615872    0    0     0     1   92  137  0  0 100  0  0
 0  0      0 426072   1044 615872    0    0     0     5   74  116  0  0 100  0  0
 ...
  1. 如果我们希望 vmstat 在打印四个报告后退出,请添加一个计数参数:
# vmstat 10 4
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 425236   1044 616252    0    0    86    13   58   78  1  0 98  1  0
 0  0      0 424936   1044 616252    0    0     0     1   85  129  0  0 100  0  0
 0  0      0 424876   1044 616252    0    0     0    15   70  111  0  0 100  0  0
 0  0      0 423360   1044 616252    0    0     0     1   89  130  0  0 100  0  0
日期:2020-09-17 00:13:08 来源:oir作者:oir