vmstat 命令详解 转载

时间:2021-12-10 14:38:44

vmstat 命令详解  
 procs:
r-->在运行队列中等待的进程数
b-->在等待io的进程数
w-->可以进入运行队列但被替换的进程

memoy
swap-->现时可用的交换内存(k表示)
free-->空闲的内存(k表示)

pages
re--》回收的页面
mf--》非严重错误的页面
pi--》进入页面数(k表示)
po--》出页面数(k表示)
fr--》空余的页面数(k表示)
de--》提前读入的页面中的未命中数
sr--》通过时钟算法扫描的页面

disk 显示每秒的磁盘操作。 s表示scsi盘,0表示盘号

fault 显示每秒的中断数
in--》设备中断
sy--》系统中断
cy--》cpu交换

cpu 表示cpu的使用状态
cs--》用户进程使用的时间
sy--》系统进程使用的时间
id--》cpu空闲的时间

(1)通过VMSTAT识别CPU瓶颈

如果 r经常大于 4 ,且id经常少于40,表示cpu的负荷很重。
如果空闲时间(cpu id)持续为0并且系统时间(cpu sy)是用户时间的两倍(cpu us) 系统则面临着CPU资源的短缺.

r(运行队列)展示了正在执行和等待CPU资源的任务个数。当这个值超过了CPU数目,就会出现瓶颈了。
当r值超过了CPU个数,就会出现CPU瓶颈,解决办法大体几种:
1.   最简单的就是增加CPU个数
2.   通过调整任务执行时间,如大任务放到系统不繁忙的情况下进行执行,进尔平衡系统任务
3.  调整已有任务的优先级  
首先需要声明一点的是,vmstat中CPU的度量是百分比的。当us+sy的值接近100的时候,表示CPU正在接近满负荷工作。但要注意的是,CPU满负荷工作并不能说明什么,UNIX总是试图要CPU尽可能的繁忙,使得任务的吞吐量最大化。唯一能够确定CPU瓶颈的还是r(运行队列)的值。
  
(2)通过VMSTAT识别RAM瓶颈

如果pi,po 长期不等于0,表示内存不足。

内存的瓶颈是由scan rate (sr)来决定的.scan rate是通过每秒的始终算法来进行页扫描的.如果scan rate(sr)连续的大于每秒200页则表示可能存在内存缺陷.同样的如果page项中的pi和po这两栏表示每秒页面的调入的页数和每秒调出的页数.如果该值经常为非零值,也有可能存在内存的瓶颈,当然,如果个别的时候不为0的话,属于正常的页面调度这个是虚拟内存的主要原理.

数据库服务器都只有有限的RAM,出现内存争用现象是Oracle的常见问题。
首先察看RAM的数量,命令如下(LINUX环境):
当内存的需求大于RAM的数量,服务器启动了虚拟内存机制,通过虚拟内存,可以将RAM段移到SWAP DISK的特殊磁盘段上,这样会出现虚拟内存的页导出和页导入现象,页导出并不能说明RAM瓶颈,虚拟内存系统经常会对内存段进行页导出,但页导入操作就表明了服务器需要更多的内存了,页导入需要从SWAP DISK上将内存段复制回RAM,导致服务器速度变慢。
  
解决的办法有几种:
1.       最简单的,加大RAM
2.       改小SGA,使得对RAM需求减少
3.       减少RAM的需求(如:减少PGA)

(3)通过VMSTAT识别IO瓶颈
如果disk 经常不等于0, 且在 b中的队列 大于3, 表示 io性能不好。

-----------------------------------------------

Vmstat 命令 详细解释
2008-10-07 10:17
Vmstat详细解释 
vmstat:报告关于内核进程,虚拟内存,磁盘,cpu的的活动状态的工具 
主要有几个用法: 
1.vmstat 间隔 测试数量 
输出如下 
kthr memory page faults cpu 
----- ----------- ------------------------ ------------ ----------- 
r b avm fre re pi po fr sr cy in sy cs us sy id wa 
0 0 26258 18280 0 0 0 7 20 0 127 227 64 1 2 96 1 
其中: 
kthr--内核进程的状态 
--r 运行队列中的进程数,在一个稳定的工作量下,应该少于5 (r <5)
--b 等待队列中的进程数(等待I/O),通常情况下是接近0的. (b=0)
memory--虚拟和真实内存的使用信息 
--avm 活动虚拟页面,在进程运行中分配到工作段的页面空间数. 
--fre 空闲列表的数量.一般不少于120,当fre少于120时,系统开始自动的kill进程去释放 
free list 
page--页面活动的信息 
--re 页面i/o的列表 
--pi 从页面输入的页(一般不大于5) 
--po 输出到页面的页 
--fr 空闲的页面数(可替换的页面数) 
--sr 通过页面置换算法搜索到的页面数 
--cy 页面置换算法的时钟频率
 
faults--在取样间隔中的陷阱及中断数 
--in 设备中断 
--sy 系统调用中断 
--cs 内核进程前后交换中断 
cpu--cpu的使用率 
--us 用户进程的时间 
--sy 系统进程的时间 
--id cpu空闲的时间 
--wa 等待i/o的时间 
一般us+sy 在单用户系统中不大于90,在多用户系统中不大于80. 
wa时间一般不大于40.

2.vmstat -s 
显示系统自初始化以来的页面信息.
+++++++++++++++++++++++++++++++++++++++++++++++

vmstat命令也是显示Linux性能指标的方法,它报告了许多信息,理解这些信息有一定难度。

输出分为6个类别:进程、内存、交换区、I/O、系统和CPU。与iostat类似,第一个样本是从最近重新启动以来的平均值。以下是一个典型的vmstat输出:

-m选项使内存字段以兆字节为单位显示。vmstat和许多其他性能命令一样使用取样间隔和计数参数。

进程(procs)信息有两列。r列是可运行进程的数量,b列是阻塞进程的数量。

内存部分有4个报告虚拟内存如何使用的字段。表3-7列出这些字段及其意义。

表3-7                                                  vmstat内存字段

字    段

说    明

Swpd

已用的交换空间数量

free

*RAM数量

buff

缓冲使用的RAM数量

cache

文件系统缓存使用的RAM数量

接下来是交换(swap)指标。交换只是一个古老术 语,但是显然不会消失。交换涉及分页读取或写入磁盘的进程所消耗的所有内存。它将显示系统达到的性能指标水平。而Linux所做的是,以小块方式按照需要 对磁盘空间进行分页操作。因此,我们可能应该停止说交换到磁盘的内存,并开始说分页到磁盘的内存。对于任何一种方法,表3-8解释了相关字段。

表3-8                                                   vmstat交换字段

字    段

说   明

si

从磁盘分页到内存的数量

so

从内存分页到磁盘的数量

在交换之后是两个I/O字段。这部分提供了一个简略介绍以帮助确定Linux是否正忙于完成许多磁盘I/O。vmstat只提供两个字段,显示出入磁盘的数据量(参见表3-9)。

表3-9                                                   vmstat io字段

字    段

说   明

bi

从磁盘读入的块

bo

写入磁盘的块

系统字段提供Linux内核进行进程管理的繁忙程度的摘要。中断和上下文开关参见表3-10。上下文开关指进程移出CPU或者移入CPU。

表3-10                                               vmstat系统字段

字   段

说     明

in

系统中断

cs

进程上下文开关

最后,CPU状态信息用总CPU时间的百分比来表示,如表3-11所示。

表3-11                                               vmstat cpu字段

字    段

说     明

us

用户模式

sy

内核模式

wa

等待I/O

id

空闲