iostat vmstat sar命令详解文档格式.docx

上传人:b****5 文档编号:19222570 上传时间:2023-01-04 格式:DOCX 页数:11 大小:138KB
下载 相关 举报
iostat vmstat sar命令详解文档格式.docx_第1页
第1页 / 共11页
iostat vmstat sar命令详解文档格式.docx_第2页
第2页 / 共11页
iostat vmstat sar命令详解文档格式.docx_第3页
第3页 / 共11页
iostat vmstat sar命令详解文档格式.docx_第4页
第4页 / 共11页
iostat vmstat sar命令详解文档格式.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

iostat vmstat sar命令详解文档格式.docx

《iostat vmstat sar命令详解文档格式.docx》由会员分享,可在线阅读,更多相关《iostat vmstat sar命令详解文档格式.docx(11页珍藏版)》请在冰豆网上搜索。

iostat vmstat sar命令详解文档格式.docx

idle小于70%IO压力就较大了,一般读取速度有较多的wait.

同时可以结合vmstat查看查看b参数(等待资源的进程数)和wa参数(IO等待所占用的CPU时间的百分比,高过30%时IO压力高)

iostat输出解析

1./proc/partitions

对于kernel2.4,iostat的数据的主要来源是/proc/partitions,而对于kernel2.6,数据主要来自/proc/diskstats或/sys/block/[block-device-name]/stat。

先看看/proc/partitions中有些什么。

#cat/proc/partitions

majorminor#blocksnameriormergersectrusewiowmergewsectwuserunninguseaveq

3019535040hda125243112734437134436012941255343084341097290-11580072028214662

317172991hda1137116814000000140140

321hda200000000000

355116671hda5100477665620112300610650

36265041hda65189246162770257337529056143880046520146650

376980211hda71188930475338890340740126832215827937695338005093501294120

major:

主设备号。

3代表hda。

minor:

次设备号。

7代表No.7分区。

#blocks:

设备总块数(1024bytes/block)。

19535040*1024=>

20003880960(bytes)~2G

name:

设备名称。

如hda7。

rio:

完成的读I/O设备总次数。

指真正向I/O设备发起并完成的读操作数目,

也就是那些放到I/O队列中的读请求。

注意非常多进程发起的读操作

(read())非常可能会和其他的操作进行merge,不一定每个read()调用

都引起一个I/O请求。

rmerge:

进行了merge的读操作数目。

rsect:

读扇区总数(512bytes/sector)

ruse:

从进入读队列到读操作完成的时间累积(毫秒)。

上面的例子显示从开机

开始,读hda7操作共用了约340秒。

wio:

完成的写I/O设备总次数。

wmerge:

进行了merge的写操作数目。

wsect:

写扇区总数

wuse:

从进入写队列到写操作完成的时间累积(毫秒)

running:

已进入I/O请求队列,等待进行设备操作的请求总数。

上面的例子显

示hda7上的请求队列长度为0。

use:

扣除重叠等待时间的净等待时间(毫秒)。

一般比(ruse+wuse)要小。

如5个读请求同时等待了1毫秒,那么ruse值为5ms,而use值为

1ms。

use也能理解为I/O队列处于不为空状态的总时间。

hda7的I/O

队列非空时间为509秒,约合8分半钟。

aveq:

在队列中总的等待时间累积(毫秒)(约等于ruse+wuse)。

为什么是“约等于”而不是等于呢?

让我们看看aveq,ruse,wuse的计算方式,这些量一般是在I/O完成后进行更新的:

aveq+=in-flight*(now-disk->

stamp);

ruse+=jiffies-req->

start_time;

//如果是读操作的话

wuse+=jiffies-req->

//如果是写操作的话

注意aveq计算中的in-flight,这是当前还在队列中的I/O请求数目。

这些I/O还没有完成,所以不能计算到ruse或wuse中。

理论上,只有在I/O全部完成后,aveq才会等于ruse+wuse。

举一个例子,假设初始时队列中有三个读请求,每个请求需要1秒钟完成。

在1.5秒这一时刻,aveq和ruse各是多少呢?

ruse=1//因为此时只有一个请求完成

aveq=3*1+2*0.5=4//因为第二个请求刚发出0.5秒钟,另更有一个请求在队列中呢。

//这样第一秒钟时刻有3个in-flight,而1.5秒时刻有2个in-flight.

如果三个请求全部完成后,ruse才和aveq相等:

ruse=1+2+3=6

aveq=1+2+3=6

周详说明请参考linux/drivers/block/ll_rw_blk.c中的end_that_request_last()和disk_round_stats()函数。

vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。

这个命令是我查看Linux/Unix最喜爱的命令,一个是Linux/Unix都支持,二是相比top,我可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)。

一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数,如:

root@ubuntu:

~#vmstat21

procs-----------memory-------------swap-------io-----system------cpu----

rbswpdfreebuffcachesisobiboincsussyidwa

10034984723158363819540000120001000

2表示每个两秒采集一次服务器状态,1表示只采集一次。

实际上,在应用过程中,我们会在一段时间内一直监控,不想监控直接结束vmstat就行了,例如:

~#vmstat2

10034998403158363819660000120001000

00034995843158363819660000088158001000

00034997083158363819660000286162001000

000349970831583638196600001081151001000

10034997323158363819660000283154001000

这表示vmstat每2秒采集数据,一直采集,直到我结束程序,这里采集了5次数据我就结束了程序。

好了,命令介绍完毕,现在开始实战讲解每个参数的意思。

表示运行队列(就是说多少个进程真的分配到CPU),我测试的服务器目前CPU比较空闲,没什么程序在跑,当这个值超过了CPU数目,就会出现CPU瓶颈了。

这个也和top的负载有关系,一般负载超过了3就比较高,超过了5就高,超过了10就不正常了,服务器的状态很危险。

top的负载类似每秒的运行队列。

如果运行队列过大,表示你的CPU很繁忙,一般会造成CPU使用率很高。

表示阻塞的进程,这个不多说,进程阻塞,大家懂的。

swpd 

虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器。

free 

空闲的物理内存的大小,我的机器内存总共8G,剩余3415M。

buff 

Linux/Unix系统是用来存储,目录里面有什么内容,权限等的缓存,我本机大概占用300多M

cache 

cache直接用来记忆我们打开的文件,给文件做缓冲,我本机大概占用300多M(这里是Linux/Unix的聪明之处,把空闲的物理内存的一部分拿来做文件和目录的缓存,是为了提高程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。

si 

每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。

我的机器内存充裕,一切正常。

so 

每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上。

bi 

块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte,我本机上没什么IO操作,所以一直是0,但是我曾在处理拷贝大量数据(2-3T)的机器上看过可以达到140000/s,磁盘写入速度差不多140M每秒

bo 

块设备每秒发送的块数量,例如我们读取文件,bo就要大于0。

bi和bo一般都要接近0,不然就是IO过于频繁,需要调整。

in 

每秒CPU的中断次数,包括时间中断

cs 

每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。

系统调用也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源,也要尽量避免频繁调用系统函数。

上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用,是不可取的。

us 

用户CPU时间,我曾经在一个做加密解密很频繁的服务器上,可以看到us接近100,r运行队列达到80(机器在做压力测试,性能表现不佳)。

sy 

系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁。

id 

空闲CPU时间,一般来说,id+us+sy=100,一般我认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率。

wt 

等待IOCPU时间。

linuxsar命令详解

sar(SystemActivityReporter系统活动情况报告)是目前 

Linux 

上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:

文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。

本文主要以CentOS 

6.3x64系统为例,介绍sar命令。

sar命令常用格式

sar[options][-A][-ofile]t[n]

其中:

t为采样间隔,n为采样次数,默认值是1;

-ofile表示将命令结果以二进制格式存放在文件中,file是文件名。

options为命令行选项,sar命令常用选项如下:

-A:

所有报告的总和

-u:

输出CPU使用情况的统计信息

-v:

输出inode、文件和其他内核表的统计信息

-d:

输出每一个块设备的活动信息

-r:

输出内存和交换空间的统计信息

-b:

显示I/O和传送速率的统计信息

-a:

文件读写情况

-c:

输出进程统计信息,每秒创建的进程数

-R:

输出内存页面的统计信息

-y:

终端设备活动情况

-w:

输出系统交换活动信息

1.CPU资源监控

例如,每10秒采样一次,连续采样3次,观察CPU的使用情况,并将采样结果以二进制形式存入当前目录下的文件test中,需键入如下命令:

sar-u-otest103

屏幕显示如下:

17:

06:

16CPU%user%nice%system%iowait%steal%idle

26all0.000.000.200.000.0099.80

36all0.000.000.200.000.0099.80

46all0.000.000.100.000.0099.90

Average:

all0.000.000.170.000.0099.83

输出项说明:

CPU:

all表示统计信息为所有CPU的平均值。

%user:

显示在用户级别(application)运行使用CPU总时间的百分比。

%nice:

显示在用户级别,用于nice操作,所占用CPU总时间的百分比。

%system:

在核心级别(kernel)运行所使用CPU总时间的百分比。

%iowait:

显示用于等待I/O操作占用CPU总时间的百分比。

%steal:

管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟CPU的百分比。

%idle:

显示CPU空闲时间占用CPU总时间的百分比。

1.若%iowait的值过高,表示硬盘存在I/O瓶颈

2.若%idle的值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量

3.若%idle的值持续低于1,则系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。

如果要查看二进制文件test中的内容,需键入如下sar命令:

sar-u-ftest

2.inode、文件和其他内核表监控

例如,每10秒采样一次,连续采样3次,观察核心表的状态,需键入如下命令:

sar-v103

10:

49dentunusdfile-nrinode-nrpty-nr

5963015664120374

11:

0963015664120374

1963015664120374

63015664120374

dentunusd:

目录高速缓存中未被使用的条目数量

file-nr:

文件句柄(filehandle)的使用数量

inode-nr:

索引节点句柄(inodehandle)的使用数量

pty-nr:

使用的pty数量

3.内存和交换空间监控

例如,每10秒采样一次,连续采样3次,监控内存分页:

sar-r103

kbmemfree:

这个值和free命令中的free值基本一致,所以它不包括buffer和cache的空间.

kbmemused:

这个值和free命令中的used值基本一致,所以它包括buffer和cache的空间.

%memused:

这个值是kbmemused和内存总量(不包括swap)的一个百分比.

kbbuffers和kbcached:

这两个值就是free命令中的buffer和cache.

kbcommit:

保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap).

%commit:

这个值是kbcommit与内存总量(包括swap)的一个百分比.

4.内存分页监控

sar-B103

pgpgin/s:

表示每秒从磁盘或SWAP置换到内存的字节数(KB)

pgpgout/s:

表示每秒从内存置换到磁盘或SWAP的字节数(KB)

fault/s:

每秒钟系统产生的缺页数,即主缺页与次缺页之和(major+minor)

majflt/s:

每秒钟产生的主缺页数.

pgfree/s:

每秒被放入空闲队列中的页个数

pgscank/s:

每秒被kswapd扫描的页个数

pgscand/s:

每秒直接被扫描的页个数

pgsteal/s:

每秒钟从cache中被清除来满足内存需要的页个数

%vmeff:

每秒清除的页(pgsteal)占总扫描页(pgscank+pgscand)的百分比

5.I/O和传送速率监控

例如,每10秒采样一次,连续采样3次,报告缓冲区的使用情况,需键入如下命令:

sar-b103

18:

51:

05tpsrtpswtpsbread/sbwrtn/s

150.000.000.000.000.00

251.920.001.920.0022.65

350.000.000.000.000.00

0.640.000.640.007.59

tps:

每秒钟物理设备的I/O传输总量

rtps:

每秒钟从物理设备读入的数据总量

wtps:

每秒钟向物理设备写入的数据总量

bread/s:

每秒钟从物理设备读入的数据量,单位为块/s

bwrtn/s:

每秒钟向物理设备写入的数据量,单位为块/s

6.进程队列长度和平均负载状态监控

例如,每10秒采样一次,连续采样3次,监控进程队列长度和平均负载状态:

sar-q103

19:

25:

50runq-szplist-szldavg-1ldavg-5ldavg-15

26:

0002590.000.000.00

1002590.000.000.00

2002590.000.000.00

02590.000.000.00

runq-sz:

运行队列的长度(等待运行的进程数)

plist-sz:

进程列表中进程(processes)和线程(threads)的数量

ldavg-1:

最后1分钟的系统平均负载(Systemloadaverage)

ldavg-5:

过去5分钟的系统平均负载

ldavg-15:

过去15分钟的系统平均负载

7.系统交换活动信息监控

例如,每10秒采样一次,连续采样3次,监控系统交换活动信息:

sar- 

W103

39:

50pswpin/spswpout/s

40:

000.000.00

100.000.00

200.000.00

0.000.00

pswpin/s:

每秒系统换入的交换页面(swappage)数量

pswpout/s:

每秒系统换出的交换页面(swappage)数量

8.设备使用情况监控

例如,每10秒采样一次,连续采样3次,报告设备使用情况,需键入如下命令:

#sar-d103–p

45:

54 

DEV 

tps 

rd_sec/s 

wr_sec/s 

avgrq-sz 

avgqu-sz 

await 

svctm 

%util

46:

04 

scd0 

0.00 

0.00

sda 

vg_livedvd-lv_root 

vg_livedvd-lv_swap 

参数-p可以打印出sda,hdc等磁盘设备名称,如果不用参数-p,设备节点则有可能是dev8-0,dev22-0

tps:

每秒从物理磁盘I/O的次数.多个逻辑请求会被合并为一个I/O磁盘请求,一次传输的大小是不确定的.

rd_sec/s:

每秒读扇区的次数.

wr_sec/s:

每秒写扇区的次数.

avgrq-sz:

平均每次设备I/O操作的数据大小(扇区).

avgqu-sz:

磁盘请求队列的平均长度.

await:

从请求磁盘操作到系

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1