Железо,  Статьи

Тестирование памяти видеокарт AMD с помощью скриптов direct-mem-test и dmgg

При поиске неисправностей видеокарт Nvidia большую помощь оказывает набор сервисных утилит MODS (Modular Diagnostic Software), в особенности программа MATS, позволяющая производить поиск неисправных чипов видеопамяти.

Для видеокарт AMD при решении проблем с видеопамятью можно использовать программу tserver, а также скрипт direct-mem-test.py, написанный Василием Галкиным (репозиторий на Github под названием galkinvv) и/или скрипт dmgg.py от разработчика под ником crimfell.

В данной статье рассматривается практическое использование скриптов direct-mem-test.py и dmgg.py на примере видеокарт AMD Radeon с немного «ужаренной» видеопамятью.

Что такое скрипт для проверки видеопамяти и зачем он нужен?

Скрипт представляет собой набор команд для операционной системы Linux, с помощью которого производится тестирование работы VRAM у видеокарт.

Последовательность команд, выполняемая в соответствии со скриптом direct-mem-test (dmgg.py) позволяет провести тестирование видеокарт от любого производителя, включая AMD и Nvidia. Тем не менее, для видеокарт Nvidia все же лучше использовать программу MATS, так как она имеет улучшенный функционал в сравнении со скриптами.

Скрипт direct-mem-test.py доступен на Github, а dmgg.py — на форуме vlab (там требуется регистрация и особый статус пользователя). Кроме того, оба скрипта можно скачать на Google-диске:

  1. dmgg.py;
  2. direct-mem-test.py.

Чтобы использовать функционал любого скрипта, нужно вставить его исходный код в файл, например, с названием direct-mem-test.py, сделать его исполняемым, после чего можно запускать проверку видеокарт.

Скриншот части страницы с исходным кодом скрипта direct-mem-test:

Информация, полученная в результате выполнения диагностических скриптов, может помочь в поиске неисправных банок памяти на видеокарте. Обычно они выходят из строя из-за перегрева, которому подвергаются видеокарты с сильно загрязненной системой охлаждения или при нещадном майнинге. О наличии проблем с видеопамятью или контроллером памяти в GPU обычно свидетельствуют вертикальные артефакты на экране дисплея, подключенного к проблемной видеокарте. При этом операционная система Windows в диспетчере устройств выдает ошибку 43.

Убитая майнингом при высокой температуре VRAM на видеокарте AMD Radeon RX 470 с 8GB памяти выдает «веселую» картинку даже при инициализации компьютера:

Как использовать скрипт проверки микросхем памяти видеокарт?

Для запуска скрипта direct-mem-test можно использовать любой дистрибутив Linux, например, xubuntu 18.04. Они работают на компьютере, работающем как в консольном, так и графическом режиме.

При проверке полуживых видеокарт нужно использовать консольный режим работы, так как наличие проблем с памятью/GPU обычно не позволяет воспользоваться графическим окружением. При этом, если в системе имеется неисправная видеокарта, загрузка останавливается на каком-то из этапов, при этом сохраняется возможность работать в терминале. В этом случае перед использованием скрипта нужно настроить BIOS материнской платы так, чтобы основной при загрузке компьютера была встроенная в процессор, либо другая, заведомо исправная видеокарта.

После загрузки системы нужно узнать, какое адресное пространство памяти выделено для нее операционной системой.

Для этого (после загрузки системы и входа в нее) в терминале вводят команду:

lspci -v

а затем находят адрес, соответствующий наибольшему PCI-E BAR (Base Address Register) ремонтируемой видеокарты. При поиске информации о нужной видеокарте в консольном режиме (в терминале) можно воспользоваться кнопками PageUp-PageDown вместе с нажатой кнопкой Shift.

Пример информации о видеокарте, отображаемой по команде lspci с ключом v:

06:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] (rev ef) (prog-if 00 [VGA controller])

Subsystem: ASUSTeK Computer Inc. Ellesmere [Radeon RX 470/480/570/580]

Flags: bus master, fast devsel, latency 0, IRQ 41

Memory at b0000000 (64-bit, prefetchable) [size=256M]

Memory at 50000000 (64-bit, prefetchable) [size=2M]

I/O ports at 9000 [size=256]

Memory at 50200000 (32-bit, non-prefetchable) [size=256K]

Expansion ROM at 50240000 [disabled] [size=128K]

Capabilities: <access denied>

Kernel driver in use: amdgpu

Kernel modules: amdgpu

В данном случае отображена информация о видеокарте AMD Radeon RX 574, которой присвоен шестой номер шины PCI-E с 64-битным адресным пространством с адресом b0000000 (для size=256M).

Чтобы запустить проверку этой памяти скриптом direct-mem-test.py, из каталога, в котором он находится, выполняют команду

sudo python3 ./direct-mem-test.py b0000000 10

где 10 — это объём тестируемой видеопамяти, мегабайт.

Для проверки обычно достаточно нескольких мегабайт, чем больше памяти тестируется, тем дольше происходит проверка.

По окончанию проверки скрипт выдаст информацию о сбойных байтах, а также адреса, в которых возникает ошибка (эти данные можно использовать для поиска неисправной микросхемы), например:

 sudo ./direct-mem-test.py b0000000 10

first error detected at 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

patterns sorted by error count:

...

Address diffs:

0x224 0x1 0x1f2 0xba 0xa3 0x3c 0x117 0x25

0x10d 0x19 0x2ba 0x2f 0x64 0x393 0xb7 0x176

0x36e 0x1d9 0x3c

First address for 0b10111011: 0x17

Address diffs:

0x7d 0x14d 0x8e 0x139 0xcc

0x3c 0x45 0x24 0xe0 0x3b 0x89 0xd2 0xf9

0x17 0x3e 0x13c 0x15f 0xee 0x1f

First address for noerr_big+: 0x0

Address diffs:

First address for total: 0x0

Address diffs:

 0x1 0x1

0x1 0x1 0x1 0x1 0x1 0x1 0x1 0x1

0x1 0x1 0x1 0x1 0x1 0x1 0x1 0x1

0x1

Total bytes tested: 4*2621440

rand total errors count: 10444500 - every 1.003950404519125 OK: 41260

Bit error numbers: 5241983, 5245280, 5241629, 5240126, 5242356, 5243139, 5242201, 5243584 max-avg= 3134.5714285718277

different errors patterns count: 255

Before errors, following passed: []

Traceback (most recent call last):

File "./direct-mem-test.py", line 121, in <module>

run_test()

File "./direct-mem-test.py", line 117, in run_test

verify_no_errors_with_data(bytes(random.getrandbits(8) for i in range(len(phys_arr))), "rand")

File "./direct-mem-test.py", line 97, in verify_no_errors_with_data

raise Exception("ERRORS found in test " + test_name)

Exception: ERRORS found in test rand

Теперь можно найти неисправную микросхему, воспользовавшись информацией об адресах, в которых найдены проблемы.

Число 1.003950404519125 из строки

rand total errors count: 10444500 — every 1.003950404519125 OK: 41260

соответствует количеству неисправных банок памяти. Оно равно количеству чипов VRAM видеокарты, деленному на это число (в данном случае 8/1=8 банок/каналов памяти).

На исправной видеокарте скрипт выдаст сообщение:

Before errors, following passed: ['rand']

Более удобный функционал имеет скрипт dmgg.py.

Проверка видеокарт с помощью скрипта dmgg.py

Кроме direct-mem-test.py, при проверке можно использовать более совершенный скрипт dmgg.py от программиста Crimfell, который может достоверно отображать количество сбойных микросхем памяти, а также давать ориентировочную (требующую проверки) информацию об их номерах (указывать на неисправный канал памяти).

Запуск скрипта dmgg.py выполняется аналогично direct-mem-test.py, только в командной строке меняется его название, а также добавляется цифра, обозначающая количество микросхем памяти, установленных на видеокарте, например:

sudo python3 ./dmgg.py b0000000 2 8

где 2 — это объём проверяющихся мегабайт памяти, а 8 — количество микросхем памяти, распаянной на плате видеокарты.

Пример информации, которую выдает скрипт dmgg.py при проверке видеокарты AMD Radeon RX478 с одной проблемной банкой памяти (седьмая или восьмая):

Possible GPU address: e0000000 f0000000 c0000000 d0000000 a0000000 b0000000 80000000 90000000 60000000 70000000 40000000 50000000

number of chips is set to: 8

This test is working to detect bad chips. Warning it can give wrong faulty chip number ; only the amount of faulty chips will be good

count the chips counter-clockwise from right to left with pcie near you

chip 7 and/or 8 is faulty at address: 543424

number of faulty chips= 1

Total bytes tested: 4*524288

Total errors count: 32 - every 63550.06060606061 OK: 2097120

Usage:

python3 ./dmmg.py b0000000 1 16

Script file dmmg.py is on root of the USB if you need to edit ; run lspci -v to find address of your ati card default is b0000000

1 is 1MB of memory

16 is the number of memory chips from the card

С большой степенью вероятности неисправны микросхемы памяти 7 и/или 8, их можно найти согласно нумерации, приведенной на изображениях ниже (счет идет против часовой стрелки, начиная от микросхемы, которая расположена ближе всего к слоту PCI-E).

Расположение чипов памяти на платах видеокарт Nvidia:

Расположение чипов памяти на платах видеокарт AMD:

Если видеокарта полностью исправна, скрипт выдает сообщение No faulty chips found, а также другую полезную информацию:

Текстовая информация, отображаемая об исправной видеокарте скриптом dmmg.py:

Possible GPU address: e0000000 f0000000 c0000000 d0000000 a0000000 b0000000 80000000 90000000 60000000 70000000 40000000 50000000

number of chips is set to: 8

This test is working to detect bad chips. Warning it can give wrong faulty chip number ; only the amount of faulty chips will be good

count the chips counter-clockwise from right to left with pcie near you

No faulty chips found

number of faulty chips= 0

Total bytes tested: 4*2097152

Total errors count: 0 - every 8388608.0 OK: 8388608

Usage:

python3 ./dmmg.py b0000000 1 16 

Script file dmmg.py is on root of the USB if you need to edit ; run lspci -v to find address of your ati card default is b0000000 

 1 is 1MB of memory 

 16 is the number of memory chips from the card

Заключение

Скрипты для проверки видеокарт AMD могут значительно облегчить процесс поиска неисправностей, связанных с микросхемами памяти.

Их использование весомо сужает направление поиска проблемной микросхемы (или микросхем), а также дает возможность достоверно оценить состояние VRAM б/у видеокарт.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

English English Русский Русский