优化命令----Vmstat命令(有手就行)

文章目录

  • 一、简介
  • 二、常用参数
    • 1、显示虚拟内存使用情况
    • 2、示例
      • 1、显示启动后创建的进程总数: 查看系统已经fork了多少次
      • 2、显示slab信息
      • 3、头信息仅显示一次
      • 4、以表格方式显示事件计数器和内存状态
      • 5、表示在1秒时间内进行2次采样。
      • 6、显示活动命令
      • 7、查看磁盘的读/写
  • 三、压力测试,观察虚拟内存的变化

一、简介

vmstat 命令会报告有关内核线程、虚拟内存、磁盘、管理程序页面、陷阱和处理器活动的统计信息。由 vmstat 命令生成的报告可以用于平衡系统负载活动。系统范围内的这些统计信息(所有的处理器中)都计算出以百分比表示的平均值,或者计算其总和。因为不会自动读取统计信息,所以 vmstat 命令可能会返回不一致的统计信息。

如果在没有标志的情况下运行 vmstat 命令,那么报告会包含系统启动后虚拟内存活动的摘要。如果指定 -f 标志,那么 vmstat 命令会报告系统启动后的派生数。physicalvolume 参数指定物理卷的名称。

interval 参数指定每次报告之间的秒数。如果不指定 interval 参数,那么 vmstat 命令会生成单个报告,该报告包含有关系统启动和退出之间所经历时间的统计信息。count 参数只能与 interval 参数一起指定。如果指定了 count 参数,那么它的值将确定生成的报告数目和报告相距秒数。如果指定 interval 参数而不指定 count 参数,那么会继续生成报告。不要对 count 参数指定值 0。

内核为内核线程、调页和中断活动维护统计信息,vmstat 命令通过使用 perfstat 内核扩展来对其进行访问。磁盘输入/输出统计信息由设备驱动程序维护。对于磁盘,利用活动时间和传送信息的次数来确定平均传送速率。活动时间的百分数根据报告期间驱动器忙的时间长度来计算。

从 AIX® 5.3 开始,vmstat 命令报告在Micro-Partitioning®环境中消耗的物理处理器 (pc) 数和消耗的授权 (ec) 百分比。这些度量值将对Micro-Partitioning环境显示。

由 vmstat 命令生成的报告包含系统配置行和列标题。如果指定了 -@ 标志,那么报告将包含系统配置和WPAR配置。

二、常用参数

用法

vmstat [-a] [-n] [-S unit] [delay [ count]]
vmstat [-s] [-n] [-S unit]
vmstat [-m] [-n] [delay [ count]]
vmstat [-d] [-n] [delay [ count]]
vmstat [-p disk partition] [-n] [delay [ count]]
vmstat [-f]
vmstat [-V]
参数 含义
-a 显示活跃和非活跃内存
-f 显示从系统启动至今的fork数量
-m 显示slabinfo
-n 只在开始时显示一次各字段名称。
-s 显示内存相关统计信息及多种系统活动数量
delay 刷新时间间隔。如果不指定,只显示一条结果
count 刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷
-d 显示磁盘相关统计信息
-p 显示指定磁盘分区统计信息
-S 使用指定单位显示。参数有 k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024 bytes)
-V 显示vmstat版本信息。

1、显示虚拟内存使用情况

在这里插入图片描述
字段说明:

  • Procs(进程):

or: 运行队列中进程数量
ob: 等待IO的进程数量

  • Memory(内存):

oswpd: 使用虚拟内存大小
ofree: 可用内存大小
obuff: 用作缓冲的内存大小
ocache: 用作缓存的内存大小

  • Swap:

osi: 每秒从交换区写到内存的大小
oso: 每秒写入交换区的内存大小
IO:(现在的Linux版本块的大小为1024bytes)
obi: 每秒读取的块数
obo: 每秒写入的块数

  • system:(系统信息)

oin: 每秒中断数,包括时钟中断。
ocs: 每秒上下文切换数。

  • CPU(以百分比表示):

ous: 用户进程执行时间(user time)
osy: 系统进程执行时间(system time)
oid: 空闲时间(包括IO等待时间),中央处理器的空闲时间 ,以百分比表示。
owa: 等待IO时间

2、示例

1、显示启动后创建的进程总数: 查看系统已经fork了多少次

[root@root ~]#: vmstat -f

在这里插入图片描述

2、显示slab信息

[root@root ~]#: vmstat -m

优化命令----Vmstat命令(有手就行)_第1张图片

3、头信息仅显示一次

[root@root ~]#: vmstat -n

在这里插入图片描述

4、以表格方式显示事件计数器和内存状态

[root@root ~]#: vmstat -s

优化命令----Vmstat命令(有手就行)_第2张图片

[root@root ~]#: vmstat 1 2

在这里插入图片描述

5、表示在1秒时间内进行2次采样。

将得到一个数据汇总他能够反映真正的系统情况。以 指定的MB 单位输出结果

vmstat -S M 1 2

在这里插入图片描述

6、显示活动命令

vmstat -a 2 5

优化命令----Vmstat命令(有手就行)_第3张图片

7、查看磁盘的读/写

vmstat -d

优化命令----Vmstat命令(有手就行)_第4张图片

读 
total:     成功读取的总数
    merged:    分组读取(产生一个 IO)
    sectors:   成功读取的扇区数
    ms:        读取花费的毫秒
 
写
    total:      成功写入的总数
    merged:     分组写入(产生一个 IO)
    sectors:    成功写入的扇区数
    ms:         写花费的毫秒
 
IO
    cur:    正在进行的IO
sec:      IO花费的秒数

三、压力测试,观察虚拟内存的变化

使用dd命令持续写入的时候,我们使用vmstat命令查看内存的使用情况(在此之前可以调低你的运行内存,达到实验的效果)

dd if=/dev/zero of=/1.txt bs=1G count=20

优化命令----Vmstat命令(有手就行)_第5张图片
物理内存不足时:
1、开始使用swpd,swpd不为0
2、si so大于0开始从硬盘中读取
表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器。(大于0,关注内存泄漏,结合si和so看,如果si和so为0,也没关系)

你可能感兴趣的:(linux)