IOPS 与吞吐量的关系:每秒 I/O 吞吐量= IOPS* 平均 I/O SIZE。
从公式可以看出: I/O SIZE 越大,IOPS 越高,那么每秒 I/O 的吞吐量就越高。因此,我们会认为 IOPS 和吞吐量的数值越高越好。实际上,对于一个磁盘来讲,这两个参数均有其最大值,而且这两个参数也存在着一定的关系。
对于机械磁盘来说一个完整的IO操作是这样进行的:
当控制器对磁盘发出一个IO操作命令的时候,磁盘的驱动臂(Actuator Arm)带读写磁头(Head)离开着陆区(Landing Zone,位于内圈没有数据的区域),移动到要操作的初始数据块所在的磁道(Track)的正上方,这个过程被称为寻址(Seeking),对应消耗的时间被称为寻址时间(Seek Time)
但是找到对应磁道还不能马上读取数据,这时候磁头要等到磁盘盘片(Platter)旋转到初始数据块所在的扇区(Sector)落在读写磁头正上方的之后才能开始读取数据,在这个等待盘片旋转到可操作扇区的过程中消耗的时间称为旋转延时(Rotational Delay)
接下来就随着盘片的旋转,磁头不断的读/写相应的数据块,直到完成这次IO所需要操作的全部数据,这个过程称为数据传送(Data Transfer),对应的时间称为传送时间(Transfer Time)。
完成这三个步骤之后一次IO操作也就完成了。
所以,我们看硬盘厂商的宣传单的时候我们经常能看到3个参数,分别是:
这三个参数就可以提供给我们计算上述三个步骤的时间:
第一个寻址时间,考虑到被读写的数据可能在磁盘的任意一个磁道,既有可能在磁盘的最内圈(寻址时间最短),也可能在磁盘的最外圈(寻址时间最长),所以在计算中我们只考虑平均寻址时间。
第二个旋转延时,和寻址一样,当磁头定位到磁道之后有可能正好在要读写扇区之上,这时候是不需要额外额延时就可以立刻读写到数据,但是最坏的情况确实要磁盘旋转整整一圈之后磁头才能读取到数据,所以这里我们也考虑的是平均旋转延时。
第三个传送时间,磁盘参数提供我们的最大的传输速度,当然要达到这种速度是很有难度的,但是这个速度却是磁盘纯读写磁盘的速度,因此只要给定了单次 IO的大小,我们就知道磁盘需要花费多少时间在数据传送上,这个时间就是IO Chunk Size / Max Transfer Rate。
现在我们就可以得出这样的计算单次IO时间的公式:
于是我们可以这样计算出IOPS:
FIO是测试IOPS的非常好的工具。
常用参数:
测试用例:
你好,主人。测试计算机性能时,我们需要注意的指标有:
RT:响应时间
TPS:每秒完成的事务数
CPU性能指标:利用率和负载
Mem:内存性能指标,可用物理内存和虚拟内存利用率。
磁盘:磁盘性能指数,磁盘时间,IO等待。
网络:网络指数、带宽利用率和任务队列长度
可以通过netstat命令计算TCP连接数。
中间件建立的线程池,用于监控线程状态。
JVM性能指标、GC状态、堆使用情况
CPU加载队列长度
与服务器中间件建立的连接的数量和状态。
一般性能分析的过程
序列名称描述
1检查RT客户端的响应时间
TPS TPS大的时候,RT小,说明性能好。
3检查加载机器的资源消耗和CPU利用率。
4检查压缩服务器的资源消耗CPU、内存、磁盘IO、带宽、响应时间。
5检查中间件配置,确定是否存在配置参数问题。
6数据库服务器CPU、内存、IO繁忙程度、数据库监控。
望采纳。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)