現在地

計算サーバ利用手引き

注・このページは高い頻度で更新されています。ご覧になる方は常に最新版を参照してください。
(最終更新日: 令和元年10月22日)

主な更新情報

目次

1. はじめに

ご存知のように天文シミュレーションプロジェクトでは天文学関連分野の研究者のために数値シミュレーションを用いた研究の支援を行なっています。一言で数値シミュレーションと言っても多様ですが、その中にはXC50のような大型並列スーパーコンピュータやGRAPE・GPUのような加速器型計算機に馴染まない、本然的に中小規模・非並列型かつ長時間を要するものが幾つもあります。計算サーバはこのような中小規模数値シミュレーション研究者の活動を支援するためのシステムです。また、さほど多くはありませんが計算サーバでは並列計算用の資源も提供しており、将来的にXC50システム等への利用申請を行う準備のための機材としても使えます。計算サーバの募集要項と申請書はこちらにございます。XC50システムGRAPE システムの利用申請は計算サーバの利用申請とは別途行って頂くことになりますが、解析サーバについては計算サーバの利用者になれば利用が可能となります。利用者の皆様にはこの文書と併せて計算サーバに関する FAQ (Frequently Asked Questions; よくある質問とその答え) も参照されることをお薦めいたします。

2. 機器構成

計算サーバはログインノード、計算ノード、データディレクトリ、およびそれらを接続するプライベートネットワークから構成されています。このデータディレクトリ(主要なデータ保全領域)は解析サーバと共通化されています。利用者はログインノード(m000.cfca.nao.ac.jp)にログイン後、PBS Professional を経由して計算ノードにジョブを投入します。

2.1 ノード

計算サーバにはログインノードと計算ノードがあります。利用者はログインノードにログイン後、計算ノードにジョブを投入します。なお、計算ノードにはログインできません。

ログインノード

ファイルの編集・コンパイル・PBSジョブno投入などはここで行います。現行では m000.cfca.nao.ac.jp という名前で運用されています。オペレーティングシステムは CentOS です。

m000.cfca.nao.ac.jp
CPU QEMU Virtual CPU version (3.4 GHz)
主記憶 12 GB
コア数 合計 4 コア
ジョブ管理システム PBS Professional
ファイルサーバへのアクセス ※ 可(ただし読み込み専用)

※ ここで言うファイルサーバとは固有名詞であり、ディレクトリ /misc/work??? および /glv0 のホスト群のことです。下記のファイルサーバのマウントもご覧ください。

計算ノード

利用者により投入されたジョブはこちらで実行されます。利用者はログインできません。

m[001-016] m[017-064] m[065-192] m[193-224] m[225-240]
CPU AMD RyzenTM7 2700/2700X (※) Intel Core i7-2600K (3.4 GHz) Intel Core i5-4670 (3.4 GHz) Intel Core i5-7500 (3.4 GHz) AMD RyzenTM7 1700X (3.4 GHz)
主記憶 32 GB / ノード 16 GB / ノード 16 GB / ノード 16 GB / ノード 32 GB / ノード
コア数 16ノード×16コア (仮想) = 合計256コア 64ノード×4コア = 合計256コア 128ノード×4コア = 合計512コア 32ノード×4コア = 合計128コア 16ノード×16コア (仮想) = 合計256コア

※ ノードm001-m016のうちm001,005,009,013の4台のCPUが2700Xであり、その他の12台のCPUは2700です。

2.2 ストレージ

以下のファイルシステムが一般利用者向けストレージとして利用可能です。/mwork3/は平成30年7月25日から供用開始されたもの、/mwork3/は平成30年12月17日から試験供用開始されたものです。ストレージの実態はFreeBSD上のzfs poolです。なお各々の作業領域にはquotaによる容量制限があります。

  • /home/ : ホームディレクトリ(解析サーバと共通)
  • /mwork0/ : 作業領域(約 84 TB)
  • /mwork3/ : 作業領域(約 11 TB)

(注)/mwork0/, /mwork3/ 下にあるファイルは最終アクセス日時 (last access time; atime) から 120 日後に削除されます。各ファイルの最終アクセス日時は ls -lustat -c "%x" コマンドを用いて検証してください。

計算サーバのホームディレクトリは解析サーバと共通です。作業領域 /mwork0/ と /mwork3/ は解析サーバからマウントされております (/misc/mwork{0,3}/)。各領域にはquotaによる容量制限があります。

ソフトリミット ハードリミット
ホームディレクトリ(/home) 1.0 TB/user 1.5 TB/user
作業領域 (/mwork0) 24.0 TB/user 24.0 TB/user
作業領域 (/mwork3) 4.0 TB/user 4.0 TB/user

自分の quota 状況を知るには quota -v コマンドを使ってください。上記の制限値を超えてしまうと当該ファイルシステムには一切のファイル書き込みが出来なくなりますのでご注意ください。quota 制限値を超えた利用者に対しては一日に一度 root から警告メールが流されます。この警告メールを転送するためご自分のホームディレクトリに .forward ファイルを作成し、ご自身のメールアドレスを記載してください。もしも警告メールを受け取ったら、不要なファイルを削除または移動してください。
なお平成31年4月現在、/mwork0/ と /mwork3/ 以下のquota現状を即座に表示するコマンドはありません。代替として全利用者のquota状況を記したファイル /mwork0/userspace.txt と /mwork3/userspace.txt が準備されており、これらは60分に一度の頻度で更新されています。/mwork0/, /mwork3/上のご自分のquota状態を知るにはこのファイルの中身をcatしてご覧になるか、以下のようにしてください。

% grep `whoami` /mwork{0,3}/userspace.txt

これにより以下の例のようにご自分の利用状況(右から二欄目の数値)およびquota上限値(右端欄の数値)が表示されます。

/mwork0/userspace.txt:POSIX User itootk 6.63T 24T
/mwork3/userspace.txt:POSIX User itootk 8.96G 4T

ファイルサーバのマウント

ログインノード m000 と計算ノードからはファイルサーバのディレクトリ群を読み込みのみ可能な状態でマウントしています。但し両者からアクセスできるファイルシステムはやや異なりますのでご注意ください。

  • ログインノード m000 にはファイルサーバのディレクトリ群が読み込み可能の状態でマウントされています (/misc/work???はオートマウント、/glv0は定常マウント)。/glv0 に対しては m000 から書き込みができますが、他のファイルサーバへは書き込み出来ません)。
  • 計算ノードからもファイルサーバのディレクトリの一部 (/misc/work???) が読み込み可の状態でマウントされますが (オートマウント)、ディレクトリ /glv0 はマウントされません。

2.3 初期の環境設定

システムへのログイン

計算サーバを利用するには、何はともあれログインノード(m000.cfca.nao.ac.jp)にログインする必要があります。このために最初に行うことは、VPN を用いて CfCA HPC network に接続することです。詳しくはこちらのページを参照してください。CfCA HPC network への接続に成功したら、ssh を用いてログインノードにログインします。CfCA 共同利用計算機のアカウント名は本 Web システムのアカウント情報から確認することができます。また初期 NIS パスワードは利用申請受理後にメールで配信されます。

% ssh -l アカウント名 m000.cfca.nao.ac.jp

(注)既にXC50やGRAPEをご利用の方が計算サーバを利用する場合にも、改めて利用申請を行ってください。計算サーバ上のアカウント名やパスワードは他システム上と共通ですが、計算サーバの利用申請を行わないとログインノード上のホームディレクトリなどが作製されないので、利用可能にはなりません。

環境設定ファイルの読み込み

初めてログインノードにログインしたら、/etc/skel/ にある以下の環境設定ファイルのうちお使いの shell に応じて必要なものを読み込み、記載されている設定を有効にしてください。

  • /etc/skel/.bash_profile
  • /etc/skel/.bashrc
  • /etc/skel/.cshrc
  • /etc/skel/.zshrc

例えば以下のようにします。

% source /etc/skel/.cshrc

こうした環境設定ファイルを /etc/skel/ 以下からご自分のホームディレクトリにコピーすることも可能ですが、/etc/skel/ 以下のファイルはシステム更新時に変更されることがあります。そのため、上記のファイルをご自分のホームディレクトリにコピーした場合にはそれらと /etc/skel/ 以下にあるファイルとの整合性について常にご留意ください。これらの環境設定ファイルは計算サーバ上でコンパイラやジョブ管理システムの機能を使うために最適な環境を設定するものなので、個人的にコピーした後に不適切な改変を行うとコンパイルやジョブの投入が出来なくなる場合があります。

初期パスワードやログインシェルの変更

初期パスワードの変更には yppasswd コマンドを用いてください。なおパスワード長は12文字以上にするという原則が自然科学研究機構の情報セキュリティ対策基準にて定められています (5.4節, (3) 2)。利用者各位もこちらへの準拠をお願いいたします。

ログインシェルの変更には ypchsh コマンドを用いてください。利用できるシェルは /bin/sh, /bin/csh, /bin/bash, /bin/tcsh, /bin/zsh です。デフォルトは /bin/csh です。
なおXC50やGRAPEにもアカウントをお持ちの方がここでパスワードやログインシェルを変更すると、NISサーバを経由して他システムでのパスワードやログインシェルも変更されます。ご注意ください。

作業ディレクトリ下での個人用サブディレクトリ作製 【重要】

前述した作業領域用ディレクトリ(/mwork0/, /mwork3/) を使う際には、まずご自分のアカウント名のサブディレクトリを作製してください。例えば以下のようにします。

% mkdir /mwork0/アカウント名
% mkdir /mwork3/アカウント名

然る後にこのサブディレクトリ/mwork0/アカウント名/または/mwork3/アカウント名/の下に必要なファイルを置いてください。作業領域用ディレクトリの直下に /mwork3/個人ファイル などとしてファイルを置くことの無いようにお願いします。そのような作られ方をされたディレクトリは管理者側で移動または削除することがあります。

2.4 ファイル転送と電子メール

ファイルの転送

計算サーバからのファイル転送は、国立天文台内部のネットワークに転送する場合と国立天文台外部のネットワークに転送する場合で方法が異なります。なお、ここで言う国立天文台内部のネットワークとは IP address が 133.40.*.* のネットワークを指し、それ以外のネットワークを国立天文台外部のネットワークと呼ぶことにします。計算サーバを含む本プロジェクトの計算機システムは、すべて国立天文台内部のネットワーク内に構築された CfCA HPC network に納められています。

(1) 国立天文台外部のネットワークへのファイル転送

CfCA HPC network から国立天文台外部の計算機へは、scp を用いたファイル転送を自由に行うことが可能です。ここでは例として国立天文台外部にある計算機の名称を Local-nonaoj とし、m000.cfca.nao.ac.jp 上にあるファイル hogehoge を m000.cfca.nao.ac.jp の上から scp コマンドを用いて Local-nonaoj へファイルを転送する方法について説明します。

  • m000.cfca.nao.ac.jp 上で操作を行う場合には以下のようにします。
  • m000% scp hogehoge アカウント名@Local-nonaoj:
  • Local-nonaoj 上でこの操作を行うことも出来ます。この場合には以下のようにします。
  • Local-nonaoj% scp アカウント名@m000.cfca.nao.ac.jp:hogehoge .

上記と逆の方向、すなわち Local-nonaoj 上にあるファイル pogepoge を m000.cfca.nao.ac.jp に転送する場合には、以下のいずれかを行ってください。

  • m000.cfca.nao.ac.jp 上で操作を行う場合には以下のようにします。
  • m000% scp アカウント名@Local-nonaoj:pogepoge .
  • Local-nonaoj 上でこの操作を行うことも出来ます。この場合には以下のようにします。
  • Local-nonaoj% scp pogepoge アカウント名@m000.cfca.nao.ac.jp:

(2) 国立天文台内部のネットワークへのファイル転送

国立天文台外部ネットワークへのファイル転送の場合とは異なり、国立天文台内部の計算機 Local-NAOJ に対しては CfCA HPC network → Local-NAOJ という方向への scp などによるファイル転送が許可されていません。これは CfCA HPC network (firewall) の現在の設定(仕様)によります。この方向のファイルの転送を行う場合には Local-NAOJ → CfCA HPC network という方向で scp 等を動かします。例えば Local-NAOJ にあるファイル hogehoge を m000.cfca.nao.ac.jp へ転送する場合には、Local-NAOJ 上で以下のようなコマンドを打ち込んでください。

Local-NAOJ% scp hogehoge アカウント名@m000.cfca.nao.ac.jp:

同様にして m000.cfca.nao.ac.jp にあるファイル pogepoge を Local-NAOJ に転送する場合には、以下のようにしてください。

Local-NAOJ% scp アカウント名@m000.cfca.nao.ac.jp:pogepoge .

電子メールの送受信

ログインノードでは CfCA HPC network 内から届いた電子メールを受け取ることができ、かつ CfCA HPC network の内外へメールを送信することができます(CfCA HPC network の外から ログインノードにメールを送信することはできません)。後述するように計算サーバのジョブ管理システムはジョブの開始や終了を電子メールで利用者に知らせますが、利用者が何も設定しないとこのメールはログインノード上のローカルな利用者アカウントに届きます。ローカルなアカウントにメールを受け取りたくない場合には qsub コマンドのオプション -M を用いて転送先のメールアドレスを指定するか、ログインノードのホームディレクトリに .forward ファイルを置いてメールを転送してください。

3. コンパイラの利用方法

ログインノードでは Intel コンパイラ、PGI コンパイラ、および GNU コンパイラが利用可能です。必要なソフトウェアの切替とそのための環境変数の設定がmoduleコマンドを用いて行うことが出来ます。利用可能なソフトウェアの環境変数モジュールは、以下のコマンドで知ることが出来ます。

% module avail

※ ログインノードm000では解析サーバで使えるモジュールのうち幾つかを利用できます。現在読み込まれている環境変数モジュールは次のコマンドで知ることが出来ます。

% module list

(注)ログインノード上で負荷の大きいユーザプロセスを発見した場合には、管理者権限で強制的にkillさせて頂きます。

3.1 Intel コンパイラ

C および Fortran コンパイラが利用可能です。同時利用可能なライセンス数はそれぞれのコンパイラについて 2 です。ライセンスが他利用者により使用されている場合にはしばらく待ってから再試行してください。

  • icc(C コンパイラ)
  • ifort(Fortran コンパイラ)

Intelコンパイラを使用したい場合は以下のようにして、Intelコンパイラの環境変数モジュールを読み込んでください。

% module load intel

異なるバージョンのソフトウェアに切り替えたい場合は、以下のようにしてください。

% module switch intel/12.1

※ 同じソフトウェアの異なるバージョンを同時に読み込むことはできません。モジュールを削除するには以下のようにしてください。

% module unload intel/12.1

3.1.1 利用可能なバージョン

以下のコマンドでご覧ください。

% module show intel

また、ベンダのホームページから Intel コンパイラ version 12 (Intel Composer XE) 最適化クイック・リファレンス・ガイド(外部リンク)が入手可能です。

3.2 PGI コンパイラ

C および Fortran コンパイラが利用可能です。同時利用可能なライセンス数はそれぞれのコンパイラについて 1 です。ライセンスが他利用者により使用されている場合にはしばらく待ってから再試行してください。

  • pgcc(C コンパイラ)
  • pgCC(C++ コンパイラ)
  • pgf77(Fortran77 コンパイラ)
  • pgf95(Fortran90/Fortran95 コンパイラ)
  • pgprof(性能解析プロファイラ)

3.2.1 利用可能なバージョン

以下のコマンドでご覧ください。

% module show pgi

PGI コンパイラを使用したい場合は以下のようにして環境変数モジュールを読み込んでください。

% module load pgi

3.2.2 利用するバージョンの変更

異なるバージョンのソフトウェアに切り替えたい場合は、以下のようにしてください。

% module switch pgi/12.10

※ 同じソフトウェアの異なるバージョンを同時に読み込むことはできません。モジュールを削除するには以下のようにしてください。

% module unload pgi/12.10

最適化オプションの例

PGI コンパイラの利用に際してどのようなコンパイルオプションが最適であるかはソースコードの構造やメモリ使用量に強く依存しますので、各利用者が自分で試行錯誤して本当に最適なオプションを見付けられることをお薦めいたします。参考までに、Intel Core i7 に最適化したコードを生成するには以下が有効なことが多いようです。

% pgcc -tp nehalem-64 -fastsse hogehoge.c
% pgf95 -tp nehalem-64 -fastsse hogehoge.f90

より詳細な PGI コンパイラオプションの使用方法についてはベンダのホームページ(外部リンク)をご覧ください。

3.3 GNU コンパイラ

C および Fortran コンパイラが利用可能です。ライセンス数の制限はありません。

3.2.1 利用可能なバージョン

以下のコマンドでご覧ください。

% module show gcc

GNU コンパイラを使用したい場合は以下のようにして環境変数モジュールを読み込んでください。

% module load gcc

3.2.2 利用するバージョンの変更

異なるバージョンのソフトウェアに切り替えたい場合は、以下のようにしてください。

% module switch gcc/5.4.0

※ 同じソフトウェアの異なるバージョンを同時に読み込むことはできません。
モジュールを削除するには以下のようにしてください。

% module unload gcc/5.4.0

4. ジョブ管理システム

ログインノードであるm000 は PBS Professional を利用してジョブを管理しています。

4.1 PBS Professional

PBS Professional(以下では単に PBS と呼びます)は m000 上でのジョブ制御に用いられているアプリケーションの総称です。PBS の詳細な利用についてはPBS Works DocumentationのサイトにあるユーザーガイドもしくはBIG BOOKを参照してください(これらは外部サイトへのリンクなのでご注意ください)。

4.1.1 ジョブの投入と削除

PBS への指示文と実行コマンドを記述したシェルスクリプト(PBS スクリプト)を作成し、以下のコマンドでジョブを投入します。

% qsub PBSスクリプト

キューへ投入したジョブを削除するには qdel コマンドを使います。ジョブ ID を知るには qstat または qstat-n1 コマンド(詳細は後述)を使ってください。

% qdel ジョブID
% qstat

計算ノードを指定してジョブを実行

通常は指定しませんが、ジョブを実行する計算ノードを敢えて指定する場合には以下のようにします。

% qsub -l nodes=計算ノード名 PBSスクリプト

例えば計算ノード m016 でジョブを実行させる場合には以下の通りです。なおノード上のコア番号の指定は出来ません。

% qsub -l nodes=m016 PBSスクリプト

4.1.2 PBSスクリプトの記入例

以下に、PBS スクリプトの一例を示します。

#! /bin/sh
#PBS -r y
#PBS -m abe
#PBS -q short
#PBS -o Log.out
#PBS -e Log.err
#PBS -N MyPBSjob
#PBS -M who@domain.org.country

# Go to this job's working directory
cd $PBS_O_WORKDIR

# Run your executable
./a.out

上記した PBS スクリプトうち #PBS で始まる2-6行目は qsub に固有なオプションの記載です。このスクリプト例では以下のようなオプションを用いています。

オプション -r

上記した PBS スクリプトの2行目にある #PBS -r y はシステム停止時のジョブの再実行可能・不可能の設定です。このオプションを指定しない場合(デフォルト)には -r y の指定が行われたと看倣されます。

  • -r y : ノードダウンや保守作業などによりジョブが中断した時、システム復旧後に自動的に再実行を行います。
  • -r n : 上記のような場合にシステム復旧後もジョブを再実行せず、ジョブはキューから削除されます。

オプション -m

上記した PBS スクリプトの3行目にある #PBS -m abe は、ジョブに関する電子メールの発送に関するオプションです。このオプションを指定しない場合(デフォルト)には -m a の指定が行われたと看倣されます。

  • -m a : ジョブが中止された場合にメールを送信します。
  • -m b : ジョブの実行が開始された際にメールを送信します。
  • -m e : ジョブの実行が終了した際にメールを送信します。
  • -m n : メールを送信しません。

オプション -q

上記した PBS スクリプトの4行目にある #PBS -q long は、ジョブを投入するキューの指定に関するオプションです。計算サーバで m000 からジョブを投入する場合、キューとして後述する short, mid, long, openmp が指定できます。このオプションを指定しない場合(デフォルト)には -q short の指定が行われたと看倣されます。

  • -q short : キュー short にジョブを投入します。
  • -q mid : キュー mid にジョブを投入します。
  • -q long : キュー long にジョブを投入します。
  • -q openmp : キュー openmp にジョブを投入します。

なおキュー openmp を指定した場合、ジョブを投入する際に使用するコアの数を明示的に指定する必要があります。最大使用コア数は 4 です。指定しない場合(デフォルト)には -l ncpus=1 の指定が行われたと看倣されます。

% qsub -l ncpus=使用コア数 PBSスクリプト

ちなみに、キュー openmp 以外を指定した場合はコア数の指定はできません。以下の例のような表示がされてジョブは投入されません。

% qsub -l ncpus=2 qsub_short.sh
qsub: Job exceeds queue and/or server resource limits

オプション -o, オプション -e

上記の -m e オプションが指定されていればジョブの終了時点で利用者にメールでジョブ終了が通知され(宛先は -M オプションで指定されたアドレス)、同時に以下のファイルに二種類の出力が書き出されます。

  • スクリプト名.oXXX : 標準出力
  • スクリプト名.eXXX : 標準エラー出力

上記の "XXX" はジョブの番号であり、qstat コマンドにより表示されるものです。こうした標準出力ファイル・標準エラー出力ファイルを利用者が指定するのが上記した PBS スクリプトの5行目と6行目にある #PBS -o と #PBS -e オプションです。上記の例では標準出力がファイル Log.out に、標準エラー出力がファイル Log.err に書き出されます。

オプション -N

上記した PBS スクリプトの7行目にある #PBS -N MyPBSjob は、投入するジョブに固有の名前を付けるオプションです。このジョブ名は qstat などのコマンドで表示されるものとなります。なお -N で指定されるジョブ名は空白(スペース)を含まない15文字以内の ASCII 英数文字列であり、なおかつ先頭はアルファベットで始まる必要があります。従って -N 00myjob などという指定は無効です。このオプションを指定しない場合(デフォルト)には当該ジョブの投入に使われた PBS スクリプト名がそのままジョブ名となります。

オプション -M

上記した PBS スクリプトの8行目にある #PBS -M who@domain.org.country は、PBS から発信される電子メールアドレスの転送先指定です。このオプションを指定しないと、PBS からの電子メールはすべて当該ジョブの所有者、すなわち m000.cfca.nao.ac.jp 上のローカルなアカウントに送付されます。なお上記のスクリプト例にある who@domain.org.country は実在しない、架空の電子メールアドレスです。ここには必ず実在するご自分のアドレスを記載してください。

コマンドラインからのオプションの指定

上記のようなオプションはジョブ投入時にコマンドラインからも指定できます。

% qsub -r y -m abe -q long -N MyPBSjob -M who@domain.org.country PBSスクリプト

qsub コマンドはこの他にも多数のオプションを持っています。詳しくは man qsub をご覧ください。

PBS 環境変数

上記した PBS スクリプト内では PBS_O_WORKDIR という変数が使われていますが、これは PBS が内部的に定義している環境変数です。PBS_O_WORKDIR はこの PBS スクリプトが投入されたカレントディレクトリのパスですが、その他の代表的な PBS 環境変数には以下のようなものがあり、利用者はこれらを適所に使うことで生産性の高い PBS スクリプトを構築することが可能となります。

  • PBS_JOBNAME : このジョブのジョブ名
  • PBS_JOBID : このジョブのジョブ ID
  • PBS_O_HOME : このジョブを投入した利用者のホームディレクトリ
  • PBS_O_QUEUE : このジョブが投入されたキューの名称

qsubスクリプト内でのモジュールのロード

PBSジョブとして走らせるコードがIntelコンパイラやPython環境を必要とする場合には、必要なモジュールをqsubスクリプト内で読み込んでおく必要があります。
qsubスクリプトがsh対応の場合には、実行させたいコードの前に以下の二行を追記してください。以下の例ではAnacondaとIntelコンパイラの環境が読み込まれます。

source /usr/share/Modules/init/sh
module load anaconda intel

qsubスクリプトがcsh対応の場合には以下を追記してください

source /usr/share/Modules/init/csh
module load anaconda intel

qsubスクリプトがtcsh対応の場合には以下を追記してください

source /usr/share/Modules/init/tcsh
module load anaconda intel

4.1.3 キュー構成

計算サーバで m000 からジョブを投入する場合、現在のキュー構成は以下のようになっています。この設定は機器の稼働状況や利用者の利用状況を反映して中期的に変更されます。なお、PBSスクリプトのオプション -q を指定しない場合(デフォルト)には -q short の指定が行われたと看倣されます。

キュー名 ジョブ時間制限 実行優先度 最大実行ジョブ数 / user 最大使用コア数 / job 最大投入可能ジョブ数 / user
short 0.5時間 1 96 (48) 1 192
mid 240時間 2 960 (192) 1 2048
long 無し 4 960 (192) 1 2048
openmp 240時間 3 16 (4) 4 64

キュー構成については以下の点に留意してください。

  • 上の表ではキュー long でのジョブ時間制限が「無し」となっていますが、計算サーバは2,3ヶ月に一度の頻度で定期保守作業のために全ノードが停止されます。この時には実行されているジョブもすべて強制終了されますので、キュー long に投入されたジョブの実際的な最長実行可能時間は4,5ヶ月であるとお考えください。
  • キューに設定されているジョブ実行の優先度は表中の数字が小さいほど高く,short > openmp = mid > long の順に設定されています。従って、例えば short と long の両キューにジョブがキューイングされている場合には short キューに投入されたジョブが long キューに投入されたジョブよりも先に実行されます。もし仮に多くの利用者が short キューに多数のジョブを投入するような事態が実現された場合には、short キューに投入されたジョブが終了するまで long キューに投入されたジョブはまったく実行されずに延々と待ち続けることになります。
  • キュー long で最大実行ジョブ数が 960 (192) となっているのは、ここでは hard limit (960) と soft limit (192) の二種類の制限が行われているためです。これらの制限については後述します。
  • キュー openmp のユーザあたりの最大実行ジョブ数はジョブが使用しているコア数に関係なく 16 (4) です。また1ジョブで使用できる最大使用コア数は 4 です。
  • 各利用者が投入できる最大のジョブ数は 4096 です (set server max_queued = [u:PBS_GENERIC=4096])。ここで投入可能なジョブ数とは、実行(R)およびキュー並び(Q)されるジョブ数の最大値を意味します。
  • それぞれの計算ノードにある CPU は4コア (Intel CPUの場合) または16コア (AMD CPUの場合。こちらは仮想コア数) を有しており、それぞれ最大4本または16本のジョブが当該ノードの主記憶を共有します。各々の計算ノード内ではジョブ毎のメモリ量制限はありません。この事は、あるジョブが巨大なメモリを消費しているとその計算ノード内で走る他のジョブのメモリ使用量に制約の掛かる場合があることを意味します。
  • ジョブ時間制限の表示について、short, midキューではCPU time(CPU使用時間)を表しており、openmpキューではwall time(プロセスが開始されてから終了するまでの実時間)を表しています。 openmpキューをご利用の場合はご注意ください。

キュー openmp に関して

キュー openmp を利用する場合は以下の点に注意してください。

  • 計算サーバ上では OpenMP のみ利用可能です。MPI は利用できません。
  • このキューへジョブを投入する際には使用するコア数を明示的に指定する必要があります。指定しない場合(デフォルト)には -l ncpus=1 の指定が行われたと看倣されます。
  • 1ジョブが使用できる最大コア数は 4 です。
  • 最大実行ジョブ数は、ジョブが使用しているコア数に関係なく 1利用者あたり 16 (4) です。

4.1.4 ジョブ状態の表示

キューに投入されているジョブの状態を調べるには qstat コマンドを使います。このコマンドも多数のオプションを持ちますが、まずはオプション無しで投入してみましょう。なお以下の例は実際の計算サーバで実行された結果ではなく、便宜的な例に過ぎません。

% qstat
Job id           Name             User             Time Use S Queue
---------------- ---------------- ---------------- -------- - -----
9123.m000        job1             user1            86:30:47 R long
9162.m000        job2             user2            53:56:23 R long
9270.m000        job3             user3            68:02:20 R long
9271.m000        job4             user4            00:08:25 R short
9345.m000        job5             user5                   0 Q long

ジョブの状態(Status)は上記の "S" 欄に記された文字で表されます。ジョブの代表的な Status には以下のようなものがあります。ジョブ Status の詳しい情報については man qsub を参照してください。

  • E (Exiting) ジョブは実行済みで終了中
  • H (Held) ジョブは保留状態
  • Q (Queued) ジョブはキュー待機状態
  • R (Running) ジョブは実行中
  • S (Suspended) ジョブは中断中

qstat コマンドに -Q オプションを付けて実行すると、現在設定されている全キューの情報を得ることが出来ます。以下の例ではある時点での計算サーバのキュー構成が表示されています。なおキュー long-t は管理者用の試験キューであり、一般利用者はジョブを投入できません。

% qstat -Q
Queue              Max   Tot Ena Str   Que   Run   Hld   Wat   Trn   Ext Type
---------------- ----- ----- --- --- ----- ----- ----- ----- ----- ----- ----
long                 0    70 yes yes    21    49     0     0     0     0 Exec
short                0    33 yes yes     9    24     0     0     0     0 Exec
long-t               0     0 yes yes     0     0     0     0     0     0 Exec

qstat -Q に似ていますが、qstat -q は現在設定されている全キューの情報を別種のフォーマットで出力します。各欄についての説明は man qsub をご覧ください。

% qstat -q
server: m000.cfca.nao.ac.jp
Queue            Memory CPU Time Walltime Node   Run   Que   Lm  State
---------------- ------ -------- -------- ---- ----- ----- ----  -----
long               --      --       --     --     49    21   --   E R
short              --   01:15:00    --     --     24     9   --   E R
long-t             --      --       --     --      0     0   --   E R
                                               ----- -----
                                                  73    30

多数のジョブが投入されている状況では、自分が投入したジョブの状態のみを qstat で表示させたいことがあります。その場合には以下のようなコマンドを打ち込んでください。

% qstat -u 自分のアカウント名

大概の shell に於いて、上記のコマンドは以下のように一般化が可能でしょう。

% qstat -u `whoami`

同様にして、多数のジョブが投入されている状況で現在実行されているジョブの状態のみを表示させるには、以下のようにして -r オプションを付加してください。

% qstat -r

コマンド qstat は計算サーバに限らず PBS を導入しているシステム一般に共通ですが、本プロジェクトの計算サーバに固有なコマンドである qstat-n1 を使うと、ジョブが実行されている計算ノード名を簡単に知ることができます。この出力はコマンド qstat -n1 -r の結果と本質的に同一ですが、各ジョブの情報が一行に短くまとまって出力されることが特徴です。なおこのコマンドではキューイングされてはいるがまだ実行されていないジョブ(Status = Q)の情報は表示されません。

% qstat-n1
Job ID          Username Queue    Jobname    SessID NDS S ETime Node Alloc
--------------- -------- -------- ---------- ------ --- - ----- -----------
24.m000.cfca.na user00   long     runA.csh     4593   1 R 01:49 mis01/0
25.m000.cfca.na user11   long     runB.csh     4644   1 R 01:47 mis01/1
26.m000.cfca.na user22   long     runC.csh     4693   1 R 01:46 mis01/2
27.m000.cfca.na user33   long     runD.csh     4742   1 R 01:45 mis01/3
28.m000.cfca.na user44   short    runE.csh     4735   1 R 01:45 mis02/0

また、以下のように --version を付加して qstat を動かすとシステムにインストールされている PBS のバージョンを知ることが出来ます。なお以下に現れているバージョン番号は単なる例であり、実際に計算サーバにインストールされているものとは異なる場合があります。

% qstat --version
pbs_version = 18.1.3

4.1.5 ジョブの優先度制御

キュー long およびmidではコア資源が空いている場合には 820本 / 利用者 までジョブが実行できます。しかし同一利用者の 160 本目以降のジョブは優先度が下がります。これは PBS の soft limit 機能による制限です。

set queue long max_run = [u:PBS_GENERIC=820]
set queue long max_run_soft = [u:PBS_GENERIC=160]
  • 上記に該当する優先度の低いジョブの実行中に、未だ160本を越えたジョブを実行していない他の利用者がジョブを投入すると、優先度の低いジョブは suspend 状態となり、他の利用者のジョブが終了するまで待たされます。Suspend されたジョブは qstat 表示では以下のように Status = S となります。
Job id            Name             User              Time Use S Queue
----------------  ---------------- ----------------  -------- - -----
81231.m000        myjob            someuser          01:01:25 S long

ジョブ制御の例

ここではキュー long に複数利用者のジョブが投入された場合の動作例を簡潔に説明します。なお、以下では説明の簡潔さ優先のためにこのキューで利用できる総コア数 = 8と仮定し、ひとりの利用者が投入できるジョブ数上限を 8 (soft limit = 4) としていることにご注意ください。

(1) 利用者Aが 11 本のジョブを投入した場合。コア資源が空いていれば全部実行される
Running    : A A A A A'A'A'A' (←5-8本目のジョブ A' は低い優先度)
Queued     : A"A"A"                (←9本目以降のジョブ A" はキューイング状態)

(2) 利用者Bがジョブを 4 本投げた直後。優先度が低いジョブ A' は suspend される

Running    : A A A A B B B B  (←A' に代わり利用者 B のジョブが走る)
Queued     : A"A"A"
Suspended  : A'A'A'A'             (←ジョブ A' は SIGSTOP 信号により suspend される)

(3) 利用者Bのジョブが先に終了するとジョブ A' は suspend から実行状態へ戻る

Running    : A A A A A'A'A'A' (←ジョブ A' の実行が再開される)
Queued     : A"A"A"

その他
  • 上記の優先度制御は PBS の soft limit 機能により実現されています。利用者数がノード数よりも少ない場合にはこの機能の仕様により一見すると直感に反するジョブの割り付けが為されることもありますが、バグではありません。
  • 上記の状態 (2) のように suspend されたジョブが存在する時に保守作業等のためにシステムが停止された場合、再起動後には停止前に実行されていたジョブ(Status = R)と suspend されていたジョブ(Status = S)の投入順序が変わり、停止前に実行されていたジョブが suspend されたりすることがあります。

4.1.6 PBS に関するその他の情報

ジョブの round-robin 形式制御

キュー long(または short)にジョブが一本も投入されていない状況でジョブを投入開始すると、ジョブは各ノード上に以下のような順序で分配されて行きます。これはジョブを各計算ノードに分散してなるべく負荷を均質にしようとするための制御であり、round-robin 形式と呼ばれています。

m001 → m002 → m003 → … → m239 → m240 → m001 → m002 → …

ジョブが強制終了された場合の制御

計算サーバの PBS 環境にはチェックポイント機能がありません。従って、保守作業やシステムダウン等で計算ノードが停止し、再起動された場合のジョブの動きは以下のようになります。

  • PBS スクリプト内でジョブの再実行を設定しているジョブ(#PBS -r y というオプション指定がある、または #PBS -r のオプション指定を持たないジョブ):
    • システム再起動後、資源の空いている計算ノードに於いてジョブの先頭から計算が再開されます。飽くまでジョブ先頭からの計算再実行であり、システム停止時にジョブが到達していた中途時点からの再開は出来ないことに留意してください。
  • PBS スクリプト内でジョブの再実行を設定していないジョブ(#PBS -r n のオプション指定があるジョブ):
    • 当該ジョブはシステム再起動後も自動的に再投入されることはありません。当該ジョブはシステム再起動後にキューから削除されます。

なお、システム停止前にキューイングされていたジョブ(Status = Q)の実行順序はシステムの再起動後も保存されます。ちなみにジョブに関する情報は以下の tracejob コマンドで取得できます。

% tracejob ジョブID

5. その他の注意事項

5.1 ログインノードでの直接計算実行の禁止

ログインノードである m000.cfca.nao.ac.jp での直接計算実行および大規模な可視化(例えば m000 のコマンドラインから a.out 等の実行形式ファイルを直接投入することなど)は絶対に行わないでください。
m000はログインノードであると同時に計算サーバ全体の管理ノードでもあり、この機器の負荷が不必要に上がると PBS 計算ノードとの通信に異常が発生し、最悪の場合には他利用者のジョブが強制終了されることもあります。利用者各位の計算ジョブは短時間のものであっても必ず qsub コマンドを用い、PBS 経由で計算ノードに投入して頂くよう強くお願い申し上げます。データの可視化作業には解析サーバをご利用ください。
m000本体に於いて負荷の大きいプロセスが発見された場合には、当該プロセスを強制的を削除する場合があることをご承知おきください。

5.2 利用者データの無補償・無保証

募集要項こちらの注意事項にも記されているように、計算サーバ利用に当たっての不慮の事故等によるデータの破損・消失、プログラム実行結果やその遅延等により利用者が受け得る如何なる損害についても、本プロジェクトとしては一切の補償・保証を行うことが出来ません。また、計算サーバ上のデータについて本プロジェクトとしてはバックアップの保管等は全く行っておりません。あらかじめご了承ください。