Da quando abbiamo iniziato a misurare la nostra domanda di energia, abbiamo anche iniziato a sviluppare concetti su come potremmo migliorare l’efficienza energetica. Personalizzare le nostre macchine non solo a livello software sembra ovvio, ma è anche più facile a dirsi che a farsi.
Per prima cosa abbiamo dovuto guardare quale hardware volevamo utilizzare come base. La maggior parte dei provider cloud parte da macchine con carichi di lavoro piuttosto pesanti e ottimizza per il picco di carico. Il nostro setup era diverso e volevamo spostare l’ago della bilancia sul lato basso, non su quello alto. Questo significava che i server tradizionali non rientravano veramente nell’ambito di questo compito. Guardandoci intorno sul mercato, qualcosa a metà strada tra macchine ARM o RISC-V a piccolo fattore di forma sembrava una scelta facile.
purtroppo inserire queste macchine in un setup più simile a un server richiede parecchi preparativi. Abbiamo inoltre notato due proprietà mancanti in tutti questi setup.
Un tipo di macchina che quasi perfettamente risponde a queste caratteristiche è il notebook. Queste macchine solitamente hanno un piccolo fattore di forma già ottimizzato per il consumo energetico. Inoltre queste macchine hanno già una propria batteria. Il problema qui è che i notebook hanno molta altra componentistica (tastiera, monitor, touchpad) che non ci serve. Quindi abbiamo iniziato a cercare fornitori di notebook bare-bone per poter iniziare a valutare.
Questo ci ha portato a frame.work. Framework è un produttore di notebook che vende macchine altamente personalizzabili e riparabili. Inoltre avevamo già in casa un notebook Framework che abbiamo potuto adattare per i nostri esperimenti.
Dopo aver testato il nostro setup con il notebook Framework esistente, abbiamo ordinato altre 2 “macchine”. Quindi ciò che abbiamo ordinato sostanzialmente è stata la scheda madre (i5 13a gen) con memoria e SSD, oltre alla batteria.
L’assemblaggio è stato semplicemente avvitare i componenti su una piastra di base e collegarli all’alimentazione. Per la rete usiamo il WiFi. Ecco una foto di come abbiamo assemblato la macchina nel nostro laboratorio.

Dopo aver configurato l’hardware, abbiamo iniziato a lavorare sul software. Il nostro setup di base richiede Linux, ma non abbiamo ancora vincolato nessun vendor o versione. Quindi abbiamo iniziato con Fedora, dato che era anche il software che usavamo sul nostro notebook di riferimento. Purtroppo abbiamo capito rapidamente che fare un’installazione senza supervisione su una macchina senza monitor e tastiera, e senza rete (perché non riuscivamo a configurare il wifi) era piuttosto complicato. Per non perdere troppo tempo su questo problema, abbiamo deciso di installare Fedora sul nostro notebook di riferimento e semplicemente clonare l’SSD sulle due nuove macchine. In questo modo potevamo costruire un sistema operativo base con tastiera e monitor collegati, oltre a preconfigurare la rete e SSH come necessario. Dopo aver ottenuto gli SSD clonati, li abbiamo semplicemente riavvitati ai nostri host e collegato l’alimentatore.


Dopo il primo avvio, abbiamo iniziato a esaminare il problema del monitoraggio energetico. All’inizio abbiamo pensato di poter aumentare la capacità della batteria collegando un’altra batteria commerciale tramite la porta USB-C. Purtroppo non ha funzionato. Era molto poco affidabile perché il pacco batteria non forniva abbastanza energia affinché il notebook potesse caricarsi mentre era in funzione. Quindi abbiamo dovuto rinunciare a questa parte del progetto. Ci siamo così ritrovati con la batteria da 55Wh inclusa con il Framework.
Come abbiamo detto prima, volevamo che queste macchine dessero energia solo quando effettivamente generavamo potenza dai nostri pannelli solari. Avevamo quindi bisogno di una spina di alimentazione esterna in grado sia di misurare che di accendere/spegnere l’alimentazione. Abbiamo optato per alcune CloudFree Power Plugs, ma ne parleremo meglio più avanti. Il fatto importante è che questi dispositivi hanno un endpoint API locale sia per la misurazione dell’energia che per l’accensione/spegnimento.
Ora abbiamo il setup hardware. Il software è anche a posto. Proviamo a far funzionare questi dispositivi e iniziare a ottimizzare cose come i cicli di carica, i livelli di consumo e così via. Per ora li useremo come nodi di lavoro asincroni per fornire più potenza di calcolo al nostro stack.