移动硬盘时代,一般以大文件传输速度来衡量硬盘的优劣。而在当今“一切皆可上云”的时代,我们越来越关心云硬盘的 IOPS。传输速度、IOPS 自然是越大越好,但盲目追求数值,很可能掉入互联网营销的陷阱。本文将尝试理清硬盘/云硬盘的主要性能指标,帮助大家更好更科学的进行选购。
专业名词解释
- 传输速度:也叫读写速度,在移动硬盘时代比较常见,它的上下文是“大文件平均传输速度”。如果用随机小文件进行测试,它的数值将急剧下降。厂商大都以其产品的大数值示人,以赚足眼球,普通消费者很难分清里面的道道。
- 吞吐量:Throughput,云硬盘/存储系统单位时间(默认为秒,s)内读写的实际数据量,默认单位为 Mbps,它是一个实测值,会随时间变化。吞吐量在概念上一定程度近视于“传输速度”,但在网络环境下、特别是多硬盘实体构建的云硬盘/存储桶/存储系统中,如磁盘阵列,一般用吞吐量来反映存储设备的读写性能,而很少用“传输速度”,具体原因间本文后续“IOPS、传输速度、吞吐量的关系”。
- 带宽:Bandwidth,云硬盘/存储系统单位时间(秒,s)读写的最大数据量,单位为 Mbps,它是一个恒定的标量。可以这样理解,带宽是云硬盘/存储系统对外提供的传输通道/管道,而吞吐量就是流经该管道内的实际数据。
- IOPS:Input/Output Operations Per Second,单位时间(秒,s)内云硬盘/存储系统的读写次数,同样是一个实测值。
- 延迟:Latency,也成为延时、时延,从发出一个I/O请求到收到响应的时间间隔,即处理单个 I/O请求的速度。一般使用最小、最大和平均延时来评估延迟整体情况。
备注:实测值用来衡量云硬盘/存储系统的性能是没有意义的,但它们的上下限值确可以。日常交流中,我们常说某某云硬盘/存储系统的吞吐量是 XXMbps,或者 IOPS 是 10W+ 等等,指的是它的最大值。
IOPS的常见影响因素
IOPS 受多种因素影响,包括读写比例、读写方法(顺序和随机)、线程数量、队列深度、数据记录大小、系统配置、操作系统、磁盘驱动等等。
其中线程数量、读写方法、数据记录大小(数据块)能够显著影响最终的 IOPS 计数。跨测试平台、跨云服务商提供的IOPS没有太多横向对比的意义,注意各种高达 10W+、100W+ 的 IOPS 数值后面是否隐藏了定语。大家都知道,只要定语足够多,没有什么是不可能的。。。
IOPS、传输速度、吞吐量的关系
传输速度、吞吐量、IOPS 可以看作是一种递进补充关系。
传输速度只反映存储设备的物理特性,如接口规格、传输介质,无法衡量网络拥塞等方面对数据读写的影响;
而吞吐量很好的弥补了传输速度的不足,吞吐量反映的是整个存储系统在现实环境中多因素(比如硬件、软件、协议栈、网络、温度等)影响下实际提供的读写能力;
传输速度、吞吐量可以很好地衡量反映硬盘/存储系统的连续读写能力,然而在体现随机读写文件方面却又不太直观,所以 IOPS 就产生了。
在看各大存储厂商/云服务器商提供的 IOPS 指标时,应查看它们采用的基准测试方法。测试方法不同,结果千差万别。常见的 IOPS 测试方法有:4KB 随机读写、4KB 64 线程随机读写、64KB 随机读写、16MB 随机读写等等。
如西数、希捷等业界硬盘厂商常用的 IOPS 测试方法是 4KB 随机读写,默认情况下,大家说的XX型号硬盘IOPS是多少也是指的其 4KB 随机读写次数。
在给定条件下,IOPS 和吞吐量之间可以相互转换:
举例:对一块 SSD 进行4KB随机读写测试,测得 IOPS(4K读) = 6500,IOPS(4K写) = 16324,见图1.
可计算出它的吞吐量: #一般用TP表示吞吐量
TP(4k读) = 6500*4/1024 = 25.390625MB/s = 203.125Mbps
TP(4k写) = 16324*4/1024 = 63.765625MB/s = 510.125Mbps
对比 AS SSD Benchmark 测试软件截图左侧可见,它们的转换关系是完全正确的。
图1. 对固态硬盘分别测试 4KB 随机速度测试其 IOPS 和吞吐量
IOPS、带宽与延迟之间的关系
延迟一般由两部分组成,系统延迟+(排队)等待延迟。系统延迟比较难于改变,但 IOPS 和带宽可以直接影响到等待延迟。
以超市收银为例,假设当前有 10 个顾客需要结算(IOPS),有 5 个收银台(带宽),每个收银台配一个收银员,每个收银员处理每单业务的时间恒定为 10s(系统延迟),那么此时的平均延时为:
假设增加一倍带宽,即收银台数量为 10 个,其他条件不变,则平均延时为:
平均延时 = 系统延时 = 10s
很多存储厂商/云服务器商在推广的时候,常吹嘘炫耀他们的存储系统 IOPS 有多高,性能有多快,但仅通过 IOPS 来衡量存储系统性能好坏是在”耍流氓”。
有句老话说的好,“实践是检验真理的唯一标准”。而对于云硬盘/存储系统而言,用户能直接感知到的是响应延迟,延迟的高低才是衡量存储系统性能好坏的唯一标准。
实际采购时如何平衡IOPS、吞吐量、带宽等性能指标
依据实际需求,同时兼顾成本效率。以下的几条经验可做参考:
- 随机读写频繁的使用场景,如数据库、邮件、源代码管理,关注随机读写性能,IOPS 是关键衡量指标;
- 顺序读写频繁的使用场景,如直播、视频会议等音视频流,大文件共享,关注连续读写性能,数据吞吐量是关键衡量指标;
- 可以通过组 Raid 或增加硬盘调整带宽,但延迟问题比较难于解决,部署应用时应充分测试评估当前延迟是否可接受;
- 热数据存放在高 IOPS 的 SSD,冷数据存放到大容量高性价比的 HDD。