crest-cassia/oacis — pull request #240 by ymurase (2014-07-24 01:31:05+00:00)
Title: External scheduler [WIP]

## 概要
各スケジューラごとにOACISで対応するのではなく、各ホスト上でxsubというコマンドを叩くようにして、xsubがスケジューラの違いを吸収する。

## Hostモデルの変更点
- scheduler_type として xsub というタイプを用意する。
- xsubの時には、template、host_parameter を編集不可に
- templateはデフォルトのもので固定。
- hostが登録されたときにhost_parameterをSSH経由で取得し、それをhost_parameterとして保存する
- xsub -t コマンドで必要なパラメータを取得する
- ただし、omp_threads, mpi_procs は除く。これらには Run#omp_threads, Run#mpi_procs を入れる。
- template を renderするタイミングが異なる
- 今まで: Runを作ったときにscriptを作る
- xsub: xsubの引数としてデフォルトのscriptを渡す
- runを作るときにscript previewは必要ないかもしれないが、とりあえず残す

## submit時の仕様変更
- job_script から cd work_base_dir/work_dir を除く。そのかわりschedulerにサブミットするときに cd する。（またはtorqueの場合は-dオプションを渡す）
- work_base_dir/work_dir に cd するのは remote_job_handler の責務
- torque は -dオプションでwork_dirを指定する
- pjsub は -d オプションが無いので、事前にcdする
- work_dir はジョブの投入時に作られる。（ただしmanual_submissionの場合には作られないので、別途対応する必要あり）
- cancelされたときは work_dir が削除されるようになっている
- 後方互換性は維持される。
- work_dirができる場所自体は変わっていないので、変更前に作ったジョブスクリプトも問題なくincludeできる。
- manual submissionの時は、work_dirを作る必要がある。
- templateの中で今いるディレクトリの名前がRun_idと等しいかどうかで判定するようにした。
- scheduler_log は work_base_dir 以下に出すようにする
- work_dir に入れておくと、tarで固められてしまうので、ジョブの統計情報がtarに含まれない。
- work_base_dir/#{run_id}_log のディレクトリ以下に配置する
- logのインクルード後は、このログディレクトリも削除する
- ログのパスの指定は、torque,pjmの場合は -o,-e,-s,-iオプションで指定。xsubの場合は-lでログディレクトリを指定できる
- work_dir の削除はinclude後にも行う
- 基本的にはジョブスクリプトで削除を行う。(rm -rf work_dir で）
- ただしstagingの場合など、消せない場合もあるのでinclude後にもwork_dirがあれば削除する
- work_dir が残っていてもジョブ失敗と見なさない
- archiveがあれば取り込み、work_dirしかなければwork_dirの内容を取り込む。
- moutned_work_base_dir があるときにスケジューラのログが取れないバグを修正
- 正常系なのに、エラーハンドリングのコード中に実装されていたのでリファクタリング

# TODOs
- [ ] PJMでのテスト
- [ ] 京でのテスト
- [ ] scheduler type からpjm, pjm_kを削除
- [ ] ドキュメント
- [ ] xsubのホストパラメータがホスト登録後に変更された場合にどう対応するか？