分散コンピューティングFolding@home、新型コロナウイルスとの戦いを開始 というのをみて、 CPU リソースが余っている環境でちょっと動かしてみることにしました。

試した環境

  • Ubuntu 18.04.4 LTS (bionic)
  • fahclient_7.5.1_amd64.deb

BOINC?

BOINC だと Debian 公式パッケージがあるのですが、 FAH ON BOINC などによると対応していた時期はあったようですが、今は対応していないようで、 独自クライアントを使う必要があるようです。

ダウンロード

https://foldingathome.org/ の上の Start folding から Alternative Downloads とたどって Debian / Mint / Ubuntu の fahclient をダウンロードします。

演算リソースを提供するだけなら fahcontrol と fahviewer は不要です。

インストール

sudo dpkg -i fahclient_7.5.1_amd64.deb でインストールします。

いつまで動かし続けるかわからないので、 ID はデフォルトの匿名のまま、チームも所属せずに進めました。 passkey は optional ということで未設定のままにしました(fahcontrol などを使うのに必要なのかもしれません)。 power もデフォルトの medium のままにして systemd の CPUQuota で制限することにしました。

autostart は設定すると update-rc.dFAHClient の自動起動が設定されました。

CPU 制限設定

sudo systemctl edit FAHClient.service

[Service]
CPUQuota=30%

という内容の /etc/systemd/system/FAHClient.service.d/override.conf を作成して top で制限されているのを確認したり、 systemctl status FAHClient.serviceoverride.conf も有効になっているのを確認したりしました。

1 コア以上を割り当ててもいいのなら 120% のように 100% を超える値を指定しても良さそうでした。

設定変更

/etc/fahclient/config.xml を変更して再起動すれば良さそうです。

設定反映

反映するのに sudo systemctl stop FAHClient.service して sudo systemctl start FAHClient.service がなぜかプロセスが残っているか何かで失敗することがあったので、 sudo /etc/init.d/FAHClient stop を組み合わせて sudo systemctl start FAHClient.service し直したりしたら うまくいったので、 /etc/init.d/FAHClient から自動生成された FAHClient.service だと systemd に直接対応しているものと比べて、 何かうまく連携できていないところがあるのかもしれません。

パーミッション変更

/var/lib/fahclient/ の中のディレクトリがなぜか other にも write 権限がついていたので、 sudo chmod -R o-w /var/lib/fahclient で修正しました。

configs cores logs log.txt work とあって logswork は後からできていたので、 修正するのは起動後少し待ってからの方が良さそうです。

/etc/default/FAHClient を作って /etc/init.d/FAHClient が実行されている時の umask を調べてみたところ、 ちゃんと 0022 になっていたので、なぜ other の write パーミッションが付いているのかはわかりませんでした。

log.txt などのファイルのパーミッションは正常のようなので、 ディレクトリ作成部分のバグかもしれません。

実行状況確認

tail -n1 /var/lib/fahclient/log.txt で何パーセント進んでいるか表示できます。

詳しいログは cat /var/lib/fahclient/log.txt などで確認できます。

しばらく動かしてみたところ、処理能力に応じて 20 〜 21 分で 1% 進むぐらいの計算量が割り当てられるようです。

fahcontrol と fahviewer

fahclient と並んで用意されていた fahcontrol と fahviewer も VirtualBox の中の環境に入れて試してみました。

fahcontrol を入れると Pause (一時停止) や Finish (現在までの計算結果を送信して停止) などが GUI でできるようになるようです。 (Uninstall にアンインストール前に Finish でアップロードしてほしいと書いてあるので、アンインストールしたり、お試し環境ごとを止めたり消したりする前に Finish しておくと良さそうです。)

fahviewer は世界地図の上に分子構造っぽいのがでてきましたが、よくわかりませんでした。

まとめ

余っている CPU 資源の一部を CPUQuota で制限しつつ、計算しまくるプロセスを動かす設定例として参考になると思います。

今回は folding@home を動かしてみましたが、マイニングを動かすとか、CI を回し続けるとかにも使えそうです。

Disqus Comments

Kazuhiro NISHIYAMA

Ruby のコミッターとかやってます。 フルスタックエンジニア(って何?)かもしれません。 About znzに主なアカウントをまとめました。

znz znz


Published