XCPU

PCクラスタ,グリッドコンピューティング関係の国際会議CLUSTER 2006で,Ron Minnich氏がXCPUについて発表した.タイトルは「XCPU: a new, 9p-based, process management system for clusters and grids」.
XCPUは9Pプロトコルベースのリモートプロセス実行システムである.背景から書くと,XCPUの前身には,BProcという,クラスタをシングルシステムイメージに見せかけるシステムが存在した.BProc(クラスタ)はマスタノードとスレーブノードという二種類のノードから構成される.マスタノードはユーザがログインして,プログラムを実行したり,結果を見るためのもので,スレーブノードで実際にプログラムが実行される.スレーブノードで実行されるプロセスはプロセスマイグレーションを使って,マスタノードから転送される.例えば,マスタノードでpsを実行すると,スレーブノードで実行中のすべてのプロセスが列挙される.このような仕組みを実現するために,マスタノードのプロセス管理テーブルには,スレーブノードのプロセスと対応する「ゴースト」プロセスが登録される.「ゴースト」プロセスへの操作は,スレーブノードのデーモン経由で,実際のプロセスに伝えられる.
BProcには,いくつかの問題があった.まず,前述の説明からわかるようにカーネルパッチが必要なこと./procエントリが不完全で一部のデバッガ(TotalView)が動かないこと.(プロセスマイグレーションベースなので)複数のアーキテクチャが混在するへテロなクラスタで動作できないこと.そして,意外なことに透過すぎて混乱するという点である.最後の点を補足すると,psでクラスタで実行中のプロセスをすべて表示されたり,killで(リモートにあるだろう)プロセスを殺せることは,一部のユーザ,特にシステム管理者には好かれなかったようだ.
そこで,BProcのようなものを9Pベースで,つまりユーザプログラムの集合として作ったシステムがXCPU.また,プロセスマイグレーションを使わず,マスタノードから実行バイナリを転送して,プロセスを起動する.最近はPlan9以外でも,Linux(2.6.14以降)が9Pを標準対応しているし,MacOS Xへの対応も進行中らしい.
XCPU(クラスタ)はマスタノードに対応する管理ノードと,スレーブノードに対応する計算ノードから構成され,計算ノードでxsrvサーバが動作する.管理ノードはこのxsrvが提供する名前空間を自分のファイルツリーにマウントする.セッションの開始はcloneファイルに対するopenだし(Plan9ではおなじみの作法),実行バイナリの転送はcpで済む.BProcではカーネルに作りこまれていた機能が,9Pベースになったことで,catやcpという基本的なコマンドと,シェルスクリプトを数行書くだけで実現できてしまうのだ.なかなか面白いと思うので,一度動かしてみたいな.