Minería de Criptomonedas: Cómo Ganar Monedas Verium con tu ODROID

Los Odroid XU4, desarrollados por Hardkernel Co. Ltd, son muy populares. Los sistemas SBC en general están diseñados para ser muy eficientes desde el punto de vista energético, por eso son bastante adecuados para usarlos en la minería Verium. La desventaja es que necesitas muchos para acumular una cantidad considerable de hashes. El coste inicial de los SBC puede ser muy alto, pero su consumo de energía es bastante bajo. Recuerda tener en cuenta todos los extras necesarios para hacer que la SBC funcione (tarjetas SD, cables de alimentación, cables de red, interruptores, refrigeración, mecanismos de montaje, etc...).

En el caso de los SBCs, el software de minería generalmente suele compilarse para 1 vía con 128 MB por subproceso. Muchos dispositivos han sido probados en términos de hashrate y se puede afirmar que la plataforma Odroid con sus CPU Octa core (Exynos5422 big.LITTLE) y 2 GB de LPDDR3 RAM supera a cualquier otro dispositivo. En este momento, Hardkernel incluso ha lanzado una versión especial del XU4 original llamado Odroid HC1 diseñado para el clustering. Cabe señalar que a pesar de su relativamente bajo hashrate, la ración hashrate por energía sigue siendo muy buena. Además, existe un software de la comunidad que ayuda con el mantenimiento de grandes clusters. Para obtener más información, visita el sitio web oficial de ODROID http://www.hardkernel.com.

Imagen Optimizada de Sistema Operativo para Verium Mining

La imagen ODROID Verium Mining (por joe_rondx) incluye un sistema operativo optimizado con un minero preinstalado y otras funciones útiles. Está desarrollada para los dispositivos de la línea XU4, es decir, Odroid XU4, XU4Q, HC1, HC2, MC1.

Figure 1 - Logging in to the optimized Verium mining image
Figura 1: Iniciando sesión en la imagen de minería Verium optimizada

Características de rendimiento::

  • Hugepages habilitadas (gracias a Birty & Fireworm)
  • Reloj de RAM al Máximo: 933 MHz
  • Downclocking CPU de los núcleos grandes: 1.9 GHz (2 GHz no valen la pena)
  • Configuración óptima de dos mineros para núcleos big.LITTLE.

Scripts de ayuda:

  • Registro de temperatura en verium/cpu_temp.log
  • Script de estado general vrmcheck.sh
  • Expansión del sistema de archivos por resize.sh

Configurar la imagen

  1. Descargar la imagen desde: https://drive.google.com/open?id=1RbXnGUh5fwmfhMQNzefCK75PajyrXjQi
  2. Graba sin extraer el archivo (la cuestión es la siguiente: la imagen consta de dos particiones, si extraes el archivo gz debes asegurarte de grabar ambas particiones y no solo la partición más voluminosa).
  3. En el primer arranque, espera entre 5 a 10 minutos hasta que puedas localizar el dispositivo en la red.
  4. Inicia sesión con las credenciales estándar de root/odroid.

Figure 2 - Flashing the Verium image using Etcher
Figura 2 - Grabando la imagen de Verium usando Etcher

Configuración de la imagen

Lo primero que tienes que hacer es Actualizar la imagen. El script para hacerlo está en: https://raw.githubusercontent.com/DJoeDt/verium/master/odroid_image_update.sh. Desde la línea de comando usa:

$ wget \
https://raw.githubusercontent.com/DJoeDt/verium/master/odroid_image_update.sh
$ chmod +x odroid_image_update.sh
Ahora, antes de ejecutar la actualización, asegúrate de matar al minero, yo utilicé
$ top
$ kill
Donde, nnn correspondería al pid de la instancia del minero en tu sistema. Ahora ejecuta:
./odroid_image_update.sh
Luego edita,
$ nano /etc/rc.local
Lo que hace es:

  • Obtener y compilar el último minero fireworm
  • Agregar el nuevo comando de un minero a /etc/rc.local
  • Actualizar vrmcheck.sh (no es muy agradable, pero está bien ...)

Por qué hace esto: Resultaba que la configuración con dos mineros no es muy buena por varias razones. Debo admitir que fui demasiado avaricioso y solo miraba el resultado H/m. Los motivos son los siguientes:

  • La baja tasa de hash del minero de una vía reduce la posibilidad de enviar un share cuando se realiza la minería en grupo.
  • La conexión adicional del minero provoca mucha carga de trabajo en el servidor del grupo.
  • Es también así para la minería en solitario.

Ah, y un minero es más fácil de mantener, monitorear, etc. 🙂 Y, por supuesto, la actualización de Fireworm Miner ofrece algunas características muy interesantes. He llegado a obtener unos 530 H/m.

Configuración personal

Comencemos con la configuración del minero. El inicio automático del minero se encuentra actualmente en el archivo rc.local.

$ nano /etc/rc.local
Al final, encontrarás dos comandos de minería que debes ajustar de acuerdo con tu configuración de grupo/solo. En realidad, no, tras la actualización, simplemente debes eliminar estos comandos y usar el comando One miner recién añadido.

Además de la configuración del minero, es posible que quieras cambiar el nombre de host y la contraseña:

$ nano /etc/hostname
$ nano /etc/hosts
$ passwd
También puedes expandir el sistema de archivos utilizando el script
$ ./resize.sh
Reinicia antes de continuar
$ reboot
y vuelve a ejecutar el script de cambio de tamaño
$ ./resize.sh

Red

Normalmente, el puerto Ethernet solo debe conectarse a través de DHCP. Si tienes un adaptador Wifi deberías usar

$ nmtui

Consejos XU4 y XU4Q

Como la imagen ha sido creada en un HC1, es posible que quieras revisar la configuración de la GPU: https://wiki.vericoin.info/index.php?title=Odroid#Downclocking_the_GPU.

Uso y Monitorización

Hay un simple script de estado en el directorio de inicio, invoca

$ ./vrmcheck.sh
que estampa la configuración en rc.local, las últimas 10 líneas de cada registro minero, la frecuencia de la CPU y la temperatura actual. Monitorizar ambos mineros supone un gran reto, pero los scripts de Monitor de mineros de DerrickEs (https://github.com/derricke/MinerMonitor) o el monitor CLI de casanova (https://github.com/bezeredi/verium-cli-monitor) son compatibles con la configuración de los puertos (4048 y 4049 en este caso). También recomiendo minar en dos grupos para descentralizar el hasrate, mantener algunos hash activos si un grupo no está disponible y también para monitorizar.

Sugerencia de donación

Con la nueva actualización es más difícil distribuir pequeñas porciones de H/m. Básicamente, no voy a dedicar tiempo para volver a escribir esto: si ejecutas muchos Odroids con esta imagen, contempla la posibilidad de tener uno para mí, ¡muchas gracias!

  1. La imagen comienza a minar de inmediato, para joe_rondx (la próxima versión incluirá fireworm). Esto no pretende ser una estafa. Contempla la posibilidad de tener una placa minando para nosotros, quizás una hora como donación inicial.
  2. Si está ejecutando menos de 10 unidades (XU4, XU4Q, HC1, MC1/4), una donación inicial es todo lo que pedimos.
  3. Si estás ejecutando 10-19 unidades, puede considerar tener un pequeño minero en la dirección joe_rondx.
  4. Si está ejecutando 20-29 unidades, puede considerar tener un pequeño minero más en la dirección fireworms.
  5. Si estás ejecutando 30-39 unidades, puede considerar cambiar el pequeño minero joes a uno grande.
  6. Si estás ejecutando 40-49 unidades, puede considerar cambiar el pequeño minero fireworms a uno grande.
  7. Si estás ejecutando más de 50 unidades, también podrías contemplar la posibilidad de hacer una donación al proyecto a través de su página.

Justificación: Los hasrates individuales pueden variar, pero supongamos que obtiene 450 H/m por unidad sin esta imagen. La imagen debería proporcionarle 537 H/m, lo que representa un aumento de casi el 20%. 10 unidades deberían producir 5370 H/m, mientras que un pequeño minero produce alrededor de 137 H/m, que es aproximadamente el 2.5% del hashrate total.

Otras imágenes de sistema operativo

Comenzamos con imágenes especiales de Odroid God birty: Odroid Miner Images (ttps://drive.google.com/drive/folders/0B26cQdlGFXo2S3ViQ3IxaVhfUkk). En particular, la imagen más reciente con hugepages habilitadas combinadas con mineros fireworms proporciona un impulso significativo de hashrate. Fue utilizado para optimizar la imagen. Las imágenes oficiales de Odroids (https://wiki.odroid.com/odroid-xu4/os_images/linux/start) están, por supuesto, muy bien hechas. El último Ubuntu Mate 16.04.3 (20171212) que se lanzó después de la imagen de birtys incluso tiene habilitadas las hugepages. Pero desafortunadamente usa demasiada RAM. Aún más desafortunada es la imagen Ubuntu 16.04.3 (20171213) (MINIMAL, BARE OS) que no tiene habilitadas las hugepages. He llegado a probar hasta 6 imágenes diferentes que están disponibles para la plataforma XU4. Para empezar, recomiendo la imagen DietPi (https://dietpi.com/#download) porque su herramienta diet-config incluida ya soporta muchas de las configuraciones que tienes que ajustar.

Adaptar el Sistema Operativo para la Minería

Todo ello en un script (ARM Miner + XU4 Setup): descarga el script shell desde: https://raw.githubusercontent.com/DJoeDt/verium/master/1wayARM_XU4_VeriumMiner_install.sh.

$ wget \
https://github.com/DJoeDt/verium/raw/master/1wayARM_XU4_VeriumMiner_install.sh
$ chmod +x 1wayARM_XU4_VeriumMiner_install.sh
$ ./1wayARM_XU4_VeriumMiner_install.sh

Downclocking (sí, ¡baja!) la CPU

Para evitar el estrangulamiento debido al calor, puedes aumentar tu hashrate si la CPU no funciona a 2 GHz (máx.). Incluso si puedes evitar la aceleración a 2 GHz, de todos modos no vale la pena: puede obtener 10-15 H/m más, pero te cuesta aproximadamente 2 vatios (de 12) llegar a este niviel, por lo que no compensa. Echa un vistazo a las pruebas de rendimiento: https://www.planet3dnow.de/vbulletin/threads/428622-Odroid-HC1. Instala la utilidad (o usa la configuración DietPi)

$ sudo apt-get install cpufrequtils
usarlo directamente
$ sudo cpufreq-set -c 7 -u 1.9GHz -r
y haz que los cambios se vuelvan permanentes creando un archivo de configuración
$ sudo nano /etc/default/cpufrequtils
con las siguientes configuraciones
ENABLE="true"
GOVERNOR="performance"
MAX_SPEED=1900000
MIN_SPEED=1900000
Ahora la CPU siempre debería funcionar a una velocidad constante. Esto también ahorra cierta cantidad de energía.

Overclocking de la RAM

En la partición FAT de arranque edita el boot.ini

$ sudo nano boot.ini
Busca
ddr_freq
y cambia el valor a 933
# DRAM Frequency
# Sets the LPDDR3 memory frequency
# Supported values: 933 825 728 633 (MHZ)
setenv ddr_freq 933
Asegúrate antes que bootz
# set DDR frequency
6dmc ${ddr_freq}

Downclocking la GPU

Instala esta utilidad

$ sudo apt-get install sysfsutils

Luego edita

$ sudo nano /etc/sysfs.conf
y agrega la siguiente línea
# Put GPU into powersave mode (= Downclocking it)
devices/platform/11800000.mali\:/devfreq/11800000.mali\:/governor = powersave
luego inicia el servicio
$ sudo service sysfsutils start
Efecto: se reduce el consumo de energía en 0.7 - 0.8W, la temperatura del SOC será 1-3 °C más baja. Tienes información sobre cómo reducir el consumo de energía en un escenario sin monitor en https://obihoernchen.net/1340/lower-gpu-clock-of-odroid-xu4-for-headless-servers/ Otra forma podría ser
$ sudo nano /etc/rc.local
y agregue esta línea antes de salir
$ echo powersave > /sys/devices/platform/11800000.mali\:/devfreq/11800000.mali\:/governor

Configurar un archivo de intercambio Swap

Verium consume mucha memoria, de modo que aumentaremos el archivo de intercambio swap (o utiliza la configuración de DietPi).

$ sudo fallocate -l 1G /var/swapfile
$ sudo chmod 600 /var/swapfile
$ sudo mkswap /var/swapfile
$ sudo swapon /var/swapfile
compruébalo con
$ free -h
y configúralo para hacerlo permanente.
$ sudo echo "/var/swapfile none swap sw 0 0" >> /etc/fstab

Procesos

Se puede lograr una mayor optimización comprobando el árbol de procesos

$ pstree -p
y deshabilitar/desinstalar cosas que no son necesarias. ¡MÁTALOS TODOS! Yo todavía no lo he localizado, pero si te encuentras con ads7846, elimínalo.
$ modprobe -r ads7846
$ tee /etc/modprobe.d/blacklist-ads7846.conf <<< "ads7846"

Hardware XU4

La clave está en cambiar la cinta térmica del disipador térmico por una buena pasta térmica, lo cual hace que descienda la temperatura en 10 grados (C) con las mismas condiciones de prueba. También desciende la temperatura de la parte inferior. Para ahorrar electricidad, puedes bajar el voltaje de la fuente de alimentación. Comprueba la temperatura de la ranura de la tarjeta SD.

Usar RAM al máximo y optimizar big.LITTLE

Conocido también como "Obtener el último Hash de tu Odroid". El primer paso es usar una imagen del sistema operativo que use una cantidad mínima de RAM para el sistema. Para mostrar cómo usar los núcleos big.LITTLE y la mayor parte de la memoria, primero echaremos un vistazo a la configuración del minero.

El Objetivo

La minería Verium tiene que ver mucho con la RAM, de modo que querrás maximizar el uso de la memoria. ¿Cómo funciona? Verium Miner (https://github.com/effectsToCause/veriumMiner) se puede configurar para usar una cantidad diferente de RAM por subproceso. Entonces, la idea es usar 2 compilaciones mineras diferentes y hacer uso de los 2GB de RAM LPDDR3 a 933Mhz que tiene el Odroid. Además: hacer esto inteligentemente beneficiará también a los núcleos big.LITTLE de las CPU Exynos5422 Cortex ™ ARM Cortex-A15 (2.0Ghz)/Cortex-A7 (1.4 Ghz) Octa core de Samsung

Detalles técnicos

La configuración del minero activa 1 vía o 3 vías donde

1 way => 128 MB per mining thread
3 way => 384 MB per mining thread
La vía del minero está configurado en
$ nano veriumMiner/algo/scrypt.c
Ahora puedes calcularlo tú mismo o simplemente confiar en mí para tener estas dos configuraciones mineras y luego ejecutar
5 threads @ 1 way = 640 MB
3 threads @ 3 way = 1152 MB
1792 MB total RAM
El sistema también necesita algo de memoria y con esta configuración solo quedan unos 60 MB libres, pero solo si usas la imagen vinculada anteriormente (he probado 6 diferentes, solo ésta funciona con -t 5 y -t 3). Una compilación de 2 vías también puede ser interesante, pero en mi caso no llego a funcionar.

Fácil instalación

He preparado dos scripts en mi repositorio git (https://github.com/DJoeDt/verium - sin ningún tipo de garantía):

1wayARM_XU4_VeriumM6iner_install.sh
3wayARM_XU4_VeriumMiner_install.sh
que instala los mineros en
~/verium/1wayminer/
~/verium/3wayminer/

Cómo ejecutarlos

Teniendo ambas compilaciones a mano, necesitamos administrarlas de forma adecuada. Además de los hilos de ejecución hay dos cosas que tenemos que configurar

# the big.little core
# the API Port

big cores -t 3

Los núcleos grandes deben ejecutar el minero de 3 vías en el puerto estándar 4048 con alta prioridad

--cpu-priority 4
--cpu-affinity 0x00F0
-b 4048
--api-bind 0.0.0.0:4048
Estas son las opciones a configurar. Sobre el uso de cpu-affinity (https://wiki.vericoin.info/index.php?title=Cpu-affinity). Esta es la línea completa de mi /etc/rc.local
# 3way -t 3 big
/root/verium/3wayminer/cpuminer -o
stratum+tcp://pool-eu.bloxstor.com:3003 -u
VEXMki29ycW5vSt3MmdM5iwHqsHux91EMr.Guide -p GuidePwd --cpu-priority
4 -t 3 --cpu-affinity 0x00FF --api-bind 0.0.0.0:4048 &
Simplemente cópialo y pruébalo a modo de donación ;).

little cores -t 5

El pequeño núcleo ejecutará el minero de 1 vía en el puerto API 4049 con menor prioridad

--cpu-priority 1
-b 4049
--api-bind 0.0.0.0:4049
donde simplemente no tocamos --cpu-affinity y, por lo tanto, se usan los 4 núcleos pequeños + 1 grande. Esta es la línea completa de mi /etc/rc.local
# 1way -t 5 little
/root/verium/1wayminer/cpuminer -o stratum+tcp://pool-eu.bloxstor.com:3003 -u VEXMki29ycW5vSt3MmdM5iwHqsHux91EMr.Guide -p GuidePwd --cpu-priority 1 -t 5 -b 4049 --api-bind 0.0.0.0:4049 &

Monitorización

Si usas la API, necesitas configurar ambos puertos. Mi solución con birtys <3 webscripts se ve así: Hasta ahora he copiado index_monitor.php a index_monitor4049.php, reconfigurado

defined('API_PORT') || define('API_PORT', 4049);
en él, y simplemente lo incluí añadiendo al index.php. Puede encontrar más información sobre la monitorización aquí.

El resultado

Algunas observaciones antes de mirar H/m:

  1. Nuevamente: solo la imagen vinculada anteriormente me funcionó, aunque no por defecto
  2. Tienes que crear un archivo de intercambio swap (incluido en mis scripts)
  3. Mentí sobre las líneas en mi rc.local, en realidad mino en dos grupos diferentes. ¡Descentralízalo!

¡Números de hashrate! 11

Originalmente ejecuté la configuración de birtys miner, que en realidad es la configuración de 1 vía. Sin ninguna opción -t, simplemente inicié 8 subprocesos y con la minería de grupo obtuve un promedio de

395 H/m = 1 way -t 8
Los dos mineros produjeron algo así como
195 H/m = 1 way -t 5
250 H/m = 3 way -t 3

¡Feliz adición! 🙂

Me pregunto cómo funciona esto con la minería en solitario.

Actualización a fireworm miner & hugepages

1way : 128MB -> nr_hugepages = 65. 3way : 384MB -> nr_hugepages = 193. 6way : 768MB -> nr_hugepages = 386.

Configuración de la imagen de birtys

Configuración: imagen mínima de birtys hugepages: [unidad] Configurar hugepages

$ sudo nano /etc/sysctl.conf
a
$ vm.nr_hugepages=839
Cambiar host
$ nano /etc/hostname
$ nano /etc/hosts
y dram_freq=933 en
$ nano /media/boot/boot.ini
así como la contraseña por
$ passwd
Reiniciar antes de continuar
$ reboot

Instalación del minero Fireworm

Eliminar el viejo minero de la imagen de birtys:

$ rm -rf veriumMiner
Instala el minero más reciente con el script:
$ wget \
https://github.com/DJoeDt/verium/raw/master/nwayARM_HC1_fireworm_install.sh
$ chmod +x nwayARM_HC1_fireworm_install.sh
$ ./nwayARM_HC1_fireworm_install.sh

Configuración de inicio automático de minero

Configuración de inicio automático

$ nano /etc/rc.local

# Verium Miner Configuration
# big cores
$ nice --10 /root/verium/nwayminer/cpuminer \
-o stratum+tcp://vrm.n3rd3d.com:3332 -u joe_rondx.1 -p joe \
-t 3 -1 1 --cpu-affinity 0x00F0 --cpu-priority 2 \
--api-bind 0.0.0.0:4048 --no-color >> /root/verium/nwayminer/3waymine.log &

$ sleep 5 # delay for hugepages allocation

# little cores
$ /root/verium/nwayminer/cpuminer \
-o stratum+tcp://eu.vrm.mining-pool.ovh:3032 -u joe_rondx.HC1_1 -p joe \
-1 4 --cpu-affinity-stride 1 --cpu-affinity-oneway-index 0 --cpu-priority 0 \
--api-bind 0.0.0.0:4049 -b 4049 --no-color >> /root/verium/nwayminer/1waymine.log
¡Ejecuta el minero 3way primero!
-t 3 -1
Primero porque deberías hacer un uso máximo de las hugepages. En segundo lugar, ejecuta solo 1way
-1 4
donde 1 hilo se ejecuta sin hugepages.

Hashrate

=> 400 + 137 = 537 H/m @ 1.9 GHz

Potenciar el dispositivo

Las especificaciones dicen 4 Amps @ 5V para un Odroid. Pero hay mucho más a tener en cuenta si deseas potenciar tu plataforma Referencías

https://wiki.vericoin.info/index.php?title=Odroid https://ameridroid.com/products?keywords=aluminum https://forum.odroid.com/viewtopic.php?f=93&t=27239 http://www.thinkwiki.org/wiki/How_to_use_cpufrequtils https://wiki.odroid.com/odroid-xu4/os_images/linux/ubuntu_4.14/ubuntu_4.14 https://forum.odroid.com/viewtopic.php?f=146&t=28895&sid=873dc51d2cf97257c807b99826f91525

Be the first to comment

Leave a Reply