Linux Vmstat命令

2024年 3月 20日 65.3k 0

在本指南中,我们将演示在Linux中使用“vmstat”命令的各种方法。

先决条件:

要执行本指南中演示的步骤,您需要以下组件:

  • 配置正确的Linux系统。出于测试目的,请考虑使用Linux VM。
  • 访问具有sudo权限的非根用户
  • 对命令行界面的基本理解

Linux中的虚拟内存

物理内存,也称为RAM,数量有限。内核负责将这个空间分配给所有运行的程序。所有正在运行的程序(包括操作系统)都驻留在RAM中。

但是,如果内存需求高于可用内存,系统就会崩溃(或者程序会要求更多的内存空间)。在大多数情况下,这是一个不想要的结果。这就是虚拟内存的出现。

虚拟内存是指HDD/SSD上的专用磁盘空间,可在紧急情况下充当额外内存。因为它充当RAM空间(但不是真的),所以它被认为是“虚拟的”。在UNIX/Linux系统中,这些空间称为交换空间。

Linux内核将内存块移动到交换空间,并在必要时将其检索回RAM。

虚拟内存的性能肯定比物理内存慢,并且与存储设备的性能成正比。然而,在特定的硬件配置中(例如使用NVMe SSD),性能可能等同于RAM。

vmstat命令

"vmstat"命令是一个监视工具,用于报告有关虚拟内存的各种信息。它可以作为"sysstat"包的一部分在所有Linux系统上使用。

"vmstat"的命令结构如下:

$vmstat

基本用法

如果运行时没有任何参数,"vmstat"会打印自上次启动以来的系统信息:

$vmstat

产出分为六个部分:

  • procs:当前正在运行的进程的统计信息
    • r:活动进程数
    • b:睡眠过程的数量
  • memory:内存使用统计
    • Swpd:虚拟内存总量(交换空间)
    • 空闲:可用交换空间
    • buff:用作临时缓冲存储器的交换空间量
    • 缓存:总缓存内存
  • swap:关于交换空间的统计信息
    • si:交换速率
    • 所以:换出的比率
  • io:I/O统计
    • bi:从块设备接收的块数
    • bo:发送到块设备的块数
  • 系统:日程安排统计
    • in:系统中断计数
    • cs:上下文切换速率
  • CPU:各种CPU统计数据
    • 美国:CPU花费在非内核进程上的时间
    • sy:CPU花费在内核进程上的时间
    • id:CPU花费时间空闲
    • wa:CPU花费时间等待I/O操作完成
    • st:虚拟机使用的CPU时间

更改显示单元

默认情况下,"vmstat"以字节为单位报告内存值。要更改单位,请使用"—S"标志:

$vmstat-S

在这里,“vmstat”以MB为单位打印值。

有几个可用的内存单元:

  • M:1048576字节(2^20字节)
  • M:1000000字节(1000千字节)
  • K:1024字节(1兆字节)
  • k:1000字节(1字节)

持续统计数据更新

默认情况下,"vmstat"打印一次报告。但是,我们可以指示"vmstat"以指定的时间间隔(以秒为单位)提供连续的报告。

命令结构如下:

$vmstat

例如,要每隔2秒获取更新的统计信息,命令如下:

$vmstat 2

输出不会停止,除非使用“Ctrl + C”手动终止。

或者,我们可以指定"vmstat"来提供特定次数的统计数据:

$vmstat

例如,要获取每2秒更新一次的统计数据,命令如下所示:

$vmstat 2 5

主动和非主动记忆

活动内存指的是进程当前使用的内存空间。另一方面,非活动内存指的是分配给不再运行的进程的内存空间。

使用"vmstat",我们可以检查正在使用的活动和非活动内存的数量:

$vmstat—a

这里,"buff"和"cache"列分别被"inact"和"active"列替换。

内存和调度

要获取有关内存和调度的更详细报告,请使用以下命令:

$vmstat—s

这里:

  • 第1节:这一节介绍基本系统信息,如总物理内存、活动/非活动内存、空闲/缓冲区/缓存内存等。
  • 第2节:各种CPU统计数据
    • 非良好CPU节拍:高优先级进程使用CPU的次数。
    • NICE CPU TICK:低优先级进程使用CPU的次数。
    • 系统CPU计数:内核进程使用CPU的次数。
    • Idle CPU ticks:CPU处于空闲状态的次数。
    • IO—wait CPU ticks:CPU等待I/O管理的次数。
    • IRQ:CPU接收中断请求的次数。
    • softirq:CPU接收软件中断请求的次数。
    • 被盗CPU时间:VM窃取CPU时间的次数。
  • 第3节:内存分页状态
  • 第4节:事件计数器

引导后的叉子

Forks指的是由现有进程产生的进程。要获取fork计数的统计信息,请运行以下命令:

$vmstat-f

磁盘和分区统计

"vmstat"命令还可以提供有关磁盘活动的信息。要获取磁盘活动的快速摘要,请运行以下命令:

$vmstat—D

要获取更详细的磁盘活动报告(包括读/写统计),请改用以下命令:

$vmstat—d

这里:

  • 读数
    • total:磁盘读取总数
    • 已合并:组读取总数
    • sectors:读取的sectors总数
    • ms:从磁盘读取数据的总时间(毫秒)
  • 写道
    • total:磁盘写入计数
    • 已合并:组写入总数
    • sectors:写入的sectors总数
    • ms:写入磁盘的总时间(毫秒)
  • io
    • cur:当前磁盘读/写总数
    • 秒:正在进行的读/写操作所花费的时间量(秒)

“vmstat”命令还可以生成特定磁盘分区的报告。要获取分区报告,请使用以下命令结构:

$vmstat-p

板材统计

板分配是一种有效的对象内存分配机制。与以前的机制相比,slab分配提供了减少内存碎片(由内存分配和解除分配引起的)。

要检查系统的slab统计信息,请使用以下"vmstat"命令:

$sudo vmstat—m

请注意,它需要root权限才能查看统计数据。

这里:

  • 缓存:缓存数据的名称
  • Num:Num缓存中处于活动状态的对象的数量
  • Total:特定缓存中对象的总数
  • Size:缓存对象的大小
  • Pages:包含缓存对象的内存分页计数

结论

在本指南中,我们展示了使用"vmstat"命令的各种方法。除了虚拟内存外,"vmstat"还可以报告磁盘统计数据、分叉、片等。

有兴趣了解其他系统监控工具吗?了解有关HTOP、KILL、PS等的更多信息。

计算快乐!

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论