¿Cuáles son los componentes principales en los que uno debe enfocarse cuando se trata de maximizar el rendimiento de un pool de minería? Suponiendo que el código es bastante óptimo (no hay ineficiencias), ¿a qué debería dedicar su atención o recursos el propietario de un grupo? Estoy pensando en factores como la velocidad del hardware, la velocidad de Internet, la latencia o algunas características adicionales, como sondeos largos, y qué prioridad deberían tener.
El código no es óptimo, especialmente en el lado de la minería fusionada. Actualmente no existe un método óptimo para manejar ambas cadenas de bloques sin un protocolo de comunicación minero-pool más avanzado.
Excluyendo los problemas de minería fusionada, la latencia es un factor importante. Cuando ocurre un cambio de bloque, el poder de hash efectivo de cada minero es cero hasta que comienzan a trabajar en el encabezado del bloque actualizado. Por lo tanto, el poder de hash efectivo de un grupo va desde el poder de hash total hasta 0 y luego aumenta a medida que se actualizan los mineros. Por lo tanto, el poder de hashing efectivo a largo plazo del grupo depende de la rapidez con la que pueda lidiar con un cambio de bloque.
Esto implica tres componentes.
Detección de cambio de bloque. Un buen grupo debe tener una gran cantidad de conexiones a la red Bitcoin para minimizar el retraso en el aprendizaje de la cadena de bloques. Un buen operador de grupo se asegurará de mantener las conexiones "cercanas" (dentro de 1 o 2 saltos) de cada grupo importante.
Recálculo de encabezados de bloque. Durante un bloque, cada minero completará su trabajo en diferentes momentos y, por lo tanto, las solicitudes de trabajo se escalonarán. Sin embargo, cuando un bloque cambia, el grupo debe actualizar el encabezado del bloque de cada minero a la vez. Un grupo que carece de suficiente poder de procesamiento para calcular rápidamente los encabezados de los bloques hará que los mineros trabajen en el trabajo obsoleto por más tiempo y, por lo tanto, tendrán un porcentaje obsoleto promedio más alto. Actualizar a los mineros en el orden de su poder de hash podría reducir ligeramente las obsolescencias generales del grupo. No sé si algún grupo actualmente hace eso.
Actualizar mineros. La latencia del enlace del minero está más allá del control del grupo, pero un grupo puede mejorar la eficiencia al tener varios servidores de grupo que reducen la cantidad de saltos para todos los mineros. Los servidores del grupo deben ubicarse lo más cerca posible de los mineros. Un grupo compuesto principalmente por mineros en Asia no debería usar el centro de datos de la costa este de EE. UU., por ejemplo.
NTimeRolling reduce la cantidad de comunicaciones (getworks) requeridas para una cantidad determinada de hashes. esto hace que el grupo sea más eficiente, ya que una cantidad determinada de hardware puede admitir más clientes; sin embargo, no reduce la carga en un cambio de bloque.
La implementación de Long Polling garantiza que los mineros reciban una notificación cuando se produzca un cambio de bloque (menos la latencia indicada anteriormente) en lugar de continuar trabajando en datos obsoletos hasta que se complete. Completar un rango de nonce toma aproximadamente 10 segundos para un minero de 400MH. Sin un sondeo largo, en promedio, el minero perderá 5 segundos por cambio de bloque trabajando en datos que nunca pueden producir un bloque válido. Los cambios de bloque dados ocurren cada 600 segundos, lo que representa aproximadamente el 1 % del tiempo de CPU desperdiciado al codificar encabezados de bloque no válidos. Los mineros más lentos tienen un período más largo entre getworks y, por lo tanto, desperdician un mayor porcentaje de tiempo de GPU. Ningún pool puede ser eficiente sin una buena implementación de Long Polling.
Tanto NTimeRolling como Long Polling (LP) requieren un minero que comprenda correctamente estos comandos.
El factor más crítico es este: cuando se descubre un nuevo bloque en la red de Bitcoin, ¿cuánto tiempo le toma al grupo obtener una nueva unidad de trabajo basada en el nuevo bloque para la gran mayoría de sus clientes? Esto viene determinado por tres factores:
1) Sondeo largo: si le importa el rendimiento, debe admitir LP. Es así de simple.
2) Latencia de la red: si el controlador de minería está en un enlace lento o los mineros están ubicados a una gran distancia del controlador, esto se convierte en un factor importante.
3) CPU en el controlador: la CPU puede ser del 3% normalmente y puede pensar que lo está haciendo bien. Pero si maximiza un núcleo cuando se descubre un nuevo bloque, esto puede ser un factor importante en los mineros inactivos o las acciones obsoletas.
elpiachu