Registrato ECC vs ECC senza buffer


15

Vorrei costruire un server di archiviazione (basato su GNU / Linux o FreeBSD) che sarà sempre attivo. Per prevenire la corruzione dei dati (che è improbabile che accada poiché non ho mai avuto un tale problema, ma è meglio prevenire che curare), vorrei utilizzare la RAM ECC.

Anche se non buono come EDD (?) (Che è molto più costoso) e offre una protezione aggiuntiva. ECC sembra correggere solo errori a bit singoli.

La RAM registrata ECC è utilizzabile solo con schede workstation / server come Intel Xeon o AMD interlagos / magny-cours / valencia g34 o c32.

ECC senza buffer è utilizzabile su Intel Xeon lga1155 o AMD AM3 + su schede Asus.

La seconda opzione sarà molto più economica sul lato processore e della scheda madre, e dubito che avrò bisogno di più di 16 GB di RAM (4x4 GB ECC senza buffer sono i più grandi stick convenienti).

Il dubbio che sto avendo è (principalmente riguardante la scheda ASUS AM3 +): la RAM senza buffer ECC è buona quanto la RAM registrata ECC (dal punto di vista della sicurezza e dell'affidabilità)? O è una scelta peggiore. Non mi interessa molto per la velocità.

Maggiori dettagli: il server utilizzerà un case server con un massimo di 24 unità da 3,5 '' e dovrebbe consumare il meno possibile. LGA1155 sembra essere in questo senso una scommessa migliore (TDP ~ 20-95 W) rispetto alle altre (> 80 W) per il doppio del prezzo. Qualsiasi suggerimento è il benvenuto. Diciamo meno di 120 W al minimo (~ con 10 dischi rigidi su 24).


1
Chiedere a SuperUser ti darà la risposta di SuperUser. Chiedi su ServerFault riceverai la risposta ServerFault. Prendi la mia deriva?
Chad Harrison,

La FAQ afferma che le domande hardware possono essere fatte su superutente ...
user51166

@hydroparadise Controlla le FAQ - consentiamo tutte le domande sull'hardware.
Simon Sheehan,

Sry, pensavo fosse ipotizzato. Stavo solo menzionando che dal lato del sistema operativo potrebbero esserci diverse considerazioni su come viene affrontato l'ECC perché diventerà in definitiva un'applicazione server.
Chad Harrison,

1
Appena. Il più delle volte il chipset gestirà la correzione ECC (se presente). Non è necessario accedere a quelli del sistema operativo. (Puoi, però, usare DMI per ottenere informazioni sugli errori ECC o QPI.)
Hennes,

Risposte:


-2

Bene, se usi solo 16 GB di RAM - che non è un intervallo di RAM del server - starai bene con qualsiasi RAM / sistema desktop standard.

Se è solo un server di archiviazione, non avrai nemmeno bisogno delle prestazioni della CPU.

Come hai detto, vai con Sandy Bridge, ti darà un sistema interessante, performante e affidabile.

Parlando di gamme di RAM da 16 GB, non devi preoccuparti di cose ECC.


Grazie per la tua rapida risposta. Anche se sopra i 4 GB di RAM avresti bisogno di ECC. È sicuro che per 256 GB di RAM o mezzo TB di RAM ECC è DEVE. Ma ho pensato che 16 GB fosse un po 'il limite ... Comunque è strano ... un Xeon 4C / 8T Sandybridge costa 100 $ in meno (al posto mio) di una CPU desktop equivalente. Il costo totale è ~ lo stesso. Nessun inconveniente su ECC qui. Sei sicuro che ECC non sia necessario ???
user51166,

@utente51166 sicuro al 100%. 16 GB è come lo standard al giorno d'oggi sulle piattaforme di fascia medio / alta.
inf

2
Il fatto che sia lo standard defacto non significa necessariamente che sia abbastanza affidabile. Hai già letto dei casi su Internet in cui tutti i dati sul disco sono stati danneggiati sull'HDD non a causa del controller SATA, ma a causa della RAM (non ecc) difettosa.
user51166

1
@ user51166 Di 'al tizio che ha detto che non era sicuramente ECC il suo problema.
inf

1
"ECC registrato> ECC senza buffer" No / a volte. L'ECC senza buffer / non registrato sarà effettivamente più veloce. L'ECC bufferizzato / registrato sarà almeno un'azione di registro più lenta ma è possibile aggiungere più DIMM a un canale di memoria. (E più memoria PUO ' rendere il sistema più veloce, anche se la latenza aumenta). Quindi piuttosto un duro "Sì / no" la risposta corretta è "dipende".
Hennes,

45

ECC sembra correggere solo errori a bit singoli.

Corretta. Per correggere più errori richiederebbe più bit. Allo stato attuale, si utilizzano già 10 bit per memorizzare 8 bit di informazioni, "sprecando" il 20% dei chip di memoria per consentire una correzione a singolo bit e fino a due bit di rilevamento degli errori.

Funziona come segue. Immagina un 0o un 1. Se leggo entrambi, devo solo sperare di leggere la cosa giusta. Se uno 0 viene lanciato su un 1 da una radiazione cosmica o da un chip difettoso, non lo saprò mai.

In passato abbiamo cercato di risolverlo con la parità. La parità stava aggiungendo un nono bit per 8 bit memorizzati. Abbiamo verificato quanti zeri e quanti 1 erano nel byte. Il nono è stato impostato per renderlo un numero pari. (per parità pari) Se hai mai letto un byte e il numero era sbagliato, allora sapevi che qualcosa non andava. Non sai quale parte sbagliata però.

ECC si è espanso su questo. Utilizza 10 bit e un algoritmo complesso per scoprire quando un singolo bit è stato capovolto. Sa anche quale fosse il valore originale. Un modo molto semplice per spiegare come potrebbe essere questo:

Sostituisci tutti 0con 000. Sostituisci tutti 1con 111.

Ora puoi leggere sei combinazioni:
000
001
010
100
101
111

Non siamo mai sicuri al 100% di ciò che è stato originariamente archiviato. Se leggessimo 000allora potrebbe essere stato proprio quello 000che ci aspettavamo, oppure tutti e tre i bit potrebbero essere stati capovolti. Quest'ultimo è molto improbabile. I bit non si capovolgono casualmente, anche se succede. Diciamo che succede una volta su dieci per alcuni semplici calcoli (la realtà è molto meno). Questo risolve le seguenti possibilità di leggere il valore corretto:

000-> O 000(sicuro al 99,9%) o una tripla (possibilità 1/1000)

001-> Sappiamo che qualcosa è andato storto. Ma o era 000e un po 'capovolto (possibilità 1:10), oppure lo era 111e due bit sono stati capovolti (una possibilità 1: 100). Quindi trattiamolo come se leggessimo 000ma registriamo l'errore.

010 -> Come sopra.

100 -> Come sopra.

011 -> Come sopra, ma supponendo che fosse un 111

101 -> Come sopra, ma supponendo che fosse un 111

110 -> Come sopra, ma supponendo che fosse un 111

111-> O 111(sicuro al 99,9%) o una tripla (possibilità 1/1000)

111-> O 000(sicuro al 99,9%) o una tripla (possibilità 1/1000)

Gli ECC eseguono trucchi simili ma lo fanno in modo più efficiente. Per 8 bit (un byte) usano solo 10 bit per rilevare e correggere.


La RAM registrata ECC è utilizzabile solo con schede workstation / server ECC senza buffer è utilizzabile su Intel Xeon lga1155 o AMD AM3 + su schede Asus.

Ho già menzionato quale fosse la parte ECC, ora la parte registrata rispetto a quella non bufferizzata.

Nelle moderne CPU il controller di memoria è sul die della CPU, a partire da molto tempo fa per i chip AMD Opteron e con la serie Core i per Intel. La maggior parte delle CPU desktop quindi comunica direttamente con i socket DIMM che contengono la RAM. Funziona e non è necessaria alcuna logica aggiuntiva. È economico da costruire e la velocità è elevata perché non ci sono ritardi dal controller di memoria alla RAM.

Ma un controller di memoria può pilotare solo una corrente limitata a velocità elevate. Ciò significa che esiste un limite al numero di socket di memoria che è possibile aggiungere a una scheda madre. (E per renderlo più complesso, per quanto i DIMM possono usare, il che porta a livelli di memoria. Lo salterò dal momento che questo è già lungo).

Sulle schede server spesso si desidera utilizzare più memoria rispetto a un sistema desktop. Pertanto un buffer "registro" viene aggiunto alla memoria. Le letture dai chip sul modulo DIMM vengono prima copiate in questo buffer. Un ciclo di clock più tardi questo buffer si collega al controller di memoria per trasferire i dati.

Questo buffer / registro ritarda le cose, rallentando la memoria. Ciò è indesiderabile e quindi viene utilizzato / necessario solo su schede con molti banchi di memoria. La maggior parte delle schede consumer non ne ha bisogno e la maggior parte delle CPU consumer non la supporta.

La RAM direttamente collegata, senza buffer e la RAM buffer / registrata non è un caso in cui uno è migliore o peggiore dell'altro. Hanno solo diversi compromessi in termini di quanti slot di memoria puoi avere. La RAM registrata consente più RAM al costo di una certa velocità (e possibilmente spesa). Nella maggior parte dei casi in cui è necessaria quanta più memoria possibile, quella memoria aggiuntiva compensa più la RAM in esecuzione a una velocità leggermente inferiore.

Il dubbio che sto avendo è (principalmente riguardante la scheda ASUS AM3 +): la RAM senza buffer ECC è buona quanto la RAM registrata ECC (dal punto di vista della sicurezza e dell'affidabilità)? O è una scelta peggiore. Non mi interessa molto per la velocità. **

Dal punto di vista della sicurezza e della stabilità, ECC senza buffer e ECC registrati sono gli stessi.


Maggiori dettagli: il server utilizzerà un case server con un massimo di 24 x 3 unità da ½ '' e dovrebbe consumare il meno possibile.

24 unità consumeranno molta energia. Quanto dipende dalle unità. La mia unità SAS da 15 GB RPM da 140 GB assorbe solo 10 watt al minimo, lo stesso del disco SATA 7k2 da 1 TB. All'uso entrambi disegnano di più.

Moltiplicare quello per 24. 24x10 Watt al minimo significa 240 watt solo mantenendo i dischi rotanti, superando la resistenza dell'aria. Doppio ish che per in uso.


LGA1155 sembra essere in questo senso una scommessa migliore (TDP ~ 20-95 W) rispetto alle altre (> 80 W) per il doppio del prezzo.

Intel è migliore nelle CPU a bassa potenza, al momento della stesura e per le CPU che hai citato.

Qualsiasi suggerimento è il benvenuto. Diciamo meno di 120 W al minimo (~ con 10 dischi rigidi su 24).

Se scegli FreeBSD, guarda ZFS. Può essere fantastico Molte delle sue funzionalità più avanzate (ad es. Deduplicazione e / o compressione) utilizzano una notevole potenza della CPU e richiedono molta memoria. ZFS per l'uso di base con ZRAID andrà bene su entrambi i set di CPU menzionati e con 16 GB, ma se si attivano funzionalità come la deduplicazione, è necessario esaminare attentamente la memoria consigliata necessaria per la capacità del disco; alcune guide consigliano fino a 5 GB per TB di spazio di archiviazione .

Altre due cose:

  1. Non ho visto nulla sul collegamento delle unità. Alcune schede possono andare fino a 10 porte SATA. Ma per tutto ciò, avrai bisogno di schede aggiuntive. Se si considera il RAID hardware, potrebbe essere meglio pianificarlo dall'inizio.
  2. Guasto dell'unità : se si utilizzano moltiplicatori di porte SATA, osservare attentamente come agiscono in caso di guasto di un'unità SATA. Spesso non è carino. Non è un grosso problema per un'installazione domestica, ma non molto di livello aziendale. Potrebbe essere necessario considerare come anche le singole unità gestiscono gli errori. Il motivo per cui alcune unità sono etichettate come "NAS" o "RAID" è che gestiscono gli errori in modo diverso rispetto alle unità normali. Senza RAID, si desidera riprovare l'unità il maggior numero di volte possibile. Con RAID, vuoi che l'unità si guasta rapidamente , in modo da poter leggere da un'altra copia.

5
Il voto dato che in realtà risponde alla domanda, mentre l'altro è un consiglio più pratico / aneddotico. Ignoreremo che si snoda un po 'prima di accedere al registro rispetto alla parte senza buffer;)
Ernie,

1
Sì, si snoda. Ho cercato di essere accurato, ma in realtà non dovrei diventare uno scrittore. (di fiction o di manuali).
Hennes,

Heh, ignoreremo anche che inizialmente avevo smesso di leggere quando hai iniziato ad affrontare il potere e altre preoccupazioni. . . ;)
ernie,

1
Questa è una risposta eccellente, non può essere più breve e risponde ancora così bene a tutte le domande. Ho appena fatto una modifica moderata che ha ripulito il testo e che sarà di aiuto una volta applicato. Ho anche rimosso le tue scuse per tagliare due righe: la risposta accettata qui non è stata molto utile. Mi sono espanso brevemente sui problemi di deduplicazione ZFS e ho guidato la gestione degli errori mentre ero lì. Ha deciso di non subire vibrazioni, anche se questo sarà un problema anche con 24 unità.
Greg Smith,

Grazie per il chiarimento registrato vs non bufferizzato e le ragioni per cui utilizzare RDIMM.
Mahmoud Al-Qudsi,

1

Due problemi separati.

ECC Vs non ECC

  • utilizzare ECC ovunque sia importante il tempo di attività
  • costa di più - servono (multipli di) 9 chip invece di 8
  • la scheda madre deve supportarla per usarla

Registrato Vs senza buffer:

  • Può avere (molto) più RAM totale installata con DIMM registrati
    • Meno tensione elettrica sull'interfaccia del controller di memoria
  • Ma tutti i moduli DIMM installati devono essere registrati o meno
    • rimuovere i DIMMS senza buffer se si passa a Registered
  • Inoltre è più costoso e un ciclo più lento per l'accesso
    • Unbuffered ha una latenza leggermente inferiore, se questo è importante
    • tutti gli accessi casuali richiedono comunque molti cicli
    • Notare che la latenza di accesso assoluta (tempo in nanosecondi) non è migliorata molto nel corso della storia dell'utilizzo della DRAM nei PC
      • costo, capacità e larghezza di banda sono invece notevolmente migliorati
      • le cache di memoria nascondono comunque la latenza per la maggior parte degli accessi alla memoria
    • Una latenza più lunga danneggia maggiormente le prestazioni "in tempo reale" a thread singolo
      • di solito non influisce molto sui casi d'uso "server"
    • Nessuna / minima differenza nella larghezza di banda e nelle prestazioni complessive
      • larghezza di banda ad accesso sequenziale non interessata
      • Le cache L2 / L3 significano che gli schemi di accesso effettivi sostituiscono principalmente le righe alla volta nella cache, quindi di solito sono comunque accessi "a raffica"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.