PCT speciál – jak jsem stavěl domácí server 1. díl | Kapitola 7
Seznam kapitol
Dnešním dnem počínaje startuje třídílní seriál o stavbě domácího serveru. Najde uplatnění nejenom jako privátní servřík, ale i router, rychlý NAS nebo HTPC. Celou dobu nám šlo hlavně o co nejnižší spotřebu, nulový hluk díky celé řadě nastavení a maximální spolehlivost, čemuž jsme přizpůsobili výběr nestandardních komponent.
ECC RAM
Paměťový modul DDR3 Unbuffered ECC – všimněte si devíti čipů
Jak funguje paměť ECC ? Standardní DIMM modul má datovou šířku 64 bitů a skládá se z osmi paměťových čipů po 8 bitech. Takový modul nechrání proti selhání dat. Modul ECC naproti tomu má šířku 72 bitů (64 bitů + 8 bitů korekce) a sestává z devíti paměťových čipů. Uchovává stejné množství údajů, devátý modul je zde přítomen proto, aby do něj byly uloženy informace o kontrolním součtu. ECC modul umožňuje detekovat 2 bity chyb a opravit 1 bit chybu. To je dostatečná míra spolehlivost na drtivou většinu situací.
Proč je tato kontrola důležitá? Paměti totiž nejsou stoprocentně spolehlivé. Vlivem elektromagnetického záření (zejména z počítačového zdroje, kosmického záření), teploty, napěťových špiček atp. se můžou nahodile měnit hodnoty uložené v paměti. Jinými slovy jedničky se můžou změnit na nuly a nuly na jedničky. Tyto nahodilé změny jsou označovány termínem Soft Errors. Množství takto vygenerovaných chyb se pak označuje termínem Soft Error Rate (SER). Podle dokumentu zveřejněného AMD se u moderních paměťových modulů vyskytuje zhruba jeden Soft Error za 2 až 4 týdny na 1 GB paměti RAM. To v praxi znamená, že při dnes docela běžných 4 GB dojde k poškození dat zhruba jednou až dvakrát do týdne, při 8 GB se tak může stávat zhruba dvakrát až čtyřikrát do týdne.
Na screenshotu výše z mého domácího serveru je v systémovém logu zaznamenána oprava chyby v paměti. Počítač obsahuje 8 GB RAM ve dvou modulech a k chybě dochází cca jednou až dvakrát za týden. V případě intenzivní zátěže je výskyt chyb častější. V běžném systému bez ECC RAM takové chyby nejsou vůbec odhaleny, natož aby byly opraveny. Za normálních okolností chybu nepoznáte, protože může způsobit třeba jen nestabilitu nějakého programu, nepostřehnutelnou chybu v čísle atp. Někdy ale můžou být následky horší, např. když se poškodí archiv s cennými údaji.
Podotýkám, že počítač uvedený výše je schopen stresového testu Prime95 64 bit 10 dní non-stop bez chyby.
Režimy práce ECC RAM
Paměti typu ECC mají hned několik režimů práce. Základní schéma ECC ve formě 64 bit + 8 bit korekce jsem již popsal. Toto schéma je samozřejmě možné rozšířit na dva řadiče a získat 128 bit + 16 bit korekce, přičemž ochrana je stejná, a sice že pokud dojde k dvěma opravitelným chybám současně, musí se tak stát vždy po jedné v každém modulu. V opačném případě chyby nemůžou být opraveny. Druhou obvyklou možností práce je Chip Kill mód, který je funkční jen při dvojici paměťových řadičů operujících v synchronním režimu (tzv. ganged mode). V takovém případě je korekce rozdistibuována mezi více čipů, a tedy může být opravováno víc chyb v jednom modulu, pokud není překročen maximální počet v jednom okamžiku přítomných chyb.
Vhodné je ale i zmínit se o tom, kdy ke korekci dochází. Běžně k ní totiž dochází jen při čtení údajů z paměti. Kontrolu totiž fyzicky provádí řadič a ne paměť samotná, z čehož plyne, že jediný okamžik, kdy k opravě může dojít, je když řadič data přečte a zkontroluje. A to se běžně děje jen v okamžiku, kdy jsou data vyžadována. U počítačů s procesory AMD je ale možné zapnout také memory scrubber. To je vlastnost, kdy řadič v určitých časových intervalech (nastavitelných) čte postupně celou paměť a provádí její kontrolu. Díky této vlastnosti je možné výrazně omezit pravděpodobnost nastání situace, kdy dojde k druhé (a tudíž neopravitelné) chybě v paměti před tím, než je první chyba přečtena a opravena. Schubbery takto opravují i data v cache procesoru a to ve všech úrovních (L1, L2 a L3).
Doporučené nastavení pro RAM scrubbing
Scrubber pochopitelně znamená určitou ztrátu výkonu a zvýšení spotřeby, na druhou stranu bez jeho použití je spolehlivost ECC RAM značně nižší. AMD doporučuje nastavit memory scrubbing na základě zejména těchto faktorů:
Velikost paměti RAM
Uživatelova tolerance vůči možným chybám
Uživatelovy nároky na výkon počítače
Geografická lokace počítače (včetně nadmořské výšky)