显存 ECC 与 Row Remap:二手 GPU 验收的硬判据
二手 GPU 验收里,跑分能过不代表显存健康。ECC 错误计数、页退役、行重映射这三项是硬判据,而且都能通过 nvidia-smi 直接读出来,不需要额外工具。
一、三条查询命令
nvidia-smi -q -d ECC nvidia-smi -q -d PAGE_RETIREMENT nvidia-smi -q -d ROW_REMAPPER
也可以组合查:nvidia-smi -q -d MEMORY,ECC。注意 -d 不能与 -u/--unit 或 XML 格式同时使用。
二、Volatile 与 Aggregate 的区别,决定你怎么判
ECC 错误按两个时间尺度统计:Volatile 是自上次驱动加载以来检测到的错误数(Linux 下在不启用持久化时,每次运行计算程序都会重置);Aggregate 是永久保留的生命周期计数器。
所以看二手卡要看 Aggregate。只看 Volatile 会被驱动重载清零骗过去——一台显存有问题的机器,重载驱动后 Volatile 归零,看起来是干净的。
还有一条关键限制:Ampere 及之后的产品,官方不支持清除 aggregate 计数(nvidia-smi 文档原文:Clearing aggregate counts is not supported on Ampere+)。重置命令是 nvidia-smi -p 0(清 volatile)或 -p 1(清 aggregate),在 Ampere+ 上前者对硬件问题没有洗白作用,后者根本不被支持。这条同时也是防伪依据。
三、字段结构与判定
Ampere 及之后的 ECC 输出字段与 Turing 不同,看的是 SRAM Uncorrectable Parity、SRAM Uncorrectable SEC-DED 以及 Aggregate Uncorrectable SRAM Sources 的细分(SRAM L2 / SM / Microcontroller / PCIE / Other),另有修复标志位 Channel Repair Pending、TPC Repair Pending、Unrepairable Memory。
三项检查按以下顺序判:
- ECC 的 DRAM Uncorrectable 大于 0:不可纠正的显存错误,说明有硬件缺陷,直接拒收或走 RMA,不要用「先跑跑看」来赌。
- Remapping Failure Occurred 为 Yes:历史上发生过行重映射失败,重映射机制已失效,走 RMA。
- ROW_REMAPPER 的 Pending 为 Yes:有行等待重映射。注意官方明确「必须对 GPU 复位后重映射才生效」,此时要
nvidia-smi -r复位后重新查询,而不是当场判死。 - Bank Remap Availability Histogram 全为 None:可重映射的 bank 资源已耗尽,再出问题就无处可换,属于高风险。
- PAGE_RETIREMENT 的 Pending 为 Yes:有页将在下次重启后进黑名单,说明近期有页因 ECC 错误退役。
四、复位与恢复动作
复位命令 nvidia-smi -r(默认 Function Level Reset),需要 root,且必须保证所有占用该卡的应用已退出。涉及 NVLink 连接时要看 PEER 复位规则:Ampere+ 在 Fabric Manager 运行时可以单独复位,Pre-Ampere 或 Fabric Manager 未运行时要连同 PEER 一起复位。
另外有 GPU Recovery Action 字段,常见值为 None、Reset、Reboot、Drain P2P、Drain and Reset。看到非 None 时按提示动作处理,不要跳过。
五、写进验收单的判据
建议把三项检查结果原样落到验收记录里:aggregate 的 DRAM Uncorrectable 计数、ROW_REMAPPER 的四项状态、Bank Remap Availability 分布。这三组数据是可复核的客观量,比「跑分通过」有说服力,也比看一眼温度可靠。
口径提示:命令、字段名、复位规则与「Ampere+ 不支持清除 aggregate」均取自 NVIDIA nvidia-smi 官方文档。本文不给出「aggregate 计数到多少算不合格」的统一阈值——不同批次、不同负载历史差异很大,阈值应由项目方按机型与用途自定,写死一个数字反而会造成误判。
