Linux vmstat 命令及实际示例

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在本实验中,你将学习 Linux 的 vmstat 命令,这是一个用于监控系统性能的强大工具。vmstat 命令提供了各种系统资源的详细概览,包括 CPU、内存和磁盘 I/O。你将了解 vmstat 输出的不同列,以及如何使用该命令来分析系统性能。此外,你还将探索如何使用不同的选项和时间间隔运行 vmstat,以全面了解系统的行为。

Linux 命令速查表


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux/SystemInformationandMonitoringGroup -.-> linux/ps("Process Displaying") linux/SystemInformationandMonitoringGroup -.-> linux/free("Memory Reporting") subgraph Lab Skills linux/ps -.-> lab-422998{{"Linux vmstat 命令及实际示例"}} linux/free -.-> lab-422998{{"Linux vmstat 命令及实际示例"}} end

理解 vmstat 命令

在这一步中,你将学习 Linux 中的 vmstat 命令,这是一个用于监控系统性能的强大工具。vmstat 命令提供了各种系统资源的详细概览,包括 CPU、内存和磁盘 I/O。

首先,让我们从运行不带任何参数的 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
 1  0      0 1877028  16308 1359812    0    0     0     0    0    0  0  0 100  0  0

vmstat 命令的输出分为多个列,每列提供有关特定系统资源的信息:

  • procs:显示处于不同状态(运行中、阻塞等)的进程数量
  • memory:提供内存使用情况的信息,包括空闲、已用和缓存内存
  • swap:显示交换空间使用情况的信息
  • io:显示磁盘 I/O 统计信息,包括读取和写入的块数
  • system:显示系统级统计信息,例如中断和上下文切换
  • cpu:提供 CPU 使用率统计信息,包括用户、系统、空闲和等待时间

为了更详细地理解 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 st
 1  0      0 1877028 1294456  65356    0    0     0     0    0    0  0  0 100  0  0

在此输出中,你可以看到 inact(非活动)和 active(活动)内存列,这些列提供了更多关于内存使用情况的见解。

vmstat 命令还支持各种时间间隔和迭代次数。例如,要每 2 秒显示一次系统统计信息,共显示 5 次,可以使用以下命令:

$ vmstat 2 5
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 1877028  16308 1359812    0    0     0     0    0    0  0  0 100  0  0
 0  0      0 1877028  16308 1359812    0    0     0     0  367  688  0  0 100  0  0
 0  0      0 1877028  16308 1359812    0    0     0     0  369  682  0  0 100  0  0
 0  0      0 1877028  16308 1359812    0    0     0     0  373  696  0  0 100  0  0
 0  0      0 1877028  16308 1359812    0    0     0     0  367  688  0  0 100  0  0

此输出将每 2 秒显示一次系统统计信息,总共显示 5 次。

vmstat 命令提供了大量关于系统性能的信息,理解如何解释其输出对于有效的系统监控和故障排除至关重要。

使用 vmstat 监控系统性能

在这一步中,你将学习如何使用 vmstat 命令来监控系统性能的各个方面,包括 CPU、内存和磁盘 I/O。

让我们从监控系统的 CPU 使用率开始。vmstat 命令提供了关于 CPU 使用情况的详细信息,包括在用户模式、系统模式、空闲状态和等待状态中花费的时间百分比。

要监控 CPU 使用率,请运行以下命令:

$ vmstat 2 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 1877028  16308 1359812    0    0     0     0  367  688  0  0 100  0  0
 0  0      0 1877028  16308 1359812    0    0     0     0  369  682  0  0 100  0  0
 0  0      0 1877028  16308 1359812    0    0     0     0  373  696  0  0 100  0  0
 0  0      0 1877028  16308 1359812    0    0     0     0  367  688  0  0 100  0  0
 0  0      0 1877028  16308 1359812    0    0     0     0  367  688  0  0 100  0  0

在输出中,"cpu" 部分显示了 CPU 在用户模式 (us)、系统模式 (sy)、空闲状态 (id) 和等待 I/O (wa) 中花费的时间百分比。在此示例中,CPU 大部分时间处于空闲状态(100%)。

接下来,让我们监控内存使用情况。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
 1  0      0 1877028  16308 1359812    0    0     0     0    0    0  0  0 100  0  0

在输出中,"memory" 部分显示了空闲内存 (free)、已用内存 (used) 和缓存内存 (cache) 的数量。"swap" 部分显示了已用和空闲交换空间 (swpdfree) 的数量。

最后,让我们监控磁盘 I/O。vmstat 命令提供了有关从磁盘读取和写入磁盘的块数的信息。

要监控磁盘 I/O,请运行以下命令:

$ vmstat
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 1877028  16308 1359812    0    0     0     0    0    0  0  0 100  0  0

在输出中,"io" 部分显示了从磁盘读取的块数 (bi) 和写入磁盘的块数 (bo)。

通过使用 vmstat 命令,你可以有效地监控系统性能的各个方面,并识别潜在的瓶颈或问题。

使用 vmstat 分析 CPU、内存和磁盘 I/O

在这一步中,你将学习如何分析 vmstat 命令提供的 CPU、内存和磁盘 I/O 指标,以识别系统中潜在的性能问题。

让我们从分析 CPU 使用率开始:

$ vmstat 2 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 1877028  16308 1359812    0    0     0     0  367  688  0  0 100  0  0
 0  0      0 1877028  16308 1359812    0    0     0     0  369  682  0  0 100  0  0
 0  0      0 1877028  16308 1359812    0    0     0     0  373  696  0  0 100  0  0
 0  0      0 1877028  16308 1359812    0    0     0     0  367  688  0  0 100  0  0
 0  0      0 1877028  16308 1359812    0    0     0     0  367  688  0  0 100  0  0

在 "cpu" 部分中,你可以看到 CPU 大部分时间处于空闲状态(100%),这表明系统没有处于高负载状态。

接下来,让我们分析内存使用情况:

$ vmstat
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 1877028  16308 1359812    0    0     0     0    0    0  0  0 100  0  0

"memory" 部分显示系统有大量空闲内存(1,877,028 kB)和大量缓存内存(1,359,812 kB)。这表明系统有足够的内存资源可用,并且没有遇到任何与内存相关的性能问题。

最后,让我们分析磁盘 I/O:

$ vmstat
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 1877028  16308 1359812    0    0     0     0    0    0  0  0 100  0  0

"io" 部分显示没有从磁盘读取或写入磁盘的块数(bibo 均为 0)。这表明系统没有经历任何显著的磁盘 I/O 活动。

通过分析 vmstat 命令提供的 CPU、内存和磁盘 I/O 指标,你可以识别系统中潜在的性能瓶颈,并采取适当的措施来优化其性能。

总结

在本实验中,你学习了 Linux 中的 vmstat 命令,这是一个用于监控系统性能的强大工具。你首先了解了 vmstat 命令的基本用法及其提供的各种信息列,包括 CPU、内存和磁盘 I/O 统计信息。接着,你探索了如何使用 -a 选项显示额外的内存相关信息,以及如何设置时间间隔和迭代次数以监控系统统计信息随时间的变化。本实验涵盖的关键学习点包括理解 vmstat 命令、使用 vmstat 监控系统性能,以及使用 vmstat 工具分析 CPU、内存和磁盘 I/O。

Linux 命令速查表