Ini sebenarnya ide yang buruk. Memori tidak dapat diuji dengan andal dalam sapuan cepat. Inilah sebabnya mengapa perangkat lunak seperti memtest86 menggunakan banyak lintasan dengan pola bit berbeda untuk menguji memori. Solusi:
-
Uji memori dengan memtest86, sebaiknya uji panjang, biarkan berjalan semalaman, ini akan memakan waktu lama.
-
Jika memori buruk terdeteksi, gunakan
memmap
parameter kernel untuk memaksa kernel agar tidak menggunakan memori itu:
memmap=nn[KMG]$ss[KMG] [KNL,ACPI] Mark specific memory as reserved. Region of memory to be used, from ss to ss+nn. Example: Exclude memory from 0x18690000-0x1869ffff memmap=64K$0x18690000 or memmap=0x10000$0x18690000
Selain itu, Anda dapat menggunakan memori ECC yang akan memperbaiki kesalahan 1-bit dan mendeteksi kesalahan 2-bit di memori Anda secara otomatis (dan Anda akan mendapatkan pesan log dari kernel tentang masalah memori yang tidak dapat diperbaiki jika terjadi)
Posting dan jawaban salah memahami masalah ini. Penggosokan memori dimaksudkan untuk menjaga kesalahan bit tunggal yang dapat diperbaiki agar tidak berubah menjadi kesalahan ganda yang tidak dapat diperbaiki. Penggosok hanya semua memori fisik (memaksa cache meleset untuk melakukannya) sesekali. Jika ada kesalahan bit tunggal, kesalahan tersebut akan diperbaiki (dan koreksi harus menulis ulang nilai yang benar menggunakan perbandingan-dan-tukar), sehingga menghapus kesalahan.
Jika tidak, jika kesalahan kedua terjadi pada kata yang sudah memiliki satu kesalahan, seluruh kata tidak akan dapat diperbaiki dan OS harus melakukan sesuatu yang drastis.
Penggosokan penting karena tanpanya, memori yang dibaca tetapi tidak ditulis (seperti halaman kode) dapat mengakumulasi kesalahan dari waktu ke waktu.
Jawabannya adalah ya, dan dilakukan secara transparan (asalkan Anda memiliki memori ECC untuk mendeteksi kesalahan, dan versi kernel Anda setidaknya 2.6.30 untuk terus beroperasi dengan aman).
Pada dasarnya, memori Anda diperiksa pada setiap pembacaan dari prosesor, dan digosok secara berkala*, untuk memeriksa konsistensi dengan Kode Koreksi Kesalahan (ECC). Jika terjadi kesalahan, Anda mendapatkan Pengecualian Pemeriksaan Mesin, yang kemudian dicatat dan diambil oleh mcelog (http://www.mcelog.org/).
Jika kesalahan Anda dapat diperbaiki, penghitung "ember bocor" akan bertambah, yang menyebabkan DIMM fisik yang terlalu sering gagal untuk diganti secara transparan dengan yang lain. Dengan demikian halaman memori Anda disalin ke lokasi baru, alamat memori virtual Anda diperbarui untuk mengarah ke halaman baru, dan halaman lama ditandai oleh OS sebagai tidak digunakan lagi.
Ini disebut "soft-offlining" di Linux (dan penghentian halaman memori di Solaris, saya tidak tahu tentang OS lain).
Namun, jika kesalahan Anda tidak dapat diperbaiki, apa yang disebut "hard-offlining" terjadi, yaitu halaman memori Anda dihapus dari manajemen memori sistem operasi normal, dan aplikasi Anda terbunuh (NB:oleh beberapa sinyal SIGBUS yang dapat ditangkap yang memberi tahu Anda di mana kesalahan terjadi, tetapi cukup jarang untuk tidak peduli dan mencoba menangkapnya). Jika halaman memori Anda dipetakan dari file dan dibersihkan, OS juga dapat memuat ulang secara transparan di lokasi fisik lain alih-alih mematikan proses.
Anda dapat membaca lebih lanjut di mcelog, ada banyak opsi konfigurasi, Anda dapat memicu perilaku lain, opsi, dan petunjuk lain tentang apa yang harus dibaca dan cara memastikan mcelog berjalan di sistem Anda.
* Scrubbing, atau "Patrol Scrubbing" terdiri dari membaca memori, memeriksanya dengan ECC untuk kesalahan, dan menimpanya dengan kata-kata memori yang diperbaiki ketika ditemukan kesalahan. Istilah patrol scrubbing digunakan sebagai oposisi untuk menimpa data yang salah pada kesalahan pembacaan memori, yang terkadang disebut "Demand Scrubbing".Scrubbing adalah prosedur perangkat keras yang dapat diaktifkan, biasanya melalui BIOS.