暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

「测试」工具美眉之性能指标IO/DISK

将咖啡转化为程序的工具人 2021-09-08
789

01

性能瓶颈之IO

一个系统经过多项优化以后,瓶颈往往落在数据库的读写上。而数据库经过多种优化以后,瓶颈最终会落到 IO 。今天工具美眉跟大家一起聊聊简单的IO性能相关的指标。


02

逻辑IO、VM、物理IO

如果对IO进行分层,可以分为上中下三层,分别是逻辑IO、VM、物理IO。

在逻辑IO层,有常见的文件管理系统,主要是对数据存放和读取的空间的管理。buffer cache则解决了数据缓冲的问题,对读进行cache,对写进行buffer,去合并一些IO的操作,降低IO的开销。


对应上图的 Vol Mgmt 则是VM管理,VM 其实跟 IO 没有必然联系。它是处于文件系统和磁盘(存储)中间的一层。VM 屏蔽了底层磁盘对上层文件系统的影响 。当磁盘空间不足时,对文件系统来说没有任何影响,VM 则可以实现动态扩展。另外, VM 也可以把多个磁盘合并成一个磁盘,对文件系统呈现统一的地址空间。


在物理IO层,对应上图的 Device Driver 、IO Channel 和 Disk Device,数据最终会放在这里,因此,效率、数据安全、容灾是这层需要考虑的问题。而提高存储的性能,则可以直接提高物理 IO 的性能。


03

IO请求的两阶段

IO请求的两个阶段可以分为资源等待阶段和使用资源的阶段。IO请求一般需要请求特殊的资源(如磁盘、RAM、文件),当资源被上一个使用者使用没有被释放时,IO请求就会被阻塞,直到能够使用这个资源,开始数据的接收和发送。


04

常见的IO性能指标

下面是工具美眉整理的IO磁盘相关的性能指标:

指标

描述

tps

每秒IO请求个数

rrqm/s

每秒合并读操作的次数

wrqm/s

每秒合并写操作的次数

r/s

每秒读操作的次数

w/s

每秒写操作的次数

rkB/s

每秒读取的KB字节数

wkB/s

每秒写入的KB字节数

avgrq-sz

每个IO的平均扇区数,即所有请求的平均大小,以扇区(512字节)为单位

avgqu-sz

平均I/O队列长度

r_await

每个读操作平均所需要的时间,不仅包括硬盘设备读操作的时间,也包括在内核队列中的时间。

w_await

每个写操平均所需要的时间,不仅包括硬盘设备写操作的时间,也包括在队列中等待的时间。

svctm

平均每次设备I/O操作的服务时间 (毫秒)

await

平均每次设备I/O操作的等待时间 (毫秒)

%util

工作时间或者繁忙时间占总时间的百分比


05

如何分析异常指标

svctm反应了磁盘的负载情况,如果该项大于15ms,并且util%接近100%,那就说明,磁盘现在是整个系统性能的瓶颈了。

await值的大小一般取决svctm的值和I/O队列长度以及I/O请求模式,如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长,系统上运行的应用程序将变慢,此时可以通过更换更快的硬盘来解决问题。


%util项的值也是衡量磁盘I/O的一个重要指标,如果%util接近100%,表示磁盘产生的I/O请求太多,I/O系统已经满负荷的在工作,该磁盘可能存在瓶颈。


在某些场景下,我们需要找到占用IO特别大的进程,然后关闭它,需要知道PID或者进程名称,这就需要用到iotop。iotop是一个检测Linux系统进程IO的工具。


扫码关注我们|将咖啡转化为程序的工具人

如果这篇文章对你有所帮助,请记得点赞和转发哦👍

文章转载自将咖啡转化为程序的工具人,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论