ECC versus no ECC

ECC versus no ECC

Me gustaría construir un servidor de almacenamiento (basado en GNU/Linux o FreeBSD) que esté encendido todo el tiempo. Para evitar la corrupción de datos (lo cual es poco probable que suceda ya que nunca tuve ese problema, pero más vale prevenir que lamentar) me gustaría usar RAM ECC.

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

La RAM registrada 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.

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

La segunda opción será mucho más económica en cuanto al procesador y la placa base, y dudo que necesite más de 16 GB de RAM (4x4 GB ECC sin búfer son los dispositivos más grandes y asequibles).

La duda que tengo es (principalmente en relación con 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 confiabilidad)? ¿O es una peor elección? No me importa mucho la velocidad.

Más detalles: el servidor utilizará una caja de servidor con hasta 24 unidades de 3,5'' y debería consumir lo menos posible. LGA1155 parece ser en ese sentido una mejor apuesta (TDP ~ 20-95W) frente a los demás (>80W) por el doble de precio. Cualquier sugerencia es bienvenida. Digamos menos de 120 W en reposo (~ con 10 discos duros de 24).

Respuesta1

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

Si es sólo un servidor de almacenamiento, ni siquiera necesitará tanto rendimiento de la CPU.

Como dijiste, elige Sandy Bridge, te brindará un sistema genial, eficaz y confiable.

Hablando de rangos de RAM de 16 GB, no tienes que preocuparte por cosas ECC.

Respuesta2

ECC parece corregir sólo errores de un solo bit.

Correcto. Para corregir más errores se necesitarían más bits. Tal como están las cosas, ya se utilizan 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. Imagínese un 0o un 1. Si leo cualquiera de los dos, solo tengo que esperar haber leído lo correcto. Si un 0 se convirtió en 1 por alguna radiación cósmica o por un chip defectuoso, nunca lo sabré.

En el pasado intentamos solucionar eso con paridad. La paridad consistía en añadir un noveno bit por cada 8 bits almacenados. Comprobamos cuántos ceros y cuántos 1 había en el byte. El noveno estaba preparado para hacer que ese fuera un número par. (para paridad uniforme) Si alguna vez leíste un byte y el número era incorrecto, entonces sabías que algo andaba mal. Sin embargo, no sabes qué parte estaba mal.

ECC amplió eso. Utiliza 10 bits y un algoritmo complejo para descubrir cuándo se ha invertido un solo bit. También sabe cuál era el valor original. Una forma muy sencilla de explicar cómo lo hace sería esta:

Reemplace todas 0las s con 000. Reemplace todas 1las s con 111.

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

Nunca estamos 100% seguros de lo que se almacenó originalmente. Si leemos 000entonces, es posible que haya sido exactamente lo 000que esperábamos, o que los tres bits se hayan invertido. Esto último es muy improbable. Los bits no se voltean al azar, aunque sucede. Digamos que eso sucede una de cada diez veces para algunos cálculos sencillos (la realidad es mucho menor). Eso se traduce en las siguientes posibilidades de leer el valor correcto:

000-> O 000(99,9% seguro), o un triple lanzamiento (probabilidad de 1/1000)

001-> Sabemos que algo salió mal. Pero o fue 000y se invirtió un bit (una probabilidad de 1:10), o fue 111y se invirtieron dos bits (una probabilidad de 1:100). Entonces, tratémoslo como si leyéramos 000pero registremos el error.

010-> Igual que arriba.

100-> Igual que arriba.

011-> Igual que arriba, pero suponiendo que fuera un111

101-> Igual que arriba, pero suponiendo que fuera un111

110-> Igual que arriba, pero suponiendo que fuera un111

111-> O 111(99,9% seguro), o un triple lanzamiento (probabilidad de 1/1000)

111-> O 000(99,9% seguro), o un triple lanzamiento (probabilidad de 1/1000)

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 con ECC solo se puede utilizar con placas de estación de trabajo/servidor. ECC sin búfer se puede utilizar en Intel Xeon lga1155 o AMD AM3+ en placas Asus.

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

En las CPU modernas, el controlador de memoria está en la CPU, comenzando hace mucho tiempo con 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 contienen la RAM. Funciona y no se necesita lógica adicional. Es barato de construir y la velocidad es alta porque no hay demoras entre el controlador de memoria y la RAM.

Pero un controlador de memoria sólo puede manejar una corriente limitada a altas velocidades. Esto significa que existe un límite en la cantidad de zócalos 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 los rangos de memoria. Lo omitiré porque esto ya es largo).

En las placas de servidor a menudo se 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 del DIMM primero se copian en este búfer. Un ciclo de reloj después, 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. Esto 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 lo necesitan y la mayoría de las CPU de consumo no lo admiten.

La RAM sin búfer y conectada directamente versus la RAM con búfer/registrada no es un caso en el que una sea mejor o peor que la otra. 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 algo de velocidad (y posiblemente gasto). En la mayoría de los casos en los que necesita tanta memoria como sea posible, esa memoria adicional compensa con creces el hecho de que la RAM se ejecuta a una velocidad ligeramente más lenta.

La duda que tengo es (principalmente en relación con 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 confiabilidad)? ¿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 utilizará una caja de servidor con hasta 24 unidades de 3 ½'' y debería consumir lo menos posible.

24 unidades consumirán mucha energía. Cuánto depende de las unidades. Mi unidad SAS de 140 GB y 15 K RPM consume apenas 10 vatios en inactivo, lo mismo que el disco SATA 7k2 de 1 TB. Cuando se usan, ambos dibujan más.

Multiplique eso por 24. 24x10 vatios en reposo significa 240 vatios simplemente manteniendo los discos girando, superando la resistencia del aire. Duplica eso para usarlo.


LGA1155 parece ser en ese sentido una mejor apuesta (TDP ~ 20-95W) frente a los demás (>80W) por el doble de precio.

Intel es mejor en CPU de bajo consumo, al momento de escribir este artículo y para las CPU que mencionaste.

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

Si opta por FreeBSD, observe detenidamente ZFS. Puede ser genial. Muchas de sus funciones más avanzadas (por ejemplo, deduplicación y/o compresión) consumen mucha potencia de CPU y requieren 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 examinar detenidamente la memoria recomendada necesaria para la capacidad de su disco; Se recomienda hasta 5 GB por TB de almacenamiento.algunas guías.

Dos cosas más:

  1. No vi nada sobre la conexión de las unidades. Algunas placas pueden tener hasta 10 puertos SATA. Pero para cualquier cosa que supere eso, necesitarás tarjetas complementarias. Si considera RAID de hardware, entonces sería mejor planificarlo desde el principio.
  2. Fallo de la unidad: ¿Debería utilizarMultiplicadores de puertos SATAluego observe atentamente cómo actúan si falla una unidad SATA. Muchas veces no es bonito. No es un gran problema para una configuración doméstica, pero no es de nivel 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, querrás que la unidad vuelva a intentarlo tantas veces como sea posible. Con RAID,Quieres que la unidad falle rápidamente, para que puedas leer desde otra copia.

Respuesta3

Dos cuestiones separadas.

ECC versus no ECC

  • Utilice ECC siempre que el tiempo de actividad sea importante
  • cuesta más: necesita (múltiplos de) 9 fichas en lugar de 8
  • La placa base debe soportarla para usarla.

Registrado versus sin búfer:

  • Puede tener (mucha) 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 los DIMM sin búfer si actualiza a Registrado
  • También es más caro y el ciclo es más lento de acceder.
    • Sin búfer tiene una latencia ligeramente menor, si eso importa
    • todos los accesos aleatorios toman muchos ciclos de todos modos
    • Tenga en cuenta que la latencia de acceso absoluta (tiempo en nanosegundos) no ha mejorado mucho en la historia del uso de DRAM en las PC.
      • En cambio, el costo, la capacidad y el ancho de banda mejoraron enormemente.
      • Los cachés de memoria ocultan la latencia para la mayoría de los accesos a la memoria de todos modos.
    • Una latencia más larga perjudica más el rendimiento en "tiempo real" de un solo subproceso
      • Por lo general, no afecta mucho los casos de uso del 'servidor'.
    • Diferencia mínima o nula en ancho de banda y rendimiento general
      • El ancho de banda de acceso secuencial no se ve afectado.
      • Los cachés L2/L3 significan que los patrones de acceso reales reemplazan principalmente filas a la vez en el caché, por lo que de todos modos suelen ser accesos "ráfagas"

información relacionada