Una revisión completa desde la selección de componentes hasta la configuración del software para un sistema de cultivo (minería) de criptomonedas de Chia.
Chia es una nueva criptomoneda que tiene como objetivo lograr un consenso descentralizado con un menor consumo de energía por transacción que sus pares. Esto se logra mediante un algoritmo de prueba de espacio en lugar de prueba de trabajo.
Si bien la prueba de trabajo se basa en calcular continuamente un problema matemático (generalmente hashes como SHA256) en un intento de encontrar resultados que coincidan con un patrón deseado, Chia, en cambio, se basa en verificar la existencia de ciertas propiedades en archivos únicos pregenerados llamados gráficos.
Esto se hace en un proceso de dos pasos llamado de la agricultura que consiste en:
- Trazado donde se crean archivos grandes y únicos (generalmente 101.6 GB).
- Y cosecha donde se verifican los archivos creados previamente para tener la oportunidad de ganar la recompensa de ese bloque (actualmente 2 Chia).
Cuantas más parcelas (mayor almacenamiento utilizado) tenga un nodo, mayor será la probabilidad de ganar la recompensa de ese bloque. Hay 4608 posibilidades de ganar diariamente y la probabilidad de ganar la recompensa de ese bloque se basa principalmente en la cantidad de parcelas que uno posee en proporción al tamaño total de la red. Se proporciona una calculadora de ganancias esta página.
Por lo tanto, Para maximizar las recompensas, queremos tener la mayor cantidad de almacenamiento posible. y suficientes recursos informáticos para llenar dicho almacenamiento con parcelas.
Como ocurre con la mayoría de los problemas de diseño, existen infinidad de soluciones válidas para la combinación de dispositivos que se pueden utilizar para cultivar chía. Para ayudar a reducir las opciones, comencé decidiendo algunas limitaciones y prioridades:
- El costo en $ / TB debe minimizarse a pesar de la complejidad adicional (dentro de lo razonable).
- Debido al tiempo limitado que tengo disponible para dedicarlo a este proyecto, el sistema debería estar compuesto principalmente de piezas listas para usar (sin PCB personalizados, chasis personalizados, etc.).
Trazado - Procesamiento
Según la configuración del hardware, la creación de un solo gráfico puede tardar entre 4 y 20 horas. Por lo tanto, elegir el hardware de trazado adecuado puede marcar la diferencia entre llenar toda su granja en días o meses.
Es importante considerar no solo la velocidad a la que se realiza cada gráfico, sino también el número de gráficos simultáneos que se pueden crear. Por ejemplo, una configuración que crea 10 parcelas concurrentes a las 12 horas cada una producirá 20 parcelas (~ 2 TB / día) mientras que una configuración que traza 1 parcela concurrente cada 4 horas solo producirá 6 parcelas por día (0.6 TB / día).
Para minimizar el costo, decidí buscar servidores fuera de servicio. Estos servidores tienen algunas propiedades interesantes que podrían convertirlos en trazadores poderosos, que incluyen:
- Un gran número de núcleos puede permitir varias gráficas en paralelo. La fase 1 (aproximadamente la mitad del tiempo de trazado) es multiproceso (generalmente configurada para estar entre 2 y 4 subprocesos), pero las fases restantes son de un solo subproceso.
- La RAM disponible suele exceder la necesaria para trazar (~ 4 GB / trama simultánea).
- Diseñado para funcionar con cargas elevadas durante períodos de tiempo prolongados.
Después de repasar docenas de opciones y posibles configuraciones, me conformé con una HP ProLiant DL380p Gen8 con 2x Intel E5–2670 y 192 GB de RAM DDR3. Con Hyper-Threading habilitado, este servidor podría, hipotéticamente, admitir el trazado simultáneo de hasta 16 parcelas en la fase 1 por menos de $ 400.
Trazado - Almacenamiento temporal
Debido a la alta carga de escritura durante la creación del gráfico (alrededor de 1.6 TB escritos para un gráfico k = 32), la elección del medio de almacenamiento temporal puede tener un impacto significativo en el tiempo y el costo del trazado. Algunos puntos a considerar:
- Cuanto más rápido sea el almacenamiento, más rápido se pueden crear los gráficos. Este hilo analiza los tiempos de trazado de 4 horas utilizando RAMDISK (montar una carpeta en la RAM).
- Dado el gran volumen de escritura, es importante considerar la resistencia del medio. Un SSD NVMe de 1TB de grado de consumidor generalmente tiene una resistencia de alrededor de 600 TBW (terabytes escritos) antes de que se espere que falle, lo que significaría que podría hacer alrededor de 375 parcelas.
Terminé optando por comprar un HP StorageWorks D12 de 2600 bahías con 15 unidades SAS de 450GB. Con esta configuración, puedo trazar simultáneamente en cada unidad sin arriesgarme a la contención de E / S en el nivel de la unidad. Las unidades JBOD + eran significativamente más baratas que una configuración equivalente con unidades NVMe (sin siquiera tener en cuenta el costo de reemplazo una vez alcanzado el TBW).
Granja - Almacenamiento a largo plazo
A diferencia del almacenamiento de trazado, el almacenamiento de recolección no requiere un alto rendimiento ni IOP. Por esta razón, minimizar los costos fue la máxima prioridad.
Hay varias configuraciones posibles, algunas de las cuales se comentan esta página. Sin embargo, después de buscar en eBay opciones de segunda mano, algunas cosas quedaron claras:
- Los discos duros más grandes de 3.5 ″ tienden a tener el costo más bajo. Esto tiene sentido, ya que la mayoría de los dispositivos de hoy en día se han movido a los tamaños más pequeños de 2.5 ″ o 1.8 ″.
- Los discos duros SAS (no los SSD) parecían tener el costo más bajo por TB con algunos lotes tan bajos como $ 10 / TB (a partir de mayo de 2021). Estas unidades SAS no son compatibles con las placas SATA (de consumo) y, por lo general, se venden en eBay después de ser retiradas del centro de datos de una empresa.
Una vez que me acerqué al uso de discos duros SAS de 3.5 ″, necesitaba encontrar una manera de conectarlos a mi cosechadora / trazador. Cumpliendo con la restricción de no construir el gabinete / backplane, comencé a buscar gabinetes usados que pudieran albergar estas unidades mientras mantenía el costo más bajo por bahía.
Encontré varias opciones en eBay y terminé comprando algunos modelos diferentes, incluido un HP 24PAR de 3 bahías y dos IBM DS12 de 3512 bahías.
Lista llena
La lista final de componentes se muestra a continuación. Incluye los componentes principales discutidos anteriormente, pero también partes auxiliares que se requieren para armar el sistema.
Una mención digna es la tarjeta HBA. Es la tarjeta PCIe la que expone los conectores externos SAS a los que se conectarán los cables de los JBOD. Al comprarlo, asegúrese de obtener una tarjeta de modo de objetivo de iniciador (IT) para que las unidades aparezcan directamente en el sistema operativo en lugar de una tarjeta de modo IR. Es bueno tenerlo, es posible que desee obtener una tarjeta con un sistema operativo más nuevo (versión 20).
La configuración es principalmente intuitiva. Los cables se conectan a los orificios en los que encajan. Sin embargo, el cableado SAS que conecta los JBOD y la máquina de trazado / recolección se puede conectar en cadena.
En mi caso, tengo dos cables que salen del servidor (uno en cada puerto del HBA). Uno de los cables se conecta a la entrada de la matriz de almacenamiento temporal (HP D2600) y la salida de esa matriz se conecta a la matriz HP 3PAR. El otro cable se conecta a la primera matriz de IBM y su salida se conecta a la segunda matriz de IBM. Los JBOD generalmente tienen un puerto de entrada (primario) y un puerto de salida (generalmente etiquetado con una flecha hacia afuera).
He instalado Ubuntu LTS 20.04 en el servidor, ya que es una distribución de Linux ampliamente utilizada, lo que significa que sería más fácil encontrar foros de resolución de problemas si surgiera algún problema. Los pasos siguientes describen la configuración restante.
Paso 1: asegúrese de que todas las unidades estén disponibles
El primer paso es verificar qué unidades están siendo detectadas por el sistema operativo. Esto se puede lograr ejecutando el lsscsi
mando. El resultado del cual se muestra a continuación.
Tenga en cuenta que el comando anterior no proporciona información sobre el sistema de archivos o el tamaño de las unidades. Para eso, ejecute el lsblk
mando.
Importante: Tenga en cuenta que no todas las unidades aparecen bajo ambos comandos. Las unidades que aparecen debajo lsscsi
pero no lsblk
puede tener alguna incompatibilidad que hace que el sistema operativo no los haga disponibles para el montaje, etc. Un ejemplo de esto es /dev/sdaw
.
En mi caso, este problema se debió a que el tamaño del sector es 520, que no es compatible con mi kernel de Linux instalado (se puede encontrar una discusión sobre este tema esta página y esta página). Puede determinar si este es su caso revisando los dmesg
registro del comando para un mensaje de error como [sdaw] Unsupported sector size 520
.
Para resolver esto, reformateé las unidades usando un tamaño de bloque de 512 con el comando sg_format -v --format --size=512 /dev/sdX
. Este comando puede tardar una cantidad significativa de tiempo en ejecutarse (varias horas) y el resultado se muestra a continuación.
Una vez completada, la unidad debería aparecer en la lsblk
salida.
Paso 2: crear un sistema de archivos en las unidades
Para formatear las unidades con el ext4 sistema de archivos, ejecuté el siguiente comando: sudo mkfs -t ext4 — verbose /dev/sda
.
Paso 3: Monte las unidades
Ahora que podemos acceder a las unidades y que se han formateado con el sistema de archivos deseado, podemos montar estos impulsos.
- Cree las carpetas donde montaremos las unidades. Por ejemplo:
/mnt/farm/00
a/mnt/farm/23
para las unidades que almacenarán los trazados finales, y/mnt/plot-tmp/00
a/mnt/plot-tmp/11
para las ubicaciones temporales de trazado. - Ejecutar
sudo blkid
para obtener los ID únicos de sus unidades (o particiones). Producirá varias líneas como/dev/sdae: UUID=”29494f44–2f75–4c01-a766–18755eb583d7" TYPE=”ext4"
. - Edite el archivo fstab con
sudo vim /etc/fstab
y asociar cada una de las unidades con su correspondiente/mnt/...
carpeta. Ser cuidadoso no editar las primeras líneas del archivo, ya que son necesarias para montar la unidad raíz del sistema operativo. Mi archivo final se muestra a continuación. - Ejecutar
sudo mount -a
para montar todas las unidades especificadas en el archivo fstab. Solo montará unidades que no estén ya montadas, por lo que es seguro ejecutarlo varias veces. - Asegúrese de que los usuarios tengan acceso a las unidades y sus archivos ejecutando sudo
chmod -R 777 /mnt/farm/00
.
Paso 4: Ejecute el software Chia Blockchain
- Siga las instrucciones oficiales especificadas esta página para instalar la cadena de bloques de Chia (no instalé la GUI).
- Ejecutar
chia start farmer
para iniciar los demonios para la billetera, cosechadora, etc.
Paso 5: Configurar Plotman (opcional)
Ploteo es un administrador de trazado que se hará cargo de la creación de nuevos trabajos de trazado. Es una herramienta de conveniencia (no requerida).
- Instale Plotman siguiendo las instrucciones esta página.
- Editar
plotman.yaml
según las especificaciones de su trazador. Mi archivo final se muestra a continuación.
interfaz de usuario:
use_stty_size: Verdadero
directorios:
log: / inicio / plotter / plotman-logs
mp:
- / mnt / plot-tmp / f00
- / mnt / plot-tmp / f01
- / mnt / plot-tmp / f02
- / mnt / plot-tmp / f03
- / mnt / plot-tmp / f04
- / mnt / plot-tmp / f05
- / mnt / plot-tmp / f06
- / mnt / plot-tmp / f07
- / mnt / plot-tmp / f08
- / mnt / plot-tmp / f09
- / mnt / plot-tmp / f10
- / mnt / plot-tmp / f11
horario de verano:
# - / mnt / farm / 00 COMPLETO
# - / mnt / farm / 01 COMPLETO
# - / mnt / farm / 02 COMPLETO
# - / mnt / farm / 03 COMPLETO
# - / mnt / farm / 04 COMPLETO
# - / mnt / farm / 05 COMPLETO
# - / mnt / farm / 06 COMPLETO
# - / mnt / farm / 07 COMPLETO
# - / mnt / farm / 08 COMPLETO
# - / mnt / farm / 09 COMPLETO
# - / mnt / farm / 10 COMPLETO
# - / mnt / farm / 11 COMPLETO
- / mnt / farm / 12
- / mnt / farm / 13
- / mnt / farm / 14
- / mnt / farm / 15
- / mnt / farm / 16
- / mnt / farm / 17
- / mnt / farm / 18
- / mnt / farm / 19
- / mnt / farm / 20
- / mnt / farm / 21
- / mnt / farm / 22
- / mnt / farm / 23
Planificación:
tmpdir_stagger_phase_major: 2
tmpdir_stagger_phase_minor: 1
tmpdir_stagger_phase_limit: 1
tmpdir_max_jobs: 1
trabajos_máx_global: 20
global_stagger_m: 40
sondeo_tiempo_s: 30
Graficado:
k: 32
e: Falso # Use la opción de trazado -e
n_threads: 2 # hilos por trabajo
n_buckets: 128 # Número de depósitos en los que dividir los datos
job_buffer: 8096 # Por memoria de trabajo
Algunos puntos dignos de mención:
- Plotman no detiene la programación de unidades agrícolas (en el momento de escribir este artículo) cuando la unidad está llena. Por lo tanto, debe eliminarlos (o comentarlos como se indicó anteriormente).
- Plotman agregará automáticamente unidades agrícolas a la cosechadora de chía.
- yo suelo
tmpdir_max_jobs
igual a 1 ya que estoy graficando en discos duros que no tienen un buen rendimiento de búsqueda en comparación con los SSD.
Paso 6: Ejecute el trazador
En este punto, todo lo que se necesita para comenzar a trazar es ejecutar plotman interactive
.
Nota: El trabajo de larga duración que se traza en /dev/farm/usb2
es una ejecución de depuración que no está destinada a ejecutarse hasta su finalización.
¡Espero que esta lata haya sido útil para darte una idea de lo que se requiere para cultivar Chia!
A partir de ahora, mi granja está llena a 1/3 de su capacidad y planeo publicar actualizaciones a medida que se llene y cuando empiece a volver a trazar para las piscinas.
Un agradecimiento especial a Katie Gandomi para obtener ayuda con el desarrollo.
¡Feliz agricultura!
- de la máquina
- Adicionales
- Todos
- en torno a
- Bay
- blockchain
- Construir la
- comprar
- Comprar
- causado
- posibilidades
- comprobación
- componente
- informática
- Consenso
- consumidor
- consumo
- criptomoneda
- datos
- día
- Descentralizado
- Diseño
- Desarrollo
- Dispositivos
- HIZO
- Ganancias
- eBay
- energía
- EU
- EV
- granja
- de la agricultura
- Nombre
- cómodo
- formato
- ser completados
- Diezmos y Ofrendas
- candidato
- Materiales
- Alta
- Hogar
- hr
- HTTPS
- ia
- IBM
- idea
- Impacto
- Incluye
- información
- Intel
- IP
- IT
- Trabajos
- Empleo
- large
- Nivel
- Limitada
- Etiqueta LinkedIn
- Linux
- Lista
- carga
- Largo
- LP
- Match
- las matemáticas
- mediano
- Minería
- meses
- del sistema,
- oficial
- Opciones
- Otro
- Patrón de Costura
- actuación
- Albercas
- proyecto
- prueba
- RAM
- Recursos
- Resultados
- una estrategia SEO para aparecer en las búsquedas de Google.
- Recompensas
- aparejo
- Ejecutar
- correr
- ambiente seguro
- Buscar
- sentido
- Tamaño
- So
- Software
- vendido
- Soluciones
- RESOLVER
- Espacio
- velocidad
- dividido
- comienzo
- fundó
- STORAGE
- tienda
- SOPORTE
- Soportado
- te
- Target
- temporal
- equipo
- transaccional
- Actualizaciones
- usuarios
- Versus
- volumen
- Billetera
- Que es
- Wikipedia
- ganar
- dentro de
- Actividades:
- valor
- la escritura