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 に説明があります。