研究方針

PCクラスタ向けOS「SSS-PC」のための負荷分散スケジューラの設計

卒論本体に関してはLab/卒業論文に。

設計

本スケジューラーは、各ノードの負荷情報に基づき、タスクを適当なノードにマイグレーションすることによってロードバランシングを実現する。

負荷情報の取得方法・内容

情報開示機構を用いる。

参考資料:Lab/SSS-PC/情報開示機構

検討課題

アルゴリズム

ここではアルゴリズムについて検討する。スケジューラーは自ノード上のタスクを他ノードへマイグレーションするかどうか判断するが、以下の3点での判断が必要となる。

  1. マイグレーションは必要かどうかの判断
  2. マイグレーションさせるタスクの選択
  3. マイグレーション先の選択

1.については、自ノード全体の負荷と他の各ノードそれぞれの負荷情報を比較し、他のノードより著しく高いと判断された場合にはマイグレーションすべきと判断する必要がある。

1.他ノードと自ノードの負荷状態を比較し、最も負荷の低いノードを選ぶ

2.については、自ノードのうち「他ノードに移動させると負荷が平均化されるタスク」を選択する必要がある。

負荷が極端に大きいタスクを他ノードへ移動させると、移動先ノードの負荷が大きくなりすぎて再びマイグレーションが発生し、これを繰り返すことでマイグレーションばかりが発生する可能性がある。

逆に負荷が極端に小さいタスクを他ノードへ移動させると、負荷の変化があまり起こらないため何度もマイグレーションが発生する可能性がある。

よって、「マイグレーションを行うと自ノード・相手先ノード共に負荷が平均化されるタスク」を選択する必要がある。

2.移転対象のタスクを決定する

3.については、負荷が最も小さいノードを選択すべきなのかそうでないのかを検討すべきである。

負荷が最も小さいノードを選択するようにすると、複数のノードから一斉にタスクが移動して一気に負荷がかかる可能性や、移動するタスクの負荷の大きさによってノード毎にばらつきが出る可能性がある。

マイグレーションとシグナル

ここではマイグレーション実行に必要なシグナルについて検討する。

マイグレーションの仕組みはスケジューラ側とタスク側に分けて検討する必要がある。

  1. スケジューラはシグナルを発行する
  2. 各タスクはシグナルをキャッチしてマイグレーションを実行する

スケジューラ

タスク

タスクへどうやってシグナルをキャッチ&マイグレーション実行機能を組み込ませるか。

  1. ソースレベルで組み込ませる
    1. 誰が使うんだろう……。
  2. ライブラリを用意する
    1. ↑どうやって?ヘッダを書いてインクルードさせる?
  3. ラッパーアプリケーション??
    1. 先にマイグレ機構を搭載したプログラムを起動し、そこから該当プログラムを起動させる?

外部仕様

キーワード

SSSPCのロードバランシング

ロードバランシング

SSS-PC

SSS-PCの特徴より引用:

この二つは何が違うの……?

その他の特徴:

Lab/SSS-PC


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS