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数据收集的操作模型是:
- Host使用Identifies Controller Data中的数据判断Temeletry是否支持。
- 主机可以通过在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);
- 如果需要的话,Host准备一块区域去存放Telemetry数据。
- 接收Controller-Initiated telemetry数据的notification是可以的,Host通过Asynchronous Event Configuration来enable Telemetry Log Notices(参见5.27.1.8节)。
- 如果主机决定收集host-initiated telemetry数据或控制器发出信号表明controller-initiated telemetry数据可用:
- 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”;
- 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”;
- 如果host正在读取controller-initiated log,则host读取该log page的任意部分,并将Retain Asynchronous Event位清为“0”,以向控制器指示主机已完成读取 controller-initiated log page;并且
- 保存完所有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
当仅填充第二个数据区域时,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是一样的。
NVMe 2.0 Telemetry相关推荐
- [元带你学NVMe协议] NVME 2.0 新技术解决了什么痛点? 会带来哪些变革?
声明 主页:元存储的博客_CSDN博客 依公开知识及经验整理,如有误请留言. 个人辛苦整理,付费内容,禁止转载. 文章目录 前言 1. 为什么需要 NVME 2.0? 2. NVME 应用领域 2.1 ...
- 简单说说NVMe 2.0协议
NVMe协议官网 发展历程 最初的NVMe是为了替代AHCI 由下图可看出,2.0协议是对于原有协议进行拆分.合并,如NVMeoF被拆解到了两部分(绿色块),还增加了许多新的指令集(灰色部分) 最终的 ...
- NVMe 2.0——Boot Partitions
Boot Partitions提供了一个可选的 NVM 存储区域,主机可以读取该区域,而无需主机初始化队列或enable控制器.访问Boot Partitions的简化接口可用于平台初始化代码(例如, ...
- USB3.0及NVME SSD安装WIN7X64
USB3.0及NVME SSD安装WIN7X64 https://tieba.baidu.com/p/4822034273?pn=1 所有的人都是菜鸟过来的, 不过有些人懂得自己动手找到答案: 有些人 ...
- win7 nvme 支持补丁_UpdatePack7R2 v20.8.13 Win7 更新补丁包
UpdatePack 7,由俄罗斯人Simplix制作的Windows 7 更新补丁安装包,Win7累积更新离线安装包,整合所有关键更新和安全更新及NVMe/USB3.0驱动,使用它可以将累积更新封装 ...
- 详解:什么是NVMe?
微信公众号 乐生活与爱IT 编者按: 昨天在<Why NVMe ?>曾提到:NVMe标准协议除了建立了通用兼容的闪存接口协议以外,还针对闪存存储的特点,提供了低延时.高并发以及低功耗的特性 ...
- linux nvme固态硬盘,Linux PCIe SSD NVME 性能调优篇
直接来干货!怎么调优 PBlaze IV PCIe SSD NVMe. Go! 1. 中断绑定 在Redhat 6.5中的NVMe驱动会自动把全部的中断向量绑定到core0上,如果有多个SSD, c ...
- 性能对比|FASS iSCSI vs NVMe/TCP
前 情 回 顾 在上一篇文章<iSCSI vs iSER vs NVMe-TCP vs NVMe-RDMA >中我们介绍了大道云行FASS全闪分布式存储系统所支持的几种存储协议,现在我们将 ...
- NVMe 协议之Multi-Streams和Directives
Multi-Streams多流 多流是企业级SSD的一个新特性,通过使用多流特性,可以显著提高SSD的垃圾回收效率,从而提高性能和延长寿命. 在SSD的应用场景中,可能有多个不同的应用在对SSD进行写 ...
- NVMe 2.0a - Sanitize
目录 8.21 Sanitize Operations 8.21.1 NVMe 2.0对sanitize的改动有四点: 1. Sanitize Status log page更新要在NVM subsy ...
最新文章
- 【实用】表维护视图SM30增加自定义按钮的实现
- 人工智能,人脸识别门禁下的校园考勤
- Nginx的官方简介
- 只有6个引脚的单片机,居然可以玩游戏。
- 以LeNet-5为例理解CNN
- mysql 1016 145_Mysql中出现 errno:145的解决方法
- 【PostgreSQL-9.6.3】设置log参数
- thinkphp5每周学习总结 1026
- 利用PCA降维的手工计算实例
- webstorm设置字体没有反应
- 正大国际琪貨纯手召:期货交易中的五大忌
- A DIRT-T APPROACH TO UNSUPERVISED DOMAIN ADAPTATION
- image库的使用笔记
- Mysql解决微信特殊符号昵称入库报错乱码
- 我设计开发的第一个产品发布了,微信小程序“集美装修效果图“
- 什么是 word embedding?
- 你们要的Java学习路线图,来喽
- [十月往昔]——Linux内核中的内存管理浅谈
- FASS全闪高性能文件网关解决方案
- 如何长时间坚持一件事情