Buscadores, Mineros y 49 - Parte 3: Operación y Mantenimiento de Sistemas de Minería de Cripto-Monedas

crypto-currency mining

En los dos últimos artículos sobre buscadores, Mineros y 49, me centré en la minería dual CPU/GPU con sgminer-arm-5.5.6-RC y analicé brevemente la evolución térmica del sistema y la puesta a punto de la GPU. En este tercer artículo, echaremos un vistazo a los problemas operacionales más graves de la minería d cripto-monedas y sus repercusiones en el mantenimiento y en el propio sistema, así como los resultados de una prueba de estabilidad de minería dual CPU/GPU que duró cuatro días y ocho horas. De algún modo, estas son las áreas más importantes que pueden marcar la diferencia entre un sistema con un funcionamiento estable y uno con una total inestabilidad; incluso hasta el punto de llegar a provocar un posible daño físico al sistema.

¿Por qué mi sistema se cuelga, se bloquea o no es estable durante el proceso de minado de cripto-monedas? Algunas personas que se enfrentan a este problema se lo preguntan muy a menudo. No hay una única respuesta que responda esta pregunta. El proceso de minado por CPU, y más aún la minería dual CPU/GPU, son actividades informáticas complejas y extremas para un sistema en chip, independientemente de la fabricación del SOC o SBC. Los posibles usos para los que están diseñados e implementados los sistemas SOC y SBC no incluye el tipo de informática extrema a la que están sometidos cada vez con más frecuencia estos sistemas hoy en día. La información que aparece a continuación es el resultado de la experiencia adquirida durante la puesta en funcionamiento de forma activa de un clúster de minería de treinta ODROID. El clúster se compone de veinticinco XU4 con refrigeración activa OEM, un XU4 con refrigeración activa hecha a medida y un sistema cuádruple MC1.

Si tenemos en cuenta los típicos usos que se hace de la informática general en la actualidad, casi ninguno se acerca a la asignación de recursos y al potencial que necesita la moderna minería de cripto-monedas y otras aplicaciones informáticas extremas en clúster. Sin embargo, son muchas las aplicaciones de uso extremo de los recursos que se ejecutan regularmente sin tener que gestionar o alcanzar la capacidad y los recursos físicos máximos del sistema. Cualquier alteración por pequeña que sea, en una amplia variedad de áreas puede, y causará, inestabilidad. Estas inestabilidades se pueden manifestar con cuelgues del sistema, bloqueos, errores y daños potenciales en el hardware. Cuando usamos este tipo de aplicaciones, debemos aplicar un enfoque sistemático que nos permita probar los muchos criterios posibles durante la implementación. Éste incluye la frecuencia de la CPU, la temperatura del sistema, la capacidad de refrigeración, el uso de energía, la temperatura ambiente, el uso de recursos del sistema y aplicaciones y el mantenimiento preventivo. La naturaleza dinámica de cualquier entorno, incluso uno que esté pensado para ser controlado, debe ser monitorizado y llevar a cabo los ajustes apropiados. Cualquier variación en un factor cambia y afectará potencialmente a los demás y al sistema en su conjunto.

Esta es una nueva frontera para los SBCs ARM, así que ten en cuenta que te encuentras al borde de la extrema utilización del sistema. Para hacer más hincapié en este punto, podemos recurrir a la analogía de coger tu coche e intentar conducir tan rápido como te sea posible, llevando el tacómetro al límite (línea roja) las 24 horas del día, los 7 días de la semana. Se puede hacer, pero ¿cuánto tiempo durará el coche y qué problemas causará este tipo de conducción? ¿Cómo de fiable y seguro será? Los coches no han sido diseñados para ese tipo de uso, tampoco lo fue el hardware que estamos usando para minar cripto-monedas. ¿Cómo nos enfrentamos a esto? Para empezar, debemos recurrir a la monitorización y realizar ajustes constantemente, aunque hay otra pregunta que debes hacerte: ¿Cuál es mi filosofía operativa? Hay dos líneas de pensamiento en las que se podrían encuadrar la mayoría de los mineros. Un grupo piensa que la inversión de capital de los equipos de minería se ha ido a pique y no tendrá valor residual al final de su ciclo de vida. Creen que la mejor estrategia es hacer que el equipo mine lo máximo posible con el único propósito de maximizar la rentabilidad, y tras un par de años, deshacerse del hardware con cero valor residual. El otro grupo piensa que hay, o debería haber, un valor residual después de un par de años y, como tal, ejecutan sus plataformas mineras de una forma mucho más conservadora. ¿Con qué grupo te identificas? La respuesta a esta pregunta determinará cómo vas a operar y qué es o no aceptable. Quizás haya gente tenga una opinión y un planteamiento diferente. Independientemente de tu estrategia, deberías tener en cuentas estas ocho cuestiones si quieres tener un sistema con un funcionamiento fiable las 24 horas, los 7 días de la semana:

  • Frecuencia de la CPU
  • Temperatura del sistema
  • Capacidad de refrigeración
  • Temperatura ambiente
  • Consumo de energía
  • Uso de recursos del sistemas y aplicaciones
  • Mantenimiento preventivo
  • Gestión activa

Frecuencia de la CPU

El uso para el que han sido diseñados los SOCs y SBCs no permite minar a la frecuencia máxima de reloj. Como norma general a la hora de configurar un sistema, se debe empezar aproximadamente al 60% de la frecuencia nominal. Esto nos proporciona un punto de partida cómodo para probar la configuración. Si tienes alguna duda sobre la idoneidad de una determinada frecuencia, opta por una estrategia conservadora hasta que estabilices la plataforma. Puedes aumentar fácilmente la frecuencia una vez que hayas probado otras áreas. Deberás ajustar constantemente la frecuencia como parte de la gestión activa de la configuración de tu minado; hablaremos de esto más adelante.

Temperatura del sistema

La realidad es que los 70 °C - 75 °C (158 °F - 167 °F) son las temperaturas máximas de los SOCs XU4/MC1/HC1/HC2 que se pueden mantener para las operaciones de minería las 24 horas los 7 días de la semana. Si superes este límite, es probable que experimentes problemas intermitentes. Puede que aguante un día o dos, pero al final aparecerán fallos en el sistema, bloqueos, errores y una mayor probabilidad de dañar el SOC permanentemente cuanta más alta sea y más tiempo se mantenga la temperatura. No todos los modelos SBCs funcionan de forma idéntica. Existen varias razones que explican esto, no solo las que aparecen en este artículo, lo que algunos denominan la "lotería del silicio". Si estás ejecutando un clúster medianamente grande, se recomienda dividir el clúster en grupos térmicos. Algo tan simple como un sistema de cuatro niveles: caliente, cálido, frío y helado te permitirá administrar el clúster de manera más efectiva y ajustar diferentes parámetros que seran los apropiados para un determinado grupo térmico. Esto se aplica particularmente a la posibilidad de controlar la temperatura del sistema mediante la manipulación de la velocidad del reloj para un determinado grupo.

Capacidad de Refrigeración

Lo primero que tenemos que tener en cuenta en relación a la refrigeración es asegurarnos de que tenemos una pasta térmica que cubre el 100% del SOC y que no hay huecos de aire. Los huecos de aire y las áreas descubiertas actúan como aislante y causarán retenciones de calor y flujos térmicos anormales. Aunque la mayoría de los fabricantes utilizan una pasta térmica aceptable en el rango de 2.5W/mK, considera la posibilidad de cambiarla por algo mejor. Existen muchas pastas térmicas con una transferencia térmica 2-3 veces mejor. Busca alguna que pueda funcionar en el rango de 5W/mK - 8W/mK. Esto nos ayudará a transferir más calor desde el SOC al disipador de calor. Ten cuidado con cualquier cosa que no esté claramente etiquetada o que use una métrica diferente.

Por lo general, la refrigeración pasiva no debe usarse para la minería. Añadir un ventilador a un sistema de refrigeración pasiva puede tener muchos problemas. La cantidad y calidad del flujo de aire depende de muchos factores y, a menos que dediques suficiente tiempo a realizar pruebas con un cambio tan significativo, opta por un sistema de enfriamiento activo OEM. Si va a probar algo diferente, debes tener en cuenta algunos factores como la proximidad del ventilador, el ángulo, la cobertura, la cantidad de flujo de aire y la presión estática. Las pruebas cuantitativas son las únicas que indicarán si realmente se ha logrado una mejoría. Tener un disipador de calor más grande no es necesariamente la mejor solución. El desarrollo de la carcasa XU4 Split Airflow que está descrita en los foros Odroid (https://forum.odroid.com/viewtopic.php?f=97&t=26373) y en los números de los meses de abril y junio 2017 de Odroid Magazine (https://magazine.odroid.com/wp-content/uploads/ODROID-Magazine-201704.pdf and https://magazine.odroid.com/wp-content/uploads/ODROID-Magazine-201706.pdf) puede servirte de ejemplo. A mucha gente le gusta el gran disipador de calor North Bridge utilizado en ese proyecto. Pero no es perfecto y tiene algunos matices que deben abordarse para mejorarlo significativamente. Vale la pena tomarse unos minutos para hablar de ellos a modo de guía para montar un sistema de refrigeración personalizado para la minería.

En el diseño del prototipo inicial, el ventilador y la carcasa no estaban encajonados, lo cual reducía la presión estática de aire. Como tal, proporcionaba un rendimiento muy similar al disipador de calor activo OEM de fábrica. Fue el hecho de introducirlo en una caja y utilizar un ventilador con un mayor volumen de aire lo que permitió aumentar considerablemente el rendimiento. Solo después de agregar una perca de cobre y un esparcidor que incidía en la tubería térmica, se observó una mejora significativa a medida que se completaba la prueba (https://forum.odroid.com/viewtopic.php?f=97&t=26373&start=104). Aun así, cuanto más duraba la prueba, menos eficaz era el disipador de calor en condiciones de mucho trabajo. A la larga termina saturándose a medida que aumenta el tiempo. Está bien para la informática general, pero cuando se realiza un minado las 24 horas, la mejora va a ser muy poco significativa.

Si se utiliza un ventilador en la parte superior, como suele ser el caso, la presión estática del aire disminuye significativamente porque el disipador de calor no es plano y las aspas son más gruesas y están más juntas. Ambos funcionan en virtud de mejorar la refrigeración reduciendo la cantidad de presión para forzar el aire por debajo del disipador de calor, y desviar más aire hacia afuera en la parte superior del disipador de calor. Es fácil suponer que como es más grande, debería funcionar mucho mejor, sin darte cuenta de que esto puede no ser del todo cierto en el caso de la minería. Si simplemente retiras el ventilador del disipador original de serie y lo montas en la parte superior, el ventilador no está en encajonado, lo que reduce aún más la presión estática permitiendo que penetre menos aire en el disipador. La mayor parte irá por los lados. La lección que tienes que aprender de todo esto es que, si vas a hacer un sistema de refrigeración a medida, presta atención a todos los detalles y realiza pruebas a largo plazo. Un disipador de calor o un ventilador más grande no siempre es significativamente mejor para la minería, depende en gran medida de cómo se implemente y si se apliquen las mejoras adicionales.

Temperatura del Ambiente

Una de las cuestiones que se suele pasar por alto en los sistemas de minería es la temperatura ambiente, especialmente para sistemas no administrados. Los cambios de temperatura en entornos no monitorizados y no controlados pueden ser muy significativos. La temperatura ambiente media de la casa puede variar mucho en un período de 24 horas. Esto importa bastante cuando sobrepasamos los límites en operaciones de minería. Los mineros experimentados lo saben y constantemente revisan sus plataformas por este motivo. Deja que el sol incida en todo o parte del sistema de minería y el efecto será aún mayor. Incluso una determinada ubicación dentro de una habitación o edificio puede ser importante. Cuando se trabaja en el rango de 70 °C - 75 °C (158 °F - 167 °F), como debería ser en la mayoría de los casos, solo es necesario un cambio de 1-2 grados para que afecte al sistema de minado y potencialmente se salga fuera de un rango seguro de trabajo.

Gestión Activa y Mantenimiento

Muchas veces los nuevos “operarios de minería” configuran sus plataformas, las inician utilizando todos los recursos del sistema posibles y piensan que ya terminaron. Esta forma de operar tiene todas las papeletas para que se llegue a una inestabilidad grave en una operación de minería, ya sea ejecutando un único sistema o un gran clúster. Todos los factores de los que estamos hablando deben ser monitoreados constantemente y deben realizarse continuamente ajustes para tener un funcionamiento adecuado y estable. Con recursos mínimos del sistema, la temperatura de la CPU/GPU y la temperatura ambiente de la habitación deben ser monitorizadas permanentemente, la frecuencia de la CPU/GPU o la carga de trabajo cambian en consecuencia.

El mantenimiento preventivo es otra área importante que a menudo suele descuidarse. Como mínimo, debe realizarse con una planificación regular. Aun así, con los ventiladores ensuciados o poco lubricados, se debe mantener una vigilancia constante para disminuir las RPM, el ruido, el polvo y la suciedad. Los disipadores y ventiladores deben mantenerse limpios. Los ventiladores deben girar a sus RPM completas. La operación continua y la electricidad estática aumenta significativamente la aparición de polvo, suciedad y polen. Solo son necesarios algunos meses para que un sistema como este baje su rendimiento y tenga un comportamiento inestable en una habitación con la ventana abierta.

Figure 1 - The ODROID-XU4 heatsink needs to be maintained when operating in a dusty environment
Figura 1 - El disipador de calor ODROID-XU4 debe tener un mantenimiento cuando trabaja en un entorno donde suele acumularse el polvo.

Los ventiladores deben mantenerse en buenas condiciones y, probablemente, también deban lubricarse cada pocos meses. El mejor momento para hacerlo es cuando se limpien los ventiladores y los disipadores. En el caso del disipador de calor activo OEM, se pueden retirar los cuatro tornillos y separar el ventilador de plástico del disipador de calor sin que afecte al disipador térmico y el pegamento térmico. Usa un cepillo de dientes seco para limpiar a fondo las aletas del disipador de calor y ambos lados de las aspas del ventilador. Se puede aplicar un poco de lubricante al eje del ventilador. Para los ventiladores ruidosos, esto se puede hacer entre los ciclos de mantenimiento, sosteniendo el SBC al revés con el ventilador girando mientras aplicas el lubricante con un spray, deteniendo temporalmente el ventilador permitiendo así que el lubricante gotee hacia la estructura del eje. Aunque no es apropiado en todos los casos, WD-40 funcionará bastante bien y no es conductor. Como es de esperar, es bueno contar con ventiladores adicionales para, en caso de ser necesario, reemplazarlos.

En informática general, el mantenimiento es algo que la gente puede descuidar un poco sin que llegue a tener impacto desastroso. En el caso de la minería dual CPU/GPU, el aumento de la demanda de algunos algoritmos de criptografía y de la minería en grupo, al mismo tiempo que los sistemas se ejecutan con todo su potencial, debes asumir el riesgo que implica la ausencia o dejadez de este mantenimiento. La fiabilidad del sistema puede verse seriamente comprometida cuando se permite la introducción de múltiples factores a través de una gestión deficiente, y que se van acumulando con un insuficiente mantenimiento. Ten en cuenta que no estamos hablando de un uso moderado del ordenador: estamos hablando de ejecutar los sistemas operativos con todo su potencial durante un periodo de tiempo indefinido. Recuerdas nuestra analogía con el coche; llevar el pedal al fondo con el tacómetro al límite. Completando el círculo, volvamos a nuestra pregunta original: ¿por qué mi sistema se cuelga, se bloquea o no es estable mientras se procesas las cripto-moneda? Aquí tienes donde buscar.

Prueba de estabilidad a largo plazo

Tras una prueba de estabilidad de cuatro días y ocho horas con un sistema dual CPU/GPU minando Monero utilizando el algoritmo cryptonight en un clúster ODROID-MC1, todo funciona como era de esperaba sin errores reportados en ningún registro log de sistema. Se usaron Sgminer-arm-5.5.6-RC1, XMRig y cpuminer-multi y su funcionamiento fue normal. El hashrate reportado era aproximadamente para cada las GPUs de 19 h/s, para las CPUs de 19 h/s según lo reportado por la aplicación. Todas las máquinas se ejecutaban a una frecuencia de 1.7Ghz, temperatura ambiente 71f (21.66c)

Versión de Linux

 Linux c5n0 4.14.5-92 #1 SMP PREEMPT Mon Dec 11 15:48:15 UTC 2017 armv7l armv7l armv7l GNU/Linux

Aplicationes Usadas

 c5n0 - GPU sgminer-5.5.6-ARM-RC1, CPU XMRig version 2.44
 c5n1 - GPU sgminer-5.5.6-ARM-RC1, CPU XMRig version 2.51
 c5n2 - GPU sgminer-5.5.6-ARM-RC1, CPU cpuminer-multi version 1.3.1
 c5n3 - GPU sgminer-5.5.6-ARM-RC1, CPU cpuminer-multi version 1.3.1

Configuraciones de las aplicaciones

 sgminer-5.5.6-ARM-RC1 GPU Configuration
 -I 6 -w 32 -d 0,1 --thread-concurrency 8192 --monero --pool-no-keepalive

XMRig version 2.44 & 2.51 CPU Configuration
 -t 7 --cpu-affinity 0xFE

cpuminer-multi CPU Configuration
 -t 7 --randomize --no-redirect --cpu-affinity 0xFE

Resumen de los resultados de sgminer-arm-5.5.6-RC1

c5n0

 [13:53:00] Shutdown signal received.
 [13:53:00]
 Summary of runtime statistics:

[13:53:00] Started at [2018-03-25 05:38:19]
[13:53:00] Pool: stratum+tcp://pool.supportxmr.com:3333
[13:53:00] Runtime: 104 hrs : 14 mins : 40 secs
[13:53:00] Average hashrate: 0.0 Kilohash/s
[13:53:00] Solved blocks: 0
[13:53:00] Best share difficulty: 16.2M
[13:53:00] Share submissions: 1012
[13:53:00] Accepted shares: 995
[13:53:00] Rejected shares: 17
[13:53:00] Accepted difficulty shares: 5006256
[13:53:00] Rejected difficulty shares: 85000
[13:53:00] Reject ratio: 1.7%
[13:53:00] Hardware errors: 352
[13:53:00] Utility (accepted shares / min): 0.16/min
[13:53:00] Work Utility (diff1 shares solved / min): 0.16/min

[13:53:00] Stale submissions discarded due to new blocks: 0
[13:53:00] Unable to get work from server occasions: 272
[13:53:00] Work items generated locally: 407984
[13:53:00] Submitting work remotely delay occasions: 0
[13:53:00] New blocks detected on network: 3096

[13:53:00] Summary of per device statistics:

[13:53:00] GPU0 | (5s):9.359 (avg):9.341h/s | A:2522369 R:25000 HW:170 WU:0.081/m
[13:53:00] GPU1 | (5s):9.361 (avg):9.329h/s | A:2483886 R:60000 HW:182 WU:0.081/m

c5n1

[13:52:55] Shutdown signal received.
13:52:55]
Summary of runtime statistics:

[13:52:55] Started at [2018-03-25 05:38:28]
[13:52:55] Pool: stratum+tcp://pool.supportxmr.com:3333
[13:52:55] Runtime: 104 hrs : 14 mins : 26 secs
[13:52:55] Average hashrate: 0.0 Kilohash/s
[13:52:55] Solved blocks: 1
[13:52:55] Best share difficulty: 1.23M
[13:52:55] Share submissions: 1027
[13:52:55] Accepted shares: 1008
[13:52:55] Rejected shares: 19
[13:52:55] Accepted difficulty shares: 5053564
[13:52:55] Rejected difficulty shares: 95000
[13:52:55] Reject ratio: 1.9%
[13:52:55] Hardware errors: 353
[13:52:55] Utility (accepted shares / min): 0.16/min
[13:52:55] Work Utility (diff1 shares solved / min): 0.16/min

[13:52:55] Stale submissions discarded due to new blocks: 0
[13:52:55] Unable to get work from server occasions: 223
[13:52:55] Work items generated locally: 407460
[13:52:55] Submitting work remotely delay occasions: 0
[13:52:55] New blocks detected on network: 3096

[13:52:55] Summary of per device statistics:

[13:52:55] GPU0 | (5s):9.331 (avg):9.351h/s | A:2405910 R:50000 HW:176 WU:0.078/m
[13:52:55] GPU1 | (5s):9.324 (avg):9.340h/s | A:2647653 R:45000 HW:177 WU:0.086/m

c5n2

[13:52:48] Shutdown signal received.
[13:52:48]
Summary of runtime statistics:

[13:52:48] Started at [2018-03-25 05:38:38]
[13:52:48] Pool: stratum+tcp://pool.supportxmr.com:3333
[13:52:48] Runtime: 104 hrs : 14 mins : 9 secs
[13:52:48] Average hashrate: 0.0 Kilohash/s
[13:52:48] Solved blocks: 1
[13:52:48] Best share difficulty: 50.1M
[13:52:48] Share submissions: 1034
[13:52:48] Accepted shares: 1009
[13:52:48] Rejected shares: 25
[13:52:48] Accepted difficulty shares: 5081646
[13:52:48] Rejected difficulty shares: 125000
[13:52:48] Reject ratio: 2.4%
[13:52:48] Hardware errors: 334
[13:52:48] Utility (accepted shares / min): 0.16/min
[13:52:48] Work Utility (diff1 shares solved / min): 0.17/min

[13:52:48] Stale submissions discarded due to new blocks: 0
[13:52:48] Unable to get work from server occasions: 257
[13:52:48] Work items generated locally: 414051
[13:52:48] Submitting work remotely delay occasions: 0
[13:52:48] New blocks detected on network: 3099

[13:52:48] Summary of per device statistics:

[13:52:48] GPU0 | (5s):9.226 (avg):9.186h/s | A:2607526 R:45000 HW:172 WU:0.084/m
[13:52:48] GPU1 | (5s):9.225 (avg):9.188h/s | A:2474119 R:80000 HW:162 WU:0.081/m

c5n3

[13:52:38] Shutdown signal received.
[13:52:38]
Summary of runtime statistics:

[13:52:38] Started at [2018-03-25 05:38:47]
[13:52:38] Pool: stratum+tcp://pool.supportxmr.com:3333
[13:52:38] Runtime: 104 hrs : 13 mins : 51 secs
[13:52:38] Average hashrate: 0.0 Kilohash/s
[13:52:38] Solved blocks: 3
[13:52:38] Best share difficulty: 4.01M
[13:52:38] Share submissions: 1059
[13:52:38] Accepted shares: 1028
[13:52:38] Rejected shares: 31
[13:52:38] Accepted difficulty shares: 5165010
[13:52:38] Rejected difficulty shares: 155000
[13:52:38] Reject ratio: 2.9%
[13:52:38] Hardware errors: 350
[13:52:38] Utility (accepted shares / min): 0.16/min
[13:52:38] Work Utility (diff1 shares solved / min): 0.17/min

[13:52:38] Stale submissions discarded due to new blocks: 1
[13:52:38] Unable to get work from server occasions: 251
[13:52:38] Work items generated locally: 405818
[13:52:38] Submitting work remotely delay occasions: 1
[13:52:38] New blocks detected on network: 3096

[13:52:38] Summary of per device statistics:

[13:52:38] GPU0 | (5s):9.319 (avg):9.247h/s | A:2365471 R:75000 HW:175 WU:0.078/m
[13:52:38] GPU1 | (5s):9.336 (avg):9.265h/s | A:2799539 R:80000 HW:175 WU:0.092/m

Be the first to comment

Leave a Reply