如何查看linux服务器磁盘的I O性能,Linux磁盘I/O性能分析及iostat使用

8e046778a02aeb13f3005220213f25b7.png

有时候我们觉得得系统响应"慢"或者传数据很"慢",这个"慢"可能是多方面原因导致的,如CPU利用率高、网络差、系统平均负载高甚至是磁盘已经损坏。本文主要是考虑在系统性能出问题时,如果分析磁盘I/O这个十分重要的指标。

iostat 命令可以查看CPU利用率和磁盘性能相关数据。命令的使用方法很简单,但是要关注哪些报告值,报告的各个含义是什么,这个是必须要搞清楚的。一、iostat命令使用

1.1 命令默认报告默认报告CPU和磁盘的使用情况

以 blocks/s(块每秒)的形式报告利用率

默认只报告一次使用情况。可通过传参修改报告时间和次数。如: iostat 2 3,这表示每2秒报告一次,共计报告3次

1.2 常用选项-c 只显示CPU利用率-d 只显示磁盘利用率-p 可以报告出每块磁盘的每个分区的使用情况-k 以 字节/秒 为单位显示磁盘利用率报告-x 显示扩张统计-n 显示NFS(network filesystem)报告

1.3 各个报告结果字段含义磁盘相关字段(磁盘性能指标)tps 每秒I/O数(即IOPS。磁盘连续读和连续写之和)Blk_read/s 每秒从设备读取的数据大小,单位是block/s(块每秒)Blk_wrtn/s 每秒写入设备的数量,单位是block/sBlk_read 从磁盘读出的块的总数Blk_wrtn 写入磁盘的块的总数kB_read/s 每秒从磁盘读取数据大小,单位KB/skB_wrtn/s 每秒写入磁盘的数据的大小,单位KB/skB_read 从磁盘读出的数据总数,单位KBkB_wrtn 写入磁盘的的数据总数,单位KBrrqm/s 每秒合并到设备的读取请求数wrqm/s 每秒合并到设备的写请求数r/s 每秒向磁盘发起的读操作数。w/s 每秒向磁盘发起的写操作数。rsec/s 每秒从设备读取的扇区数量。wsec/s 每秒向设备写入的扇区数量。avgrq-sz I/O 请求的平均大小,以扇区为单位avgqu-sz 向设备发起的I/O 请求队列的的平均队列长度await I/O 请求的平均等待时间,单位为毫秒。这个时间包括请求队列(这个概念很重要)消耗的时间和为每个请求服务的时间svctm I/O 请求的平均服务时间,单位为毫秒(这个数据不可信!

1.4 常用组合iostat -d -xiostat -d 2 10iostat -d -x 2 10iostat -d -x -k 2 10

命令后的第一个数字表示报告时间间隔,第二个数字表示报告总次数。我一般用的多的是iostat -d -x,因为这个报告的数据时从系统开机时的一个整体情况,如果加了时间和次数后,后续报告的数据就是设置的时间内磁盘使用情况变化。如果需要一直观察的话,可以使用:iostat -d -x

如:[root@master dev]# iostat -d -x 2 2Linux 2.6.32-431.el6.x86_64 (master) 02/22/2017 _x86_64_ (2 CPU)Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %utilscd0 0.01 0.00 0.01 0.00 0.16 0.00 29.65 0.00 6.35 6.18 0.00sda 0.39 0.51 1.05 0.31 37.88 6.59 32.62 0.00 2.53 1.04 0.14Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %utilscd0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00sda 0.00 0.50 0.00 0.50 0.00 7.96 16.00 0.01 16.00 16.00 0.80二、磁盘I/O性能监控指标

磁盘I/O性能主要监控的指标有以下几类:磁盘吞吐量

IOPS

数据平均大小

磁盘活动时间比

服务时间

I/O 等待队列长度

等待时间

1. 磁盘吞吐量。硬盘传输数据的能力,传输数据是读、写数据之和。当传输大块不连续数据时,该值可做参考。吞吐量计算公式:I/O吞吐量 = IOPS * 平均I/O数据大小(size)

注意:IOPS就是tps,即每秒I/O数。从公式可以看出,IOPS和平均数据大大小的值越大,吞吐量则越大。

2. IOPS。磁盘每秒的I/O数(读、写之和)。当传输小块不连续数据时,该值可作为参考对象。在iostat报告中,tps=r/s+w/s

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

备注:iostat命令输出的平均尺寸是以扇区为单位的,因此,转换成字节时,应该用: 512 x 扇区数

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

5. 服务时间。指磁盘读或写操作执行的时间,包括寻道,旋转时延,和数据传输等时间。其大小一般和磁盘性能有关,CPU/ 内存的负荷也会对其有影响,请求过多也会间接导致服务时间的增加。如果该值持续超过 20ms,一般可考虑会对上层应用产生影响。

6. I/O 等待队列长度。对用iostat输出的avgqu-sz。指待处理的 I/O 请求的数目,如果 I/O 请求压力持续超出磁盘处理能力,该值将增加。如果单块磁盘的队列长度持续超过 2,一般认为该磁盘存在 I/O 性能问题。需要注意的是,如果该磁盘为磁盘阵列虚拟的逻辑驱动器,需要再将该值除以组成这个逻辑驱动器的实际物理磁盘数目,以获得平均单块硬盘的 I/O 等待队列长度。

7. 等待时间。对应iostat输出的await字段。指磁盘读或写操作等待执行的时间,即在队列中排队的时间。如果 I/O 请求持续超出磁盘处理能力,意味着来不及处理的 I/O 请求不得不在队列中等待较长时间。

这里我重点讲下吞吐量和IOPS(tps)。为什么呢?因为不同的业务场景,所需要的磁盘性能侧重点不同。对于磁盘随机读写频繁的业务,比如图片存取、数据库、邮件服务器等,此类业务吗,IOPS才是关键点。对于顺序读写频繁的业务,需要传输大块数据的,如视频点播、文件同步,关注的是磁盘的吞吐量。——如果平均 I/O 数据尺寸小于 32K,可认为磁盘使用模式是以随机存取为主(关注IOPS);如果平均每次 I/O 数据尺寸大于 32K,可认为磁盘使用模式以顺序存取为主(关注吞吐量)。  对上述论述可以做一个测试:写10MB文件,一个做法是一次写1024B,写10000次。第二个是一次写1B,写10240000次,测试结果如下:[root@master dev]# dd if=/dev/zero of=/dev/null bs=1024 count=1000010000+0 records in10000+0 records out10240000 bytes (10 MB) copied, 0.00982995 s, 1.0 GB/s[root@master dev]# dd if=/dev/zero of=/dev/null bs=1 count=1024000010240000+0 records in10240000+0 records out10240000 bytes (10 MB) copied, 7.95257 s, 1.3 MB/s

从结果看出,写大块数据和写小块数据,吞吐量是不一样的。耗时相差也是很大。

在进行磁盘性能分析时要注意下各个指标之间的关系,结合iostat是要注意换算。三、 磁盘性能怎么解决?raid

磁盘缓存、缓冲(内核层面,页高速缓存、缓冲)

利用现有的一些开源软件缓存数据,如redis。其实牵扯到缓存的话,就是让程序直接和内存打交道,尽量避免去直接访问磁盘。但是有的情况下,直接I/O(跳过缓存)又是业务所需求的,关于这点,具体问题具体分析

良好的数据结构设计,尽量减少磁盘的访问次数,如B+树

觉得本文对你有帮助?请分享给更多人

OneAndZero

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值