Folding@Home をアイドル時に実行するにはどうすればよいですか?

Folding@Home をアイドル時に実行するにはどうすればよいですか?

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設定すぐに処理が始まりますが、設定を中程度に下げても、マシンは他の用途にはほとんど使用できなくなりますpowerFolding@Home がマシンがアイドル状態のときのみ動作することを確認するにはどうすればよいですか?つまり、手動による介入なしに、数分間のアイドル時間後に処理を開始し、アイドル状態でなくなるとすぐに処理を停止する必要があります。

答え1

私もまったく同じ問題を抱えており、クライアントは私のコンピュータがアイドル状態であるとは考えません。結局、画面がロックされているときだけ FAH を再開するスクリプトを作成しました。これは見事に機能しました。こちらで確認できます:

https://github.com/Madoshakalaka/gnome-folding-at-screenlock

リポジトリがダウンした場合にこれを機能させるための完全な手順は次のとおりです。

  1. このサービスファイルをコピーする/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. このシェル スクリプトを にコピーし/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
  1. sudo systemctl enable foldingathome && sudo systemctl start foldingathomeまだ行っていない場合は、 を実行してください。スクリプトはfoldingathomeサービスを開始または停止しないことに注意してください。サービスが開始されていることを前提とし、 を介して折りたたみを一時停止/一時停止解除しますFAHClient。一時停止または一時停止解除は にある構成ファイルに保持されます/etc/foldingathome/config.xml
  2. ブラウザのダッシュボードに移動しhttp://localhost:7396/、オプションをいくつか変更します。FAH のアイドル検出に依存しなくなったため、「作業中」オプションにチェックマークを付ける必要があります。また、理想的な電力レベルも設定できます。最後に、「折りたたみを停止」ボタンを押して折りたたみを停止します。これにより、<paused v='true'>構成ファイルにタグが追加されます (モニターを起動したときにスクリプトが実行するのとまったく同じ処理が実行されます)。
  3. systemctl --user enable gnome-folding-at-screenlock.serviceロックとロック解除はデスクトップ ユーザーに関連付けられているため、root として実行したり、sudo を使用して実行したりしないでください。
  4. systemctl --user start gnome-folding-at-screenlock.service. root または sudo で実行しないでください。
  5. super完了です! これで、コンピューターから離れているときはいつでも、 +を押して画面をロックするだけですl。タンパク質の折りたたみがすぐに始まります! 戻ってきたときにコンピューターのロックを解除すると、折りたたみがすぐに停止します!
  6. ボーナスポイントとして、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)。

関連情報