ECC registrado vs ECC sin búfer


15

Me gustaría construir un servidor de almacenamiento (basado en GNU / Linux o FreeBSD) que estará encendido todo el tiempo. Para evitar la corrupción de datos (lo cual es poco probable que ocurra ya que nunca tuve un problema así, pero es mejor prevenir que curar) Me gustaría usar la RAM ECC.

Aunque no es tan bueno como EDD (?) (Que es mucho más caro) y proporciona protección adicional. ECC parece corregir solo errores de un solo bit.

La RAM registrada en ECC solo se puede utilizar con placas de estación de trabajo / servidor como Intel Xeon o AMD interlagos / magny-cours / valencia g34 o c32.

El ECC sin búfer se puede usar en Intel Xeon lga1155 o AMD AM3 + en las placas Asus.

La segunda opción será mucho más barata en el lado del procesador y la placa base, y dudo que necesite más de 16 GB de RAM (4x4 GB ECC sin búfer son las unidades más grandes y asequibles).

La duda que tengo es (principalmente con respecto a la placa asus am3 +): ¿la RAM sin búfer ECC es tan buena como la RAM registrada con ECC (desde el punto de vista de la seguridad y la fiabilidad)? ¿O es una peor elección? No me importa mucho la velocidad.

Más detalles: el servidor utilizará una carcasa de servidor con unidades de hasta 24 x 3.5 '' y debería consumir la menor cantidad posible. LGA1155 parece ser en ese sentido una mejor apuesta (TDP ~ 20-95W) en comparación con los demás (> 80W) por el doble del precio. Cualquier sugerencia es bienvenida. Digamos menos de 120W en inactivo (~ con 10 discos duros de 24).


1
Preguntar por SuperUser te dará una respuesta de SuperUser. Pregunte en ServerFault obtendrá su respuesta ServerFault. ¿Me entiendes?
Chad Harrison el

Las preguntas frecuentes estados de hardware se pueden hacer en superusuario ...
user51166

@hydroparadise Consulte las preguntas frecuentes: permitimos todas las preguntas sobre hardware.
Simon Sheehan

Sry, pensé que se suponía. Solo mencioné que desde el lado del sistema operativo podría haber diferentes consideraciones sobre cómo se aborda el ECC porque esto se convertirá en una aplicación de servidor.
Chad Harrison

1
Apenas. La mayoría de las veces el conjunto de chips manejará la corrección de ECC (si corresponde). No es necesario que accedas a los del SO en absoluto. (Sin embargo, puede usar DMI para obtener información sobre los errores de ECC o QPI).
Hennes

Respuestas:


-2

Bueno, si usa solo 16 GB de RAM, que no es un rango de RAM del servidor, estará bien con cualquier RAM / sys de escritorio estándar.

Si es solo un servidor de almacenamiento, ni siquiera necesitará tanto rendimiento de CPU.

Como dijiste, ve con Sandy bridge, te dará un sistema genial, eficiente y confiable.

Hablando de rangos de RAM de 16 GB, no tiene que preocuparse por las cosas de ECC.


Gracias por tu rápida respuesta. Pensé que por encima de 4 GB de RAM necesitarías ECC. Es seguro para 256 GB de RAM o media TB de RAM ECC es IMPRESCINDIBLE. Pero pensé que 16 GB era el límite ... De todos modos, es extraño ... un Xeon 4C / 8T Sandybridge cuesta 100 $ menos (en mi lugar) que una CPU de escritorio equivalente. El costo total es ~ igual. No hay inconvenientes en ECC aquí. ¿Estás seguro de que no se necesita ECC?
user51166

@ user51166 100% seguro. 16GB es como el estándar hoy en día en plataformas de gama media / alta.
inf

2
El hecho de que sea el estándar de facto no significa necesariamente que sea lo suficientemente confiable. Ya leí sobre casos en Internet donde todos los datos en el disco se corrompieron en el HDD no por el controlador SATA, sino por la RAM defectuosa (no ecc).
user51166

1
@ user51166 Dígale al tipo que dijo eso, que definitivamente no era ECC no era su problema.
inf

1
"ECC registrado> ECC sin búfer" No / a veces. El ECC sin búfer / no registrado será en realidad más rápido. El ECC almacenado / registrado será al menos una acción de registro más lenta, pero puede agregar más DIMM a un canal de memoria. (Y más memoria PUEDE acelerar su sistema, incluso si aumenta la latencia). Entonces, en lugar de un duro "Sí / no", la respuesta correcta es "depende".
Hennes

45

ECC parece corregir solo errores de un solo bit.

Correcto. Corregir más errores requeriría más bits. Tal como están las cosas, ya usa 10 bits para almacenar 8 bits de información, 'desperdiciando' el 20% de los chips de memoria para permitir una corrección de un solo bit y hasta dos bits de detección de errores.

Funciona de la siguiente manera. Imagina una 0o una 1. Si leo cualquiera de los dos, solo tengo que esperar leer lo correcto. Si un 0 se volcó a un 1 por alguna radiación cósmica o por un chip malo, entonces nunca lo sabré.

En el pasado tratamos de resolver eso con paridad. Parity estaba agregando un noveno bit por cada 8 bits almacenados. Verificamos cuántos ceros y cuántos 1 había en el byte. El noveno se estableció para que sea un número par. (para una paridad uniforme) Si alguna vez leyó un byte y el número estaba equivocado, entonces sabía que algo estaba mal. Sin embargo, no sabes qué parte estuvo mal.

ECC se expandió en eso. Utiliza 10 bits y un algoritmo complejo para descubrir cuándo se volcó un solo bit. También sabe cuál era el valor original. Una manera muy simple de explicar cómo lo hace sería esto:

Reemplace todos los 0s con000 . Reemplace todos los 1s con 111.

Ahora puedes leer seis combinaciones:
000
001
010
100
101
111

Nunca estamos 100% seguros de lo que se almacenó originalmente. Si leemos000 entonces eso podría haber sido justo 000lo que esperábamos, o los tres bits podrían haber cambiado. Esto último es muy improbable. Los bits no cambian aleatoriamente, aunque sucede. Digamos que sucede una de cada diez veces para algunos cálculos fáciles (la realidad es mucho menos). Eso funciona con las siguientes posibilidades de leer el valor correcto:

000 -> Cualquiera 000 (99.9% seguro), o un triple flip (1/1000 de probabilidad)

001-> Sabemos que algo salió mal. Pero fue 000y un bit volcó (posibilidad 1:10), o fue 111y dos bits voltearon (una probabilidad 1: 100). Así que tratémoslo como si leyeramos 000pero registramos el error.

010 -> Igual que el anterior.

100 -> Igual que el anterior.

011 -> Igual que el anterior, pero suponiendo que fuera un 111

101 -> Igual que el anterior, pero suponiendo que fuera un 111

110 -> Igual que el anterior, pero suponiendo que fuera un 111

111-> O111 (99.9% seguro), o un triple flip (1/1000 de probabilidad)

111-> O000 (99.9% seguro), o un triple flip (1/1000 de probabilidad)

Los ECC hacen trucos similares pero lo hacen de manera más eficiente. Para 8 bits (un byte) solo usan 10 bits para detectar y corregir.


La RAM registrada de ECC solo se puede usar con placas de estación de trabajo / servidor ECC sin búfer se puede usar en Intel Xeon lga1155 o AMD AM3 + en las placas Asus.

Ya mencioné cuál era la parte de ECC, ahora la parte registrada frente a la parte sin búfer.

En las CPU modernas, el controlador de memoria está en el dado de la CPU, comenzando hace mucho tiempo para los chips AMD Opteron y con la serie Core i para Intel. La mayoría de las CPU de escritorio se comunican directamente con los zócalos DIMM que sostienen la RAM. Funciona y no se necesita lógica adicional. Es barato de construir, y la velocidad es alta porque no hay demoras desde el controlador de memoria a la RAM.

Pero un controlador de memoria solo puede conducir una corriente limitada a altas velocidades. Esto significa que hay un límite en la cantidad de sockets de memoria que se pueden agregar a una placa base. (Y para hacerlo más complejo, cuánto pueden usar los DIMM, lo que lleva a rangos de memoria. Lo omitiré ya que esto ya es largo).

En las placas de servidor, a menudo desea utilizar más memoria que un sistema de escritorio. Por lo tanto, se agrega un búfer de "registro" a la memoria. Las lecturas de los chips en el DIMM se copian primero en este búfer. Un ciclo de reloj más tarde, este búfer se conecta al controlador de memoria para transferir los datos.

Este búfer / registro retrasa las cosas, haciendo que la memoria sea más lenta. Eso no es deseable y, por lo tanto, solo se usa / necesita en placas que tienen muchos bancos de memoria. La mayoría de las placas de consumo no necesitan esto, y la mayoría de las CPU de consumo no lo admiten.

La RAM sin búfer conectada directamente frente a la RAM registrada / con búfer no es un caso en el que uno sea mejor o peor que el otro. Simplemente tienen diferentes compensaciones en términos de cuántas ranuras de memoria puede tener. La RAM registrada permite más RAM a costa de cierta velocidad (y posiblemente gasto). En la mayoría de los casos donde necesita tanta memoria como sea posible, esa memoria adicional compensa con creces la RAM que se ejecuta a una velocidad ligeramente más lenta.

La duda que tengo es (principalmente con respecto a la placa asus am3 +): ¿la RAM sin búfer ECC es tan buena como la RAM registrada con ECC (desde el punto de vista de la seguridad y la fiabilidad)? ¿O es una peor elección? No me importa mucho la velocidad. **

Desde el punto de vista de la seguridad y la estabilidad, ECC sin búfer y ECC registrado son lo mismo.


Más detalles: el servidor usará una carcasa de servidor con unidades de hasta 24 x 3 ½ '' y debería consumir la menor cantidad posible.

24 unidades consumirán mucha energía. Cuánto depende de las unidades. Mi unidad SAS de 140 GB y 15 K RPM está consumiendo solo 10 vatios en reposo, igual que el disco SATA 7k2 de 1 TB. En uso ambos dibujan más.

Multiplique eso por 24. 24x10 vatios en inactivo significa 240 vatios simplemente manteniendo los discos girando, superando la resistencia del aire. Doble ish para uso.


LGA1155 parece ser en ese sentido una mejor apuesta (TDP ~ 20-95W) en comparación con los demás (> 80W) por el doble del precio.

Intel es mejor con CPU de baja potencia, al momento de escribir y para las CPU que mencionó.

Cualquier sugerencia es bienvenida. Digamos menos de 120W en inactivo (~ con 10 discos duros de 24).

Si optas por FreeBSD, mira detenidamente a ZFS. Puede ser genial Muchas de sus funciones más avanzadas (por ejemplo, deduplicación y / o compresión) utilizan una gran potencia de la CPU y necesitan mucha memoria. ZFS para uso básico con ZRAID funcionará bien en ambos conjuntos de CPU que mencionó y con 16 GB, pero si activa funciones como la deduplicación, debe buscar cuidadosamente la memoria recomendada necesaria para la capacidad de su disco; Se recomiendan hasta 5 GB por TB de almacenamientoAlgunas guías .

Dos cosas mas:

  1. No vi nada sobre conectar las unidades. Algunas placas pueden ir hasta 10 puertos SATA. Pero para cualquier cosa por encima de eso, necesitará tarjetas adicionales. Si considera el RAID de hardware, puede ser mejor planificarlo desde el principio.
  2. Falla de la unidad: si usa multiplicadores de puerto SATA , observe cuidadosamente cómo actúan si falla una unidad SATA. A menudo no es bonito. No es un gran problema para una configuración doméstica, pero en gran medida no es de grado empresarial. Es posible que también deba considerar cómo las unidades individuales manejan los errores. La razón por la que algunas unidades están etiquetadas como para uso "NAS" o "RAID" es que manejan los errores de manera diferente a las unidades normales. Sin RAID, desea que la unidad vuelva a intentarlo tantas veces como sea posible. Con RAID, desea que la unidad falle rápidamente , para que pueda leer desde otra copia.

55
Votar porque esto realmente responde la pregunta, mientras que el otro es un consejo más práctico / anecdótico. Ignoraremos que divague un poco antes de llegar a la parte de registro vs sin búfer;)
ernie

1
Sí, hace meandro. Traté de ser minucioso, pero realmente no debería convertirme en escritor. (ya sea de ficción o de manuales).
Hennes

Heh, también ignoraremos que originalmente dejé de leer cuando comenzaste a abordar el poder y otras preocupaciones. . . ;)
ernie

1
Esta es una excelente respuesta, no puede ser más corta y aún así abordar todas las preguntas tan bien. Acabo de hacer una edición moderada que limpió el texto que ayudará una vez que se aplique. Incluso eliminó su disculpa por recortar dos líneas: la respuesta aceptada aquí no fue muy útil. Extendí brevemente las preocupaciones de deduplicación de ZFS y manejé el manejo de errores mientras estaba allí. Decidí no entrar en vibración, aunque eso también va a ser un problema con 24 unidades.
Greg Smith

Gracias por aclarar los registros registrados frente a los no almacenados en búfer, y los motivos para utilizar RDIMM.
Mahmoud Al-Qudsi

1

Dos cuestiones separadas.

ECC Vs no ECC

  • use ECC donde sea que el tiempo de actividad sea importante
  • cuesta más: necesita (múltiplos de) 9 chips en lugar de 8
  • la placa base debe ser compatible para usarla

Vs registrados sin búfer:

  • Puede tener (mucho) más RAM total instalada con DIMM registrados
    • Menos tensión eléctrica en la interfaz del controlador de memoria
  • Pero todos los DIMM instalados deben estar registrados o no
    • debe eliminar DIMMS sin búfer si actualiza a Registrado
  • También es más costoso y un ciclo de acceso más lento
    • Sin búfer es una latencia ligeramente inferior, si eso importa
    • todos los accesos aleatorios toman muchos ciclos de todos modos
    • Tenga en cuenta que la latencia de acceso absoluto (tiempo en nanosegundos) no ha mejorado mucho en el historial de uso de DRAM en PC
      • el costo, la capacidad y el ancho de banda mejoraron enormemente
      • la memoria caché oculta la latencia para la mayoría de los accesos de memoria de todos modos
    • La latencia más larga perjudica el rendimiento de un solo hilo en tiempo real
      • por lo general no afecta mucho los casos de uso del 'servidor'
    • No / diferencia mínima en ancho de banda y rendimiento general
      • ancho de banda de acceso secuencial no afectado
      • Los cachés L2 / L3 significan que los patrones de acceso reales en su mayoría reemplazan las filas a la vez en el caché, por lo que generalmente son accesos 'en ráfaga' de todos modos
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.