NVIDIA GPU 内存错误管理

本文档介绍了 NVIDIA® 100 GPU 和 NVIDIA 800 GPU 中引入的新的内存错误恢复功能。

1. 概述

NVIDIA® Ampere 架构和 NVIDIA Hopper 架构引入了新的内存错误恢复功能,这些功能提高了韧性并避免影响不受影响的应用程序。 新功能改进了图形处理单元 (GPU) 对内存错误的响应的各个方面,从而提高了错误处理和恢复过程的整体稳健性。 以下所有信息也适用于 NVIDIA 800 系列 GPU。

错误处理和响应功能包括

  • 错误遏制

  • 动态页面下线

  • 行重映射

  • 不可纠正错误到可纠正错误的覆盖率提高了 10%

  • 单比特错误 (SBE) 的 ECC 纠正

在本应用说明中提及 ECC 错误时,我们重点关注不可纠正的高带宽内存 (HBM) 内存错误。 SRAM 故障模式在 SRAM 故障模式的 RMA 策略阈值中讨论。 可纠正的 HBM 错误不在本应用说明的范围之内。

2. 支持的 GPU

错误遏制和行重映射是 GPU 架构中的两个独立功能。 下表显示了支持这些功能的 GPU。

表 1 支持的 GPU

NVIDIA Ampere GA100

NVIDIA Ampere GA10x

Ada AD10x

Hopper GH100

错误遏制

X

X

行重映射

X

X

X

X

动态页面下线

X

X

3. 错误遏制

NVIDIA Ampere 架构将错误遏制概念引入 NVIDIA GPU。 错误遏制的好处是能够限制不可纠正的 ECC 错误对 GPU 应用程序的影响。 在 NVIDIA Volta™ 等早期架构上,不可纠正的 ECC 错误会影响当前正在执行的所有 GPU 工作负载。 在 NVIDIA 数据中心级 GPU(如 NVIDIA A100 和 NVIDIA H100)上,影响将仅限于遇到错误的应用程序。 所有其他工作负载将继续不受影响地运行(在准确性和性能方面),并且可以启动新的工作负载。 与早期的 GPU 架构不同,NVIDIA 100 系列 GPU 在发生内存错误时不需要 GPU 重置。

注意

虽然最常发生的不可纠正错误类别受到遏制,但在极少数情况下,不可纠正错误仍然不受遏制,并且可能会影响 GPU 中正在处理的所有工作负载。

4. 动态页面下线

动态页面下线提高了 NVIDIA 100 系列 GPU 对不可纠正的 ECC 错误的韧性和可用性。 一旦 NVIDIA 驱动程序识别出帧缓冲区内存中不可纠正错误的位置,它就会将包含错误的页面标记为不可用。 一旦页面被标记为不可用,任何当前正在执行或新启动的工作负载都不会分配有问题的页面。

动态页面下线存在于 NVIDIA 100 系列 GPU 中,从 NVIDIA Ampere 架构开始。 它在不支持错误遏制的早期 NVIDIA GPU 代中不可用。

支持动态页面下线的 GPU 不需要 GPU 重置即可从大多数不可纠正的 ECC 错误中恢复。

在页面被标记为不可用之后,它将不会映射到任何当前正在运行或新启动的 CUDA 内核的地址空间。

5. 行重映射

行重映射是一种硬件机制,用于提高从 NVIDIA Ampere 架构开始的 GPU 上的帧缓冲区内存的可靠性。 此功能用于防止使用已知的退化内存位置。 行重映射功能是早期 GPU 中使用的页面退役方案的替代方案。 HBM 中的每个 bank 都配备了硬件备用行。 与传统的页面退役相反,行重映射器用备用单元替换退化的内存单元,以避免在软件中下线内存区域。 这与动态页面下线的不同之处在于,内存是在硬件级别固定的,并且不会在地址空间中留下软件可见的空洞。 行重映射过程需要 GPU 重置才能生效,并且将在 GPU 的整个生命周期内保持持久性。

下表描述了页面退役和行重映射之间的差异。

表 2 页面退役与行重映射

功能

传统 GPU 的页面退役

A100/H100 的行重映射

可用的重映射/退役

帧缓冲区最多支持 64 次退役

帧缓冲区最多支持 512 次重映射。

策略更改

一旦退役生效,无论是否发生可纠正或不可纠正的错误,页面都永远无法取消退役

当内存 bank 的保留行耗尽时,由于可纠正错误而进行的重映射可以被不可纠正错误重映射替换。

RMA 标准

GPU 上的页面退役阈值通常会导致调查 GPU 是否值得 RMA

请参阅 行重映射的 RMA 策略阈值

待处理更改的应用

需要重新加载内核模块或重新初始化驱动程序或 GPU 重置

需要 GPU 重置。

6. 对不可纠正的受控 ECC 错误的响应

与以前的 GPU 架构一样,当检测到不可纠正的 ECC 错误时,NVIDIA 驱动程序软件将执行错误恢复。 错误遏制确保错误数据不会继续传播,并且受影响的应用程序将被终止。

  • 不可纠正的受控 ECC 错误是错误遏制过程成功的不可纠正的 ECC 错误。

  • 不可纠正的不受控 ECC 错误是错误遏制过程不成功的不可纠正的 ECC 错误。

动态页面下线将包含故障内存的页面标记为不可用。 这确保了新的分配不会落在包含故障内存的页面上。 不受影响的应用程序将继续运行,并且可以在此 GPU 上启动其他工作负载,而无需 GPU 重置。

当 GPU 重置作为常规 GPU/VM 服务窗口的一部分发生时,行重映射会在硬件中修复内存,而不会在地址空间中创建任何空洞,并且下线的页面将被回收。

NVIDIA A100/H100 Response to Uncorrectable Contained ECC Error

图 1 NVIDIA A100/H100 对不可纠正的受控 ECC 错误的响应

7. 错误恢复和响应标志

以下是客户端错误恢复和响应所需的标志列表

  • 重置挂起标志

    • 设置后,此标志指示 GPU 遇到了不可纠正的、不受控的错误,需要 GPU 重置才能恢复。 为了恢复运行,应尽快重置 GPU。

    • 此标志也存在于上一代产品 (NVIDIA V100) 上,并期望相同的客户端响应。

  • 行重映射挂起标志

    • 此标志指示行重映射将在下次 GPU 重置时发生。

    • 即使设置了此标志,不受影响的应用程序也可以继续运行,而不会影响准确性和性能,并且可以启动新的工作负载。

    • 这对于识别实时虚拟机 (VM) 迁移到此 GPU 的准备情况很有用,如果实时 VM 将迁移到此 GPU,则应重置此 GPU。

  • 行重映射失败标志

    • 有关行重映射失败的定义,请参阅行重映射的 RMA 策略阈值。

  • 排空和重置标志

    • NVIDIA A100/H100 GPU 支持称为多实例 GPU (MIG) 的 GPU 分区功能。

    • 启用 MIG 后,此标志指示至少一个实例受到影响。 应排空其他 GPU 实例上的任何工作,并且 GPU 应尽早进行重置以实现完全恢复。

    • 即使设置了此标志,不受影响的 GPU 分区上的应用程序也可以继续运行,而不会对准确性和性能产生任何影响。

注意

这些客户端标志当前通过 SMBPBI 公开。

8. 用户可见的统计信息

以前,最终用户或系统管理员可以使用页面退役计数来监视 GPU 的健康状况(以及可能的 RMA 条件),并确定是否重置 GPU 或重新加载模块以使页面下线生效。 出于相同的目的,行重映射统计信息将向用户公开,以指示 GPU 内存的健康状况。 本节介绍可通过带内和带外报告机制获得的行重映射统计信息。

  • 带内报告

    • XID 错误日志(有关不可纠正的 ECC 错误的 XID 日志示例列表,请参阅表 2) - XID 94:此 XID 指示发生了受控 ECC 错误 - XID 95:此 XID 指示发生了不受控 ECC 错误 - XID 63:此 XID 指示成功将行重映射条目记录到 InfoROM - XID 64:此 XID 指示将行重映射条目记录到 InfoROM 失败

    • NVML/nvidia-smi

  • 带外报告 (SMBPBI)

    • 重映射的行数(可纠正和不可纠正),这是 InfoROM 中记录的条目数,而不是硬件中重映射的条目数。

    • 行重映射挂起布尔值

    • 行重映射失败布尔值

    • 分桶计数

    • 表 3 列出了用于错误报告的新 SMBPBI API。 有关更多详细信息,请参阅 NVIDIA SMBus Post-Box Interface (SMBPBI) 软件设计指南 (DG-06034-002)。

表 3 不可纠正的 ECC 错误 XID 日志示例

错误类型

XID 日志

启用 MIG 的受控错误

NVRM: Xid (PCI:0000:01:00 GPU-I:05): 94, pid=7194, Contained: CE User Channel (0x9). RST: No, D-RST: No

禁用 MIG 的受控错误

NVRM: Xid (PCI:0000:01:00): 94, pid=7062, Contained: CE User Channel (0x9). RST: No, D-RST: No

不受控错误

NVRM: Xid (PCI:0000:01:00): 95, pid=7062, Uncontained: LTC TAG (0x2,0x0). RST: Yes, D-RST: No

表 4 NVIDIA A100 内存错误报告的 SMBPBI API

操作码

描述

0x1E

请求 ECC 统计信息(格式 V6)

0x20

请求与行重映射相关的统计信息

表 5 显示了所有重映射资源都可用的分桶计数示例。

表 5 分桶计数示例 #1

桶名称

Bank 重映射可用性(仅作为参考显示)

每个桶的 Bank 数量

最大

8

640

7

0

部分

2 到 6

0

1

0

0

0

注意

Bank 重映射可用性列仅供参考。 该信息无法通过 API 或 nvidia-smi 获得。

表 6 显示了分桶计数的示例,其中 635 个 bank 有 8 个,3 个 bank 有 7 个,2 个 bank 有一个剩余的重映射资源可用。

表 6 分桶计数示例 #2

桶名称

Bank 重映射可用性(仅作为参考显示)

每个桶的 Bank 数量

最大

8

635

7

3

部分

2 到 6

0

1

2

0

0

注意

Bank 重映射可用性列仅供参考。 该信息无法通过 API 或 nvidia-smi 获得。

9. 行重映射的 RMA 策略阈值

NVIDIA 现场诊断工具确定 GPU 是否符合 RMA 条件。 关于行重映射失败,当行重映射失败标志被设置并由现场诊断验证时,即满足 RMA 标准。 以下任何事件都将触发行重映射失败标志

  • 尝试对 bank 上已重映射了八个不可纠正错误行的不可纠正内存错误进行重映射。

  • 尝试对已重映射的行进行不可纠正内存错误的重映射,并且可能发生在对同一 bank 的总重映射少于八次的情况下。

  • 发生 512 次不可纠正内存错误的总重映射后。

行重映射失败标志可通过带内 (NVML/nvidia-smi) 和带外 (SMBPBI) 工具获得。

10. SRAM 不可纠正错误

NVIDIA 现场诊断工具将确定 GPU 是否符合 RMA 条件。 关于 SRAM 不可纠正错误,对于下面概述的事件,满足 RMA 标准。 以下任何事件都将触发 SRAM 阈值超出标志

  • 奇偶校验保护 SRAM 的地址 bank 中超过 4 个 UCE 唯一计数事件。

  • SECDED ECC 保护 SRAM 的地址 bank 中超过 2 个 UCE 唯一计数事件。

11. 声明

本文档仅供参考,不得视为对产品的特定功能、条件或质量的保证。 NVIDIA Corporation(“NVIDIA”)对本文档中包含的信息的准确性或完整性不作任何明示或暗示的陈述或保证,并且对本文中包含的任何错误不承担任何责任。 NVIDIA 对使用此类信息或因使用此类信息而可能导致的侵犯第三方专利或其他权利的后果不承担任何责任。 本文档不是开发、发布或交付任何材料(如下定义)、代码或功能的承诺。

NVIDIA 保留随时对此文档进行更正、修改、增强、改进和任何其他更改的权利,恕不另行通知。

客户应在下订单前获取最新的相关信息,并应验证此类信息是否为最新且完整。

NVIDIA 产品的销售受订单确认时提供的 NVIDIA 标准销售条款和条件的约束,除非 NVIDIA 和客户的授权代表签署的个别销售协议(“销售条款”)另有约定。 NVIDIA 特此明确反对将任何客户通用条款和条件应用于购买本文档中引用的 NVIDIA 产品。 本文档未直接或间接形成任何合同义务。

NVIDIA 产品并非设计、授权或保证适用于医疗、军事、航空、航天或生命支持设备,也不适用于 NVIDIA 产品的故障或失灵可以合理预期会导致人身伤害、死亡或财产或环境损害的应用。 NVIDIA 对 NVIDIA 产品包含和/或用于此类设备或应用不承担任何责任,因此,此类包含和/或使用由客户自行承担风险。

NVIDIA 不保证或声明基于本文档的产品将适用于任何特定用途。 NVIDIA 不一定会执行每个产品的所有参数的测试。 客户全权负责评估和确定本文档中包含的任何信息的适用性,确保产品适合并满足客户计划的应用,并执行必要的应用测试,以避免应用或产品的默认设置。 客户产品设计中的缺陷可能会影响 NVIDIA 产品的质量和可靠性,并可能导致超出本文档中包含的附加或不同条件和/或要求。 NVIDIA 对可能基于或归因于以下原因的任何默认设置、损坏、成本或问题不承担任何责任:(i) 以任何违反本文档的方式使用 NVIDIA 产品,或 (ii) 客户产品设计。

在本文档项下,未授予 NVIDIA 专利权、版权或其他 NVIDIA 知识产权的任何明示或暗示的许可。 NVIDIA 发布的有关第三方产品或服务的信息不构成 NVIDIA 授予使用此类产品或服务的许可,也不构成对此类产品或服务的保证或认可。 使用此类信息可能需要获得第三方专利或其他知识产权的许可,或获得 NVIDIA 专利或其他 NVIDIA 知识产权的许可。

只有在事先获得 NVIDIA 书面批准的情况下,才允许复制本文档中的信息,复制时不得进行更改,并且必须完全遵守所有适用的出口法律和法规,并附带所有相关的条件、限制和声明。

本文档以及所有 NVIDIA 设计规范、参考板、文件、图纸、诊断程序、列表和其他文档(统称为“材料”)均按“原样”提供。 NVIDIA 对材料不作任何明示、暗示、法定或其他形式的保证,并明确声明不承担任何关于不侵权、适销性和特定用途适用性的暗示保证。 在法律未禁止的范围内,在任何情况下,NVIDIA 均不对因使用本文档而引起的任何损害(包括但不限于任何直接、间接、特殊、附带、惩罚性或后果性损害,无论因何种原因造成,也无论责任理论如何)负责,即使 NVIDIA 已被告知可能发生此类损害。 尽管客户可能因任何原因遭受任何损害,但 NVIDIA 对本文所述产品的对客户的累计总责任应根据产品的销售条款进行限制。

11.1. 商标

NVIDIA 和 NVIDIA 徽标是 NVIDIA Corporation 在美国和其他国家/地区的商标或注册商标。 其他公司和产品名称可能是与其相关的各自公司的商标。