迅维网

查看: 2578|回复: 1
打印 上一主题 下一主题

使用 direct-mem-test 和 dmgg 脚本进行 AMD 显卡内存测试

  [复制链接]
跳转到指定楼层
1#
发表于 2022-6-4 10:39:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式 来自: 广东深圳 来自 广东深圳

马上注册,获取阅读精华内容及下载权限

您需要 登录 才可以下载或查看,没有帐号?注册

x
在对 Nvidia 显卡进行故障排除时,一组服务实用程序 MODS(模块化诊断软件)非常有帮助,尤其是 MATS 程序,它可以让您搜索有故障的显存芯片。
对于 AMD 显卡,在解决显存问题时,可以使用 tserver 程序,以及 Vasily Galkin 编写的 direct-mem-test.py 脚本(Github 上名为 galkinvv 的存储库)和/或 dmgg.py 脚本来自昵称 crimfell 的开发人员。
本文讨论了脚本 direct-mem-test.py 和 dmgg.py 在 AMD Radeon 显卡的示例中的实际使用,该显卡具有略微“炸”的显存。
什么是检查视频内存的脚本,为什么需要它?
该脚本是Linux操作系统的一组命令,用于测试显卡中VRAM的运行情况。
根据直接内存测试脚本 (dmgg.py) 执行的命令序列允许您测试来自任何制造商的视频卡,包括 AMD 和 Nvidia。但是,对于 Nvidia 显卡,使用 MATS 程序仍然更好,因为与脚本相比,它具有改进的功能。
脚本 direct-mem-test.py在 Github 上可用,dmgg.py 在 vlab 论坛上可用(需要注册和特殊用户身份)。此外,这两个脚本都可以在 Google Drive 上下载:
要使用任何脚本的功能,您需要将其源代码插入到一个文件中,例如名称为 direct-mem-test.py,使其可执行,之后您可以开始检查显卡。
部分页面截图,包含direct-mem-test脚本的源代码:

                               
登录/注册后看高清大图
运行诊断脚本所获得的信息有助于查找显卡上的故障内存库。通常它们会因过热而失效,显卡在严重污染的冷却系统或无情采矿期间会暴露在这些环境中。GPU 中的视频内存或内存控制器存在问题通常由连接到有问题的视频卡的显示屏上的垂直伪影指示。在这种情况下,设备管理器中的 Windows 操作系统会给出错误 43。
在具有 8GB 内存的 AMD Radeon RX 470 显卡上因高温采矿而杀死的 VRAM 会产生“有趣”的画面,即使在计算机初始化时也是如此:
如何使用脚本检查显卡的内存芯片?
您可以使用任何 Linux 发行版运行 direct-mem-test 脚本,例如 xubuntu 18.04。它们在以控制台和图形模式运行的计算机上运行。
检查半死机显卡时,您需要使用控制台操作模式,因为内存/GPU 存在问题通常不允许您使用图形环境。同时,如果系统的显卡有问题,下载会在其中一个阶段停止,但仍然可以在终端中工作。在这种情况下,在使用脚本之前,您需要配置主板的 BIOS,以便在计算机启动时主要是内置处理器,或者另一个已知可以工作的显卡。
启动系统后,需要了解操作系统为它分配了哪些内存地址空间。
为此(在引导系统并进入系统后),请在终端中输入命令:
lspci -v
然后找到正在修复的显卡的最大PCI-E BAR(Base Address Register)对应的地址。在控制台模式下(在终端中)搜索有关所需视频卡的信息时,您可以使用 PageUp-PageDown 按钮以及按下 Shift 按钮。
带有 v 键的 lspci 命令显示的有关视频卡的信息示例:
06:00.0 VGA 兼容控制器:Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] (rev ef) (prog-if 00 [VGA 控制器])子系统:华硕电脑公司 埃尔斯米尔 [Radeon RX 470/480/570/580]标志:总线主机、快速开发、延迟 0、IRQ 41b0000000 处的内存(64 位,可预取)[大小=256M]内存为 50000000(64 位,可预取)[size=2M]I/O 端口数为 9000 内存为 50200000(32 位,不可预取)[size=256K]扩展 ROM 在 50240000 [禁用] [大小=128K]功能:<访问被拒绝>使用的内核驱动程序:amdgpu内核模块:amdgpu
在这种情况下,将显示有关 AMD Radeon RX 574 显卡的信息,该显卡被分配了具有 64 位地址空间的第六个 PCI-E 总线编号,地址为 b0000000(对于 size=256M)。
要使用 direct-mem-test.py 脚本开始测试此内存,请从它所在的目录执行命令
须藤python3 ./direct-mem-test.py b0000000 10
其中 10 是正在测试的视频内存量,以兆字节为单位。
几兆字节通常足以检查,测试的内存越多,检查所需的时间就越长。
在检查结束时,脚本会给出有关坏字节的信息,以及发生错误的地址(这些数据可用于查找故障芯片),例如:
须藤 ./direct-mem-test.py b0000000 10在 0x0 检测到的第一个错误\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff \xff\xff\xff\xff\xff\xff\xff按错误计数排序的模式:...地址差异:0x224 0x1 0x1f2 0xba 0xa3 0x3c 0x117 0x250x10d 0x19 0x2ba 0x2f 0x64 0x393 0xb7 0x1760x36e 0x1d9 0x3c0b10111011 的第一个地址:0x17地址差异:0x7d 0x14d 0x8e 0x139 0xcc0x3c 0x45 0x24 0xe0 0x3b 0x89 0xd2 0xf90x17 0x3e 0x13c 0x15f 0xee 0x1fnoerr_big+ 的第一个地址:0x0地址差异:总计第一个地址:0x0地址差异:0x1 0x10x1 0x1 0x1 0x1 0x1 0x1 0x1 0x10x1 0x1 0x1 0x1 0x1 0x1 0x1 0x10x1测试的总字节数:4*2621440总错误计数:10444500 - 每 1.003950404519125 OK:41260误码数:5241983、5245280、5241629、5240126、5242356、5243139、5242201、5243584 max-avg= 3134.5714285718277不同的错误模式计数:255在错误之前,以下通过:[]回溯(最近一次通话最后): 中的文件“./direct-mem-test.py”,第 121 行运行测试()文件“./direct-mem-test.py”,第 117 行,在 run_testverify_no_errors_with_data(bytes(random.getrandbits(8) for i in range(len(phys_arr))), "rand")文件“./direct-mem-test.py”,第 97 行,在 verify_no_errors_with_data 中raise Exception("在测试中发现错误" + test_name)例外:在测试 rand 中发现错误
现在您可以使用有关发现问题的地址的信息找到故障芯片。
字符串中的数字 1.003950404519125
总错误计数:10444500 - 每 1.003950404519125 OK:41260
对应于坏内存库的数量。它等于显卡的 VRAM 芯片数量除以该数量(在这种情况下,8/1=8 个内存组/通道)。
在正常工作的视频卡上,脚本将显示一条消息:
在错误之前,以下通过:['rand']
dmgg.py 脚本具有更方便的功能。
使用 dmgg.py 脚本检查显卡
除了direct-mem-test.py之外,在检查的时候,可以使用Crimfell程序员提供的更高级的dmgg.py脚本,它可以可靠地显示出故障的内存芯片的数量,以及给出大概的(需要验证的)信息关于他们的号码(表示有故障的内存通道)。
dmgg.py脚本的启动方式和direct-mem-test.py一样,只是在命令行改了名字,加了一个数字表示显卡上安装的内存芯片的个数,例如:须藤 python3 ./dmgg.py b0000000 2 8
其中 2 是被检查的内存的兆字节数,8 是焊接在视频卡上的内存芯片的数量。
dmgg.py 脚本在检查 AMD Radeon RX478 显卡与一个有问题的内存库(第七或第八)时生成的信息示例:
可能的GPU地址: e0000000 f0000000 c0000000 d0000000 a0000000 b0000000 80000000 90000000 60000000 70000000 40000000 50000000筹码数量设置为:8该测试用于检测坏芯片。警告它可能会给出错误的芯片编号;只有有缺陷的芯片数量才是好的用你附近的 pcie 从右到左逆时针计数筹码芯片 7 和/或 8 在地址出现故障:543424故障芯片数= 1测试的总字节数:4*524288错误总数:32 - 每 63550.06060606061 OK:2097120用法:python3 ./dmmg.py b0000000 1 16如果需要编辑,脚本文件 dmmg.py 位于 USB 的根目录;运行 lspci -v 查找您的 ati 卡地址 默认为 b00000001 是 1MB 内存16 是卡中存储芯片的数量

                               
登录/注册后看高清大图
内存芯片 7 和/或 8 故障的概率很高,可以根据下图中显示的编号找到它们(逆时针计数,从最靠近 PCI-E 插槽的芯片开始) .
Nvidia显卡上内存芯片的位置:

                               
登录/注册后看高清大图
AMD 显卡上内存芯片的位置:

                               
登录/注册后看高清大图
如果视频卡功能齐全,脚本会显示消息没有找到故障芯片,以及其他有用信息:

                               
登录/注册后看高清大图
dmmg.py 脚本显示的有关工作视频卡的文本信息:
可能的GPU地址: e0000000 f0000000 c0000000 d0000000 a0000000 b0000000 80000000 90000000 60000000 70000000 40000000 50000000筹码数量设置为:8该测试用于检测坏芯片。警告它可能会给出错误的芯片编号;只有有缺陷的芯片数量才是好的用你附近的 pcie 从右到左逆时针计数筹码未发现故障芯片故障芯片数= 0测试的总字节数:4*2097152错误总数:0 - 每 8388608.0 OK:8388608用法:python3 ./dmmg.py b0000000 1 16如果需要编辑,脚本文件 dmmg.py 位于 USB 的根目录;运行 lspci -v 查找您的 ati 卡地址 默认为 b00000001 是 1MB 内存16 是卡中存储芯片的数量结论
用于测试 AMD 显卡的脚本可以极大地促进与内存芯片相关的故障排除过程。
它们的使用大大缩小了寻找有问题的微电路(或微电路)的方向,并且还可以可靠地评估使用过的显卡的 VRAM 状态。

2#
发表于 2022-6-8 07:17:16 | 只看该作者 来自: 广东中山 来自 广东中山
这么好的技术贴,这么没人回复的

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表
附近
店铺
微信扫码查看附近店铺
维修
报价
扫码查看手机版报价
信号元
件查询
点位图 AI维修
助手



芯片搜索

快速回复