使用iostat了解磁盘IO开销数据,排查系统性能瓶颈

95 次查看 0 条评论

有时我们会觉得系统响应慢,传输数据慢,这个“慢”可能是多方面的原因导致的。如CPU利用率高、网络差、系统平均负载高甚至磁盘损坏。对此,系统性能出问题时,磁盘I/O是一个值得重点分析的指标。

1、影响磁盘性能主要指标

1.1、磁盘吞吐率

主要体现在磁盘传输数据的能力。传输数据是读、写数据之和。当传输大块不连续数据时,该值可参考为:

I/O吞吐量 = IOPS x 平均I/O数据块大小

注:IOPS指的是即每秒I/O数请求数,对应iostat输出中的tps参数值。

从公式可以看出,IOPS和平均数据块大小越大,则磁盘吞吐量越大。

1.2、IOPS

所谓IOPS就是磁盘每秒的 I/0 数(读、写之和)。当传输小块不连续数据时,该值可作为参考对象。

iostat报告中:tps = r/s + w/s。

1.3、数据平均大小

平均I/O数据尺寸为吞吐量除以I/O数目,该指标对揭示磁盘使用模式有重要意义。一般来说,如果平均I/O数据尺寸小于32KB,可以认为磁盘使用模式以随机存取为主,否则可以认为磁盘使用模式以顺序存取为主。

1.4、磁盘活动时间比

该值对应iostat输出的%util字段,表示磁盘处于活动时间的百分比,及磁盘利用率。磁盘在数据传输和处理命令(如寻道)处于活动状态。磁盘利用率与资源争用成度成正比,与性能成反比。也就是说磁盘你利用率越高,资源争用就越严重,性能也就越差,响应时间也就越长。一般来说磁盘利用率超过70%,应用程序进程将花费较长时间等待I/O完成,因为这时绝大多数进程在等待过程中将被阻塞或休眠。

1.5、服务时间

指磁盘读或写操作执行的时间,包括寻道、旋转时延和数据传输等时间。其大小一般和磁盘性能有关,CPU、内存的负荷也会对其有影响。

1.6、I/O 等待队列长度

指待处理的I/0请求数目。对应iostat输出的avgqu-sz值。如果I/O请求压力持续超出磁盘处理能力,该值将增加。如果单块磁盘的队列长度持续超过2,一般认为磁盘存在I/O性能问题。参考该值时还需注意考虑磁盘阵列的情况。

1.7、等待时间

值磁盘读或写操作等待执行的时间,及在队列中排队的时间。对应iostat输出中的await字段。

2、常用使用方法

# 安装软件包
yum install -y sysstat
iostat
# 查看详细数据
iostat -x
# 动态查看(每1秒更新数据)
iostat -x -d 1

15491-je4xt6i73b.png

3、如何解决磁盘性能瓶颈

  1. 选用适当的RAID级别组建磁盘阵列,有条件尽量选择RAID10;
  2. 磁盘缓存、缓冲(内核层面,页高速缓存、缓冲);
  3. 利用一些开源的软件加入缓存中间件,如Redis,利用内存的高速性能优势;
  4. 网络I/O优化,使用CDN之类的加速缓存,将压力分散到更多的服务器处理。
Linux CentOS

暂无评论