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>
しかし、サービスを開始しても処理が開始されません。クライアントのidle
設定すぐに処理が始まりますが、設定を中程度に下げても、マシンは他の用途にはほとんど使用できなくなりますpower
。Folding@Home がマシンがアイドル状態のときのみ動作することを確認するにはどうすればよいですか?つまり、手動による介入なしに、数分間のアイドル時間後に処理を開始し、アイドル状態でなくなるとすぐに処理を停止する必要があります。
答え1
私もまったく同じ問題を抱えており、クライアントは私のコンピュータがアイドル状態であるとは考えません。結局、画面がロックされているときだけ FAH を再開するスクリプトを作成しました。これは見事に機能しました。こちらで確認できます:
https://github.com/Madoshakalaka/gnome-folding-at-screenlock
リポジトリがダウンした場合にこれを機能させるための完全な手順は次のとおりです。
- このサービスファイルをコピーする
/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
- このシェル スクリプトを にコピーし
/usr/bin/gnome-folding-at-screenlock.sh
、 で実行権限を付与します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
sudo systemctl enable foldingathome && sudo systemctl start foldingathome
まだ行っていない場合は、 を実行してください。スクリプトはfoldingathome
サービスを開始または停止しないことに注意してください。サービスが開始されていることを前提とし、 を介して折りたたみを一時停止/一時停止解除しますFAHClient
。一時停止または一時停止解除は にある構成ファイルに保持されます/etc/foldingathome/config.xml
。- ブラウザのダッシュボードに移動し
http://localhost:7396/
、オプションをいくつか変更します。FAH のアイドル検出に依存しなくなったため、「作業中」オプションにチェックマークを付ける必要があります。また、理想的な電力レベルも設定できます。最後に、「折りたたみを停止」ボタンを押して折りたたみを停止します。これにより、<paused v='true'>
構成ファイルにタグが追加されます (モニターを起動したときにスクリプトが実行するのとまったく同じ処理が実行されます)。 systemctl --user enable gnome-folding-at-screenlock.service
ロックとロック解除はデスクトップ ユーザーに関連付けられているため、root として実行したり、sudo を使用して実行したりしないでください。systemctl --user start gnome-folding-at-screenlock.service
. root または sudo で実行しないでください。- super完了です! これで、コンピューターから離れているときはいつでも、 +を押して画面をロックするだけですl。タンパク質の折りたたみがすぐに始まります! 戻ってきたときにコンピューターのロックを解除すると、折りたたみがすぐに停止します!
- ボーナスポイントとして、GNOME に移動し
Settings > Power
て自動サスペンドをオフにしてください。そうしないと、長時間の折りたたみができなくなります。デフォルトでは、20 分間操作がないとサスペンドが発生し、これにより FAH も停止します。
答え2
これは、私が素早く作った解決策です。https://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
TIMEOUT_MINUTES
およびの値を好みに合わせて変更しsleep
、ログイン時に開始するように設定するだけです。
もしxprintidle
リポジトリにない場合は、私の場合のようにFedora 37を実行していた場合は、ソースからビルドすることができます(https://github.com/g0hl1n/xprintidle)。