sysstat --iostat 检查磁盘性能

sysstat version 7.0.2
--iostat 检查磁盘性能
 
(CentOS:man iostat查看使用手册)


1、在Web、Mail、DBMS等小文件频繁读写的环境下,性能主要由IOPS决定。在视频、测绘等大文件连续读写的环境下,性能主要由带宽决定。可见,在不同的应用方式中,需要考察的侧重点也不同。对NAS产品来说,主要性能指数也是两个:OPS和ORT,分别代表每秒可响应的并发请求数和每个请求的平均反应时间。对磁带存储设备来说,单个磁带驱动器的读写速度是最重要的性能指标。
2、Random的worklaod环境下,不依赖于数据大小的多少,更多依赖的是磁盘的IOPS数,Web、Mail和DBMS服务就是典型的Random workload,I/O 请求内容都很小,Random workload是同时每秒会有更多的请求数产生,所以,磁盘的IOPS指标是关键。

     评估 IOPS 的效能,可用每秒读写I/O 字节数除以每秒读写IOPS 数得出,比如:
         rkB/s 除以 r/s = KB per I/O
         wkB/s 除以 w/s = KB per I/O

iostat命令详解

 

iostat [ -c | -d ] [ -k ] [ -t ] [ -V ] [ -x [ device ] ] [ interval   [ count ] ]

基本语法 iostat <options> interval count

option - 让你指定所需信息的设备,像磁盘、cpu或者终端(-d , -c , -t or -tdc ) 。x 选项给出了完整的统计结果。 iostat 的默认参数是tdc(terminal, disk, and CPU)。如果任何其他的选项被指定,这个默认参数将被完全替代。

interval – 统计运行的间隔时间(秒),    count – 统计运行的次数

其中,-c为汇报CPU的使用情况;-d为汇报磁盘的使用情况;-k表示每秒按kilobytes字节显示数据;-t为打印汇报的时间;-v表示打印出版本信息和用法;-x device指定要统计的设备名称,默认为所有的设备;

 

iostat -d -k -t 2

Device: 显示磁盘名称

tps: 表示每秒钟输出到物理磁盘的传输次数。一次传输就是一个对物理磁盘的 I/O 请求。多个逻辑请求可被并为对磁盘的一个单一 I/O 请求。传输具有中等的大小。

kB_read/s: 每秒从磁盘读取的数据量,单位为KB。

kB_wrtn/s: 每秒从写入磁盘的数据量,单位为KB。

Kb_read: 读取的 KB 总数。

Kb_wrtn: 写入的 KB 总数

 

iostat -x 1 10

   rrqm/s:    每秒进行 merge 的读操作数目。即 delta(rmerge)/s
wrqm/s:   每秒进行 merge 的写操作数目。即 delta(wmerge)/s
r/s:            每秒完成的读 I/O 设备次数。即 delta(rio)/s
w/s:          每秒完成的写 I/O 设备次数。即 delta(wio)/s
rsec/s:     每秒读扇区数。即 delta(rsect)/s
wsec/s: 每秒写扇区数。即 delta(wsect)/s
rkB/s:       每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。(需要计算)
wkB/s:     每秒写K字节数。是 wsect/s 的一半。(需要计算)
avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。delta(rsect+wsect)/delta(rio+wio)
avgqu-sz: 平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。
await:     平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
svctm:   平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio)
%util:      一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒)

 

 

svctm 一 般要小于 await (因为同时等待的请求的等待时间被重复计算了),svctm 的大小一般和磁盘性能有关,CPU/内存的负荷也会对其有影响,请求过多也会间接导致 svctm 的增加。await 的大小一般取决于服务时间(svctm) 以及 I/O 队列的长度和 I/O 请求的发出模式。如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;如果 await 远大于 svctm,说明 I/O 队列太长,应用得到的响应时间变慢,如果响应时间超过了用户可以容许的范围,这时可以考虑更换更快的磁盘,调整内核 elevator 算法,优化应用,或者升级 CPU。
队列长度(avgqu-sz)也可作为衡量系统 I/O 负荷的指标,但由于 avgqu-sz 是按照单位时间的平均值,所以不能反映瞬间的 I/O 洪水。

如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘 可能存在瓶颈。

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

猜你喜欢

转载自wubolu.iteye.com/blog/866999