基于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

* 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是一样的。

* Data Area 2 和Data Area 3 在blocks 1 到 1,000 中包含相同的telemetry data

NVMe 2.0 Telemetry相关推荐

  1. [元带你学NVMe协议] NVME 2.0 新技术解决了什么痛点? 会带来哪些变革?

    声明 主页:元存储的博客_CSDN博客 依公开知识及经验整理,如有误请留言. 个人辛苦整理,付费内容,禁止转载. 文章目录 前言 1. 为什么需要 NVME 2.0? 2. NVME 应用领域 2.1 ...

  2. 简单说说NVMe 2.0协议

    NVMe协议官网 发展历程 最初的NVMe是为了替代AHCI 由下图可看出,2.0协议是对于原有协议进行拆分.合并,如NVMeoF被拆解到了两部分(绿色块),还增加了许多新的指令集(灰色部分) 最终的 ...

  3. NVMe 2.0——Boot Partitions

    Boot Partitions提供了一个可选的 NVM 存储区域,主机可以读取该区域,而无需主机初始化队列或enable控制器.访问Boot Partitions的简化接口可用于平台初始化代码(例如, ...

  4. USB3.0及NVME SSD安装WIN7X64

    USB3.0及NVME SSD安装WIN7X64 https://tieba.baidu.com/p/4822034273?pn=1 所有的人都是菜鸟过来的, 不过有些人懂得自己动手找到答案: 有些人 ...

  5. win7 nvme 支持补丁_UpdatePack7R2 v20.8.13 Win7 更新补丁包

    UpdatePack 7,由俄罗斯人Simplix制作的Windows 7 更新补丁安装包,Win7累积更新离线安装包,整合所有关键更新和安全更新及NVMe/USB3.0驱动,使用它可以将累积更新封装 ...

  6. 详解:什么是NVMe?

    微信公众号 乐生活与爱IT 编者按: 昨天在<Why NVMe ?>曾提到:NVMe标准协议除了建立了通用兼容的闪存接口协议以外,还针对闪存存储的特点,提供了低延时.高并发以及低功耗的特性 ...

  7. linux nvme固态硬盘,Linux PCIe SSD NVME 性能调优篇

    直接来干货!怎么调优 PBlaze IV PCIe SSD NVMe.  Go! 1. 中断绑定 在Redhat 6.5中的NVMe驱动会自动把全部的中断向量绑定到core0上,如果有多个SSD, c ...

  8. 性能对比|FASS iSCSI vs NVMe/TCP

    前 情 回 顾 在上一篇文章<iSCSI vs iSER vs NVMe-TCP vs NVMe-RDMA >中我们介绍了大道云行FASS全闪分布式存储系统所支持的几种存储协议,现在我们将 ...

  9. NVMe 协议之Multi-Streams和Directives

    Multi-Streams多流 多流是企业级SSD的一个新特性,通过使用多流特性,可以显著提高SSD的垃圾回收效率,从而提高性能和延长寿命. 在SSD的应用场景中,可能有多个不同的应用在对SSD进行写 ...

  10. NVMe 2.0a - Sanitize

    目录 8.21 Sanitize Operations 8.21.1 NVMe 2.0对sanitize的改动有四点: 1. Sanitize Status log page更新要在NVM subsy ...

最新文章

  1. 【实用】表维护视图SM30增加自定义按钮的实现
  2. 人工智能,人脸识别门禁下的校园考勤
  3. Nginx的官方简介
  4. 只有6个引脚的单片机,居然可以玩游戏。
  5. 以LeNet-5为例理解CNN
  6. mysql 1016 145_Mysql中出现 errno:145的解决方法
  7. 【PostgreSQL-9.6.3】设置log参数
  8. thinkphp5每周学习总结 1026
  9. 利用PCA降维的手工计算实例
  10. webstorm设置字体没有反应
  11. 正大国际琪貨纯手召:期货交易中的五大忌
  12. A DIRT-T APPROACH TO UNSUPERVISED DOMAIN ADAPTATION
  13. image库的使用笔记
  14. Mysql解决微信特殊符号昵称入库报错乱码
  15. 我设计开发的第一个产品发布了,微信小程序“集美装修效果图“
  16. 什么是 word embedding?
  17. 你们要的Java学习路线图,来喽
  18. [十月往昔]——Linux内核中的内存管理浅谈
  19. FASS全闪高性能文件网关解决方案
  20. 如何长时间坚持一件事情

热门文章

  1. 共享计算机后无法访问磁盘,Win7系统下无法访问共享硬盘怎么办?
  2. AUTOSAR接口类型及访问规则
  3. QStyle之PenStyle的CustomDashLine使用
  4. Session Fixation
  5. presenting view controller
  6. 不同图像锐化算子提取的图像信息有哪些不同_opencv数字图像处理(3)- 图像平滑与锐化...
  7. 连续子串最大和——python实现
  8. 【介绍】全球最大黑客组织:匿名者
  9. gpio引脚介绍 树莓派3b_树莓派4的GPIO接口介绍
  10. Calendar 用法