vmstat 命令详解

vmstat
vmstat 是最早用于显示所有与内存和进程相关信息的命令,调用时,该命令会持续运行并发布其信息。它有两个参数:

# vmstat <interval> <count>

<interval> 是两次运行之间的时间间隔,以秒为单位。
<count> 是 vmstat 重复的次数。
下面是当我们希望 vmstat: 
每隔 5 秒运行一次并在第 10 次运行后停止时的示例。
每 5 秒之后都会输出一行并显示此时的统计信息。
# vmstat   5 10 
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 170988  22256   6796 322680    1    2   335    48   92   22  4  8 84  5  0


该输出显示有关系统资源的信息:

   procs  显示进程数

   r      等待运行的进程。系统上的负载越多,等待运行 CPU 周期的进程数量越多。

   b      不可中断睡眠的进程,也称为“被阻塞”的进程。这些进程最有可能等待 I/O,但也可能等待其他事情。

wpd,free,buff,cache显示了内存值班

   wpd    虚拟内存或交换内存的数量(以 KB 为单位)

   free   可用物理内存的数量(以 KB 为单位)

   buff   用作缓冲区的内存数量(以 KB 为单位)

   cache  用作缓存的物理内存数量(以 KB 为单位)

si so 显示了交换活动:

   si     将内存从磁盘交换回物理 RAM 的速率(以 KB/秒为单位)

   so     将内存从物理 RAM 交换到磁盘的速率(以 KB/秒为单位)

bi,bo显示了 I/O 活动:

   bi     系统向块设备发送数据的速率(以块/秒为单位)

   bo     系统从块设备中读取数据的速率(以块/秒为单位)

in,cs 显示了系统相关活动:

   in     系统每秒接收到的中断数

   cs     在进程空间中切换上下文的速率(以数量/秒为单位)


us,sy,id,wa 显示了 CPU 负载的信息:

   us     显示花费在用户进程中的 CPU 百分比。Oracle 进程属于这一类。

   sy     系统进程(如所有根进程)使用的 CPU 百分比

   id     可用 CPU 百分比

   wa     花费在“等待 I/O”上的百分比


   输出的第一行是自从系统重新启动以来所有指标的平均值。该行可忽略,因为它并不显示当前状态

理想情况下,等待或阻塞的进程数量(位于“procs”下)应该为 0 或接近于 0。
如果数值较高,则表示系统没有足够的资源(如 CPU、内存或 I/O)。

“swap”下的数据表明交换是否过多。如果交换过多,则表明物理内存可能不足。应该减少内存需求或增加物理 RAM。

“io”下的数据表示往返于磁盘的数据流。这表明正在进行的磁盘活动量,这并不一定表明存在问题。
如果您看到“proc”和“b”列(正在阻塞的进程)下有较大的数值和较高的 I/O,则可能出现了严重的 I/O 争用问题。

“cpu”标题下是最有用的信息。“id”列显示空闲 CPU。如果用 100 减去该数值,则会得到繁忙 CPU 的百分比。
还记得本系列的另一个部分中描述的 top 命令吗?该命令还显示 CPU 的空闲百分比数值。区别是:top 显示每个 CPU 的空闲百分比,而 vmstat 显示所有 CPU 的空闲百分比。

vmstat 命令还显示 CPU 使用情况的划分:Linux 系统使用多少、用户进程使用多少以及等待 I/O 使用多少。
通过该划分,您可以确定 CPU 消耗的组成。如果系统 CPU 负载较高,能表明正在运行某个根进程(如备份)吗?

一段时间内的系统负载应该一致。如果系统显示较高的数值,请使用 top 命令确定占有 CPU 的系统进程

针对 Oracle 用户的用法
Oracle 进程(后台进程和服务器进程)和用户进程(sqlplus、apache 等)位于“us”下。
如果该数值较高,则使用 top 来确定进程。如果“wa”列显示较高的数值,则表明 I/O 系统无法跟上读取或写入的数量。
有时这可能是因为在数据库中进行大量更新,从而导致日志切换以及后续的大量存档进程。
但是,如果它持续显示一个较大的数值,则表明可能存在 I/O 瓶颈。

Oracle 数据库中的 I/O 瓶颈可能会造成严重的问题。与性能问题不同,慢速 I/O 可能导致控制文件写入速度缓慢,
这会导致等待获取控制文件的进程加入队列。如果等待超过 900 秒且等待者是关键进程(如 LGWR),则会关闭数据库实例。

如果您看到很多交换,可能是 SGA 的太大,以至于物理内存容纳不下。应该减小 SGA 大小或增加物理内存。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值