条带深度 队列深度 NCQ IOPS

Posted zengkefu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了条带深度 队列深度 NCQ IOPS相关的知识,希望对你有一定的参考价值。

http://blog.csdn.net/striping/article/details/17449653 

           IOPS 即I/O per second,即每秒进行读写(I/O)操作的次数,多用于数据库等场合,衡量随机访问的性能。

并发IO的概念:并发IO,指多个IO可以同时被处理,比如IO1可以访问a盘,IO2可以同时访问b盘。并发IO的反义词是顺序IO。

条带深度:raid5的128KB条带,128KB条带=磁盘数量乘以每个磁盘上组成这个条带的segment大小,也就是说一个条带把排列的多个磁盘横向切成了一条一条的,硬盘本身相当于竖条,而横条和竖条切开之后形成的小格子就是segment,也叫条带深度,stripe depth。比如8个盘的raid5系统,其中一块用于存放parity,128KB条带除以8等于16KB,也就是说segment=条带深度=16KB=每个磁盘上贡献一个条带所使用的空间。

队列深度描述每个磁盘同时激活的最大的I/O值。例如,在你的配置中,每个LUN有4个磁盘,如果你的队列深度定义为16,那么整个系统同时拥有的最大的I/O数为64 (4 个磁盘 * 每个磁盘16 最大I/O值);

队列深度是一台设备上承载命令队列中的命令数量。

队列深度就是数字越大代表要处理的任务数越多,可以同时并发

HBA队列深度指的是发送到数据存储基础设施中等待处理的存储I/O数量。在安装HBA时,多数存储管理员仅仅使用HBA卡的缺省设置,而缺省HBA队列深度设置一般太高。这会造成存储端口发生拥塞,从而导致应用性能问题。如果队列深度被设置得太低,端口和SAN基础设施则得不到高效率的使用。当存储系统没有加载足够的等待处理的I/O时,则得不到使用其高速缓存的机会。但如果缓存中的几乎所有数据在被存取前就过期的话,则大多数数据存取将来自硬盘。多数HBA将缺省队列深度设置在32至256之间,但最佳范围实际上接近于2到8。多数启动程序能够报告任何时刻它们队列中未处理的请求数量,这就使你可以在过深和过浅的队列深度间取得平衡。

NCQ技术它是一种使硬盘内部优化工作负荷执行顺序,通过对内部队列中的命令进行重新排序实现智能数据管理,改善硬盘因机械部件而受到的各种性能制约。NCQ技术是SATAⅡ规范中的重要组成部分,也是SATAⅡ规范唯一与硬盘性能相关的技术。   

NCQ技术   SATA规范支持许多新的功能,其中之一就是NCQ(Native Command Queuing全速命令排队)技术。 首先让我们来看一下硬盘是怎样读写信息的。硬盘通过将信息写入磁盘磁道上的特定位置进行信息存

储,硬盘访问磁盘上信息的过程如下:   

● 寻找存储数据的目标磁碟(platter),访问该磁碟。   

● 寻找磁碟上存储数据的目标磁道(track),访问磁道。   

● 寻找磁道上存储数据的目标簇(cluster),访问簇。   

● 寻找簇上存书数据的目标扇区(sector),访问扇区。  

● 寻找目标数据,读取数据。   

通过上面的步骤,硬盘即可获取所需要的数据信息。硬盘写入数据的步骤也是如此,区别仅仅在于读操作变为写操作。大多数情况下数据存入硬盘并非是顺序存入,而是随机存入,甚至有可能一个文件被分配在不同盘片上。对于不支持NCQ的硬盘来说,大量的数据读写需要反复重复上面的步骤,而对于不同位置的数据存取,磁头需要更多的操作,降低了存取效率。支持NCQ技术的硬盘对接收到的指令按照他们访问的地址的距离进行了重排列,这样对硬盘机械动作的执行过程实施智能化的内部管理,大大地提高整个工作流程的效率:即取出队列中的命令,然后重新排序,以便有效地获取和发送主机请求的数据,在硬盘执行某一命令的同时,队列中可以加入新的命令并排在等待执行的作业中。显然,指令排列后减少了磁头臂来回移动的时间,使数据读取更有效。   

如上图所示,如果新的命令恰好是处理起来机械效率最高的,那么它就是队列中要处理的下一个命令。举个例子:比如向硬盘下达一组数据传送指令,由于数据在磁盘上分布位不同,磁头可能会先读取260扇区,再读取7660扇区,然后又读取261扇区……如果我们对指令进行优化排列,可以先读260扇区,接着依次读261扇区,最后读取7660扇区……显然,指令排列后减少了磁头臂来回移动的时间,使数据读取更有效。并且有效的排序算法除了考虑目标数据的线性位置,也会考虑其角度位置,并且还要对线性位置和角度位置进行优化,以使总线的服务时间最小,这个过程也称做“基于寻道和旋转优化的命令重新排序”。  

以上是关于条带深度 队列深度 NCQ IOPS的主要内容,如果未能解决你的问题,请参考以下文章

mq 可以查看发送队列深度么深度么?

Java之阻塞队列深度剖析

一起学数据结构与算法深度学习队列

宽度与深度优先遍历

如何从女服务员那里找到“任务队列深度”警告的原因?

深度分析:面试阿里,字节跳动,美团几乎都会被问到的阻塞队列