站长视角
用户至上

linux监控工具之vmstat详解

vmstat 是 Virtual Meomory Statistics(虚拟内存统计)的缩写,可实时动态监视操作系统的虚拟内存、进程、CPU活动。vmstat 可以指定采样间隔,以允许近实时地观察系统活动。vmstat 工具可在大多数 Unix 和类 Unix 操作系统上使用,例如 FreeBSD,Linux 或 Solaris。

什么是 vmstat

vmstat 是一个内置的 Linux 系统监控工具,它的主要工作是测量系统对虚拟内存的使用。Linux 服务器都有有限数量的随机存取存储器(RAM,也就是内存)。Linux 系统可能出于多种原因耗尽内存,例如对操作系统及其运行的应用程序的需求。发生这种情况时,Linux 内核会将程序交换或分页到计算机的存储设备,称为交换空间(SWAP)。通常,这是硬盘驱动器或固态驱动器存储的保留区域。当 RAM 不可避免时,它被用作虚拟内存。随着 RAM 被释放,换出的数据或代码被交换回基于 RAM 的主存储器。

使用虚拟内存时系统性能急剧下降,这是因为即使硬件(例如快速 SSD)用于虚拟内存,服务器的交换 I/O 速度也比 RAM 慢得多。此外,当 Linux 使用虚拟内存时,它会花费更多的 CPU 周期来管理虚拟内存交换。

这意味着 Linux 系统管理员必须关注服务器的内存使用情况。没有人希望系统变慢。当它发生并且管理员需要进行故障排除时,虚拟内存可能是罪魁祸首。由于虚拟内存对系统性能有很大影响,因此 vmstat 对其进行监控必不可少。除了监控虚拟内存分页,vmstat 还测量进程、I/O、CPU 和磁盘调度。

怎样使用 vmstat 进行监控

我们既可以将 vmstat 作为交互式程序运行,也可以在 shell 程序中运行。当不带任何参数运行 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 st
 0  0      0 1171312  69752 2231152    0    0     0    13   10   23  0  0 100  0  0

请注意 vmstat 如何返回有关系统进程、内存、交换、输入和输出、系统中断和上下文切换以及 CPU 的信息。要了解有关每个列和值的更多信息,可以使用 man vmstat 命令来查看 vmstat 的手册页。

vmstat 命令行选项提供有关系统的更多信息。vmstat 语法如下:

vmstat [-V] [-n] [delay [count]]

字段说明:

  • -V 表示打印出版本信息;
  • -n 表示在周期性循环输出时,输出的头部信息仅显示一次;
  • delay 是两次输出之间的延迟时间;
  • count 是指按照这个时间间隔统计的次数。

例如,可以使用以下命令,在空闲系统上每 5 秒运行 5 次 vmstat

vmstat 5 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 1166396  70768 2233228    0    0     0    13   10   24  0  0 100  0  0
 0  0      0 1165568  70776 2233352    0    0     0     8  121  224  0  0 99  0  0
 0  0      0 1166608  70784 2233352    0    0     0    53  108  209  0  0 100  0  0
 0  0      0 1166608  70784 2233352    0    0     0     0   75  176  0  0 100  0  0
 0  0      0 1166576  70788 2233352    0    0     0     4   76  177  0  0 100  0  0

更多 vmstat 使用方法

vmstat 通常以 1 秒的间隔运行一小段时间,具体取决于管理员尝试诊断的问题类型。以下示例说明 1 秒 20 次的间隔:

vmstat 1 20

类似输出:

procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
0  0   3996 168488  57100 1368636    0    0     1     2    0    0  3  1 97  0
0  0   3996 168604  57100 1368728    0    0     0     0  144  303  1  0 100  0
0  0   3996 168604  57100 1368984    0    0   256     0  162  464  1  0 99  0
0  0   3996 168604  57100 1368972    0    0     0     0  239  638  3  0 97  0
0  0   3996 168604  57100 1368952    0    0     0     0  242  529  1  1 99  0
0  0   3996 168604  57100 1368952    0    0     0     0  148  430  1  0 99  0
1  0   3996 168604  57100 1368952    0    0     0     0  222  451  6  0 94  0
0  0   3996 168604  57100 1368952    0    0     0     0  141  270  2  0 98  0
0  0   3996 168604  57100 1368952    0    0     0     0  166  450  1  0 99  0
0  0   3996 168604  57100 1368952    0    0     0     0  133  410  0  0 99  0
0  0   3996 168604  57100 1368952    0    0     0     0  196  398  0  0 99  0
0  0   3996 168604  57100 1368952    0    0     0     0  187  510  1  0 100  0
0  0   3996 168604  57108 1368952    0    0     0    16  263  677  2  0 97  1
0  0   3996 168604  57108 1368952    0    0     0     0  205  431  1  0 98  0
0  0   3996 168604  57108 1368964    0    0     0     0  179  467  1  0 98  0
0  0   3996 168604  57108 1368964    0    0     0     0  169  446  2  0 98  0
0  0   3996 168604  57108 1368964    0    0     0     0  202  365  2  0 98  0
0  0   3996 168604  57108 1369208    0    0   256     0  226  458  2  1 96  0
0  0   3996 168604  57108 1369208    0    0     0    40  202  501  2  0 98  0
0  0   3996 168604  57108 1369220    0    0     0     0  154  295  2  0 98  0

如果想要实时报告系统状态,可以不带 [count] 参数运行 vmstat。在这些情况下,可能需要 30 秒或更长时间的间隔。

vmstat 30

输出结果:

procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
0  0   3996 167868  57108 1369788    0    0     1     2    0    0  3  1 97  0
0  0   3996 167860  57108 1369920    0    0     0     0  274  604  2  0 98  0
0  0   3996 167860  57108 1369928    0    0     0     0  196  481  1  0 98  0
0  0   3996 167860  57116 1369908    0    0     0    12  164  414  1  1 97  1
0  0   3996 167860  57116 1369892    0    0     0     0  168  320  0  0 100  0
0  0   3996 167860  57116 1369884    0    0     0     0  142  398  1  0 99  0
0  0   3996 167860  57116 1369880    0    0     0     0  175  450  1  1 98  0

可以选择将此输出定向到用于记录的文件,而不是让它在后台终端会话中无休止地运行。要停止 vmstat 进程,可以使用中断字符(^C 或 Control+C)。

在默认操作中,vmstat 以千字节为单位显示内存统计信息。vmstat 认为一个千字节等于 1024 字节。 要生成 1 KB 等于 1000 字节的 vmstat 报告,请使用以下格式:

vmstat -S k 1 10

类似输出如下:

procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
0  0   4091 150192  58982 1422041    0    0     1     2    0    0  3  1 97  0
0  0   4091 150183  58982 1422381    0    0   256     0  201  518  1  0 99  0
2  0   4091 150183  58982 1422356    0    0     0     0  638 1356  7  1 92  0
0  0   4091 150183  58982 1422360    0    0     0     0  859 1087  5  2 93  0
0  0   4091 150183  58982 1422331    0    0     0     0  404 1100  2  0 97  0
0  0   4091 150183  58982 1422331    0    0     0     0  281  601  2  0 97  0
0  0   4091 150183  58982 1422327    0    0     0     0  279  468  3  0 97  0
0  0   4091 150183  58982 1422331    0    0     0     0  250  572  3  0 97  0
0  0   4091 150183  58990 1422323    0    0     0    16  280  598  4  0 95  1
0  0   4091 150183  58998 1422319    0    0     0    52  270  451  3  0 96  1

vmstat 还可以显示以兆字节为单位报告的内存大小的报告。带有参数 -S mvmstat 报告将考虑等于 1000 KB 的单个兆字节,如下所示:

vmstat -S m 1 10

类似输出:

procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
0  0      4    169 58   1404    0    0 1     2    0    0  3  1 97  0
0  0      4    169 58   1405    0    0 0     0  194  508  1  0 98  0
0  0      4    169 58   1405    0    0 0     0  154  443  0  0 99  0
0  0      4    169 58   1405    0    0 0     0  192  380  0  0 100  0
0  0      4    169 58   1405    0    0 0     0  287  766  3  0 97  0
1  0      4    169 58   1405    0    0 0     0  222  583  1  1 99  0
0  0      4    169 58   1405    0    0 0    36  166  304  1  0 99  0
0  0      4    169 58   1405    0    0 0     0  189  473  1  0 99  0
0  0      4    169 58   1405    0    0 0     0  164  430  1  0 99  0
0  0      4    169 58   1405    0    0 0     0  186  343  0  0 100  0

vmstat 还能够显示兆字节,使用参数 -S M 即可,单个兆字节等于 1024 千字节。请考虑以下示例:

vmstat -S M 1 10

如何分析 vmstat 输出结果

最后介绍一下如何查看分析 vmstat 的输出结果。

vmstat 报告描述了 Linux 系统的当前状态,vmstat 的输出显示在多个列中,以下部分简要概述了每列中报告的数据。

Procs(进程)

  • r: 运行队列中进程数量
  • b: 等待IO的进程数量

Memory(内存)

  • swpd: 使用虚拟内存大小
  • free: 可用内存大小
  • buff: 用作缓冲的内存大小
  • cache: 用作缓存的内存大小

Swap

  • si: 每秒从交换区写到内存的大小
  • so: 每秒写入交换区的内存大小

IO(现在的Linux版本块的大小为1024bytes)

  • bi: 每秒读取的块数
  • bo: 每秒写入的块数

system

  • in: 每秒中断数,包括时钟中断
  • cs: 每秒上下文切换数

CPU(以百分比表示)

  • us: 用户进程执行时间(user time)
  • sy: 系统进程执行时间(system time)
  • id: 空闲时间(包括IO等待时间)
  • wa: 等待IO时间

搬瓦工优惠/性价比套餐推荐

温馨提醒 如果您有选择困难症,直接选中间的 CN2 GIA-E方案,季付 $49.99,多达 12 个机房任意切换

搬瓦工优惠码:BWH3HYATVBJW,优惠6.58%,全场可用。下面表格整理了更多的搬瓦工优惠套餐。

方案 内存 CPU 硬盘 流量/月 带宽 机房 价格 购买
CN2
(最便宜)
1GB 1核 20GB 1TB 1Gbps DC3 CN2
DC8 ZNET
$49.99/年 购买
CN2 2GB 1核 40GB 2TB 1Gbps $52.99/半年
$99.99/年
购买
CN2 GIA-E
(最推荐)
1GB 2核 20GB 1TB 2.5Gbps DC6 CN2 GIA-E
DC9 CN2 GIA
日本软银 JPOS_1
联通荷兰 EUNL_9
$49.99/季度
$169.99/年
购买
CN2 GIA-E 2GB 3核 40GB 2TB 2.5Gbps $89.99/季度
$299.99/年
购买
HK 2GB 2核 40GB 0.5TB 1Gbps 香港 CN2 GIA $89.99/月
$899.99/年
购买
HK 4GB 4核 80GB 1TB 1Gbps $155.99/月
$1559.99/年
购买

选择建议:

  • 入门:洛杉矶 CN2 套餐,目前最便宜,可选 CN2 GT 机房,入门之选。
  • 推荐:洛杉矶 CN2 GIA-E 套餐,价格适中,速度超快,可选机房多,性价比最高。
  • 高端:香港 CN2 GIA 套餐,价格较高,但是无可挑剔。
赞(0)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权, 转载请注明出处。
文章名称:《linux监控工具之vmstat详解》
文章链接:https://cnidc.co/21782.html
【声明】:国外主机测评仅分享信息,不参与任何交易,也非中介,所有内容仅代表个人观点,均不作直接、间接、法定、约定的保证,读者购买风险自担。一旦您访问国外主机测评,即表示您已经知晓并接受了此声明通告。
【关于安全】:任何 IDC商家都有倒闭和跑路的可能,备份永远是最佳选择,服务器也是机器,不勤备份是对自己极不负责的表现,请保持良好的备份习惯。

登录

找回密码

注册