105、 PCIE性能分析工具:从一次诡异的丢包说起
上个月调试一块自定义PCIE采集卡,DMA连续传输到一半总是不明原因断流。逻辑分析仪抓到的TLP包看起来完好无损,但上位机就是收不到最后几个毫秒的数据。硬件同事赌咒发誓说链路训练没问题,驱动工程师指着波形图说DMA引擎肯定没停。问题到底出在哪儿?
性能工具的价值
这种时候,性能分析工具就是工程师的“第二双眼睛”。PCIE链路看似透明,实则暗藏玄机:TLP排序、流量控制、错误重传、时钟补偿……任何一个环节出问题,都可能让看似正常的数据流在某个角落悄悄消失。
常用工具三板斧
lspci -vvv这个老伙计得放在第一位。很多新手只关心设备是否枚举成功,却忽略了-vvv后面的宝藏。上次有个坑:LTSSM状态显示“Recovery”,但设备居然还能传数据。仔细一看,链路速率在Gen1和Gen2之间反复横跳——原来是参考时钟抖动太大,链路不断触发重训练。
# 别只看第一行,往下翻!lspci-vvv-s01:00.0|gr