NVMe 2.0 Telemetry

基于1.4的改动

详情见:NVM-Express-1.4-Ratified-ECN 中的TP 4063

NVMe 2.0

8.24 Telemetry

Telemetry(遥测)使制造商能够收集内部数据日志,以改善产品的功能和可靠性。telemetry数据集可以由Host或者Controller发出。数据在Telemetry Host-Initiated log page 或 Telemetry Controller-Initiated log page (参考5.16.1.8 and 5.16.1.9)中返回。抓取的数据是供应商特定的。Telemetry功能定义了收集供应商特定数据的机制。控制器在Identify Controller data structure(参考Figure 175)中的Log Page Attribute(LPA)字段指示对telemetry log pages和Data Area 4 size支持。

通过收集telemetry数据发现issue的一个重要方面是能够限定正在收集的不同issues。创建issue到数据集合的一对一映射的能力至关重要。如果未建立一对一映射,则存在多个payload集合看似不同但实际上都是由同一issue引起的风险。相反,单个payload集合可能具有由混合在一起的多个issue引起的payloads,从而在确定根本原因时产生额外的复杂性。因此,在telemetry payloads的集合中提供了size的灵活性,并且通常使用三阶段过程。

第一阶段确定问题存在,最好通过收集最少的数据集来确定问题与其他问题的区别来完成。 一旦某个问题的实例数量确定调查,可能需要另一个阶段来收集可操作的信息。 在第二阶段,有针对性地收集和分析更深入的中等大小的payloads,以确定问题的根源。

如果中小型telemetry数据集提供的信息不足,则可以采用第三阶段来收集更多详细信息。 如果Log Page Attributes字段中的第 6 位被清为“0”,则第三阶段提供最大和最完整的pyload来诊断问题。 如果Log Page Attribute中的第 6 位设为“1”,并且Host Behavior Support功能中的Extended Telemetry Data Area 4 Supported(ETDAS) 字段设置为 1h(请参阅第 5.27.1.18 节),则第四阶段可能是 用于收集最大和最完整的payload以诊断问题。 如果创建了Data Area 4,则还应创建和填充非零长度的Data Area 3作为数据收集的一部分。

定义了两种telemetry数据日志(即Host-Initiated log page和Controller-Initiated log page)。 每个telemetry数据日志由一组Telemetry Data Blocks。 每个Telemetry Data Block的大小为 512 字节。Telemetry数据以Telemetry Data Block为单位返回(参见第 5.16.1.8 节和第 5.16.1.9 节)。 每个telemetry数据日志分为:
    a) Three Telemetry Data Areas(即小、中和大),如果Log Page Attributes属性字段的第 6 位被清为“0”; 或者
    b)Four Telemetry Data Areas(即小、中、大和超大) 如果Log Page Attributes字段的第 6 位设为“1”,并且在Host Behavior Support功能中Extended Telemetry Data Area 4 Supported (ETDAS) 字段设置为 1h (请参阅第 5.27.1.18 节)。
所有telemetry data areas都从Telemetry Data Block 1开始。

每个Telemetry Data Area应表示捕获telemetry数据时控制器的内部状态。

每个Telemetry Data Area都旨在捕获更丰富的数据集,以帮助解决问题。Telemetry Data Area 1旨在具有较小的payload(即第一阶段),Telemetry Data Area 2旨在具有中等尺寸的payload(即第二阶段),而Telemetry Data Area 3旨在具有较大payload(即第三阶段),Telemetry Data Area 4 旨在有一个超大尺寸的payload(即第四阶段)。每个Telemetry Data Area的尺寸大小是供应商特定的,并且可能会在每次数据收集时发生变化。如果可能,host应检索所有支持的Telemetry Data Areas的payload,以便对问题进行最佳诊断。

Host-Initiated和Controller-initiated遥测数据的准备,收集和提交是相似的。 主要区别在于触发收集的因素。对于telemetry数据收集的操作模型是:

  1. Host使用Identifies Controller Data中的数据判断Temeletry是否支持。
  2. 主机可以通过在Host Behavior Support 功能中将Extended Telemetry Data Area 4 Supported (ETDAS) 字段设置为 1h 来指示对Telemetry Host-Initiated Data Area 4 和Telemetry Controller-Initiated Data Area 4 的支持(参见5.27.1.18);
  3. 如果需要的话,Host准备一块区域去存放Telemetry数据。
  4. 接收Controller-Initiated telemetry数据的notification是可以的,Host通过Asynchronous Event Configuration来enable Telemetry Log Notices(参见5.27.1.8节)。
  5. 如果主机决定收集host-initiated telemetry数据或控制器发出信号表明controller-initiated telemetry数据可用:
    1. host从host-initiated log(参见第 5.16.1.8 节)或controller-initiated log(参见第 5.16.1.9 节)中读取Telemetry Data Area 的相应block。如果可能,主机应收集Telemetry Data Area 1、2、3 和 4。host以 512 字节Telemetry Data Area 为单位读取日志。主机应将Retain Asynchronous Event位设置为“1”;
    2. host重新读取log page的header,并确保host-initiated log中的Telemetry Host-Initiated Data Generation Number字段或controller-initiated log中的Telemetry Controller-Initiated Data Generation Number字段与读取的原始值匹配 . 如果这些值不匹配,则捕获的数据不一致,应从log page重新读取并将Retain Asynchronous Event位设置为“1”;
    3.  如果host正在读取controller-initiated log,则host读取该log page的任意部分,并将Retain Asynchronous Event位清为“0”,以向控制器指示主机已完成读取 controller-initiated log page;并且
    4. 保存完所有telemetry 数据后,应将数据转发给控制器的制造商。

host-initiated数据收集的触发器通常是系统崩溃,但也可能在正常操作期间启动。 主机通过为Telemetry Host-Initiated log page提交Get Log Page命令并在Log Specific字段中将Create Telemetry Host-Initiated Data位设置为“1”来继续进行host-initiated data collection。 控制器应快速完成命令(例如,在不到一秒内)以避免用户在完成数据收集之前重新启动系统。

NVM subsystem可以为每个控制器提供一个host-initiated log page,或者在 NVM subsystem中的所有控制器之间提供一个shared ost-initiated log page。当shared host-initiated log被实现时,host-initiated log中的Telemetry Host-Initiated Data Generation Number字段用于允许主机检测Telemetry Host-Initiated log已被来自不同控制器的host更改.
控制器通过Asynchronous Event Request命令的完成通知host收集controller-initiated data,其中Asynchronous Event Type为Notice,指示Telemetry Log Changed事件。主机还可以通过Telemetry Host-Initiated或Telemetry Controller-Initiated log pages中的Telemetry Controller-Initiated Data Available字段来确定controller-initiated data是否可用。主机通过为Telemetry Controller-Initiated log page提交Get Log Page命令,继续进行controller-initiated数据收集。一旦主机开始读取Telemetry Controller-Initiated log page,控制器应避免修改controller-initiated data,直到主机完成读取所有controller-initiated data。主机读取controller-initiated data的时间量是供应商特定的。
由于只有一组controller-initiated data,因此控制器负责对可供主机收集的controller-initiated data的版本进行优先级排序。当控制器用新的controller-initiated data替换controller-initiated data时,控制器应增加Telemetry Controller-Initiated Data Generation Numbe字段。host需要确保在controller-initiated数据收集的开始和完成之间,Telemetry Controller-Initiated Data Generation Numbe字段没有变化,以确保捕获的数据一致。

8.24.1 Telemetry Data Collection Examples (Informative)

本节包含几个Telemetry Host-Initiated Data Areas示例以供说明。 相同的概念适用于Telemetry Controller-Initiated Data Areas。
如果 Telemetry Host-Initiated log page没有要收集的数据,则以下字段都被清除为 0h:

• Telemetry Host-Initiated Data Area 1 Last Block = 0;
• Telemetry Host-Initiated Data Area 2 Last Block = 0; and
• Telemetry Host-Initiated Data Area 3 Last Block = 0.

填充所有三个telemetry Data Area后,Telemetry Host-Initiated log page在每个Telemetry Host-Initiated Data Area n Last Block 字段中具有不同的值。 例如,以下值对应于图 475 中所示的布局:

• Telemetry Host-Initiated Data Area 1 Last Block = 65;
• Telemetry Host-Initiated Data Area 2 Last Block = 1,000; and
• Telemetry Host-Initiated Data Area 3 Last Block = 30,000.

由于telemetry data areas由一组从Telemetry Data Block 1开始的Telemetry Data Blocks组成,Telemetry Data Block 1 到 Telemetry Data Block  65中data area  1、data area  2 和 data area 3包含的的telemetry data是一样的。 此外,Telemetry Data Block 66至Telemetry Data Block 1,000中data area 2和data area 3包含的telemetry data是相同的。

Figure 475: Telemetry Log Example – All Data Areas Populated

Figure 475: Telemetry Log Example – All Data Areas Populated
* Data Area 1, Data Area 2, and Data Area 3 在Block 1 到 65 中包含相同的telemetry data 。
+ Data Area 2 和Data Area 3 在blocks  66 到 1,000 中包含相同的telemetry data 。

当仅填充第二个数据区域时,Telemetry Host-Initiated 日志页面在 Telemetry Data Area 1 中没有数据,其对应的最后一个块值被清除为 0h,并且通过将其对应的最后一个块值设置为与 Telemetry Data Area 2 的最后一个块值相同的值,在 Telemetry Data Area 3 中没有显示附加数据。 例如,以下值对应于图 476 中所示的布局:

 • Telemetry Host-Initiated Data Area 1 Last Block = 0;
• Telemetry Host-Initiated Data Area 2 Last Block = 1,000; and
• Telemetry Host-Initiated Data Area 3 Last Block = 1,000.

由于telemetry data areas由一组从Telemetry Data Blocks 1 开始的Telemetry Data Blocks组成, data area 2 和 data area 3 的数据区的Telemetry Data Block 1 到Telemetry Data Block1,000 中包含的telemetry data是一样的。

Figure 476: Telemetry Log Example – Data Area 2 Populated
* Data Area 2 和Data Area 3 在blocks 1 到 1,000 中包含相同的telemetry data

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值