IT pass HikiWiki - [Memo2008]BOINCのテスト(納多) Diff
- Added parts are displayed like this.
- Deleted parts are displayed
like this.
以下の情報は古い可能性があります.
最新の情報は
((<URL:https://epa.scitec.kobe-u.ac.jp/~gridcomp/hiki/hiki.cgi>))
をご覧ください.
昔の作業ログを編集中.
{{toc_here}}
= 080814 (BOINC クライアントの利用法)
BOINC を使ってみる.
まずはクライアントを使ってみる.
以下のページを参照のこと.
BOINCに参加して世界史に名を残そう!
((<URL:http://www.geocities.jp/asamayamanobore/BOINC/boinctop.html>))
== BOINC クライアントの導入
ここでは手元のノート PC にクライアントを導入してみる.
((<URL:http://boinc.berkeley.edu/download.php>))
よりクライアントをダウンロード.
バージョンは 5.10.45 であった.
インストーラを起動し, 他のソフトと同じように進んでいく.
Setup Type は推奨されている 'Single-User Installation' を選択.
試験的に使うだけなので, スクリーンセーバとログオン時起動については
チェックボックスを外しておく.
インストール終了とともに起動させる.
== プロジェクトに参加する
'Attach to project' のウィザードが出る.
'Choose a project' の画面が出る. 参加可能なプロジェクトが一覧されている.
ここでは 'Tanpaku' を選択してみる.
すると「プロジェクトの URL」が自動的に埋められる.
サーバと通信する. 少し待つ.
「現在このプロジェクトは新規登録を受け付けていません」とのこと.
仕方がないので別を探す.
画面戻って, こんどは SETI@home を選択する.
初回参加時はアカウントを取得する必要がある.
「いいえ、新しく参加します」にチェックを入れる.
メールアドレスとパスワードを入力する.
サーバと通信する. 少し待つ.
「このプロジェクトに計算機を参加させることに成功しました」と表示される.
== 設定を変更する
インストール直後の画面 (Simple View) の場合,
画面一番下に 'Preferences' を選択する.
"I want to customize my preferences for this computer only." にチェックを入れる.
あまり多く資源を使われたくないのと, ノート PC で熱が心配ということもあって
disk は 10 GB -> 1 GB, CPU は 100 % -> 30 % に変更した.
== 詳しい計算状況を知る
詳しい計算状況を知りたい場合は, 'Advanced View' を選択する.
= 080815 (サーバの導入. 失敗)
この日の作業は後に繋がらないので, 読み飛ばすことをお薦めする.
== サーバを使う練習
BOINC in Japanese
((<URL:http://boinc.oocp.org/indexj.php>))
から原文としてリンクされていた
公式 Wiki とおぼしきページ
Computing with BOINC
((<URL:http://boinc.berkeley.edu/trac/wiki/ProjectMain>))
を参考にした.
上から順に読んでいってみる.
Quick Start
((<URL:http://boinc.berkeley.edu/trac/wiki/QuickStart>))
によると,
VMWare player 上で動く 'BOINC virtual server' が配布されているとのこと.
リンク先の
The BOINC server virtual machine
((<URL:http://boinc.berkeley.edu/trac/wiki/VmServer>))
のページから
((<URL:http://boincdl.ssl.berkeley.edu/dl/debian-40r0-boinc-server_15762.zip>))
をダウンロードし(約 800 MB あった),
解凍し, VMWare player 上で起動してみる.
仮想マシン名は 'debian-40r0-boinc-server' である.
この仮想マシン, なんだか変である.
まず, 最初の起動ではいきなり boincadm ユーザでログインされた状況である.
上で ls などのコマンドを実行された跡もある.
VMWare のダイアログでデバイスが見つからないというエラーも.
ネットワークがつながらないので apt-get もできない.
ひとまずログアウトする.
The BOINC server virtual machine
((<URL:http://boinc.berkeley.edu/trac/wiki/VmServer>))
のページに戻り, 言われるとおりに環境を修正してみる.
ここでは Bridged Ethernet の設定を見ている.
まず root でログインする. ちなみに初期パスワードは上記の
ページ内に書いてある.
以下のファイルを削除せよとのこと.
/etc/udev/rules.d/rules.d/z25_persistent-net.rules
中をのぞいてみると, ネットワークに関するデバイスの MAC アドレスらしきもの
が書いてある.
ちなみに less が入っていないので不便. 仕方ないので more で読んだ.
# cd /etc/udev/rules.d/rules.d/
# mv z25_persistent-net.rules z25_persistent-net.rules.org
とりあえずこれで削除したことにする.
ping を外に向けて打ってみたが, "unknown host" とメッセージが出る.
名前が解決できないもよう.
/etc/resolv.conf にて nameserver が知らない IP アドレスになっている.
vi で編集したところ, うまく保存できない. 終了すらできない.
"E20: Mark not set" というメッセージが画面下部に出るのみ.
キーボードの設定が英語になっていたため, ':' を入力したつもりが
別の文字になっていたのでコマンドが通らなかったことが判明.
/etc/network/interface について,
現時点では自宅で DHCP でつないでいるので
#iface eth0 inet dhcp
のコメントアウトを外した.
もちろん, 実際に運用する際は固定 IP であったほうがよい.
(ページにもあるが, IP アドレスの変更によりクライアントが混乱するため)
他の設定については, 今は固定 IP ではないため, 消去する).
うまくつながらない.
ネットワークの勉強が足りないようだ.
参照している
The BOINC server virtual machine
((<URL:http://boinc.berkeley.edu/trac/wiki/VmServer>))
のページではネットワークの設定について以下が挙げられていた.
Debian Reference Chapter 10 - Network configuration
((<URL:http://www.debian.org/doc/manuals/reference/ch-gateway.en.html>))
一般的すぎる, かつ量が多すぎるが,
ネットワークの勉強ということで読むことにする (実習の復習もせねば).
ちなみに自分で一から作る場合は, 以下が参考になりそうだ.
依存するアプリケーションのリストなどもある.
また, Debian 4.0 での実行例でもある.
Setting up a BOINC server
((<URL:http://boinc.berkeley.edu/trac/wiki/ServerIntro>))
= 080817 (編集中)
編集中.
= 080819 (サーバの導入. 失敗)
この日の作業は後に繋がらないので, 読み飛ばすことをお薦めする.
== QuickStart
Quick Start をやってみる.
Quick Start
((<URL:http://boinc.berkeley.edu/trac/wiki/QuickStart>))
VMWare player 上で debian-40r0-boinc-server を起動.
ユーザ boincadm でログイン.
$ cd ~/boinc/tools
$ ./make_project --url_base http://127.0.0.1 --test_app test
質問には全て 'y' で答えた.
途中でエラーが出たようだが, そのまま進んでみる.
~/project 以下にファイル, ディレクトリができている.
$ cd ../../projects/test
以下のコマンドが打てない (test.httpd.conf がない)
$ sudo cat test.httpd.conf >> /etc/apache2/httpd.conf
== apache2 の導入練習
手元マシン内の cygwin 上で構築練習してみる.
(本当は研究室の自分のマシンや VMWare 上の Ubuntu がよいのだが,
このときは利用できない環境にあった)
「apache 入門」で検索.
Debian Apache入門
((<URL:http://www2.i-e-c.co.jp/intro0.html>))
cygwin 上で apache のパッケージをインストールする.
サービスを起動しようとしたところ /etc/init.d が存在しない.
cygwin 特有の事情か.
「apache cygwin」で検索.
Cygwin 環境で Apache を動かす
((<URL:http://www.asahi-net.or.jp/~pm5m-on/it/net/apache/>))
$ cd /etc/apache2
$ cp httpd.conf httpd.conf.org
httpd.conf の
#ServerName www.example.com:80
を
ServerName localhost:80
に書き換える.
$ /usr/sbin/apachectl2 start
/usr/sbin/apachectl2: line 78: 1568 Bad system call $HTTPD -k $ARGV
$ /usr/sbin/httpd2 -k start
Bad system call
手詰まり.
手動でインストールしてみる.
本家のドキュメントを参考にした.
Apache HTTP サーバ バージョン 2.2 ドキュメント - Apache HTTP サーバ
((<URL:http://httpd.apache.org/docs/2.2/>))
$ cd /usr/local
$ mkdir src
$ cd src
$ wget http://ftp.riken.jp/net/apache/httpd/httpd-2.2.9.tar.gz
$ tar zxfv httpd-2.2.9.tar.gz
$ cd httpd-2.2.9
$ ./configure --prefix=/usr/local/apache2
$ make
$ make install
$ cd /usr/local/apache2/conf
$ cp httpd.conf httpd.conf.org
httpd.conf の
#ServerName www.example.com:80
を
ServerName localhost:80
に書き換える.
$ cd ../bin
$ ./apachectl -k start
httpd: bad user name daemon
httpd.conf の
User daemon
Group daemon
を
User noda
Group noda
に書き換える. これも cygwin 特有の事情.
$ ./apachectl -k start
httpd: bad group name noda
どうすればよいか?
「apache bad user name」で検索.
LunaTear: CygwinにApache2→失敗
((<URL:http://lunatear.net/archives/000331.html>))
を参考に,
Group SYSTEM
とする.
$ ../bin/apachectl -k start
特にメッセージなし.
Firefox で http://localhost/ を開いても開けない.
cygwin 上で w3m を使って開いても開けない (Google などは開けた).
= 080820 (参考文献)
== 参考文献
「BOINC 研究」で検索したところ,
BOINC を扱った論文の日本語訳のページを発見したのでメモ.
BOINC: A System for Public-Resource Computing and Storage (in Japanese)
((<URL:http://boinc.oocp.org/grid_paper_04.html>))
「2.1 BOINC の目標」より一部引用.
つまり, 実現しているかどうかは分からない.
「
BOINC は、科学研究者がほどほどのコンピュータスキルだけで、大きなパブリック・リソース・コンピューティングのプロジェクトを立ち上げ、運用ができるようにします。 立ち上げ初期に必要な仕事は1週間程度、保守には、週あたり1時間程度でできるようにするのが目標です。 BOINC を使って作ったプロジェクトのサーバは、1台ですませることも可能です。 そのサーバで使うソフトウエアは、普及しているオープンソースのソフトウエア (Linux, Apache, PHP,MySQL, Python)です。
」
「科学研究者が」
「立ち上げ初期に必要な仕事は1週間程度、保守には、週あたり1時間程度でできる」
「のが目標」
というところが本当なら素晴らしいと思う (プロジェクトを作る側として).
= 080821
== 基本方針
しばらくは研究室の自分のマシンだけでテスト.
以下の役割を持たせることにする.
* fermat (CPU: Core 2 Duo E6750 (2.66 GHz), HDD: 500 GB, OS: debian Linux 4.0)
* サーバとしてテスト
* mersenne (CPU: Athlon 64 3800+ (2.4 GHz), HDD: 80 GB, OS: debian Linux 4.0)
* クライアントとしてテスト
ちなみに理由は HDD の大きさ.
計算結果ファイルが集結するサーバの HDD は大きいほうがよいだろう.
== BOINC サーバ構築
fermat にサーバを構築する.
以下のページ (BOINC 本家の Wiki) を参考にしながら作業する.
ServerIntro - BOINC - Trac
Cookbook for Debian 4.0
((<URL:http://boinc.berkeley.edu/trac/wiki/ServerIntro#cookbook-debian40>))
偶然にも debian 上での構築方法. スムーズに作業できることを期待.
=== パッケージ導入
ServerIntro - BOINC - Trac
((<URL:http://boinc.berkeley.edu/trac/wiki/ServerIntro#cookbook-prereq>))
を参考に, apt-get install でパッケージを導入する.
実験として, パッケージにバージョン名らしき数字が記入してあるものは省略した.
たとえば automake1.9 を入れるように書いてあったが,
automake と指定した. すると automake1.10 が入った.
* サーバ, クライアントに共通で必要なパッケージ
m4
make
autoconf
automake
gcc
pkg-config
libtool
subversion
vim
* サーバに必要なパッケージ
apache2-mpm-prefork
libapache2-mod-php5
mysql-client
mysql-server
php5-mysql
php5-cli
php5-gd
phpmyadmin
python-mysqldb
libmysql++-dev
libssl-dev
=== BOINC 用アカウントの作成
適当なユーザでログイン.
$ sudo useradd -m -s /bin/bash boincadm
-m はホームディレクトリを作成する, -s はシェルを指定するオプション.
adduser と違って何も聞かれなかった.
/home/boincadm が出来ていることも確認.
$ sudo usermod -G boincadm www-data
ユーザ www-data の所属するグループ名一覧を確かめる.
$ groups www-data
www-data : www-data boincadm
上記のコマンド usermod 〜 で
www-data が boincadm グループに加わっていることが分かる.
ユーザ boincadm でログインし直す.
以降の作業は, 特に明示しない限りユーザ boincadm で行う.
=== MySQL サーバの設定
MySQL については以下のページも参考にした:
コマンドによるMySQL管理テクニック(1/2) @IT
((<URL:http://www.atmarkit.co.jp/flinux/rensai/mysql03/mysql03.html>))
まず, MySQL の root パスワードを設定する.
最初は root にパスワードが設定されていないので, -p オプションは不要である.
$ mysqladmin -h localhost -u root password mysqlrootpw
これで MySQL 内の root のパスワードが 'mysqlrootpw' に設定された.
ちなみに, パスワードを再設定する場合は上記ではだめである.
例として, root のパスワードを 'hogehoge' に変更したい場合は
$ mysqladmin -h localhost -u root password hogehoge -p
と, -p オプションをつける.
このコマンドを入力すると (古いほうの) パスワードの入力が促される.
次に, MySQL にユーザ boincadm を作る.
$ mysql -h localhost -u root -p
と入力した場合 (MySQL のコマンドを省略した場合),
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 25
Server version: 5.0.32-Debian_7etch6-log Debian etch distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
というプロンプトが現れる.
以下のように入力する.
mysql> grant all on *.* to 'boincadm'@'localhost'; # 権限の設定
Query OK, 0 rows affected (0.00 sec)
mysql> set password for 'boincadm'@'localhost'=''; # パスワードの設定
Query OK, 0 rows affected (0.00 sec)
BOINC wiki 内の記述によると,
"The permissions can be limited to project database only, later;
Defining an empty password simplifies the installation, can be changed later."
とある.
=== wxWidgets library のインストール
自分で BOINC client をビルドしたい場合に必要とのこと.
debian パッケージは apt-get install boinc-client でインストール可能.
今回はパス.
=== BOINC ソースコードのダウンロード
BOINC ソースコードの最新の開発版を subversion で取得する.
$ cd ~
$ svn co http://boinc.berkeley.edu/svn/trunk/boinc boinc_trunk
初回は全部をダウンロードするので時間がかかる. 気長に待つ.
10 分程度で完了した.
最後の行に以下の表示が現れた.
Checked out revision 15915.
~/boinc_trunk ディレクトリができていることを確認.
du -m コマンドによると全部で 251 MB あった.
ちなみに次回以降,
内容を最新版に更新したい場合は以下のコマンドを入力するとのこと.
$ cd ~/boinc_trunk
$ svn update
また, クライアントの安定版を取得したい場合は
以下のコマンドを入力するとのこと. 実際にはやっていない.
(以下の場合は ver. 5.9.5 が取得される?)
$ cd ~
$ svn co http://boinc.berkeley.edu/svn/tags/boinc_core_release_5_9_5/boinc boinc_595
=== ソースのコンパイル
BOINC のコンパイルを行う.
$ cd ~/boinc_trunk
$ ./_autosetup
Bootstrapping configure script and makefiles:
Checking version of 'make' >= 379... succeeded. (381)
Checking version of 'm4' >= 104... succeeded. (104)
Checking version of 'pkg-config' >= 15... succeeded. (21)
Checking version of 'autoconf' >= 258... succeeded. (261)
Checking version of 'automake' >= 108... succeeded. (110)
aclocal -I m4 && autoheader && automake && autoconf
doc/manpages/Makefile.am:21: `%'-style pattern rules are a GNU make extension
Done, now run ./configure
./configure -C to enable caching
$ ./configure --disable-client
config.log を覗いたところ, コンパイラに gcc, g++ を選択していた.
このマシンには icc が入っているので高速化ができるかもしれないと思う.
とりあえず wiki の説明のまま進む.
$ make
== BOINC Quick start
以下のページを参考にする.
Quick start
((<URL:http://boinc.berkeley.edu/trac/wiki/QuickStart>))
さきほど構築した BOINC のあるディレクトリに行く.
$ cd ~/boinc_trunk
$ cd tools
テストプロジェクトを作ってみる.
wiki にある通り, 質問には全て 'y' で答える.
$ ./make_project --url_base http://133.30.109.91 --test_app test
Creating project 'test' (short name 'test'):
PROJECT_ROOT = /home/boincadm/projects/test/
URL_BASE = http://133.30.109.91/
HTML_USER_URL = http://133.30.109.91/test/
HTML_OPS_URL = http://133.30.109.91/test_ops/
CGI_URL = http://133.30.109.91/test_cgi/
KEY_DIR = /home/boincadm/projects/test/keys/
DB_NAME = test
DB_HOST =
Continue? [Y/n] y
Setting up server: creating directories
Keys don't exist in /home/boincadm/projects/test/keys/; generate them? [Y/n] y
Setting up server files: linking cgi programs Done installing default daemons.
Traceback (most recent call last):
File "./make_project", line 292, in ?
shutil.copy('../samples/example_app/uc2', filepath)
File "/usr/lib/python2.4/shutil.py", line 81, in copy
copyfile(src, dst)
File "/usr/lib/python2.4/shutil.py", line 47, in copyfile
fsrc = open(src, 'rb')
IOError: [Errno 2] No such file or directory: '../samples/example_app/uc2'
エラーが出ている!?
$ cd ~/projects/test
sudo cat test.httpd.conf >> /etc/apache2/httpd.conf をせよとのことだが,
test.httpd.conf が存在しないのでできない.
仕方がないので, make_project を覗いてみる.
292 行目にエラーに関連する記述を発見.
shutil.copy('../samples/example_app/uc2', filepath)
== BOINC 構築 (再)
開発版を使ったのがつまづきのもとかもしれないと思い,
安定版 (?) のソースコードを持ってくることにする.
以下のページを参考にする.
SourceCode - BOINC - Trac
((<URL:http://boinc.berkeley.edu/trac/wiki/SourceCode>))
$ cd ~
$ svn co http://boinc.berkeley.edu/svn/trunk/boinc
=== ソースのコンパイル
BOINC のコンパイルを行う.
$ cd ~/boinc
$ ./_autosetup
$ ./configure --disable-client
$ make
=== テストプロジェクトの構築
$ cd ~/boinc/tools
$ ./make_project --url_base http://133.30.109.91 --test_app test
既に 'test' というデータベースがあるので駄目だというエラーが出る.
$ ./make_project --url_base http://133.30.109.91 --test_app test2
先ほど boinc_track でやったのと同じエラーが出る.
make_project をいじってみる.
$ cp make_project make_project.org
292 行目にエラーに関連する記述を発見.
~/boinc/samples/example_app/ の中身を参考に
shutil.copy('../samples/example_app/uc2', filepath)
を
shutil.copy('../samples/example_app/uc2.C', filepath)
と書き換えてみる. (他にも候補としては uc2.c などがある)
$ ./make_project --url_base http://133.30.109.91 --test_app test4
(省略)
Setting up server files: linking cgi programs Done installing default daemons.
Done installing files. Please view
/home/boincadm/projects/test4/test4.readme
for important additional instructions.
とりあえず成功したようだ
(上記の書き換えが uc2.C で合っているかは不明. 追々分かるだろうけど)
$ cd ~/projects/test4
test4.readme の中身は Quick Start のとだいたい同じ.
ただし変数は今回のプロジェクト用の値に置き換わっている.
test4.http.conf を発見. 以下に引用する.
## Settings for BOINC project test4
Alias /test4 /home/boincadm/projects/test4/html/user
Alias /test4_ops /home/boincadm/projects/test4/html/ops
ScriptAlias /test4_cgi /home/boincadm/projects/test4/cgi-bin
# Note: projects/*/keys/ should NOT be readable!
<Directory "/home/boincadm/projects/test4/html">
Options Indexes FollowSymlinks MultiViews
AllowOverride AuthConfig
Order allow,deny
Allow from all
</Directory>
<Directory "/home/boincadm/projects/test4/cgi-bin">
Options ExecCGI
AllowOverride AuthConfig
Order allow,deny
Allow from all
</Directory>
=== Quick Start (再)
では, 再度挑戦.
$ cd ~/projects/test4
$ sudo -s
# cat test.httpd.conf >> /etc/apache2/httpd.conf
# apache2ctl -k restart
apache2: Could not reliably determine the server's fully qualified domain name,
using 127.0.0.1 for ServerName
大丈夫か?
http.conf にて ServerName を指定するとこの警告は出ない.
# exit
$ crontab test4.cronjob
$ ./bin/xadd
以下は wiki の通り, 全部 'y' と答えておく.
$ ./bin/update_versions
Found <App#1 uppercase> version 101 for <Platform#3 i686-pc-linux-gnu>: upperc
ase_1.1_i686-pc-linux-gnu
SECURITY WARNING:
=================
You have not provided a signature file for /home/boincadm/projects/test4/apps/up
percase/uppercase_1.1_i686-pc-linux-gnu/uppercase_1.1_i686-pc-linux-gnu.
I can generate one now, but this is highly unrecommended. Generating code
signatures on network-connected computers is a security vulnerability, and
should not be done for publicly-accessable projects.
Continue with automatically generating a code signature? [y/N] y
Signing /home/boincadm/projects/test4/apps/uppercase/uppercase_1.1_i686-pc-linux
-gnu/uppercase_1.1_i686-pc-linux-gnu
Copying uppercase_1.1_i686-pc-linux-gnu to /home/boincadm/projects/test4/downloa
d/uppercase_1.1_i686-pc-linux-gnu
Ready to commit 1 items:
<AppVersion#None uppercase 101 i686-pc-linux-gnu>
Continue [Y/n] y
Committed:
<AppVersion#1 uppercase 101 i686-pc-linux-gnu>
Touched trigger file to make feeder re-read app_version table from database
Done
$ ./bin/start
Traceback (most recent call last):
File "./bin/start", line 717, in ?
if lock_file(start_lockfile):
File "./bin/start", line 295, in lock_file
file = open(filename,'w')
IOError: [Errno 13] Permission denied: '/home/boincadm/projects/test4/pid_fermat/start.lock.fermat'
You have mail in /var/mail/boincadm
/home/boincadm/projects/test4/pid_fermat/ などが何故か root の持ち物になって
いたので boincadm の持ち物に直す.
$ ./bin/start
Entering ENABLED mode
Starting daemons
Starting daemon: feeder -d 3
Starting daemon: transitioner -d 3
Starting daemon: file_deleter -d 3
Starting daemon: sample_work_generator -d 3
Starting daemon: sample_bitwise_validator -d 3 -app uppercase
Starting daemon: sample_assimilator -d 3 -app uppercase
ブラウザで http://fermat.epa.scitec.kobe-u.ac.jp/test4/ を
見てみたところ, php が動作せず, ファイルをダウンロードするように
なってしまっている.
「debian php 表示できない」の検索を経由して,
「LoadModule php5_module」を検索.
2.2 PHPの環境設定
((<URL:http://www.yc.musashi-tech.ac.jp/~yamada/doc/win_php/0202.html>))
ApacheにPHPモジュールを組み込む
LoadModule php5_module modules/libphp5.so
"*.php"拡張子とPHPを関連づける
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
DirectoryIndex に "index.php" を追加.
DirectoryIndex index.html index.php
modules/libphp5.so が見つからないと怒られる.
仕方なくコメントアウトしてから apache2 を再起動.
$ sudo /etc/init.d/apache2 restart
症状は変わらず.
結局, libapache2-mod-php5 をインストールし忘れていたので原因のようだ.
インストールしてから apache2 を再起動.
ブラウザで http://fermat.epa.scitec.kobe-u.ac.jp/test4/ に
アクセスするとページが表示された.
ページが部分的に日本語になっているのが気持ち悪い.
Windows XP のクライアントでプロジェクトのページとして
上記のページを選択しても, アカウントが作れた.
ためしに Windows XP 上から参加してみる.
以下, BOINC Manager のログ.
2008/08/21 20:29:05||Fetching configuration file from http://fermat.epa.scitec.kobe-u.ac.jp/test4/get_project_config.php
2008/08/21 20:29:13||Fetching configuration file from http://fermat.epa.scitec.kobe-u.ac.jp/test4/get_project_config.php
2008/08/21 21:16:16||Fetching configuration file from http://fermat.epa.scitec.kobe-u.ac.jp/test4/get_project_config.php
2008/08/21 21:18:32||Fetching configuration file from http://fermat.epa.scitec.kobe-u.ac.jp/test4/get_project_config.php
2008/08/21 21:18:59|test4|Master file download succeeded
2008/08/21 21:19:04|test4|Sending scheduler request: Project initialization
2008/08/21 21:19:04|test4|Requesting 1 seconds of new work
2008/08/21 21:19:09|test4|Scheduler RPC succeeded [server version 603]
2008/08/21 21:19:09|test4|You used the wrong URL for this project
2008/08/21 21:19:09|test4|The correct URL is http://133.30.109.91/test4/
2008/08/21 21:19:09|test4|Using the wrong URL can cause problems in some cases.
2008/08/21 21:19:09|test4|When convenient, detach this project, then reattach to http://133.30.109.91/test4/
2008/08/21 21:19:09|test4|Message from server: No work sent
2008/08/21 21:19:09|test4|Message from server: upperCASE is not available for your type of computer.
2008/08/21 21:19:09|test4|Deferring communication for 1 min 0 sec
2008/08/21 21:19:09|test4|Reason: no work from project
2008/08/21 21:20:09|test4|Sending scheduler request: To fetch work
2008/08/21 21:20:09|test4|Requesting 2302 seconds of new work
2008/08/21 21:20:14|test4|Scheduler RPC succeeded [server version 603]
2008/08/21 21:20:14|test4|You used the wrong URL for this project
2008/08/21 21:20:14|test4|The correct URL is http://133.30.109.91/test4/
2008/08/21 21:20:14|test4|Using the wrong URL can cause problems in some cases.
2008/08/21 21:20:14|test4|When convenient, detach this project, then reattach to http://133.30.109.91/test4/
2008/08/21 21:20:14|test4|Message from server: No work sent
2008/08/21 21:20:14|test4|Message from server: upperCASE is not available for your type of computer.
2008/08/21 21:20:14|test4|Deferring communication for 1 min 0 sec
2008/08/21 21:20:14|test4|Reason: no work from project
要は, 「コンピュータとワークの内容があわないので仕事はない」ということ.
確かに Quick Start 内には
"run the BOINC client on a Linux computer" とはある.
= 080822
== Linux client のインストール
BOINC の client として運用する mersenne に
BOINC client をインストールする.
$ ssh mersenne
apt-get でインストールしてみる.
$ sudo apt-get install boinc-client
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
提案パッケージ:
boinc-app-seti boinc-manager kboincspy
以下のパッケージが新たにインストールされます:
boinc-client
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
340kB のアーカイブを取得する必要があります。
展開後に追加で 791kB のディスク容量が消費されます。
取得:1 http://cdn.debian.or.jp etch/main boinc-client 5.4.11-4 [340kB]
340kB を 0s で取得しました (406kB/s)
パッケージを事前設定しています ...
未選択パッケージ boinc-client を選択しています。
(データベースを読み込んでいます ... 現在 88031 個のファイルとディレクトリがイン
ストールされています。)
(.../boinc-client_5.4.11-4_i386.deb から) boinc-client を展開しています...
boinc-client (5.4.11-4) を設定しています ...
Starting BOINC core client: boinc_client.
以下の 1 行が気になる.
Starting BOINC core client: boinc_client.
どうやって止めればいいのか? あちこち見ると
$ boinc_cmd --quit
でよいらしいが, 'Authorization failure: -155' と言われて駄目だった.
仕方ないので
$ sudo /etc/init.d/boinc-client stop
としておいた.
「apt-get boinc」で検索.
玄箱でseti@homeに参加する その2 - きょうのかんぱぱ
((<URL:http://d.hatena.ne.jp/kanpapa/20070407/1175902621>))
止めるのは後にして (最悪の場合パッケージを remove すればいい),
上のページを参考に,
とりあえずプロジェクトに参加してみる.
$ boinc_cmd --host localhost --project_attach
Authorization failure: -155
動かない. help を見る.
$ boinc_cmd --help | less
再度挑戦.
'********' は各ユーザに配布された固有の番号.
$ boinc_cmd --host localhost --project_attach http://setiathome.berkeley.edu ********
Authorization failure: -155
sudo を付加しても同じ.
よくわからない.
話がそれるが, boinc 関係のパッケージを調べてみる.
$ sudo apt-cache search boinc
boinc-app-seti - SETI@home application for the BOINC client
boinc-client - core client for the BOINC distributed computing infrastructure
boinc-dev - development files to build applications for BOINC projects
boinc-manager - GUI to control and monitor the BOINC core client
kboincspy - monitoring utility for the BOINC client
kboincspy-dev - development files for KBoincSpy plugins
client だけだと seti しか参加できないのか?
話を戻す.
使い勝手を良くするため, BOINC Manager も入れる.
$ sudo apt-get install boinc-manager
$ boincmgr
Error: Unable to initialize gtk, is DISPLAY set properly?
GUI の画面が必要ということか.
X で画面を飛ばすようにしたが,
Manager の画面をクリックすると落ちる.
cygwin の X がいけないのか?
== Linux client のインストール(再)
debian パッケージに頼るのは一旦やめておく.
一旦アンインストールする.
$ sudo apt-get remove boinc-manager boinc-client
以下を参考にする.
Release Notes
((<URL:http://boinc.berkeley.edu/trac/wiki/ReleaseNotes>))
適当なディレクトリを作って入る
$ cd ~
$ mkdir boinc
$ cd boinc
本家ダウンロードページ
Download BOINC client software
((<URL:http://boinc.berkeley.edu/download_all.php>))
から Linux x86 用のインストールスクリプトをダウンロード
$ wget http://boincdl.ssl.berkeley.edu/dl/boinc_6.2.15_i686-pc-linux-gnu.sh
$ sh boinc_6.2.15_i686-pc-linux-gnu.sh
use /home/noda/boinc/BOINC/run_manager to start BOINC
$ cd BOINC
$ cat run_manager
cd "/home/noda/boinc/BOINC" && exec ./boincmgr $@
$ ./run_manager
./boincmgr: error while loading shared libraries: libXcomposite.so.1: cannot open shared object file: No such file or directory
必要なパッケージの導入を忘れていた.
=== 依存するパッケージの導入
以下のページを参照
ServerIntro - BOINC - Trac
((<URL:http://boinc.berkeley.edu/trac/wiki/ServerIntro>))
mersenne にて client を動かすため
以下のパッケージを導入する:
* 共通パッケージ
m4
make
autoconf
automake
gcc
g++
pkg-config
libtool
subversion
vim
* client に必要なパッケージ
libssl-dev
libglut3-dev
glutg3-dev
libglui-dev
libglitz-glx1-dev
libsdl1.2-dev
libcurl3-dev
freeglut3
freeglut3-dev
libsm-dev
libice-dev
libxmu-dev
libxi-dev
libx11-dev
libjpeg62-dev
libgtk2.0-0
libgtk2.0-0-dev が見つからない.
代わりに libgtk2.0-dev を入れておく.
== Linux client のインストール(3)
再度実行.
$ cd ~/boinc/BOINC
$ ./run_manager
./boincmgr: error while loading shared libraries: libXcomposite.so.1: cannot open shared object file: No such file or directory
症状変わらず.
$ sudo apt-get install libxcomposite-dev
$ ./run_manager
./boincmgr: /lib/tls/i686/cmov/libc.so.6: version `GLIBC_2.4' not found (required by ./boincmgr)
apt-get では glibc-2.3.6-2 がある.
代わりにこれを選択すると, その代わりに libc6 が選択された.
libc6 は既にインストールされている.
古い安定版である ver. 5.10.45 を入れてみる.
(さっき入れたのは ver. 6.2.15)
$ cd ~/boinc
$ rm -r BOINC
$ wget http://boincdl.ssl.berkeley.edu/dl/boinc_ubuntu_5.10.45_i686-pc-linux-gnu.sh
'ubuntu' の記述が気になるがそのまま進む.
$ sh boinc_ubuntu_5.10.45_i686-pc-linux-gnu.sh
$ ./run_manager
さっきと同じ症状.
'Older Linux x86 and x64' の ver. 6.2.15 を試す.
$ wget http://boincdl.ssl.berkeley.edu/dl/boinc_compat_6.2.15_i686-pc-linux-gnu.sh
$ sh boinc_compat_6.2.15_i686-pc-linux-gnu.sh
use /home/noda/boinc/BOINC/run_client to start BOINC
manager がないバージョンのようだ.
$ ./run_client
ログが流れていく. とりあえず走った.
kill で一旦強制終了.
SETI@home を走らせてみる.
$ ./boinc_cmd --project_attach http://setiathome.berkeley.edu ********
connect: Connection refused
can't connect to local host
$ ./run_client &
ログが標準出力で流れてしまうが, ここは我慢.
$ ./boinc_cmd --project_attach http://setiathome.berkeley.edu ********
SETI@home につながる.
ベンチマークが走る. 結果は以下の通り.
22-Aug-2008 20:14:22 [---] 1372 floating point MIPS (Whetstone) per CPU
22-Aug-2008 20:14:22 [---] 2780 integer MIPS (Dhrystone) per CPU
その後, SETI@home のジョブをもらってきたようだ.
別の端末画面を開き top してみると,
優先度が 19 (つまり最低) になっている.
CPU 稼働率は最高で 66 % くらい. シングルコアなのに何故?
それにしても, 画面がうるさい.
どこかにリダイレクトするよう設定しておくべきだろう.
preferences 設定はどこでいじるのか? と思ってディレクトリ内を見回す.
どうやら,
global_prefs.xml
がそれのようだ.
一旦終了する.
$ ./boinc_cmd --quit
global_prefs.xml 内の cpu_usage_limit の値を 60.0 から 100.0 に書き換え,
再起動する. ログの出力をファイルにする.
$ ./run_client > log_client.txt &
top すると, 今度は seti が 100 % 稼動していた.
preference の設定ファイルであることを確信.
今度は daemon モードで起動してみる.
$ ./run_client --daemon
コマンドで, バックグラウンドであることを明示しなくてもよい.
終了するときはさっきと同じく
$ ./boinc_cmd --quit
でよい.
走らせた後, 手元にファイル stdoutdae.txt, stderrdae.txt ができていた.
最低限の使い方は分かった.
実用的には, ユーザがログアウトしても動き続けるようにしなくてはならない.
== テストプロジェクトの動作確認
昨日, 自分で作ったプロジェクトのページ
http://fermat.epa.scitec.kobe-u.ac.jp/test4/
の "Your account" のページに行くと,
(自分で発行した覚えはないのに)
accout key が載っている.
この key を使って
mersenne にある client から fermat のジョブを取得してみる.
mersenne にてクライアントを起動する.
daemon モードではログの見方が分からないので手元のファイルに出力するようにする.
$ cd boinc/BOINC
$ ./run_client > log_client.txt
プロジェクトに参加する.
$ ./boinc_cmd --project_attach http://fermat.epa.scitec.kobe-u.ac.jp/test4/ \
********
top で CPU 使用率を見ていたが, 一向に現れない (SETI しか走っていない).
ログを見たところ,
22-Aug-2008 20:57:31 [test4] Message from server: Server error: can't attach shared memory
とあった.
projects/fermat.epa.scitec.kobe-u.ac.jp_test4 以下を見る.
ファイルが 2 つあった.
* uc_1219316705_10
* uppercase_1.1_i686-pc-linux-gnu (実行属性あり)
ファイル 'uc_1219316705_10' には
This is the input file for job uc_1219316705_10
とだけ書かれていた.
実行ファイルとおぼしき uppercase_1.1_i686-pc-linux-gnu を直接実行してみる.
$ ./uppercase_1.1_i686-pc-linux-gnu
./uppercase_1.1_i686-pc-linux-gnu: line 1: //: is a directory
./uppercase_1.1_i686-pc-linux-gnu: line 2: //: is a directory
./uppercase_1.1_i686-pc-linux-gnu: line 3: syntax error near unexpected token `('
./uppercase_1.1_i686-pc-linux-gnu: line 3: `// Copyright (C) 2008 University of California'
なぜバイナリに 'Copyright' とか書かれている?
less してみたところ, 単なるソースファイルだった.
書き換えの際にミスしたようだ.
本当はバイナリをコピーするように書かないといけなかったようだ.
プロジェクト test4 から離脱.
このコマンドは client が稼動してなくても実行できた.
$ ./boinc --detach_project http://fermat.epa.scitec.kobe-u.ac.jp/test4/
マシン fermat へ行く.
「バイナリ」として配布されていたのは
fermat:/home/boincadm/projects/test4/apps/uppercase/uppercase_1.1_i686-pc-linux-gnu
のもよう.
== Quick start (3)
サーバである fermat に戻り, 新しいプロジェクトを作成.
boincadm でログイン.
$ cd ~
$ cd boinc/tools
$ ./make_project --url_base http://fermat.epa.scitec.kobe-u.ac.jp \
--test_app test5
make_project の修正を忘れていた. やりなおし.
ところで, 同じ名前のプロジェクトを作ろうとすると,
Project root already exists! Specify --delete_prev_inst --drop_db_first to clobber
というエラーメッセージが出る.
プロジェクトを削除してみる.
$ ./make_project --delete_prev_inst --drop_db_first test5
単にプロジェクトが新しくなっただけのようだ.
削除については後回し.
もとに戻って, make_project スクリプトの修正.
../samples/example_app 内のバイナリを指定しなくてはならない.
$ ~/boinc/samples/example_app
中を見てみたら, バイナリがない. コンパイルに失敗したのか?
手で make してみる.
$ make
g++ -g -DAPP_GRAPHICS -I../.. -I../../lib -I../../api -L../../api -L../../lib -L
/usr/X11R6/lib -L. -c -o uc2.o uc2.C
g++ -g -DAPP_GRAPHICS -I../.. -I../../lib -I../../api -L../../api -L../../lib -L
/usr/X11R6/lib -L. -o uc2 uc2.o libstdc++.a -pthread -lboinc_api -lboinc
g++: libstdc++.a: No such file or directory
make: *** [uc2] Error 1
パッケージを調べてみたところ, libstdc++6, libstdc++5 は既に入っている.
Makefile.debian なるものがあるのでそれを使ってみる.
$ make clean
$ make -f Makefile.debian
同じ症状.
debian パッケージ検索で libstdc++.a を探し,
それを含むパッケージ libstdc++6-dev を入れる.
$ make clean
$ make -f Makefile.debian
同じ症状.
= 080823
== Quick Start (続き)
=== make_project に関するトラブルシューティング
fermat 内の BOINC サーバのトラブルシューティング
fermat に boincadm としてログイン.
$ cd ~/boinc/samples/example_app
Makefile.debian の
libstdc++.a
を
-lstdc++
に変更.
Makefile を見れば分かることだが, uc2, uc2_graphics という 2 つの
バイナリを作成していることがわかる.
$ make -f Makefile.debian
大量のエラーが出るが, 全て uc2_graphics.C に関するものなので後回し.
ディレクトリ内には uc2 というバイナリができている.
試しにこれを実行してみる.
$ ./uc2
一瞬で終わった.
stderr.txt というファイルができていて,
Can't open init data file - running in standalone mode
Couldn't find input file, resolved name in.
と記述されている.
boinc_lockfile というファイルもできていたがこれは空.
今気づいたが, Makefile の最初に
# Do this first:
# ln -s `g++ -print-file-name=libstdc++.a`
# This creates a symbolic link to the C++ library,
# which is linked statically
と書かれていたことに気づく.
$ make clean
$ ln -s `g++ -print-file-name=libstdc++.a`
$ make
動作はさっきと一緒のようだ.
Makefile を編集しない分, こっちが楽だ.
=== テストプロジェクトの作成
改めてテストプロジェクトを作ることにする.
$ cd ~/boinc/tools
前にいじっていた make_project をなかったことにする.
バックアップしていたオリジナルのファイルを元に戻す.
$ cp make_project.org make_project
テストプロジェクトを作成.
$ ./make_project --url_base http://fermat.epa.scitec.kobe-u.ac.jp --test_app test6
質問には全て 'y' と答える.
エラーもなく完了.
$ cd ~/projects/test6
念のため, バイナリを確認.
$ cd apps/uppercase/uppercase_1.1_i686-pc-linux-gnu
$ ./uppercase_1.1_i686-pc-linux-gnu
ok. 掃除しておく.
$ rm stderr.txt boinc_lockfile
元の場所へ戻る.
$ cd ~/projects/test6
$ sudo -s
# cat test6.httpd.conf >> /etc/apache2/httpd.conf
前に書いていた, test4 用の設定は削除した.
# apache2ctl -k restart
ブラウザで http://fermat.epa.scitec.kobe-u.ac.jp/test6/ にアクセス.
プロジェクトページが見えることを確認.
# exit
$ crontab test6.cronjob
$ ./bin/xadd
$ ./bin/update_versions
セキュリティの警告が出るが, 全て 'y' と答えておく.
$ ./bin/start
少し待つ (10 秒程度).
これでプロジェクトが立ち上がった.
=== アカウントの追加
client 側である mersenne にログイン.
$ cd boinc/BOINC
$ ./run_client --daemon # 起動
コマンドラインでアカウントを追加 (= 新規プロジェクトに参加) してみる.
オプションは前から,
プロジェクトの URL, メールアドレス, パスワード, アカウント名, である.
$ ./boinccmd --create_account http://fermat.epa.scitec.kobe-u.ac.jp/test6/ \
xxx_at_xxx.xx.xx hogehoge noda
status: Success
poll status: operation in progress
account key: ********
アカウントキーは覚えておく.
忘れたときは lookup_account オプションを使えばよい.
詳しくは ./boinccmd --help の結果を参照のこと.
先ほど発行されたアカウントキーを使ってプロジェクトからジョブをもらってくる.
$ ./boinccmd --project_attach http://fermat.epa.scitec.kobe-u.ac.jp/test6/ \
********
stdoutdae.txt を見る限りでは, ジョブのダウンロードは完了したようだ.
しかし top コマンド上では seti しか動いていない.
1 CPU だからだろうか? test6 はキューの後ろに並んでいる?
SETI@home から離脱してみる.
$ ./boinc --detach_project http://setiathome.berkeley.edu
おっと, boinccmd が動いているからできなかった.
$ ./boinccmd --quit
$ ./boinc --detach_project http://setiathome.berkeley.edu
再起動.
$ ./boinccmd --daemon
connect: Connection refused
can't connect to local host
どうやら ./boinc が起動したままのようだ. というのも,
$ ./boinc --daemon
だと起動できたからである.
top を見ると, uppercase というコマンドが走っている.
これは test6 で配布したバイナリである.
成功.
stdoutdae.txt を見ると, 次々とワークユニットを処理しているもよう.
=== 手持ちのアプリケーションを走らせてみる
$ cd ~/projects/test6
$ html/ops/single_job_setup.php ~/boinc/samples
/home/boincadm/boinc/samples/wrapper/wrapper doesn't exist.
Make sure you've built boinc_samples.
現地へ飛ぶ.
$ cd ~/boinc/samples/wrapper
wrapper なんてファイルはない.
Makefile が転がっていることから, コンパイルが必要か.
$ make
(省略)
g++: libstdc++.a: No such file or directory
make: *** [wrapper] Error 1
さっきと同じエラーのようだ.
Makefile 内にもさっきと同じようなことが書いてある.
$ ln -s `g++ -print-file-name=libstdc++.a`
$ make
コンパイルが通った.
さっきの場所へ戻って再挑戦.
$ cd ~/projects/test6
$ html/ops/single_job_setup.php ~/boinc/samples
Installing current wrapper.
- type 'bin/update_versions', and answer 'y' to all questions.
- Add the following to the <daemons> section of config.xml:
<daemon>
<cmd>single_job_assimilator -app single_job_i686-pc-linux-gnu</cmd>
<output>single_job_assimilator_i686-pc-linux-gnu.out</output>
<pid>single_job_assimilator_i686-pc-linux-gnu.pid</pid>
</daemon>
<daemon>
<cmd>sample_trivial_validator -app single_job_i686-pc-linux-gnu</cmd>
<output>sample_trivial_validator_i686-pc-linux-gnu.out</output>
<pid>sample_trivial_validator_i686-pc-linux-gnu.pid</pid>
</daemon>
Then restart your project by typing
bin/stop
bin/start
言われたままやってみる.
$ ./bin/update_versions
質問にはすべて 'y' と答える.
config.xml の <daemon> セクション (ファイルの最後のほう) に以下を追記.
<daemon>
<cmd>single_job_assimilator -app single_job_i686-pc-linux-gnu</cmd>
<output>single_job_assimilator_i686-pc-linux-gnu.out</output>
<pid>single_job_assimilator_i686-pc-linux-gnu.pid</pid>
</daemon>
<daemon>
<cmd>sample_trivial_validator -app single_job_i686-pc-linux-gnu</cmd>
<output>sample_trivial_validator_i686-pc-linux-gnu.out</output>
<pid>sample_trivial_validator_i686-pc-linux-gnu.pid</pid>
</daemon>
BOINC サーバの再起動.
$ ./bin/stop
Entering DISABLED mode
Stopping all daemons
Killed process 26118
Killed process 26116
Killed process 26122
Killed process 26120
Killed process 26112
Killed process 26114
Waiting for process 26116 to end: . ok
Waiting for process 26112 to end: ... ok
$ ./bin/start
Entering ENABLED mode
Starting daemons
Starting daemon: feeder -d 3
Starting daemon: transitioner -d 3
Starting daemon: file_deleter -d 3
Starting daemon: sample_work_generator -d 3
Starting daemon: sample_bitwise_validator -d 3 -app uppercase
Starting daemon: sample_assimilator -d 3 -app uppercase
Starting daemon: single_job_assimilator -app single_job_i686-pc-linux-gnu
Starting daemon: sample_trivial_validator -app single_job_i686-pc-linux-gnu
実行するバイナリの作成.
$ cd ~
以下の内容のファイルを作成し, test.f90 と名づける.
program test
write(*,*) 'Hello world.'
end program test
$ ifort test.f90
$ ./a.out
Hello world.
ジョブを投入してみる.
$ ./boinc/tools/boinc_submit --stdout foo a.out
You must set the environment variable BOINC_PROJECT_DIR
to the path of a BOINC project, e.g.:
> export BOINC_PROJECT_DIR=~/projects/my_project
or in csh:
> setenv BOINC_PROJECT_DIR ~/projects/my_project
環境変数の設定を行う.
$ export BOINC_PROJECT_DIR=~/projects/test6
再挑戦.
$ ./boinc/tools/boinc_submit --stdout foo a.out
August 23, 2008, 5:36 PM: job 301 is in progress
(no instances yet)
August 23, 2008, 5:36 PM: job 301 is in progress
Instance 0: unsent
August 23, 2008, 5:36 PM: job 301 is in progress
Instance 0: unsent
(省略)
いつまでも送信されない?
Ctrl + c で端末に戻る.
'job 301' とは, 今動いているテストジョブのことか?
$ ./boinc/tools/boinc_submit --help
$ ./boinc/tools/boinc_submit --jobs # pending jobs を見る
Jobs for Linux running on an Intel x86-compatible CPU:
Job 301: in progress
$ ./boinc/tools/boinc_submit --abort 301
Job 301 has been aborted.
$ ./boinc/tools/boinc_submit --jobs
Jobs for Linux running on an Intel x86-compatible CPU:
Job 301: completed
301 は今送信した job であった.
$ ./boinc/tools/boinc_submit --stdout foo a.out
August 23, 2008, 5:48 PM: job 302 is in progress
(no instances yet)
August 23, 2008, 5:48 PM: job 302 is in progress
Instance 0: unsent
August 23, 2008, 5:48 PM: job 302 is in progress
Instance 0: unsent
ジョブの送信に不具合があるのか?
(一旦ここで fermat からログアウト
席を離れるときにうっかりマシンをスタンバイにしてしまっただけ))
再度 fermat に行くと, ホームに
job_summary_301, job_summary_302
というファイルができていた.
$ cat job_summary_301
The job was not successfully completed.
Error: 0x10
302 番のジョブを abort してから, 2 つのジョブを送信してみる.
$ ./boinc/tools/boinc_submit --jobs
Jobs for Linux running on an Intel x86-compatible CPU:
Job 301: completed
Job 302: completed
Job 303: in progress
Job 304: in progress
'Intel x86-compatible CPU' がいけないのか?
最初に sample プロジェクトを実行してから 3 時間半.
sample プロジェクトのジョブは枯渇したようだ.
他にジョブがないにも関わらず, a.out は送信されない.
話は少し変わるが,
あちこち見て回っていたところ,
以下のディレクトリに「リザルト」が格納されているようだ.
download
sample_results
upload
=== fermat に client をインストール
ジョブが送信されないのは CPU の種類が違うせいか確かめる.
fermat に client をインストールする
boincadm@fermat$ cd ~
$ mkdir client
$ cd client
'Older Linux x86 and x64' の ver. 6.2.15 を試す.
$ wget http://boincdl.ssl.berkeley.edu/dl/boinc_compat_6.2.15_i686-pc-linux-gnu.sh
$ sh boinc_compat_6.2.15_i686-pc-linux-gnu.sh
use /home/boincadm/client/BOINC/run_client to start BOINC
$ cd BOINC
$ ./run_client --daemon
$ ./boinccmd --project_attach http://fermat.epa.scitec.kobe-u.ac.jp/test6/ \
********
test6 からタスクをガンガン取得しはじめた.
1 つの計算について, 複数のマシンで結果を比較するよう設定されていたようだ.
しかし, single job については動きがないように見える.
話は脱線して,
いろいろネットで調べていたところ,
SingleJob - BOINC - Trac
((<URL:http://boinc.berkeley.edu/trac/wiki/SingleJob>))
* Single job submission は wrapper を用いている.
* 今のところ, wrapper は Linux/Intel32 以外に対応していないとのこと.
fermat でclient を動かし始めて 15 分くらい経った頃,
single job が実行された.
$ cat job_summary_303
Job was completed by host 2.
CPU time: 0.000000 seconds
$ cat foo
Hello world.
やはり, mersenne の CPU が Athlon だったのが原因か?
single job の実行がすぐでなかったのは, 何故か?
sample プロジェクトと一緒にキューに並んでいるのか?
多少の疑問はあるが, とりあえず tutorial (Quick start) は成功.
== Project creation cookbook
今度は
Project creation cookbook
((<URL:http://boinc.berkeley.edu/trac/wiki/CreateProjectCookbook>))
の通りにやってみる.
=== ウェブページの最低限の内容変更
~/projects/test6/html/project/project.inc の中の
* REPLACE WITH PROJECT NAME
* REPLACE WITH COPYRIGHT HOLDER
を適当なものに書き換える.
ブラウザでプロジェクトページを再読み込みすると,
"REPLACE WITH ..." が置き換わっている.
"XXX is a ..." などの本文については
~/projects/test6/html/user/index.php などを直接書き換える必要があるようだ.
=== html/ops にパスワードをかける
http://fermat.epa.scitec.kobe-u.ac.jp/test6_ops/
は管理用のページのようである.
一般からアクセスできないように,
例えば htpasswd コマンドで .htaccess と .htpasswd を作れ, とある.
とりあえず, .htaccess を作る.
場所は, アクセス制限するディレクトリの上.
$ cd ~/projects/test6/html/ops
$ vi .htaccess
以下を書き込む.
AuthUserFile /home/boincadm/projects/test6/html/ops/.htpasswd
AuthGroupFile /dev/null
AuthName "test6 admin"
AuthType Basic
require user XXXXXXXX
require valid-user
<Files ~ "\.(htpasswd|htaccess)$">
deny from all
</Files>
XXXXXXXX には適当なユーザ名を記入する.
ちなみに, 上記は
.htaccessの小技編 - アクセス制限ベーシック認証〜パスワードでページを守ろう〜 - futomi's CGI Cafe
((<URL:http://www.futomi.com/lecture/htaccess/htpasswd.html>))
などを参考にした.
$ chmod 604 .htaccess
これについては
.htaccessの設定解説
http://htaccess.pasoa.com/
を参考にした.
.htpasswd ファイルを作る.
$ htpasswd -c /home/boincadm/projects/test6/html/ops/.htpasswd XXXXXXXX
やることはやってみたが, ops 以下を見ようとしても 403 Forbidden になる.
はまり込みそうなので, ここは一旦飛ばす.
事故を招かないように, .ht* も一旦削除しておく.
=== テストプロジェクト
さっきやったのでパス.
ちなみに,
適当なディレクトリ boinc_test などを作ってそこに入り,
$ cp ../boinc/client/boinc_client .
$ cp ../boinc/lib/boinc_cmd .
としてもよかったようだ (client もコンパイルした場合に限る).
=== 手持ちのアプリケーションを加える
さきほど行った single job よりは高度な方法で
手持ちのアプリケーションを走らせる.
$ cd ~/projects/test6
$ cp config.xml config.xml.org
config.xml 内の最後のほうにある
sample_bitwise_validator -d 3 -app uppercase
と
sample_assimilator -d 3 -app uppercase
が含まれる項目を削除する.
project.xml に自分の加えたいアプリケーション名を加える.
具体的には,
<app>
<name>uppercase</name>
<user_friendly_name>upperCASE</user_friendly_name>
</app>
の下に真似して
<app>
<name>addition</name>
<user_friendly_name>Addition</user_friendly_name>
</app>
を追記した.
アプリケーションを登録する.
$ ./bin/xadd
この時点では config.xml に変化はなかった.
適当なプログラムを作る.
program test
j=0
do i=0,1000000000
j=j+1
end do
write(*,*) j
write(*,*) 'Addition was done.'
end program test
$ ifort -o addition addition.f90
$ ./addition
1000000001
Addition was done.
fermat では 0.6 sec くらいで終わった.
ふと気がついた. ページには
"Write a BOINC application ..."
とある.
BOINC 用の API を積んだ, BOINC と通信できるプログラムが必要であった.
これはすぐには書けないので, 一旦中止.
wrapper や BOINC API の使い方を学ぶことにする.
= 080824
== desktop Grid computing
BOINC のトップページから,
"desktop Grid computing" のリンクを通じて飛べる
"Grid computing with BOINC" というページに注目した.
DesktopGrid - BOINC - Trac
((<URL:http://boinc.berkeley.edu/trac/wiki/DesktopGrid>))
BOINC は,
一般市民のコンピュータの力を借りる 'volunteer computing' だけでなく,
研究室や企業の中だけで閉じた計算をする 'desktop Grid computing' も想定して
作られているようだ.
"Grid versus volunteer computing" という項目がページ内にあるように,
'Grid computing' と 'volunteer computing' の言葉の定義が
今までの私の認識と違うように感じた.
これまでの認識では, 'volunteer computing' は 'Grid computing' に
含まれるものであったが, このページの文脈からすると,
一般開放すると 'Grid computing' でなくなるように読める.
'desktop Grid computing' に話を戻す.
文中には, 使うマシンは信頼性が高いので冗長性の処理は不要であることなどが
書かれている.
簡単化できるのでツールもあるらしい.
また,
"You might also want to include files
that allow clients to be remotely monitored and controlled."
ということはジョブを投げた後も,
ジョブ取り消しなどの多少の制御も可能のようだ.
ページの最後には
For more information on grid computing using BOINC,
and some useful pre-compiled software, visit Desktopgrid.hu.
とある. "some useful pre-compiled software" につられて
"Desktopgrid.hu" のリンクを選択.
行った先は,
SZTAKI Desktop Grid
((<URL:http://desktopgrid.hu/>))
であった. SZTAKI は以前から聞いたことがある.
しかしこれは BOINC を使ったプロジェクトに過ぎないのでは?
読み進めてみると,
SZTAKI Desktop Grid is basically a BOINC server packed
in a Debian(R) package, to make server deployment as easy as possible.
とある.
SZTAKI 自体は
BOINC プロジェクトを立ち上げるのを支援するユーティリティのようだ.
さらに読み進めると,
Supported Research
SZTAKI Desktop Grid is currently hosting the BinSYS project.
とある.
つまり, 'BinSYS project' が本当のプロジェクト名ということ.
日本語では, 間違って紹介されている.
ソフトウェアを配布していることが紹介されていないので損をしているかも.
DC-API なる API が配布されている.
The DC-API
((<URL:http://desktopgrid.hu/index.php?page=24>))
によると,
The DC-API was created by MTA SZTAKI to allow
easy implementation and deployment of distributed applications
on multiple grid environments.
だそうだ.
DC_initMaster() といった API を呼び出すことで,
サーバ, クライアントを簡単に作れるようにしているらしい.
ここで提供されている API は
BOINC API のかぶせ物か, それとも独自のコードか? (後者の気がする)
== SZTAKI Desktop Grid
今度は 'SZTAKI Desktop Grid' 内の
Install Your Own Desktop Grid
((<URL:http://desktopgrid.hu/index.php?page=23>))
を参考にサーバを構築してみる.
理由は, こっちのほうが研究に使いやすそうに感じたこと,
チュートリアルが分かりやすそう, の 2 つ.
fermat にログイン.
/etc/hosts, メールサーバの設定はパス.
BOINC に必要なパッケージは全てインストールしたつもりだが,
念のため, 記述通りに以下のパッケージをインストールする.
$ sudo apt-get install apache2-mpm-prefork libapache2-mod-auth-plain
$ sudo apt-get install libapache2-mod-php5 php5-cli
$ sudo apt-get install mysql-server-5.0 php5-mysql
$ sudo apt-get install pwgen # これはなくてもよいだろう
libapache2-mod-auth-plain, pwgen が新たにインストールされた.
mysqladmin にて mysql の root パスワードの設定をするのは既に完了.
root で /root/.my.cnf を作成し, 以下のように記述する:
[mysql]
user = root
password = <password>
[mysqladmin]
user = root
password = <password>
<password> には, mysql の root パスワードを記述する.
root で /etc/apt/sources.list に以下を追記する:
deb http://www.desktopgrid.hu/debian/ etch szdg
# apt-get update
(省略)
W: GPG error: http://www.desktopgrid.hu etch Release: The following
signatures couldn't be verified because the public key is not
available: NO_PUBKEY XXXXXXXXXXXXXXXX
W: You may want to run apt-get update to correct these problems
GPG error が出た.
# apt-key advanced --keyserver wwwkeys.eu.pgp.net --recv-keys XXXXXXXXXXXXXXXX
Executing: gpg --no-options --no-default-keyring --secret-keyring
/etc/apt/secring.gpg --trustdb-name /etc/apt/trustdb.gpg
--keyring /etc/apt/trusted.gpg --keyserver wwwkeys.eu.pgp.net
--recv-keys XXXXXXXXXXXXXXXX
gpg: requesting key XXXXXXXX from hkp server wwwkeys.eu.pgp.net
gpg: key XXXXXXXX: public key "SZTAKI Desktop Grid Automatic
Signing Key <desktopgrid@lpds.sztaki.hu>" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg: imported: 1
# apt-get update
今度は成功.
BOINC のインストール.
ページに 'for local usage' とに示されていた方をインストール.
# apt-get install boinc boinc-skin-ldg
boinc というパッケージが見つからない. ので後のパッケージのみインストール.
# apt-get install boinc-skin-ldg
後の文章から, 'boinc' は 'boinc-server' の間違いではないかと思い,
boinc-server をインストール.
# apt-get install boinc-server
boinc_create_project といったコマンドが使えるようになった.
たぶん正解.
テストプロジェクト名を決める.
long name: test of SZTAKI 1
short name: test_sz1
root で以下のコマンドを実行する
# boinc_create_project --name test_sz1 --long-name 'test of SZTAKI 1'
Creating user boinc-test_sz1
ERROR: Failed to create the project user
Check /var/log/boinc.log for further details
# cat /var/log/boinc.log
2008-08-24 22:52:05 create_project Notice: Creating user boinc-test_sz1
2008-08-24 22:52:05 create_project Debug: Running '/usr/sbin/adduser' '--system' '--quiet' '--home' '/var/lib/boinc/test_sz1' '--shell' '/bin/bash' '--group' '--gecos' 'test of SZTAKI 1' 'boinc-test_sz1'
2008-08-24 22:52:05 create_project Debug: -- Begin command output --
adduser: Please enter a username matching the regular expression configured
via the NAME_REGEX configuration variable. Use the `--force-badname'
option to relax this check or reconfigure NAME_REGEX.
2008-08-24 22:52:05 create_project Debug: -- End command output, exit code: 1 --
よく見ると, 入力したコマンドが間違っていた ('=' を付け忘れていた) のでやり直し.
# boinc_create_project --name=test_sz1 --long-name='test of SZTAKI 1'
同じ結果.
NAME_REGEX について調べてみる.
入力したユーザ名が環境変数 NAME_REGEX による正規表現 (?) に従っていない
とのこと.
short name の '_' を取って 'testsz1' とする.
# boinc_create_project --name=testsz1 --long-name='test of SZTAKI 1'
Creating user boinc-testsz1
Creating directory /etc/boinc/testsz1
Creating /etc/boinc/testsz1/boinc_env.sh
Creating /etc/boinc/testsz1/config.xml
Creating /etc/boinc/testsz1/project.xml
Creating /var/lib/boinc/testsz1/.my.cnf
Granting permissions on database boinc_testsz1 to boinc-testsz1
ERROR: GRANT command failed
Undoing changes
Removing /var/lib/boinc/testsz1/.my.cnf
Removing /etc/boinc/testsz1/project.xml
Removing /etc/boinc/testsz1/config.xml
Removing /etc/boinc/testsz1/boinc_env.sh
Removing directory /etc/boinc/testsz1
Warning: Directory /etc/boinc/testsz1 is not owned by boinc-testsz1, not removing
Deleteing user boinc-testsz1
Check /var/log/boinc.log for further details
もう 1 回実行すると,
# boinc_create_project --name=testsz1 --long-name='test of SZTAKI 1'
Creating user boinc-testsz1
ERROR: A project with this name already exists
Check /var/log/boinc.log for further details
/var/log/boinc.log には詳細な情報はなし.
boinc-testsz1 ユーザが残っているのかと思って以下のコマンドを実行する.
# deluser boinc-testsz1
/usr/sbin/deluser: The user `boinc-testsz1' does not exist.
どうやら mysql か何かに設定が残ってしまっているようだ.
プロジェクトを作るコマンドがあるなら削除するコマンドもあるだろうと思い,
探し出す.
使い方は --help コマンドで出てきた.
# boinc_delete_project --name=testsz1
WARNING!
This script removes the BOINC project 'testsz1' and ALL of its data.
Type 'yes' if this is what you want: yes
Warning: Failed to stop project: /var/lib/boinc/testsz1/project/bin/start does not exist or is not executable
/etc/cron.d/boinc-testsz1 does not exist
/etc/boinc/testsz1/project.xml does not exist
Removing permissions on database boinc_testsz1 from boinc-testsz1
Dropping database boinc_testsz1
/var/lib/boinc/testsz1/.my.cnf does not exist
/etc/boinc/testsz1/boinc_env.sh does not exist
/etc/boinc/testsz1/config.xml does not exist
Removing directory /etc/boinc/testsz1
User boinc-testsz1 does not exist
# boinc_create_project --name=testsz1 --long-name='test of SZTAKI 1'
さっきと変わらず.
だめもとで, sudo でなく root でログインする.
# su -
# boinc_create_project --name=testsz2 --long-name='test of SZTAKI 2'
Creating user boinc-testsz2
Creating directory /etc/boinc/testsz2
Creating /etc/boinc/testsz2/boinc_env.sh
Creating /etc/boinc/testsz2/config.xml
Creating /etc/boinc/testsz2/project.xml
Creating /var/lib/boinc/testsz2/.my.cnf
Granting permissions on database boinc_testsz2 to boinc-testsz2
Setting the owner of /etc/boinc/testsz2
Executing make_project
Renaming the scheduler from cgi-bin/cgi to cgi-bin/scheduler
Fixing security problems of make_project
Fixing up /var/lib/boinc/testsz2/project/html/project/project.inc
Creating /var/lib/boinc/testsz2/project/run_state_fermat.xml
Creating /etc/cron.d/boinc-testsz2
Creating /etc/apache/conf.d/boinc-testsz2.conf
Reloading Apache
Creating /etc/apache2/conf.d/boinc-testsz2.conf
Reloading Apache2
Creating empty /etc/boinc/testsz2/admin_users
Creating initial empty statistics
成功したのは良かったが,
いちいち root でログインしないといけないのは汎用性が低い.
sudo でもなんとかならないか試してみる.
$ sudo -s
# cd /root
# boinc_create_project --name=testsz3 --long-name='test of SZTAKI 3'
(省略)
Granting permissions on database boinc_testsz3 to boinc-testsz3
ERROR: GRANT command failed
Undoing changes
(省略)
# less /var/log/boinc.log
(省略)
2008-08-24 23:20:20 create_project Debug: -- Begin command output --
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
2008-08-24 23:20:20 create_project Debug: -- End command output, exit code: 1 --
(省略)
mysql のパスワードでこけている.
一時的に mysql の root パスワードを空にしてみる
# mysqladmin -u root password '' -p
-p オプションなしでも root になれるようになった.
例えば以下のコマンドも入力できた.
# mysqladmin -u root password ''
/root/.my.cnf の中も同様に書き換える.
password の欄は以下のようにした.
password =
# boinc_create_project --name=testsz4 --long-name='test of SZTAKI 4'
成功.
しかし空パスワードは良くない. 今の設定は元に戻す.
実行しているユーザの環境変数から .my.cnf の
在り処を探しているのではないかと考える.
# cp /root/.my.cnf /home/boincadm
# boinc_create_project --name=testsz5 --long-name='test of SZTAKI 5'
成功.
研究室のサーバで複数人がそれぞれ異なるプロジェクトを運営する
場合, 各アカウントで mysql に root アカウントが必要だろう.
それができるか実験.
結果: mysql の root アカウントはマシン内で共通.
もしかすると, .my.cnf 内の "user = root" を "user = boincadm" などに
すれば良いのかもしれないが,
mysql 内でユーザを発行して ... と, はまりそうなのでパス.
プロジェクトの admin 権限を与える.
# boinc_admin --NAME=testsz5 --add boincadm
Password:
Adding boincadm to /etc/sudoers
Adding boincadm to .forward
Setting the password for boincadm
Please enter a password below for accessing the admin parts of the web page.
It is recommended to use a different password here than the normal login
password.
New password:
Re-type new password:
/etc/sudoers の末尾に以下が追記されていた.
## DO NOT REMOVE - boinc_admin: testsz5/boincadm
boincadm ALL = (boinc-testsz5) ALL
## DO NOT REMOVE - boinc_admin: testsz5/boincadm
boincadm ALL = (root) /bin/su - boinc-testsz5
"boincadm ALL = (ALL) ALL" が既に書かれているから無意味なのだが.
visudo でコメントアウトしておく.
.forward はどこか?
# find / -name .forward
/var/lib/boinc/testsz5/.forward
/var/lib/boinc/testsz5/.forward には
boincadm
とだけ書かれていた.
プロジェクトの管理人になるには以下のコマンドを実行せよとのこと.
$ sudo su - boinc-testsz5
ブラウザで管理者ページへ行くには以下の URL を入力すること.
http://fermat.epa.scitec.kobe-u.ac.jp/testsz5/ops
basic 認証画面になった (自動的に設定されている) のだが,
User name と password に何を
入力してよいのか分からない.
.htaccess ファイルなどを探してみたが見つからない.
php か何かでアクセス制限しているのか?
ちなみに,
http://fermat.epa.scitec.kobe-u.ac.jp/testsz5/
は BOINC ではなく SZTAKI Desktop Grid っぽい見た目になっていた.
公開プロジェクトじゃないのでまあよいとする.
嫌なら php ファイルを書き換えればよい.
これでプロジェクトの「入れ物」は出来た.
あとは走らせたいプログラムをコンパイルし,
プロジェクトへ登録などをすることになる.
= 080825
== desktop Grid computing
昨日の続き.
=== サンプルのコンパイル
DC-API を含むコードをコンパイルできる環境を構築する.
以下のページを参考にする.
Application development for the BOINC environment
((<URL:http://www.lpds.sztaki.hu/desktopgrid/index.php?page=27>))
fermat にログイン.
/etc/apt/sources.list に以下の行があることを確認.
deb http://www.desktopgrid.hu/debian/ etch szdg
$ sudo apt-get update
DC-API 開発パッケージをインストールする.
$ sudo apt-get install libdcapi-boinc-dev
$ sudo apt-get install libdcapi-doc
$ sudo apt-get install gcc
$ sudo apt-get install make
$ sudo apt-get install autoconf
$ sudo apt-get install automake
boinc-testsz5 ユーザとして実行ファイルを構築する.
boincadm で fermat にログインしなおす.
$ cd ~boinc-testsz5
$ sudo -u boinc-testsz5 mkdir uppercase
$ cd uppercase
$ sudo -u boinc-testsz5 \
cp /usr/share/doc/libdcapi-common-dev/examples/uppercase-with-callback/* .
client.c, master.c ともにコメントを含めて 300 行以下.
これなら読むのにそれほど時間はかからないだろう.
sudo -u boinc-testsz5 をいちいちつけるのが面倒.
boinc-testsz5 ユーザにパスワードを設定したほうがいい?
$ sudo -u boinc-testsz5 gzip -d *.gz
$ sudo -u boinc-testsz5 autoreconf -if
configure.ac:6: installing `./config.sub'
configure.ac:8: installing `./missing'
configure.ac:8: installing `./install-sh'
configure.ac:6: installing `./config.guess'
Makefile.am: installing `./depcomp'
$ sudo -u boinc-testsz5 ./configure
$ sudo -u boinc-testsz5 make
生成された中で,
'uppercase-example-master' と 'uppercase-example-client' が
BOINC のサーバとクライアントになる.
=== サンプルプロジェクトのインストール (client 編)
以下のページを参考に実行した.
Deploying applications on a BOINC server
((<URL:http://www.lpds.sztaki.hu/desktopgrid/index.php?page=28>))
$ cd ~boinc-testsz5/project
$ sudo -u boinc-testsz5 vi project.xml
以下を <boinc> タグ内に追記する. タグ内の最後に追記してみた.
<app>
<name>uppercase</name>
<user_friendly_name>Example Application</user_friendly_name>
</app>
$ cd apps
$ sudo -u boinc-testsz5 mkdir uppercase
$ cd uppercase
実行するプラットフォームごとにディレクトリを用意する.
名前は <name>_<version #>_<platform> という形式でつけるのが慣習.
<version #> は 1.00 から 0.01 ずつ上がっていく.
<platform> は BOINC によって決められている.
$ sudo -u boinc-testsz5 mkdir uppercase_1.00_i686-pc-linux-gnu
$ cd uppercase_1.00_i686-pc-linux-gnu
さきほどコンパイル, 生成した実行ファイルを持ってくる.
格納するディレクトリ名と実行ファイル名は同じにしなければならないとのこと.
$ sudo -u boinc-testsz5 cp \
~testsz5/uppercase/uppercase-example-client \
uppercase_1.00_i686-pc-linux-gnu
実行ファイルが正当なものであることを示すため, 署名を行う.
これは任意.
update_versions が実行された時に自動で行われるらしい.
実行ファイル以外にも, ライブラリなどが含まれる場合は
全てのファイルに署名が必要.
今回はパス.
validator (帰ってきた結果が正当なものか判定するプログラム.
冗長性を持たせる場合は他の結果と比較したりする) をインストールする.
ローカルのプロジェクトで冗長性を持たせない場合も
validator は必要らしい.
自分で validator を作った場合はプロジェクトのホームの
下にある bin ディレクトリに置く.
今回はサンプルとして既に bin に
置かれている sample_trivial_validator を使う.
以下を config.xml に追記する.
ファイル末尾のほういある <daemon> タグが並んでいる場所に追記した.
$ cd ~boinc-testsz5/project
$ sudo -u boinc-testsz5 vi config.xml
<daemon>
<cmd>
sample_trivial_validator -d 3 -app uppercase
</cmd>
</daemon>
初めて実行ファイルを置いた場合
(他のプラットフォーム用の実行ファイルを追加した場合も含む) は,
xadd コマンドを実行して project.xml の内容を反映 (コミット) させる.
既にコミットした実行ファイルのバージョンを上げる場合は不要.
$ sudo -u boinc-testsz5 bin/xadd
新しいバージョンの実行ファイルを置いた場合は
update_versions コマンドを実行する.
$ sudo -u boinc-testsz5 bin/update_versions
署名をしていないので警告が出る.
勝手に署名してくれるようなので 'y' を入力して先へ進む.
=== サンプルプロジェクトのインストール (master 編)
master プログラム置き場を作る.
$ cd ~boinc-testsz5
$ sudo -u boinc-testsz5 mkdir master_uppercase
$ cd master_uppercase
$ sudo -u boinc-testsz5 cp ../uppercase/dc-api.conf uppercase-master.conf
uppercase-master.conf 内の '*Must be specified*' と書かれた部分を書き換える.
具体的には以下のようになった.
WorkingDirectory = /var/lib/boinc/testsz5/master_uppercase
InstanceUUID = *********-****-****-****-************
BoincConfigXML = /var/lib/boinc/testsz5/project/config.xml
ProjectRootDir = /var/lib/boinc/testsz5/project
[Client-uppercase-example] については, デフォルトで記述されていた
'name = uppercase-example-client' のままにしておいた.
InstanceUUID については uuidgen コマンドによって得ることができる.
master プログラムを bin へコピーする.
$ sudo -u boinc-testsz5 cp \
~boinc-testsz5/uppercase/uppercase-example-master \
~boinc-testsz5/project/bin
プロジェクトを開始するには以下のコマンドを実行する.
$ sudo -u boinc-testsz5 \
~testsz5/project/bin/uppercase-example-master \
-c /var/lib/boinc/testsz5/uppercase_master/uppercase-master.conf
以下を config.xml に追記することでサーバと一緒に
master プログラムの開始, 停止ができる.
$ cd ~testsz5/project
$ sudo -u boinc-testsz5 vi config.xml
<daemon>
<cmd>
uppercase-example-master -c \
/var/lib/boinc/testsz5/uppercase_master/uppercase-master.conf
</cmd>
</daemon>
サーバを起動してみる.
$ sudo -u boinc-testsz5 bin/start
Entering ENABLED mode
Starting daemons
Starting daemon: feeder -d 1
Starting daemon: transitioner -d 3
Starting daemon: file_deleter -d 3
Starting daemon: db_purge -d 3 -min_age_days 14
Starting daemon: sample_trivial_validator -d 3 -app uppercase
Starting daemon: uppercase-example-master -c \
/var/lib/boinc/testsz5/uppercase_master/uppercase-master.conf
クライアントでジョブを受けてみる.
mersenne に noda でログイン.
mer$ cd ~/boinc/BOINC
mer$ ./run_client --daemon
前のプロジェクトの仕事が残っていたので放棄する.
mer$ ./run_client --detach_project http://fermat.epa.scitec.kobe-u.ac.jp/test6
起動中なので通らなかった.
mer$ ./boinccmd -quit
mer$ ./run_client --detach_project http://fermat.epa.scitec.kobe-u.ac.jp/test6
放棄完了.
新たなプロジェクトにアカウントを作る.
mer$ ./boinccmd --create_account \
http://fermat.epa.scitec.kobe-u.ac.jp/testsz5 \
xxx_at_xxx.xx.xx hogehoge noda
status: Success
poll status: operation in progress
account key: ********
参加する.
mer$ ./run_client --attach_project \
http://fermat.epa.scitec.kobe-u.ac.jp/testsz5 \
********
26-Aug-2008 00:40:46 [http://fermat.epa.scitec.kobe-u.ac.jp/testsz5/]
Master file download succeeded
26-Aug-2008 00:40:51 [http://fermat.epa.scitec.kobe-u.ac.jp/testsz5/]
Sending scheduler request: Project initialization.
Requesting 1 seconds of work, reporting 0 completed tasks
26-Aug-2008 00:40:56 [http://fermat.epa.scitec.kobe-u.ac.jp/testsz5/]
Scheduler request failed: Couldn't connect to server
うまくサーバに接続できない.
fermat 側ではどうか.
boincadm でログインしている.
fermat$ ~/client/BOINC
先日参加した test6 からは離脱し, testsz5 に加入
(コマンドは mersenne と似たようなもの).
ログを見ると, サーバに接続はできたものの, job をもらえるまでには行っていない.
26-Aug-2008 00:48:46 [test of SZTAKI 5] You used the wrong URL for this project
26-Aug-2008 00:48:46 [test of SZTAKI 5] The correct URL is http://localhost/testsz5/
26-Aug-2008 00:48:46 [test of SZTAKI 5] Using the wrong URL can cause problems in some cases.
26-Aug-2008 00:48:46 [test of SZTAKI 5] When convenient, detach this project, then reattach to http://localhost/testsz5/
実験一時中断. サーバ側を停止しておく.
fermat$ sudo -u boinc-testsz5 ~boinc-testsz5/project/bin/stop
最新の情報は
((<URL:https://epa.scitec.kobe-u.ac.jp/~gridcomp/hiki/hiki.cgi>))
をご覧ください.
昔の作業ログを編集中.
{{toc_here}}
= 080814 (BOINC クライアントの利用法)
BOINC を使ってみる.
まずはクライアントを使ってみる.
以下のページを参照のこと.
BOINCに参加して世界史に名を残そう!
((<URL:http://www.geocities.jp/asamayamanobore/BOINC/boinctop.html>))
== BOINC クライアントの導入
ここでは手元のノート PC にクライアントを導入してみる.
((<URL:http://boinc.berkeley.edu/download.php>))
よりクライアントをダウンロード.
バージョンは 5.10.45 であった.
インストーラを起動し, 他のソフトと同じように進んでいく.
Setup Type は推奨されている 'Single-User Installation' を選択.
試験的に使うだけなので, スクリーンセーバとログオン時起動については
チェックボックスを外しておく.
インストール終了とともに起動させる.
== プロジェクトに参加する
'Attach to project' のウィザードが出る.
'Choose a project' の画面が出る. 参加可能なプロジェクトが一覧されている.
ここでは 'Tanpaku' を選択してみる.
すると「プロジェクトの URL」が自動的に埋められる.
サーバと通信する. 少し待つ.
「現在このプロジェクトは新規登録を受け付けていません」とのこと.
仕方がないので別を探す.
画面戻って, こんどは SETI@home を選択する.
初回参加時はアカウントを取得する必要がある.
「いいえ、新しく参加します」にチェックを入れる.
メールアドレスとパスワードを入力する.
サーバと通信する. 少し待つ.
「このプロジェクトに計算機を参加させることに成功しました」と表示される.
== 設定を変更する
インストール直後の画面 (Simple View) の場合,
画面一番下に 'Preferences' を選択する.
"I want to customize my preferences for this computer only." にチェックを入れる.
あまり多く資源を使われたくないのと, ノート PC で熱が心配ということもあって
disk は 10 GB -> 1 GB, CPU は 100 % -> 30 % に変更した.
== 詳しい計算状況を知る
詳しい計算状況を知りたい場合は, 'Advanced View' を選択する.
= 080815 (サーバの導入. 失敗)
この日の作業は後に繋がらないので, 読み飛ばすことをお薦めする.
== サーバを使う練習
BOINC in Japanese
((<URL:http://boinc.oocp.org/indexj.php>))
から原文としてリンクされていた
公式 Wiki とおぼしきページ
Computing with BOINC
((<URL:http://boinc.berkeley.edu/trac/wiki/ProjectMain>))
を参考にした.
上から順に読んでいってみる.
Quick Start
((<URL:http://boinc.berkeley.edu/trac/wiki/QuickStart>))
によると,
VMWare player 上で動く 'BOINC virtual server' が配布されているとのこと.
リンク先の
The BOINC server virtual machine
((<URL:http://boinc.berkeley.edu/trac/wiki/VmServer>))
のページから
((<URL:http://boincdl.ssl.berkeley.edu/dl/debian-40r0-boinc-server_15762.zip>))
をダウンロードし(約 800 MB あった),
解凍し, VMWare player 上で起動してみる.
仮想マシン名は 'debian-40r0-boinc-server' である.
この仮想マシン, なんだか変である.
まず, 最初の起動ではいきなり boincadm ユーザでログインされた状況である.
上で ls などのコマンドを実行された跡もある.
VMWare のダイアログでデバイスが見つからないというエラーも.
ネットワークがつながらないので apt-get もできない.
ひとまずログアウトする.
The BOINC server virtual machine
((<URL:http://boinc.berkeley.edu/trac/wiki/VmServer>))
のページに戻り, 言われるとおりに環境を修正してみる.
ここでは Bridged Ethernet の設定を見ている.
まず root でログインする. ちなみに初期パスワードは上記の
ページ内に書いてある.
以下のファイルを削除せよとのこと.
/etc/udev/rules.d/rules.d/z25_persistent-net.rules
中をのぞいてみると, ネットワークに関するデバイスの MAC アドレスらしきもの
が書いてある.
ちなみに less が入っていないので不便. 仕方ないので more で読んだ.
# cd /etc/udev/rules.d/rules.d/
# mv z25_persistent-net.rules z25_persistent-net.rules.org
とりあえずこれで削除したことにする.
ping を外に向けて打ってみたが, "unknown host" とメッセージが出る.
名前が解決できないもよう.
/etc/resolv.conf にて nameserver が知らない IP アドレスになっている.
vi で編集したところ, うまく保存できない. 終了すらできない.
"E20: Mark not set" というメッセージが画面下部に出るのみ.
キーボードの設定が英語になっていたため, ':' を入力したつもりが
別の文字になっていたのでコマンドが通らなかったことが判明.
/etc/network/interface について,
現時点では自宅で DHCP でつないでいるので
#iface eth0 inet dhcp
のコメントアウトを外した.
もちろん, 実際に運用する際は固定 IP であったほうがよい.
(ページにもあるが, IP アドレスの変更によりクライアントが混乱するため)
他の設定については, 今は固定 IP ではないため, 消去する).
うまくつながらない.
ネットワークの勉強が足りないようだ.
参照している
The BOINC server virtual machine
((<URL:http://boinc.berkeley.edu/trac/wiki/VmServer>))
のページではネットワークの設定について以下が挙げられていた.
Debian Reference Chapter 10 - Network configuration
((<URL:http://www.debian.org/doc/manuals/reference/ch-gateway.en.html>))
一般的すぎる, かつ量が多すぎるが,
ネットワークの勉強ということで読むことにする (実習の復習もせねば).
ちなみに自分で一から作る場合は, 以下が参考になりそうだ.
依存するアプリケーションのリストなどもある.
また, Debian 4.0 での実行例でもある.
Setting up a BOINC server
((<URL:http://boinc.berkeley.edu/trac/wiki/ServerIntro>))
= 080817 (編集中)
編集中.
= 080819 (サーバの導入. 失敗)
この日の作業は後に繋がらないので, 読み飛ばすことをお薦めする.
== QuickStart
Quick Start をやってみる.
Quick Start
((<URL:http://boinc.berkeley.edu/trac/wiki/QuickStart>))
VMWare player 上で debian-40r0-boinc-server を起動.
ユーザ boincadm でログイン.
$ cd ~/boinc/tools
$ ./make_project --url_base http://127.0.0.1 --test_app test
質問には全て 'y' で答えた.
途中でエラーが出たようだが, そのまま進んでみる.
~/project 以下にファイル, ディレクトリができている.
$ cd ../../projects/test
以下のコマンドが打てない (test.httpd.conf がない)
$ sudo cat test.httpd.conf >> /etc/apache2/httpd.conf
== apache2 の導入練習
手元マシン内の cygwin 上で構築練習してみる.
(本当は研究室の自分のマシンや VMWare 上の Ubuntu がよいのだが,
このときは利用できない環境にあった)
「apache 入門」で検索.
Debian Apache入門
((<URL:http://www2.i-e-c.co.jp/intro0.html>))
cygwin 上で apache のパッケージをインストールする.
サービスを起動しようとしたところ /etc/init.d が存在しない.
cygwin 特有の事情か.
「apache cygwin」で検索.
Cygwin 環境で Apache を動かす
((<URL:http://www.asahi-net.or.jp/~pm5m-on/it/net/apache/>))
$ cd /etc/apache2
$ cp httpd.conf httpd.conf.org
httpd.conf の
#ServerName www.example.com:80
を
ServerName localhost:80
に書き換える.
$ /usr/sbin/apachectl2 start
/usr/sbin/apachectl2: line 78: 1568 Bad system call $HTTPD -k $ARGV
$ /usr/sbin/httpd2 -k start
Bad system call
手詰まり.
手動でインストールしてみる.
本家のドキュメントを参考にした.
Apache HTTP サーバ バージョン 2.2 ドキュメント - Apache HTTP サーバ
((<URL:http://httpd.apache.org/docs/2.2/>))
$ cd /usr/local
$ mkdir src
$ cd src
$ wget http://ftp.riken.jp/net/apache/httpd/httpd-2.2.9.tar.gz
$ tar zxfv httpd-2.2.9.tar.gz
$ cd httpd-2.2.9
$ ./configure --prefix=/usr/local/apache2
$ make
$ make install
$ cd /usr/local/apache2/conf
$ cp httpd.conf httpd.conf.org
httpd.conf の
#ServerName www.example.com:80
を
ServerName localhost:80
に書き換える.
$ cd ../bin
$ ./apachectl -k start
httpd: bad user name daemon
httpd.conf の
User daemon
Group daemon
を
User noda
Group noda
に書き換える. これも cygwin 特有の事情.
$ ./apachectl -k start
httpd: bad group name noda
どうすればよいか?
「apache bad user name」で検索.
LunaTear: CygwinにApache2→失敗
((<URL:http://lunatear.net/archives/000331.html>))
を参考に,
Group SYSTEM
とする.
$ ../bin/apachectl -k start
特にメッセージなし.
Firefox で http://localhost/ を開いても開けない.
cygwin 上で w3m を使って開いても開けない (Google などは開けた).
= 080820 (参考文献)
== 参考文献
「BOINC 研究」で検索したところ,
BOINC を扱った論文の日本語訳のページを発見したのでメモ.
BOINC: A System for Public-Resource Computing and Storage (in Japanese)
((<URL:http://boinc.oocp.org/grid_paper_04.html>))
「2.1 BOINC の目標」より一部引用.
つまり, 実現しているかどうかは分からない.
「
BOINC は、科学研究者がほどほどのコンピュータスキルだけで、大きなパブリック・リソース・コンピューティングのプロジェクトを立ち上げ、運用ができるようにします。 立ち上げ初期に必要な仕事は1週間程度、保守には、週あたり1時間程度でできるようにするのが目標です。 BOINC を使って作ったプロジェクトのサーバは、1台ですませることも可能です。 そのサーバで使うソフトウエアは、普及しているオープンソースのソフトウエア (Linux, Apache, PHP,MySQL, Python)です。
」
「科学研究者が」
「立ち上げ初期に必要な仕事は1週間程度、保守には、週あたり1時間程度でできる」
「のが目標」
というところが本当なら素晴らしいと思う (プロジェクトを作る側として).
= 080821
== 基本方針
しばらくは研究室の自分のマシンだけでテスト.
以下の役割を持たせることにする.
* fermat (CPU: Core 2 Duo E6750 (2.66 GHz), HDD: 500 GB, OS: debian Linux 4.0)
* サーバとしてテスト
* mersenne (CPU: Athlon 64 3800+ (2.4 GHz), HDD: 80 GB, OS: debian Linux 4.0)
* クライアントとしてテスト
ちなみに理由は HDD の大きさ.
計算結果ファイルが集結するサーバの HDD は大きいほうがよいだろう.
== BOINC サーバ構築
fermat にサーバを構築する.
以下のページ (BOINC 本家の Wiki) を参考にしながら作業する.
ServerIntro - BOINC - Trac
Cookbook for Debian 4.0
((<URL:http://boinc.berkeley.edu/trac/wiki/ServerIntro#cookbook-debian40>))
偶然にも debian 上での構築方法. スムーズに作業できることを期待.
=== パッケージ導入
ServerIntro - BOINC - Trac
((<URL:http://boinc.berkeley.edu/trac/wiki/ServerIntro#cookbook-prereq>))
を参考に, apt-get install でパッケージを導入する.
実験として, パッケージにバージョン名らしき数字が記入してあるものは省略した.
たとえば automake1.9 を入れるように書いてあったが,
automake と指定した. すると automake1.10 が入った.
* サーバ, クライアントに共通で必要なパッケージ
m4
make
autoconf
automake
gcc
pkg-config
libtool
subversion
vim
* サーバに必要なパッケージ
apache2-mpm-prefork
libapache2-mod-php5
mysql-client
mysql-server
php5-mysql
php5-cli
php5-gd
phpmyadmin
python-mysqldb
libmysql++-dev
libssl-dev
=== BOINC 用アカウントの作成
適当なユーザでログイン.
$ sudo useradd -m -s /bin/bash boincadm
-m はホームディレクトリを作成する, -s はシェルを指定するオプション.
adduser と違って何も聞かれなかった.
/home/boincadm が出来ていることも確認.
$ sudo usermod -G boincadm www-data
ユーザ www-data の所属するグループ名一覧を確かめる.
$ groups www-data
www-data : www-data boincadm
上記のコマンド usermod 〜 で
www-data が boincadm グループに加わっていることが分かる.
ユーザ boincadm でログインし直す.
以降の作業は, 特に明示しない限りユーザ boincadm で行う.
=== MySQL サーバの設定
MySQL については以下のページも参考にした:
コマンドによるMySQL管理テクニック(1/2) @IT
((<URL:http://www.atmarkit.co.jp/flinux/rensai/mysql03/mysql03.html>))
まず, MySQL の root パスワードを設定する.
最初は root にパスワードが設定されていないので, -p オプションは不要である.
$ mysqladmin -h localhost -u root password mysqlrootpw
これで MySQL 内の root のパスワードが 'mysqlrootpw' に設定された.
ちなみに, パスワードを再設定する場合は上記ではだめである.
例として, root のパスワードを 'hogehoge' に変更したい場合は
$ mysqladmin -h localhost -u root password hogehoge -p
と, -p オプションをつける.
このコマンドを入力すると (古いほうの) パスワードの入力が促される.
次に, MySQL にユーザ boincadm を作る.
$ mysql -h localhost -u root -p
と入力した場合 (MySQL のコマンドを省略した場合),
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 25
Server version: 5.0.32-Debian_7etch6-log Debian etch distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
というプロンプトが現れる.
以下のように入力する.
mysql> grant all on *.* to 'boincadm'@'localhost'; # 権限の設定
Query OK, 0 rows affected (0.00 sec)
mysql> set password for 'boincadm'@'localhost'=''; # パスワードの設定
Query OK, 0 rows affected (0.00 sec)
BOINC wiki 内の記述によると,
"The permissions can be limited to project database only, later;
Defining an empty password simplifies the installation, can be changed later."
とある.
=== wxWidgets library のインストール
自分で BOINC client をビルドしたい場合に必要とのこと.
debian パッケージは apt-get install boinc-client でインストール可能.
今回はパス.
=== BOINC ソースコードのダウンロード
BOINC ソースコードの最新の開発版を subversion で取得する.
$ cd ~
$ svn co http://boinc.berkeley.edu/svn/trunk/boinc boinc_trunk
初回は全部をダウンロードするので時間がかかる. 気長に待つ.
10 分程度で完了した.
最後の行に以下の表示が現れた.
Checked out revision 15915.
~/boinc_trunk ディレクトリができていることを確認.
du -m コマンドによると全部で 251 MB あった.
ちなみに次回以降,
内容を最新版に更新したい場合は以下のコマンドを入力するとのこと.
$ cd ~/boinc_trunk
$ svn update
また, クライアントの安定版を取得したい場合は
以下のコマンドを入力するとのこと. 実際にはやっていない.
(以下の場合は ver. 5.9.5 が取得される?)
$ cd ~
$ svn co http://boinc.berkeley.edu/svn/tags/boinc_core_release_5_9_5/boinc boinc_595
=== ソースのコンパイル
BOINC のコンパイルを行う.
$ cd ~/boinc_trunk
$ ./_autosetup
Bootstrapping configure script and makefiles:
Checking version of 'make' >= 379... succeeded. (381)
Checking version of 'm4' >= 104... succeeded. (104)
Checking version of 'pkg-config' >= 15... succeeded. (21)
Checking version of 'autoconf' >= 258... succeeded. (261)
Checking version of 'automake' >= 108... succeeded. (110)
aclocal -I m4 && autoheader && automake && autoconf
doc/manpages/Makefile.am:21: `%'-style pattern rules are a GNU make extension
Done, now run ./configure
./configure -C to enable caching
$ ./configure --disable-client
config.log を覗いたところ, コンパイラに gcc, g++ を選択していた.
このマシンには icc が入っているので高速化ができるかもしれないと思う.
とりあえず wiki の説明のまま進む.
$ make
== BOINC Quick start
以下のページを参考にする.
Quick start
((<URL:http://boinc.berkeley.edu/trac/wiki/QuickStart>))
さきほど構築した BOINC のあるディレクトリに行く.
$ cd ~/boinc_trunk
$ cd tools
テストプロジェクトを作ってみる.
wiki にある通り, 質問には全て 'y' で答える.
$ ./make_project --url_base http://133.30.109.91 --test_app test
Creating project 'test' (short name 'test'):
PROJECT_ROOT = /home/boincadm/projects/test/
URL_BASE = http://133.30.109.91/
HTML_USER_URL = http://133.30.109.91/test/
HTML_OPS_URL = http://133.30.109.91/test_ops/
CGI_URL = http://133.30.109.91/test_cgi/
KEY_DIR = /home/boincadm/projects/test/keys/
DB_NAME = test
DB_HOST =
Continue? [Y/n] y
Setting up server: creating directories
Keys don't exist in /home/boincadm/projects/test/keys/; generate them? [Y/n] y
Setting up server files: linking cgi programs Done installing default daemons.
Traceback (most recent call last):
File "./make_project", line 292, in ?
shutil.copy('../samples/example_app/uc2', filepath)
File "/usr/lib/python2.4/shutil.py", line 81, in copy
copyfile(src, dst)
File "/usr/lib/python2.4/shutil.py", line 47, in copyfile
fsrc = open(src, 'rb')
IOError: [Errno 2] No such file or directory: '../samples/example_app/uc2'
エラーが出ている!?
$ cd ~/projects/test
sudo cat test.httpd.conf >> /etc/apache2/httpd.conf をせよとのことだが,
test.httpd.conf が存在しないのでできない.
仕方がないので, make_project を覗いてみる.
292 行目にエラーに関連する記述を発見.
shutil.copy('../samples/example_app/uc2', filepath)
== BOINC 構築 (再)
開発版を使ったのがつまづきのもとかもしれないと思い,
安定版 (?) のソースコードを持ってくることにする.
以下のページを参考にする.
SourceCode - BOINC - Trac
((<URL:http://boinc.berkeley.edu/trac/wiki/SourceCode>))
$ cd ~
$ svn co http://boinc.berkeley.edu/svn/trunk/boinc
=== ソースのコンパイル
BOINC のコンパイルを行う.
$ cd ~/boinc
$ ./_autosetup
$ ./configure --disable-client
$ make
=== テストプロジェクトの構築
$ cd ~/boinc/tools
$ ./make_project --url_base http://133.30.109.91 --test_app test
既に 'test' というデータベースがあるので駄目だというエラーが出る.
$ ./make_project --url_base http://133.30.109.91 --test_app test2
先ほど boinc_track でやったのと同じエラーが出る.
make_project をいじってみる.
$ cp make_project make_project.org
292 行目にエラーに関連する記述を発見.
~/boinc/samples/example_app/ の中身を参考に
shutil.copy('../samples/example_app/uc2', filepath)
を
shutil.copy('../samples/example_app/uc2.C', filepath)
と書き換えてみる. (他にも候補としては uc2.c などがある)
$ ./make_project --url_base http://133.30.109.91 --test_app test4
(省略)
Setting up server files: linking cgi programs Done installing default daemons.
Done installing files. Please view
/home/boincadm/projects/test4/test4.readme
for important additional instructions.
とりあえず成功したようだ
(上記の書き換えが uc2.C で合っているかは不明. 追々分かるだろうけど)
$ cd ~/projects/test4
test4.readme の中身は Quick Start のとだいたい同じ.
ただし変数は今回のプロジェクト用の値に置き換わっている.
test4.http.conf を発見. 以下に引用する.
## Settings for BOINC project test4
Alias /test4 /home/boincadm/projects/test4/html/user
Alias /test4_ops /home/boincadm/projects/test4/html/ops
ScriptAlias /test4_cgi /home/boincadm/projects/test4/cgi-bin
# Note: projects/*/keys/ should NOT be readable!
<Directory "/home/boincadm/projects/test4/html">
Options Indexes FollowSymlinks MultiViews
AllowOverride AuthConfig
Order allow,deny
Allow from all
</Directory>
<Directory "/home/boincadm/projects/test4/cgi-bin">
Options ExecCGI
AllowOverride AuthConfig
Order allow,deny
Allow from all
</Directory>
=== Quick Start (再)
では, 再度挑戦.
$ cd ~/projects/test4
$ sudo -s
# cat test.httpd.conf >> /etc/apache2/httpd.conf
# apache2ctl -k restart
apache2: Could not reliably determine the server's fully qualified domain name,
using 127.0.0.1 for ServerName
大丈夫か?
http.conf にて ServerName を指定するとこの警告は出ない.
# exit
$ crontab test4.cronjob
$ ./bin/xadd
以下は wiki の通り, 全部 'y' と答えておく.
$ ./bin/update_versions
Found <App#1 uppercase> version 101 for <Platform#3 i686-pc-linux-gnu>: upperc
ase_1.1_i686-pc-linux-gnu
SECURITY WARNING:
=================
You have not provided a signature file for /home/boincadm/projects/test4/apps/up
percase/uppercase_1.1_i686-pc-linux-gnu/uppercase_1.1_i686-pc-linux-gnu.
I can generate one now, but this is highly unrecommended. Generating code
signatures on network-connected computers is a security vulnerability, and
should not be done for publicly-accessable projects.
Continue with automatically generating a code signature? [y/N] y
Signing /home/boincadm/projects/test4/apps/uppercase/uppercase_1.1_i686-pc-linux
-gnu/uppercase_1.1_i686-pc-linux-gnu
Copying uppercase_1.1_i686-pc-linux-gnu to /home/boincadm/projects/test4/downloa
d/uppercase_1.1_i686-pc-linux-gnu
Ready to commit 1 items:
<AppVersion#None uppercase 101 i686-pc-linux-gnu>
Continue [Y/n] y
Committed:
<AppVersion#1 uppercase 101 i686-pc-linux-gnu>
Touched trigger file to make feeder re-read app_version table from database
Done
$ ./bin/start
Traceback (most recent call last):
File "./bin/start", line 717, in ?
if lock_file(start_lockfile):
File "./bin/start", line 295, in lock_file
file = open(filename,'w')
IOError: [Errno 13] Permission denied: '/home/boincadm/projects/test4/pid_fermat/start.lock.fermat'
You have mail in /var/mail/boincadm
/home/boincadm/projects/test4/pid_fermat/ などが何故か root の持ち物になって
いたので boincadm の持ち物に直す.
$ ./bin/start
Entering ENABLED mode
Starting daemons
Starting daemon: feeder -d 3
Starting daemon: transitioner -d 3
Starting daemon: file_deleter -d 3
Starting daemon: sample_work_generator -d 3
Starting daemon: sample_bitwise_validator -d 3 -app uppercase
Starting daemon: sample_assimilator -d 3 -app uppercase
ブラウザで http://fermat.epa.scitec.kobe-u.ac.jp/test4/ を
見てみたところ, php が動作せず, ファイルをダウンロードするように
なってしまっている.
「debian php 表示できない」の検索を経由して,
「LoadModule php5_module」を検索.
2.2 PHPの環境設定
((<URL:http://www.yc.musashi-tech.ac.jp/~yamada/doc/win_php/0202.html>))
ApacheにPHPモジュールを組み込む
LoadModule php5_module modules/libphp5.so
"*.php"拡張子とPHPを関連づける
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
DirectoryIndex に "index.php" を追加.
DirectoryIndex index.html index.php
modules/libphp5.so が見つからないと怒られる.
仕方なくコメントアウトしてから apache2 を再起動.
$ sudo /etc/init.d/apache2 restart
症状は変わらず.
結局, libapache2-mod-php5 をインストールし忘れていたので原因のようだ.
インストールしてから apache2 を再起動.
ブラウザで http://fermat.epa.scitec.kobe-u.ac.jp/test4/ に
アクセスするとページが表示された.
ページが部分的に日本語になっているのが気持ち悪い.
Windows XP のクライアントでプロジェクトのページとして
上記のページを選択しても, アカウントが作れた.
ためしに Windows XP 上から参加してみる.
以下, BOINC Manager のログ.
2008/08/21 20:29:05||Fetching configuration file from http://fermat.epa.scitec.kobe-u.ac.jp/test4/get_project_config.php
2008/08/21 20:29:13||Fetching configuration file from http://fermat.epa.scitec.kobe-u.ac.jp/test4/get_project_config.php
2008/08/21 21:16:16||Fetching configuration file from http://fermat.epa.scitec.kobe-u.ac.jp/test4/get_project_config.php
2008/08/21 21:18:32||Fetching configuration file from http://fermat.epa.scitec.kobe-u.ac.jp/test4/get_project_config.php
2008/08/21 21:18:59|test4|Master file download succeeded
2008/08/21 21:19:04|test4|Sending scheduler request: Project initialization
2008/08/21 21:19:04|test4|Requesting 1 seconds of new work
2008/08/21 21:19:09|test4|Scheduler RPC succeeded [server version 603]
2008/08/21 21:19:09|test4|You used the wrong URL for this project
2008/08/21 21:19:09|test4|The correct URL is http://133.30.109.91/test4/
2008/08/21 21:19:09|test4|Using the wrong URL can cause problems in some cases.
2008/08/21 21:19:09|test4|When convenient, detach this project, then reattach to http://133.30.109.91/test4/
2008/08/21 21:19:09|test4|Message from server: No work sent
2008/08/21 21:19:09|test4|Message from server: upperCASE is not available for your type of computer.
2008/08/21 21:19:09|test4|Deferring communication for 1 min 0 sec
2008/08/21 21:19:09|test4|Reason: no work from project
2008/08/21 21:20:09|test4|Sending scheduler request: To fetch work
2008/08/21 21:20:09|test4|Requesting 2302 seconds of new work
2008/08/21 21:20:14|test4|Scheduler RPC succeeded [server version 603]
2008/08/21 21:20:14|test4|You used the wrong URL for this project
2008/08/21 21:20:14|test4|The correct URL is http://133.30.109.91/test4/
2008/08/21 21:20:14|test4|Using the wrong URL can cause problems in some cases.
2008/08/21 21:20:14|test4|When convenient, detach this project, then reattach to http://133.30.109.91/test4/
2008/08/21 21:20:14|test4|Message from server: No work sent
2008/08/21 21:20:14|test4|Message from server: upperCASE is not available for your type of computer.
2008/08/21 21:20:14|test4|Deferring communication for 1 min 0 sec
2008/08/21 21:20:14|test4|Reason: no work from project
要は, 「コンピュータとワークの内容があわないので仕事はない」ということ.
確かに Quick Start 内には
"run the BOINC client on a Linux computer" とはある.
= 080822
== Linux client のインストール
BOINC の client として運用する mersenne に
BOINC client をインストールする.
$ ssh mersenne
apt-get でインストールしてみる.
$ sudo apt-get install boinc-client
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
提案パッケージ:
boinc-app-seti boinc-manager kboincspy
以下のパッケージが新たにインストールされます:
boinc-client
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
340kB のアーカイブを取得する必要があります。
展開後に追加で 791kB のディスク容量が消費されます。
取得:1 http://cdn.debian.or.jp etch/main boinc-client 5.4.11-4 [340kB]
340kB を 0s で取得しました (406kB/s)
パッケージを事前設定しています ...
未選択パッケージ boinc-client を選択しています。
(データベースを読み込んでいます ... 現在 88031 個のファイルとディレクトリがイン
ストールされています。)
(.../boinc-client_5.4.11-4_i386.deb から) boinc-client を展開しています...
boinc-client (5.4.11-4) を設定しています ...
Starting BOINC core client: boinc_client.
以下の 1 行が気になる.
Starting BOINC core client: boinc_client.
どうやって止めればいいのか? あちこち見ると
$ boinc_cmd --quit
でよいらしいが, 'Authorization failure: -155' と言われて駄目だった.
仕方ないので
$ sudo /etc/init.d/boinc-client stop
としておいた.
「apt-get boinc」で検索.
玄箱でseti@homeに参加する その2 - きょうのかんぱぱ
((<URL:http://d.hatena.ne.jp/kanpapa/20070407/1175902621>))
止めるのは後にして (最悪の場合パッケージを remove すればいい),
上のページを参考に,
とりあえずプロジェクトに参加してみる.
$ boinc_cmd --host localhost --project_attach
Authorization failure: -155
動かない. help を見る.
$ boinc_cmd --help | less
再度挑戦.
'********' は各ユーザに配布された固有の番号.
$ boinc_cmd --host localhost --project_attach http://setiathome.berkeley.edu ********
Authorization failure: -155
sudo を付加しても同じ.
よくわからない.
話がそれるが, boinc 関係のパッケージを調べてみる.
$ sudo apt-cache search boinc
boinc-app-seti - SETI@home application for the BOINC client
boinc-client - core client for the BOINC distributed computing infrastructure
boinc-dev - development files to build applications for BOINC projects
boinc-manager - GUI to control and monitor the BOINC core client
kboincspy - monitoring utility for the BOINC client
kboincspy-dev - development files for KBoincSpy plugins
client だけだと seti しか参加できないのか?
話を戻す.
使い勝手を良くするため, BOINC Manager も入れる.
$ sudo apt-get install boinc-manager
$ boincmgr
Error: Unable to initialize gtk, is DISPLAY set properly?
GUI の画面が必要ということか.
X で画面を飛ばすようにしたが,
Manager の画面をクリックすると落ちる.
cygwin の X がいけないのか?
== Linux client のインストール(再)
debian パッケージに頼るのは一旦やめておく.
一旦アンインストールする.
$ sudo apt-get remove boinc-manager boinc-client
以下を参考にする.
Release Notes
((<URL:http://boinc.berkeley.edu/trac/wiki/ReleaseNotes>))
適当なディレクトリを作って入る
$ cd ~
$ mkdir boinc
$ cd boinc
本家ダウンロードページ
Download BOINC client software
((<URL:http://boinc.berkeley.edu/download_all.php>))
から Linux x86 用のインストールスクリプトをダウンロード
$ wget http://boincdl.ssl.berkeley.edu/dl/boinc_6.2.15_i686-pc-linux-gnu.sh
$ sh boinc_6.2.15_i686-pc-linux-gnu.sh
use /home/noda/boinc/BOINC/run_manager to start BOINC
$ cd BOINC
$ cat run_manager
cd "/home/noda/boinc/BOINC" && exec ./boincmgr $@
$ ./run_manager
./boincmgr: error while loading shared libraries: libXcomposite.so.1: cannot open shared object file: No such file or directory
必要なパッケージの導入を忘れていた.
=== 依存するパッケージの導入
以下のページを参照
ServerIntro - BOINC - Trac
((<URL:http://boinc.berkeley.edu/trac/wiki/ServerIntro>))
mersenne にて client を動かすため
以下のパッケージを導入する:
* 共通パッケージ
m4
make
autoconf
automake
gcc
g++
pkg-config
libtool
subversion
vim
* client に必要なパッケージ
libssl-dev
libglut3-dev
glutg3-dev
libglui-dev
libglitz-glx1-dev
libsdl1.2-dev
libcurl3-dev
freeglut3
freeglut3-dev
libsm-dev
libice-dev
libxmu-dev
libxi-dev
libx11-dev
libjpeg62-dev
libgtk2.0-0
libgtk2.0-0-dev が見つからない.
代わりに libgtk2.0-dev を入れておく.
== Linux client のインストール(3)
再度実行.
$ cd ~/boinc/BOINC
$ ./run_manager
./boincmgr: error while loading shared libraries: libXcomposite.so.1: cannot open shared object file: No such file or directory
症状変わらず.
$ sudo apt-get install libxcomposite-dev
$ ./run_manager
./boincmgr: /lib/tls/i686/cmov/libc.so.6: version `GLIBC_2.4' not found (required by ./boincmgr)
apt-get では glibc-2.3.6-2 がある.
代わりにこれを選択すると, その代わりに libc6 が選択された.
libc6 は既にインストールされている.
古い安定版である ver. 5.10.45 を入れてみる.
(さっき入れたのは ver. 6.2.15)
$ cd ~/boinc
$ rm -r BOINC
$ wget http://boincdl.ssl.berkeley.edu/dl/boinc_ubuntu_5.10.45_i686-pc-linux-gnu.sh
'ubuntu' の記述が気になるがそのまま進む.
$ sh boinc_ubuntu_5.10.45_i686-pc-linux-gnu.sh
$ ./run_manager
さっきと同じ症状.
'Older Linux x86 and x64' の ver. 6.2.15 を試す.
$ wget http://boincdl.ssl.berkeley.edu/dl/boinc_compat_6.2.15_i686-pc-linux-gnu.sh
$ sh boinc_compat_6.2.15_i686-pc-linux-gnu.sh
use /home/noda/boinc/BOINC/run_client to start BOINC
manager がないバージョンのようだ.
$ ./run_client
ログが流れていく. とりあえず走った.
kill で一旦強制終了.
SETI@home を走らせてみる.
$ ./boinc_cmd --project_attach http://setiathome.berkeley.edu ********
connect: Connection refused
can't connect to local host
$ ./run_client &
ログが標準出力で流れてしまうが, ここは我慢.
$ ./boinc_cmd --project_attach http://setiathome.berkeley.edu ********
SETI@home につながる.
ベンチマークが走る. 結果は以下の通り.
22-Aug-2008 20:14:22 [---] 1372 floating point MIPS (Whetstone) per CPU
22-Aug-2008 20:14:22 [---] 2780 integer MIPS (Dhrystone) per CPU
その後, SETI@home のジョブをもらってきたようだ.
別の端末画面を開き top してみると,
優先度が 19 (つまり最低) になっている.
CPU 稼働率は最高で 66 % くらい. シングルコアなのに何故?
それにしても, 画面がうるさい.
どこかにリダイレクトするよう設定しておくべきだろう.
preferences 設定はどこでいじるのか? と思ってディレクトリ内を見回す.
どうやら,
global_prefs.xml
がそれのようだ.
一旦終了する.
$ ./boinc_cmd --quit
global_prefs.xml 内の cpu_usage_limit の値を 60.0 から 100.0 に書き換え,
再起動する. ログの出力をファイルにする.
$ ./run_client > log_client.txt &
top すると, 今度は seti が 100 % 稼動していた.
preference の設定ファイルであることを確信.
今度は daemon モードで起動してみる.
$ ./run_client --daemon
コマンドで, バックグラウンドであることを明示しなくてもよい.
終了するときはさっきと同じく
$ ./boinc_cmd --quit
でよい.
走らせた後, 手元にファイル stdoutdae.txt, stderrdae.txt ができていた.
最低限の使い方は分かった.
実用的には, ユーザがログアウトしても動き続けるようにしなくてはならない.
== テストプロジェクトの動作確認
昨日, 自分で作ったプロジェクトのページ
http://fermat.epa.scitec.kobe-u.ac.jp/test4/
の "Your account" のページに行くと,
(自分で発行した覚えはないのに)
accout key が載っている.
この key を使って
mersenne にある client から fermat のジョブを取得してみる.
mersenne にてクライアントを起動する.
daemon モードではログの見方が分からないので手元のファイルに出力するようにする.
$ cd boinc/BOINC
$ ./run_client > log_client.txt
プロジェクトに参加する.
$ ./boinc_cmd --project_attach http://fermat.epa.scitec.kobe-u.ac.jp/test4/ \
********
top で CPU 使用率を見ていたが, 一向に現れない (SETI しか走っていない).
ログを見たところ,
22-Aug-2008 20:57:31 [test4] Message from server: Server error: can't attach shared memory
とあった.
projects/fermat.epa.scitec.kobe-u.ac.jp_test4 以下を見る.
ファイルが 2 つあった.
* uc_1219316705_10
* uppercase_1.1_i686-pc-linux-gnu (実行属性あり)
ファイル 'uc_1219316705_10' には
This is the input file for job uc_1219316705_10
とだけ書かれていた.
実行ファイルとおぼしき uppercase_1.1_i686-pc-linux-gnu を直接実行してみる.
$ ./uppercase_1.1_i686-pc-linux-gnu
./uppercase_1.1_i686-pc-linux-gnu: line 1: //: is a directory
./uppercase_1.1_i686-pc-linux-gnu: line 2: //: is a directory
./uppercase_1.1_i686-pc-linux-gnu: line 3: syntax error near unexpected token `('
./uppercase_1.1_i686-pc-linux-gnu: line 3: `// Copyright (C) 2008 University of California'
なぜバイナリに 'Copyright' とか書かれている?
less してみたところ, 単なるソースファイルだった.
書き換えの際にミスしたようだ.
本当はバイナリをコピーするように書かないといけなかったようだ.
プロジェクト test4 から離脱.
このコマンドは client が稼動してなくても実行できた.
$ ./boinc --detach_project http://fermat.epa.scitec.kobe-u.ac.jp/test4/
マシン fermat へ行く.
「バイナリ」として配布されていたのは
fermat:/home/boincadm/projects/test4/apps/uppercase/uppercase_1.1_i686-pc-linux-gnu
のもよう.
== Quick start (3)
サーバである fermat に戻り, 新しいプロジェクトを作成.
boincadm でログイン.
$ cd ~
$ cd boinc/tools
$ ./make_project --url_base http://fermat.epa.scitec.kobe-u.ac.jp \
--test_app test5
make_project の修正を忘れていた. やりなおし.
ところで, 同じ名前のプロジェクトを作ろうとすると,
Project root already exists! Specify --delete_prev_inst --drop_db_first to clobber
というエラーメッセージが出る.
プロジェクトを削除してみる.
$ ./make_project --delete_prev_inst --drop_db_first test5
単にプロジェクトが新しくなっただけのようだ.
削除については後回し.
もとに戻って, make_project スクリプトの修正.
../samples/example_app 内のバイナリを指定しなくてはならない.
$ ~/boinc/samples/example_app
中を見てみたら, バイナリがない. コンパイルに失敗したのか?
手で make してみる.
$ make
g++ -g -DAPP_GRAPHICS -I../.. -I../../lib -I../../api -L../../api -L../../lib -L
/usr/X11R6/lib -L. -c -o uc2.o uc2.C
g++ -g -DAPP_GRAPHICS -I../.. -I../../lib -I../../api -L../../api -L../../lib -L
/usr/X11R6/lib -L. -o uc2 uc2.o libstdc++.a -pthread -lboinc_api -lboinc
g++: libstdc++.a: No such file or directory
make: *** [uc2] Error 1
パッケージを調べてみたところ, libstdc++6, libstdc++5 は既に入っている.
Makefile.debian なるものがあるのでそれを使ってみる.
$ make clean
$ make -f Makefile.debian
同じ症状.
debian パッケージ検索で libstdc++.a を探し,
それを含むパッケージ libstdc++6-dev を入れる.
$ make clean
$ make -f Makefile.debian
同じ症状.
= 080823
== Quick Start (続き)
=== make_project に関するトラブルシューティング
fermat 内の BOINC サーバのトラブルシューティング
fermat に boincadm としてログイン.
$ cd ~/boinc/samples/example_app
Makefile.debian の
libstdc++.a
を
-lstdc++
に変更.
Makefile を見れば分かることだが, uc2, uc2_graphics という 2 つの
バイナリを作成していることがわかる.
$ make -f Makefile.debian
大量のエラーが出るが, 全て uc2_graphics.C に関するものなので後回し.
ディレクトリ内には uc2 というバイナリができている.
試しにこれを実行してみる.
$ ./uc2
一瞬で終わった.
stderr.txt というファイルができていて,
Can't open init data file - running in standalone mode
Couldn't find input file, resolved name in.
と記述されている.
boinc_lockfile というファイルもできていたがこれは空.
今気づいたが, Makefile の最初に
# Do this first:
# ln -s `g++ -print-file-name=libstdc++.a`
# This creates a symbolic link to the C++ library,
# which is linked statically
と書かれていたことに気づく.
$ make clean
$ ln -s `g++ -print-file-name=libstdc++.a`
$ make
動作はさっきと一緒のようだ.
Makefile を編集しない分, こっちが楽だ.
=== テストプロジェクトの作成
改めてテストプロジェクトを作ることにする.
$ cd ~/boinc/tools
前にいじっていた make_project をなかったことにする.
バックアップしていたオリジナルのファイルを元に戻す.
$ cp make_project.org make_project
テストプロジェクトを作成.
$ ./make_project --url_base http://fermat.epa.scitec.kobe-u.ac.jp --test_app test6
質問には全て 'y' と答える.
エラーもなく完了.
$ cd ~/projects/test6
念のため, バイナリを確認.
$ cd apps/uppercase/uppercase_1.1_i686-pc-linux-gnu
$ ./uppercase_1.1_i686-pc-linux-gnu
ok. 掃除しておく.
$ rm stderr.txt boinc_lockfile
元の場所へ戻る.
$ cd ~/projects/test6
$ sudo -s
# cat test6.httpd.conf >> /etc/apache2/httpd.conf
前に書いていた, test4 用の設定は削除した.
# apache2ctl -k restart
ブラウザで http://fermat.epa.scitec.kobe-u.ac.jp/test6/ にアクセス.
プロジェクトページが見えることを確認.
# exit
$ crontab test6.cronjob
$ ./bin/xadd
$ ./bin/update_versions
セキュリティの警告が出るが, 全て 'y' と答えておく.
$ ./bin/start
少し待つ (10 秒程度).
これでプロジェクトが立ち上がった.
=== アカウントの追加
client 側である mersenne にログイン.
$ cd boinc/BOINC
$ ./run_client --daemon # 起動
コマンドラインでアカウントを追加 (= 新規プロジェクトに参加) してみる.
オプションは前から,
プロジェクトの URL, メールアドレス, パスワード, アカウント名, である.
$ ./boinccmd --create_account http://fermat.epa.scitec.kobe-u.ac.jp/test6/ \
xxx_at_xxx.xx.xx hogehoge noda
status: Success
poll status: operation in progress
account key: ********
アカウントキーは覚えておく.
忘れたときは lookup_account オプションを使えばよい.
詳しくは ./boinccmd --help の結果を参照のこと.
先ほど発行されたアカウントキーを使ってプロジェクトからジョブをもらってくる.
$ ./boinccmd --project_attach http://fermat.epa.scitec.kobe-u.ac.jp/test6/ \
********
stdoutdae.txt を見る限りでは, ジョブのダウンロードは完了したようだ.
しかし top コマンド上では seti しか動いていない.
1 CPU だからだろうか? test6 はキューの後ろに並んでいる?
SETI@home から離脱してみる.
$ ./boinc --detach_project http://setiathome.berkeley.edu
おっと, boinccmd が動いているからできなかった.
$ ./boinccmd --quit
$ ./boinc --detach_project http://setiathome.berkeley.edu
再起動.
$ ./boinccmd --daemon
connect: Connection refused
can't connect to local host
どうやら ./boinc が起動したままのようだ. というのも,
$ ./boinc --daemon
だと起動できたからである.
top を見ると, uppercase というコマンドが走っている.
これは test6 で配布したバイナリである.
成功.
stdoutdae.txt を見ると, 次々とワークユニットを処理しているもよう.
=== 手持ちのアプリケーションを走らせてみる
$ cd ~/projects/test6
$ html/ops/single_job_setup.php ~/boinc/samples
/home/boincadm/boinc/samples/wrapper/wrapper doesn't exist.
Make sure you've built boinc_samples.
現地へ飛ぶ.
$ cd ~/boinc/samples/wrapper
wrapper なんてファイルはない.
Makefile が転がっていることから, コンパイルが必要か.
$ make
(省略)
g++: libstdc++.a: No such file or directory
make: *** [wrapper] Error 1
さっきと同じエラーのようだ.
Makefile 内にもさっきと同じようなことが書いてある.
$ ln -s `g++ -print-file-name=libstdc++.a`
$ make
コンパイルが通った.
さっきの場所へ戻って再挑戦.
$ cd ~/projects/test6
$ html/ops/single_job_setup.php ~/boinc/samples
Installing current wrapper.
- type 'bin/update_versions', and answer 'y' to all questions.
- Add the following to the <daemons> section of config.xml:
<daemon>
<cmd>single_job_assimilator -app single_job_i686-pc-linux-gnu</cmd>
<output>single_job_assimilator_i686-pc-linux-gnu.out</output>
<pid>single_job_assimilator_i686-pc-linux-gnu.pid</pid>
</daemon>
<daemon>
<cmd>sample_trivial_validator -app single_job_i686-pc-linux-gnu</cmd>
<output>sample_trivial_validator_i686-pc-linux-gnu.out</output>
<pid>sample_trivial_validator_i686-pc-linux-gnu.pid</pid>
</daemon>
Then restart your project by typing
bin/stop
bin/start
言われたままやってみる.
$ ./bin/update_versions
質問にはすべて 'y' と答える.
config.xml の <daemon> セクション (ファイルの最後のほう) に以下を追記.
<daemon>
<cmd>single_job_assimilator -app single_job_i686-pc-linux-gnu</cmd>
<output>single_job_assimilator_i686-pc-linux-gnu.out</output>
<pid>single_job_assimilator_i686-pc-linux-gnu.pid</pid>
</daemon>
<daemon>
<cmd>sample_trivial_validator -app single_job_i686-pc-linux-gnu</cmd>
<output>sample_trivial_validator_i686-pc-linux-gnu.out</output>
<pid>sample_trivial_validator_i686-pc-linux-gnu.pid</pid>
</daemon>
BOINC サーバの再起動.
$ ./bin/stop
Entering DISABLED mode
Stopping all daemons
Killed process 26118
Killed process 26116
Killed process 26122
Killed process 26120
Killed process 26112
Killed process 26114
Waiting for process 26116 to end: . ok
Waiting for process 26112 to end: ... ok
$ ./bin/start
Entering ENABLED mode
Starting daemons
Starting daemon: feeder -d 3
Starting daemon: transitioner -d 3
Starting daemon: file_deleter -d 3
Starting daemon: sample_work_generator -d 3
Starting daemon: sample_bitwise_validator -d 3 -app uppercase
Starting daemon: sample_assimilator -d 3 -app uppercase
Starting daemon: single_job_assimilator -app single_job_i686-pc-linux-gnu
Starting daemon: sample_trivial_validator -app single_job_i686-pc-linux-gnu
実行するバイナリの作成.
$ cd ~
以下の内容のファイルを作成し, test.f90 と名づける.
program test
write(*,*) 'Hello world.'
end program test
$ ifort test.f90
$ ./a.out
Hello world.
ジョブを投入してみる.
$ ./boinc/tools/boinc_submit --stdout foo a.out
You must set the environment variable BOINC_PROJECT_DIR
to the path of a BOINC project, e.g.:
> export BOINC_PROJECT_DIR=~/projects/my_project
or in csh:
> setenv BOINC_PROJECT_DIR ~/projects/my_project
環境変数の設定を行う.
$ export BOINC_PROJECT_DIR=~/projects/test6
再挑戦.
$ ./boinc/tools/boinc_submit --stdout foo a.out
August 23, 2008, 5:36 PM: job 301 is in progress
(no instances yet)
August 23, 2008, 5:36 PM: job 301 is in progress
Instance 0: unsent
August 23, 2008, 5:36 PM: job 301 is in progress
Instance 0: unsent
(省略)
いつまでも送信されない?
Ctrl + c で端末に戻る.
'job 301' とは, 今動いているテストジョブのことか?
$ ./boinc/tools/boinc_submit --help
$ ./boinc/tools/boinc_submit --jobs # pending jobs を見る
Jobs for Linux running on an Intel x86-compatible CPU:
Job 301: in progress
$ ./boinc/tools/boinc_submit --abort 301
Job 301 has been aborted.
$ ./boinc/tools/boinc_submit --jobs
Jobs for Linux running on an Intel x86-compatible CPU:
Job 301: completed
301 は今送信した job であった.
$ ./boinc/tools/boinc_submit --stdout foo a.out
August 23, 2008, 5:48 PM: job 302 is in progress
(no instances yet)
August 23, 2008, 5:48 PM: job 302 is in progress
Instance 0: unsent
August 23, 2008, 5:48 PM: job 302 is in progress
Instance 0: unsent
ジョブの送信に不具合があるのか?
(一旦ここで fermat からログアウト
席を離れるときにうっかりマシンをスタンバイにしてしまっただけ))
再度 fermat に行くと, ホームに
job_summary_301, job_summary_302
というファイルができていた.
$ cat job_summary_301
The job was not successfully completed.
Error: 0x10
302 番のジョブを abort してから, 2 つのジョブを送信してみる.
$ ./boinc/tools/boinc_submit --jobs
Jobs for Linux running on an Intel x86-compatible CPU:
Job 301: completed
Job 302: completed
Job 303: in progress
Job 304: in progress
'Intel x86-compatible CPU' がいけないのか?
最初に sample プロジェクトを実行してから 3 時間半.
sample プロジェクトのジョブは枯渇したようだ.
他にジョブがないにも関わらず, a.out は送信されない.
話は少し変わるが,
あちこち見て回っていたところ,
以下のディレクトリに「リザルト」が格納されているようだ.
download
sample_results
upload
=== fermat に client をインストール
ジョブが送信されないのは CPU の種類が違うせいか確かめる.
fermat に client をインストールする
boincadm@fermat$ cd ~
$ mkdir client
$ cd client
'Older Linux x86 and x64' の ver. 6.2.15 を試す.
$ wget http://boincdl.ssl.berkeley.edu/dl/boinc_compat_6.2.15_i686-pc-linux-gnu.sh
$ sh boinc_compat_6.2.15_i686-pc-linux-gnu.sh
use /home/boincadm/client/BOINC/run_client to start BOINC
$ cd BOINC
$ ./run_client --daemon
$ ./boinccmd --project_attach http://fermat.epa.scitec.kobe-u.ac.jp/test6/ \
********
test6 からタスクをガンガン取得しはじめた.
1 つの計算について, 複数のマシンで結果を比較するよう設定されていたようだ.
しかし, single job については動きがないように見える.
話は脱線して,
いろいろネットで調べていたところ,
SingleJob - BOINC - Trac
((<URL:http://boinc.berkeley.edu/trac/wiki/SingleJob>))
* Single job submission は wrapper を用いている.
* 今のところ, wrapper は Linux/Intel32 以外に対応していないとのこと.
fermat でclient を動かし始めて 15 分くらい経った頃,
single job が実行された.
$ cat job_summary_303
Job was completed by host 2.
CPU time: 0.000000 seconds
$ cat foo
Hello world.
やはり, mersenne の CPU が Athlon だったのが原因か?
single job の実行がすぐでなかったのは, 何故か?
sample プロジェクトと一緒にキューに並んでいるのか?
多少の疑問はあるが, とりあえず tutorial (Quick start) は成功.
== Project creation cookbook
今度は
Project creation cookbook
((<URL:http://boinc.berkeley.edu/trac/wiki/CreateProjectCookbook>))
の通りにやってみる.
=== ウェブページの最低限の内容変更
~/projects/test6/html/project/project.inc の中の
* REPLACE WITH PROJECT NAME
* REPLACE WITH COPYRIGHT HOLDER
を適当なものに書き換える.
ブラウザでプロジェクトページを再読み込みすると,
"REPLACE WITH ..." が置き換わっている.
"XXX is a ..." などの本文については
~/projects/test6/html/user/index.php などを直接書き換える必要があるようだ.
=== html/ops にパスワードをかける
http://fermat.epa.scitec.kobe-u.ac.jp/test6_ops/
は管理用のページのようである.
一般からアクセスできないように,
例えば htpasswd コマンドで .htaccess と .htpasswd を作れ, とある.
とりあえず, .htaccess を作る.
場所は, アクセス制限するディレクトリの上.
$ cd ~/projects/test6/html/ops
$ vi .htaccess
以下を書き込む.
AuthUserFile /home/boincadm/projects/test6/html/ops/.htpasswd
AuthGroupFile /dev/null
AuthName "test6 admin"
AuthType Basic
require user XXXXXXXX
require valid-user
<Files ~ "\.(htpasswd|htaccess)$">
deny from all
</Files>
XXXXXXXX には適当なユーザ名を記入する.
ちなみに, 上記は
.htaccessの小技編 - アクセス制限ベーシック認証〜パスワードでページを守ろう〜 - futomi's CGI Cafe
((<URL:http://www.futomi.com/lecture/htaccess/htpasswd.html>))
などを参考にした.
$ chmod 604 .htaccess
これについては
.htaccessの設定解説
http://htaccess.pasoa.com/
を参考にした.
.htpasswd ファイルを作る.
$ htpasswd -c /home/boincadm/projects/test6/html/ops/.htpasswd XXXXXXXX
やることはやってみたが, ops 以下を見ようとしても 403 Forbidden になる.
はまり込みそうなので, ここは一旦飛ばす.
事故を招かないように, .ht* も一旦削除しておく.
=== テストプロジェクト
さっきやったのでパス.
ちなみに,
適当なディレクトリ boinc_test などを作ってそこに入り,
$ cp ../boinc/client/boinc_client .
$ cp ../boinc/lib/boinc_cmd .
としてもよかったようだ (client もコンパイルした場合に限る).
=== 手持ちのアプリケーションを加える
さきほど行った single job よりは高度な方法で
手持ちのアプリケーションを走らせる.
$ cd ~/projects/test6
$ cp config.xml config.xml.org
config.xml 内の最後のほうにある
sample_bitwise_validator -d 3 -app uppercase
と
sample_assimilator -d 3 -app uppercase
が含まれる項目を削除する.
project.xml に自分の加えたいアプリケーション名を加える.
具体的には,
<app>
<name>uppercase</name>
<user_friendly_name>upperCASE</user_friendly_name>
</app>
の下に真似して
<app>
<name>addition</name>
<user_friendly_name>Addition</user_friendly_name>
</app>
を追記した.
アプリケーションを登録する.
$ ./bin/xadd
この時点では config.xml に変化はなかった.
適当なプログラムを作る.
program test
j=0
do i=0,1000000000
j=j+1
end do
write(*,*) j
write(*,*) 'Addition was done.'
end program test
$ ifort -o addition addition.f90
$ ./addition
1000000001
Addition was done.
fermat では 0.6 sec くらいで終わった.
ふと気がついた. ページには
"Write a BOINC application ..."
とある.
BOINC 用の API を積んだ, BOINC と通信できるプログラムが必要であった.
これはすぐには書けないので, 一旦中止.
wrapper や BOINC API の使い方を学ぶことにする.
= 080824
== desktop Grid computing
BOINC のトップページから,
"desktop Grid computing" のリンクを通じて飛べる
"Grid computing with BOINC" というページに注目した.
DesktopGrid - BOINC - Trac
((<URL:http://boinc.berkeley.edu/trac/wiki/DesktopGrid>))
BOINC は,
一般市民のコンピュータの力を借りる 'volunteer computing' だけでなく,
研究室や企業の中だけで閉じた計算をする 'desktop Grid computing' も想定して
作られているようだ.
"Grid versus volunteer computing" という項目がページ内にあるように,
'Grid computing' と 'volunteer computing' の言葉の定義が
今までの私の認識と違うように感じた.
これまでの認識では, 'volunteer computing' は 'Grid computing' に
含まれるものであったが, このページの文脈からすると,
一般開放すると 'Grid computing' でなくなるように読める.
'desktop Grid computing' に話を戻す.
文中には, 使うマシンは信頼性が高いので冗長性の処理は不要であることなどが
書かれている.
簡単化できるのでツールもあるらしい.
また,
"You might also want to include files
that allow clients to be remotely monitored and controlled."
ということはジョブを投げた後も,
ジョブ取り消しなどの多少の制御も可能のようだ.
ページの最後には
For more information on grid computing using BOINC,
and some useful pre-compiled software, visit Desktopgrid.hu.
とある. "some useful pre-compiled software" につられて
"Desktopgrid.hu" のリンクを選択.
行った先は,
SZTAKI Desktop Grid
((<URL:http://desktopgrid.hu/>))
であった. SZTAKI は以前から聞いたことがある.
しかしこれは BOINC を使ったプロジェクトに過ぎないのでは?
読み進めてみると,
SZTAKI Desktop Grid is basically a BOINC server packed
in a Debian(R) package, to make server deployment as easy as possible.
とある.
SZTAKI 自体は
BOINC プロジェクトを立ち上げるのを支援するユーティリティのようだ.
さらに読み進めると,
Supported Research
SZTAKI Desktop Grid is currently hosting the BinSYS project.
とある.
つまり, 'BinSYS project' が本当のプロジェクト名ということ.
日本語では, 間違って紹介されている.
ソフトウェアを配布していることが紹介されていないので損をしているかも.
DC-API なる API が配布されている.
The DC-API
((<URL:http://desktopgrid.hu/index.php?page=24>))
によると,
The DC-API was created by MTA SZTAKI to allow
easy implementation and deployment of distributed applications
on multiple grid environments.
だそうだ.
DC_initMaster() といった API を呼び出すことで,
サーバ, クライアントを簡単に作れるようにしているらしい.
ここで提供されている API は
BOINC API のかぶせ物か, それとも独自のコードか? (後者の気がする)
== SZTAKI Desktop Grid
今度は 'SZTAKI Desktop Grid' 内の
Install Your Own Desktop Grid
((<URL:http://desktopgrid.hu/index.php?page=23>))
を参考にサーバを構築してみる.
理由は, こっちのほうが研究に使いやすそうに感じたこと,
チュートリアルが分かりやすそう, の 2 つ.
fermat にログイン.
/etc/hosts, メールサーバの設定はパス.
BOINC に必要なパッケージは全てインストールしたつもりだが,
念のため, 記述通りに以下のパッケージをインストールする.
$ sudo apt-get install apache2-mpm-prefork libapache2-mod-auth-plain
$ sudo apt-get install libapache2-mod-php5 php5-cli
$ sudo apt-get install mysql-server-5.0 php5-mysql
$ sudo apt-get install pwgen # これはなくてもよいだろう
libapache2-mod-auth-plain, pwgen が新たにインストールされた.
mysqladmin にて mysql の root パスワードの設定をするのは既に完了.
root で /root/.my.cnf を作成し, 以下のように記述する:
[mysql]
user = root
password = <password>
[mysqladmin]
user = root
password = <password>
<password> には, mysql の root パスワードを記述する.
root で /etc/apt/sources.list に以下を追記する:
deb http://www.desktopgrid.hu/debian/ etch szdg
# apt-get update
(省略)
W: GPG error: http://www.desktopgrid.hu etch Release: The following
signatures couldn't be verified because the public key is not
available: NO_PUBKEY XXXXXXXXXXXXXXXX
W: You may want to run apt-get update to correct these problems
GPG error が出た.
# apt-key advanced --keyserver wwwkeys.eu.pgp.net --recv-keys XXXXXXXXXXXXXXXX
Executing: gpg --no-options --no-default-keyring --secret-keyring
/etc/apt/secring.gpg --trustdb-name /etc/apt/trustdb.gpg
--keyring /etc/apt/trusted.gpg --keyserver wwwkeys.eu.pgp.net
--recv-keys XXXXXXXXXXXXXXXX
gpg: requesting key XXXXXXXX from hkp server wwwkeys.eu.pgp.net
gpg: key XXXXXXXX: public key "SZTAKI Desktop Grid Automatic
Signing Key <desktopgrid@lpds.sztaki.hu>" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg: imported: 1
# apt-get update
今度は成功.
BOINC のインストール.
ページに 'for local usage' とに示されていた方をインストール.
# apt-get install boinc boinc-skin-ldg
boinc というパッケージが見つからない. ので後のパッケージのみインストール.
# apt-get install boinc-skin-ldg
後の文章から, 'boinc' は 'boinc-server' の間違いではないかと思い,
boinc-server をインストール.
# apt-get install boinc-server
boinc_create_project といったコマンドが使えるようになった.
たぶん正解.
テストプロジェクト名を決める.
long name: test of SZTAKI 1
short name: test_sz1
root で以下のコマンドを実行する
# boinc_create_project --name test_sz1 --long-name 'test of SZTAKI 1'
Creating user boinc-test_sz1
ERROR: Failed to create the project user
Check /var/log/boinc.log for further details
# cat /var/log/boinc.log
2008-08-24 22:52:05 create_project Notice: Creating user boinc-test_sz1
2008-08-24 22:52:05 create_project Debug: Running '/usr/sbin/adduser' '--system' '--quiet' '--home' '/var/lib/boinc/test_sz1' '--shell' '/bin/bash' '--group' '--gecos' 'test of SZTAKI 1' 'boinc-test_sz1'
2008-08-24 22:52:05 create_project Debug: -- Begin command output --
adduser: Please enter a username matching the regular expression configured
via the NAME_REGEX configuration variable. Use the `--force-badname'
option to relax this check or reconfigure NAME_REGEX.
2008-08-24 22:52:05 create_project Debug: -- End command output, exit code: 1 --
よく見ると, 入力したコマンドが間違っていた ('=' を付け忘れていた) のでやり直し.
# boinc_create_project --name=test_sz1 --long-name='test of SZTAKI 1'
同じ結果.
NAME_REGEX について調べてみる.
入力したユーザ名が環境変数 NAME_REGEX による正規表現 (?) に従っていない
とのこと.
short name の '_' を取って 'testsz1' とする.
# boinc_create_project --name=testsz1 --long-name='test of SZTAKI 1'
Creating user boinc-testsz1
Creating directory /etc/boinc/testsz1
Creating /etc/boinc/testsz1/boinc_env.sh
Creating /etc/boinc/testsz1/config.xml
Creating /etc/boinc/testsz1/project.xml
Creating /var/lib/boinc/testsz1/.my.cnf
Granting permissions on database boinc_testsz1 to boinc-testsz1
ERROR: GRANT command failed
Undoing changes
Removing /var/lib/boinc/testsz1/.my.cnf
Removing /etc/boinc/testsz1/project.xml
Removing /etc/boinc/testsz1/config.xml
Removing /etc/boinc/testsz1/boinc_env.sh
Removing directory /etc/boinc/testsz1
Warning: Directory /etc/boinc/testsz1 is not owned by boinc-testsz1, not removing
Deleteing user boinc-testsz1
Check /var/log/boinc.log for further details
もう 1 回実行すると,
# boinc_create_project --name=testsz1 --long-name='test of SZTAKI 1'
Creating user boinc-testsz1
ERROR: A project with this name already exists
Check /var/log/boinc.log for further details
/var/log/boinc.log には詳細な情報はなし.
boinc-testsz1 ユーザが残っているのかと思って以下のコマンドを実行する.
# deluser boinc-testsz1
/usr/sbin/deluser: The user `boinc-testsz1' does not exist.
どうやら mysql か何かに設定が残ってしまっているようだ.
プロジェクトを作るコマンドがあるなら削除するコマンドもあるだろうと思い,
探し出す.
使い方は --help コマンドで出てきた.
# boinc_delete_project --name=testsz1
WARNING!
This script removes the BOINC project 'testsz1' and ALL of its data.
Type 'yes' if this is what you want: yes
Warning: Failed to stop project: /var/lib/boinc/testsz1/project/bin/start does not exist or is not executable
/etc/cron.d/boinc-testsz1 does not exist
/etc/boinc/testsz1/project.xml does not exist
Removing permissions on database boinc_testsz1 from boinc-testsz1
Dropping database boinc_testsz1
/var/lib/boinc/testsz1/.my.cnf does not exist
/etc/boinc/testsz1/boinc_env.sh does not exist
/etc/boinc/testsz1/config.xml does not exist
Removing directory /etc/boinc/testsz1
User boinc-testsz1 does not exist
# boinc_create_project --name=testsz1 --long-name='test of SZTAKI 1'
さっきと変わらず.
だめもとで, sudo でなく root でログインする.
# su -
# boinc_create_project --name=testsz2 --long-name='test of SZTAKI 2'
Creating user boinc-testsz2
Creating directory /etc/boinc/testsz2
Creating /etc/boinc/testsz2/boinc_env.sh
Creating /etc/boinc/testsz2/config.xml
Creating /etc/boinc/testsz2/project.xml
Creating /var/lib/boinc/testsz2/.my.cnf
Granting permissions on database boinc_testsz2 to boinc-testsz2
Setting the owner of /etc/boinc/testsz2
Executing make_project
Renaming the scheduler from cgi-bin/cgi to cgi-bin/scheduler
Fixing security problems of make_project
Fixing up /var/lib/boinc/testsz2/project/html/project/project.inc
Creating /var/lib/boinc/testsz2/project/run_state_fermat.xml
Creating /etc/cron.d/boinc-testsz2
Creating /etc/apache/conf.d/boinc-testsz2.conf
Reloading Apache
Creating /etc/apache2/conf.d/boinc-testsz2.conf
Reloading Apache2
Creating empty /etc/boinc/testsz2/admin_users
Creating initial empty statistics
成功したのは良かったが,
いちいち root でログインしないといけないのは汎用性が低い.
sudo でもなんとかならないか試してみる.
$ sudo -s
# cd /root
# boinc_create_project --name=testsz3 --long-name='test of SZTAKI 3'
(省略)
Granting permissions on database boinc_testsz3 to boinc-testsz3
ERROR: GRANT command failed
Undoing changes
(省略)
# less /var/log/boinc.log
(省略)
2008-08-24 23:20:20 create_project Debug: -- Begin command output --
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
2008-08-24 23:20:20 create_project Debug: -- End command output, exit code: 1 --
(省略)
mysql のパスワードでこけている.
一時的に mysql の root パスワードを空にしてみる
# mysqladmin -u root password '' -p
-p オプションなしでも root になれるようになった.
例えば以下のコマンドも入力できた.
# mysqladmin -u root password ''
/root/.my.cnf の中も同様に書き換える.
password の欄は以下のようにした.
password =
# boinc_create_project --name=testsz4 --long-name='test of SZTAKI 4'
成功.
しかし空パスワードは良くない. 今の設定は元に戻す.
実行しているユーザの環境変数から .my.cnf の
在り処を探しているのではないかと考える.
# cp /root/.my.cnf /home/boincadm
# boinc_create_project --name=testsz5 --long-name='test of SZTAKI 5'
成功.
研究室のサーバで複数人がそれぞれ異なるプロジェクトを運営する
場合, 各アカウントで mysql に root アカウントが必要だろう.
それができるか実験.
結果: mysql の root アカウントはマシン内で共通.
もしかすると, .my.cnf 内の "user = root" を "user = boincadm" などに
すれば良いのかもしれないが,
mysql 内でユーザを発行して ... と, はまりそうなのでパス.
プロジェクトの admin 権限を与える.
# boinc_admin --NAME=testsz5 --add boincadm
Password:
Adding boincadm to /etc/sudoers
Adding boincadm to .forward
Setting the password for boincadm
Please enter a password below for accessing the admin parts of the web page.
It is recommended to use a different password here than the normal login
password.
New password:
Re-type new password:
/etc/sudoers の末尾に以下が追記されていた.
## DO NOT REMOVE - boinc_admin: testsz5/boincadm
boincadm ALL = (boinc-testsz5) ALL
## DO NOT REMOVE - boinc_admin: testsz5/boincadm
boincadm ALL = (root) /bin/su - boinc-testsz5
"boincadm ALL = (ALL) ALL" が既に書かれているから無意味なのだが.
visudo でコメントアウトしておく.
.forward はどこか?
# find / -name .forward
/var/lib/boinc/testsz5/.forward
/var/lib/boinc/testsz5/.forward には
boincadm
とだけ書かれていた.
プロジェクトの管理人になるには以下のコマンドを実行せよとのこと.
$ sudo su - boinc-testsz5
ブラウザで管理者ページへ行くには以下の URL を入力すること.
http://fermat.epa.scitec.kobe-u.ac.jp/testsz5/ops
basic 認証画面になった (自動的に設定されている) のだが,
User name と password に何を
入力してよいのか分からない.
.htaccess ファイルなどを探してみたが見つからない.
php か何かでアクセス制限しているのか?
ちなみに,
http://fermat.epa.scitec.kobe-u.ac.jp/testsz5/
は BOINC ではなく SZTAKI Desktop Grid っぽい見た目になっていた.
公開プロジェクトじゃないのでまあよいとする.
嫌なら php ファイルを書き換えればよい.
これでプロジェクトの「入れ物」は出来た.
あとは走らせたいプログラムをコンパイルし,
プロジェクトへ登録などをすることになる.
= 080825
== desktop Grid computing
昨日の続き.
=== サンプルのコンパイル
DC-API を含むコードをコンパイルできる環境を構築する.
以下のページを参考にする.
Application development for the BOINC environment
((<URL:http://www.lpds.sztaki.hu/desktopgrid/index.php?page=27>))
fermat にログイン.
/etc/apt/sources.list に以下の行があることを確認.
deb http://www.desktopgrid.hu/debian/ etch szdg
$ sudo apt-get update
DC-API 開発パッケージをインストールする.
$ sudo apt-get install libdcapi-boinc-dev
$ sudo apt-get install libdcapi-doc
$ sudo apt-get install gcc
$ sudo apt-get install make
$ sudo apt-get install autoconf
$ sudo apt-get install automake
boinc-testsz5 ユーザとして実行ファイルを構築する.
boincadm で fermat にログインしなおす.
$ cd ~boinc-testsz5
$ sudo -u boinc-testsz5 mkdir uppercase
$ cd uppercase
$ sudo -u boinc-testsz5 \
cp /usr/share/doc/libdcapi-common-dev/examples/uppercase-with-callback/* .
client.c, master.c ともにコメントを含めて 300 行以下.
これなら読むのにそれほど時間はかからないだろう.
sudo -u boinc-testsz5 をいちいちつけるのが面倒.
boinc-testsz5 ユーザにパスワードを設定したほうがいい?
$ sudo -u boinc-testsz5 gzip -d *.gz
$ sudo -u boinc-testsz5 autoreconf -if
configure.ac:6: installing `./config.sub'
configure.ac:8: installing `./missing'
configure.ac:8: installing `./install-sh'
configure.ac:6: installing `./config.guess'
Makefile.am: installing `./depcomp'
$ sudo -u boinc-testsz5 ./configure
$ sudo -u boinc-testsz5 make
生成された中で,
'uppercase-example-master' と 'uppercase-example-client' が
BOINC のサーバとクライアントになる.
=== サンプルプロジェクトのインストール (client 編)
以下のページを参考に実行した.
Deploying applications on a BOINC server
((<URL:http://www.lpds.sztaki.hu/desktopgrid/index.php?page=28>))
$ cd ~boinc-testsz5/project
$ sudo -u boinc-testsz5 vi project.xml
以下を <boinc> タグ内に追記する. タグ内の最後に追記してみた.
<app>
<name>uppercase</name>
<user_friendly_name>Example Application</user_friendly_name>
</app>
$ cd apps
$ sudo -u boinc-testsz5 mkdir uppercase
$ cd uppercase
実行するプラットフォームごとにディレクトリを用意する.
名前は <name>_<version #>_<platform> という形式でつけるのが慣習.
<version #> は 1.00 から 0.01 ずつ上がっていく.
<platform> は BOINC によって決められている.
$ sudo -u boinc-testsz5 mkdir uppercase_1.00_i686-pc-linux-gnu
$ cd uppercase_1.00_i686-pc-linux-gnu
さきほどコンパイル, 生成した実行ファイルを持ってくる.
格納するディレクトリ名と実行ファイル名は同じにしなければならないとのこと.
$ sudo -u boinc-testsz5 cp \
~testsz5/uppercase/uppercase-example-client \
uppercase_1.00_i686-pc-linux-gnu
実行ファイルが正当なものであることを示すため, 署名を行う.
これは任意.
update_versions が実行された時に自動で行われるらしい.
実行ファイル以外にも, ライブラリなどが含まれる場合は
全てのファイルに署名が必要.
今回はパス.
validator (帰ってきた結果が正当なものか判定するプログラム.
冗長性を持たせる場合は他の結果と比較したりする) をインストールする.
ローカルのプロジェクトで冗長性を持たせない場合も
validator は必要らしい.
自分で validator を作った場合はプロジェクトのホームの
下にある bin ディレクトリに置く.
今回はサンプルとして既に bin に
置かれている sample_trivial_validator を使う.
以下を config.xml に追記する.
ファイル末尾のほういある <daemon> タグが並んでいる場所に追記した.
$ cd ~boinc-testsz5/project
$ sudo -u boinc-testsz5 vi config.xml
<daemon>
<cmd>
sample_trivial_validator -d 3 -app uppercase
</cmd>
</daemon>
初めて実行ファイルを置いた場合
(他のプラットフォーム用の実行ファイルを追加した場合も含む) は,
xadd コマンドを実行して project.xml の内容を反映 (コミット) させる.
既にコミットした実行ファイルのバージョンを上げる場合は不要.
$ sudo -u boinc-testsz5 bin/xadd
新しいバージョンの実行ファイルを置いた場合は
update_versions コマンドを実行する.
$ sudo -u boinc-testsz5 bin/update_versions
署名をしていないので警告が出る.
勝手に署名してくれるようなので 'y' を入力して先へ進む.
=== サンプルプロジェクトのインストール (master 編)
master プログラム置き場を作る.
$ cd ~boinc-testsz5
$ sudo -u boinc-testsz5 mkdir master_uppercase
$ cd master_uppercase
$ sudo -u boinc-testsz5 cp ../uppercase/dc-api.conf uppercase-master.conf
uppercase-master.conf 内の '*Must be specified*' と書かれた部分を書き換える.
具体的には以下のようになった.
WorkingDirectory = /var/lib/boinc/testsz5/master_uppercase
InstanceUUID = *********-****-****-****-************
BoincConfigXML = /var/lib/boinc/testsz5/project/config.xml
ProjectRootDir = /var/lib/boinc/testsz5/project
[Client-uppercase-example] については, デフォルトで記述されていた
'name = uppercase-example-client' のままにしておいた.
InstanceUUID については uuidgen コマンドによって得ることができる.
master プログラムを bin へコピーする.
$ sudo -u boinc-testsz5 cp \
~boinc-testsz5/uppercase/uppercase-example-master \
~boinc-testsz5/project/bin
プロジェクトを開始するには以下のコマンドを実行する.
$ sudo -u boinc-testsz5 \
~testsz5/project/bin/uppercase-example-master \
-c /var/lib/boinc/testsz5/uppercase_master/uppercase-master.conf
以下を config.xml に追記することでサーバと一緒に
master プログラムの開始, 停止ができる.
$ cd ~testsz5/project
$ sudo -u boinc-testsz5 vi config.xml
<daemon>
<cmd>
uppercase-example-master -c \
/var/lib/boinc/testsz5/uppercase_master/uppercase-master.conf
</cmd>
</daemon>
サーバを起動してみる.
$ sudo -u boinc-testsz5 bin/start
Entering ENABLED mode
Starting daemons
Starting daemon: feeder -d 1
Starting daemon: transitioner -d 3
Starting daemon: file_deleter -d 3
Starting daemon: db_purge -d 3 -min_age_days 14
Starting daemon: sample_trivial_validator -d 3 -app uppercase
Starting daemon: uppercase-example-master -c \
/var/lib/boinc/testsz5/uppercase_master/uppercase-master.conf
クライアントでジョブを受けてみる.
mersenne に noda でログイン.
mer$ cd ~/boinc/BOINC
mer$ ./run_client --daemon
前のプロジェクトの仕事が残っていたので放棄する.
mer$ ./run_client --detach_project http://fermat.epa.scitec.kobe-u.ac.jp/test6
起動中なので通らなかった.
mer$ ./boinccmd -quit
mer$ ./run_client --detach_project http://fermat.epa.scitec.kobe-u.ac.jp/test6
放棄完了.
新たなプロジェクトにアカウントを作る.
mer$ ./boinccmd --create_account \
http://fermat.epa.scitec.kobe-u.ac.jp/testsz5 \
xxx_at_xxx.xx.xx hogehoge noda
status: Success
poll status: operation in progress
account key: ********
参加する.
mer$ ./run_client --attach_project \
http://fermat.epa.scitec.kobe-u.ac.jp/testsz5 \
********
26-Aug-2008 00:40:46 [http://fermat.epa.scitec.kobe-u.ac.jp/testsz5/]
Master file download succeeded
26-Aug-2008 00:40:51 [http://fermat.epa.scitec.kobe-u.ac.jp/testsz5/]
Sending scheduler request: Project initialization.
Requesting 1 seconds of work, reporting 0 completed tasks
26-Aug-2008 00:40:56 [http://fermat.epa.scitec.kobe-u.ac.jp/testsz5/]
Scheduler request failed: Couldn't connect to server
うまくサーバに接続できない.
fermat 側ではどうか.
boincadm でログインしている.
fermat$ ~/client/BOINC
先日参加した test6 からは離脱し, testsz5 に加入
(コマンドは mersenne と似たようなもの).
ログを見ると, サーバに接続はできたものの, job をもらえるまでには行っていない.
26-Aug-2008 00:48:46 [test of SZTAKI 5] You used the wrong URL for this project
26-Aug-2008 00:48:46 [test of SZTAKI 5] The correct URL is http://localhost/testsz5/
26-Aug-2008 00:48:46 [test of SZTAKI 5] Using the wrong URL can cause problems in some cases.
26-Aug-2008 00:48:46 [test of SZTAKI 5] When convenient, detach this project, then reattach to http://localhost/testsz5/
実験一時中断. サーバ側を停止しておく.
fermat$ sudo -u boinc-testsz5 ~boinc-testsz5/project/bin/stop