数据结构 - 持久事件格式的主要字段 (第216页)
NVME2.0协议解读 1 min read

数据结构 - 持久事件格式的主要字段 (第216页)

Blog Author

NVM Express® Base Specification, revision 2.0b 中,持久事件格式(Persistent Event Format)详细描述了每个事件条目的结构,旨在确保设备在发生事件时能够记录并传输详细的事件数据。这些事件对于故障诊断、状态监控等非常重要。

持久事件格式的主要字段

1. 事件头附加信息(EHAI)

该字段指示事件头是否包含附加信息,用于标识是否需要提供额外的事件头数据。 - Port Identifier Type (PIT):标识事件关联的端口类型。 - 00b: 事件与端口无关。 - 01b: 事件与 NVM 子系统端口相关,PELPID 字段表示该端口标识符。 - 10b: 事件与 NVMe-MI 端口相关,PELPID 字段表示该端口标识符。 - 11b: 事件不与任何端口关联,PELPID 不适用。

2. 控制器标识符

该字段存储了创建事件的 NVM 子系统控制器的唯一标识符。事件可能是特定于控制器的,或者是由 NVM 子系统选定的控制器创建的。

3. 事件时间戳

该字段包含事件发生的时间戳,格式遵循 Timestamp 数据结构(参见 Figure 339)。它帮助标识事件的发生时间,支持事件追踪和时间顺序的排列。

4. 端口标识符(PELPID)

如果 PIT 字段的值不为 00b11b,该字段包含与事件相关的端口标识符。 - 当 PIT01b 时,PELPID 包含 NVM 子系统端口的标识符。 - 当 PIT10b 时,PELPID 包含 NVMe-MI 端口的标识符。

5. 保留字段

这些字段为未来扩展或为了对齐而保留,并不会被使用。

6. 供应商特定信息长度(VSIL)

该字段指示供应商特定信息的字节长度。如果没有供应商特定信息,该字段清零。供应商特定信息可以用于描述该事件无法通过标准字段表示的其他数据。

7. 事件长度(EL)

该字段指示事件数据的总长度,包含了供应商特定信息(如果有)以及事件数据本身。

8. 供应商特定信息

如果有供应商特定信息,这个字段将包含这些信息。供应商特定信息对于提供标准事件格式中未能覆盖的附加数据非常有用。如果没有相关信息,这个字段将被省略。

9. 持久事件日志事件数据

该字段包含事件的实际数据,这些数据会根据事件类型和协议细节进行定义。例如,某些事件可能包括硬件故障、温度变化或命名空间的变更等。

持久事件数据结构

每个事件条目不仅包含事件头部信息,还包含具体的事件数据。这些事件数据可以有多种类型,具体内容根据事件类型的不同而变化。事件类型(Event Type)通过事件类型字段进行标识,并且根据事件类型的不同,会定义不同的事件数据结构。

  • 事件类型(Event Type):每个事件都包含一个事件类型字段,指示此事件的具体类型。不同的事件类型会有不同的数据格式和数据内容。
  • 事件数据:包含该事件的详细信息,可能涉及硬件错误、状态变更、时间戳记录等。

总结

  1. 事件头附加信息(EHAI)提供了与事件相关的端口标识符、控制器标识符和时间戳,帮助识别事件的发生源和时间。
  2. 供应商特定信息(VSIL)允许供应商提供无法通过标准事件格式表示的额外数据。
  3. 持久事件日志通过详细的事件条目,确保设备在运行过程中记录并传递关于关键操作的详细信息,尤其是在诊断故障和监控设备健康状态时,这些事件数据起着至关重要的作用。

此格式的设计确保了 NVM Express 系统能够全面记录设备运行中的各种关键事件,极大地提高了故障追踪、性能优化和系统管理的能力。