Ich habe Folding@Home installiert und konfiguriert:
$ lsb_release --all
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 19.10
Release: 19.10
Codename: eoan
$ FAHClient --version
7.5.1
$ cat /etc/fahclient/config.xml
<config>
<!-- Network -->
<proxy v=':8080'/>
<!-- Slot Control -->
<idle v='true'/>
<power v='FULL'/>
<!-- User Information -->
<team v='[omitted]'/>
<user v='[omitted]'/>
<!-- Folding Slots -->
<slot id='0' type='CPU'/>
<slot id='1' type='GPU'/>
</config>
Nach dem Start beginnt der Dienst jedoch nie mit der Verarbeitung. Wenn ich denClient- idle
Einstellunges beginnt sofort mit der Verarbeitung, aber danach ist die Maschine für nichts anderes mehr praktisch unbrauchbar, selbst wenn ich die power
Einstellung auf mittel reduziere.Wie kann ich sicherstellen, dass Folding@Home nur dann funktioniert, wenn die Maschine im Leerlauf ist?Das heißt, ohne manuelles Eingreifen sollte die Verarbeitung nach einigen Minuten Leerlauf beginnen und sofort gestoppt werden, wenn der Leerlauf vorbei ist.
Antwort1
Ich habe genau das gleiche Problem und der Client denkt nie, dass mein Computer im Leerlauf ist. Ich habe schließlich ein Skript geschrieben, das FAH nur fortsetzt, wenn der Bildschirm gesperrt ist. Es hat wunderbar funktioniert. Sie können es hier überprüfen:
https://github.com/Madoshakalaka/gnome-folding-at-screenlock
Hier sind die vollständigen Schritte, um dies zum Laufen zu bringen, falls das Repository ausfällt:
- Kopieren Sie diese Servicedatei nach
/home/YOUR_DESTOP_USER/.config/systemd/user/gnome-folding-at-screenlock.service
[Unit]
Description=FAH controller based on screen locking/unlocking signals
[Service]
ExecStart=/usr/bin/gnome-folding-at-screenlock.sh
[Install]
WantedBy=default.target
- Kopieren Sie dieses Shell-Skript auf Ihre Festplatte
/usr/bin/gnome-folding-at-screenlock.sh
und erteilen Sie ihm mit die Ausführungsberechtigungsudo chmod +x /usr/bin/gnome-folding-at-screenlock.sh
.
#!/usr/bin/env sh
dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'" |
# Somehow I receive duplicate signals during locking and unlocking.
# It's a weird behavior but does no harm in our case.
while read x; do
case "$x" in
"boolean true")
echo "screen turns locked. Initiate folding" && FAHClient --send-unpause ;;
"boolean false") echo "screen turns unlocked. Unfold! Unfold!" && FAHClient --send-pause ;;
*) ;;
esac
done
sudo systemctl enable foldingathome && sudo systemctl start foldingathome
Falls Sie dies noch nicht getan haben. Beachten Sie, dass unser Skript den Dienst weder startet noch stopptfoldingathome
. Es geht davon aus, dass der Dienst gestartet ist und pausiert/unterbricht das Falten überFAHClient
. Die Pause bzw. Unterbrechung wird in der Konfigurationsdatei unter gespeichert/etc/foldingathome/config.xml
.- Gehen Sie in Ihrem Browser zum Dashboard
http://localhost:7396/
und ändern Sie einige Optionen. Sie sollten die Option „Während ich arbeite“ aktivieren, da wir uns nicht mehr auf die Leerlauferkennung von FAH verlassen. Außerdem können Sie auch Ihre ideale Leistungsstufe einstellen. Stoppen Sie das Falten schließlich, indem Sie auf die Schaltfläche „Falten stoppen“ klicken, wodurch<paused v='true'>
Ihrer Konfigurationsdatei tatsächlich ein Tag hinzugefügt wird (es macht genau dasselbe, was unser Skript macht, wenn Sie Ihren Monitor aufwecken). systemctl --user enable gnome-folding-at-screenlock.service
. Führen Sie es nicht als Root oder mit sudo aus, da das Sperren und Entsperren an Ihren Desktop-Benutzer gebunden ist.systemctl --user start gnome-folding-at-screenlock.service
. Nicht als Root oder mit sudo ausführen.- Fertig! Jetzt können Sie einfach super+ drücken lund den Bildschirm sperren, wenn Sie nicht am Computer sind. Die Proteinfaltung beginnt sofort! Wenn Sie zurück sind, entsperren Sie Ihren Computer und die Faltung wird sofort angehalten!
- Für Bonuspunkte gehen Sie zu GNOME
Settings > Power
und deaktivieren Sie die automatische Suspendierung, da sonst kein erweitertes Falten möglich ist. Standardmäßig erfolgt die Suspendierung nach 20 Minuten Inaktivität, wodurch auch FAH gestoppt wird.
Antwort2
Hier ist meine schnelle und einfache Lösung, inspiriert von der Antwort unterhttps://unix.stackexchange.com/a/259963.
#!/bin/bash
let TIMEOUT_MINUTES=5
let TIMEOUT_MS=TIMEOUT_MINUTES*60000
while [ 0 ]
do
IDLE=$(xprintidle)
if [ $IDLE -lt $TIMEOUT_MS ]
then
FAHClient --send-pause
else
FAHClient --send-unpause
fi
sleep 15
done
Ändern Sie einfach die TIMEOUT_MINUTES
und sleep
Werte nach Wunsch und richten Sie es dann so ein, dass es beim Anmelden startet.
Wenn xprintidle
es nicht in Ihrem Repo ist, wie es bei mir beim Ausführen von Fedora 37 der Fall war, können Sie es aus dem Quellcode erstellen (verfügbar unterhttps://github.com/g0hl1n/xprintidle).