文書の過去の版を表示しています。
torque (旧PBS)
概要
- 計算機クラスターのジョブ管理スケジューラ
- 異なるジョブを逐次処理させたい場合に便利 (以下の条件の時とか?)
- メモリや CPU を最大まで使うジョブが複数あり、同時に流すとリソースの取り合いになる。最悪の場合、計算機が落ちる。
- コマンドラインで、 && とか ; で複数のジョブをつなげても実現できるけど、その後に追加のジョブが入った場合は?
- ジョブの終了時間を予測し、マージンをとって、at コマンドで時間を指定してジョブを実行する方法もあるけど、マージン分の時間がもったいない。予測が外れたらリソースの取り合いになる。
- 要はプリンターの印刷状況画面のキュー (印刷データ) が、ジョブに置き換わっただけ。
- 別に計算機クラスターである必要はなく、自分の PC に入れても問題ない
- Ubuntu (Debianも?)では、torque-server (サーバ用)、torque-scheduler (スケジューラ)、torque-mom (ノード用) の 3 つのパッケージで機能する
- スケジューラを変えるなどすることもあるようだ
導入方法
- インストール
- サーバ側(サーバでもジョブを処理させる場合)
$ sudo apt-get install torque-server torque-mom torque-client torque-scheduler
- サーバ側(サーバでジョブを処理させない場合)
$ sudo apt-get install torque-server torque-scheduler
- クライアント側
$ sudo apt-get install torque-mom torque-client
- 起動中の torque を終了させる
- 起動中の torque を確認
$ ps -e | grep pbs
- root 権限で終了させる (service コマンドの stop や kill) する
$ sudo service torque-mom stop $ sudo service torque-scheduler stop $ sudo service torque-server stop
※service コマンドで torque-server が終了しない場合
$ sudo kill 24277
24277 は、pbs_server の PID
- 設定ディレクトリの設定
$ sudo mkdir /var/spool/torque/server_priv $ sudo chmod 777 /var/spool/torque/spool /var/spool/torque/undelivered $ sudo chmod o+t /var/spool/torque/spool /var/spool/torque/undelivered
- サーバ名の設定
$ sudoedit /etc/torque/server_name
- 新たにサーバを作成
$ sudo pbs_server -t create
- ノードの設定
$ ps -e | grep pbs $ sudo kill xxxxx $ sudoedit /var/spool/torque/server_priv/nodes
中には「ノード名 np=CPU数」を列挙していく
- ホスト名の設定
$ sudoedit /etc/hosts
- 127.0.0.1 は localhost からホスト名に変更
- 127.0.1.1 はコメントアウト
- サーバやキューの設定<br>設定ファイルを読み込ませる
$ sudo service torque-server start $ sudo qmgr < setting
- 設定ファイル (setting) は以下の通り
# # Create queues and set their attributes. # # # Create and define queue F # create queue F set queue F queue_type = Execution set queue F resources_default.ncpus = 1 set queue F resources_default.nodes = 1 set queue F enabled = True set queue F started = True # # Create and define queue Q2 # create queue Q2 set queue Q2 queue_type = Execution set queue Q2 max_running = 1 set queue Q2 resources_max.ncpus = 4 set queue Q2 resources_max.nodes = 1 set queue Q2 resources_default.ncpus = 1 set queue Q2 resources_default.nodes = 1 set queue Q2 resources_available.ncpus = 4 set queue Q2 resources_available.nodes = 1 set queue Q2 enabled = True set queue Q2 started = True # # Create and define queue Q4 # create queue Q4 set queue Q4 queue_type = Execution set queue Q4 max_running = 1 set queue Q4 resources_max.ncpus = 4 set queue Q4 resources_max.nodes = 1 set queue Q4 resources_default.ncpus = 1 set queue Q4 resources_default.nodes = 1 set queue Q4 resources_available.ncpus = 4 set queue Q4 resources_available.nodes = 1 set queue Q4 enabled = True set queue Q4 started = True # # Create and define queue Q1 # create queue Q1 set queue Q1 queue_type = Execution set queue Q1 max_running = 1 set queue Q1 resources_max.ncpus = 4 set queue Q1 resources_max.nodes = 1 set queue Q1 resources_default.ncpus = 1 set queue Q1 resources_default.nodes = 1 set queue Q1 resources_available.ncpus = 4 set queue Q1 resources_available.nodes = 1 set queue Q1 enabled = True set queue Q1 started = True # # Create and define queue Q3 # create queue Q3 set queue Q3 queue_type = Execution set queue Q3 max_running = 1 set queue Q3 resources_max.ncpus = 4 set queue Q3 resources_max.nodes = 1 set queue Q3 resources_default.ncpus = 1 set queue Q3 resources_default.nodes = 1 set queue Q3 resources_available.ncpus = 4 set queue Q3 resources_available.nodes = 1 set queue Q3 enabled = True set queue Q3 started = True # # Set server attributes. # set server scheduling = True set server default_queue = F set server log_events = 511 set server query_other_jobs = True set server scheduler_iteration = 600 set server node_check_rate = 150 set server tcp_timeout = 6 set server node_pack = False set server allow_node_submit = True set server next_job_number = 765
- 起動
$ sudo service torque-scheduler start $ sudo service torque-mom start
- サーバ名の確認
$ qstat -q
- サーバの設定状況の確認
$ pbsnodes -a
- テスト
$ echo "sleep 30" | qsub