Bellek hataları, sistem yöneticilerinin en sevmediği arıza türüdür: belirtileri rastgeledir, tekrarlanamaz ve genelde yazılım suçlanır. Sunucu donanımının ECC belleğe geçmiş olmasının nedeni tam olarak budur.
Bir bit neden değişir
Bellek hücreleri elektrik yükü tutar ve bu yük, çeşitli nedenlerle bozulabilir.
Kaynaklar arasında kozmik radyasyon, elektriksel gürültü, ısı ve hücrelerin kendi yaşlanması vardır. Ayrıca komşu satırların birbirini etkilemesi gibi tasarım kaynaklı etkiler bulunur.
Tek bir bitin değişmesi çoğu zaman fark edilmez — değişen bit, kullanılmayan bir alandaysa hiçbir şey olmaz. Ama o bit bir işaretçinin ortasındaysa süreç çöker; bir hesaplamanın içindeyse sessizce yanlış sonuç üretilir.
İkincisi, en tehlikeli olanıdır: hiçbir hata mesajı yoktur, yalnızca yanlış veri vardır.
ECC ne yapar
ECC bellek, her veri sözcüğünün yanında fazladan denetim bitleri taşır. Bu bitler sayesinde denetleyici iki şey yapabilir.
Tek bit hatasını düzeltir. Hata fark edilir, doğru değer hesaplanır ve işleme devam edilir. Sistem etkilenmez; olay yalnızca kaydedilir.
Çok bit hatasını fark eder ama düzeltemez. Bu durumda sistem, yanlış veriyle devam etmek yerine genelde durur.
İkinci davranış sezgiye aykırı görünür — “hata yüzünden sunucu kapandı” iyi bir sonuç gibi durmaz. Ama alternatifi, bozuk verinin veritabanına yazılmasıdır. Durmak, kasıtlı bir tercihtir.
Veri bütünlüğünün veritabanı tarafındaki karşılığı transaction ve ACID nedir yazısında.
Düzeltilebilir hata sayacı
En değerli ve en az bakılan veridir.
ECC tek bit hatalarını düzelttiği için sistem sorunsuz çalışmaya devam eder. Ama bu hataların sayısı ve hangi modülde yoğunlaştığı kaydedilir.
Belirli bir modülde düzeltilebilir hata sayısı artıyorsa, o modül yolun sonuna yaklaşıyordur. Değiştirilmezse er ya da geç düzeltilemeyen bir hata gelir ve sunucu durur.
Yani ECC’nin asıl değeri düzeltmek değil, arızayı önceden haber vermektir — okunduğu takdirde.
Bu sayaç sunucu yönetim denetleyicisinden ve işletim sistemi günlüklerinden okunabilir; toplama yaklaşımı günlük toplama ve donanım tarafı sunucu uzaktan yönetimi yazılarında.
ECC olmayan sistemlerde
Masaüstü ve dizüstü bilgisayarların büyük bölümünde ECC yoktur. Orada bellek hatası, hiçbir uyarı üretmeden yalnızca sonuçlarıyla görünür.
Tipik belirtiler bir kalıp oluşturur: rastgele çökmeler, farklı uygulamalarda beklenmedik hatalar, sıkıştırılmış dosyaların bozuk çıkması ve tekrarlanamayan mavi ekranlar.
Bu belirtiler yazılım sorunlarıyla karışır. Ayırt edici işaret rastgeleliktir: aynı işlem bazen çalışır bazen çalışmaz ve hata mesajları birbirinden ilgisizdir.
Bu noktada yapılacak şey bellek testi çalıştırmaktır. Testin uzun sürmesi gerekir — kısa bir tarama, seyrek görülen hataları yakalamaz.
Sanallaştırmada etkisi
Bellek hatasının etkisi, konak üzerinde kaç iş yükü çalıştığına göre büyür.
Tek bir fiziksel sunucuda onlarca sanal makine varsa, düzeltilemeyen bir bellek hatası hepsini birden etkiler. Bu, sanallaştırmanın en az konuşulan risklerinden biridir.
Karşılığı iki yönlüdür: sunucu sınıfı belleği tercih etmek ve iş yüklerini tek konağa yığmamak. Yerleşim kararlarının çerçevesi küme quorum ve tanık ve hipervizör nedir yazılarında.
Dinamik bellek özelliklerinin ne zaman zarar verdiği ise Hyper-V dinamik bellek ne zaman zarar verir yazısında.
Teşhis sırası
Açıklanamayan çökmelerde şu sıra zaman kazandırır.
Önce sayaçları okuyun. ECC varsa düzeltilebilir hata sayısına bakın; artış varsa teşhis tamamlanmıştır.
Sonra sıcaklığa bakın. Aşırı ısınma, bellek hatalarını tetikler ve kendisi ayrı bir sorundur; ayrıntısı ısınma ve kısılma yazısında.
Ardından modülleri tek tek sınayın. Birden çok modül varsa, teker teker çalıştırmak sorunlu olanı ayırır.
Son olarak yerleşimi kontrol edin. Yanlış yuvalara takılmış ya da tam oturmamış modüller, aynı belirtileri üretir.
Bu sıra izlenmediğinde, arıza genelde işletim sistemine ya da uygulamaya yıkılır ve haftalarca kovalanır.
Kapasite mi hız mı
Bellek satın alırken sık sorulan bir soru daha vardır ve yanıtı iş yüküne göre nettir.
Sunucu iş yüklerinin ezici çoğunluğunda belirleyici olan kapasitedir, hız değil. Belleği yetmeyen bir sistem diske taşma yapar ve aradaki fark, bellek hızındaki yüzdelik farklardan kat kat büyüktür.
İkinci bir ayrıntı, modüllerin kanal düzenidir: aynı toplam kapasiteyi tek modülle değil, işlemcinin kanal sayısına dağıtacak biçimde almak ölçülebilir fark yaratır. Tek modülle kurulup sonradan eklenen sistemler bu farkı kaybeder.
Kısaca
ECC, tek bit hatalarını düzeltir ve çok bit hatalarında sistemi bilinçli olarak durdurur — bozuk veriyle devam etmemek için.
Asıl değeri, düzeltilebilir hata sayacındadır: artan bir sayaç, arızadan haftalar önce uyarır. Bu sayaç okunmuyorsa ECC’nin faydası yarıya inmiş demektir.