Wie lässt sich Folding@Home im Leerlauf ausführen?

Wie lässt sich Folding@Home im Leerlauf ausführen?

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- idleEinstellunges beginnt sofort mit der Verarbeitung, aber danach ist die Maschine für nichts anderes mehr praktisch unbrauchbar, selbst wenn ich die powerEinstellung 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:

  1. 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
  1. Kopieren Sie dieses Shell-Skript auf Ihre Festplatte /usr/bin/gnome-folding-at-screenlock.shund erteilen Sie ihm mit die Ausführungsberechtigung sudo 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
  1. sudo systemctl enable foldingathome && sudo systemctl start foldingathomeFalls Sie dies noch nicht getan haben. Beachten Sie, dass unser Skript den Dienst weder startet noch stoppt foldingathome. Es geht davon aus, dass der Dienst gestartet ist und pausiert/unterbricht das Falten über FAHClient. Die Pause bzw. Unterbrechung wird in der Konfigurationsdatei unter gespeichert /etc/foldingathome/config.xml.
  2. 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).
  3. 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.
  4. systemctl --user start gnome-folding-at-screenlock.service. Nicht als Root oder mit sudo ausführen.
  5. 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!
  6. Für Bonuspunkte gehen Sie zu GNOME Settings > Powerund 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_MINUTESund sleepWerte nach Wunsch und richten Sie es dann so ein, dass es beim Anmelden startet.

Wenn xprintidlees 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).

verwandte Informationen