性能指标:队列深度、IOPS与时延

队列深度,更显然地说是指未完成的(outstanding)的I/O数目,或指测试工具中的"threads"表示的数目。这是性能测试的一个关键指标。

具体地讲,这些概念是指测试工具一次下发的最大I/O数目,而不管测试工具、OS等的限制。对于测试工具(如vdbench)来讲,一个请求从主机下发到存储,存储完成后返回到主机,这才算是这个I/O的一个完整周期。对接深度是指主机始终维持的,未返回到主机中的请求数目。

在深入理解之前,需要先理解IOPS和时延(latency)。

按定义来讲,每个“thread”是指一次单线程I/O操作。对于一个线程来说,一个新的I/O在当前正在处理的I/O完成之前不能下发开始工作。这样就可以给出一个清晰的定义:每个请求的完成时间(如时延)和单位时间内能够完成的请求数目(如IOPS)。

举例说明,当threads=1,即队列深度1,若每个IO花费0.1s(即100ms),那么最大IOPS就是10。若每个IO花费0.02s(即20ms),则最大IOPS就是50。更通用点地讲,对于每个线程,我们可以最多生成(1/L) IOPS,其中L表示单位为秒的时延。而若队列深度为queueDepth,则IOPS为queueDepth/L。

在根据vdbench结果实际计算的时候,可能会稍有偏差,这是因为vdbench会有一些额外消耗(addtional overhead)。

vdbench等工具允许增加threads/outstanding IO来提升IOPS,但是

参考:https://blog.docbert.org/queue-depth-iops-and-latency/

你可能感兴趣的:(云数据存储)