队列深度是什么意思
队列深度的意思不言自明,即可以在端口队列中等待服务的I/O请求数量。SAS和SATA可以分别处理254和32的队列深度。如果I/O请求的数量超过了最大队列深度,则该事务将在一段时间后无法重新尝试。
一、基本介绍
MQSeries 应用程序中,队列不成为满是最重要的。如果满了,那么应用程序不再将消息放在它们指定的队列上。如果出现,虽然消息不会丢失,但会很不方便。如果将消息放到队列上的速度比将它除去的应用程序的速度快,则在队列上会构建一系列消息。
对此问题的解决方法取决于特定的环境,但可能涉及:
将一些消息传到另一个队列。
启动新建应用程序将更多的消息移出队列。
停止非基本的报文通信量。
增加队列深度以超过暂时最大值。
明显地,高级警告使它易于进行预防操作。为此目的,提供队列深度事件。
二、什么是队列深度事件
队列深度事件与队列深度相关,即,队列上的消息数。队列深度事件类型是:
队列深度高事件, 它指出增加队列深度来预定义调用队列深度高事件的阈值。
队列深度低事件, 它指出减少队列深度来预定义调用队列深度低事件的阈值。
队列满事件, 它指出该队列到达它的最大深度,即,队列满。
当应用程序试图将消息放到已达到最大深度的队列上时,产生队列满事件。队列深度高事件给予队列填满的高级警告。这意味着已接收到此事件,该系统管理员应当作一些预防操作。如果此操作成功且队列深度降到 ‘安全’级,那么可配置管理器生成队列深度低事件,指示 ‘全清’状态。
使用SAS和SATA,排队的I/O请求数量很容易成为瓶颈。为了避免I/O请求由于超出队列深度而失败,你必须创建许多HDD的LUN,以便所有I/O都能够快速进行。
随着闪存驱动器运行在数十或数百倍的IOPS以及旋转磁盘HDD的吞吐量,吸收I/O请求的性能更为显着,而NVMe提供的65,000队列深度容量使驱动器连接符合此要求。
然而,在大多数情况下,现在和在不久的将来,这些属于理论范畴。NVME的巨大队列处理能力可以直接传递I/O流量——完全消除瓶颈。
不幸的是,存储阵列控制器通常仍然存在瓶颈,主要部分尚未构建以处理NVMe可能的性能。控制器CPU功能与NVMe的潜在性能不匹配。
所以,现在一定要提升你的I/O调整技巧,调整风扇和扇出比,队列深度等等。NVMe(非易失性内存表达)被认为彻底改变了闪存存储。它基于PCIe卡插槽格式,允许闪存驱动器通过PCIe插槽和标准化的连接方式进行连接,取代了专有卡协议和现有的SAS和SATA驱动器堆栈。
NVMe的主要魅力在于,它大大增加了I/O队列数量和队列深度。