如何在Linux上使用vmstat命令

Linux桌面上的终端提示Fatmawati Achmad Zaenuri / Shutterstock.com

您的Linux或macOS计算机正在使用虚拟内存。了解它怎样影响系统对物理内存,CPU和硬盘资源的使用。

什么是虚拟内存?

您的计算机配有一定数量的物理内存,称为随机存取内存(RAM)。这个RAM需要由内核管理,并在操作系统和正在运行的任何应用程序之间共享。如果这些组合需求要求的内存比计算机中实际安装的内存多,那么内核可以做什么?

Linux和类似Unix的操作系统(如macOS)可以使用硬盘上的空间来帮助他们管理内存需求。可以使用称为“交换空间”的硬盘空间的保留区域,就像它是RAM的扩展一样。这是虚拟内存。

Linux内核可以将内存块的内容写入交换空间,并释放该区域的RAM以供其他进程使用。可以从交换空间检索交换出的 – 也称为“分页”外部存储器,并在需要时将其恢复到RAM。

当然,分页内存的访问速度比RAM中的内存速度慢。而这不是唯一的权衡。虽然虚拟内存确实为Linux提供了管理其内存需求的方法,但使用虚拟内存会增加计算机上其他地方的负担。

您的硬盘驱动器必须执行更多的读写操作。内核 – 因此,CPU – 必须做更多的工作,因为它交换内存,交换内存,并保持所有的板旋转,以满足不同进程的内存需求。

Linux提供了一种方式来监视所有这些活动的形状 vmstat的 命令,报告虚拟内存统计信息。

vmstat命令

如果你输入 vmstat的 作为没有参数的命令,它将显示一组值。这些值是自您的计算机上次重新启动以来每个统计信息的平均值。这些数字并不是“现在”价值的快照。

vmstat的

vmstat在终端窗口中

将显示一个简短的值表。

终端窗口中的vmstat输出

有一些标题为Procs,Memory,Swap,IO,System和CPU。最后一列(最右侧列)包含与CPU相关的数据。

vmstat在终端窗口中输出右侧列

以下是每列中的数据项列表。

PROC

  • r:可运行进程的数量。这些进程已经启动并且正在运行或正在等待下一次时间切片的CPU周期。

  • b:不间断睡眠中的进程数。进程没有休眠,它正在执行阻塞系统调用,并且在完成当前操作之前不能中断。通常,该过程是等待某些资源免费的设备驱动程序。当进程恢复其常规活动时,将处理该进程的任何排队中断。

记忆

  • swpd:使用的虚拟内存量。换句话说,已经换掉了多少内存。

  • free:空闲(当前未使用)内存量。

  • buff:用作缓冲区的内存量。

  • cache:用作缓存的内存量。

交换

  • si:交换空间交换的虚拟内存量。

  • so:交换空间的虚拟内存量。

IO

  • bi:从块设备接收的块。用于将虚拟内存交换回RAM的数据块数。

  • bo:发送到块设备的块。用于将虚拟内存从RAM交换到交换空间的数据块数。

系统

  • in:每秒的中断数,包括时钟。

  • cs:每秒上下文切换次数。上下文切换是指内核从系统模式处理切换到用户模式处理。

中央处理器

这些值是总CPU时间的所有百分比。

  • 我们:运行非内核代码所花费的时间。也就是说,在用户时间处理和良好时间处理中花费了多少时间。

  • sy:运行内核代码所花费的时间。

  • id:空闲时间。

  • wa:等待输入或输出所花费的时间。

  • st:从虚拟机中窃取的时间。这是虚拟机必须等待虚拟机管理程序完成为其他虚拟机提供服务才能返回并参与此虚拟机的时间。

使用时间间隔

我们可以有 vmstat的 通过使用a来定期更新这些数字 延迟 值。该 延迟 值以秒为单位提供。要使统计信息每五秒更新一次,我们将使用以下命令:

vmstat 5

vmstat 5在终端窗口中

每五秒钟 vmstat的 将向表中添加另一行数据。您需要按Ctrl + C才能停止此操作。

在终端窗口中从vmstat 5输出

使用计数值

用得太低了 延迟 价值会给你的系统带来额外的压力。如果您需要快速更新以尝试诊断问题,建议您使用 计数 价值以及a 延迟 值。

计数 价值告诉 vmstat的 退出前要执行的更新数量,并返回命令提示符。如果你不提供 计数 值, vmstat的 将一直运行,直到它被Ctrl + C停止。

具有 vmstat的 每五秒提供一次更新 – 但仅限四次更新 – 使用以下命令:

vmstat 5 4

vmstat 5 4在终端窗口中

经过四次更新 vmstat的 停止自己。

在终端窗口中从vmstat 5 4输出

改变单位

您可以选择使用内容和交换统计信息以千字节或兆字节显示 -S (单位字符)选项。其后必须是其中之一 ķķ, 要么 中号。这些代表:

  • k:1000字节

  • K:1024字节

  • m:1000000字节

  • M:1048576字节

要使内存和交换统计信息以兆字节显示,每10秒更新一次统计信息,请使用以下命令:

vmstat 10 -S M.

vmstat 10 -S M ina终端窗口

内存和交换统计信息现在以兆字节显示。请注意 -S 选项不会影响IO块统计信息。这些始终以块显示。

从vmstat 10 -S M ina终端窗口输出

活动和非活动内存

如果你使用 -一个 (活动)选项buff和缓存内存列由“inact”和“active”列替换。正如他们所建议的那样,这些显示了非活动和活动内存的数量。

要查看这两列而不是buff和缓存列,请包括 -一个 选项,如图所示:

vmstat 5 -a -S M.

vmstat 5 -a -S M在终端窗口中

inact和active列受-S(单位字符)选项的影响。

在终端窗口中输出vmstat 5 -a -S M.

福克斯

-F switch显示自计算机启动以来发生的分叉数。

换句话说,这表示自系统启动以来已启动的任务数量(并且,其中大部分已完成关闭)。从命令行启动的每个进程都会增加这个数字。每次任务或进程产生或克隆新任务时,此数字都会增加。

vmstat -f

终端窗口中的vmstat -f

叉子显示不会更新。

显示Slabinfo

内核有自己的内存管理担心以及操作系统和所有应用程序的内存管理。

正如您可能想象的那样,内核为它必须处理的许多不同类型的数据对象反复分配和释放内存。为了使其尽可能高效,它使用了一个名为slabs的系统。这是一种缓存形式。

特定类型的内核数据对象分配,使用和不再需要的内存可以重新用于相同类型的另一个数据对象,而不会释放和重新分配内存。将板块视为预先分配,用于测量RAM的内核,以满足内核自身的需求。

要查看平板的统计数据,请使用 -m (板)选项。你需要使用 须藤,系统将提示您输入密码。由于输出可能非常冗长,我们正在通过它

sudo vmstat -m |减

sudo vmstat -m |少在终端窗口

输出有五列。这些是:

  • 缓存:缓存的名称。

  • num:此缓存中当前活动对象的数量。

  • total:此缓存中可用对象的总数。

  • size:缓存中每个对象的大小。

  • pages:当前与此缓存关联的(至少)一个对象的内存页面总数。

输出来自sudo vmstat -m |更少的终端窗口

q 离开

显示事件计数器和内存统计信息

要显示事件计数器和内存统计信息的页面,请使用 -s (统计)选项。请注意,这是一个小写的“s”。

vmstat -s

vmstat -s在终端窗口中

虽然报告的统计信息与构成默认值的信息大致相同 vmstat的 输出,其中一些更详细地分开。

例如,默认输出将nice和non-nice用户CPU时间合并到“us”列中。 -s(统计信息)显示单独列出这些统计信息。

在终端窗口中从vmstat -s输出

显示磁盘统计信息

您可以使用以下方法获取类似的磁盘统计信息列表 -d (磁盘)选项。

vmstat -d |减

vmstat -d |少在终端窗口

对于每个磁盘,显示三列,分别是Reads,Writes和IO。

从vmstat -d |输出少在终端窗口

IO是最右边的列。请注意,IO中的sec列以秒为单位进行测量,但读取和写入列中基于时间的统计信息以毫秒为单位进行测量。

输出vmstat -d |少在终端窗口

这就是列的意思:

  • total:磁盘读取的总数。

  • 合并:分组读取的总数。

  • sector:已读入的扇区总数。

  • ms:从磁盘读取数据时使用的总时间(以毫秒为单位)。

  • total:磁盘写入的总数。

  • merged:分组写入的总数。

  • sector:写入的扇区总数。

  • ms =将数据写入磁盘的总时间(以毫秒为单位)。

IO

  • cur:当前磁盘读取或写入的数量。

  • sec:任何正在进行的读取或写入所花费的时间(以秒为单位)。

显示摘要磁盘统计信息

要查看磁盘活动摘要统计信息的快速显示,请使用 -D (disk-sum)选项。注意大写的“D”。

vmstat -D

vmstat -D在终端窗口中

磁盘数量可能看起来异常高。用于研究本文的计算机正在运行Ubuntu。使用Ubuntu,每次从Snap安装应用程序时,a 的squashfs 创建伪文件系统,它附加到/ dev / loop设备。

令人讨厌的是,许多Linux命令和实用程序将这些设备条目视为硬盘驱动器设备。

在终端窗口中输出vmstat -D

显示分区统计信息

要查看与特定分区相关的统计信息,请使用 -p (分区)选项并提供分区标识符作为命令行参数。

在这里,我们将看看分区 SDA1。数字1表示这是设备上的第一个分区 SDA,这是这台电脑的主要硬盘。

vmstat -p sda1

vmstat -p在终端窗口中

返回的信息显示进出该分区的磁盘读取和磁盘写入总数,以及磁盘读取和磁盘写入操作中包含的扇区数。

在终端窗口中输出vmstat -p sda1

在引擎盖下偷看

知道怎样抬起引擎盖,看看下面发生了什么,这总是很好的。有时候你会尝试解决问题,有时它会引起人们的兴趣,因为你想知道你的计算机是怎样计算的。

vmstat的 可以为您提供大量有用的信息。现在您知道怎样访问它以及它意味着什么。预先警告是预先设定的 – 当你需要卷起袖子做一些诊断时,你会知道你已经有了 vmstat的 在你身边。

body #primary .entry-content ul#nextuplist list-style-type:none; margin-left:0px; padding-left:0px;
body #primary .entry-content ul#nextuplist li a text-decoration:none; color:#1d55a9;

请阅读下一步

  • >怎样建立一个智能卧室
  • > Steam不支持Ubuntu 19.10和未来版本
  • >怎样使您的哑窗空调智能化
  • >微软的新Windows终端现已推出
  • >怎样在Google地图上报告虚假商家信息
本文机器自动生成,不保证语句完整通顺和表达准确,亦不对内容真实有效性负责,请读者知悉。