以下、本発明の実施の形態を、図面を参照しながら説明する。
図1は本実施例の情報処理装置1のハードウェア構成例である。情報処理装置1は、受信した情報から通信量算出の対象のシステムを特定し、システムのネットワークの通信量を算出する。ネットワークの通信量を算出する対象のシステムは複数のサーバおよび複数のスイッチを有する。情報処理装置1は入力された情報からシステムを特定するため、システムは実際に存在する必要はない。設計者は、例えば、PCクラスタシステムのネットワークを以下の手順で設計する。(1)設計者はサーバとスイッチとの間およびスイッチとスイッチとの間の結線を設計する。(2)設計者は設計した結線を基に経路を設計する。(3)設計者は結線と経路に基づきネットワークの平均ホップ数あるいは各結線の通信量等の性能を評価する。設計者は評価結果に基づき、必要に応じて(1)乃至(3)を繰り返す。ネットワークの接続形態や並列環境で実行するアプリケーションによってネットワークを流れるデータ量は異なる。例えばアプリケーションA向けに最適化したネットワークの場合、アプリケーションAを高速に処理する。しかし、アプリケーションBを高速に処理できるとは限らない。したがって、様々なネットワークの結線、経路についてシミュレーションすることにより、最適な構成を決定する必要がある。設計者が以上の手順に基づきPCクラスタシステムのネットワークの設計を行うためには、結線と経路情報に基づきネットワークの性能を評価する必要がある。本実施例の情報処理装置1は結線と経路情報に基づきネットワークの性能を評価するための情報を出力する。情報処理装置1がシステムのネットワークの通信量を算出することで、設計者はシステムの実際の運用を開始することなくシステムの不具合を検出することができる。この結果、設計者はシステムの構造を評価および改善することができる。情報処理装置1は入力部2、記憶部3、演算部4、および出力部5を有する。入力部2、記憶部3、演算部4、および出力部5はバス6により接続される。
入力部2はネットワークの結線情報80、経路情報90、サーバ群情報50、発信データ量情報60、および比率情報70の定義情報を取得する。入力部2は例えばキーボード、マウスなどの入力機器である。また、入力部2は他の装置からネットワーク経由で定義情報を受信するネットワークインターフェースである場合もある。
記憶部3は入力部2が受信したネットワークの結線情報80、経路情報90、サーバ群情報50、発信データ量情報60、および比率情報70の定義情報を記憶する。また、記憶部3は演算部4が通信量算出処理を実行するための通信量算出プログラム7(処理プログラム)を記憶する。また、演算部4が通信量算出プログラム7を実行するときの途中結果の情報を記憶する。記憶部3は例えば半導体メモリ、磁気ディスク装置等である。
演算部4は記憶部3に格納された通信量算出プログラム7を読み出して実行することにより、発信通信量算出部41、応答通信量算出部42、平均通信量算出部43、発信ホップ数算出部44、応答ホップ数算出部45、平均ホップ数算出部46、評価決定部47として機能する。演算部4は例えば中央演算ユニット(CPU)である。
出力部5は演算部4が通信量算出プログラム7を実行した処理結果を出力する。出力部5はディスプレイ、プリンタなどの出力機器である。また、出力部5は他の装置にネットワーク経由で定義情報を送信するネットワークインターフェースである場合もある。出力部5は処理結果をデータファイルとして出力する場合もある。
ここで、演算部4の機能について説明する。図2は演算部4の機能ブロック図である。発信通信量算出部41は定義情報により特定されるシステムの各サーバが発信するデータ量を算出する。応答通信量算出部42は定義情報により特定されるシステムの各サーバが応答のために発信するデータ量を算出する。平均通信量算出部43は発信通信量算出部41および応答通信量算出部42が算出したデータ量から発信と応答の平均の通信量を結線毎に算出する。発信ホップ数算出部44は定義情報により特定されるシステムの各サーバの発信データ量を考慮したサーバ間の重み付ホップ数を算出する。応答ホップ数算出部45は定義情報により特定されるシステムの各サーバの応答のための発信データ量を考慮したサーバ間の重み付ホップ数を算出する。平均ホップ数算出部46は発信ホップ数算出部44および応答ホップ数算出部45で算出した重み付ホップ数から発信と応答の平均の重み付ホップ数をサーバ間毎に算出する。評価決定部47は発信通信量算出部41、応答通信量算出部42、平均通信量算出部43、発信ホップ数算出部44、応答ホップ数算出部45、および平均ホップ数算出部46で算出した結果を出力する。
次に情報処理装置1が実行する処理について説明する。情報処理装置1は受信した定義情報からシステムを特定し、特定したシステムの各ノード間の通信量およびサーバ間のホップ数を算出する。まず、情報処理装置1の入力部2が受信する定義情報について説明する。定義情報は結線情報80、経路情報90、サーバ群情報50、発信データ量情報60、および比率情報70を含む。
図3は結線情報80である。結線情報80はシステムの各ノード間の接続を定義する情報である。ノードはネットワークの節点であり、例えば、サーバあるいはスイッチである。具体的には結線情報80は複数のサーバおよび該複数のスイッチのポート間の結線が定義される。結線は各ノードのポート番号の対応関係によって定義される。結線情報80は、第一のノード識別子(サーバ/スイッチ識別子)81、第一のノードのポート番号(ポート番号)82、第二のノード識別子(サーバ/スイッチ識別子)83、および第二のノードのポート番号(ポート番号)84を含む。ノード識別子はシステム内のサーバあるいはスイッチの識別子情報である。ポート番号はサーバあるいはスイッチのポート番号情報である。各ノード間は、例えば、インフィニバンド(InfiniBand(商標))やミリネット(Myrinet(商標))などの高速通信技術によって接続される。
図4は経路情報90である。経路情報90はノード間を伝送されるデータの経路を定義する情報である。経路情報90はサーバ/スイッチ識別子91、受信先サーバ識別子92、および出力ポート番号93を含む。サーバ/スイッチ識別子91はシステム内のサーバあるいはスイッチを特定するための識別子である。受信先サーバ識別子92はサーバ/スイッチ識別子91から送信するデータの受信先のサーバの識別子である。出力ポート番号93はサーバ/スイッチ識別子91のノードが受信先サーバ識別子92のサーバにデータを伝送する場合に、データを出力するサーバ/スイッチ識別子91のノードのポート番号である。
図5はサーバ群情報50である。サーバ群情報50はシステムに含まれるサーバを機能によって複数のサーバ群に分類して定義する情報である。サーバ群情報50は、システムが有する複数のサーバ群を識別するサーバ群識別子情報51、サーバ群に含まれるサーバの数を示すサーバ数情報52、およびサーバ群に含まれるサーバを識別するサーバ識別子情報53を含む。サーバ群識別子51が「A」のサーバ群(サーバ群A)は計算サーバ群であり、サーバ群識別子51が「B」のサーバ群(サーバ群B)は入出力サーバ群であるとする。サーバ群Aはサーバ数が8台であり、8台のサーバのそれぞれのサーバ識別子は、「21」、「22」、「23」、「24」、「25」、「26」、「27」、および「28」である。サーバ群Bはサーバ数が2台であり、2台のサーバのそれぞれのサーバ識別子は「29」および「30」である。
図6は発信データ量情報60である。発信データ量情報60は各サーバ群が発信する通信量を定義する情報である。発信データ量情報60はサーバ群識別子情報61および発信データ量62を含む。サーバ群識別子61はシステムのサーバ群を識別する情報である。サーバ群識別子61はサーバ群情報50のサーバ群識別子51に対応する。発信データ量62はサーバ群識別子61で特定されるサーバ群の各サーバが発信するデータ量を示す情報である。本実施例の対象のシステムは例えばPCクラスタの並列コンピュータである。本実施例のPCクラスタを構成する計算サーバは同じ性能であるとする。本実施例では、サーバ群Aの各サーバが発信するデータ量は同じであるとして定義する。サーバが発信するデータ量は、例えば、サーバの処理能力などの性能情報に基づき定義する。本実施例では、サーバ群Aのサーバが発信するデータ量を「1.00」とする。発信データ量62はサーバが自発的に発信するデータ量を示す。他のサーバからの要求に応じて送信するデータ量は発信データ量に含まない。サーバが発信するデータ量は比較的容易に設計することが可能だが、受信したデータに対して応答するデータ量を設計することは困難である。本実施例の入出力サーバ群であるサーバ群Bの各サーバは自発的にデータを発信しない。そこで、サーバ群Bのサーバが発信するデータ量を「0.00」と定義する。発信データ量情報62は、例えば、各サーバの単位時間当たりの仕事量に比例した値を用いる。仮にサーバ群Cが存在し、サーバ群Aの2倍の性能である場合、サーバ群Cの発信データ量は「2.00」と定義できる。
図7は比率情報70である。比率情報70は一つサーバ群が発信する全てのデータ量に対するそれぞれのサーバ群が受信するデータ量の割合を定義する情報である。比率情報70は発信元サーバ群71、受信先サーバ群72、および割合73を有する。発信元サーバ群71はデータを発信するサーバ群を識別する情報である。受信先サーバ群72は発信元サーバ群71が送信したデータを受信するサーバ群を識別する情報である。割合73は発信元サーバ群71が送信する全てのデータ量に対する受信先サーバ群72に送信するデータの割合の情報である。比率情報70はサーバ群の組み合わせ毎に定義される。サーバ群Aが発信する全てのデータ量に対してサーバ群Aがサーバ群Aに発信するデータ量の比率は0.95である。サーバ群Aが発信する全てのデータ量に対してサーバ群Aがサーバ群Bに発信するデータ量の比率は0.05である。サーバ群Bは自発的に発信しないためサーバ群Aおよびサーバ群Bに対して送信するデータの比率は共に「0.00」になる。
次に通信状態を算出する対象のシステムについて説明する。図8は本実施例の通信量を算出する対象のシステム10である。情報処理装置1は受信した定義情報から通信状態を算出する対象のシステムを決定する。本実施例の計算の対象となるシステム10は複数のサーバおよび複数のスイッチを含む。システム10は例えば並列コンピュータである。システム10の複数のサーバは、機能に応じて複数のサーバ群に分類される。本実施例においてサーバ群は計算サーバ群(サーバ群A)と入出力サーバ群(サーバ群B)に分類される。システム10はサーバ群毎にデータ転送量が不均等である。計算サーバ群に含まれる核サーバは並列コンピュータの処理対象の計算処理を実行する。計算サーバ間は計算処理の実行時に計算サーバ間で演算結果の情報を送受信する。入出力サーバ群の各サーバはデータの入出力を管理および格納するサーバである。データは、例えば、計算サーバが実行するプログラム、計算サーバが計算プログラムを実行するために必要な情報である。入出力サーバは計算サーバからの読出アクセスあるいは書込アクセスに応じてデータを送信あるいは受信する。
図8のシステム10において、計算サーバはサーバ21、サーバ22、サーバ23、サーバ24、サーバ25、サーバ26、サーバ27およびサーバ28である。入出力サーバはサーバ29およびサーバ30である。スイッチはデータの転送先のノードを条件に応じて切り替える。スイッチはスイッチ31、スイッチ32、スイッチ33、およびスイッチ34である。サーバおよびスイッチの間を結ぶ線はシステム10のネットワークの結線を示す。また結線に隣接する数字は各ノードのポート番号を示す。例えば、サーバ29のポート1はスイッチ31のポート3に接続する。
本実施例のPCクラスタシステムは計算処理を行う計算サーバおよびデータ入出力を行う入出力サーバは全て高速なネットワークで結合される。計算サーバのみが結合されたPCクラスタシステムの場合、全てのサーバ間の通信量は同一であると定義することができる。しかし、本実施例のPCクラスタシステムの計算サーバおよび入出力サーバは異なるデータ量が通信される。本実施例のPCクラスタシステムは計算サーバおよび入出力サーバのような役割の異なるサーバが結合される点、複数のスイッチを介してサーバが結合される点が従来のPCクラスタシステムとは異なる。PCクラスタシステム内の計算サーバあるいは入出力サーバは役割が異なるため、サーバ間の通信量は不均等になる。例えば計算サーバ同士で通信されるデータ量は計算サーバと入出力サーバとの間で通信されるデータ量よりも非常に多い。更に、本実施例の入出力サーバは計算サーバからのデータの入出力要求に対しては応答するが、計算サーバに対してデータを発信しない。また、計算サーバ間の通信は、計算サーバが発信する通信と他の計算サーバから受信した通信要求に対して応答する通信の二種類の通信が発生する。このように本実施例の対象とするPCクラスタシステムでは、サーバの機能の違いによって通信量や通信の性質が異なる。
次に、情報処理装置1がシステムを評価可能な情報を算出する処理について説明する。演算部4は各サーバが発信するデータ量を発信元サーバと受信先サーバの組み合わせ毎に算出する。また、演算部4は各サーバが受信したデータに対して応答するデータ量を発信元サーバと受信先サーバの組み合わせ毎に算出する。また、演算部4は発信時および応答時の各結線に伝送されるデータ量を算出する。また、演算部4はサーバが発信するデータ量を考慮した重み付ホップ数を発信元サーバと受信先サーバの組み合わせ毎に算出する。また、演算部4はサーバが受信したデータに対して応答するデータ量を考慮した重み付ホップ数を発信元サーバと受信先サーバの組み合わせ毎に算出する。また、演算部4は発信および応答の重み付ホップ数から平均ホップ数を算出する。
[発信通信量]
まず、演算部4が発信元サーバと受信先サーバの組み合わせ毎に各サーバの発信するデータ量を算出する処理を説明する。演算部4は発信通信量算出部41として機能し、サーバ群情報50、発信データ量情報60、および比率情報70から発信量情報テーブル100を作成する。図9は発信量情報テーブル100である。発信量情報テーブル100はシステム10内の一つのサーバが他のサーバに発信するデータ量を記憶するテーブルである。発信量情報テーブル100は発信元サーバ識別子101、受信先サーバ識別子102、および発信データ量103を有する。発信元サーバ識別子101は発信元のサーバを特定する識別子である。受信先サーバ識別子102は受信先のサーバを特定する識別子である。発信データ量103は発信元サーバから受信先サーバに送信されるデータ量である。以下、演算部4が発信量情報テーブル100を生成する処理を説明する。図10は発信量情報テーブル100を生成する処理のフローチャートである。
発信通信量算出部41は発信量情報テーブル100を生成する処理において、定数および変数として「i」、「j」、「From[i]」、「To[j]」、「FromNum」、「ToNum」、「FromOutput」、「SendAmount」、「Weight」を使用する。「FromNum」は発信元サーバ群に含まれるサーバの台数である。「ToNum」は受信先サーバ群に含まれるサーバの台数である。「i」は発信元サーバ群に含まれるサーバを特定する変数である。例えば、サーバ群Aが8台の発信元サーバを有する場合、「i」は0から7の値になる。「j」は受信先サーバ群に含まれるサーバを特定するための変数である。例えば、サーバ群Aが8台の受信先サーバを有する場合、「j」は0から7の値になる。「From[i]」は発信元サーバ群に属するサーバを特定する発信元のサーバ識別子である。「To[j]」は受信先サーバ群に属するサーバを特定する受信先のサーバ識別子である。「FromOutput」は発信元サーバが発信するデータ量である。「Weight」は発信元サーバが発信する全てのデータの内、受信先サーバ群に送信するデータに対する割合を定めた値である。「SendAmount」は発信元サーバが受信先サーバに送信するデータ量である。
発信通信量算出部41は比率情報70、サーバ群情報50および発信データ量情報60を記憶部3から読み出して、初期情報を取得する(S01)。発信通信量算出部41は「FromNum」に比率情報70の発信元サーバ群71に対応する発信元サーバ群のサーバ数52をサーバ群情報50から読み出して設定する。発信通信量算出部41は「ToNum」に比率情報70の受信先サーバ群72に対応する受信先サーバ群のサーバ数52をサーバ群情報50から読み出して設定する。発信通信量算出部41は「FromOutput」に発信データ量情報60の発信データ量62に応じて発信元サーバ群の各サーバが発信するデータ量を設定する。発信通信量算出部41は「Weight」に比率情報70の割合73に応じて比率を設定する。
発信通信量算出部41は発信量情報テーブル100の発信元サーバ識別子101および受信先サーバ識別子102に、システム10の全てのサーバが発信元サーバあるいは受信先サーバになるときの組み合わせを登録する(S02)。発信通信量算出部41は発信量情報テーブル100から一つのレコードを読み出す(S03)。
発信通信量算出部41は発信量情報テーブル100のレコード読み出しに成功したか否かを判別する(S04)。全レコードの読出しが終了している場合(S04:No)、発信通信量算出部41は発信量情報テーブル100の作成を完了しているため発信データ量の算出処理を終了する。全レコードの読出しが完了していない場合(S04:Yes)、発信通信量算出部41は変数「i」を「0」に初期化する(S05)。
発信通信量算出部41は、変数「i」の値が「FromNum」よりも小さいか否かを判別する(S04)。発信通信量算出部41は変数「i」の値が「FromNum」以上の場合(S04:No)、発信通信量算出部41はステップS03の処理に戻る。変数「i」の値が「FromNum」以上の場合、発信量情報テーブル100の全ての発信元サーバについて登録が完了した状態である。一方、変数「i」の値が「FromNum」よりも小さい場合、発信通信量算出部41は変数「j」を「0」に初期化する(S07)。
発信通信量算出部41は、変数「j」の値が「ToNum」よりも小さいか否かを判別する(S08)。発信通信量算出部41は変数「j」の値が「ToNum」以上の場合(S08:No)、変数「i」の値を「1」だけ増し(S09)、ステップS06に移行する。一方、発信通信量算出部41は「j」の値が「ToNum」以上の場合(S08:Yes)、発信元サーバ群のサーバが発信する発信データ量を算出する(S10)。発信通信量算出部41は発信元サーバが発信するデータ量の受信先サーバ群に送信する割合73を乗算し、受信先サーバ群に含まれるサーバ数52で除算することにより発信データ量「SendAmount」を算出する。発信通信量算出部41は具体的には式「SendAmount」=「FromOutput」*「Weight」/「ToNum」により「SendAmount」の値を算出する。サーバA群のサーバからサーバA群のサーバにデータを転送する場合、発信量は、「1.00」×「0.95」/「8」=「0.119」になる。サーバA群のサーバからサーバB群のサーバにデータを転送する場合、発信量は、「1.00」×「0.05」/「2」=「0.025」になる。サーバB群のサーバからサーバB群のサーバにデータを転送する場合、発信量は、「0.00」×「0.00」/「2」=「0.000」になる。サーバB群のサーバからサーバA群のサーバにデータを転送する場合、発信量は、「0.00」×「0.00」/「8」=「0.000」になる。
発信通信量算出部41は発信量情報テーブル100に算出結果を格納する(S11)。具体的には、発信通信量算出部41は発信元サーバ識別子101に発信元サーバ群内の変数「i」に対応するサーバ「From[i]」を、受信先サーバ識別子102に受信先サーバ群内の変数「j」に対応するサーバ「To[j]」を、および発信データ量103に「SendAmount」を格納する。発信通信量算出部41は変数「j」の値を1だけ増し(S12)、ステップ(S08)に移行する。発信通信量算出部41は以上の処理をサーバ群の全ての組み合わせについて実行し、発信量情報テーブル100を作成する。
[応答通信量]
次に、サーバ群の応答通信量について説明する。応答通信量はサーバが他サーバから受信したデータに対して応答する際に発信する応答情報のデータ量である。応答通信量は受信したデータに応じて変化するため、設計者は容易に定義することは困難である。応答通信量算出部42は他のサーバから受信するデータ量に等しいデータ量を他のサーバに発信する応答通信量として算出する。本実施例では受信したデータ量に等しい量を応答するが、対象のアプリケーションによって応答通信量は受信したデータ量に等しい量ではなく、例えば、一定の割合にするなどの設定変更をすることは可能である。
応答通信量算出部42は、各サーバが発信する応答通信量から応答量情報テーブル110を作成する。図11は応答量情報テーブル110である。応答量情報テーブル110はシステム10内の一つのサーバが他のサーバに応答として発信するデータ量を記憶するテーブルである。応答量情報テーブル110は発信元サーバ識別子111、受信先サーバ識別子112、および応答データ量113を有する。発信元サーバ識別子111は応答情報を発信する発信元のサーバを特定する識別子である。受信先サーバ識別子112は応答情報を受信する受信先のサーバを特定する識別子である。応答データ量113は発信元サーバ識別子111が受信先サーバ識別子112に送信するデータ量である。
[結線毎の通信量]
次に、各結線毎の通信量について説明する。平均通信量算出部43は通信量情報テーブル120を生成する。図12は通信量情報テーブル120である。通信量情報テーブル120は結線毎の通信データ量が格納される。通信量情報テーブル120は第一ノード識別子121、第一ポート番号122、第二ノード識別子123、第二ポート番号124、上り発信量125、下り発信量126、上り応答量127、および下り応答量128を有する。第一ノード識別子121は結線で結ばれるノードの組の一方のサーバ識別子あるいはスイッチ識別子である。第一ポート番号122は結線に接続する第一ノード識別子のポートの番号である。第二ノード識別子123は結線で結ばれるノードの組の他方のサーバ識別子あるいはスイッチ識別子である。第二ポート番号124は結線に接続する第二ノード識別子123のポートの番号である。通信量情報テーブル120の第一ノード識別子121、第一ポート番号122、第二ノード識別子123、および第二ポート番号124は結線情報80のサーバ/スイッチ識別子81、ポート番号82、サーバ/スイッチ識別子83、およびポート番号84に対応する。
上り発信量125はサーバが発信するデータでかつノード間で上り方向に転送されるデータ量である。下り発信量126はサーバが発信するデータでかつノード間で下り方向に転送されるデータ量である。上り応答量127はサーバが応答するデータでかつノード間で上り方向に転送されるデータ量である。下り応答量128はサーバが応答するデータでかつノード間で下り方向に転送されるデータ量である。通信量情報テーブル120の発信量および応答量の上り方向および下り方向は、所定の基準により定める。例えば特定のノード群を定め、そのノード群に近づく方向に流れるときを上り方向、ノード群から離れる方向に流れるときを下り方向と定義する。本実施例では、図8において下に配置されたノードから上に配置されたノードの方向に流れる方向を上り方向とし、上に配置されたノードから下に配置されたノードの方向に流れる方向を下り方向とする。例えば、スイッチ31からサーバ29に流れるデータは上り方向である。スイッチ33からサーバ21に流れるデータは下り方向である。上り発信量125および下り発信量126は発信量情報テーブル100から求める。上り応答量127および下り応答量128は応答量情報テーブル110から求める。
ここで、平均通信量算出部43が実行する処理を説明する。図13は平均通信量算出部43が実行する処理のフローチャートである。
平均通信量算出部43は結線情報80を読出し通信量情報テーブル120の第一ノード識別子121、第一ポート番号122、第二ノード識別子123、第二ポート番号124に展開する(S21)。平均通信量算出部43は発信量情報テーブル100の全てのレコードの処理が終了したか否かを判別する(S22)。発信量情報テーブル100の全てのレコードについて処理が終了している場合(S22:Yes)、平均通信量算出部43は処理を終了する。発信量情報テーブル100に全てのレコードについて処理が終了していない場合(S22:No)、平均通信量算出部43は発信量情報テーブル100の一つのレコードを読み出す(S23)。
平均通信量算出部43は変数情報、定数情報を初期化する(S24)。本処理で使用する変数情報、定数情報は「From」、「To」、「Current」および「Next」である。「From」は発信元サーバを特定する情報である。「To」は受信先サーバを特定する情報である。「Current」は現在の処理の対象のノードを特定する情報である。「Next」は「Current」の次にデータが移動する先のノードを特定する情報である。平均通信量算出部43は「From」および「To」を発信量情報テーブル100の発信元サーバ識別子101および受信先サーバ識別子102をそれぞれ対応付けることで初期化する。
平均通信量算出部43は「From」の発信元サーバ情報を「Current」に代入する(S25)。平均通信量算出部43は経路情報90から「To」にデータを転送するための「Current」のポートを特定する(S26)。平均通信量算出部43は結線情報からステップS26で特定した「Current」のポートに接続するノードを特定する(S27)。平均通信量算出部43は特定したノードを「Next」に代入する(S28)。平均通信量算出部43は「Current」と「Next」とを接続する結線に対応する通信量情報テーブル120のレコードに現在の処理の対象の発信量情報テーブル100のレコードの発信データ量103を加算する(S29)。なお、平均通信量算出部43は上り下りを判別して加算する。
平均通信量算出部43は「Next」と「To」とが同じノードを示すか否かを判別する(S30)。「Next」と「To」とが同じノードを示さない場合(S30:No)、平均通信量算出部43は「Next」のノードで「Current」を更新する(S31)。平均通信量算出部43はステップS26に移行する。一方、「Next」と「To」とが同じノードを示す場合(S30:Yes)、応答通信量算出部42は「From」と「To」とによって応答量情報テーブル110のレコードを特定し、発信データ量103を登録する(S32)。その後、ステップS22に移行する。
以上の処理によって平均通信量算出部43は通信量情報テーブル120を生成する。また、ステップS32によって平均通信量算出部43は応答量情報テーブル110の応答データ量113を登録する。なお、平均通信量算出部43は上り応答量127および下り応答量128について、上り発信量125および下り発信量126を求めた手順と同様にして生成する。応答量127および下り応答量128を求める場合、平均通信量算出部43は発信量情報テーブル100ではなく応答量情報テーブル110のレコードを読み出す。評価決定部47は算出した結果情報を、出力部5を介して出力する。
以下、システム10に対する通信量算出までの具体例を説明する。
図14はサーバ21がサーバ22に発信するデータ量を各結線毎に積算するときの説明図である。サーバ21とサーバ22とはスイッチ33を介して接続する。サーバ21がサーバ22に対して発信するデータ量は「0.119」である。従って、「0.119」の大きさのデータ量がサーバ21とスイッチ33の間の結線の上り方向に流れる。また、「0.119」の大きさのデータ量がスイッチ33とサーバ22の間の結線の下り方向に流れる。平均通信量算出部43は図14のスイッチ33のポート1とサーバ21のポート1とを結ぶ結線に「0.119/0.000」を設定する。「0.119/0.000」の左側「0.119」は結線の上り方向のデータ量を示し、右側「0.000」は結線の下り方向のデータ量を示す。以降同様とする。平均通信量算出部43は図14のスイッチ33のポート2とサーバ22のポート1とを結ぶ結線に「0.000/0.119」を設定する。
図15はサーバ21がサーバ23およびサーバ24に発信するデータ量を各結線毎に積算するときの説明図である。サーバ21とサーバ23とサーバ24とはスイッチ33を介して接続する。サーバ21がサーバ23あるいはサーバ24に対して発信するデータ量は「0.119」である。従って、サーバ21がサーバ23に発信するデータ量として「0.119」がサーバ21とスイッチ33の間の結線の上り方向に流れる。また、「0.119」の大きさのデータ量がスイッチ33とサーバ23の間の結線の下り方向に流れる。サーバ21がサーバ24に発信するデータ量として「0.119」がサーバ21とスイッチ33の間の結線の上り方向に流れる。また、「0.119」の大きさのデータ量がスイッチ33とサーバ24の間の結線の下り方向に流れる。平均通信量算出部43は図15のスイッチ33のポート1とサーバ21のポート1とを結ぶ結線の上り方向に「0.356/0.000」を設定する。「0.356」はサーバ21からサーバ22、23、および24にデータを発信する場合に、サーバ21とスイッチ33とを結ぶ結線に流れるデータ量の合計値である。平均通信量算出部43は図15のスイッチ33のポート3とサーバ23のポート1とを結ぶ結線に「0.000/0.119」を設定する。平均通信量算出部43は図15のスイッチ33のポート4とサーバ24のポート1とを結ぶ結線に「0.000/0.119」を設定する。
図16はサーバ21がサーバ25に発信するデータ量を各結線毎に積算するときの説明図である。サーバ21とサーバ25とはスイッチ33、スイッチ31、およびスイッチ34を介して接続するものとする。サーバ21がサーバ25に対して発信するデータ量は「0.119」である。従って、サーバ21がサーバ25に発信するデータ量である「0.119」は、サーバ21とスイッチ33の間の結線の上り方向、スイッチ33とスイッチ31の間の結線の上り方向、スイッチ31とスイッチ34の間の結線の下り方向、およびスイッチ33とサーバ25の間の結線の下り方向に流れる。平均通信量算出部43は図16のスイッチ33のポート1とサーバ21のポート1とを結ぶ結線の上り方向に「0.475/0.000」を設定する。「0.475」はサーバ21からサーバ22、23、24、および25にデータを発信する場合に、サーバ21とスイッチ33とを結ぶ結線に流れるデータ量の合計値である。平均通信量算出部43は図16のスイッチ33のポート5とスイッチ31のポート1とを結ぶ結線に「0.119/0.000」を設定する。平均通信量算出部43は図16のスイッチ33のポート5とスイッチ31のポート1とを結ぶ結線に「0.000/0.119」を設定する。平均通信量算出部43は図16のスイッチ34のポート1とサーバ25のポート1とを結ぶ結線に「0.000/0.119」を設定する。
図17はサーバ21がサーバ26に発信するデータ量を各結線毎に積算するときの説明図である。サーバ21とサーバ26とはスイッチ33、スイッチ31、およびスイッチ34を介して接続するものとする。サーバ21がサーバ26に対して発信するデータ量は「0.119」である。従って、サーバ21がサーバ26に発信するデータ量である「0.119」は、サーバ21とスイッチ33の間の結線の上り方向、スイッチ33とスイッチ31の間の結線の上り方向、スイッチ31とスイッチ34の間の結線の下り方向、およびスイッチ33とサーバ26の間の結線の下り方向に流れる。平均通信量算出部43は図17のスイッチ33のポート1とサーバ21のポート1とを結ぶ結線の上り方向に「0.594/0.000」を設定する。「0.594」はサーバ21からサーバ22、23、24、25、および26にデータを発信する場合に、サーバ21とスイッチ33とを結ぶ結線に流れるデータ量の合計値である。平均通信量算出部43は図17のスイッチ33のポート5とスイッチ31のポート1とを結ぶ結線に「0.238/0.000」を設定する。平均通信量算出部43は図17のスイッチ33のポート5とスイッチ34のポート1とを結ぶ結線に「0.000/0.238」を設定する。平均通信量算出部43は図17のスイッチ34のポート1とサーバ26のポート1とを結ぶ結線に「0.000/0.119」を設定する。
平均通信量算出部43は同様にサーバ21からサーバ27およびサーバ28に発信するデータ量を各結線毎に積算する。サーバ21とサーバ27およびサーバ28とはスイッチ33、スイッチ32、およびスイッチ34を介して接続するものとする。
次に平均通信量算出部43はサーバ21からサーバ29およびサーバ30に発信するデータ量を各結線毎に積算する。サーバ21とサーバ29とはスイッチ33およびスイッチ31を介して接続するものとする。サーバ21とサーバ30とはスイッチ33およびスイッチ32を介して接続するものとする。サーバ21がサーバ29あるいはサーバ30に対して発信するデータ量は「0.025」である。図18はサーバ21とサーバ29およびサーバ30に発信するデータ量を各結線毎に積算するときの説明図である。平均通信量算出部43は図18のスイッチ33のポート1とサーバ21のポート1とを結ぶ結線の上り方向に「0.881/0.000」を設定する。「0.881」はサーバ21からサーバ22乃至サーバ30にデータを発信する場合に、サーバ21とスイッチ33とを結ぶ結線に流れるデータ量の合計値である。平均通信量算出部43は図18のスイッチ33のポート5とスイッチ31のポート1とを結ぶ結線に「0.263/0.000」を設定する。平均通信量算出部43は図18のスイッチ31のポート3とサーバ29のポート1とを結ぶ結線に「0.025/0.000」を設定する。平均通信量算出部43は図21のスイッチ33のポート5とスイッチ32のポート1とを結ぶ結線に「0.263/0.000」を設定する。平均通信量算出部43は図18のスイッチ32のポート4とサーバ30のポート1とを結ぶ結線に「0.025/0.000」を設定する。
以上から平均通信量算出部43はサーバ21が発信するデータの結線毎の通信量を算出する。平均通信量算出部43他のサーバが発信するデータについても同様に各結線毎の通信量を算出する。図19は各サーバが発信したデータを経路毎に積算した状態を示す図である。平均通信量算出部43はシステム10内の各サーバが応答するデータについても同様に各結線毎の通信量を算出する。平均通信量算出部43は、システム10内の各サーバが発信および応答のために発信するデータの通信量を各結線毎に積算する。図20は各結線のデータ通信量の積算結果を算出した状態の説明図である。平均通信量算出部43は発信と応答のデータの平均値を算出する。図21は各結線のデータ通信量の平均値を算出した状態を示す。平均通信量算出部43は算出結果を出力する。
設計者は出力された算出結果からシステム10の評価を行う。情報処理装置1はシステム10の定義情報を取得することによって、システム10のネットワークで通信されるデータ量の偏りなどの状態を評価可能な結果を出力することができる。設計者はシステム10のネットワークの各結線の通信量を把握することができる。例えば、図21の結果からスイッチ31およびスイッチ32とスイッチ33およびスイッチ34の間の通信量は「1.95」である。設計者は、例えば、スイッチあるいはサーバの性能と通信されるデータ量とを比較することで、結線を追加するか否かを判断することができる。設計者は「1.95」が大きいと考えれば、スイッチ31およびスイッチ32とスイッチ33およびスイッチ34の間の結線を増加させるなどの対応が可能である。また、とサーバ29およびサーバ30はスイッチ31およびスイッチ32に結線されているが、スイッチ31あるいはスイッチ32のいずれかに結線されていれば処理性能に問題が無いことが判断できる。
[ホップ数]
次に、システムの平均ホップ数の算出について説明する。本実施例のホップ数は発信元サーバから受信先サーバまでに通過するスイッチの数である。
図22はホップ数情報テーブル130である。ホップ数情報テーブルはデータが発信元サーバから受信先サーバに通信されるときの発信時および応答時の重み付ホップ数を示す。重み付ホップ数はホップ数に通信データ量を重み情報として関連付けた値である。重み付ホップ数はサーバ間のホップ数とサーバ間で通信されるデータ量とから算出される。例えば、サーバ21とサーバ22とから求まるホップ数は「1」であり、サーバ21とサーバ30とから定まるホップ数は「2」である。また、サーバ21とサーバ22との間で通信されるデータ量は「0.119」であり、サーバ21とサーバ30との間で通信されるデータ量は「0.025」である。従い、サーバ21とサーバ22の間の重み付ホップ数の大きさは「0.119」×「1」=「0.119」であり、サーバ21とサーバ30の間の重み付ホップ数の大きさ「0.025」×「2」=「0.05」である。
ホップ数情報テーブル130は発信元サーバ識別子131、受信先サーバ識別子132、発信ホップ数133、および応答ホップ数134を有する。発信元サーバ識別子131は発信元のサーバを識別する識別子情報である。受信先サーバ識別子132は受信先のサーバを識別する識別子情報である。発信ホップ数133は発信時の重み付ホップ数である。応答ホップ数134は応答時の重み付ホップ数である。
ここで、発信ホップ数算出部44が実行する処理を説明する。図23は発信ホップ数算出部44がシステム10内の各サーバがデータを発信したときの重み付ホップ数を算出し、ホップ数情報テーブル130に格納する処理のフローチャートである。図24は応答ホップ数算出部45がシステム10内の各サーバがデータを発信したときの重み付ホップ数を算出し、ホップ数情報テーブル130に格納する処理のフローチャートである。
発信ホップ数算出部44は発信量情報テーブル100の全てのレコードについて処理を終了したか否かを判別する(S41)。発信量情報テーブル100の全てのレコードについて処理が終了している場合(S41:Yes)、発信ホップ数算出部44は処理を終了する。一方、発信量情報テーブル100の全てのレコードについて処理が終了していない場合(S41:No)、発信ホップ数算出部44は発信量情報テーブル100の一つのレコードを読み出す(S42)。
発信ホップ数算出部44は変数情報、定数情報を初期化する(S43)。本処理で使用する情報は「From」、「To」、「Current」、「Next」、「hop」、および「whop」である。「From」は発信元サーバを特定する情報である。「To」は受信先サーバを特定する情報である。「Current」は現在の処理の対象のノードを特定する情報である。「Next」は「Current」の次にデータが移動する先のノードを特定する情報である。「hop」は「From」から「Current」までのホップ数である。「whop」は「From」から「To」までの重み付ホップ数である。発信ホップ数算出部44は発信量情報テーブル100の発信元サーバ識別子101に基づき「From」を設定し、受信先サーバ識別子102に基づき「To」を設定する。発信ホップ数算出部44は「hop」を「0」に初期化する。
発信ホップ数算出部44は「From」の発信元サーバ識別子131を「Current」に設定する(S44)。発信ホップ数算出部44は経路情報90から、「To」にデータを送信するための「Current」のポートを特定する(S45)。発信ホップ数算出部44は結線情報80からステップS45で特定した「Current」のポートに接続するノードを特定する(S46)。発信ホップ数算出部44は特定したノードを「Next」に設定する(S47)。発信ホップ数算出部44は「hop」に「1」を加える(S48)。
発信ホップ数算出部44は「Next」と「To」とが同一のノードか否かを判定する(S49)。「Next」と「To」とが同じノードではない場合(S49:No)、発信ホップ数算出部44は「Next」のノードで「Current」を更新する(S50)。更新後、発信ホップ数算出部44はステップS45に移行する。一方、「Next」と「To」とが同じノードである場合(S49:Yes)、発信ホップ数算出部44は発信元サーバから受信先サーバに送信するデータ量にホップ数を乗算することにより重み付ホップ数を算出する(S51)。具体的には、発信ホップ数算出部44は「whop」=「hop」*「発信データ量103」によって算出する。サーバ21がデータを発信する場合、サーバ22、23、24、25、26、27、28、29、および30が受信先サーバになる。サーバ21からサーバ22、23、あるいは24にデータを送信する場合、送信データ量は「0.119」でありホップ数は「1」である。よって重み付の発信ホップ数は、「0.119」×「1」=「0,119」になる。サーバ21からサーバ25、26、27、あるいは28にデータを送信する場合、送信データ量は「0.119」でありホップ数は「3」である。よって重み付の発信ホップ数は、「0.119」×「3」=「0,356」になる。サーバ21からサーバ29あるいは30にデータを送信する場合、送信データ量は「0.025」でありホップ数は「5」である。よって重み付の発信ホップ数は、「0.025」×「2」=「0,050」になる。
発信ホップ数算出部44は「From」を発信元サーバ識別子131に格納し、「To」を受信先サーバ識別子132に格納し、「whop」を発信ホップ数133に格納する(S52)。その後、発信ホップ数算出部44はステップS41に移行する。以上の処理によって、発信ホップ数算出部44はホップ数情報テーブル130の発信に対する発信ホップ数133を生成する。
次に、応答ホップ数算出部45はホップ数情報テーブル130の応答ホップ数134を格納する処理を説明する。応答ホップ数算出部45は応答量情報テーブル110の一つのレコードを読み出す(S61)。応答ホップ数算出部45は応答量情報テーブル110の全てのレコードについて処理を終了したか否かを判別する(S62)。応答量情報テーブル110の全てのレコードについて処理が終了している場合(S62:Yes)、応答ホップ数算出部45は処理を終了する。一方、応答量情報テーブル110の全てのレコードについて処理が終了していない場合(S62:No)、応答ホップ数算出部45は変数情報、定数情報を初期化する(S63)。本処理で使用する情報は「From」、「To」、「Current」、「Next」、「hop」、および「whop」である。「From」は発信元サーバを特定する情報である。「To」は受信先サーバを特定する情報である。「Current」は現在の処理の対象のノードを特定する情報である。「Next」は「Current」の次にデータが移動する先のノードを特定する情報である。「hop」は「From」から「Current」までのホップ数である。「whop」は「From」から「To」までの重み付ホップ数である。応答ホップ数算出部45は応答量情報テーブル110の発信元サーバ識別子111に基づき「From」を設定し、受信先サーバ識別子112に基づき「To」を設定する。応答ホップ数算出部45は「hop」を「0」に初期化する。
応答ホップ数算出部45は「From」の発信元サーバ識別子111を「Current」に設定する(S64)。応答ホップ数算出部45は経路情報90から、「To」にデータを送信するための「Current」のポートを特定する(S65)。応答ホップ数算出部45は結線情報80からステップS65で特定した「Current」のポートに接続するノードを特定する(S66)。応答ホップ数算出部45は特定したノードを「Next」に設定する(S67)。応答ホップ数算出部45は「hop」に「1」を加える(S68)。
応答ホップ数算出部45は「Next」と「To」とが同一のノードか否かを判定する(S69)。「Next」と「To」とが同じノードではない場合(S69:No)、応答ホップ数算出部45は「Next」のノードで「Current」を更新する(S70)。更新後、応答ホップ数算出部45はステップS65に移行する。一方、「Next」と「To」とが同じノードである場合(S69:Yes)、応答ホップ数算出部45は発信元サーバから受信先サーバに送信するデータ量にホップ数を乗算することにより応答ホップ数を算出する(S71)。具体的には、応答ホップ数算出部45は「whop」=「hop」*「応答データ量113」によって算出する。
応答ホップ数算出部45は「From」を発信元サーバ識別子131に格納し、「To」を受信先サーバ識別子132に格納し、「whop」を発信ホップ数133に格納する(S72)。その後、応答ホップ数算出部45はステップS41に移行する。以上の処理によって、発信ホップ数算出部44はホップ数情報テーブル130の発信に対する応答ホップ数134を生成する。
平均ホップ数算出部46は平均ホップ数を算出する。具体的には、平均ホップ数算出部46はホップ数情報テーブル130の発信ホップ数133と応答ホップ数134との合計値を求め、求めた合計値を発信量と応答量とを合計した総通信量で割ることにより、平均ホップ数を算出する。評価決定部47は算出した結果情報を、出力部5を介して出力する。以下に平均ホップ数の算出の具体例を説明する。
サーバ21はサーバ22、サーバ23、およびサーバ24の3台のサーバにスイッチ33を介して接続する。サーバ21はサーバ25、サーバ26、サーバ27、およびサーバ28の4台のサーバにスイッチ33、スイッチ31、およびスイッチ34を介して接続する。サーバ21はサーバ29およびサーバ30の2台のサーバにスイッチ33およびスイッチ31を介して接続する。サーバ21が発信するデータの重み付ホップ数の合計は、「0.119」×「3」台+「0.356」×「4」台+「0.050」×「2」台=1.83になる。本実施例ではサーバ21からサーバ28までは同様のネットワーク構成である。よってサーバ21からサーバ28までの重み付の発信ホップ数の合計は「1.83」×「8」=「14.64」になる。サーバ29が発信するデータの重み付の発信ホップ数の合計は「0」である。本実施例ではサーバ29とサーバ30は同様のネットワーク構成である。よってサーバ29とサーバ30の重み付の発信ホップ数の合計は「0」である。以上より、システム10の重み付の発信ホップ数の合計は「14.64」になる。
同様に、平均ホップ数算出部46は各サーバの重み付の応答ホップ数の合計を算出する。サーバ21が応答するデータの重み付ホップ数の合計は、「0.119」×「3」台+「0.356」×「4」台=1.78になる。本実施例ではサーバ21からサーバ28までは同様のネットワーク構成である。よってサーバ21からサーバ28までの重み付ホップ数応答の合計は「1.78」×「8」=「14.34」になる。サーバ29が応答するデータの重み付の応答ホップ数の合計は「0.4」である。本実施例ではサーバ29とサーバ30は同様のネットワーク構成である。よってサーバ29とサーバ30の重み付の応答ホップ数の合計は「0.8」である。以上より、システム10の重み付の応答ホップ数の合計は「14.34」+「0.8」=「15.04」になる。平均ホップ数は(14.64+15.04)/(1.00×8×2)=1.855になる。
設計者は出力された算出結果からシステム10の評価を行う。情報処理装置1はシステム10の定義情報を取得することによって、システム10のネットワークで通信されるデータ量の偏りなどの状態を評価可能な結果を出力することができる。設計者はシステム10のネットワークの重み付のホップ数を把握することができる。設計者は重み付ホップ数の算出結果からシステム10の構成を改良することができる。図25はシステム10の構成を改良したネットワーク構成例である。サーバ27およびサーバ28の配置とサーバ29およびサーバ30の配置とを変更した。この構成によってサーバ21乃至サーバ24とサーバ27およびサーバ28のホップ数が「3」から「2」に減少するため、システム全体の重み付ホップ数は減少する。
以上に説明した情報処理装置1は不均等な通信量のサーバ群を含むシステムに対するシミュレーションができる。入出力サーバと計算サーバとを共通したネットワークで結線することによって、ネットワークの設計のコストの削減が可能になる。さらに情報処理装置1応答通信量を含めたシミュレーションができる。