23

[译] 理解存储性能的两个指标每秒读写次数与时延 | yoko blog

 4 years ago
source link: https://pengrl.com/p/37967/?
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

[译] 理解存储性能的两个指标每秒读写次数与时延

2019-08-14 | 计算机系统

大部分人在考虑存储性能时,他们首先想到的是最大吞吐量。但是最大吞吐量就像汽车厂商给汽车标的最高速度。实际上,你几乎永远不会达到那个速度。考虑存储性能时也不应该只考虑最大吞吐量。

还拿汽车来举例,大部分时候,加速度和过弯的处理能力可能会比最大吞吐量更重要。这和存储性能是类似的。

大部分人都知道SSD固态硬盘一般比普通的机械硬盘快。但这不仅仅是因为固态硬盘的最大吞吐量更大。还和它们的IOPS(Input/Output operations per second, 每秒读写次数)有关。更高IOPS的存储器,会提高我们日常真实应用的性能。但是IOPS也不是唯一指标。更准备的说:IOPS只有和平均时延以及读写字节大小相关联时才有意义。让我们先来看IOPS和时延。

io01

时延指的是单个读写操作被处理的时间。这点非常重要,拿一个每秒可以处理1000个读写操作并且平均时延是10毫秒的存储系统,和另一个每秒可以处理5000个读写操作但是平均时延是50毫秒的存储系统相比,前一个在应用性能上可能更好些。尤其是对那些对时延敏感的应用,比如说数据库服务。

所以,我们需要搞清楚:IOPS和时延是如何相互关联、影响的。这里,汽车的例子可能不太合适了,我们举另外一个例子。假设你在一个特殊的超市,顾客(IO请求)被收银员(磁盘)以平均10毫秒的速度所服务。将1秒除以10毫秒,我们可以知道这个收银员1秒可以服务100个顾客。但是同一时间收银员只能服务一个顾客,服务的顺序是线性连续的。

io02

显然,尽管收银员一秒可以处理100个顾客,但是他没法同时处理这些顾客!所以当第一个顾客到达收银台时,在10毫秒的处理时间内,如果有第二个顾客到达,那么第二个顾客只能等待。当第二个顾客被服务时,处理时间依然是10毫秒,但是总体花费的时间可能是15毫秒甚至更长(比如两个顾客同时到达)。

io03

所以,尽管磁盘可以在10毫秒的平均时延下处理一个独立的IO请求,但是对于应用来说,实际的时延可能会更高,因为部分IO请求在等待被处理。

这个例子也说明,排队等待会提高某些IO请求被处理的时间。所以你如果你将队列增大,你会发现平均时延也增大了。越长的队列意味着越高的时延,但是好处是也带来了更高的IOPS!!!

io04

为什么磁盘在牺牲时延的情况下可以提高IOPS(并且这些读写的位置是随机的)?技巧在于,存储系统会将队列中的IO请求重新排序,使得实际对磁盘的访问在物理地址上更连续。所以磁盘可以在牺牲平均时延的情况下提高IOPS。但这种牺牲是否可接受取决于时延增加了多少,以及对应用层性能带来了多少提高。

英文原文地址: Understanding IOPS, Latency and Storage Performance by louwrentius (https://louwrentius.com/understanding-iops-latency-and-storage-performance.html)

本文完,作者yoko,尊重劳动人民成果,转载请注明原文出处: https://pengrl.com/p/37967/


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK