在"4.7 Command Timeout"章节中,详细定义了NVMe命令的超时要求和限制。
- CTO-1:NVMe管理命令和TCG(可信计算组)命令从提交到完成不应超过10秒,且没有其他命令未完成(QD1)。CTO-1不适用于由设备自测和净化命令启动的后台操作的时间。CTO-1也不适用于异步事件请求命令。
在CTO-1的要求中,规定在没有其他未完成命令的情况下,命令的执行时间不应超过10秒。这意味着在评估命令执行时间时,只考虑单个命令的情况,而不考虑队列中可能存在的其他命令。这是因为如果有其他未完成的命令,它们可能会共享系统资源,从而影响当前命令的执行时间。
-
CTO-2:CTO-1的唯一例外是对于非加密擦除操作的Format NVM命令。Format NVM的加密擦除和TCG方法Revert, RevertSP和GenKey应符合CTO-1的要求。
-
CTO-3:一旦满足TTR-2,单个I/O命令(QD1)从提交到完成不应超过8秒。在一个小时内,设备不应有超过7个I/O操作超过2秒。
通过限定在QD1的情况下评估命令执行时间,可以更准确地衡量单个I/O命令的处理能力,而不受其他并发命令的影响。
这个要求的主要目的是为了确保NVMe设备在达到特定条件后能够及时、有效地处理I/O命令,防止由于个别命令执行时间过长而导致的系统性能下降和用户体验不佳。这个要求强调了设备在正常工作状态下对I/O请求的快速响应能力。
-
CTO-4:I/O命令处理时间不应依赖于设备容量。
-
CTO-5:设备供应商应披露任何可能导致违反CTO-1至CTO-4超时要求的I/O场景。
-
CTO-6:设备应设置MDTS、Number of Queues特性(特性标识符07h)的属性和Maximum Queue Entries Supported,以确保不会违反CTO-3。
MDTS (Maximum Data Transfer Size): 这个设置定义了设备在单个I/O操作中能够传输的最大数据量。设备应设置这个值,以确保其符合特定的性能和兼容性要求。MDTS的大小可能会影响数据传输的效率和系统的整体性能。
Number of Queues feature (Feature Identifier 07h): 在NVMe规范中,每个控制器可以支持多个队列,这些队列用于处理主机发出的I/O命令。特征标识符07h对应的是"队列数量特性",这个特性定义了设备支持的队列数量。设备供应商需要设置这个特性的属性,以确保设备能够有效地处理多任务并行I/O操作。
Maximum Queue Entries Supported: 这个设置定义了每个队列可以容纳的最大命令数量。设备应设置这个值,以确定每个队列能够同时处理的并发命令数量。这直接影响到设备的并行处理能力和系统性能。
NVMe Spec对Admin SQ/CQ和IO SQ/CQ有不同的约定:
-
系统中只有一对Admin SQ/CQ,则可以有最多64K对 IO SQ/CQ;
-
Admin SQ/CQ的队列深度是2~4K;而IO SQ/CQ的队列深度是2~64K;注: Admin/IO command大小为64B,对应的Completion大小为16B。
-
Admin SQ和CQ是一对一的,而IO SQ和CQ可以一对一,也可以多对一。多个SQ可以支持多线程工作,不同SQ之间可以赋予不同的优先级;
-
CTO-7:这段话规定了设备在由TCG命令发起执行的Sanitize Crypto Erase擦除操作以及后台活动时,操作需要在10秒内完成。
-
CTO-8:采用Block Erase和Format擦除用户数据擦除的命令,每TB执行时间不超过10s。如果一个4TB SSD,擦除就应在40秒内完成。