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详细解释
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内存字段
接下来是交换(swap)指标。交换只是一个古老术 语,但是显然不会消失。交换涉及分页读取或写入磁盘的进程所消耗的所有内存。它将显示系统达到的性能指标水平。而Linux所做的是,以小块方式按照需要 对磁盘空间进行分页操作。因此,我们可能应该停止说交换到磁盘的内存,并开始说分页到磁盘的内存。对于任何一种方法,表3-8解释了相关字段。 表3-8 vmstat交换字段
在交换之后是两个I/O字段。这部分提供了一个简略介绍以帮助确定Linux是否正忙于完成许多磁盘I/O。vmstat只提供两个字段,显示出入磁盘的数据量(参见表3-9)。 表3-9 vmstat io字段
系统字段提供Linux内核进行进程管理的繁忙程度的摘要。中断和上下文开关参见表3-10。上下文开关指进程移出CPU或者移入CPU。 表3-10 vmstat系统字段
最后,CPU状态信息用总CPU时间的百分比来表示,如表3-11所示。 表3-11 vmstat cpu字段
|