各位ICT的小伙伴们大家好呀,
在我们谈存储性能的时候,总会听到IOPS、延迟(Latency)、带宽(Bandwidth)、吞吐量(Throughput)以及响应时间(Response Time)等技术指标。
那么,企业在购买存储的时候,到底需要怎么考虑这些指标呢?它们之间有何区别?又有什么联系呢?
今天我们就用一些简单的例子来讲明它们之间的区别。
▉ 何为I/O?何为IOPS?
聊这些存储技术指标之前,我们需要先了解下什么是I/O,什么是IOPS。
I/O,即input/output,输入指的是对存储系统写入数据,输出指的是从存储系统读出数据,I/O简单的可以理解为磁盘的读写。目前常见的硬盘类型主要有HDD和SDD,HDD主要的接口类型有SATA硬盘和SAS硬盘两种类型,SSD则会有SATA、M.2、PCIe及U.2等不同接口类型,每一种磁盘的性能是不一样的。
IOPS是很多企业最关注的存储性能指标,指的是单位时间内系统能处理的I/O请求数量,通常,计算IOPS的基本公式是:(总的读+写的操作量)/ 时间(秒)。
我们举个简单的栗子,就像我们上班坐地铁一样,地铁上一个和下一个人可以看作存储系统的I/O,IOPS就相当于(地铁上的人+地铁下的人)/停留时间(秒)。
▉ 只强调IOPS就是“耍流氓”?
IOPS是存储性能的一个关键指标,很多存储厂商也抓住用户心理在推广的时候炫耀他们的存储系统IOPS性能有多高,性能有多快。
但是,仅通过IOPS来衡量存储系统性能好坏的存储厂商就是"耍流氓",只有在使用该存储系统的工作负载对IOPS有要求的情况下才有价值。
IOPS数值会受到很多因素的影响,包括I/O负载特征(读写比例,顺序和随机,工作线程数,队列深度,数据记录大小)、系统配置、操作系统、磁盘驱动等等。
例如,在企业业务的IO传输过程中,数据包会被分割成多块(block),交由存储阵列缓存或者磁盘处理,对于磁盘来说这样每个block在存储系统内部也被视为一个I/O,存储系统内部由缓存到磁盘的的数据处理也会以IOPS来作为计量的指标之一,如果是小数据块顺序读写,就很可能因为缓存影响导致IOPS结果数值过高。
很多厂商的存储产品就会拿到最大的IOPS测试结果来宣传,结果导致很多厂商购买后由于业务场景不同,根本达不到宣传的IOPS性能。
因此在实际测试的时候,除了常见的4K随机读IOPS、4K随机写IOPS、64K顺序读IOPS、64K顺序写IOPS指标测试,还会需要测试读写混合(例如50%读50%写、70%读30%写)以及根据企业的业务场景类型来进行测试。
▉ IOPS、延迟和带宽的关系
由于IOPS顺序写和随机写测试结果差别较大,所以在选择存储的时候还有两个指标也经常被拿来一起看,就是延迟和带宽。下面我们来看下二者的定义。
延迟(Latency)
延时又称时延、延时,处理单个 I/O 请求的速度。这一点非常重要,因为能够处理1000 IOPS且平均延迟为10ms的存储子系统可能比能够处理5000 IOPS且平均延迟为50ms的子系统获得更好的应用程序性能。特别是如果应用程序对延迟很敏感,比如数据库服务。
这是一件非常重要的事情:IOPS和延迟之间是相互关联的。譬如你在一个大超市中,收银员(存储系统)以平均10ms的速度为顾客(IOPS)提供服务,我们知道1 秒=1000 毫秒(ms),如果按照平均时间,每个收银员可以在一秒钟处理100个顾客。
但需要注意的是,收银员是连续工作的,他不能同时处理他们,所以当客户提前到达收银员处,在10ms处理时间内,那么第二个客户就需要等待,虽然处理这个客户的时间还是需要10ms,但是加上等待的时间就可能达到15ms,甚至最坏的情况(多个客户同时到达)那就远超到20ms。
所以,存储系统除了延迟外,还需要看另外一个指标,就是带宽(Bandwidth)。
带宽(Bandwidth)
带宽是指平均每秒读写的数据量。在同样的延时指标下,增加并发可以提高吞吐量。
譬如超市收银台前大排长龙,作为经理你可能会第一时间要求多开收银通道,加大处理带宽。通道数量多了之后,队伍长度减少了。但是,具体到收银员服务每一位顾客所需的时间并没有改变。
企业用户在选购存储的时候,延迟和带宽也是两个非常重要的指标,并不能单独的根据每个指标的大小来评判存储性能的好坏,需要IOPS、延迟、带宽三者结合来看。
我们生活中也会碰到这种需要综合考核的时候。如在排队的时候你可能会寻找年轻人居多的队伍去排队,他们往往习惯手机移动支付,扫码支付速度更快。这样你就选择了一个延迟较低的通道,减少了自己的等待时间。
▉ 这俩指标也不能忽视
除了上面我们聊到的三个技术参数,在选择存储的时候还会经常聊到吞吐量和响应时间。
带宽和吞吐量是经常容易被混淆的概念,很多时候,人们就将带宽认为是吞吐量。其实二者还是有一些区别的,如下图:
带宽显示了管道(通讯通道)的容量。带宽表示经过管道的水的最大值。吞吐量是从管道中实际流出的水能够表示为吞吐量。
在性能测试术语中,在给定的时间段内从一个位置成功移动到另外一个位置的数据量,一般以每秒比特数(bps)来度量,或每秒兆比特数(Mbps)、每秒千比特数(Gbps)。例如:在第4秒传输了20 bit数据,所以在t=4时的吞吐量为20bps。
响应时间(Response Time)则是指从用户发送请求到应用程序加上请求已经完成并返回给用户的时间。响应时间通常以毫秒(ms)为单位表示,更短的响应时间通常被认为是更好的性能。
响应时间是用户感知性能的重要参数。更短的响应时间通常被认为是更好的用户体验。因此,在考虑存储性能时,需要考虑IOPS、延迟、带宽和吞吐量,从而确保快速响应用户请求。
▉ 最后,重点提一下:
多颗硬盘组建RAID0,可以将读写负担均衡分到各块硬盘之上,实现总体带宽的提升,但对于单一读写请求(如4K单线程随机读写)来说,RAID0和单块硬盘相比没有任何区别;
由于物理限制限制了HDD盘片旋转的速度,因此HDD没有SSD的高速吞吐量,全闪存阵列是企业关键业务首选;
解决带宽(Bandwidth)比解决延时(Latency)更容易;
若是吞吐量(Throughput)几乎等于带宽(Bandwidth),这意味着网络使用率很高;
经过在平坦吞吐量图中增长响应时间(Response Time)可显示网络带宽(Bandwidth)问题。能够经过添加额外信道(即经过增长网络带宽)来解决该瓶颈;
理想状况下,吞吐量(Throughput)和网络带宽(Bandwidth)的预期容量是一致的;
响应时间(Response Time)与吞吐量(Throughput)成正比。若是吞吐量(Throughput)随响应时间(Response Time)的增长而减小,则表示应用程序/系统不稳定;
线程的数量与吞吐(Throughput)量成正比;
若是延时(Latency)较低,可是带宽(Bandwidth)较小,那么从A点到B点的数据传输时间要比延时(Latency)低且带宽(Bandwidth)高的时间长;
延时(Latency)受链接类型、距离和网络拥塞的影响;
因此,企业在评估新的存储系统时,准确的选择存储设备的最佳方法是在测试的时候尝试运行您在生产中运行的真实工作负载。在实际测试过程中尽量选择多个IO大小模态来进行测试,从而在未来业务上线后能够满足实际应用程序的要求,特别是在日益整合的环境中,好的存储系统是企业业务稳定运行的关键。