Bagaimana cara memeriksa apakah RAM berjalan dalam mode ECC?

11

Saya memperbarui posting ini sejak saya mengganti prosesor, tetapi inti dari pertanyaan saya (dan sayangnya hasilnya juga) adalah sama.


Saya membangun kotak FreeNAS pertama saya dan ingin menggunakan RAM ECC karena saya ingin menyimpan data penting. Karena anggaran saya terbatas, saya ingin mencari solusi yang paling terjangkau yang masih mendukung RAM ECC.

Setelah melakukan riset, saya menemukan, bahwa saya memerlukan motherboard, memori, dan CPU yang mendukung ECC. Motherboard pilihan saya adalah "Gigabyte X150M-Pro ECC" yang memiliki chipset C232, DDR4 dan soket LGA1151.

Saya juga membeli kit dari dua DIMM yang dibuat oleh Kingston dengan nomor model "KVR21E15S8K2 / 8" ( lembar spesifikasi ). Gigabyte menerbitkan daftar modul memori yang diuji dan modul saya tampaknya didukung dengan ECC yang berfungsi ( daftar modul yang didukung ).

Label RAM

Karena anggaran saya terbatas, saya membutuhkan Skylake CPU yang terjangkau yang mendukung ECC. Menurut Intel , Celeron G3900 mendukung ECC, jadi saya memilih yang itu.

Setelah membangun komputer, saya ingin memverifikasi bahwa sistem saya memang berjalan dengan memori ECC dan memasuki BIOS motherboard. Dari berbagai situs internet, saya menemukan bahwa beberapa motherboard memiliki bagian khusus yang harus mengetahui apakah ECC berfungsi, tetapi motherboard saya sepertinya tidak memilikinya. Saya memeriksa semua menu dan saya tidak dapat menemukan bagian yang serupa.

Setelah melakukan beberapa penelitian lebih lanjut dan menemukan posting lebih dari pada stackexchange Unix & Linux yang tidak menyelesaikan masalah saya. Saya mencoba yang terbaru memtest86+yang dari apa yang saya tahu, bahkan tidak menunjukkan nilai "ECC". Saya mencoba versi lama 4,20 yang menggunakan sistem Puget yang menunjukkan "ECC: off". Namun setelah membaca posting yang disebutkan sebelumnya, saya ragu bahwa itu mengatakan yang sebenarnya (mungkin itu sebabnya fitur itu dihapus?). Kedua versi juga tidak membacakan kecepatan dan latensi DIMM yang benar yang menambah keraguan saya terhadap memtest86+.

memtest86 + tangkapan layar

Cara populer lainnya untuk mengetahuinya, jika ECC berfungsi, adalah dengan mengeluarkan dmidecode -t memoryperintah dan membaca Total Widthdan Data Width. Hasil saya 128 Bitsdan 64 Bitsmasing - masing. Salah satu bagian dari output menunjukkan detail tentang array memori yang memiliki pasangan kunci-nilai Error Correction Type: Single-bit ECC.

Saya mengharapkan 72 bitsuntuk Total Width, jadi saya pikir itu mungkin terkait dengan saluran ganda dan memindahkan modul memori ke dua slot yang berdekatan yang seharusnya mencegah saluran ganda, tetapi hasilnya sama. Ini adalah hasil lengkap dari dmidecode -t memory.

Saya bahkan mencoba program C yang menarik yang diterbitkan sistem Puget, tetapi hasilnya 0, menunjukkan tidak ada dukungan ECC.

Sekarang saya mulai ragu bahwa data di situs web Intel sudah benar dan CPU saya tidak benar-benar mendukung ECC. Baik memori dan motherboard secara khusus dicap dengan "ECC", jadi saya bisa mengesampingkannya.

Apakah mungkin bahwa versi BIOS membutuhkan pembaruan (saat ini tidak ada) untuk mengaktifkan ECC atau apakah ECC sebenarnya sudah berfungsi dan saya tidak dapat memverifikasinya? Atau apakah pilihan CPU saya salah, jika saya ingin menjalankan memori ECC dan situs web Intel salah / menyesatkan?

Jika CPU saya ternyata menjadi pilihan yang salah, apa yang akan menjadi pilihan terbaik berikutnya untuk "CPU ECC anggaran"?

UPDATE: Saya melihat beberapa indikasi baru bahwa sistem saya sebenarnya mungkin berjalan dengan ECC diaktifkan dan dmidecodealat hanya melaporkan data aneh. Selama di forum FreeNAS, pengguna Dusan menggunakan perangkat keras tingkat server (SuperMicro MB, Xeon CPU, Kingston DIMM) dan memiliki output yang serupa 128 Bits. Tetapi dia menulis bahwa dia sendiri tidak yakin, apakah itu benar-benar berhasil.

UPDATE 2: Seperti yagmoth555 disebutkan dalam jawaban untuk pertanyaan ini, sepertinya motherboard saya hanya mendukung ECC dengan prosesor Xeon, meskipun saya pikir catatan itu adalah peninggalan dari manual sebelumnya yang disalin. Saya kira itu berarti bahwa saya perlu melihat ke dalam prosesor Xeon ..: - /


UPDATE 3: Saya membeli Xeon E3-1220v5 sekarang yang tentu saja mendukung ECC dan harus memenuhi persyaratan dari manual. Saya menjalankan semua tes lagi untuk memeriksa fungsionalitas ECC dan hasilnya pada dasarnya identik:

ecc_check dan dmidecode

Dari komentar di Puget Systems, sepertinya ecc_check.cprogram itu tidak bekerja pada prosesor Xeon dan Core i7 ..: - /

Saya memeriksa memtest86+lebih banyak lagi kali ini dan saya cukup yakin bahwa itu tidak mendukung chipset DDR4 atau C232 sama sekali, karena tidak hanya melaporkan kecepatan dan timing yang salah, tetapi juga DDR3 bukan DDR4 yang diinstal. Namun, itu mendeteksi prosesor dengan baik, tetapi saya masih mendapatkan hasil akhir yang sama dengan kedua versi memtest86+:

memtest86 + v5.01

Versi 4.20 bahkan tidak mendeteksi prosesor saya dengan benar ..

memtest86 + v4.20

Setiap ide tentang bagaimana lagi saya bisa menguji ECC sangat dihargai.

comfreak
sumber
Nah, jika mesin Anda tidak mendukung ECC, itu tidak akan mulai :)
Anak yatim
1
@ Orphans Sebelum saya menemukan motherboard, saya melihat beberapa yang lebih murah yang mengklaim "dukungan ECC" pada chipset lain seperti Z170 dll. Ternyata itu hanya berarti board dapat berjalan (bukan crash) dengan memori ECC tetapi secara efektif tidak akan menggunakannya. Jadi saya bertanya-tanya apakah kasus saya seperti itu?
comfreak
Jika ECC biasanya Anda melihatnya di bagian POST. Bisakah Anda menekan ESC selama boot untuk melihat layar boit?
yagmoth555
Coba juga memtest dari memtest86.com
citrin
@comfreak hmm, Anda benar.
Anak yatim

Jawaban:

4

Hari ini saya menemukan bahwa ada versi komersial dari memtest86(tanpa +) dari PassMark yang menawarkan versi gratis juga yang untungnya termasuk ECC-Cek.

Selain itu juga mendukung DDR4 dan semua fitur lainnya memtest86+.

Hasil saya tampaknya positif untuk dukungan ECC, jadi saya akan menyebut ini selesai, meskipun saya berharap untuk mendapatkan hasil yang sama dengan alat "tradisional" seperti dmidecode.

hasil memtest86


Jika seseorang menemukan posting ini pada suatu saat dan membutuhkan validasi dan tes lebih lanjut, mereka juga menawarkan versi berbayar yang mendukung injeksi kesalahan ECC untuk benar-benar menguji kemampuan ECC.

comfreak
sumber
3

Diedit : Buruk baru dari manual motherboard Anda ...:

masukkan deskripsi gambar di sini


Saya melihat Anda menjalankan BSD / linux, jalankan di dalam OS; (Tersedia untuk FreeNAS )

dmidecode -t 17

Anda harus memiliki output seperti:

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

The Jumlah Lebar: 72 bit adalah bagian yang Anda cari.

Pada sistem Windows Anda dapat menjalankan

wmic MEMORYCHIP get DataWidth,TotalWidth

// Data Memori ECCWidth TotalWidth 64 72

// Data Memori Non-ECCWidth TotalWidth 64 64

Jawaban untuk FreeBSD & Windows ambil dari sana

yagmoth555
sumber
Itu pada dasarnya apa yang sudah saya coba dmidecode -t memorydan hasilnya adalah 128 bit Totaldan 64 bitData
comfreak
@comfreak dmidecode -t 17 mengembalikan apa?
yagmoth555
Saya pada dasarnya mendapatkan output yang sama seperti dmidecode -t memory: slexy.org/view/s2JimvAzl6
comfreak
@ comfreak dengan baik, 128 tidak masuk akal bagi saya. biasanya 64 non ecc atau 64b + 8b (72) untuk ECC (mirror ?? 64 + 64?). tetapi mencari 'dmidecode total lebar 128' daftar banyak posting freenas ... banyak tampaknya mencoba untuk mendeteksi ECC dengan ./ecc_check.py skrip python
yagmoth555
Asumsi saya adalah bahwa itu mungkin terkait dengan saluran ganda tapi saya bahkan mendapatkan hasil yang sama ketika saya menempatkan dua modul ke dalam dua saluran terpisah, yang berarti saluran ganda seharusnya tidak berfungsi.
comfreak
3

Menggunakan prosesor Ryzen 7, tidak ada alat yang disebutkan bekerja untuk saya juga. Namun dengan kernel Linux yang cukup baru, alat-alat dalam edac-utils, edac-ctl dan edac-util dapat membaca status ECC dan juga hal-hal seperti jumlah kesalahan yang diperbaiki. Log kernel juga akan berisi baris-baris dengan "EDAC" di dmesg, yang seharusnya juga memberikan beberapa informasi. Fungsionalitas ini dapat diuji lebih lanjut dengan overclocking RAM dan memeriksa apakah ada kesalahan (jika cukup tinggi), itu adalah bukti sebanyak yang Anda bisa dapatkan bahwa itu benar-benar berfungsi. Namun meskipun alat ini melaporkan kesalahan atau tidak berfungsi, itu hanya berarti bahwa membaca informasi status ECC tidak didukung, tampaknya tidak ada 100% cara yang dapat diandalkan untuk membuktikan bahwa ECC TIDAK berfungsi ...

pengguna415177
sumber
1
Apakah Anda mencoba Passmarks memtest86? (Yang saya sebutkan dalam jawaban saya)
comfreak
Meskipun output Anda dapat bervariasi, untuk memeriksa informasi EDAC di dmesg Anda dapat menjalankan dmesg | grep EDAC(Anda mungkin perlu menjalankan ini dengan hak akses root) Misalnya, pada sistem berbasis Ryzen dengan memori ECC dipasang dan diaktifkan di BIOS (jika ada), Anda mungkin melihat garis yang terlihat sepertiamd64: Node 0: DRAM ECC enabled.
Joe
0

Untuk motherboard dan chipset non-server, hanya motherboard AMD spesifik (seperti ASRock) dan chipset AMD yang menawarkan ECC.

Untuk Intel, mereka hanya membuat ECC tersedia di chipset server Xeon. Intel menonaktifkan ECC pada chipset desktop mereka.

d hee
sumber
Itu mungkin benar, tetapi itu tidak menjawab pertanyaan aktual yang ditanyakan di sini.
comfreak
Ini berlaku untuk pertanyaan op saat ia menjalankan chip Intel non xeon. Jawabannya adalah dia tidak bisa memeriksa.
d hee
Hanya kalimat terakhir dari jawaban Anda yang salah, karena chipset C232 misalnya adalah "chipset desktop" dan tidak mendukung ECC. Selain itu, pertanyaannya lebih umum, seperti cara memeriksa, seperti apakah Anda tidak tahu apakah itu didukung atau tidak.
comfreak