一个队列管理器可以管辖多个队列。但对于一个队列只能隶属于其中的一个队列管理器。所以队列在其所隶属于的队列管理器只能有唯一的名字,不能于同一个管理器中的其他的队列重名。当消息添加到队列中是,其缺省被添加到最后。删除消息时从头开始。
(1)本地队列:本地队列按照功能又可以分为初始化队列、传输队列、目标队列和死信队列。其中初始化队列用作消息触发。传输队列只是暂存待传的消息,在条件许可的情况下,通过管道将消息传送其他的队列管理器。目标队列是消息的目的地,可以长期存放信息。如果消息不能送达目标队列,也不能路由出去,则被自动放入死信队列。命令队列指的是WebSphere MQ队列管理器预定义的SYSTEM.ADMIN.COMMAND.QUEUE,任何的MQSC命令都可以发往改队列,并被队列管理器的命令服务器(Command Server)接受处理。
MQXQH(传输信息头,其中的RemoteQName和RemoteQMgrName两个域指名了目标队列和目标队列管理器)
MQDLH(死信信息头,其中DestQName和DestQMgrName两个域指名了原消息的目标队列和目标队列管理器,Reason域指名了消息无法投递的原因)。
MQMD(应答消息头,其中ReplyToQ和ReplyToMgr分别表示应答队列和应答队列管理器)
(2)别名队列:别名队列的TARGQ属性指名了其代表的目标队列名称,目标队列通常是本地队列。可以将别名队列理解为指针。
(3) 远程队列:远程队列也是一个定义,使用了远程队列,你就可以不用知道目标队列所在的队列管理器了。
(4) 模型队列:模型队列定义了一套本地队列的属性集合。一旦打开模型队列,队列管理器就会按照这些属性动态创建处一个本地队列。模型队列的DEFTYPE属性可以取值为PERMDYN和TEMPDYN分别代表永久动态度列和临时动态队列。
一、TCQ:Tagged Command Queuing,标记命令队列,首先是用在SCSI接口的硬盘上面,不过传统的P-ATA或者新兴的S-ATA也可以实现TCQ功能。SCSI的TCQ要强大得多,这主要表现在队列类型及深度。SCSI TCQ支持三种队列类型,分别是简单队列(Simple Queue)、有序队列(Ordered Queue)和队列头(Head of Queue)。而ATA命令排队(TCQ和NCQ)只是简单队列,即硬盘享有以任意顺序排列和优化命令的完全自主权。
TCQ的优点主要表现在:
1. 提高随机读取速度
2. 在多执行序( Multi-Threaded )环境及高随机读取负荷 (High Randum I/O
Workloadings) 下,仍能维持高性能表现。
3. 将重复性及相冲突之指令予以重新排序,提高硬盘效能
至于队列深度的规定,ATA命令排队最大为32级,SCSI TCQ为256级,对PC和入门级服务器、网络存储设备来说, ATA的32级深度已经足够,而SCSI面向的多主机/多设备应用环境则要求更深的队列深度。不过,由于队列越深(实现)成本也就越高,并且满深度利用队列时大量的待处理命令反倒可能成为性能瓶颈,因此并行SCSI硬盘通常只用到64级深度,256级的队列深度往往在磁盘阵列子系统中实现。
此外,ATA命令排队还有一些局限性,譬如排队命令与非排队命令不能混合使用、发生错误将导致硬盘放弃队列中的全部命令(主机必须管理恢复过程)。而我们需要记住的就是,ATA TCQ的概念要小于TCQ(NCQ也一样,因为它本身也是一种TCQ,只是称呼不同而已),两者间不能划等号。
二、什么是NCQ呢?
NCQ被称为“全速命令队列(Native Command Queuing,NCQ)”。全速命令队列是SATA II最先进和最令人期待的特性,是SATAⅡ规范中的重要组成部分,也是SATAⅡ规范唯一与硬盘性能相关的技术。NCQ是一项强大的接口/硬盘技术,它通过在硬盘内部优化作业的执行顺序来提升硬盘性能和使用寿命。
首先让我们来看一下硬盘是怎样读写信息的。硬盘通过将信息写入磁盘磁道上的特定位置进行信息存储,硬盘访问磁盘上信息的过程如下:
● 寻找存储数据的目标磁碟(platter),访问该磁碟。
● 寻找磁碟上存储数据的目标磁道(track),访问磁道。
● 寻找磁道上存储数据的目标簇(cluster),访问簇。
● 寻找簇上存书数据的目标扇区(sector),访问扇区。
● 寻找目标数据,读取数据。
通过上面的步骤,硬盘即可获取所需要的数据信息。硬盘写入数据的步骤也是如此,区别仅仅在于读操作变为写操作。大多数情况下数据存入硬盘并非是顺序存入,而是随机存入,甚至有可能一个文件被分配在不同盘片上。对于不支持NCQ的硬盘来说,大量的数据读写需要反复重复上面的步骤,而对于不同位置的数据存取,磁头需要更多的操作,降低了存取效率。支持NCQ技术的硬盘对接收到的指令按照他们访问的地址的距离进行了重排列,这样对硬盘机械动作的执行过程实施智能化的内部管理,大大地提高整个工作流程的效率:即取出队列中的命令,然后重新排序,以便有效地获取和发送主机请求的数据,在硬盘执行某一命令的同时,队列中可以加入新的命令并排在等待执行的作业中。显然,指令排列后减少了磁头臂来回移动的时间,使数据读取更有效。
如果新的命令恰好是处理起来机械效率最高的,那么它就是队列中要处理的下一个命令。举个例子:比如向硬盘下达一组数据传送指令,由于数据在磁盘上分布位不同,磁头可能会先读取260扇区,再读取7660扇区,然后又读取261扇区……如果我们对指令进行优化排列,可以先读260扇区,接着依次读261扇区,最后读取7660扇区……显然,指令排列后减少了磁头臂来回移动的时间,使数据读取更有效。并且有效的排序算法除了考虑目标数据的线性位置,也会考虑其角度位置,并且还要对线性位置和角度位置进行优化,以使总线的服务时间最小,这个过程也称做“基于寻道和旋转优化的命令重新排序”。
不过,要充分享用NCQ技术,光硬盘支持是不行的,还要对应的硬盘控制器(如南桥芯片中的磁盘控制器)支持才行。例如Intel从945芯片组的ICH7南桥开始支持NCQ技术,nVidia从nForce4 SLI芯片组开始支持NCQ技术。
下面是seagate官方关于支持NCQ硬盘的数据。
从seagate推出高端NCQ硬盘以来,一直深受广大用户拥戴,这次NCQ硬盘向低端
发展,体现了seagate对用户的全方位考虑。据相关媒体报道,拥有NCQ技术的新款硬盘相对没有NCQ技术的旧版硬盘产品。整体性能可以提升5%~20%,而拥有NCQ技术的这款低端产品的上市无疑是普及硬盘领域最新技术的最好途径。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)