OCP NVME SSD规范解读-12.Telemetry日志要求

2024-03-15 23:44

本文主要是介绍OCP NVME SSD规范解读-12.Telemetry日志要求,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

图片

以NVME SSD为例,通常大家想到的是观察SMAR-log定位异常,但是这个信息在多数情况下无法只能支撑完整的定位链路。

图片

定位能力的缺失和低效是数据中心问题解决最大的障碍。

图片

为了解决这个问题,Meta的做法是推进OCP组织加入延迟记录页面。同时NVME协议也增加了Telemetry盘片的故障定位能力。

图片

4.9章节详述了主机和控制器触发的Telemetry日志功能,这是数据中心NVMe SSD规范的一部分,旨在增强客户和供应商对于设备监控和调试的可见性。这一功能通过对设备生成的数据进行分区和标准化格式化,使得快速定位和诊断故障成为可能。

图片

设计原理是通过提供一种机制让主机能够主动请求或者控制器自身在发生关键事件时生成Telemetry日志数据,以便于实时或事后分析设备行为和性能问题。数据划分为影响I/O和不影响I/O两类:

  • 数据区域1存放那些不影响正在进行的活动命令的性能或延迟的监控和/或调试数据。

  • 而数据区域2则储存会影响这些命令性能或延迟的监控和/或调试数据。

无论是主机触发还是控制器触发的遥测日志中,数据区域1和2所使用的数据格式相同,并且两个来源的日志数据应当是相同的报告数据。

图片

针对目前已有的一些NVMe日志已经被整合进Telemetry数据区域1中,以便在轮询Telemetry数据区域1时可以一次性收集所有监控信息。

4.9.7节专门讨论了Telemetry数据的要求,它在数据中心NVMe SSD规范中扮演着至关重要的角色,旨在提升设备故障快速诊断的能力。以下是该节内容的详细分析解读:

  1. Telemetry数据跟踪要求:

    • TEL-1要求设备必须记录其运行历史和任何有助于问题调试的关键参数,确保当设备出现问题时有足够丰富的运行记录可供分析。

图片

  1. 故障原因标识符管理:

    • TEL-4规定,在Telemetry控制器触发和主机触发的日志页面中,原因标识符字段应当始终记录最新的故障标识符,即便设备经历电源循环或复位,也不应清除这些标识符,以保持故障历史记录的一致性和连续性。

  1. Telemetry数据区域规范:

    • 规定了Telemetry数据区域1和2的标准格式,适用于Telemetry Host-Initiated Log(日志标识符07h)和Telemetry Controller-Initiated Log(日志标识符08h)。这两个区域分别用于存储不影响当前I/O性能/延迟的数据和影响I/O性能/延迟的数据。

图片

    • 数据区域3和4预留用于供应商提供的特定调试数据。若供应商需要用于根因分析的特定数据超过了数据区域3的容量,则额外的特定数据应放入数据区域4。

  1. 一致性与透明度:

    • 主机和控制器触发的Telemetry日志页面中,无论数据来自何处,数据区域1和2所报告的信息应始终保持一致,以确保跨不同触发源的数据统一和易于比较。

4.9.14.2节详细定义了一系列事件类别的信息,这些类别是为了协助调试设备问题而设计的。事件类别的目的是为数据中心NVMe SSD在运行过程中可能出现的各种异常情况或值得关注的行为提供详细的分类记录。以下是各事件类别的解读:

图片

  1. Timestamp Debug Class (01h):此事件类别记录与时间戳相关的调试信息,可能包括设备操作的时间点、周期性任务的执行时间等,用于分析系统时序和响应时间问题。

  2. PCIe Debug Class (02h):此类别关注与PCI Express(PCIe)接口相关的事件,比如数据传输错误、链路层事件、电气信号异常等,有助于解决物理层通信问题。

图片

  1. NVMe Debug Class (03h):这一类别的事件集中在NVMe协议层面,包括但不限于命令处理错误、队列溢出、资源冲突等,用于诊断NVMe控制器内部逻辑和功能异常。

图片

  1. Reset Debug Class (04h):这类事件记录了与设备复位有关的情况,如意外复位、软件触发的复位、硬件故障引发的复位等,有助于查明导致复位的根本原因。

图片

  1. Boot Sequence Debug Class (05h):此事件类别追踪设备启动序列中的问题,如固件加载失败、初始化过程中的异常等,对于优化启动过程和确定开机故障非常关键。

  2. Firmware Assert Debug Class (06h):记录固件内部assert异常事件,当固件检测到不应该发生的条件或状态时触发,用于开发和测试阶段的代码质量保证,以及生产环境中发现潜在软件缺陷。

图片

  1. Temperature Debug Class (07h):温度相关事件,可能涉及到过热警告、温度阈值突破等,对于热管理系统和散热问题的调试尤为有用。

图片

  1. Media Debug Class (08h):介质相关的事件,例如NAND闪存芯片的操作错误,如编程失败、擦除失败、读取错误等,有助于评估和改善闪存介质的可靠性和耐久性。

图片

  1. Media Wear Class (09h):该类别关注闪存磨损状态,如写入次数过多导致的区块老化、读干扰迁移、数据保持重写等现象,有助于评估SSD剩余寿命及优化写入策略。

图片

  1. Statistic Snapshot Class (0Ah):统计快照类事件,记录了设备某一时刻的关键统计指标,如当前NVMe和DSSD功率状态、程序/擦除失败次数、读扰动写入量、保持重写量等,用于长期性能趋势分析和健康状态监控。

图片

以上事件类别共同构建了一个强大的调试工具箱,通过捕捉和解析这些事件,可以有效地对数据中心NVMe SSD的运行状态进行全面深入的故障诊断和性能调优。

小编每日撰文不易,如果您看完有所受益,欢迎点击文章底部左下角“关注”并点击“分享”、“在看”,非常感谢!

精彩推荐:

  • 固态存储是未来|浅析SSD架构的演进与创新技术

  • 论文解读:NAND闪存中读电压和LDPC纠错码的高效设计

  • 华为新发布磁电存储“王炸”,到底是什么?

  • 关于SSD LDPC纠错能力的基础探究

  • 存储系统如何规避数据静默错误?

  • PCIe P2P DMA全景解读

  • 深度解读NVMe计算存储协议

  • 对于超低延迟SSD,IO调度器已经过时了吗?

  • 浅析CXL P2P DMA加速数据传输的原理

  • HDD回暖于2024,与SSD决战于2028

  • SSD固态硬盘的黄金原则:抱最高的希望,做最坏的打算

  • PCIe 6.0生态业内进展分析总结

  • 详细解读QLC SSD无效编程问题

  • NVMe SSD IO压力导致宕机案例解读

  • 浅析PCIe 6.0功能更新与实现的挑战

  • 过度加大SSD内部并发何尝不是一种伤害

  • FIO测试参数与linux内核IO栈的关联分析

  • PCIe surprise down异常与DPC功能分析

  • 过度加大SSD内部并发何尝不是一种伤害

  • NVMe over CXL技术如何加速Host与SSD数据传输?

  • 为什么QLC NAND才是ZNS SSD最大的赢家?

  • SSD在AI发展中的关键作用:从高速缓存到数据湖

  • 浅析不同NAND架构的差异与影响

  • SSD基础架构与NAND IO并发问题探讨

  • 字节跳动ZNS SSD应用案例解析

  • SSD数据在写入NAND之前为何要随机化?

  • 深度剖析:DMA对PCIe数据传输性能的影响

  • NAND Vpass对读干扰和IO性能有什么影响?

  • HDD与QLC SSD深度对比:功耗与存储密度的终极较量

  • NVMe SSD:ZNS与FDP对决,你选谁?

  • 如何通过优化Read-Retry机制降低SSD读延迟?

  • 关于硬盘质量大数据分析的思考

  • 存储系统性能优化中IOMMU的作用是什么?

  • 全景解析SSD IO QoS性能优化

  • NVMe IO数据传输如何选择PRP or SGL?

  • 浅析nvme原子写的应用场景

  • 多维度深入剖析QLC SSD硬件延迟的来源

  • 浅析PCIe链路LTSSM状态机

  • 浅析Relaxed Ordering对PCIe系统稳定性的影响

  • 实战篇|浅析MPS对PCIe系统稳定性的影响

  • 浅析PCI配置空间

  • 浅析PCIe系统性能

  • 存储随笔《NVMe专题》大合集及PDF版正式发布!

这篇关于OCP NVME SSD规范解读-12.Telemetry日志要求的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/813655

相关文章

SpringBoot日志级别与日志分组详解

《SpringBoot日志级别与日志分组详解》文章介绍了日志级别(ALL至OFF)及其作用,说明SpringBoot默认日志级别为INFO,可通过application.properties调整全局或... 目录日志级别1、级别内容2、调整日志级别调整默认日志级别调整指定类的日志级别项目开发过程中,利用日志

深度剖析SpringBoot日志性能提升的原因与解决

《深度剖析SpringBoot日志性能提升的原因与解决》日志记录本该是辅助工具,却为何成了性能瓶颈,SpringBoot如何用代码彻底破解日志导致的高延迟问题,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言第一章:日志性能陷阱的底层原理1.1 日志级别的“双刃剑”效应1.2 同步日志的“吞吐量杀手”

java -jar example.jar 产生的日志输出到指定文件的方法

《java-jarexample.jar产生的日志输出到指定文件的方法》这篇文章给大家介绍java-jarexample.jar产生的日志输出到指定文件的方法,本文给大家介绍的非常详细,对大家的... 目录怎么让 Java -jar example.jar 产生的日志输出到指定文件一、方法1:使用重定向1、

c++日志库log4cplus快速入门小结

《c++日志库log4cplus快速入门小结》文章浏览阅读1.1w次,点赞9次,收藏44次。本文介绍Log4cplus,一种适用于C++的线程安全日志记录API,提供灵活的日志管理和配置控制。文章涵盖... 目录简介日志等级配置文件使用关于初始化使用示例总结参考资料简介log4j 用于Java,log4c

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

nginx配置错误日志的实现步骤

《nginx配置错误日志的实现步骤》配置nginx代理过程中,如果出现错误,需要看日志,可以把nginx日志配置出来,以便快速定位日志问题,下面就来介绍一下nginx配置错误日志的实现步骤,感兴趣的可... 目录前言nginx配置错误日志总结前言在配置nginx代理过程中,如果出现错误,需要看日志,可以把

C语言自定义类型之联合和枚举解读

《C语言自定义类型之联合和枚举解读》联合体共享内存,大小由最大成员决定,遵循对齐规则;枚举类型列举可能值,提升可读性和类型安全性,两者在C语言中用于优化内存和程序效率... 目录一、联合体1.1 联合体类型的声明1.2 联合体的特点1.2.1 特点11.2.2 特点21.2.3 特点31.3 联合体的大小1

Python标准库datetime模块日期和时间数据类型解读

《Python标准库datetime模块日期和时间数据类型解读》文章介绍Python中datetime模块的date、time、datetime类,用于处理日期、时间及日期时间结合体,通过属性获取时间... 目录Datetime常用类日期date类型使用时间 time 类型使用日期和时间的结合体–日期时间(

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

C语言中%zu的用法解读

《C语言中%zu的用法解读》size_t是无符号整数类型,用于表示对象大小或内存操作结果,%zu是C99标准中专为size_t设计的printf占位符,避免因类型不匹配导致错误,使用%u或%d可能引发... 目录size_t 类型与 %zu 占位符%zu 的用途替代占位符的风险兼容性说明其他相关占位符验证示