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.
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
- Descargar la imagen desde: https://drive.google.com/open?id=1RbXnGUh5fwmfhMQNzefCK75PajyrXjQi
- 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).
- En el primer arranque, espera entre 5 a 10 minutos hasta que puedas localizar el dispositivo en la red.
- Inicia sesión con las credenciales estándar de root/odroid.
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.shAhora, antes de ejecutar la actualización, asegúrate de matar al minero, yo utilicé
$ top $ killDonde, nnn correspondería al pid de la instancia del minero en tu sistema. Ahora ejecuta:
./odroid_image_update.shLuego edita,
$ nano /etc/rc.localLo 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.localAl 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 $ passwdTambién puedes expandir el sistema de archivos utilizando el script
$ ./resize.shReinicia antes de continuar
$ rebooty 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.shque 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!
- 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.
- Si está ejecutando menos de 10 unidades (XU4, XU4Q, HC1, MC1/4), una donación inicial es todo lo que pedimos.
- Si estás ejecutando 10-19 unidades, puede considerar tener un pequeño minero en la dirección joe_rondx.
- Si está ejecutando 20-29 unidades, puede considerar tener un pequeño minero más en la dirección fireworms.
- Si estás ejecutando 30-39 unidades, puede considerar cambiar el pequeño minero joes a uno grande.
- Si estás ejecutando 40-49 unidades, puede considerar cambiar el pequeño minero fireworms a uno grande.
- 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 cpufrequtilsusarlo directamente
$ sudo cpufreq-set -c 7 -u 1.9GHz -ry haz que los cambios se vuelvan permanentes creando un archivo de configuración
$ sudo nano /etc/default/cpufrequtilscon las siguientes configuraciones
ENABLE="true" GOVERNOR="performance" MAX_SPEED=1900000 MIN_SPEED=1900000Ahora 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.iniBusca
ddr_freqy cambia el valor a 933
# DRAM Frequency # Sets the LPDDR3 memory frequency # Supported values: 933 825 728 633 (MHZ) setenv ddr_freq 933Asegú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.confy agrega la siguiente línea
# Put GPU into powersave mode (= Downclocking it) devices/platform/11800000.mali\:/devfreq/11800000.mali\:/governor = powersaveluego inicia el servicio
$ sudo service sysfsutils startEfecto: 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.localy 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/swapfilecompruébalo con
$ free -hy 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 -py 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 threadLa vía del minero está configurado en
$ nano veriumMiner/algo/scrypt.cAhora 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 RAMEl 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.shque 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:4048Estas 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:4049donde 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:
- Nuevamente: solo la imagen vinculada anteriormente me funcionó, aunque no por defecto
- Tienes que crear un archivo de intercambio swap (incluido en mis scripts)
- 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 8Los 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.confa
$ vm.nr_hugepages=839Cambiar host
$ nano /etc/hostname $ nano /etc/hostsy dram_freq=933 en
$ nano /media/boot/boot.iniasí como la contraseña por
$ passwdReiniciar antes de continuar
$ reboot
Instalación del minero Fireworm
Eliminar el viejo minero de la imagen de birtys:
$ rm -rf veriumMinerInstala 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 -1Primero porque deberías hacer un uso máximo de las hugepages. En segundo lugar, ejecuta solo 1way
-1 4donde 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