Empezaremos con un poco de historia:
- 2016: Construir una PC de bajo consumo en Skylake – 10 vatios en reposo
- 2019: 9 vatios en reposo: crear un NAS / servidor de archivos casero de bajo consumo con 4 unidades de almacenamiento
- 2021: (sin escribir) – 11 vatios con un Intel i3-10320 en un Gigabyte H470M DS3H
No todos mis sistemas han tenido tanto éxito. En 2022 medí otro par de sistemas a 19 y 27 vatios como parte de Frenando las tendencias «Gas-Guzzling» de AMD Radeon con Multi-Monitor. Aunque conseguí reducir la potencia de ese sistema AMD de 27 vatios un tiempo después, no todas las combinaciones de CPU y placa base están destinadas a los 10 vatios.
—
Antes de ir más lejos, la cifra de 7 vatios para este sistema fue antes de que el almacenamiento se ha añadido. Los 7 vatios (medidos en la pared) incluyen:
- Placa base (Intel H770)
- CPU (Intel i5-12400)
- 64 GB DE RAM/li>
- SSD (arrancando Ubuntu Server 23.04)
- Fuente de alimentación (Corsair)
- C-States configurado en BIOS para que llegue a C8
- powertop con auto-tune (que desactivó el teclado USB cuando el puerto se fue a dormir)
Ten en cuenta que si no permito que powertop desactive el teclado, obtengo 8 vatios medidos en la pared.
—
Pasemos a las especificaciones detalladas y a la elección de componentes. Esta vez tenía los siguientes objetivos:
- bajo consumo en reposo
- rendimiento razonable de la CPU para la compresión
- capacidad para 12 discos duros + al menos 1 NVMe
- capacidad para (eventualmente) convertir esos 12 discos duros en 6 NVMe + 6 SSD SATA
- mantener los costes bajo control – ya que sería necesario comprar una placa base, intentar seguir con DDR4 y reutilizar una CPU que ya tengo.
Montar un nuevo sistema con la esperanza de estar en el rango de los 10 vatios *medidos desde la pared* es a menudo no solo un reto, sino un poco arriesgado. A veces sólo tienes que tomar tus mejores conjeturas en términos de componentes, construir tu equipo, ajustar lo que puedas, y dejar que las fichas caigan donde puedan.
Placa base – ASUS Prime H770-Plus D4
Antes de comenzar, aquí está una mirada rápida a la disposición de la placa madre. Las ranuras VERDES conectadas a la CPU y las ranuras NARANJAS conectadas al chipset serán relevantes a lo largo de este artículo.
En el momento de escribir este artículo, las opciones de consumo disponibles eran placas base de las series 600/700 de Intel y 500/600 de AMD.
Uno de mis objetivos anteriores era la capacidad para un eventual 6 unidades NVMe.
Profundizando en los detalles de por qué esto puede ser un reto (siéntase libre de saltarse esta sección)…
Problema: Hay 0 placas base de consumo con 6x ranuras M.2 que se pueden utilizar todos al mismo tiempo en modo PCIe. En AMD la MEG X570S Unify-X Max *parece* que sí, pero comprueba el manual y verás que si intentas poblar las 6, la última tiene que ser una variante SATA. La ASRock Z790 PG Sonic también tiene 6 ranuras, pero solo puedes usar 5 de ellas (con una excusa legítima: ofrecen una ranura Gen5 NVMe pero viene con una advertencia de «o lo uno o lo otro»).
Por qué existe este problema: Hay limitaciones de carril de chipset en las placas de consumo. Suponiendo que yo quisiera poder ejecutar todas las M.2 en Gen4x4 y que un fabricante estuviera realmente dispuesto a dedicar todos los carriles a ranuras M.2 NVMe (no es así), AMD X570 e Intel B760 tendrían un máximo de tres ranuras M.2, mientras que AMD B650 e Intel H670/Q670/Z690/W680 tendrían cuatro. Las placas AMD X670 e Intel H770 pueden tener cinco ranuras M.2. Las placas Z790 pueden tener seis. Seis en una placa Z790. Más allá de eso, se necesitarían medidas extraordinarias como robar carriles a la ranura PCIE principal. Si se deseara un mayor número de ranuras M.2, los fabricantes podrían, en teoría, ejecutar carriles en Gen4x2 o añadir algunas ranuras M.2 Gen3, pero en ese punto habrían creado un producto *muy* de nicho.
La solución: Los adaptadores PCI-E a M.2 se hicieron necesarios. Ahora, al buscar una placa base, era cuestión de añadir las ranuras M.2 incluidas a cualquier ranura PCI-E disponible con capacidad x4 o superior. Mis opciones se limitaban ahora a las placas base AMD X570, Intel H770 e Intel Z790. Tenga en cuenta que, si bien el uso de la bifurcación es una posibilidad en algunas placas base para obtener más de 1 NVMe de la ranura PCIe principal, decidí no confiar en ella.
Me decidí por Intel por varias razones:
- TDP del chipset: los chipsets Intel de las series 600/700 tienen todos un TDP de 6 W, mientras que el TDP del chipset AMD X670 es bastante alto (7w+7w). El consumo de energía de los chipsets AMD me preocupa desde hace tiempo, ya que los anteriores chipsets X570 tenían un TDP de 11w y necesitaban un ventilador.
- Velocidad del chipset: los chipsets Intel H670/Q670/W680/Z690/H770/Z790 tienen un enlace DMI 4.0 x8 con la CPU. Los chipsets AMD X570/B650/X670 tienen un enlace PCIe 4.0 x4 a la CPU. El rendimiento teórico de Intel debería ser el doble que el de AMD (16 GB/s frente a 8 GB/s).
- Ya tenía 64 GB de DDR4 que el sistema Intel podía utilizar. Los chipsets de la serie 600 de AMD sólo admiten DDR5.
- Ya tenía una CPU Intel de 12ª generación.
- Todavía no he visto ningún debate positivo sobre el consumo de energía de AM5. En absoluto. Actualización: mientras escribía esto, han aparecido noticias sobre CPUs AMD de la serie 7000 que se queman/abomban en el punto en el que los pines del zócalo de la placa base se encuentran con la CPU. Sí, lo siento AMD, esta vez no.
Así que fue Intel. Después de comprobar las placas base DDR4 disponibles en el mercado, rápidamente reduje las opciones a 2 fabricantes: MSI y ASUS.
¿No te interesan las comparaciones de tablas? Siéntete libre de saltarte esto.
Las placas MSI más atractivas eran la PRO Z790-P WIFI DDR4 y la Z790-A WIFI DDR4. Casi idénticas en apariencia, salvo que la «A» es un poco más premium (audio, puertos traseros, disipadores, fases de alimentación, etc.). Pros/contras:
- Pro: 4x M.2 (Gen4x4) + 1x PCIE Gen5x16 + 1x PCIE Gen4x4 soporta un total de 6 Gen4 NVMe
- Pro: 2x PCIE Gen3x1 extra
- Pro: 6 puertos SATA
- Contra: LAN Intel 2.5G (conocida por sus problemas y fallos)
- Contra: No soy fan de la BIOS de MSI
- Contra: Mi actual placa B660 que resulta en un consumo en reposo más alto de lo esperado es una MSI.
Las opciones ASUS más atractivas eran la Prime H770-Plus D4 y la Prime Z790-P D4 (edición WIFI opcional). Entrar en los TUF, Strix o ProArt era demasiado caro.
Empezaré por enumerar los pros/contras de la H770-Plus:
- Pro: 3x M.2 (Gen4x4) + 1x PCIE Gen5x16 + 2x PCIE Gen4x4 soporta un total de 6 Gen4 NVMe
- Pro: 2x PCIE Gen3x1 extra
- Contra: Sólo 4 puertos SATA
- Pro: Adaptador de Red Realtek 2.5G (preferible a Intel 2.5G LAN hoy en día)
El Z790-P D4 es similar, excepto que tiene más fases de potencia, mejor disipación térmica, más puertos USB, cabezal de ventilador extra, y para nuestros propósitos…:
- +1 PCIE Gen4x4
- -1 PCIE Gen3x1
En última instancia, el ASUS Prime H770-Plus D4 fue de alrededor de $ 100 más barato en el momento y es lo que elegí.
Una ventaja que he encontrado en las placas «más baratas» es que suelen tener menos componentes y, por tanto, menos consumo de energía en reposo, aunque esto no siempre es seguro.
CPU – Intel i5-12400 (H0 stepping) – Alder Lake
Ya tenía esta CPU como parte de una construcción de escritorio anterior. En el momento en que fue elegido para el sistema de escritorio porque:
- tenía decodificación de hardware AV1
- tenía el mayor rendimiento disponible de la gama Intel de la 12ª generación que evita la sobrecarga del silicio E-core
- de todas formas, iba a comprar una placa base nueva con 2xDP, así que no tenía sentido optar por una generación anterior.
Esa construcción de escritorio resultó ser una decepción, y se ubica como una de mis construcciones menos favoritas.
Algunos detalles…
Tuve problemas en los que a veces sólo 1 de los 2 monitores DP conectados se despertaba en Linux, lo que significaba que tenía que desconectar el otro conector DP, o suspender/reanudar manualmente el sistema para que pudiera intentarlo de nuevo.
Otro problema era que reiniciar entre Windows/Linux a veces causaba problemas extraños que requerían un apagado/reinicio completo.
La decodificación de hardware en Ubuntu mediante Wayland sigue siendo problemática y cuando los programas intentaban utilizarla para reproducir vídeo, se producían problemas.
Por último, a diferencia de mis anteriores sistemas Intel, que podían reducirse hasta cerca de los 10 vatios, éste funcionaba al ralentí con 19 vatios, aunque sospecho que la placa base MSI que estaba utilizando puede haber sido un factor.
La mayoría de los dolores de cabeza que experimenté estaban relacionados con la GPU y la pantalla. Como estaba a punto de montar algo orientado a servidor, eso ya no era un factor.
MEMORIA – 64GB DDR4-3200
Esto es lo que he usado:
- 2x16GB Kingston HyperX de doble rango (Hynix DJR)
- 2x16GB Kingston HyperX de rango único (Hynix CJR)
Esta memoria ya la tenía. Ejecuté los 4 palos de memoria en el perfil XMP del kit de doble rango que era 16-18-18-36. Todo lo demás se dejó esencialmente a los valores predeterminados, excepto que corrí la RAM a 1,25 voltios (más alto que el stock de 1,20, pero inferior a la configuración XMP 1,35v). TestMem5 y Memtest86 mostraron estabilidad a 1,22v, aunque las pruebas de esta memoria en placas base anteriores habían mostrado que 1,22v era inestable, así que para tener un poco más de margen en cuanto a estabilidad aumenté el voltaje a 1,25v.
Unidad de arranque – Sandisk Ultra 3D 1TB SSD
Este componente no fue elegido deliberadamente. Cuando quise una instalación fresca de Ubuntu Server para las pruebas, este resultó ser el único SSD que tenía por ahí que no estaba siendo utilizado actualmente. Iba a hacer muchas pruebas A/B en dispositivos PCIE y NVMe, así que instalar Ubuntu 23.04 en un SSD SATA tenía sentido para mantener libres las ranuras PCIE.
Tenga en cuenta que después de las pruebas, el sistema operativo principal se iba a ejecutar en un Samsung SSD 970 EVO Plus 500GB NVMe. No hay mucho que decir, excepto que las cosas de Samsung tienden a entrar en modos de bajo consumo de forma fiable.
Habiendo utilizado ambas unidades, no puedo medir ninguna diferencia de potencia entre ellas en mis pruebas. Tom’s Hardware probó el Samsung en reposo a 0,072 vatios (mediante ASPM/APST), y Anandtech probó el Sandisk Ultra 3D en reposo a 0,056 vatios (mediante ALPM). Ambos valores están muy por debajo de la resolución de 1 W de mi medidor Kill-A-Watt.
Fuente de alimentación – Corsair RM750
Por mucho que esta fuente de alimentación de 750 W pueda parecer excesiva para un sistema que se pretende que ronde los 10 vatios, cuando 12 motores de unidad giran al mismo tiempo, es probable que la carga instantánea sea bastante alta. Seagate indica picos de corriente de 2A/3A CC/CA en el raíl de 12V para una de sus unidades de 3,5″ de 10TB. Incluso los picos de lectura/escritura aleatoria pueden superar los 2A.
Esta demanda de potencia tiene el potencial de ser problemática si la fuente de alimentación no está a la altura. Si una matriz de 6 unidades consume entre 150 y 200 vatios al mismo tiempo que la CPU alcanza un pico de 120 vatios, se pasa de unos 10 vatios en reposo a unos 400 vatios. Esto podría causar fácilmente una caída instantánea de voltaje – si cae lo suficiente como para causar un bloqueo/reinicio inmediato probablemente no sea un gran problema, pero si cae lo suficiente como para que los datos se corrompan durante una actualización de memoria o cuando otra unidad está a mitad de escritura… eso es un problema más doloroso. Sobredimensionar la fuente de alimentación hasta cierto punto (o añadir algunos condensadores en línea a los raíles de alimentación) tiene sentido.
Afortunadamente, a pesar de funcionar fuera del rango de eficiencia máxima, gran parte de la serie Corsair RM es bastante eficiente en un amplio rango.
Mediciones de potencia – Inicial
Algunos datos importantes:
- Potencia medida desde la pared
- Se utilizó Intel PowerTOP para autoajustar la configuración
- Servidor Ubuntu 23.04
Algunos datos potencialmente importantes de la BIOS:
- CPU C-estados fueron habilitados en el BIOS (C10)
- ASPM habilitado con todo configurado en L1
- RC6 (Render Standby) activado
- Soporte LPM agresivo habilitado (ALPM)
- DESHABILITADOS: Audio HD, Modo Conectividad, LEDs, Dispositivo GNA, Puerto Serie
9-10 vatios era el consumo cuando la salida de pantalla estaba encendida.
7 vatios era el consumo una vez que la pantalla se apagaba (consoleblank=600 parámetro de arranque del kernel para un temporizador de 600s), que es donde este sistema se encuentra la mayor parte de la semana.
8 vatios fue el consumo si la gestión de energía del teclado USB estaba desactivada. Si no haces SSH en el servidor desde otro lugar, gastar el vatio extra para el uso del teclado puede ser necesario.
Mediciones de potencia problemáticas – Cargado con óxido giratorio (no giratorio)
Como mencioné al principio, empecé con 12 discos duros. La mitad eran de 2,5″ y la otra mitad de 3,5″. Debido a que la placa base sólo tiene 4 puertos SATA, se utilizó un controlador SATA y un multiplicador de puertos para manejar las unidades restantes. Además, al principio se utilizaron 4 unidades NVMe: una de ellas, una Western Digital SN770 tenía tendencia a calentarse bastante incluso en reposo, lo que indica que probablemente no entraba en modo de bajo consumo.
Con todo el equipo conectado, en reposo, con la pantalla apagada y con las 12 unidades en modo de espera, me sorprendió ver que mi consumo de energía en reposo había pasado de 7 vatios a la friolera de 24-25 vatios. Demasiado. Algo iba mal.
Enigmas de consumo de energía – Investigación y diagnóstico de alta potencia
Desconecté los discos duros y empecé a probar los componentes de uno en uno. Eran pruebas bastante rudimentarias para hacerme una idea aproximada del culpable, así que los números no son precisos.
Rápidamente descubrí que el controlador SATA JMB585 que estaba utilizando provocaba un aumento del consumo de energía de entre 6 y 10 vatios (las mediciones precisas se incluyen en una sección posterior). Se supone que el controlador en sí sólo consume un par de vatios, y el pequeño disipador se mantenía frío, así que obviamente estaba pasando algo más. ¿A dónde iba la energía?
Decidí observar los estados C del paquete de la CPU. Sin el controlador SATA JMB585, el sistema llegó a C6. Cuando volví a conectar el JMB585, lo máximo que alcanzó el sistema fue C3. ¿Pero por qué? Resulta que si un dispositivo conectado a PCIE no entra en ASPM L1, la CPU no entra en un sueño tan profundo. Las tarjetas controladoras JMB585 no parecen tener soporte ASPM.
Un poco más de experimentación reveló algo más que no sabía, y tiene que ver con C6 vs C8. El sistema sólo llegará a C8 si no hay nada conectado a los carriles PCIE conectados a la CPU. En otras palabras, si hay algo conectado a la ranura PCIE superior o a la ranura NVMe superior, C6 es el máximo. La diferencia de consumo entre C6 y C8 *parecía* ser inferior a un vatio en una prueba sencilla.
Así que mientras que C8 sería un lujo, llegar a C6 era una obligación. C3 consume demasiada energía. Si los controladores SATA iban a impedir que la CPU alcanzara los mejores estados de ahorro de energía, empecé a preguntarme si debería haber buscado una placa base con 6-8 puertos SATA para no tener que depender de controladores adicionales…
Un poco de búsqueda de HBA SATA mostró que, si bien no hay muchas opciones aquí, el controlador SATA ASM1166 debe soportar ASPM L1, aunque el firmware tiene que ser flasheado para que funcione correctamente (y para trabajar en absoluto en las nuevas placas Intel). Esto era algo que tendría que pedir: Tengo repuestos de Marvel y JMicron, pero no son compatibles con ASPM. En realidad, llevaba años evitando ASMedia, pero por necesidad ahora tenían otra oportunidad: Pedí un par de controladoras SATA ASM1166 de 6 puertos.
Aparte: BadTLP, ¡Malo! Errores de bus AER desde el pcieport
Vale la pena mencionar… Durante las pruebas iniciales con un WD Black SN770 (Gen4 NVMe), encontré un problema cuando se utilizaron los puertos PCIE y NVMe primarios (conectados a la CPU superior). Ejecutar dmesg resultó en una salida llena de cosas como:
pcieport 0000:00:06.0: AER: Corrected error received: 0000:02:00.0
nvme 0000:02:00.0: PCIe Bus Error: severity=Corrected, type=Physical Layer, (Receiver ID)
pcieport 0000:00:06.0: PCIe Bus Error: severity=Corrected, type=Data Link Layer, (Transmitter ID)
pcieport 0000:00:06.0: AER: Error of this Agent is reported first
nvme 0000:02:00.0: [ 6] BadTLP
… después de mucho ensayo y error me encontré con que si el «PEG – ASPM» BIOS configuración se establece en [Desactivado] o [L0s] no hubo errores.
Por supuesto, esta era una mala opción, ya que [L1] es crucial para el ahorro de energía. Si se usaba [L1] o [L0sL1], la única opción era ajustar la velocidad de enlace de esos puertos a [Gen3], lo que no detenía los errores, pero los reducía sustancialmente.
Algunas investigaciones mostraron que la causa raíz puede ser cualquier número de cosas. Dado que cambiar la placa base o la CPU no era una idea agradable, mi mejor esperanza era cambiar a una marca diferente de NVMe.
Pedí unas unidades Crucial P3 NVMe. Esto resultó ser un esfuerzo exitoso: con las unidades WD reemplazadas por las unidades Crucial, ya no estaba recibiendo ningún error, aunque tenga en cuenta que estas son unidades Gen3.
Consumo de energía Puzzles – Encontrar L1.1 y L1.2 para ser habilitado sólo en los puertos conectados al chipset
Cuando tuve las 2 unidades Crucial P3 NVMe instaladas en la ranura PCIEx16 conectada a la CPU y en la ranura M2 superior, noté temperaturas en reposo más altas de lo esperado. Mientras que la NAND estaba a unos 27-29C, los controladores informaban de 49-50C, mucho más de lo que esperaba para estas unidades en particular.
Moví el de la ranura PCIEx16 a una ranura PCIEx4 conectada al chipset. Una diferencia interesante entre estas unidades se mostró a través de lspci -vvv:
Ranura M2 conectada a la CPU: L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
Ranura PCIE conectada al chipset: L1SubCtl1: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+
Los subestados L1 sólo parecen activarse en las ranuras conectadas al chipset. Lamentable, pero parece coincidir con la configuración de la BIOS disponible en la captura de pantalla anterior.
Volvamos a la imagen de la placa base para mostrar la situación:
Puse ambas unidades NVMe en las ranuras PCIE conectadas al chipset. Ahora ambas mostraban L1.1+/L1.2+ y las temperaturas de ambas controladoras bajaron del rango de 49-50C a 38-41C.
Por desgracia, al intentar varias pruebas A / B utilizando estas 2 unidades Crucial NVMe con diferentes configuraciones de ranura y varios ajustes del BIOS, vi un comportamiento muy inconsistente en términos de temperatura, aunque vale la pena señalar que el JMB585 y una unidad de arranque NVMe también estaban conectados durante estas pruebas. Por ejemplo, ambas unidades podrían estar inactivas a unos 40C hasta un reinicio suave en el que 1 (o ambas) podrían ahora estar inactivas en el rango de 50C. A veces parecía posible mantener 1 unidad en la M.2 conectada a la CPU y mantener temperaturas de 40C en ambas unidades siempre que la ranura x16 no estuviera ocupada. Presumiblemente me estaba encontrando con algún tipo de bug. El Samsung NVMe de arranque parecía mantener una temperatura constante de inactividad, independientemente de lo que estaba pasando con las unidades Crucial NVMe, así que sospecho que las propias unidades Crucial son al menos en parte culpables.
Curiosamente, a veces la temperatura de uno de los controladores (o de ambos) bajaba hasta el rango de los 29C en las ranuras conectadas al chipset. Dado que intentar encontrar un sustituto NVMe de bajo consumo de 4 TB para el Crucial P3 no era un objetivo realista, mi mejor esperanza en este punto era que el JMicron JMB 585 incompatible con ASPM fuera de alguna manera el culpable, ya que pronto iba a ser sustituido por el ASMedia ASM 1166 compatible con ASPM.
Actualización tardía: Desgraciadamente, no hice un seguimiento de las temperaturas durante el resto de las pruebas, y los disipadores y el flujo de aire entre las unidades se han mezclado. Pero por si sirve de algo, en la versión final, la temperatura de mi controlador Crucial P3 es de 31-34C, y la temperatura de la NAND es de 23-24C.
Puzzles de consumo de energía – Cambio del JMB585 al ASM1166.
Después de un par de semanas llegó la ASM1166. En primer lugar un par de bits con respecto a la tarjeta que usted puede encontrar útil si usted está considerando…
Empecé por actualizar el firmware – las tarjetas ASM1166 suelen tener un firmware antiguo que no funciona con las placas base Intel de la serie 600 y, por lo que tengo entendido, puede tener problemas con la gestión de la energía. Se puede encontrar un firmware más reciente en varios sitios, pero decidí conseguir una copia de SilverStone («fix compatibility issue» en la sección Download de https://www.silverstonetek.com/en/product/info/expansion-cards/ECS06/) y seguí las instrucciones en https://docs.phil-barker.com/posts/upgrading-ASM1166-firmware-for-unraid/ . Nótese que los archivos de SilverStone tenían un MD5 idéntico al firmware que encontré siguiendo el hilo en https://forums.unraid.net/topic/102010-recommended-controllers-for-unraid/page/8/#comment-1185707 .
Para cualquiera que esté planeando comprar una de estas tarjetas ASMedia, debo hacer notar que como la mayoría de los controladores SATA y HBAs que existen, la calidad realmente varía. Una de mis tarjetas tenía un disipador térmico que estaba un poco torcido: la almohadilla térmica era lo suficientemente gruesa como para evitar que cortocircuitara los componentes cercanos, pero hay que tener en cuenta que estos productos pueden dar muchos problemas. Esta es una de las situaciones en las que pagar un poco más para comprar en un sitio con una buena política de devoluciones puede ser prudente.
Hice bastantes pruebas A/B, así que aquí tienes un rápido «JMicron JMB585 vs ASMedia ASM1166» en términos de consumo total del sistema, aunque puede que sólo sea aplicable a esta plataforma (o quizás incluso a esta placa base en concreto).
SIN UNIDAD
En primer lugar, el consumo de energía sin ninguna unidad conectada a las tarjetas (la unidad de arranque SSD SATA está conectada a la placa base) para obtener una línea de base. PowerTOP utilizado en todos los dispositivos excepto el teclado (añadiendo +1 vatio). Las mediciones después de la salida de la pantalla se fue a dormir.
- 8 vatios – Sin controlador SATA – estado de energía C8
- 9 vatios – ASM1166 en una ranura x4 conectada al chipset – estado de alimentación C8
- 12 vatios – JMB585 en la ranura x16 conectada a la CPU – estado de alimentación C3
- 15 vatios – JMB585 en una ranura x4 conectada al chipset – estado de alimentación C3
- 22 vatios – ASM1166 en la ranura x16 conectada a la CPU – estado de alimentación C2
El ASM1166 lo hace bien aquí si se conecta a una ranura conectada al chipset (sólo +1 vatio), pero lo hace horriblemente si se conecta a la ranura PCI-E principal (+14 vatios), donde el estado de energía del paquete de la CPU cae en picado hasta C2. Sorprendentemente, el JMB585 se comporta de manera opuesta donde su consumo es menor en la ranura conectada a la CPU (y no causó C2) – sin embargo, pronto verás que las cosas cambian cuando las unidades están realmente conectadas…
Hice pruebas adicionales con los controladores, incluyendo el juego de «sillas musicales» con un par de unidades NVMe para ver si varios dispositivos de tirar una llave en las cosas, pero nada inesperado tuvo lugar, así que voy a omitir esos detalles.
CUANDO SE INSTALAN LOS DISCOS DUROS
Una vez completadas las mediciones de referencia, llegó el momento de instalar algunas unidades en estos controladores. La unidad de arranque SSD SATA se quedó en la placa base, se añadieron 2 unidades NVMe a la mezcla (conectadas al chipset a menos que se indique lo contrario) y se colocaron 4 de los discos duros SATA de 2,5″ en la controladora. Voy a enumerar el consumo de «spun down» después de que los discos duros entraron en reposo – «spun up» fue exactamente 2 vatios más alto en cada prueba mientras las unidades estaban inactivas.
- 10 vatios – ASM1166 en una ranura x4 conectada al chipset – estado de alimentación C8
- 11 vatios – ASM1166 en una ranura x4 conectada al chipset con 1 NVMe trasladado a la ranura x16 conectada a la CPU – estado de alimentación C6
- 11 vatios – 2x ASM1166 en ranuras x4 conectadas al chipset, con sólo 1 unidad NVMe – estado de alimentación C8
- 16 vatios – JMB585 en una ranura x4 conectada al chipset – estado de alimentación C3
- 24 vatios – JMB585 en una ranura x16 conectada a la CPU – estado de alimentación C2
Con 4 unidades conectadas a través de una ranura conectada al chipset, el ASM1166 añade +2 vatios al consumo de energía del sistema, mientras que el JMB585 añade +8 vatios. Sin discusión.
Otra ventaja es que pude utilizar las dos tarjetas ASM1166 en el sistema, mientras que si intentaba utilizar las dos tarjetas JMB575 al mismo tiempo, el sistema se negaba a arrancar, aunque podría tratarse de un problema específico de la plataforma o la placa base.
Siempre me ha parecido que la JMB585 es muy fiable, incluso cuando se combina con un multiplicador de puertos JMB575. Mi experiencia con las controladoras ASMedia SATA no ha sido muy buena: la fiabilidad de la ASM1166 está por ver, pero como mínimo es una mala candidata para un multiplicador de puertos, ya que no admite FBS (sólo CBS).
Un par de otros contratiempos menores que se presentaron con el ASM1166:
- Al quitar / volver a insertar la unidad de arranque NVMe, apareció un mensaje de BIOS alegando que no podía arrancar debido a la corrupción GPT. Las tarjetas ASM1166 tuvieron que ser retiradas temporalmente para que la BIOS «encontrara» de nuevo la unidad de arranque NVMe (tras lo cual pudieron ser reinstaladas).
- Las tarjetas ASM1166 dicen tener *muchos* puertos – esto causa tiempo de arranque adicional ya que Linux tiene que iterar a través de todos ellos.
Puzzles sobre consumo energético – Conclusión
Algunos puntos importantes si quieres reducir el consumo:
1) El soporte de la placa base y la configuración de la BIOS son fundamentales. He tenido placas base con BIOS muy inflexibles. En esta, «Native ASPM» y los estados L1 apropiados deben estar habilitados (para permitir el control por el SO en lugar de por la BIOS) para que el bajo consumo funcione.
2) Todos los dispositivos deben ser compatibles con ASPM L1. De lo contrario, estarás jugando a los dados. La parte más difícil aquí, como habrás adivinado, es encontrar controladores SATA que lo soporten; si es posible, consigue una placa base con suficientes puertos SATA conectados al chipset Intel para evitar necesitar una tarjeta aparte. Debo señalar que encontrar unidades NVMe que tengan estados de energía APST de bajo consumo que funcionen bajo ASPM no siempre es un hecho y querrás hacer algo de investigación allí también.
3) Si puedes alcanzar el estado de energía C8, evita usar los carriles PCIe conectados a la CPU (PCIe superior y ranura M2). En esta placa base específica, mi consejo sería evitar el uso de ellos por completo si es posible, a menos que necesite la ruta de ancho de banda completo de baja latencia a la CPU o sus dispositivos son tan activos que nunca duermen de todos modos. Recuerda que AMBAS tarjetas SATA de JMicron y ASMedia hicieron que el estado C del paquete de la CPU cayera a C2 si se conectaban a la ranura PCI-E x16.
4) Medir la potencia desde la pared es la única manera de asegurarse de que lo que *piensa* que está sucediendo está sucediendo realmente. Un dispositivo Kill-A-Watt se pagará por sí mismo con el tiempo si lo usas – considera que compré el mío en 2006 ($16USD + $14USD de envío en ese momento a través de eBay). En ese momento descubrí que nuestra máquina de fax, que rara vez se utilizaba y que siempre estaba encendida, consumía 7 vatios… sólo con mantener ese dispositivo apagado cuando no se utilizaba durante los siguientes 10 años, se pagó con creces el Kill-A-Watt.
Consumo de energía cuando se carga con un montón de discos duros
Ahora que varias piezas han entrado y salido del sistema a lo largo de este proceso, la configuración actual es la siguiente:
- 1x Samsung 970 EVO Plus NVMe (unidad de arranque de 500 GB)
- 2x Crucial P3 NVMe (4 TB cada una)
- 5x Seagate 2.5″ HDD (5TB cada uno – 4TB utilizados)
- 6x discos duros Seagate de 3,5″ (10 TB cada uno – 8 TB utilizados)
- 2x tarjetas ASM1166 que proporcionan puertos SATA
Potencia total medida desde la pared (pantalla encendida, teclado activado):
- 50 vatios con los 11 discos duros en reposo activo
- 38 vatios con los 6 discos duros de 3,5″ en Idle_B
- 34 vatios con los 6 discos duros de 3,5″ en Idle_C
- 21 vatios con los 6 discos duros de 3,5″ en Standby_Z (girados hacia abajo)
- 18 vatios con los 5 discos duros de 2,5″ TAMBIÉN en espera
- 16 vatios con la salida de pantalla TAMBIÉN apagada
- 15 vatios cuando PowerTOP puede desactivar el teclado USB
Seagate valora el consumo en espera de estas unidades de 3,5″ en unos 0,8 vatios cada una, y el de las unidades de 2,5″ en unos 0,18 vatios cada una. Esto coincide con lo que veo arriba. Mis cifras de inactividad activa coinciden bastante bien con las especificaciones de Seagate.
La observación obvia: en comparación con el resto de los componentes del sistema, las unidades de 3,5″ son monstruos hambrientos de energía.
Los discos duros acabarán siendo sustituidos por unidades SSD. Con un consumo en reposo tan bajo como el de los discos duros en modo de espera, no hay mucha prisa y este proceso se llevará a cabo gradualmente a medida que mis discos duros/residuos mueran y los precios de los SSD bajen.
El plan para el «juego final» es construirlo todo con SSD. Originalmente el plan era 1 unidad de arranque, 6xNVMe (probablemente Crucial P3 4TB) para una matriz RAIDZ2, y 6xSATA (probablemente Samsung 870 QVO 8TB) para la segunda matriz RAIDZ2. Dado que el uso de las ranuras M2/PCIe conectadas a la CPU no sólo es impredecible, sino que también conlleva un ligero coste de estado C/energía/temperatura, puede que modifique el plan y renuncie a un par de NVMe en la primera matriz y utilice SATA en su lugar para no tener que tocar los carriles conectados a la CPU. El tiempo lo dirá.
Detalles innecesarios sobre el almacenamiento
Esta parte sólo merece la pena leerla si te interesan los detalles meticulosos sobre el almacenamiento. Si no es así, salta a la sección final.
Unidad de arranque NVMe
Como ya se ha mencionado, se trata de un Samsung 970 EVO Plus. Actualmente se utilizan menos de 4 GB de los 500 GB de espacio (existe una partición de intercambio de 64 GB, pero siempre está a 0 de uso). Se eligió originalmente porque Samsung había desarrollado una reputación de fiabilidad (que se ha ido quedando por el camino últimamente), y Samsung también obtuvo buenas puntuaciones en las revisiones cada vez que se trataba de consumo de energía en reposo. Esta unidad está casi siempre en reposo y tanto la temperatura del controlador como la de la NAND se mantuvieron bajas durante todas las pruebas (20-24C). Es posible que con el tiempo se cambie a un SSD SATA para liberar un puerto NVMe.
DISCO DURO DE 2,5
Estas unidades se utilizan para la matriz principal ZFS RAIDZ2 de 6 unidades, la que más se utiliza. Un día a la semana está ocupado con una tarea que implica la lectura de unos cuantos TB en el transcurso de 24 horas. El uso durante el resto de la semana es esporádico, y las unidades pasan la mayor parte de la semana apagadas. Para cualquiera que se pregunte por qué se utilizan las insignificantes unidades de 2,5″ en lugar de las de 3,5″, hay *una* razón: el consumo de energía.
El consumo de energía de las unidades Seagate de 2,5″ es realmente impresionante. Cuando están giradas, consumen 0,18 vatios cada una; en reposo, 0,85 vatios, y los promedios de lectura/escritura rondan los 2 vatios. Hay muchas unidades SSD con peores cifras de consumo que este disco giratorio. 5 TB de capacidad dan mucho almacenamiento por vatio.
Las principales desventajas de estas unidades Seagate de 2,5″ son:
- No tienen un gran rendimiento. 80-120 MB/s pico de lectura/escritura. Para ser justos, muchas unidades SSD TLC/QLC caen a estos niveles de escritura cuando se agota su caché SLC.
- SMR (grabación magnética Shingled). Las lecturas están bien, pero el rendimiento de escritura cae en picado cuando se producen escrituras aleatorias: actúa como un SSD QLC sin caché SLC que tampoco tiene TRIM.
- Carga de trabajo nominal baja (55 TB/año frente a los 550 TB/año de las unidades Exos de 3,5″).
- No hay tiempo de recuperación de errores configurable (SCT ERC), y estas unidades pueden quedarse colgadas durante minutos si se produce un error mientras intentan sin descanso volver a leer el sector problemático. Ubuntu necesita ser configurado para esperar en lugar de tratar de reiniciar la unidad después de 30 segundos.
- Tasas de error más altas si se calientan (he tenido que reemplazar unos cuantos y he descubierto que no les gusta calentarse).
- Problemas típicos de los discos duros (lentitud de giro, etc.).
Para ser absolutamente justos con Seagate, se venden como unidades de copia de seguridad USB externas. Sacar estas unidades de 15 mm de alto de las carcasas y usarlas como miembros RAID en un NAS no es exactamente usarlas como se pretende. El consumo de energía ultra bajo es tremendo, pero hay compensaciones obvias.
A largo plazo, estas unidades de 2,5″ de 4/5 TB serán reemplazadas lentamente por unidades SSD de 4 TB (posiblemente todas NVMe). Las unidades SSD de 4 TB de capacidad empezaron a estar disponibles en el mercado de consumo en 2021/2022 a un precio entre 4 y 5 veces superior al de las unidades giratorias. Menos de 2 años después han bajado a alrededor de 2 veces el costo, y espero que las marcas decentes duren más de 2 veces más que los spinners de Seagate.
Si sigue habiendo disponibilidad del modelo Crucial P3 (Gen3), probablemente me quede con este modelo a pesar de estar limitado a velocidades Gen3. Consideré seriamente el Crucial P3 Plus (Gen4), pero el consumo de energía en las reseñas era superior a pesar de que en muy pocas situaciones el rendimiento también era notablemente superior. Mi mayor preocupación con el P3 Plus (Gen4) era que si tenía problemas con ASPM/APST, Tom’s Hardware lo mostraba con una prima de consumo en reposo de 0,3 W sobre el P3 (Gen3) para el modelo de 2 TB. Prefiero que la potencia en el «peor de los casos» sea lo más baja posible.
DISCO DURO DE 3,5
Se utiliza en la matriz secundaria RAIDZ2 de 6 unidades, una matriz de copia de seguridad que se pone en marcha durante unas 2 horas a la semana, donde recibe escrituras pesadas constantes.
El consumo de energía de las unidades Seagate de 3,5″ es el esperado. Estas unidades de 10 TB consumen aproximadamente 0,8 W cada una en modo de espera, entre 2 y 5 W en reposo y entre 6 y 9 W en lectura y escritura.
Dos preocupaciones aquí:
- Estos están clasificados para tirar colectivamente alrededor de 45-50 vatios al escribir. Eso es un poco de carga extra del SAI que realmente no quiero si se produce un corte de energía prolongado durante las copias de seguridad (me quedo con los SAI de 1500 vatios de consumo).
- TEstos están clasificados para tirar colectivamente alrededor de 4,8 vatios cuando está en espera. Una vez más, no me importaría reducir la carga del SAI.
A largo plazo, estas unidades probablemente serán sustituidas por unidades SATA Samsung 870 QVO de 8 TB. El 870 QVO consume 0,041w/0,046w en reposo con ALPM, 0,224w/0,229w en reposo sin ALPM y 2,0-2,7w durante una copia (según Toms/Anandtech).
En cuanto al precio, el SSD SATA de 8 TB de Samsung es actualmente un poco más caro que los Spinners de 8 TB (casi el triple), así que a menos que estas unidades empiecen a usarse con más frecuencia por alguna razón, la sustitución por los SSD casi seguro que esperará hasta que me quede sin repuestos.
Unidad caché NVMe
Sustituir mis discos duros giratorios por unidades SSD es un proceso que probablemente llevará un tiempo.
Mientras tanto, ZFS tiene un par de opciones para hacer uso de almacenamiento de alta velocidad (típicamente SSD) frente a almacenamiento más lento:
- Clase de Asignación «Especial» – permite crear un vdev específicamente para metadatos y para bloques «pequeños» si se desea.
- Una unidad caché, conocida comúnmente como L2ARC.
Si crea el vdev «especial» al crear el pool, todos sus metadatos (y opcionalmente, pequeños bloques del tamaño que elija) irán al vdev «especial» en lugar de a su disco giratorio. Listas de archivos y directorios muy rápidas mientras se mantiene el spinning rust para los propios archivos. Sí, usted puede «ls» un montón de directorios sin despertar a sus discos duros del reposo. El mayor inconveniente es que, como todos los metadatos están en este vdev, si alguna vez muere, el acceso a todos los datos desaparece. Así que realmente debería ser al menos un espejo. Tal vez incluso un espejo de 3 vías. Despídete de algunos puertos.
El L2ARC es un poco diferente. Es esencialmente un caché de nivel 2. Cuando la caché en RAM se llena, ZFS copiará algunos de los bloques al L2ARC antes de desalojar ese contenido de la RAM. La próxima vez que sea necesario acceder a esos datos, se leerán del L2ARC en lugar del disco. Uno de los beneficios en comparación con el vdev «especial» es que usted está bien con sólo 1 SSD – si hay un problema con los datos en el L2ARC (mala suma de comprobación, la unidad muere, etc), ZFS sólo leerá el contenido del disco original. Además, una vez que el L2ARC está lleno, ZFS simplemente empezará de nuevo al principio del SSD L2ARC y sobrescribirá el material que escribió antes, lo que tiene algunos pros (datos antiguos a los que ya no se accede) y contras (datos a los que se accede con frecuencia y que necesitarán ser escritos de nuevo en el L2ARC). También puedes añadir/eliminar dispositivos L2ARC del pool cuando quieras – ¿quieres añadir un SSD de 64GB, un SSD de 500GB, y un SSD de 2TB? Adelante, ZFS distribuirá los bloques entre ellos. ¿Necesitas retirar el SSD de 500 GB del grupo unos días más tarde y utilizarlo en otro lugar? Adelante. El mayor inconveniente del L2ARC es que si olvidas especificar «caché» al añadir el dispositivo, probablemente habrás estropeado tu pool. También es imperfecto: incluso con un ajuste cuidadoso es difícil conseguir que ZFS escriba TODO lo que quieras en el L2ARC antes de que sea desalojado de la memoria. Al mismo tiempo, dependiendo de sus datos, el L2ARC puede ver una gran cantidad de escrituras, y puede que tenga que vigilar cuidadosamente la salud de su SSD.
En el pasado he usado el «especial», he usado el L2ARC, y he usado ambos al mismo tiempo (incluso puedes decirle al L2ARC que no almacene en caché cosas ya contenidas en el vdev «especial»).
Esta vez simplemente he optado por un L2ARC en un NVMe de 4TB: una vez que todas las demás unidades de 2,5″ hayan sido sustituidas por SSD y las ventajas de velocidad de una caché SSD ya no sean aplicables, simplemente podré eliminar este dispositivo de caché (aunque teóricamente tener una unidad de caché L2ARC gestionando la mayor parte de las lecturas *permitiría* que las demás unidades NVMe permanecieran más tiempo en modo de bajo consumo…).
Conclusión – ¿Se arrepiente? ¿Dudas? ¿Qué podría haber sido diferente?
A diferencia del montaje de la ASRock J4005, en el que me di cuenta a mitad de camino de que me había puesto de rodillas de varias maneras, aquí no tengo la misma sensación. Esta vez terminé con baja potencia en reposo Y un sistema bastante capaz que debería ser flexible incluso si se reutiliza en el futuro.
Estoy bastante contento con mis opciones de componentes, aunque me gustaría saber cómo el MSI PRO Z790-P DDR4 (una de las otras placas base que consideré) haría en comparación. En cuanto a la funcionalidad, la MSI tiene la ventaja de contar con 6 puertos SATA, pero tiene el inconveniente obvio del famoso chip de red Intel 2.5G. El MSI también tiene un puerto PS/2 y nunca he comprobado si el consumo de energía del teclado PS/2 es menor que el del USB (recuerdo que ahorro 1 vatio si dejo que powertop apague el puerto USB del teclado). Y, por supuesto, sería interesante comparar las configuraciones ASPM y ALPM, y ver si los inconvenientes que encontré con las ranuras PCIe/M.2 conectadas a la CPU existen de la misma manera.
Mientras que este sistema se encuentra actualmente en el rango de 15-16 vatios en reposo con las unidades en standby, una vez que todos los discos duros se sustituyen por SSDs, yo esperaría que el consumo en reposo de alrededor de 10-11 vatios que no es malo para 72TB valor de las unidades, 64 GB de RAM, y un procesador bastante decente.
Supongo que te habrías evitado muchos dolores de cabeza si hubieras encontrado una placa con más puertos sata.
Por mi parte, nunca conseguí llevar mi chip más allá de C3. Intenté a propósito reducir la cantidad de componentes sobrantes (como esos controladores SATA, sobre los que había leído que podían dar problemas y fallar).
Volveré a comprobar la configuración de mi BIOS para asegurarme de que he activado todas las cosas relevantes que mencionas en tu artículo.
Muy interesante artículo, muchas gracias.
Así que no se preocupan por ECC, algunos dicen que es una necesidad para un servidor siempre en especial con ZFS.
También NVME parece quemar más combustible que los SSD.
Estoy buscando una placa base ECC frugal, pero no he encontrado nada todavía, placas W680 son difíciles de conseguir.
Mientras tanto estoy ejecutando Unraid en una placa Asrock J5040 con dos SSD de 1TB en espejo y 3 WD mecánicos que están durmiendo la mayor parte del tiempo.
El sistema quema 19 vatios en reposo, era 16-17 vatios (C6) antes de añadir un controlador Asmedia (4). Pronto cambiaré la vieja fuente de alimentación seasonic por una Corsair.
Saludos
Geert