SCore-D のジョブスケジューリング


このマニュアルには SCore-D がどのようにクラスタ資源をスケ ジューリングするかについて書かれています。内容の大半は SCore-D のマル チユーザモードにおける実行でしか有効ではありません。SCore-D の資源管理 は sc_console コマンドにより制御することができます。

SCore-D はユーザの並列ジョブに対しコンピュートホストを最初に割り当てま す。SCore-D はその初期化時に、それ自身に割り当てられたコンピュートホス トを scorehosts.db に記述された内容に従って クラスタ(あるいはクラスタのクラスタ)として構成しようとします。 ここでクラスタとは一様な(同一機種)ホストの集合を指します。SCore-D が 走る SCOUT 環境が複数の機種で構成されていた場合、SCore-D は複数のクラ スタを内部に作り、同時にそれらをクラスタのクラスタとして管理します。

ユーザがジョブを投入すると、そのジョブが必要とする資源に関する情報が SCore-D に渡されます。SCore-D はその情報に従い、クラスタあるいはクラス タのクラスタを割り当てようとします。ユーザの資源要求を満たすようなクラ スタが複数みつかった場合は、より負荷の軽いクラスタが割り当てられます。 この時、 scorehosts.db に記述されたホストの speed 属性の 値が用いられ、負荷と speed 属性値から相対的に負荷の比較がなさ れます。例えば、同じ CPU で速度の違う二つのクラスタがあったとし、ジョ ブ投入時に負荷が同じであった場合、SCore-D は速度の早い方のクラスタを割 り当てます。

クラスタは、その資源としてメモリ、ディスク、ジョブ数について、制限属性 を持っています。SCore-D は初期値として、メモリ制限値として Linux sysinfo(2) システムコールで得られた総メモリ量が、ディスク制限 値としては Unix statfs(2) システムコールで得られた値、をクラ スタの制限属性の値とします。これらの値は、 sc_console コマンドにより変更することが可能です。これらの 値が資源管理にどのような影響を与えるかについては後述します。

投入されたジョブに対するクラスタの割り当てが成功すると、SCore-D はユー ザのログインを受理します。失敗した場合のログインは拒絶されます。ログイ ンに成功したジョブは、次にステップとして、ユーザが指定した優先度に対応 した優先度付きの待ち行列(queue)に入れられます。SCore-D はデフォール トのコンフィグレーションでは3つの待ち行列を持ちます。第 0 待ち行列に あるジョブはスケジューリングにおいて最も優遇されます(優先度が高い)。

それぞれの待ち行列は、disabled な状態、enabled であるが deactivated で ある状態、そして、activated な状態の3つの状態があります。この状態は Unix におけるラインプリンタの待ち行列の状態に良く似ています。Disabled な状態の待ち行列に対するジョブの投入は拒絶されます。Enabled であるが deactivated な状態の待ち行列はジョブは受け付けますが、その待ち行列にあ るジョブはスケジューリングされません。Activated な状態の待ち行列のみが、 ジョブを受け付け、スケジューリングの対象となります。ジョブが最初に待ち 行列に入る(enqueue)と、要素だけが作られ、そのジョブの最初のスケジュー リング時に並列プロセス(Unix プロセスの集合)が作られます。従い、 deactivated な待ち行列に投入されたジョブは、待ち行列が activated な状 態になるまで、Unix の資源(メモリや CPU など)を消費することはありませ ん。

待ち行列は、スケジューリングモード、最大 CPU 時間、待ち行列残留時間、 メモリ制限、ディスク制限、そして Unix のグループ ID という属性を持ちま す。待ち行列にグループ ID が設定されていた場合、そのグループ ID を持つ ユーザしかジョブを投入することができません。初期値としてこれらの制限な 付けられません。SCore-D システム管理者がシステムの運用方針に従って、適 切な制限が設けられるます。

待ち行列のスケジューリングモードとしては、gang (TSS) るいは exclusive が指定できます。Gang モードの場合、その待 ち行列にあるジョブはギャングスケジューリングにより時分割されます。 Exclusive モードにある待ち行列のジョブは、それより高い待ち行 列のジョブが存在しなければ、スケジューリングが始まるとそのジョブが終了 するまでスケジューリングされ続けます。しかしながら、高い優先度のジョブ があるにもかかわらず、低い優先度のジョブがスケジューリングされる場合が あります。SCore-D は空間分割によるスケジューリングも同時に行なっている ため、高い優先度のジョブが使用していないホストでは、低い優先度のジョブ が同時に走ることが可能であるからです。

待ち行列の最大 CPU 時間の制限は、その待ち行列に投入されたジョブの最大 CPU 時間を制限します。待ち行列の最大 CPU 時間の制限は投入されたジョブ に継承され、ジョブに付けられた最大 CPU 時間の制限は変更することができ ません。その CPU 時間を越えて走ろうとするジョブは SCore-D により自動的 に抹消されます。あるジョブの CPU 時間が待ち行列残留時間を越えた場合、 SCore-D はそのジョブをひとつ下の優先度を持つ待ち行列に移動し、そのジョ ブの待ち行列残留時間を再設定します。この機構により、長時間走行するジョ ブの優先度を順時下げることが可能になります。

待ち行列のメモリとディスクの制限値はパーセント(%)で指定します。実際 の制限値は、そのジョブに割り当てられた制限値と、ジョブが属する待ち行列 のパーセント値の積になります。もし、ユーザが scrun のオプションとして陽に上限を設定した場合、計算された制限値と、ユーザが 指定した値の小さい方が制限値として用いられます。ジョブの実行する各ホス トのいづれかがこの制限値を越えた場合、そのジョブは SCore-D により自動 的に抹消されます。SCore-D は同時に、ユーザジョブがこの制限値で示された 資源を消費すると仮定します。全ての走行しているジョブの制限値の総和は、 クラスタの制限値を越えることはできません。従って、例えば、ある待ち行列 の制限値として 100% を指定されていた場合、かつユーザが陽に宣言値を指定 しなかった場合、その待ち行列にはひとつのジョブしか投入することができま せん。

このメモリとディスクの資源消費制限機構は、クラスタと待ち行列の両方に制 限値が設定されている時にのみ有効なことに注意してください。メモリとディ スクの制限は互いに独立しています。デフォールトでは、SCore-D がクラスタ の制限値を設定しますが、待ち行列の制限値は設定されません。従いまして、 SCore-D システム管理者は、資源消費制限を有効とするためには、少なくとも 待ち行列の制限値を設定する必要があります。待ち行列のメモリとディスクの 制限値がパーセントなのは、複数のクラスタが存在する場合、クラスタにより メモリやディスクの搭載量が異なる可能性があるからです。SCore-D が設定す るディスク搭載量として、/var/scored/ ディレクトリが存在するファ イルシステムの空き要領をデフォールト設定とします。SCore-D システム管理 者が別なファイルシステムも管理する必要がある場合は、 scorehosts.db ファイルのホストレコードに、 watchfs という属性と追加し、その値としてファイルシステム内に 存在するディレクトリ名を列挙してください。現在の実装では、ファイルシス テム毎に制限する術はありません。

SCore-D がマルチユーザモードで起動され、カレントディレクトリあるいはイ ンストールディレクトリに scored.rc という名前のファイルが存在した場合、SCore-D はその ファイルにコンソールコマンド列があるものと仮定し、そのファイルを読み込 み、そのコマンド列を実行します。この機構により、SCore-D システム管理者 は SCore-D の初期状態を設定することができます。

資源不足の場合

このマニュアルの最初の方で述べましたように、投入ざれたジョブに割り当て る資源が不足している場合、そのジョブの投入は拒絶されます。もしユーザが 資源の空きを待ちたい時には、 scrun コマンドにおいて wait オプションを指定してください。

排他スケジューリングモードについて

現在 SCore-D に実装されている排他スケジューリングモード(exclusive mode)のアルゴリズムは、理論的に飢餓状態に陥る可能性があります。実際の 運用においてあるジョブが本当に(無限にスケジューリングされない)飢餓状 態に陥ることはほとんどありませんが、高負荷時においてジョブ間にスケジュー リングの不公平が生じることがあります。一方、ギャングスケジューリングに よる時分割スケジューリングでは、より公平にスケジューリングされます。ギャ ングスケジューリングによる並列プロセス切替時間は、ホスト数やネットワー クの性能に依存しますが、多くの場合数ミリ秒しかありません。

メモリとディスクの制限について

現在の実装では、メモリとディスクの制限はジョブ全体に対してのみ有効です。 例えば並列パイプで結合された複数の並列プロセスから成るジョブにおいては、 資源の消費量は個々の並列プロセスではなく、ジョブ全体として計測されます。 一方、逐次に実行される並列プロセスから成るジョブの場合、個々の並列プロ セスの資源消費が制限の対象となります。

あるジョブのディスク消費には、そのジョブの実行形式ファイル、チェックポ イントが行なわれる場合は、プロセスのメモリイメージの大きさのファイルと そのバックアップ用のファイルの大きさの総和となります。 sc_create_temporary_file(3) 関数により一時ファイルを生成 した場合、この大きさも考慮される必要があります。

See Also

SCore-D コンソールコマンド, sc_console, scorehosts.db, scrun
PCCC logo PCクラスタコンソーシアム

CREDIT
This document is a part of the SCore cluster system software developed at PC Cluster Consortium, Japan. Copyright (C) 2003 PC Cluster Consortium.