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 ).
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+
.
Cara populer lainnya untuk mengetahuinya, jika ECC berfungsi, adalah dengan mengeluarkan dmidecode -t memory
perintah dan membaca Total Width
dan Data Width
. Hasil saya 128 Bits
dan 64 Bits
masing - 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 bits
untuk 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 dmidecode
alat 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:
Dari komentar di Puget Systems, sepertinya ecc_check.c
program 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+
:
Versi 4.20 bahkan tidak mendeteksi prosesor saya dengan benar ..
Setiap ide tentang bagaimana lagi saya bisa menguji ECC sangat dihargai.
Jawaban:
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
.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.
sumber
Diedit : Buruk baru dari manual motherboard Anda ...:
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
Jawaban untuk FreeBSD & Windows ambil dari sana
sumber
dmidecode -t memory
dan hasilnya adalah 128 bitTotal
dan 64 bitData
dmidecode -t memory
: slexy.org/view/s2JimvAzl6Menggunakan 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 ...
sumber
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.
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.
sumber