He instalado y configurado Folding@Home:
$ 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>
Sin embargo, después de iniciar el servicio nunca comienza a procesarse. Si cambio elidle
configuración del clientecomienza a procesarse inmediatamente, pero luego la máquina queda prácticamente inutilizable para cualquier otra cosa, incluso si reduzco la power
configuración a media.¿Cómo puedo asegurarme de que Folding@Home funcione cuando, y sólo cuando, la máquina esté inactiva?Es decir, sin intervención manual, debería comenzar a procesarse después de unos minutos de inactividad y debería detenerse inmediatamente cuando ya no esté inactivo.
Respuesta1
Tengo exactamente el mismo problema y el cliente nunca piensa que mi computadora está inactiva. Terminé creando un script que solo reanuda FAH cuando la pantalla está bloqueada. Funcionó de maravilla. Puedes consultar aquí:
https://github.com/Madoshakalaka/gnome-folding-at-screenlock
Estos son los pasos completos para que esto funcione en caso de que el repositorio falle:
- Copie este archivo de servicio a
/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
- Copie este script de shell a su
/usr/bin/gnome-folding-at-screenlock.sh
y otorgue el permiso ejecutable consudo 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
Si aún no lo has hecho. Tenga en cuenta que nuestro script no iniciará ni detendrá elfoldingathome
servicio. Se supone que el servicio está iniciado y pausa/reanuda el plegado a través deFAHClient
. La pausa o reanudación persistirá en el archivo de configuración ubicado en/etc/foldingathome/config.xml
.- Vaya al panel de su navegador en
http://localhost:7396/
y cambie algunas opciones. Debe marcar la opción "Mientras estoy trabajando" porque ya no dependemos de la detección inactiva de FAH. Además, también puedes configurar tu nivel de potencia ideal. Finalmente, detenga el plegado presionando el botón "Detener plegado", que en realidad agrega una<paused v='true'>
etiqueta a su archivo de configuración (hace exactamente lo mismo que hace nuestro script cuando activa su monitor). systemctl --user enable gnome-folding-at-screenlock.service
. No lo ejecute como root o con sudo porque el bloqueo y desbloqueo está vinculado al usuario de su escritorio.systemctl --user start gnome-folding-at-screenlock.service
. No lo ejecute como root o con sudo.- ¡Hecho! Ahora puedes presionar super+ ly bloquear la pantalla cuando estés lejos de la computadora. ¡Las proteínas comenzarán a plegarse de inmediato! Cuando regrese, desbloquee su computadora y el plegado se detendrá inmediatamente.
- Para obtener puntos de bonificación, vaya a GNOME
Settings > Power
y desactive la suspensión automática; de lo contrario, no será posible el plegado extendido. De forma predeterminada, la suspensión ocurre después de 20 minutos de inactividad, esto también detendrá FAH.
Respuesta2
Aquí está mi solución rápida y sencilla, inspirada en la respuesta enhttps://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
Simplemente cambie los valores TIMEOUT_MINUTES
y sleep
a su gusto y luego configúrelo para comenzar al iniciar sesión.
Si xprintidle
no está en su repositorio, como fue mi caso al ejecutar Fedora 37, puede compilarlo desde el código fuente (disponible enhttps://github.com/g0hl1n/xprintidle).