文書の過去の版を表示しています。


torque (旧PBS)

  • 計算機クラスターのジョブ管理スケジューラ
    • 異なるジョブを逐次処理させたい場合に便利 (以下の条件の時とか?)
      • メモリや CPU を最大まで使うジョブが複数あり、同時に流すとリソースの取り合いになる。最悪の場合、計算機が落ちる。
      • コマンドラインで、 && とか ; で複数のジョブをつなげても実現できるけど、その後に追加のジョブが入った場合は?
      • ジョブの終了時間を予測し、マージンをとって、at コマンドで時間を指定してジョブを実行する方法もあるけど、マージン分の時間がもったいない。予測が外れたらリソースの取り合いになる。
    • 要はプリンターの印刷状況画面のキュー (印刷データ) が、ジョブに置き換わっただけ。
    • 別に計算機クラスターである必要はなく、自分の PC に入れても問題ない
  • Ubuntu (Debianも?)では、torque-server (サーバ用)、torque-scheduler (スケジューラ)、torque-mom (ノード用) の 3 つのパッケージで機能する
    • スケジューラを変えるなどすることもあるようだ
  1. インストール
    • サーバ側(サーバでもジョブを処理させる場合)
      $ 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
  2. 起動中の torque を終了させる
    1. 起動中の torque を確認
      $ ps -e | grep pbs
    2. 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 で ps -e | grep pbs で確認する

  3. 設定ディレクトリの設定
    $ 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
  4. サーバ名の設定
    $ sudoedit /etc/torque/server_name
  5. 新たにサーバを作成
    $ sudo pbs_server -t create

    このコマンドを実行すると torque_server が起動する

  6. ノードの設定
    $ ps -e | grep pbs
    $ sudo kill xxxxx
    $ sudoedit /var/spool/torque/server_priv/nodes


中には「ノード名 np=CPU数」を列挙していく

  1. ホスト名の設定
    $ sudoedit /etc/hosts
    • 127.0.0.1 は localhost からホスト名に変更
    • 127.0.1.1 はコメントアウト
  2. サーバやキューの設定<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
  3. 起動
    $ sudo service torque-scheduler start
    $ sudo service torque-mom start
  4. サーバ名の確認
    $ qstat -q
  5. サーバの設定状況の確認
    $ pbsnodes -a
  6. テスト
    $ echo "sleep 30" | qsub
  • サーバ関連/torque_pbs.1463024164.txt.gz
  • 最終更新: 2016/05/12 12:36
  • by mumeiyamibito