iostat vmstat 详解.docx
- 文档编号:3310347
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:10
- 大小:20.83KB
iostat vmstat 详解.docx
《iostat vmstat 详解.docx》由会员分享,可在线阅读,更多相关《iostat vmstat 详解.docx(10页珍藏版)》请在冰豆网上搜索。
iostatvmstat详解
iostatvmstat详解
Linux在具有高稳定性、可靠性的同时,具有很好的可伸缩性和扩展性,能够针对不同的应用和硬件环境调整,优化出满足当前应用需要的最佳性能。
因此企业在维护Linux系统、进行系统调优时,了解系统性能分析工具是至关重要的。
在Linux下有很多系统性能分析工具,比较常见的有top、free、ps、time、timex、uptime等。
下文将介绍几个较为重要的性能分析工具vmstat、iostat和sar及其使用。
用vmstat监视内存使用情况
vmstat是VirtualMeomoryStatistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监视。
它是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。
vmstat的语法如下:
vmstat[-V][-n][delay[count]]
其中,-V表示打印出版本信息;-n表示在周期性循环输出时,输出的头部信息仅显示一次;delay是两次输出之间的延迟时间;count是指按照这个时间间隔统计的次数。
对于vmstat输出各字段的含义,可运行manvmstat查看。
用iostat监视I/O子系统情况
iostat是I/Ostatistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视。
它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。
同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。
iostat的语法如下:
iostat[-c|-d][-k][-t][-V][-x[device]][interval[count]]
其中,-c为汇报CPU的使用情况;-d为汇报磁盘的使用情况;-k表示每秒按kilobytes字节显示数据;-t为打印汇报的时间;-v表示打印出版本信息和用法;-xdevice指定要统计的设备名称,默认为所有的设备;interval指每次统计间隔的时间;count指按照这个时间间隔统计的次数。
iostat一般的输出格式如下:
Linux2.4.18-18smp()2003年03月07日
avg-cpu:
%user%nice%sys%idle
4.810.011.0394.15
Device:
tpsBlk_read/sBlk_wrtn/sBlk_readBlk_wrtn
dev3-030.311117.68846.521610453612197374
dev3-17.06229.6140.403308486582080
对于输出中各字段的含义,iostat的帮助中有详细的说明。
vmstat命令报告虚拟内存统计信息和CPU负荷:
页面调度,交换,任务交换,CPU利用率。
命令的语法是:
vmstat[-cisS][d1d2d3d4][interval[count]]
当不用选项时,vmstat显示一条曲线表示自从系统启动后活动的信息。
如果指定interval(时间间隔),接下来的线是重复显示最后的interval期间活动的情况,直到用户中断命令执行。
当同时提供计数器时,统计信息按时间计数来显示。
如果指定了一个磁盘名(如d1,d2,等等。
),这些磁盘得到优先显示。
通常,系统上的前4个磁盘设备是显示的,因为只有四个设备能在一线条上显示,这个选项允许性能分析员修改缺省显示选项。
(*磁盘名通常随id,sd,xd,或xy(取决于类型和I/0界面)加一个数字,如id0,sd2,xd1等等命名而定。
)
,vmstat命令显示若干字段信息:
procs报表下面三种状态的进程数:
r--在运行队列中等候运行
b--被资源阻塞(I/0,页面调度,等等.)
w--可运行但是被换出的
memory报告虚拟内存和实存信息:
swap--以千字节为单位的当前可用交换空间的数量
free--以千字节为单位的页自由表大小
page报告每秒页面调度活动数量的信息:
re-从自由表回收页
mf--次要的错误;地址空间或硬件地址转换错误
pi--页入的千字节数
po-页出的千字节数
fr-释放的千字节数
de--以千字节为单位的可接受的短期内存不足数
sr--页由时钟算法扫描
disk可以为四个磁盘报告每秒磁盘I/O的数量
faults报告每秒系统软件中断和硬件中断的速率
in-设备中断,不包括系统时钟中断
sy-系统调用
cs-CPU任务(上下文)交换
cpu--CPU故障时间的百分比,在多处理器系统上,这是全部处理器的平均值:
us-用户时间
sy--系统时间
id--闲置时间
vmstat命令有四个可选标志可供使用。
如果机器有虚拟地址缓存-c标志就改变输出报告缓存刷新统计数据。
报告包括自从系统启动后每种缓存刷新全部总量。
六个缓存类型是用户,上下文,区域,段,页,部分页。
-i标志使输出变为报告中断的数量。
如果给出设备名,如d1,d2等,监控将在设备级*执行,(*注,参阅第十二章有关打开设备级监控的信息。
)并报告每个给定设备的统计信息。
修改"普通"报告来显示交换而非页面调度活动的信息。
这选项改变显示的两个字段:
si(换入)和so(换出)替代了re和mf字段。
值得注意是,interval和count选项对-i或-s选项是非法的。
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空闲的时间
FIELDDESCRIPTIONS
Procs
r:
Thenumberofprocesseswaitingforruntime.
b:
Thenumberofprocessesinuninterruptablesleep.
w:
Thenumberofprocessesswappedoutbutotherwiserunnable.
Thisfieldiscalculated,butLinuxneverdesperationswaps.
Memory
swpd:
theamountofvirtualmemoryused(kB).
free:
theamountofidlememory(kB).
buff:
theamountofmemoryusedasbuffers(kB).
Swap
si:
Amountofmemoryswappedinfromdisk(kB/s).虚拟内存的页导入(从SWAPDISK导入RAM)
so:
Amountofmemoryswappedtodisk(kB/s).虚拟内存的页导出.
(从RAM到SWAPDISK)
IO
bi:
Blockssenttoablockdevice(blocks/s).
bo:
Blocksreceivedfromablockdevice(blocks/s).
System
in:
Thenumberofinterruptspersecond,includingtheclock.
cs:
Thenumberofcontextswitchespersecond.
:
CPU
ThesearepercentagesoftotalCPUtime.
us:
usertime
sy:
systemtime
id:
idletime
如果r经常大于4,且id经常少于40,表示cpu的负荷很重。
如果pi,po长期不等于0,表示内存不足。
如果disk经常不等于0,且在b中的队列大于3,表示io性能不好。
由vmstat看服务器
说明:
由于STATSPACK并不能获取全面分析性能问题所需要的所有信息,所以需要扩展其收集服务器的统计信息。
(本文环境REDHAT Linux7.2)
VMSTAT介绍
通过STATSPACK收集服务器信息,主要通过收集VMSTAT的信息来展现服务器状况。
VMSTAT工具是最常见的UNIX监控工具,可以展现给定时间间隔的服务器的状态值。
一般VMSTAT工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数。
如:
[oracle@brucelauoracle]$vmstat12
procsmemoryswapiosystem CPU
rbwswpdfreebuffcache sisobiboincsussyid
100027184418605225585200261021000100
000027184418605225585200001041100100
(注:
目前系统几乎空闲,并且不同操作系统VMSTAT输出内容有所不同)
目前说来,对于服务器监控有用处的度量主要有:
r(运行队列)
pi(页导入)
us(用户CPU)
sy(系统CPU)
id(空闲)
通过VMSTAT识别CPU瓶颈
r(运行队列)展示了正在执行和等待CPU资源的任务个数。
当这个值超过了CPU数目,就会出现CPU瓶颈了。
获得CPU个数的命令(LINUX环境):
cat/proc/cpuinfo|grepprocessor|wc-l
当r值超过了CPU个数,就会出现CPU瓶颈,解决办法大体几种:
1.最简单的就是增加CPU个数
2.通过调整任务执行时间,如大任务放到系统不繁忙的情况下进行执行,进尔平衡系统任务
3.调整已有任务的优先级
通过VMSTAT识别CPU满负荷
首先需要声明一点的是,vmstat中CPU的度量是百分比的。
当us+sy的值接近100的时候,表示CPU正在接近满负荷工作。
但要注意的是,CPU满负荷工作并不能说明什么,UNIX总是试图要CPU尽可能的繁忙,使得任务的吞吐量最大化。
唯一能够确定CPU瓶颈的还是r(运行队列)的值。
通过VMSTAT识别RAM瓶颈
数据库服务器都只有有限的RAM,出现内存争用现象是Oracle的常见问题。
首先察看RAM的数量,命令如下(LINUX环境):
[root@brucelauroot]#free
totalusedfreesharedbufferscached
Mem:
1027348873312154036185736187496293964
-/+buffers/cache:
391852635496
Swap:
209644002096440
当然可以使用top等其他命令来显示RAM。
当内存的需求大于RAM的数量,服务器启动了虚拟内存机制,通过虚拟内存,可以将RAM段移到SWAPDISK的特殊磁盘段上,这样会出现虚拟内存的页导出和页导入现象,页导出并不能说明RAM瓶颈,虚拟内存系统经常会对内存段进行页导出,但页导入操作就表明了服务器需要更多的内存了,页导入需要从SWAPDISK上将内存段复制回RAM,导致服务器速度变慢。
解决的办法有几种:
1.最简单的,加大RAM
2.改小SGA,使得对RAM需求减少
3.减少RAM的需求(如:
减少PGA)
我们基本的了解了VMSTAT工作,下面是STATSPACK通过vmstat统计收集服务器性能数据。
STATSPACK通过vmstat收集服务器信息
首先在perfstat用户下建一个存储服务器信息的表:
如
建表:
createtablestats$vmstat
(
start_datedate,--系统时间
durationdate,--时间间隔
server_namevarchar2(20),--服务器名称
runque_waitsnumber,--运行队列数据
page_innumber,--页导入数据
page_outnumber,--页导出数据
user_cpunumber,--用户cpu数据
system_cpunumber,--系统cpu数据
idle_cpunumber,--空闲cpu数据
wait_cpunumber-等待cpu数据(只是aix存在)
)
tablespaceperfstat;
然后,通过UNIX/LINUX的shell变成,利用vmstat的结果来获取相应的服务器信息,并且存放到表中。
关于shell编程,可能已经超出本文内容,并且诚实的说,本人并没有shell编程的经验,希望那位兄台可以完成shell编程的内容,并劳驾mail给我共享一下,谢了先!
!
附:
LINUX上VMSTAT的帮助手册:
(manvmstat的结果)
VMSTAT(8)LinuxAdministrator'sManualVMSTAT(8)
NAME
vmstat-Reportvirtualmemorystatistics
SYNOPSIS
vmstat[-n][delay[count]]
vmstat[-V]
DESCRIPTION
vmstatreportsinformationaboutprocesses,memory,paging,blockIO,traps,andCPUactivity.
Thefirstreportproducedgivesaveragessincethelastreboot.Additionalreportsgiveinformationonasam-
plingperiodoflengthdelay.Theprocessandmemoryreportsareinstantaneousineithercase.
Options
The-nswitchcausestheheadertobedisplayedonlyonceratherthanperiodically.
delayisthedelaybetweenupdatesinseconds.Ifnodelayisspecified,onlyonereportisprintedwiththe
averagevaluessinceboot.
countisthenumberofupdates.Ifnocountisspecifiedanddelayisdefined,countdefaultstoinfinity.
The-Vswitchresultsindisplayingversioninformation.
FIELDDESCRIPTIONS
Procs
r:
Thenumberofprocesseswaitingforruntime.
b:
Thenumberofprocessesinuninterruptablesleep.
w:
Thenumberofprocessesswappedoutbutotherwiserunnable.This
fieldiscalculated,butLinuxneverdesperationswaps.
Memory
swpd:
theamountofvirtualmemoryused(kB).
free:
theamountofidlememory(kB).
buff:
theamountofmemoryusedasbuffers(kB).
Swap
si:
Amountofmemoryswappedinfromdisk(kB/s).
so:
Amountofmemoryswappedtodisk(kB/s).
IO
bi:
Blockssenttoablockdevice(blocks/s).
bo:
Blocksreceivedfromablockdevice(blocks/s).
System
in:
Thenumberofinterruptspersecond,includingtheclock.
cs:
Thenumberofcontextswitchespersecond.
:
CPU
ThesearepercentagesoftotalCPUtime.
us:
usertime
sy:
systemtime
id:
idletime
NOTES
vmstatdoesnotrequirespecialpermissions.
Thesereportsareintendedtohelpidentifysystembottlenecks.Linuxvmstatdoesnotcountitselfasarunningprocess.
Alllinuxblocksarecurrently1k,exceptforCD-ROMblockswhichare2k.
FILES
/proc/meminfo
/proc/stat
/proc/*/stat
SEEALSO
ps
(1),top
(1),free
(1)
BUGS
Doesnottabulatetheblockioperdeviceorcountthenumberofsystemcalls.
AUTHOR
WrittenbyHenryWare
ThroatwobblerGinkgoLabs27July1994VMSTAT(8)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- iostat vmstat 详解