FBQueue: 技術概要

FBQueue (Forblaze Queue) は、共有計算環境における研究者や開発者のために設計された、堅牢で軽量なローカルジョブスケジューラです。

このドキュメントでは、FBQueue のアーキテクチャ、リソース管理、高度なスケジューリング機能、および PBS や Slurm といった伝統的な HPC スケジューラとの互換性について詳しく説明します。


0. インストール方法

FBQueueは単一のバイナリとして配布されており、以下の手順で導入できます。

1. ダウンロードと展開

ご利用の環境(x86_64 または Arm64)に合わせて選択してください。

Linux (x86_64):

wget https://github.com/ForblazeProject/fbqueue/releases/download/v0.9.3/fbqueue-linux-x64.tar.gz
tar -xzvf fbqueue-linux-x64.tar.gz

Linux (Arm64/AArch64):

wget https://github.com/ForblazeProject/fbqueue/releases/download/v0.9.3/fbqueue-linux-arm64.tar.gz
tar -xzvf fbqueue-linux-arm64.tar.gz

2. バイナリの配置

パスの通ったディレクトリ(例:~/bin)にバイナリを移動します。

mkdir -p ~/bin
mv fbqueue ~/bin/

3. (任意) PBSスタイルのシンボリックリンク作成

qsubqstat といった馴染みのあるコマンド名を使用したい場合は、以下のようにリンクを作成してください。

ln -s ~/bin/fbqueue ~/bin/qsub
ln -s ~/bin/fbqueue ~/bin/qstat
ln -s ~/bin/fbqueue ~/bin/qdel

1. 導入と設計思想

FBQueue は、手動でのスクリプト実行と、重厚なエンタープライズ向けスケジューラの間のギャップを埋めるために開発されました。以下の主要な原則に基づいて設計されています。


2. セキュリティと効率性

FBQueue は、ソフトウェアのインストールやネットワークアクセスが制限された高セキュリティ環境向けに構築されています。


3. リソース管理 (Capacity & Cost)

FBQueue は、capacity(容量)と cost(コスト)という抽象的な値を通じて計算リソースを管理します。


4. マルチキューと優先度のサポート

~/.fbqueue/config でキューを定義することで、リソースの分配と実行順序を制御できます。

# 設定例
capacity: 16          # グローバルな最大容量
default_queue: batch

queue: batch
  capacity: 8         # このキューの最大容量
  priority: 10        # 低い優先度

queue: express
  capacity: 4         # このキューの最大容量
  priority: 100       # 高い優先度(先に処理される)

5. 高度なスケジューリング機能

Walltime (-W)

指定された実行時間制限を超えたジョブを自動的に終了させ、暴走したプロセスがリソースを消費し続けるのを防ぎます。

fbqueue sub -W 01:30:00 ./simulation.sh

依存関係管理 (-hold_jid)

指定したジョブ ID が正常終了 (DONE) するまでジョブの実行を待機させます。これにより、複雑なタスクグラフ (DAG) の実行が可能になります。

fbqueue sub -hold_jid 123 ./post_process.sh

遅延開始 (-a)

特定の時間以降にジョブを開始するようにスケジュールします。相対時間 (+1h)、特定の時刻 (18:00)、または絶対的な日付をサポートしています。

fbqueue sub -a 18:00 ./nightly_task.sh

6. PBS/HPC 互換性

FBQueue は、PBS、SGE、Slurm といった既存の HPC スケジューラの慣習と高い互換性を維持しています。

ディレクティブの解析

FBQueue はスクリプト内に埋め込まれたディレクティブを自動的に認識します。既存のジョブスクリプトを修正なしで使用できます。

機能サポートされるディレクティブ
ジョブ名#PBS -N, #SBATCH -J
リソース/コスト#$ -pe smp N, #SBATCH -c N, #PBS -l ncpus=N
ターゲットキュー#PBS -q, #SBATCH -p
標準出力/エラー#PBS -o, #PBS -e
依存関係#PBS -hold_jid
Walltime#PBS -l h_rt=HH:MM:SS

シンボリックリンクによるエイリアス

Linux では、シンボリックリンクを作成することで、慣れ親しんだコマンドを使用して FBQueue を操作できます。


7. 設定と環境

チーム共同利用 (共有モード)

単一マシン上の複数のユーザでキューを共有するには、FBQUEUE_DIR 環境変数を ローカルの共有ディレクトリ に設定します。注:ファイルロックの遅延が発生するため、ネットワークマウントされたドライブ (NFS/SMB) での使用は推奨されません。


8. Windows サポート

FBQueue は Windows をネイティブサポートしており、インタプリタを自動的に選択します。

ジョブは、元のスクリプトのファイル権限を変更することなく、それぞれのシェルを介して実行され、スクリプトの完全性が維持されます。


9. 外部リンク