« Linux HPCクラスターの構築(その1) | メイン | 帰国決定! »

2007年09月09日

Linux HPCクラスターの構築(その2)

* え,ワタシが作るんですか?

で,件の助教授の先生のところに行き,やりたいことを説明してきました.ワタシのやりたいことを一般化すると,

非並列コードで書かれたコマンドに多数(数百から数百万,あるいはそれ以上)の異なるパラメーターを与えて実行したい.計算結果は互いに独立である.

ということになります.ワタシの説明がおわると,それならば,ということで,コンピュータールームにつれていってくれまして,PCの山を見せてくれました.ほほう,これ用のアカウントを発行してくれるのかと思っていると,

「ここに23台のPCがあるから,好きなクラスターをくみ上げていいよ.スイッチングハブとケーブルはちゃんとあるから」

といって,やおらパソコンを運び出しはじめるではないですか.いや話が早いのはいいのですが,当初の目論見ははずれ,自分でクラスターを組むことになってしまいました.

* openMosixでは力不足か?

今回のプロジェクトにあたり,図書館でオライリーの High Performance Linux Clusters with OSCAR, Rocks, OpenMosix, and MPI という本を借りてきまして,参考にいろいろ考えたのですが,使いたいプログラムは非並列コードなんで,SSI環境がやりやすいのかな?ということと,日本語ドキュメントの豊富さから,openMosixをまずためしてみることにしました.また,openMosixには,ライブCD-Linuxである ClusterKnoppixをつかうことにより簡単に試すことができるという大きな魅力もあります.

ClusterKnoppixのインストール,運用ですが,これはGoogle先生に聞けば,多くの日本語ページを見つけることができるので,そちらにゆずるとして(というかCDを台数分焼いて,立ち上げるだけ),とにかく8台ほどを試しにスイッチングハブにつなげて立ち上げてみました.

手動で,20やそこらのプロセスを立ち上げてみると,どうやらうまいことうごいてくれてそうです.しかし,これが100以上となると,どうもうまくいきません.単純に100プロセスがたちあがって,それを8つのマシンでのそのそ動かすことになってしまいます.

メーリングリストなどを検索すると,とりあえずシステムデフォルトのbatchコマンドでバッチキューに入れてみろ,とのことなので,やってみました.結果は,どうも,順調に割り振られているようにはみえません.atdデーモンのオプションもいじってみたのですが,次々とジョブが投入されるようにはなってくれません.また,致命的なのは,数百,数千のジョブの投入はbatchコマンドには荷が重すぎるということです.途中でハングアップしてしまうようです.

どうやら,ワタシのやりたい用途には,ちょっとopenMosixは最適とは言えないようです.また,openMosixの開発の終了がアナウンスされましたし,ClusterKnoppixの開発も事実上終了しているということで,どうやらopenMosiixは時代遅れになりつつあるのかもしれません.

そこで,より適したシステムはないかと探していると,ワタシと同じような境遇のヒトの質問をweb上でみつけました.その回答の要点は(1)必要なのは優れたジョブスケジューラー.たとえばGridEngine(後述),(2)GridEngineならRocks Clusterにはじめから入ってるよ,ということでした.

* Rocks Clustersの導入

Rocks Clustersは オープンソースのLinuxディトリビューションで(ここ重要,逆に言うと他のディストロと共存はできない),ベースはCentOS(RedHat Linux Enterprise Editionをフリーにしたもの,もちろんRedHatのサポートはない)になっています.現在も活発に開発が続いています,先日NSFのグラントが当たったとのニュースが流れましたので,さらに開発が加速するんではないかと思います.

Rocks ClustersにはGridEngineが含まれています.GridEngine(旧称Sun Grid Engine [SGE])と呼ばれる,Sun主導で開発されているフリーのジョブスケジューラーシステムです.Sunはこれと全く同機能のものに,いくつか独自の品質管理工程とサポートサービスを加え,あるいは各国語にローカライズして,N1 GridEngineとして商業化しています,N1 GridEndineとしては,すばらしいことに日本語ドキュメントも公開しています

Rocks Clustersについては,日本語のドキュメントが少ないような気がします.これは国産の SCoreの存在も大きいんではないかと思います. おそらくSCoreはワタシの要求にすべて答えてくれるんではないかと思います.またSCoreには巫女ぐにょLinuxというライブCDもありますんで,なおさら選択肢としては有力なのですが,ここはアメリカですんで,素直にRocks Clustersを採用することにしました.しかし,実際に巫女ぐにょをつかったら,説明がむずかしいだろうなあ(「コミックマーケットっていうコンベンションでリリースされるディストロでして」とか,うーんクール).

* Rocks Clustersインストールの注意点

インストールそのものは簡単・・・なのかもしれませんが,ハマりどころ満載です.詳しいところはドキュメントを参考にしていただくとして,以下に箇条書きに落とし穴について書いておきます.というか,今回長々と書き始めたのは,以下のにがーい経験を広く知らしめるためなのでした.

  • Frontend nodeには必ずNICが2枚さされていなくてはならない.eth0がクラスター内部,eth1が外部ネットワークとの接続に使われる.
  • Frontend nodeには必ずFQDN・静的IPアドレスが割り振られてなくてはならない.インストール時にDHCPに問い合わせに行くので,うまくいくかと思ったが,これだと再起動後に破綻する.たぶんDNSを入力する手間を省くためじゃないかと思われる.
  • (追記) 少なくともFrontend nodeには1GB以上のメモリを搭載している必要がある。また,Compute nodesは最低512MBのメモリが必要。さもなければ,インストール中にカーネルパニックを起こす。
  • Roll(追加パッケージ)は,何も言わずに全部入れる.一部インストール後の追加が不可能なものがある.Gangliaとか.なんでもいいけどRocksとRollって,Rock'n Rollって言いたいのか?
  • デュアルブートとか余計なことを考えない.デフォルトのパーティション設定に任せる.ディスクレスノードはサポートされてない.
  • ネットワーク関係のインストール後の手動再設定は困難を極める.そういうときは迷わず再インストールする.
  • ドキュメントは,やっぱりあまり親切じゃない印象をうける.が,メーリングリストがものすごく活発なので,メーリングリストの検索でかなりの部分の疑問が解決する.

次回は,Rolls Clusters導入後のいろいろについて書きたいと思います.

投稿者 hmishima : 2007年09月09日 22:50