美文网首页
虚拟内存分析工具-vmstat

虚拟内存分析工具-vmstat

作者: 大风过岗 | 来源:发表于2020-12-10 18:12 被阅读0次

命令详解

vmstat - 主要用于查看虚拟内存的使用情况(vmstat virtual memory performance monitoring)

关于虚拟内存

在系统中运行的每个进程都需要使用到内存,但不是每个进程都需要每时每刻使用系统分配的内存空间。当系统运行所需内存超过实际的物理内存,内核会释放某些进程所占用但未使用的部分或所有物理内存,将这部分资料存储在磁盘上直到进程下一次调用,并将释放出的内存提供给有需要的进程使用。
在Linux内存管理中,主要是通过“调页Paging”和“交换Swapping”来完成上述的内存调度。调页算法是将内存中最近不常使用的页面换到磁盘上,把活动页面保留在内存中供进程使用。交换技术是将整个进程,而不是部分页面,全部交换到磁盘上。

分页(Page)写入磁盘的过程被称作Page-Out,分页(Page)从磁盘重新回到内存的过程被称作Page-In。当内核需要一个分页时,但发现此分页不在物理内存中(因为已经被Page-Out了),此时就发生了分页错误(Page Fault)。当系统内核发现可运行内存变少时,就会通过Page-Out来释放一部分物理内存。尽管Page-Out不是经常发生,但是如果Page-out频繁不断的发生,直到当内核管理分页的时间超过运行程序的时间时,系统性能就会急剧下降。这时的系统已经运行非常慢或进入暂停状态,这种状态亦被称作thrashing。

语法

vmstat [options] [delay] [count]

语法说明
vmstat 可以统计 处理器、内存、页面调度、IO块、traps、磁盘、以及cpu活动状况。
此命令首次统计的是自上次启动以来的平均情况。 随后的统计数据是在delay周期时间内的取样信息。不管是哪一种情况下,该命令统计的处理器和内存信息都是瞬时的。

命令选项

命令选项说明

delay - 更新的时间间隔,单位是秒。如果没有指定delay的话,就只会输出一条统计报告,这条统计报告中的内容是自启动以来的平均值。

count - 更新的次数,当定义了delay,而没有指定count的话,默认就是无限,不断地输出。

选项简称 完整选项名 含义
-a active 展示活跃和非活跃的内存
-f forks -f开关会展示出自从启动之后,系统总共fork的个数,它包括:fork、vfork、clone system call。就相当于创建的总任务数。取决于线程的使用,每个进程可以由一个或多个任务来表示
-m slabs 展示slab信息
-n one-header 头部信息只展示一次,而不是周期性地展示
-s stats 把各种事件计数器和内存统计放到一个表中展示,这种方式不会重复性地展示输出信息
-d disk 展示磁盘的统计信息
-D disk-sum 统计一些关于磁盘活动的汇总信息
-p partition 展示关于分区的详细信息
-S unit 使用指定单位显示。参数有 k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024 bytes)。注意:此选项并不改变si/so、bi/bo的展示
-t timestamp 在每一行中增加时间戳
-w wide 宽输出模式,在这种模式下,每行的输出宽度超过80个字符
-v version 展示版本信息并退出
-h help 展示帮助信息并退出

命令输出结果

下面对命令在不同模式下的输出结果进行说明:

虚拟内存模式下的输出

处理器
r: 表示处于运行状态的进程数量
b: 表示处于不可中断睡眠状态的进程数量

内存
swpd: 已使用的虚拟内存总量
free: 空闲内存总量
buff: 作为buffer使用的内存总量
cache: 作为cache使用的内存总量
inact: 不活跃内存的总量
active:活跃内存的总量

swap交换区
si: Amount of memory swapped in from disk (/s).即:每秒从磁盘读入虚拟内存的大小
so: Amount of memory swapped to disk (/s) 即:每秒从虚拟内存写入到磁盘的大小

IO
bi:Blocks received from a block device (blocks/s).即:每秒从块设备中接收的块数
bo:Blocks sent to a block device (blocks/s).即:每秒发送到块设备的块数

系统
in: The number of interrupts per second, including the clock. 即:每秒中断的个数,包括时钟
cs: The number of context switches per second.即:每秒执行上下文切换的个数

CPU
下面这些是占总的CPU时间的比例
us: 运行非内核代码的时间。(用户时间,包括:nice time)
sy: 运行内核代码的时间。(系统时间)
id: 空闲时间
wa: 等待IO的时间。(被包含到空闲时间中)
st: 虚拟主机占用的时间

磁盘模式下的输出

读操作
total: 已完成的成功读取次数
merged: 被合并的读操作的个数
sectors: 成功读取的分区数
ms: 读操作耗费的毫秒数

写操作
total: 已完成的成功写次数
merged: 被合并的写操作的个数
sectors: 成功写的分区数
ms: 写操作耗费的毫秒数

IO
cur: 进行中的IO
s: IO花费的秒数

磁盘分区模式下的输出

reads: 提交到此分区的读操作个数
read sectors: 此分区总的读取分区数
writes: 提交到此分区的总的写操作个数
requested writes: 此分区总的写请求个数

SLAB模式下的输出

cache:缓存名称
num :当前活跃对象的个数
total:可用对象的总数
size : 每个对象的大小
pages: 至少含有一个活跃对象的页面个数

常用示例

[root@01r5840viotftelmrcx2Z ~]#
[root@01r5840viotftelmrcx2Z ~]# vmstat -a 2 3
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 1114348 3510560 10542308    0    0     8    86    6    3  1  0 98  0  0
 0  1      0 1111472 3510628 10542756    0    0     4   988 3058 3500  1  0 98  1  0
 0  1      0 1112836 3510600 10542824    0    0     0   540 2334 2758  1  0 98  0  0
[root@01r5840viotftelmrcx2Z ~]#


[root@01r5840viotftelmrcx2Z ~]# vmstat -s
     15732096 K total memory
      2244076 K used memory
     10517148 K active memory
      3513080 K inactive memory
      1127760 K free memory
       146384 K buffer memory
     12213876 K swap cache
            0 K total swap
            0 K used swap
            0 K free swap
      4568779 non-nice user cpu ticks
           19 nice user cpu ticks
       595514 system cpu ticks
    404812994 idle cpu ticks
      1281694 IO-wait cpu ticks
            0 IRQ cpu ticks
        84346 softirq cpu ticks
            0 stolen cpu ticks
     32875380 pages paged in
    354599478 pages paged out
            0 pages swapped in
            0 pages swapped out
   1144664542 interrupts
   1690316285 CPU context switches
   1607075802 boot time
        46254 forks
[root@01r5840viotftelmrcx2Z ~]#

以M为单位展示内存的使用情况

[root@01r5840viotftelmrcx2Z ~]# vmstat -S M
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   1085    142  12611    0    0     8    86    9    6  1  0 98  0  0
[root@01r5840viotftelmrcx2Z ~]# 

参考文献

vmstat命令
vmstat命令
vmstat命令

相关文章

  • 虚拟内存分析工具-vmstat

    命令详解 vmstat - 主要用于查看虚拟内存的使用情况(vmstat virtual memory perfo...

  • JVM系列(2) JVM监控工具

    1.JVM调优工具 1.1 常用linux分析命令 命令作用与特点vmstat进程,虚拟内存,页面交换,IO读写,...

  • 进程统计工具:vmstat、iostat、dstat

    vmstat命令: 虚拟内存统计信息 格式:vmstat [options] [delay [count]] 选项...

  • Linux CPU性能分析与监控——vmstat、top

    Linux性能监控工具汇总: iostat 磁盘性能监控 vmstat 虚拟内存性能监控、CPU监控(进程上...

  • 性能分析

    vmstat命令 vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操...

  • vmstat 命令学习

    vmstat :报告虚拟内存使用情况的工具。vmstat 2 :每2秒打印一次内存使用报告。参数解释: 示例如下:

  • linux性能优化

    一:总述:有哪些优化方面 IO CPU 磁盘 内存 二:工具 2.1 内存 vmstat 虚拟内存统计,可对操作...

  • linux性能分析汇总

    ​​​​ 性能分析工具汇总 收藏 一、分析工具 1、CPU性能分析工具: vmstat ps sar time s...

  • Linux-vmstat命令

    vmstat命令 性能监测与优化 vmstat命令的含义为显示虚拟内存状态(“Virtual Memory Sta...

  • vmstat

    vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、...

网友评论

      本文标题:虚拟内存分析工具-vmstat

      本文链接:https://www.haomeiwen.com/subject/cturgktx.html