linux 系统下iostat、iotop、vmstat安装以及用法介绍
一、iostat安装与用法介绍
主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息。
用户可以通过指定统计的次数和时间来获得所需的统计信息。
1、安装(RedHat系列)
查看系统是否安装这个命令
#whichiostat##显示如下,表示系统已经安装了/usr/bin/iostat如果没有安装,则安装#yuminstallsysstat-y
2、语法
iostat[-c][-d][-h][-N][-k|-m][-t][-V][-x][-z][device[...]|ALL][-p[device[,...]|ALL]][interval[count]]-d表示显示设备(磁盘)使用状态-x表示显示和io相关的扩展数据-k表示某些使用block为单位的列强制使用Kilobytes为单位
用法1:
#iostat-x-kLinux2.6.18-308.el5(Ser108)10/31/2014avg-cpu:%user%nice%system%iowait%steal%idle0.010.000.000.040.0099.95Device:rrqm/swrqm/sr/sw/srkB/swkB/savgrq-szavgqu-szawaitsvctm%utilsda0.000.970.010.580.206.2921.980.0228.716.810.40sda10.000.000.000.000.000.0014.830.008.877.900.00sda20.000.000.000.000.000.0035.350.005.234.600.00sda30.000.970.010.580.206.2921.980.0228.716.810.40
注:如果%util接近100%,说明产生的I/O请求太多,I/O系统已经满负载,该磁盘可能存在瓶颈。
用法2:
#iostat-d-k2--其中2表示数据显示每隔2秒刷新一次输出如下:Linux2.6.18-308.el5(Ser108)11/05/2014Device:tpskB_read/skB_wrtn/skB_readkB_wrtnsda0.820.188.4785707039382031sda10.000.000.0086959sda20.000.000.007600sda30.820.188.4785522139381972Device:tpskB_read/skB_wrtn/skB_readkB_wrtnsda10.450.00121.390244sda10.000.000.0000sda20.000.000.0000sda310.450.00121.390244
输出信息解释:
tps:该设备每秒的传输次数(Indicatethenumberoftransferspersecondthatwereissuedtothedevice.)"一次传输"意思是"一次I/O请求"。多个逻辑请求可能会被合并为"一次I/O请求"。"一次传输"请求的大小是未知的。kB_read/s:每秒从设备(driveexpressed)读取的数据量;kB_wrtn/s:每秒向设备(driveexpressed)写入的数据量;kB_read:读取的总数据量;kB_wrtn:写入的总数量:这些单位都为Kilobytes,即KB
3、指定监控的设备
#iostat-dsda2
-x 参数 该选项将用于显示和io相关的扩展数据,可以获取更详细的数据,
例如:
#iostat-d-x-k14--表示每1秒刷新一次,一共刷新4次。Device:rrqm/swrqm/sr/sw/srkB/swkB/savgrq-szavgqu-szawaitsvctm%utilsda0.001.290.010.810.188.4721.180.0339.955.980.49sda10.000.000.000.000.000.0014.730.009.718.750.00sda20.000.000.000.000.000.0035.350.005.234.600.00sda30.001.290.010.810.188.4721.180.0339.955.980.49Device:rrqm/swrqm/sr/sw/srkB/swkB/savgrq-szavgqu-szawaitsvctm%utilsda0.000.000.000.000.000.000.000.000.000.000.00sda10.000.000.000.000.000.000.000.000.000.000.00sda20.000.000.000.000.000.000.000.000.000.000.00sda30.000.000.000.000.000.000.000.000.000.000.00Device:rrqm/swrqm/sr/sw/srkB/swkB/savgrq-szavgqu-szawaitsvctm%utilsda0.000.000.000.000.000.000.000.000.000.000.00sda10.000.000.000.000.000.000.000.000.000.000.00sda20.000.000.000.000.000.000.000.000.000.000.00sda30.000.000.000.000.000.000.000.000.000.000.00Device:rrqm/swrqm/sr/sw/srkB/swkB/savgrq-szavgqu-szawaitsvctm%utilsda0.003.000.0018.000.0080.008.890.8832.562.724.90sda10.000.000.000.000.000.000.000.000.000.000.00sda20.000.000.000.000.000.000.000.000.000.000.00sda30.003.000.0018.000.0080.008.890.8832.562.724.90
输出信息解释:
rrqm/s:每秒这个设备相关的读取请求有多少被Merge了(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge);wrqm/s:每秒这个设备相关的写入请求有多少被Merge了。r/s:Thenumberofreadrequeststhatwereissuedtothedevicepersecond每秒发出的读取请求的数量w/s:Thenumberofwriterequeststhatwereissuedtothedevicepersecond没面发出的写入请求的数量rkB/s:Thenumberofkilobytesreadfromthedevicepersecond以千字节每秒从设备读取数wkB/s:Thenumberofkilobyteswrittentothedevicepersecond.以千字节每秒从设备写入取数avgrq-sz平均请求扇区的大小avgqu-sz是平均请求队列的长度。毫无疑问,队列长度越短越好。await:每一个IO请求的处理的平均时间(单位是微秒毫秒)。这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。这个时间包括了队列时间和服务时间,也就是说,一般情况下,await大于svctm,它们的差值越小,则说明队列时间越短,反之差值越大,队列时间越长,说明系统出了问题。svctm表示平均每次设备I/O操作的服务时间(以毫秒为单位)。如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长,系统上运行的应用程序将变慢。%util:这个值越小越好,在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util=0.8/1=80%,所以该参数暗示了设备的繁忙程度。一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。rsec/s:每秒读取的扇区数;wsec/:每秒写入的扇区数。
-c 参数,查看cpu信息
#iostat-c12#表示每1秒刷新一次,一共刷新2次Linux2.6.32-431.23.3.el6.x86_64(zookeeper1)05/27/2016_x86_64_(2CPU)avg-cpu:%user%nice%system%iowait%steal%idle0.920.000.270.320.0098.49avg-cpu:%user%nice%system%iowait%steal%idle0.000.000.000.000.00100.00
4、常见用法:
#iostat-d-k110#查看TPS和吞吐量信息#iostat-d-x-k110#查看设备使用率(%util)、响应时间(await)#iostat-c110#查看cpu状态
5、实例分析
#iostat-d-k18Linux2.6.32-504.el6.x86_64(kvm5)05/27/2016_x86_64_(8CPU)Device:tpskB_read/skB_wrtn/skB_readkB_wrtnsda25.413.7293.2016601966416182172Device:tpskB_read/skB_wrtn/skB_readkB_wrtnsda42.000.00104.000104Device:tpskB_read/skB_wrtn/skB_readkB_wrtnsda52.000.00172.000172Device:tpskB_read/skB_wrtn/skB_readkB_wrtnsda34.000.00128.000128Device:tpskB_read/skB_wrtn/skB_readkB_wrtnsda9.000.0016.00016Device:tpskB_read/skB_wrtn/skB_readkB_wrtnsda25.000.0072.00072Device:tpskB_read/skB_wrtn/skB_readkB_wrtnsda31.000.0080.00080Device:tpskB_read/skB_wrtn/skB_readkB_wrtnsda24.000.0092.00092以上可以看到,磁盘每秒传输次数平均约30,每秒磁盘读取较少,写入较多,约为100kB#iostat-d-k-x15Linux2.6.32-504.el6.x86_64(kvm5)05/27/2016_x86_64_(8CPU)Device:rrqm/swrqm/sr/sw/srkB/swkB/savgrq-szavgqu-szawaitr_awaitw_awaitsvctm%utilsda0.001.270.1125.303.7293.207.630.031.0435.760.890.711.81Device:rrqm/swrqm/sr/sw/srkB/swkB/savgrq-szavgqu-szawaitr_awaitw_awaitsvctm%utilsda0.007.000.0032.000.00132.008.250.123.840.003.841.755.60Device:rrqm/swrqm/sr/sw/srkB/swkB/savgrq-szavgqu-szawaitr_awaitw_awaitsvctm%utilsda0.007.000.0058.000.00420.0014.480.030.600.000.600.593.40Device:rrqm/swrqm/sr/sw/srkB/swkB/savgrq-szavgqu-szawaitr_awaitw_awaitsvctm%utilsda0.000.000.0027.000.0076.005.630.010.370.000.370.330.90Device:rrqm/swrqm/sr/sw/srkB/swkB/savgrq-szavgqu-szawaitr_awaitw_awaitsvctm%utilsda0.000.000.005.000.0032.0012.800.024.800.004.804.802.40以上可以看到,磁盘的平均响应时间较小,为0,磁盘使用率平均为3.0左右,比较小。
二、iotop工具
1、介绍
iotop命令是专门显示硬盘IO的命令,界面风格类似top命令。这个命令只有在kernelv2.6.20及以后的版本中才有。
2、安装
#yuminstalliotop-y
3、实例
#iotop显示如下,可以看到有一个进程,io占用比较多TotalDISKREAD:6.42M/s|TotalDISKWRITE:0.00B/sTIDPRIOUSERDISKREADDISKWRITESWAPINIO>COMMAND1476be/4root6.42M/s0.00B/s0.00%57.63%java-Djava.awt.headless=true-Djava.net.preferIPv4Stack=true-server-Xm~2.5.4-SNAPSHOT-FERDI/lib/stax2-api-3.1.1.jar:/root/dubbo-monitor-simple-21475be/4root0.00B/s92.21K/s0.00%0.00%java-Djava.awt.headless=true-Djava.net.preferIPv4Stack=true-server-Xm~2.5.4-SNAPSHOT-FERDI/lib/stax2-api-3.1.1.jar:/root/dubbo-monitor-simple-21455be/4root0.00B/s7.68K/s0.00%0.00%java-Dzookeeper.log.dir=.-Dzookeeper.root.logger=INFO,CONSOLE-cp/usr/~per.server.quorum.QuorumPeerMain/usr/local/zookeeper/bin/../conf/zoo.cfg1be/4root0.00B/s0.00B/s0.00%0.00%init2be/4root0.00B/s0.00B/s0.00%0.00%[kthreadd]3rt/4root0.00B/s0.00B/s0.00%0.00%[migration/0]4be/4root0.00B/s0.00B/s0.00%0.00%[ksoftirqd/0]5rt/4root0.00B/s0.00B/s0.00%0.00%[stopper/0]6rt/4root0.00B/s0.00B/s0.00%0.00%[watchdog/0]7rt/4root0.00B/s0.00B/s0.00%0.00%[migration/1]8rt/4root0.00B/s0.00B/s0.00%0.00%[stopper/1]9be/4root0.00B/s0.00B/s0.00%0.00%[ksoftirqd/1]10rt/4root0.00B/s0.00B/s0.00%0.00%[watchdog/1]11be/4root0.00B/s0.00B/s0.00%0.00%[events/0]12be/4root0.00B/s0.00B/s0.00%0.00%[events/1]13be/4root0.00B/s0.00B/s0.00%0.00%[cgroup]14be/4root0.00B/s0.00B/s0.00%0.00%[khelper]15be/4root0.00B/s0.00B/s0.00%0.00%[netns]16be/4root0.00B/s0.00B/s0.00%0.00%[async/mgr]17be/4root0.00B/s0.00B/s0.00%0.00%[pm]18be/4root0.00B/s0.00B/s0.00%0.00%[sync_supers]19be/4root0.00B/s0.00B/s0.00%0.00%[bdi-default]20be/4root0.00B/s0.00B/s0.00%0.00%[kintegrityd/0]21be/4root0.00B/s0.00B/s0.00%0.00%[kintegrityd/1]
2、参数
Options:--versionshowprogram'sversionnumberandexit-h,--helpshowthishelpmessageandexit-o,--onlyonlyshowprocessesorthreadsactuallydoingI/O-b,--batchnon-interactivemode-nNUM,--iter=NUMnumberofiterationsbeforeending[infinite]-dSEC,--delay=SECdelaybetweeniterations[1second]-pPID,--pid=PIDprocesses/threadstomonitor[all]-uUSER,--user=USERuserstomonitor[all]-P,--processesonlyshowprocesses,notallthreads-a,--accumulatedshowaccumulatedI/Oinsteadofbandwidth-k,--kilobytesusekilobytesinsteadofahumanfriendlyunit-t,--timeaddatimestamponeachline(implies--batch)-q,--quietsuppresssomelinesofheader(implies--batch)
二、vmstat 工具
vmstat是一个即时显示内存使用情况的工具,一般系统自带的都有
vmstat 使用方法:
vmstat[-V][-n][delay[count]]-V显示vmstat的版本;-ncausestheheadersnottobereprintedregularly.-a显示所有激活和未激活内存的状态;printinactive/activepagestats.-d显示硬盘统计信息;printsdiskstatistics-D显示硬盘分区表;printsdisktable-p显示硬盘分区读写状态等;printsdiskpartitionstatistics-s显示内存使用情况;printsvmtable-mprintsslabinfo-S定义单位,kKdelay是两次刷新时间间隔;单位体积:k:1000K:1024m:1000000M:1048576(默认是K)count刷新次数;
一个实例:
#vmstat35##表示每3秒更新一次输出信息,连续统计5次结束。procs-----------memory-------------swap-------io------system-------cpu-----rbswpdfreebuffcachesisobiboincsussyidwast510824716481490687528352000120116186600300824717601490687528352000727965215027417206300300824719361490687528352000647956115027516206400500824719361490687528352000887978415014617206200
解释:
r:Thenumberofprocesseswaitingforruntime.等待运行时间的进程数,即等待的进程数、b:Thenumberofprocessesinuninterruptiblesleep.在等待io的进程数swpd:虚拟内存的使用量free:空闲内存量buff:缓冲区中的内存cache:被用来做为高速缓存的内存数si:从磁盘交换到内存的交换页数量,单位:KB/秒。so:从内存交换到磁盘的交换页数量,单位:KB/秒。bi:发送到块设备的块数,单位:块/秒。bo:从块设备接收到的块数,单位:块/秒。in:每秒的中断数,包括时钟中断。cs:每秒的环境(上下文)转换次数。us:用户进程使用的时间。以百分比表示。sy:系统进程使用的时间。以百分比表示。id:中央处理器的空闲时间。以百分比表示。wa:io等待时间st:Timestolenfromavirtualmachine
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。