Building our own nodes

created: Sonntag, Sept. 10, 2023

Seit wir begonnen haben, unseren Energiebedarf zu messen, haben wir auch Konzepte entwickelt, wie wir die Energieeffizienz verbessern können. Eigene Maschinen anzupassen, geht über die Software hinaus und erscheint offensichtlich, ist aber leichter gesagt als getan.

Zuerst mussten wir schauen, auf welcher Hardware wir aufbauen wollen. Die meisten Cloud-Anbieter starten mit eher leistungsstarken Maschinen und optimieren für die Spitzenlast. Unser Setup war anders: Wir wollten den Schwerpunkt eher im niedrigen Leistungsbereich setzen, nicht im hohen. Das bedeutete, dass traditionelle Server für diese Aufgabe kaum in Frage kamen. Auf dem Markt schien etwas zwischen kleinen Formfaktor-ARM- oder RISC-V-Maschinen eine einfache Wahl zu sein. Leider erfordert es doch einige Vorbereitung, diese Maschinen in eine eher serverähnliche Umgebung zu bringen. Zudem stellten wir fest, dass zwei Eigenschaften bei all diesen Setups fehlten.

Erforderliche Eigenschaften

Eine Maschinengattung, die fast perfekt diese Merkmale erfüllt, ist das Notebook. Diese Geräte haben meist einen kleinen Formfaktor, der bereits auf Energieeffizienz optimiert ist. Außerdem verfügen diese Maschinen über eine integrierte Batterie. Das Problem hierbei ist, dass Notebooks viel Hardware mitbringen (Tastatur, Monitor, Touchpad), die wir gar nicht benötigen. Deshalb begannen wir, nach Barebone-Notebook-Anbietern zu suchen, bei denen wir evaluieren konnten.

So kamen wir auf frame.work. Framework ist ein Notebook-Anbieter, der hochgradig anpassbare und reparierbare Maschinen verkauft. Außerdem hatten wir bereits ein Framework-Notebook, das wir für unsere Experimente umrüsten konnten.

Workshop-Setup

Nach Tests mit dem vorhandenen Framework-Notebook bestellten wir 2 weitere „Maschinen“. Was wir im Grunde bestellten, war das Mainboard (i5 13. Generation) mit etwas Speicher und SSD sowie Batterie.

Die Montage bestand nur darin, die Komponenten auf eine Grundplatte zu schrauben und mit Strom zu verbinden. Für das Netzwerk nutzen wir WLAN. Hier ein Bild, wie wir die Maschine in unserem Workshop zusammengebaut haben.

machine-image

Software

Nachdem die Hardware bereitstand, widmeten wir uns der Software. Unser Basissystem benötigt Linux, aber wir haben uns weder auf einen Anbieter noch auf eine Version festgelegt. Wir starteten mit Fedora, da dies auch die Software war, die auf unserem Beispielnotebook lief. Leider stellten wir schnell fest, dass eine unbeaufsichtigte Installation auf einer Maschine ohne Monitor, Tastatur und zunächst auch ohne Netzwerk (da wir WLAN nicht einrichten konnten) recht knifflig ist. Um nicht zu viel Zeit mit diesem Problem zu verbringen, entschieden wir uns, Fedora auf unserem Beispielnotebook zu installieren und die SSD einfach auf die zwei neuen Maschinen zu klonen. So konnten wir ein Basissystem mit angeschlossener Tastatur und Monitor aufbauen und Netzwerk sowie SSH vorab konfigurieren. Nachdem wir die geklonten SSDs erhielten, schraubten wir diese einfach in unsere Hosts und schlossen das Netzteil an.

Erster Start

machine-image

machine-image

Nach dem ersten Start begannen wir mit der Untersuchung des Problems der Leistungsüberwachung. Zunächst dachten wir, wir könnten die Batteriekapazität erhöhen, indem wir einen weiteren handelsüblichen Akku an den USB-C-Anschluss anschließen. Leider funktionierte das nicht. Es war sehr unzuverlässig, da das Akku-Pack nicht genügend Leistung lieferte, um das Notebook während des Betriebs tatsächlich aufzuladen. Deshalb mussten wir diesen Teil des Projekts aufgeben. So blieb uns der 55Wh-Akku, der beim Framework enthalten ist.

Stromsteuerung

Wie bereits erwähnt, wollten wir, dass diese Maschinen nur dann laufen bzw. Strom verbrauchen, wenn wir tatsächlich Strom von unseren Solarpanels erzeugen. Daher brauchten wir einen externen Stromstecker, der sowohl messen als auch den Strom ein- und ausschalten kann. Wir entschieden uns für sogenannte CloudFree Power Plugs, darüber berichten wir später noch genauer. Wichtig ist hier, dass diese Geräte eine lokale API-Schnittstelle sowohl zur Strommessung als auch zur Ein-/Aus-Schaltung haben.

Abschließende Gedanken

Nun haben wir die Hardware aufgebaut. Die Software ist ebenfalls einsatzbereit. Versuchen wir also, diese Geräte in Betrieb zu nehmen und Dinge wie Ladezyklen, Verbrauchsniveaus und Ähnliches zu optimieren. Vorläufig setzen wir sie als asynchrone Worker-Knoten ein, um unserem Stack mehr Rechenleistung zu bieten.