以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规范中扮演着至关重要的角色,旨在提升设备故障快速诊断的能力。以下是该节内容的详细分析解读:
-
Telemetry数据跟踪要求:
-
-
TEL-1
要求设备必须记录其运行历史和任何有助于问题调试的关键参数,确保当设备出现问题时有足够丰富的运行记录可供分析。
-
-
故障原因标识符管理:
-
-
TEL-4
规定,在Telemetry控制器触发和主机触发的日志页面中,原因标识符字段应当始终记录最新的故障标识符,即便设备经历电源循环或复位,也不应清除这些标识符,以保持故障历史记录的一致性和连续性。
-
-
Telemetry数据区域规范:
-
-
规定了Telemetry数据区域1和2的标准格式,适用于Telemetry Host-Initiated Log(日志标识符07h)和Telemetry Controller-Initiated Log(日志标识符08h)。这两个区域分别用于存储不影响当前I/O性能/延迟的数据和影响I/O性能/延迟的数据。
-
-
-
数据区域3和4预留用于供应商提供的特定调试数据。若供应商需要用于根因分析的特定数据超过了数据区域3的容量,则额外的特定数据应放入数据区域4。
-
-
一致性与透明度:
-
-
主机和控制器触发的Telemetry日志页面中,无论数据来自何处,数据区域1和2所报告的信息应始终保持一致,以确保跨不同触发源的数据统一和易于比较。
-
4.9.14.2节详细定义了一系列事件类别的信息,这些类别是为了协助调试设备问题而设计的。事件类别的目的是为数据中心NVMe SSD在运行过程中可能出现的各种异常情况或值得关注的行为提供详细的分类记录。以下是各事件类别的解读:
-
Timestamp Debug Class (01h):此事件类别记录与时间戳相关的调试信息,可能包括设备操作的时间点、周期性任务的执行时间等,用于分析系统时序和响应时间问题。
-
PCIe Debug Class (02h):此类别关注与PCI Express(PCIe)接口相关的事件,比如数据传输错误、链路层事件、电气信号异常等,有助于解决物理层通信问题。
-
NVMe Debug Class (03h):这一类别的事件集中在NVMe协议层面,包括但不限于命令处理错误、队列溢出、资源冲突等,用于诊断NVMe控制器内部逻辑和功能异常。
-
Reset Debug Class (04h):这类事件记录了与设备复位有关的情况,如意外复位、软件触发的复位、硬件故障引发的复位等,有助于查明导致复位的根本原因。
-
Boot Sequence Debug Class (05h):此事件类别追踪设备启动序列中的问题,如固件加载失败、初始化过程中的异常等,对于优化启动过程和确定开机故障非常关键。
-
Firmware Assert Debug Class (06h):记录固件内部assert异常事件,当固件检测到不应该发生的条件或状态时触发,用于开发和测试阶段的代码质量保证,以及生产环境中发现潜在软件缺陷。
-
Temperature Debug Class (07h):温度相关事件,可能涉及到过热警告、温度阈值突破等,对于热管理系统和散热问题的调试尤为有用。
-
Media Debug Class (08h):介质相关的事件,例如NAND闪存芯片的操作错误,如编程失败、擦除失败、读取错误等,有助于评估和改善闪存介质的可靠性和耐久性。
-
Media Wear Class (09h):该类别关注闪存磨损状态,如写入次数过多导致的区块老化、读干扰迁移、数据保持重写等现象,有助于评估SSD剩余寿命及优化写入策略。
-
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版正式发布!