文書の表示以前のリビジョンバックリンク全て展開する/折り畳む文書の先頭へ この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。 ====== FreeBSD 12とFolding@homeで新型コロナウイルス解析に参戦する ====== 流行りに乗じて新型コロナと絡めてみたけど、単にFreeBSD 12でFolding@homeを動かそうっていうお話。 以前にもやったことあったなぁ…とサイト内をあさってみたら、ちょうど14年前だった([[blog:2006:2006-03-27]])。VIA C3のマシンで運用してた記憶。当時はまだportsがなかったけど、記事書いたのが3月、portsが出来たのが8月のようで、振り返ってみるとちょっとの差だったんだなと中々に感慨深い。 しかしあれから14年か…。 ===== 試した環境 ===== * FreeBSD 12.1-RELEASE-p3 * linux_base-c7-7.7.1908_1 * linux-foldingathome-7.5.1.1_1 ===== インストール ===== Folding@homeはFreeBSD用バイナリが用意されていないものの、Linux向けのものがLinuxエミュレータ環境で動く。 portsから入れれば何も難しい事はないが、Linux関連のパッケージがガシガシ入るので、気になる人はjailなりbhyveなりに隔離環境を作ってください。 <code> # portsnap biology/linux-foldingathome </code> 専用ユーザーfahclientが追加されるんだけど、2020-03-29現在、ユーザーDBの更新が正しく行われず有効なユーザーとして認識されないので手動で更新する。''pw''コマンドでfahclientユーザーの情報が表示されればOK。 <code> # pwd_mkdb -p /etc/master.passwd # pw usershow -n fahclient fahclient:*:246:246::0:0:Folding@home User:/nonexistent:/usr/sbin/nologin </code> fahclientユーザーが使えない状態では、「su: unknown login: fahclient」と怒られてサービスとして起動できなかったりする。 ===== Linuxエミュレータの設定 ===== Linuxエミュレータ環境有効化。 <code> # sysrc linux_enable="YES" </code> ''/etc/fstab''に以下を追加。 <code> linprocfs /compat/linux/proc linprocfs rw 0 0 linsysfs /compat/linux/sys linsysfs rw 0 0 tmpfs /compat/linux/dev/shm tmpfs rw,mode=1777 0 0 </code> ここで再起動するか、自前でカーネルモジュールを読み込む&上記FS類をマウントする。 <code> # reboot または # kldload linux64 # mount /compat/linux/proc # mount /compat/linux/sys # mount /compat/linux/dev/shm </code> ===== Folding@homeクライアントの設定 ===== Folding@homeのデフォルトの作業ディレクトリは''/var/db/fahclient''となっており、ここに配置した解析プログラムを実行するようになっている。 ZFS環境の場合、通常''/var/db''以下はexecプロパティがoffでプログラム実行が許可されていない。よってexec=onでFSを作ってしまう。所有者の変更も忘れずに行う事。 もしFS作るのが嫌なら''/usr/local/etc/rc.d/fahclient''をいじって作業ディレクトリの場所を変更すべし。 <code> # zfs create -o exec=on zroot/ROOT/var/db/fahclient # chown -R fahclient:fahclient </code> fahclientの実行ログを見るかぎり、''/usr/local/etc/fahclient/''以下の所有者も変えた方が良さそう。 <code> # chown -R fahclient:fahclient /usr/local/etc/fahclient/* </code> 必要なら /usr/local/etc/fahclient/config.xml のユーザー名とチーム番号を書き換える。 <code> <user value="Decomo"/> <!-- Enter your user name here --> <team value="11743"/> <!-- Your team number --> </code> Folding@homeのデーモン有効化 <code> # sysrc fahclient_enable="YES" </code> Folding@homeデーモンを起動 <code> # service fahclient start </code> ''service fahclient log''でズラズラとログが出たり、topでFAHClient/FahCore_xxあたりのプロセスが動いてれば解析が行われている。 ===== トラブルシューティング ===== ==== アプリケーション起動 ==== デーモンではなく単発アプリケーションとして起動したい場合は、以下のようにする。 <code> # /usr/local/bin/FAHClient --config=/usr/local/etc/fahclient/config.xml </code> ==== CPU割り当ての最適化 ==== Foldgin@homeはFolding slot単位でWUの割り当てを行うが、標準では1スロットに全CPUスレッドを割り当てる構成となっている。そしてスロットの処理能力に適したWUが割り当てられるっぽいが、多コアCPUの場合これが徒となり、WUが降ってこない原因ともなるようだ。 そんな時は、あえて4スレッド程度のスロットを複数個作った方が、効果的にWUの割り当てが行われるっぽい。 <code> <config> ... <!-- Folding Slots --> <!-- 8C/16TのCPUで4スレッド×4スロットにする --> <slot id='0' type='CPU'> <cpus v='4'/> </slot> <slot id='1' type='CPU'> <cpus v='4'/> </slot> <slot id='2' type='CPU'> <cpus v='4'/> </slot> <slot id='3' type='CPU'> <cpus v='4'/> </slot> </config> </code> ===== 参考サイト ===== * [[https://foldingathome.org/|olding@home – Fighting disease with a world wide distributed super computer.]] freebsd/freebsd_12_install_foldingathome.txt 最終更新: 2020-03-29 11:25by Decomo