MATLAB ジョブ スケジューラ クラスターの自動サイズ変更の設定
MATLAB® ジョブ スケジューラ (MJS) クラスターをカスタマイズして、サイズが自動変更されるようにできます。既定では、MJS クラスターのサイズ変更機能は有効になっていません。これは、クラスター内の現在のワーカー数を超えるワーカーを必要とする作業をクラスターに投入すると、MJS により直ちに拒否されることを意味します。自動サイズ変更 (自動スケーリングともいう) を使用すると、このような作業をクラスターに投入し、投入された作業の量に応じて自動的にクラスター内のワーカー数を変更することができます。作業が多くなるとクラスターは拡大 (スケール アップ) し、作業が少なくなると縮小 (スケール ダウン) します。これにより、計算リソースをより効率的に使用でき、コストの節約につながります。
MJS クラスターのサイズが自動変更されるよう設定するには、以下を行う必要があります。
mjs_def
ファイル内で最大ワーカー数を設定します。MJS クラスターを開始します。
自動サイズ変更処理を設定します。
ワーカーの最大数の設定
MJS クラスターをサイズ変更可能にするには、mjs_def
ファイルを次のように編集して、クラスターの最大ワーカー数を定義する必要があります。
matlabroot/toolbox/parallel/bin
にあるファイルmjs_def.sh
(Linux®) またはmjs_def.bat
(Windows®) を開きます。ここで、matlabroot
は MATLAB インストールのディレクトリです。行
#MAX_LINUX_WORKERS=
または行#MAX_WINDOWS_WORKERS=
のいずれか、あるいは両方のコメントを解除し、望ましい値に設定します。これらの変数は Linux および Windows ワーカーの最大数をそれぞれ定義し、クラスターのサイズはこの値まで変更できます。
サイズ変更可能な MJS クラスターを使用すると、クラスター内の現在のワーカー数を超えるワーカーを必要とするジョブを、MAX_LINUX_WORKERS
と MAX_WINDOWS_WORKERS
で指定された数を上限としてキューに入れることができます。それ以外のジョブは直ちにキャンセルされます。
ヒント
mjs_def
ファイルには、standard
スケジューリング アルゴリズムなど、サイズ変更可能な MJS クラスターと良好に連携するスケジューリング アルゴリズムも指定できます。詳細については、MATLAB ジョブ スケジューラのスタートアップ パラメーターの定義の SCHEDULING_ALGORITHM
パラメーターの定義を参照してください。
MJS クラスターの開始
mjs_def
ファイルで定義されたオプションを使ってクラスターを作成するには、このファイルを編集して保存した後に MJS クラスターを開始します。MJS クラスターのインストール、構成、および開始方法の詳細については、MATLAB ジョブ スケジューラおよびネットワーク ライセンス マネージャー向けのインストールを参照してください。
メモ
クラスターの開始後に Linux ワーカーおよび Windows ワーカーの最大数を変更するには、matlabroot/toolbox/parallel/bin
にある resize
スクリプトを使用して resize update
コマンドを実行します。以下に例を示します。
% cd matlabroot/toolbox/parallel/bin % ./resize update -jobmanager myJobManager -maxlinuxworkers 4 -maxwindowsworkers 8
自動サイズ変更処理の設定
サイズ変更可能な MJS クラスターのサイズが自動変更されるようにするには、クラスターのサイズを定期的に調整するバックグラウンド処理を設定する必要があります。このバックグラウンド処理の具体的な実装は多くの要因に左右されますが、以下の一般的な推奨手順に従うことができます。
クラスターの望ましいサイズを特定します。サイズ変更可能な MJS クラスターの望ましいサイズは、各オペレーティング システムのワーカー合計数として報告されます。したがって、既にクラスター内にあるすべてのビジー状態のワーカーと一部のアイドル状態のワーカーが含まれます。望ましいサイズは、実行中のジョブとキュー内のジョブに基づいて変更されます。
matlabroot/toolbox/parallel/bin
にあるresize
スクリプトを使用して、resize status
コマンドを実行します。上記の% cd matlab/toolbox/parallel/bin % ./resize status
resize status
コマンドにより、サイズ変更可能なクラスターに関する情報が JSON 形式で返されます。JSON 出力を解析し、MJS クラスターにおける Linux および Windows ワーカーの望ましい数を表す、{ "jobManagers": [ { "name": "myJobManager", "host": "myhostname", "desiredWorkers": { "linux": 1, "windows": 0 }, "maxWorkers": { "linux": 4, "windows": 8, }, "workers": [ { "name": "worker_1", "host": "myhostname", "operatingSystem": "linux", "state": "busy", "secondsIdle": 0 }, { "name": "worker_2", "host": "myhostname", "operatingSystem": "linux", "state": "idle", "secondsIdle": 60 } ] } ] }
desiredWorkers
値を抽出します。望ましいワーカー数をクラスター内のワーカー数と比較し、ワーカーを起動または停止する必要があるかどうかを判定します。
resize status
コマンドの出力にある配列workers
を使用して、クラスター内のワーカーを調べます。キュー内のジョブが最終的に必ず実行されるようにするには、望ましいワーカー数と同じか、それを超える十分な数のワーカーを起動する必要があります。オプションで、望ましいワーカー数を超えるアイドル状態のワーカーを停止することができます。メモ
環境内でワーカーの起動に時間がかかる場合は、余分なワーカーがアイドル状態になってからしばらく待ったうえで、停止することもできます。この方法は、余分なワーカーがアイドル状態になってすぐ後に再度必要となる場合、アイドル状態のワーカーを直ちに停止するよりも効率的です。ワーカーがアイドル状態であった期間を確認するには、ワーカーの
secondsIdle
値を調べます。必要に応じてワーカーを起動または停止します。これを行うには、ユーティリティ スクリプト
startworker
およびstopworker
を使用します。ワーカーの停止に際して作業が中断されないようにするには、stopworker
コマンドと共に-onidle
フラグを使用することを推奨します。
参考
startworker
| stopworker
| mjs