[How-To] Folding mit dem Smartphone und Raspberry Pi

haVoc_inc

Komplett-PC-Käufer(in)
Herzlichen guten Tag allerseits,

in diesem How-To möchte ich euch vorstellen, wie es mit ein paar kleinen Tricks möglich ist, mit einem handelsüblichen Smartphone oder Raspberry Pi am Folden teilzunehmen. Zunächst die Rahmenbedingungen und welche Geräte in Frage kommen.

Mit der Einführung des neuen Folding@Home Cores 0xa8 ist es ARM64 basierten System ermöglicht worden, aktiv am Geschehen teilzunehmen. Eine Liste der Server mit verfügbaren Work Units findet sich hier. Da sich das Ganze teilweise (imho) noch in der Beta-Phase befindet, sollten die client-types vorerst auf beta gestellt werden, dazu später mehr.


Welche Hardware kommt in Frage?
Grundsätlich gilt, jeder ARM Prozessor mit 64 bit Instruction Set ist für F@H geeignet. Infos über AARCH64 finden sich hier.

Jedes moderne Smartphone besitzt normalerweise eine Prozessorarchitektur mit ARM Cortex-A53 Kernen, welche für diese Betrachtung als Minimum angesehen werden. Dieser wird z. B. in einem Raspberry Pi 3 verwendet. Die aktuelle Version der Bastelrechner enthält indes ARM Cortex-A72.

Smartphones besitzen auf Grund ihrer Architektur aus Stromspar- sowie Leistungskernen einen Verbund aus verschiedenen Blöcken, z. B. der Snapdragon 845 von Qualcomm. Dieser verbindet modernere Nachfolge-IPs bestehend aus jeweils vier Cortex-A55 sowie Cortex-A75 Kernen.


Welche Software kommt in Frage?
Neben 64 Bit Hardware muss auch auf 64 Bit Software gesetzt werden.

RPI 3 + 4:
Rasbpian OS in 64 Bit Version

Android:
Es empfiehlt sich mindestens Android 7.0, evtl. funktioniert auch Android 5.0.
Für Android sollte zusätzlich eine Monitoring App wie z. B. CPU-Z installiert sein, um die Harware zu überwachen.
Termux, ein Linux Emulator für Android.

Apple:

Kein Gerät zum Testen verfügbar.


Auf was muss besonders geachtet werden?
Da Raspberry Pis oder Handys nicht unbedingt als dauerlaufende Rechenknechte gedacht sind, sollte hier auf eine gute Kühlung geachtet werden. Temperaturen von unter 80 °C sind bei Raspberry Pis relativ unbedenklich, bei Smartphones dürften die Grenzen je nach Gerät variieren aber mehr als 60 °C Kerntemperatur werden die wenigsten mitmachen.
Zudem sorgen hohe Temperaturen für eine unverhältnismäßige Erwärmung des Akkus, was deren Leistungsfähigkeit und Haltbarkeit mindert.

Raspberry Pis kann man getrost mit 4 Threads belasten und laufen lassen, bei Smartphones kann diese Zahl je nach Modell variieren. Das muss ausprobieren, da die Stromsparmechanismen der einzelnen Geräte variieren können. So sind auf dem Papier z. B. 8C/8T vorhanden, in Wahrheit macht das Gerät aber 2x 4C/4T daraus und 8 Threads führen zu einem schlechten Ergebnis.


Raspberry Pi 3 und 4 - Los gehts!
  1. Raspberry Pi OS 64 bit installieren und fertig einrichten. Hier reicht eine 8 GB µSD Karte. Falls eine lite-Version inzwischen vorhanden ist, kann diese auch genutzt werden.
  2. Den Raspberry Pi komplett mit Updates versorgen und evtl. die WLAN Verbindung einrichten. Anschließend neustarten.
  3. Es ist empfehlenswert, den RPI ohne GUI im Komandozeilenmodus zu starten. Hier wird unnützer Overhead minimiert. Anleitung 1 und Anleitung 2. Zudem sollte SSH aktiviert sein, macht späteren Zugriff einfacher.
  4. FAH herunterladen und installieren. Hier findet sich die aktuelle Version des FAHClient. Falls der GUI Modus aktiviert ist, ein Konsolenfenster öffnen und nachfolgendes einfügen.

Code:
wget https://download.foldingathome.org/releases/public/release/fahclient/debian-stable-arm64/v7.6/latest.deb
sudo dpkg -i latest.deb

oder Version 7.6.21:

Code:
wget https://download.foldingathome.org/releases/public/release/fahclient/debian-stable-arm64/v7.6/fahclient_7.6.21_arm64.deb
sudo dpkg -i fahclient_7.6.21_arm64.deb

Ab hier den Installationsanweisungen folgen und Name, Team und Passkey eingeben. Bei der Leistung kann getrost full und der automatische Start von FAH angewählt werden. Bei einem etwaigen Neustart der RPIs fangen diese nach ca. einer Minute mit dem Folden an.

Die Prozesse laufen als Hintergrundprozesse, was den Vorteil bietet, dass nicht das Konsolenfenster zugespammt wird.

Sollte FAH manuell im GUI Modus gestartet werden, kann durch öffnen eines zweiten Konsolenfensters auf den FAHClient zugegriffen werden. Im CLI Modus VOR dem Start von FAHClient ein nohup setzen und das Konsolenfenster wird nicht überflutet.


Folding unter Android
Dieser Abschnitt behandelt die Installation und den Betrieb des FAHClient und Android. Es wird dabei auf Termux zurückgegriffen und innerhalb dessen Debian zum laufen gebracht.

  1. Termux aus dem App-Store herunterladen und installieren
  2. Termux öffnen, OpenSSH installieren (pkg install openssh) und das SSH-Passwort setzen: passwd
  3. SSH mittels sshd öffnen. Ab hier sollte per PC im selben Netzwerk die Verbindung hergestellt werden, da das tippen über den Bildschirm mühselig werden kann. Mittels ifconfig kann in Termux die IP-Adresse ausgelesen werden
  4. SSH Verbindung von PC herstellen mittels: ssh root@##IP-Adresse-des-Smartphones## -p 8022. Bei Linux ganz normal über die Konsole, bei Windows über ein Powershell Fenster.
  5. Password, welches zuvor gesetzt wurde, eingeben. Anschließend steht die Verbindung
  6. Debian installieren und anschließend starten. Quelle
Tools installieren:
Code:
pkg install debootstrap proot wget
Debian herunterladen:
Code:
debootstrap --arch=arm64 stable debian-stable http://ftp.debian.org/debian/
Skript zum Starten von Debian erstellen:
Code:
nano start_debian.sh
Es erscheint ein leeres Fenster. Hier wird folgendes eingefügt:
Code:
#!/data/data/com.termux/files/usr/bin/sh
proot \
        -0 \
        --link2symlink \
        -r ~/debian-stable \
        -w /root \
        -b /dev/ \
        -b /sys/ \
        -b /proc/ \
        -b /data/data/com.termux/files/home \
        /usr/bin/env -i \
        HOME=/root \
        TERM="xterm-256color" \
        PATH=/bin:/usr/bin:/sbin:/usr/sbin \
        /bin/bash --login
Anschließend zum Speichern und Verlassen des Skripts: Strg+o, ENTER/RETURN, Strg+x

Nun Debian starten, welches innerhalb von Termux gestartet wird:
Code:
unset LD_PRELOAD
sh start_debian.sh

Nun ist Debian gestartet und es kann FAH installiert werden. Dazu wird sich der Installationsroutine für Raspberry Pis bedient und erfolgt nach dem selben Muster.

Somit erneut:

Code:
wget https://download.foldingathome.org/releases/public/release/fahclient/debian-stable-arm64/v7.6/latest.deb
dpkg -i latest.deb

oder Version 7.6.21:

Code:
wget https://download.foldingathome.org/releases/public/release/fahclient/debian-stable-arm64/v7.6/fahclient_7.6.21_arm64.deb
sudo dpkg -i fahclient_7.6.21_arm64.deb

Troubleshooting:

  • Ab hier erfolgt die selbe Konfiguration wie bei Raspberry Pis. Allerdings funktioniert der Autostart von FAHClient nicht automatisch beim Start des Debian und muss immer erneut eingegeben werden (siehe nächster Abschnitt).

  • Es ist empfohlen, die Konfigurationsdatei im Voraus vor dem Start anzulegen:
Code:
sudo nano config.xml
Code:
<config>
  <!-- Client Control -->
  <fold-anon v='true'/>


  <!-- Folding Slot Configuration -->
  <gpu v='false'/>


  <!-- Slot Control -->
  <power v='medium'/>


  <!-- User Information -->
  <passkey v='################'/>
  <team v='70335'/>
  <user v='haVoc_inc'/>
  <client-type v='beta'/>
  <!-- Folding Slots -->
  <slot id='0' type='CPU'/>
  <cpus v='4'/>
</config>

Hinsichtlich der angesprochenen Punkte zur Beachtung oben, sollte vorerst der Wert von 4 CPUs beibehalten werden. Nach den ersten Tests kann dieser verändert werden.

Wie kann der FAHClient bedient werden?
Läuft der FAHClient im Hintergrund oder ein einem seperaten Fenster können mittels verschiedener Befehle dem Client gesagt werden, was er zu tun oder zu lassen hat.

Was soll getan werden?Wie ist der Befehl?
FAH Client starten (nur wenn noch nicht gestartet)FAHClient; FAHClient start
FAHClient anhaltenFAHClient stop
Die aktuelle WU pausierenFAHClient pause
Die aktuelle WU fertigstellenFAHClient finish
Die PPD auslesenFAHClient --send-command ppd
Informationen über die WU und Slot auslesenFAHClient --send-command queue-info
Allgemeiner InformationenFAHClient --send-command options
Informationen und HilfeFAHClient --send-command help


Was ist an PPD zu erwarten?
Raspberry Pi 3B @ 1,1 GHz (Cortex-A53)750-1100 PPD
Raspberry Pi 3B+ @1,5 GHz (Cortex-A53)900-1300 PPD
Raspberry Pi 4B @1,75 GHz (Cortex-A72)2500-4500 PPD
Sony Xperia XZ2 Compact @4T @2,8 GHz (Cortex-A75)4000-12000 PPD
AWS Graviton2 Instance 2C/2T @2,5 GHz9700 PPD

Die PPD sind je nach WU sehr inkonsistent. Die angezeigten Werte sind nur eine grobe Richtung und können sich hinsichtlich der verwendeten WU oder des Status (normal, advanced, beta) stark ändern.
Ebenso hat die Temperatur des Geräts starken Einfluss auf die PPD, ein throttelndes Smartphone (siehe Bsp. Tabelle oben) kann die PPD von 12k auf 4k fallen lassen.

Hinsichtlich der Energieeffizienz im Vergleich mit Grafikkarten können ARM Kerne relativ brauchbare Ergebnisse abliefern, bezogen auf 1k PPD/Watt.


Im Anhang ein Proof, um zu zeigen, dass das auch wirklich klappt ;)
Nachahmer sind gerne gesehen und ich wünsche viel Spaß beim folden!

Cheers,

haVoc_inc
 

Anhänge

  • Screenshot_20201104-193425.png
    Screenshot_20201104-193425.png
    290,4 KB · Aufrufe: 139
Zuletzt bearbeitet:
Gerne! Probiert es einfach mal aus, ich habe recht inkonsistente Werte bei 2T und 4T gleichen sich teilweise sehr. Evtl liegt das am thermischen Throtteling.
Ihr könnt hier gerne mal euere Ergebnisse posten. Das beste ist, ihr lasst eine Termux Session mit FAH laufen und mit der anderen gebt ihr die Befehle ein. So habt ihr direkten Zugriff drauf.
 
Der Link in der Anleitung funktionierte bei mir eben während des Testens nicht. Geklappt hat aber:

Code:
wget https://download.foldingathome.org/releases/public/release/fahclient/debian-stable-arm64/v7.6/fahclient_7.6.21_arm64.deb
sudo dpkg -i fahclient_7.6.21_arm64.deb
 
danke für den Hinweis, ich ändere das ab. Da hatte ich die falsche Formatierung drin.
 
Zuletzt bearbeitet:
Ich habe den Pi 4 mal ein paar Wochen vor sich hin falten lassen. Einmal mit den normalen 1,5 GHz und einmal mit 1,9 GHz.
Es handelt sich genau gesagt um den Raspberry Pi 4 B Rev. 1.4 mit B0 Stepping, also dem alten Stepping ohne der Möglichkeit, per Firmware Upgrade 1,8 Ghz Takt zu erreichen, dies ist mit dem C0 Stepping möglich.
Übertaktet habe ich mit der Einstellung "overvoltage = 6", der Pi lief also mit einer höheren Spannung und zieht hierurch 10W statt 7W aus der Dose.

Euch kostet der Pi 4 im ca 18,41 Euro im Jahr, übertaktet wären das dann 26,30 Euro :ugly:

Der Pi 4 steckt in einem Aragon One M.2 Gehäuse , verbunden mit einer Crucial MX500 SSD über USB 3.0.
Der eingebaute Lüfter des Gehäuses bringt ca. 3 °C niedrigere Temperaturen, nörgelt aber hörbar vor sich hin, deshalb habe ich den nie eingeschaltet :D

Den Pi 4 habe ich headless aufgesetzt, also ohne HDMI Ausgabe, ohne Desktop, nur per SSH, um maximal Ressourcen zu sparen.

Überwacht habe ich das alles remote per"Putty" und FAHControl.
Es war etwas fummelig über die reine Konsole beim Pi das folding@home so einzustellen, damit andere im Netzwerk den Stand abfragen konnten, deshalb möchte ich vorab kurz erwähnen, wie ich das bewerkstelligt habe:

Nach der Anleitung von haVoc_inc habe ich per Befehl
Code:
sudo nano /etc/fahclient/config.xml
folgende Zeilen zwischen die <config> hinzugefügt:

Code:
<config>

  <allow v='127.0.0.1 0.0.0.0'/>
  <web-allow v='127.0.0.1 0.0.0.0'/>
  <password v='xxxxxxxx'/>
 
</config>



Hier ein Beispiel meiner fertigen config.xml. Einmal eingerichtet, kann diese auch per FAHControl beliebig remote angepasst werden, die Einstellungen werden übernommen.
Code:
<config>
  <!-- Client Control -->
  <fold-anon v='true'/>

  <!-- Folding Core -->
  <checkpoint v='30'/>
  <core-priority v='low'/>

  <!-- Folding Slot Configuration -->
  <gpu v='false'/>

  <!-- HTTP Server -->
  <allow v='127.0.0.1 0.0.0.0'/>

  <!-- Network -->
  <proxy v=':8080'/>

  <!-- Remote Command Server -->
  <password v='xxxxxxxxxx'/>

  <!-- Slot Control -->
  <pause-on-battery v='false'/>
  <power v='full'/>

  <!-- User Information -->
  <passkey v='xxxxxxxxxxxx'/>
  <team v='70335'/>
  <user v='Timmy99'/>

  <!-- Web Server -->
  <web-allow v='127.0.0.1 0.0.0.0'/>

  <!-- Folding Slots -->
  <slot id='0' type='CPU'/>
</config>


Nun aber das versprochene Ergebnis:

NamePi 4 1,5 GHzPi 4 1,9 GHz
TPF (Time per Frame)1.455,001.291,00
TPF 100% sec145.500,00129.100,00
TPF 100% min2.425,002.151,67
TPF 100% hour40,4235,86
TPF 100% day1,681,49
days Timeout left (incl Bonus)0,320,51
days Expiration left (deadline)3,323,51
Percent faster100%111,31%
Clock faster100%126,67%
PPD21782609
PPD %100%119,79%
Project number1829618206
Linux DistroDietPi 64bitDietPi 64bit
Temperature SoC (passive)63°C74°C
power usage watt7W10W
power usage percent100%142,85%


Hier nochmal als Bild:

pi4_table.png



Taskmanager BTOP++

1,5 GHz
folding1_5.png


1,9 GHz
folding1_9.png


FahControl in Windows auf einem anderen Rechner, der den Pi 4 abfrägt
2021-11-27 21_46_56-FAHControl - Folding@home Client Advanced Control.png


Gerne könnt ihr meinen Post einpflegen oder verlinken wie ihr möchtet, damit andere die eventuell Fragen beim einrichten der Remote-Einstellungen etc. schnell Hilfe finden :)
 
Zuletzt bearbeitet:
Zurück