Mosix のチューニング
はじめに
これからの説明には、以前の Mosix HOWTO からの引用部分がまだ含まれています。
時と共に openMosix の該当部分へと置き換わっていきますが、それでもまだ同じ部分
があるでしょう。場合によりけりですが。
「マスター」ノードの作成
openMosix のアーキテクチャではマスターノードを必要としません。しかし
プロセスを立ち上げるところとして、ヘッドノードがあった方が良いかもしれません
し、ユーザがクラスタにログインするところとして、マルチホームノードが必要に
なるかもしれません。
プロセスがマイグレートするようにマシンを設定する必要があります。
ノードをだまして、周りのノードの中で最も遅いノードと思わせなければいけません。
そうすると、すべてのプロセスはより速いノードにマイグレートすることになります。
「遅く」するには下記のようにします。
mosctl setspeed [n]
n は他のノードの速度よりも小さくします。そうするとプロセスが素早く移動もしくは
マイグレートします。
ノードの速度は下記でわかります。
mosctl getspeed
Mosix の最適化
編集上のコメント: openMosix のバージョンをチェックすること。
root で普通の端末からログインしてください。まず、
setpe -r
と入力してください。
これでうまくいけば、/etc/mosix.map がリストされます。うまく行かないなら、
setpe -w -f /etc/mosix.map
としてみてください。
ノードを設定するには、
次のように入力してください。
cat /proc/$$/lock
これで子プロセスがノードでロックされているのか(1)、マイグレートしている
のか(0)がわかります。何らかの理由でプロセスがロックされていれば、
下記のようにして変更できます。
echo 0 > /proc/$$/lock
問題を解決するまで。
設定方法はすべて復唱して、次のコンピュータに備えてください。
プログラムの tune_kernel と prep_tune は Mosix が個々のノードを調整する
のに使いますが、SuSE ディストリビューションでは動作しません。
しかしどうにかできます。まずチューニングしたいコンピュータと Mosix が
インストールしてある別のコンピュータをシングルユーザモードに落とします。
下記を root になって入力してください。
init 1
ネットワーク上にあるその他すべてのコンピュータをできるだけ落として
ください。
どちらのマシンでも下記のコマンドを動かしてください。
/etc/init.d/network start
/etc/init.d/mosix start
echo 1 > /proc/mosix/admin/quiet
こうすると prep_tune と tune_kernel の最初の部分をだませます。PCMCIA
タイプのネットワークカードが付いたラップトップなら、下記のようにしな
ければいけません。
/etc/init.d/pcmcia start
これは「/etc/init.d/network start」の代わりです。
チューニングしたいコンピュータ上で、tune_kernel を動かして下記の
手続きを踏んでください。マシンにもよりますが、これには時間がかかります。
犬を飼っているなら、いつもの長い長い散歩と同じぐらいかかります。
tune_kernel は「pg」というテスト目的のプログラムを /root に作成します。
これは無視してください。
チューニングが終わったら、/tmp/overheads の中身を /etc/overheads に
コピーしてください(カーネルを再構築してください)。
各コンピュータでチューニングの手続きを繰り返してください。
そしてリブートして、Mosix を使ってください。
友人に新しいクラスタを自慢することもお忘れなく。
Channel Bonding を簡単に
Contributed by Evan Hisey
Channel bonding はきわめて簡単です。この課題についてのドキュメントがない
ことがそれを表しています。bonded network はアプリケーションにとっては通常
のネットワークに見えます。サブネット上のマシンすべては、同じ手段で統合されて
いなければいけません。Bonded and non-bonded なマシンは、実際はお互いうまく
通信ができません。
Channel bonding は物理的なサブネットを最低限必要としますが、さらに増やすこと
が可能です(私は tri-bonded クラスタを持っています)。bonding を有効にするには
Channel Bonding のコードをカーネルに組み込むもしくはモジュール(bonding.o)に
する必要があります。2.4.x ではカーネルの標準オプションになっています。
ネットワークカードの設定は普通にしてかまいませんが、「ifconfig」を使って bond
する最初のカードを初期化する必要があります。「ifenslave」は bonded 接続を行う
残りのカードを初期化するコマンドです。「ifenslave」は、
linux/Documentation/network/ ディレクトリにあります。これは .c ファイルとして
コンパイルする必要があります。基本的な使用方法は、
]]> ... です。Channel bonded ネットワークは、channel bonding
をサポートしているルータもしくはブリッジ経由で通常のネットワークに接続できます
(私の場合はヘッドノードで追加のネットワークカードとポートフォワーディングを
使っています)。
Updatedb
updatedb と mfs を組み合わせると問題が発生する恐れがあります。したがって、
PRUNEFPATHS に /mfs を追加するか、/etc/updatedb.conf の PRUNEFS に mfs を
追加して、updatedb がこのマウントポイントの索引付けをしないようにして
ください。
openMosix と FireWire
openMosix は他のタイプのネットワークデバイスを使って性能を稼いでいます。
openMosix and FireWire
に説明があります。