第5章 管理接口命令集 - 页码111
深入分析:Controller Selection Criteria(控制器选择标准)
在 NVM Express® Management Interface Specification 中,第 5.3.1 节定义了如何根据 控制器健康状态轮询命令(Controller Health Status Poll Command)的返回数据结构选择合适的控制器。通过这些选择标准,管理端可以高效地获取与控制器健康状态相关的信息,优化命令响应和数据传输。
🎯 关键概念
控制器健康状态轮询响应
该命令返回多个控制器的健康状态数据结构(最多 255 个控制器),而 NVM 子系统 最多包含 64 Ki 个控制器。为了避免响应消息过大,必须采用方法限制响应的大小。
开始控制器 ID 和 最大响应条目数
- Starting Controller ID(开始控制器 ID):指定从哪个控制器开始返回数据结构。
- Maximum Response Entries(最大响应条目数):限制返回数据的最大控制器数(最多 255)。
响应数据字段应包含按控制器 ID 升序排列的前 M 个控制器的健康状态数据结构,M 的值等于 Maximum Response Entries 中的值。
这些控制器必须符合以下选择标准: 1. 控制器 ID 大于或等于 Starting Controller ID; 2. 符合控制器类型选择标准(如非 SR-IOV PCI 功能,SR-IOV PF,SR-IOV VF 等); 3. 符合健康状态变化标志选择标准(根据 Controller Health Status Changed Flags)。
🎯 控制器类型选择标准
控制器类型选择:
- INCF(Include PCI Functions):包括非 SR-IOV PCI 功能的控制器。
- INCPF(Include SR-IOV PFs):包括 SR-IOV 物理功能(PF)的控制器。
- INCVF(Include SR-IOV VFs):包括 SR-IOV 虚拟功能(VF)的控制器。
如果 INCF, INCPF, 或 INCVF 位被设置为 '1',则相应类型的控制器数据结构将被包含在响应数据中,除非通过其他选择标准排除。
如何选择控制器类型:
- SR-IOV 虚拟功能、物理功能 或 非 SR-IOV PCI 功能 的控制器数据结构将根据上述控制器类型的选择标准被包括在内。
- 如果某些位(例如 INCF, INCPF, INCVF)被设置为 1,那么对应类型的控制器健康状态数据将被返回,否则被排除。
🎯 健康状态变化标志选择标准
CWARN, SPARE, PDLU, CTEMP, CSTS 标志位选择:
这些标志位与控制器健康状态的关键参数(如警告状态、可用空间、使用百分比、温度和控制器状态)直接相关。
- 如果 Report All 位被设置为 0,则只有在 Controller Health Status Changed Flags 中相应的位设置为 1 时,才会返回控制器的健康状态数据结构。
- Report All 位 为 1 时,无论 Controller Health Status Changed Flags 中的对应位是什么,所有相关字段都会被返回。
具体标志位的作用:
- CWARN:控制器是否存在关键警告。
- SPARE:控制器的备用容量是否有变化。
- PDLU:控制器的使用百分比是否变化。
- CTEMP:控制器的温度是否超过阈值。
- CSTS:控制器的状态是否发生变化。
如果 Report All 位被设置为 0,则只有在相应的健康状态变化标志为 1 时,才会返回控制器的健康状态数据;而如果 Report All 为 1,则这些字段始终有效。
🎯 选择标准应用总结
控制器健康状态轮询的选择过程:
- 基于控制器类型:
-
INCF, INCPF, INCVF 位确定哪些控制器类型的健康状态数据需要返回。
-
基于健康状态变化标志:
-
CWARN, SPARE, PDLU, CTEMP, CSTS 等标志控制哪些健康状态发生变化的控制器需要返回。
-
选择条件:
- 控制器 ID 必须符合 Starting Controller ID 和 Maximum Response Entries 的要求。
-
控制器的健康状态数据只有在满足选择标准时才会返回。
-
健康状态选择:
- 如果 Report All 位为 1,则所有健康状态数据都被返回,无视标志位设置。
- 如果 Report All 位为 0,则仅返回那些在 Controller Health Status Changed Flags 中标记为 1 的健康状态数据。
💡 应用场景
场景 1:健康状态监控 - 管理端定期发送 Controller Health Status Poll 命令,依赖于 控制器选择标准 和 健康状态变化标志 来动态获取控制器健康状态,确保及时发现硬件故障或预警。
场景 2:性能优化 - 通过 Report All 标志,管理员可以控制响应中返回的健康状态数据量,优化带宽使用。
通过这些选择标准,系统能够灵活控制返回数据的范围,从而确保高效且及时的健康状态管理。