7.2 各種要件の実現アプローチ
7.2.5 シナリオにしたがった実験の実行
実験シナリオは、管理用ノードで動作するScenario Masterと、実験用ノードで 動作するScenario Slaveが協調して実行する。シナリオの実行方法として3つのモ デルを検討した。ここでは、3つのモデルについて述べる。
ノード自律モデル 実験前にシナリオをScenario Masterが各実験用ノード上で動 作するScenario Slaveに配布し、Scenario Slaveは配布されたシナリオにそっ て自律的にコマンドの実行を行う。このモデルでは、各Scenario Slaveが自 律的にコマンドを実行するため、各実験用ノードで実行されるシナリオ間の 協調が困難である。図 7.1にノード自律モデルの図を示す。
コマンド送信モデル Scenario Masterからコマンド実行のタイミングごとに、実行 すべきコマンドを実験用ノード上のScenario Slaveに送信する。各Scenario Slaveは受信したコマンドを単に実行する。このモデルでは、Scenario Master は実験用ノードの台数だけのセッションを制御しなければならず、実験駆動 単位が大規模になるほど実装面の問題が発生する可能性がある。また大規模 でなくてもあるタイミングに処理が集中した場合には、Scenario Masterの 負荷が大きくなり、設定されたタイミングどおりにシナリオを実行できない 可能性がある。
Scenario Masterと、実験用ノード上のScenario Slaveがメッセージを交換す ることで、実験用ノードで実行されているシナリオ間の協調を行うこともで きるが、この処理を行った場合はさらにScenario Masterの負荷が高くなる。
また実験用ノード間でメッセージ交換を行い、それぞれが協調するという方
実験用ノード Scenario
Slave Scenario Slave
Scenario
実験用ノード Master Scenario 管理用ノード
シナリオ ノード用 シナリオ
ノード用 シナリオ
ノード用
実験用ノード Slave
図 7.1: ノード自律モデル
実験前に各実験用ノードのシナリオを各実験用ノード上のScenario Slaveに配布し、Scenario Slaveは受け取ったシナリオを自律的に実 行する。各実験用ノードで実行されているシナリオ間の協調が困難で ある。
Slave Scenario Slave
Scenario
実験用ノード Master Scenario 管理用ノード
コマンド
シナリオ
Scenario
実験用ノード 実験用ノード
Slave
コマンド
コマンド
図 7.2: コマンド送信モデル
Scenario Masterからそれぞれの実験用ノードに一つ一つ実行するべ きコマンドを送信する。ノードの制御精度は高いと考えられるが、実 験用ノードが多くなるほどScenario Masterの負荷が高くなる。
用のセッションを保持する必要があり、実験自体に影響をおよぼす可能性が ある。このモデルを図 7.2に示す。
これらをふまえて、まえもってノード用のシナリオを送付し、協調が必要な場合 にのみメッセージパッシングを用いる手法を採用した。このモデルでは、Scenario
Masterは設定記述を読み込み、実験前に各実験用ノード用のシナリオをScenario
Slaveに配布する。各実験用ノードが別のノードの挙動をトリガとしてイベントや
コマンドを実行するといったノード間のシナリオの同期が必要な場合は、Scenario
Masterを通じたメッセージパッシングを用いて行う。OSやアプリケーションソフ
トウェアの導入および設定が済んだノードでは、実際にノード上でコマンドを実行 するScenario Slaveが起動する。Scenario Masterは定期的にノードへ接続を試み、
Scenario Slaveが起動後、接続が成功すると、Scenario SlaveはScenario Masterか ら実行すべきシナリオを受け取りシナリオ実行を開始する。Scenario Slaveは基本
Slave Scenario
実験用ノード シナリオ
ノード用
シナリオ ノード用
シナリオ ノード用 Master
Scenario 管理用ノード
シナリオ協調用
メッセージ
メッセージ メッセージ
実験用ノード Slave
実験用ノード Scenario
Slave Scenario
図 7.3: SpringOSでの採用モデル
実験前にScenario Masterから各実験ノード用のシナリオをScenario Slaveに送付し、各実験ノード上の Scenario Slaveは自律的にシナ リオを実行する。他のノードシナリオとの協調が必要な場合にのみ Scenario Masterとのメッセージ交換によりシナリオの停止と再開を 制御する。
には、Scenario Masterへのメッセージ送信や、Scenario Masterからのメッセージ を受信するまで、シナリオの実行を停止するといった処理を行う。また、Scenario Masterは専用のシナリオを持っており、あるScenario Slaveからのメッセージを 受信するまでのシナリオ実行の停止や、Scenario Slaveへのメッセージの送信を行
う。このScenario Masterのシナリオ実行により、各実験用ノードのシナリオ間の
協調を行う。
このモデルでは、各実験用ノードのシナリオ間協調が可能となるばかりではな く、協調が必要な時のみメッセージ交換を行うことで、毎回コマンドを送信する 場合よりもScenario Masterの負荷が軽減できる。このモデルを図 7.3に示す。