Làm cách nào để kiểm tra xem RAM có chạy ở chế độ ECC không?


11

Tôi đã cập nhật bài đăng này kể từ khi tôi thay thế bộ xử lý, nhưng cốt lõi của câu hỏi của tôi (và không may là kết quả cũng vậy) là như nhau.


Tôi đã xây dựng hộp FreeNAS đầu tiên của mình và muốn sử dụng RAM ECC vì tôi muốn lưu trữ dữ liệu quan trọng. Bởi vì tôi đang ở trong ngân sách, tôi muốn tìm giải pháp hợp lý nhất vẫn hỗ trợ RAM ECC.

Sau khi thực hiện một số nghiên cứu, tôi phát hiện ra rằng tôi cần một bo mạch chủ, bộ nhớ và CPU hỗ trợ ECC. Bo mạch chủ mà tôi lựa chọn là "Gigabyte X150M-Pro ECC" có chipset C 232, DDR4 và ổ cắm LGA1151.

Tôi cũng đã mua một bộ gồm hai DIMM do Kingston sản xuất với số kiểu "KVR21E15S8K2 / 8" ( tờ đặc tả ). Gigabyte đã công bố danh sách các mô-đun bộ nhớ được thử nghiệm và các mô-đun của tôi dường như được hỗ trợ với ECC hoạt động ( danh sách các mô-đun được hỗ trợ ).

Nhãn RAM

Vì tôi đang ở trong ngân sách nên tôi cần một CPU Skylake giá cả phải chăng hỗ trợ ECC. Theo Intel , Celeron G3900 không hỗ trợ ECC, vì vậy tôi đã sử dụng cái đó.

Sau khi xây dựng máy tính, tôi muốn xác minh rằng hệ thống của tôi thực sự đang chạy với bộ nhớ ECC và đã vào BIOS của bo mạch chủ. Từ các trang web internet khác nhau, tôi phát hiện ra rằng một số bo mạch chủ có một phần đặc biệt sẽ cho biết ECC có hoạt động hay không, nhưng bo mạch chủ của tôi dường như không có điều đó. Tôi đã kiểm tra tất cả các menu và tôi không thể tìm thấy một phần tương tự.

Sau khi thực hiện một số nghiên cứu thêm và tìm thấy một bài đăng trên stackexchange Unix & Linux không giải quyết được vấn đề của tôi. Tôi đã thử cái mới nhất memtest86+mà từ những gì tôi có thể nói, thậm chí không hiển thị giá trị "ECC". Tôi đã thử phiên bản 4.20 cũ hơn mà các hệ thống Puget đã sử dụng cho thấy "ECC: tắt". Tuy nhiên sau khi đọc bài đăng được đề cập trước đó, tôi nghi ngờ rằng nó nói sự thật (có lẽ đó là lý do tại sao tính năng này bị xóa?). Cả hai phiên bản cũng không đọc được tốc độ và độ trễ chính xác của DIMM, điều này làm tăng thêm sự nghi ngờ của tôi memtest86+.

ảnh chụp màn hình memtest86 +

Một cách phổ biến khác để tìm hiểu, nếu ECC đang hoạt động, là phát dmidecode -t memorylệnh và đọc Total WidthData Width. Kết quả của tôi là 128 Bits64 Bitstương ứng. Một phần của đầu ra cho thấy chi tiết về mảng bộ nhớ có cặp giá trị khóa Error Correction Type: Single-bit ECC.

Tôi đã mong đợi 72 bitsđiều này Total Width, vì vậy tôi nghĩ rằng nó có thể liên quan đến kênh đôi và di chuyển các mô-đun bộ nhớ vào hai khe liền kề sẽ ngăn kênh kép, nhưng kết quả là như nhau. Đây là đầu ra đầy đủ của dmidecode -t memory.

Tôi thậm chí đã thử chương trình C thú vị mà các hệ thống Puget đã xuất bản, nhưng kết quả là 0, cho thấy không có hỗ trợ ECC.

Bây giờ tôi bắt đầu nghi ngờ rằng dữ liệu trên trang web của Intel là chính xác và CPU của tôi không thực sự hỗ trợ ECC. Cả bộ nhớ và bo mạch chủ đều được gắn nhãn "ECC", vì vậy tôi có thể loại trừ chúng.

Có thể phiên bản BIOS cần một bản cập nhật (hiện tại không có) để kích hoạt ECC hoặc ECC thực sự đã hoạt động và tôi chỉ không thể xác minh nó? Hoặc là sự lựa chọn CPU của tôi sai, nếu tôi muốn chạy bộ nhớ ECC và trang web của Intel bị sai / sai?

Nếu CPU của tôi trở thành lựa chọn sai, thì đâu là lựa chọn tốt nhất tiếp theo cho "CPU ECC ngân sách"?

CẬP NHẬT: Tôi thấy một số dấu hiệu mới cho thấy hệ thống của tôi thực sự có thể đang chạy với ECC được kích hoạt và dmidecodecông cụ chỉ báo cáo dữ liệu lạ. Tại diễn đàn FreeNAS, người dùng Dusan đang sử dụng phần cứng cấp máy chủ (SuperMicro MB, CPU Xeon, Kingston DIMM) và có đầu ra tương tự 128 Bits. Nhưng anh ấy đã viết rằng anh ấy không chắc chắn về bản thân mình, nếu nó thực sự hoạt động.

CẬP NHẬT 2: Như yagmoth555 đã đề cập trong câu trả lời của mình cho câu hỏi này, có vẻ như bo mạch chủ của tôi chỉ hỗ trợ ECC với bộ xử lý Xeon, mặc dù tôi nghĩ rằng ghi chú đó là bản sao chép từ các hướng dẫn trước đây đã được sao chép. Tôi đoán điều đó có nghĩa là tôi cần xem xét bộ xử lý Xeon ..: - /


CẬP NHẬT 3: Tôi đã mua Xeon E3-1220v5 bây giờ tất nhiên hỗ trợ ECC và phải đáp ứng yêu cầu từ hướng dẫn. Tôi đã chạy tất cả các bài kiểm tra một lần nữa để kiểm tra chức năng ECC và kết quả về cơ bản là giống hệt nhau:

ecc_check và dmidecode

Từ các nhận xét tại Puget Systems, có vẻ như ecc_check.cchương trình không hoạt động trên bộ xử lý Xeon và Core i7 ..: - /

Tôi đã kiểm tra memtest86+thêm một lần nữa và tôi khá chắc chắn rằng nó hoàn toàn không hỗ trợ chipset DDR4 hoặc C232, vì nó báo cáo không chỉ tốc độ và thời gian sai mà còn cả DDR3 thay vì DDR4 được cài đặt. Tuy nhiên, nó đã phát hiện bộ xử lý tốt, nhưng tôi vẫn nhận được kết quả cuối cùng với cả hai phiên bản memtest86+:

memtest86 + v5.01

Phiên bản 4.20 thậm chí không phát hiện đúng bộ xử lý của tôi ..

memtest86 + v4.20

Mọi ý tưởng về cách khác tôi có thể kiểm tra ECC đều được đánh giá rất cao.


Chà, nếu máy của bạn không hỗ trợ ECC, nó sẽ không khởi động :)
Trẻ mồ côi

1
@Orphans Trước khi tôi tìm thấy bo mạch chủ, tôi đã thấy một số cái rẻ hơn tuyên bố "hỗ trợ ECC" trên các chipset khác như Z170, v.v. Vì vậy, tôi tự hỏi nếu trường hợp của tôi là một như vậy?
comfreak

Nếu ECC thường bạn sẽ thấy nó trong phần POST. Bạn có thể nhấn ESC trong khi khởi động để xem màn hình boit không?
yagmoth555

Hãy thử memtest từ memtest86.com
citrin

@comfreak hmm, bạn nói đúng.
Trẻ mồ côi

Câu trả lời:


4

Hôm nay tôi phát hiện ra rằng có một phiên bản thương mại của memtest86(không có +) từ PassMark rằng Mời một phiên bản miễn phí quá mà may mắn bao gồm ECC-Kiểm tra.

Ngoài ra, nó cũng hỗ trợ DDR4 và tất cả các tính năng khác của memtest86+.

Kết quả của tôi có vẻ khả quan đối với hỗ trợ ECC, vì vậy tôi sẽ gọi việc này được thực hiện, mặc dù tôi đã hy vọng nhận được kết quả tương tự với các công cụ "truyền thống" như thế nào dmidecode.

kết quả memtest86


Nếu ai đó tình cờ phát hiện ra bài đăng này vào thời điểm muộn hơn và cần kiểm tra và xác nhận thêm, họ cũng cung cấp một phiên bản trả phí hỗ trợ tiêm lỗi ECC để thực sự kiểm tra các khả năng của ECC.


3

Đã chỉnh sửa : Xấu mới từ hướng dẫn sử dụng bo mạch chủ của bạn ...:

nhập mô tả hình ảnh ở đây


Tôi thấy bạn chạy BSD / linux, chạy nó trong HĐH; (Có sẵn cho FreeNAS )

dmidecode -t 17

Bạn nên có một đầu ra như:

dmidecode 2.12 SMBIOS 2.5 present.

Handle 0x1100, DMI type 17, 28 bytes Memory Device Array Handle: 0x1000 Error Information Handle: Not Provided Total Width: 72 bits Data Width: 64 bits Size: 2048 MB Form Factor: DIMM Set: 1 Locator: DIMM1 Bank Locator: Not Specified Type: DDR2 Type Detail: Synchronous Speed: 667 MHz Manufacturer: AD00000000000000 Serial Number: 00002062 Asset Tag: 010839 Part Number: HYMP125P72CP8-Y5 Rank: 2

Các Tổng Chiều rộng: 72 bit là phần bạn đang tìm kiếm.

Trên hệ thống Windows, bạn có thể chạy

wmic MEMORYCHIP get DataWidth,TotalWidth

// Dữ liệu bộ nhớ ECCWidth TotalWidth 64 72

// Dữ liệu bộ nhớ không ECCWidth TotalWidth 64 64

Trả lời cho FreeBSD và Windows lấy từ đó


Về cơ bản đó là những gì tôi đã thử dmidecode -t memoryvà kết quả của tôi là 128 bit Totalvà 64 bitData
comfreak

@comfreak dmidecode -t 17 trả lại cái gì?
yagmoth555

Về cơ bản tôi nhận được cùng một đầu ra như dmidecode -t memory: slexy.org/view/s2JimvAzl6
comfreak

@comfreak tốt, 128 không có ý nghĩa với tôi. thường là 64 non ecc hoặc 64b + 8b (72) cho ECC (gương ?? 64 + 64?). nhưng tìm kiếm 'dmidecode tổng chiều rộng 128' liệt kê rất nhiều bài đăng trên freenas ... dường như rất nhiều người cố gắng phát hiện ECC với tập lệnh python
./ecc_check.py

Giả định của tôi là nó có thể liên quan đến kênh đôi nhưng tôi thậm chí nhận được kết quả tương tự khi tôi đặt hai mô-đun thành hai kênh riêng biệt, có nghĩa là kênh kép không hoạt động.
comfreak

3

Sử dụng bộ xử lý Ryzen 7, không có công cụ nào được đề cập cho tôi cả. Tuy nhiên, với một nhân Linux đủ gần đây, các công cụ trong edac-utils, edac-ctl và edac-produc có thể đọc trạng thái ECC và cả những thứ như số lỗi đã sửa. Nhật ký kernel cũng sẽ chứa các dòng có "EDAC" trong dmesg, cũng sẽ cung cấp một số thông tin. Chức năng này có thể được kiểm tra thêm bằng cách ép xung RAM và kiểm tra các lỗi được báo cáo (nếu đủ cao), đó là bằng chứng nhiều nhất mà bạn có thể thấy rằng nó thực sự hoạt động. Tuy nhiên, ngay cả khi các công cụ này báo cáo lỗi hoặc không hoạt động, điều đó chỉ có nghĩa là việc đọc thông tin trạng thái ECC không được hỗ trợ, dường như không có cách nào đáng tin cậy 100% để chứng minh rằng ECC KHÔNG hoạt động ...


1
Bạn đã thử Passmark memtest86 chưa? (Người mà tôi đã đề cập trong câu trả lời của mình)
comfreak

Mặc dù đầu ra của bạn có thể thay đổi, để kiểm tra thông tin EDAC trong dmesg bạn có thể chạy dmesg | grep EDAC(bạn có thể cần chạy thông tin này với quyền root). Ví dụ: trên hệ thống dựa trên Ryzen có bộ nhớ ECC được cài đặt và kích hoạt trong BIOS (nếu có), bạn có thể thấy một dòng giống nhưamd64: Node 0: DRAM ECC enabled.
Joe

0

Đối với bo mạch chủ và chipset không phải máy chủ, chỉ có bo mạch chủ AMD cụ thể (như ASRock) và bất kỳ chipset AMD nào cung cấp ECC.

Đối với Intel, họ chỉ cung cấp ECC trên các chipset Xeon của máy chủ. Intel vô hiệu hóa ECC trên chipset máy tính để bàn của họ.


Điều đó có thể đúng, nhưng nó không trả lời câu hỏi thực tế đã được hỏi ở đây.
comfreak

Nó áp dụng cho câu hỏi op khi anh ta đang chạy chip Intel không xeon. Câu trả lời là anh ta không thể kiểm tra.
d hee

Câu cuối cùng trong câu trả lời của bạn là không chính xác, ví dụ như chipset C 232 là "chipset máy tính để bàn" và không hỗ trợ ECC. Ngoài ra, câu hỏi còn chung chung hơn, như trong cách kiểm tra, như nếu bạn không biết liệu nó có được hỗ trợ hay không.
comfreak
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.