Kiểm tra bộ nhớ của card màn hình AMD bằng tập lệnh direct-mem-test và dmgg

Administrator
Thành viên BQT
Bài viết
684
Điểm tương tác
15
Điểm
18

Kiểm tra bộ nhớ của card màn hình AMD bằng tập lệnh direct-mem-test và dmgg​

Khi khắc phục sự cố card màn hình Nvidia, bộ tiện ích dịch vụ MODS (Modular Diagnostic Software) giúp ích rất nhiều, đặc biệt là chương trình MATS , cho phép bạn tìm kiếm các chip bộ nhớ video bị lỗi.
Đối với card màn hình AMD, khi giải quyết vấn đề với bộ nhớ video, bạn có thể sử dụng chương trình tserver, cũng như tập lệnh direct-mem-test.py được viết bởi Vasily Galkin (kho Github có tên galkinvv) và/hoặc tập lệnh dmgg.py từ một nhà phát triển tên là crimpell.
Bài viết này thảo luận về cách sử dụng thực tế các tập lệnh direct-mem-test.py và dmgg.py bằng cách sử dụng ví dụ về thẻ video AMD Radeon có bộ nhớ video mỏng hơn một chút.

Tập lệnh kiểm tra bộ nhớ video là gì và tại sao lại cần đến nó?​

Kịch bản là một tập hợp các lệnh dành cho hệ điều hành Linux, được sử dụng để kiểm tra hoạt động của VRAM trên card màn hình.
Một chuỗi lệnh được thực thi theo tập lệnh kiểm tra mem trực tiếp (dmgg.py) cho phép bạn kiểm tra card màn hình từ bất kỳ nhà sản xuất nào, bao gồm cả AMD và Nvidia. Tuy nhiên, đối với card màn hình Nvidia, sử dụng chương trình MATS vẫn tốt hơn vì nó có chức năng được cải thiện so với tập lệnh.
Tập lệnh direct-mem-test.py có sẵn trên Github và dmgg.py có sẵn trên diễn đàn vlab (yêu cầu đăng ký và trạng thái người dùng đặc biệt ở đó). Ngoài ra, cả hai tập lệnh đều có thể được tải xuống từ Google Drive:
  1. dmgg.py ;
  2. direct-mem-test.py .
Để sử dụng chức năng của bất kỳ tập lệnh nào, bạn cần dán mã nguồn của nó vào một tệp, ví dụ: với tên direct-mem-test.py, làm cho nó có thể thực thi được, sau đó bạn có thể bắt đầu kiểm tra thẻ video.
Ảnh chụp màn hình một phần của trang có mã nguồn của tập lệnh kiểm tra ghi nhớ trực tiếp:
word-image-4.jpeg

Thông tin thu được từ việc chạy tập lệnh chẩn đoán có thể giúp xác định ngân hàng bộ nhớ bị lỗi trên thẻ video. Chúng thường bị hỏng do quá nhiệt, điều này xảy ra với card màn hình có hệ thống làm mát bị ô nhiễm nặng hoặc trong quá trình khai thác không thương tiếc. Sự hiện diện của các vấn đề với bộ nhớ video hoặc bộ điều khiển bộ nhớ trong GPU thường được biểu thị bằng các tạo tác dọc trên màn hình hiển thị được kết nối với card màn hình có vấn đề. Trong trường hợp này, hệ điều hành Windows hiển thị lỗi 43 trong trình quản lý thiết bị.
VRAM bị kill do mining ở nhiệt độ cao trên card màn hình AMD Radeon RX 470 với bộ nhớ 8GB tạo ra hình ảnh “vui vẻ” ngay cả khi khởi động máy tính:
word-image-5.jpeg

Làm cách nào để sử dụng tập lệnh kiểm tra chip nhớ card màn hình?​

Để chạy tập lệnh kiểm tra mem trực tiếp, bạn có thể sử dụng bất kỳ bản phân phối Linux nào, chẳng hạn như xubfox 18.04. Chúng chạy trên một máy tính chạy ở cả chế độ bảng điều khiển và đồ họa.
Khi kiểm tra card màn hình nửa sống, bạn cần sử dụng chế độ vận hành bảng điều khiển, vì các vấn đề về bộ nhớ/GPU thường không cho phép bạn sử dụng môi trường đồ họa . Hơn nữa, nếu hệ thống có card màn hình bị lỗi, quá trình tải xuống sẽ dừng ở một giai đoạn nào đó, trong khi vẫn duy trì khả năng hoạt động trong thiết bị đầu cuối. Trong trường hợp này, trước khi sử dụng tập lệnh, bạn cần định cấu hình BIOS của bo mạch chủ sao cho BIOS chính khi khởi động máy tính là BIOS được tích hợp trong bộ xử lý hoặc một card video khác được biết là tốt.
Sau khi hệ thống khởi động, bạn cần tìm hiểu không gian địa chỉ bộ nhớ được hệ điều hành phân bổ cho nó.

Để thực hiện việc này (sau khi tải hệ thống và đăng nhập vào nó), hãy nhập lệnh trong terminal:
lspci -v
rồi tìm địa chỉ tương ứng với PCI-E BAR (Base address Register) lớn nhất của card màn hình đang được sửa chữa. Khi tìm kiếm thông tin về card màn hình mong muốn ở chế độ bảng điều khiển (trong thiết bị đầu cuối), bạn có thể sử dụng các nút PageUp-PageDown cùng với nút Shift được nhấn.
Một ví dụ về thông tin về card màn hình được hiển thị bằng lệnh lspci với phím v:
Bộ điều khiển tương thích VGA 06:00.0: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] (rev ef) (prog-if 00 [Bộ điều khiển VGA])

Hệ thống con: ASUSTeK Computer Inc. Ellesmere [Radeon RX 470/480/570/580]

Cờ: bus master, phát triển nhanh, độ trễ 0, IRQ 41

Bộ nhớ tại b0000000 (64-bit, có thể tìm nạp trước) [size=256M]

Bộ nhớ ở mức 50000000 (64-bit, có thể tìm nạp trước) [size=2M]

Cổng I/O ở mức 9000

Bộ nhớ ở mức 50200000 (32-bit, không thể tìm nạp trước) [size=256K]

ROM mở rộng ở mức 50240000 [đã tắt] [size=128K]

Khả năng: <quyền truy cập bị từ chối>

Trình điều khiển hạt nhân đang sử dụng: amdgpu

Mô-đun hạt nhân: amdgpu
Trong trường hợp này, thông tin được hiển thị về card màn hình AMD Radeon RX 574, được gán số bus PCI-E thứ sáu với không gian địa chỉ 64 bit có địa chỉ b0000000 (đối với kích thước=256M).
Để bắt đầu kiểm tra bộ nhớ này bằng tập lệnh direct-mem-test.py, từ thư mục chứa nó, hãy chạy lệnh

sudo python3 ./direct-mem-test.py b0000000 10
trong đó 10 là dung lượng bộ nhớ video đang được kiểm tra, megabyte.
Một vài megabyte thường là đủ để kiểm tra; càng kiểm tra nhiều bộ nhớ thì thời gian kiểm tra càng lâu.
Khi kết thúc quá trình kiểm tra, tập lệnh sẽ hiển thị thông tin về các byte bị lỗi, cũng như các địa chỉ xảy ra lỗi (dữ liệu này có thể được sử dụng để tìm ra con chip bị lỗi), ví dụ:
sudo ./direct-mem-test.py b0000000 10

lỗi đầu tiên được phát hiện ở 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

các mẫu được sắp xếp theo số lỗi:

...

Khác biệt về địa chỉ:

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

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

0x36e 0x1d9 0x3c

Địa chỉ đầu tiên cho 0b10111011: 0x17

Khác biệt về địa chỉ:

0x7d 0x14d 0x8e 0x139 0xcc

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

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

Địa chỉ đầu tiên cho noerr_big+: 0x0

Khác biệt về địa chỉ:

Tổng địa chỉ đầu tiên: 0x0

Khác biệt về địa chỉ:

0x1 0x1

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

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

0x1

Tổng số byte được kiểm tra: 4*2621440

tổng số lỗi rand: 10444500 - cứ sau 1,003950404519125 OK: 41260

Số lỗi bit: 5241983, 5245280, 5241629, 5240126, 5242356, 5243139, 5242201, 5243584 max-avg= 3134.5714285718277

số mẫu lỗi khác nhau: 255

Trước các lỗi, các lỗi sau đã được thông qua: []

Traceback (cuộc gọi gần đây nhất):

Tệp "./direct-mem-test.py", dòng 121, trong <module>

run_test()

Tệp "./direct-mem-test.py", dòng 117, trong run_test

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

Tệp "./direct-mem-test.py", dòng 97, trong verify_no_errors_with_data

raise Exception("Tìm thấy LỖI trong bài kiểm tra" + test_name)

Ngoại lệ: LỖI được tìm thấy trong rand thử nghiệm
Bây giờ bạn có thể tìm thấy một vi mạch bị lỗi bằng cách sử dụng thông tin về các địa chỉ phát hiện sự cố.
Số 1,003950404519125 từ chuỗi
tổng số lỗi rand: 10444500 – cứ sau 1,003950404519125 OK: 41260
tương ứng với số lượng ngân hàng bộ nhớ bị lỗi. Nó bằng số lượng chip VRAM trên card màn hình chia cho số này (trong trường hợp này, 8/1 = 8 dãy/kênh bộ nhớ).
Trên thẻ video đang hoạt động, tập lệnh sẽ hiển thị thông báo sau:
Trước các lỗi, các lỗi sau đã được thông qua: ['rand']
word-image-6.jpeg

Tập lệnh dmgg.py có chức năng thuận tiện hơn.

Kiểm tra card video bằng tập lệnh dmgg.py​

Ngoài direct-mem-test.py, khi kiểm tra, bạn có thể sử dụng tập lệnh dmgg.py nâng cao hơn từ lập trình viên Crimfell, tập lệnh này có thể hiển thị một cách đáng tin cậy số lượng chip bộ nhớ bị lỗi cũng như cung cấp thông tin gần đúng (yêu cầu xác minh) về số lượng của chúng (cho biết kênh bộ nhớ bị lỗi).
Chạy tập lệnh dmgg.py cũng tương tự như direct-mem-test.py, chỉ có tên của nó được thay đổi trên dòng lệnh và một số được thêm vào cho biết số lượng chip nhớ được cài đặt trên card màn hình, ví dụ:

sudo python3 ./dmgg.py b0000000 2 8
trong đó 2 là dung lượng megabyte bộ nhớ đang được kiểm tra và 8 là số lượng chip nhớ được hàn trên bo mạch card màn hình.
Một ví dụ về thông tin mà tập lệnh dmgg.py tạo ra khi kiểm tra card video AMD Radeon RX478 với một ngân hàng bộ nhớ có vấn đề (thứ bảy hoặc thứ tám):
Địa chỉ GPU có thể có: e0000000 f0000000 c0000000 d0000000 a0000000 b0000000 80000000 90000000 60000000 70000000 40000000 50000000

số lượng chip được đặt thành: 8

Thử nghiệm này đang hoạt động để phát hiện các chip xấu. Cảnh báo nó có thể đưa ra số chip bị lỗi sai; chỉ có số lượng chip bị lỗi là tốt

đếm số chip ngược chiều kim đồng hồ từ phải sang trái với pcie gần bạn

chip 7 và/hoặc 8 bị lỗi tại địa chỉ: 543424

số lượng chip bị lỗi = 1

Tổng số byte được kiểm tra: 4*524288

Tổng số lỗi: 32 - cứ 63550.06060606061 OK: 2097120

Cách sử dụng:

python3 ./dmmg.py b0000000 1 16

Tệp script dmmg.py nằm trên thư mục gốc của USB nếu bạn cần chỉnh sửa; chạy lspci -v để tìm địa chỉ mặc định thẻ ati của bạn là b0000000

1 là 1MB bộ nhớ

16 là số lượng chip nhớ trong thẻ
word-image-7.jpeg

Với khả năng cao, chip nhớ 7 và/hoặc 8 bị lỗi; chúng có thể được tìm thấy theo cách đánh số hiển thị trong các hình ảnh bên dưới (đếm ngược chiều kim đồng hồ, bắt đầu từ chip nằm gần khe cắm PCI-E nhất).
Vị trí của chip nhớ trên bo mạch card màn hình Nvidia:
word-image-8.jpeg

Vị trí các chip nhớ trên bo mạch card màn hình AMD:
word-image-9.jpeg

Nếu card màn hình hoạt động bình thường, tập lệnh sẽ hiển thị thông báo Không tìm thấy chip bị lỗi, cũng như các thông tin hữu ích khác:
word-image.png

Thông tin văn bản được hiển thị về thẻ video đang hoạt động bằng tập lệnh dmmg.py:
Địa chỉ GPU có thể có: e0000000 f0000000 c0000000 d0000000 a0000000 b0000000 80000000 90000000 60000000 70000000 40000000 50000000

số lượng chip được đặt thành: 8

Thử nghiệm này đang hoạt động để phát hiện các chip xấu. Cảnh báo nó có thể đưa ra số chip bị lỗi sai; chỉ có số lượng chip bị lỗi là tốt

đếm số chip ngược chiều kim đồng hồ từ phải sang trái với pcie gần bạn

Không tìm thấy chip bị lỗi

số lượng chip bị lỗi = 0

Tổng số byte được kiểm tra: 4*2097152

Tổng số lỗi: 0 - cứ 8388608.0 OK: 8388608

Cách sử dụng:

python3 ./dmmg.py b0000000 1 16

Tệp script dmmg.py nằm trên thư mục gốc của USB nếu bạn cần chỉnh sửa; chạy lspci -v để tìm địa chỉ mặc định thẻ ati của bạn là b0000000

1 là 1 MB bộ nhớ

16 là số lượng chip nhớ trong thẻ

Phần kết luận​

Các tập lệnh kiểm tra card màn hình AMD có thể đơn giản hóa đáng kể quá trình khắc phục sự cố liên quan đến chip bộ nhớ.
Việc sử dụng chúng thu hẹp đáng kể hướng tìm kiếm vi mạch (hoặc vi mạch) có vấn đề, đồng thời giúp đánh giá một cách đáng tin cậy tình trạng VRAM của thẻ video đã sử dụng.
 
Top