Construyendo nuestros propios nodos

created: domingo, sept. 10, 2023

Desde que comenzamos a medir nuestra demanda energética, también empezamos a desarrollar conceptos sobre cómo podríamos mejorar la eficiencia energética. Personalizar nuestras propias máquinas más allá del software parece obvio, pero también es más fácil decirlo que hacerlo.

Primero tuvimos que analizar sobre qué hardware queríamos construir. La mayoría de los proveedores de la nube comienzan con máquinas de carga bastante pesada y se optimizan para cargas máximas. Nuestra configuración era diferente y queríamos mover la aguja en el extremo bajo, no en el extremo alto. Eso significaba que los servidores tradicionales no estaban realmente en el alcance para esta tarea. Mirando el mercado, algo entre una máquina ARM o RISC-V de pequeño factor de forma parecía una elección fácil.
lamentablemente, llevar estas máquinas a una configuración más tipo servidor requiere bastante preparación. Además, vimos 2 propiedades que faltaban en todas esas configuraciones.

Características requeridas

Un tipo de máquina que casi se ajusta perfectamente a estas características es el portátil. Estas máquinas usualmente tienen un pequeño factor de forma que ya está optimizado para el consumo de energía. Además, estas máquinas vienen con su propia batería. El problema aquí es que los portátiles vienen con mucho hardware (teclado, monitor, touchpad) que no necesitamos. Así que comenzamos a buscar algunos proveedores de portátiles bare-bone donde pudiéramos empezar a evaluar.

Esto nos llevó a frame.work. Framework es un proveedor de portátiles que vende máquinas altamente personalizables y reparables. Además, ya teníamos una máquina Framework a nuestro alrededor que pudimos adaptar para nuestros experimentos.

Configuración del taller

Después de probar nuestra configuración con el portátil Framework existente, pedimos 2 ‘máquinas’ más. Básicamente, lo que pedimos fue la placa base (i5 13ª generación) con algo de memoria y SSD, así como la batería.

El montaje consistió simplemente en atornillar los componentes a una placa base y conectarla a la energía. Para la red usamos WiFi. Aquí una foto de cómo montamos la máquina en nuestro taller.

machine-image

Software

Después de tener el hardware configurado, comenzamos a mirar el software. Nuestra configuración base requiere algo de Linux, pero más allá de eso no hemos restringido ningún proveedor o versión. Así que empezamos con Fedora, ya que este era también el software que usábamos en nuestro portátil de muestra. Lamentablemente descubrimos rápidamente que hacer una instalación desatendida en una máquina sin monitor ni teclado, y tampoco red (ya que no pudimos configurar el wifi) era algo bastante complicado. Para no gastar demasiado tiempo en este enigma, optamos por instalar Fedora en nuestro portátil de muestra y simplemente clonar el SSD a las dos nuevas máquinas. De esta forma pudimos construir un sistema operativo base con teclado y monitor conectados, y también preconfigurar la red y SSH según lo requerido. Después de clonar los SSD, simplemente los atornillamos de nuevo en nuestros hosts y conectamos el adaptador de corriente.

Primer arranque

machine-image

machine-image

Después del primer arranque, comenzamos a investigar el problema del monitoreo de energía. Al principio pensamos que podríamos aumentar la capacidad de la batería conectando otra batería comercial disponible al puerto USB-C. Desafortunadamente, esto no funcionó. Fue muy poco confiable porque el paquete de baterías no suministraba suficiente energía para que el portátil realmente se cargara mientras estaba en funcionamiento. Así que tuvimos que dejar de lado esta parte del proyecto. Eso nos dejó con la batería de 55Wh que incluye Framework.

Control de energía

Como mencionamos antes, queríamos que estas máquinas solo funcionaran/consumieran energía cuando realmente estuviéramos generando energía desde nuestros paneles solares. Así que necesitábamos un enchufe de energía externo que pudiera tanto medir como encender/apagar la energía. Decidimos usar algunos CloudFree Power Plugs, pero compartiremos más sobre esto más adelante. El hecho importante aquí es que estos dispositivos tienen un punto final API local tanto para la medición de energía como para el interruptor de encendido/apagado.

Reflexiones finales

Así que ahora tenemos configurado el hardware. El software también está en su lugar. Intentemos ejecutar estos dispositivos y comenzar a optimizar cosas como el ciclo de carga, niveles de consumo y demás. Por ahora, los usaremos como nodos trabajadores asíncronos para proporcionar más cómputo a nuestra pila.