(57)【特許請求の範囲】
【請求項１】
ｎ階層（ｎは３以上の整数）の階層的リソースのサイジングを支援するサイジング支援システムであって、
記憶装置と、
テーブル定義モジュールと、
フィールド算出モジュールと、
処理階層更新モジュールと
を備え、
前記記憶装置は、
前記ｎ階層の各々のリソースが有し得る下位リソースの種類及び最大数を示す下位リソースデータと、
前記ｎ階層の各々のリソースに関するパラメータを示すリソースデータと
を格納し、
処理階層は、
第１リソースから構成される第Ｋ階層（Ｋ＝１〜ｎ−２）と、
第２リソースから構成される第Ｋ＋１階層と、
第３リソースから構成される第Ｋ＋２階層と
を含み、
前記リソースデータは、
前記各々の階層のリソースに関するスケーラビリティを示すスケーラビリティデータと、
前記第３リソースの単位性能を示す単位性能データと、
前記各々の階層のリソースのコストを示すコストデータと
を含み、
前記フィールド算出モジュールは、
スケール評価モジュールと、
性能評価モジュールと、
コスト評価モジュールと
を備え、
前記処理階層に対する単位処理において、
前記テーブル定義モジュールは、前記下位リソースデータを参照することによって、前記第１リソースがとり得るパターンを示すテーブルフレームを作成し、
前記第１リソースがとり得るパターンは、前記第１リソースが有し得る前記第２リソースの種類及び数と、前記第２リソースが有し得る前記第３リソースの種類及び数との組み合わせにより規定され、
前記スケール評価モジュールは、前記スケーラビリティデータを参照することによって、前記テーブルフレームが示すパターンに対する性能倍率を算出し、前記パターンのそれぞれに対して算出された前記性能倍率を示すスケールテーブルを生成し、
ここで、前記性能倍率は、下位リソースの数が１の場合と比較して前記パターンの性能が何倍になるかを示し、
前記性能評価モジュールは、前記スケールテーブルが示す前記性能倍率と前記単位性能データが示す前記単位性能の乗算を行うことによって、前記パターンのそれぞれの性能を示す性能テーブルを生成し、
前記コスト評価モジュールは、前記コストデータを参照することによって、前記テーブルフレームが示すパターンのコストを算出し、前記パターンのそれぞれに対して算出された前記コストを示すコストテーブルを生成し、
前記処理階層更新モジュールは、前記Ｋをｎ−２に初期設定し、
前記単位処理が終了する度に、前記処理階層更新モジュールは、前記Ｋの値を１減らし、また、前記性能テーブル及び前記コストテーブルを参照することにより、次の前記単位処理で用いられる前記第３リソースに関する前記単位性能データ及び前記コストデータを抽出し、
前記テーブル定義モジュール及び前記フィールド算出モジュールは、各Ｋに対応する前記処理階層に対して前記単位処理を繰り返し実行する
サイジング支援システム。
【請求項２】
ｎ階層（ｎは３以上の整数）の階層的リソースのサイジングを支援するサイジング支援システムであって、
記憶装置と、
テーブル定義モジュールと、
フィールド算出モジュールと、
処理階層更新モジュールと
を備え、
前記記憶装置は、
前記ｎ階層の各々のリソースが有し得る下位リソースの種類及び最大数を示す下位リソースデータと、
前記ｎ階層の各々のリソースに関するパラメータを示すリソースデータと
を格納し、
処理階層は、
第１リソースから構成される第Ｋ階層（Ｋ＝１〜ｎ−２）と、
第２リソースから構成される第Ｋ＋１階層と、
第３リソースから構成される第Ｋ＋２階層と
を含み、
前記リソースデータは、
前記各々の階層のリソースに関するスケーラビリティを示すスケーラビリティデータと、
前記第３リソースの単位性能を示す単位性能データと
を含み、
前記フィールド算出モジュールは、
スケール評価モジュールと、
性能評価モジュールと
を備え、
前記処理階層に対する単位処理において、
前記テーブル定義モジュールは、前記下位リソースデータを参照することによって、前記第１リソースがとり得るパターンを示すテーブルフレームを作成し、
前記第１リソースがとり得るパターンは、前記第１リソースが有し得る前記第２リソースの種類及び数と、前記第２リソースが有し得る前記第３リソースの種類及び数との組み合わせにより規定され、
前記スケール評価モジュールは、前記スケーラビリティデータを参照することによって、前記テーブルフレームが示すパターンに対する性能倍率を算出し、前記パターンのそれぞれに対して算出された前記性能倍率を示すスケールテーブルを生成し、
ここで、前記性能倍率は、下位リソースの数が１の場合と比較して前記パターンの性能が何倍になるかを示し、
前記性能評価モジュールは、前記スケールテーブルが示す前記性能倍率と前記単位性能データが示す前記単位性能の乗算を行うことによって、前記パターンのそれぞれの性能を示す性能テーブルを生成し、
前記記憶装置には、前記パターンのそれぞれのコストを示すコストテーブルが格納されており、
前記処理階層更新モジュールは、前記Ｋをｎ−２に初期設定し、
前記単位処理が終了する度に、前記処理階層更新モジュールは、前記Ｋの値を１減らし、また、前記性能テーブルを参照することにより、次の前記単位処理で用いられる前記第３リソースに関する前記単位性能データを抽出し、
前記テーブル定義モジュール及び前記フィールド算出モジュールは、各Ｋに対応する前記処理階層に対して前記単位処理を繰り返し実行する
サイジング支援システム。
【請求項３】
請求項１又は２に記載のサイジング支援システムであって、
前記第２リソースの数がｉで表され、
前記第２リソースに関する前記スケーラビリティデータが配列ｓＫ＋１［ｉ］で表され、
前記第３リソースの数がｊで表され、
前記第３リソースに関する前記スケーラビリティデータが配列ｓＫ＋２［ｊ］で表され、
前記スケール評価モジュールは、前記パターンに対する前記性能倍率Ｓｉｊを、次式：
Ｓｉｊ＝ｓＫ＋１［ｉ］×ｉ×ｓＫ＋２［ｊ］×ｊ
に基づいて算出する
サイジング支援システム。
【請求項４】
請求項１乃至３のいずれか一項に記載のサイジング支援システムであって、
更に、表示装置を備え、
前記Ｋが１である場合の前記単位処理が終了した場合、
前記表示装置は、前記スケールテーブル、前記性能テーブル、及び前記コストテーブルのうち少なくとも１つを表示する
サイジング支援システム。
【請求項５】
請求項１乃至３のいずれか一項に記載のサイジング支援システムであって、
更に、
ユーザービュー作成モジュールと、
表示装置と
を備え、
前記Ｋが１である場合の前記単位処理が終了した場合、
前記ユーザービュー作成モジュールは、前記スケールテーブル、前記性能テーブル、及び前記コストテーブルのうち少なくとも２つを互いに関連付け、前記関連を示すユーザービューデータを作成し、
前記表示装置は、前記ユーザービューデータの表示を行う
サイジング支援システム。
【請求項６】
請求項５に記載のサイジング支援システムであって、
前記ユーザービューデータは、前記性能テーブルが示す前記性能と前記コストテーブルが示す前記コストとの関連を示し、
前記表示装置は、前記パターンのそれぞれに関する性能とコストとの関係を表示する
サイジング支援システム。
【請求項７】
ｎ階層（ｎは３以上の整数）の階層的リソースのサイジングを支援するサイジング支援方法であって、
（Ａ）コンピュータが、前記ｎ階層の各々のリソースが有し得る下位リソースの種類及び最大数を示す下位リソースデータを記憶装置に格納するステップと、
（Ｂ）前記コンピュータが、前記ｎ階層の各々のリソースに関するパラメータを示すリソースデータを前記記憶装置に格納するステップと、
（Ｃ）前記コンピュータが、処理階層を設定するステップと、
ここで、前記処理階層は、
第１リソースから構成される第Ｋ階層（Ｋ＝１〜ｎ−２）と、
第２リソースから構成される第Ｋ＋１階層と、
第３リソースから構成される第Ｋ＋２階層と
を含み、
（Ｄ）前記コンピュータが、前記処理階層に対して単位処理を実行するステップと、
ここで、前記リソースデータは、
前記各々の階層のリソースに関するスケーラビリティを示すスケーラビリティデータと、
前記第３リソースの単位性能を示す単位性能データと、
前記各々の階層のリソースのコストを示すコストデータと
を含み、
前記単位処理は、
前記記憶装置に格納された前記下位リソースデータを参照することによって、前記第１リソースがとり得るパターンを示すテーブルフレームを作成するステップと、
ここで、前記第１リソースがとり得るパターンは、前記第１リソースが有し得る前記第２リソースの種類及び数と、前記第２リソースが有し得る前記第３リソースの種類及び数との組み合わせにより規定され、
前記スケーラビリティデータを参照することによって、前記テーブルフレームが示すパターンに対する性能倍率を算出し、前記パターンのそれぞれに対して算出された前記性能倍率を示すスケールテーブルを生成するステップと、
ここで、前記性能倍率は、下位リソースの数が１の場合と比較して前記パターンの性能が何倍になるかを示し、
前記スケールテーブルが示す前記性能倍率と前記単位性能データが示す前記単位性能の乗算を行うことによって、前記パターンのそれぞれの性能を示す性能テーブルを生成するステップと、
前記コストデータを参照することによって、前記テーブルフレームが示すパターンのコストを算出し、前記パターンのそれぞれに対して算出された前記コストを示すコストテーブルを生成するステップと
を含み、
（Ｅ）前記コンピュータが、前記Ｋをｎ−２に初期設定するステップと、
（Ｆ）前記（Ｄ）ステップが終了する度に、前記コンピュータが、前記Ｋの値を１減らし、また、前記性能テーブル及び前記コストテーブルを参照することにより、次の前記単位処理で用いられる前記第３リソースに関する前記単位性能データ及び前記コストデータを抽出するステップと、
（Ｇ）前記コンピュータが、各Ｋに対応する前記処理階層に対して前記単位処理を繰り返し実行するステップと
を有する
サイジング支援方法。
【請求項８】
請求項７に記載のサイジング支援方法であって、
前記第２リソースの数がｉで表され、
前記第２リソースに関する前記スケーラビリティデータが配列ｓＫ＋１［ｉ］で表され、
前記第３リソースの数がｊで表され、
前記第３リソースに関する前記スケーラビリティデータが配列ｓＫ＋２［ｊ］で表され、
前記パターンに関する前記性能倍率Ｓｉｊは、次式：
Ｓｉｊ＝ｓＫ＋１［ｉ］×ｉ×ｓＫ＋２［ｊ］×ｊ
に基づいて算出される
サイジング支援方法。
【請求項９】
請求項７又は８に記載のサイジング支援方法であって、
更に、（Ｈ）前記Ｋが１である場合の前記単位処理が終了した場合、前記コンピュータが、前記スケールテーブル、前記性能テーブル、及び前記コストテーブルのうち少なくとも１つを表示装置に表示させるステップを有する
サイジング支援方法。
【請求項１０】
請求項７又は８に記載のサイジング支援方法であって、
更に、
（Ｉ）前記Ｋが１である場合の前記単位処理が終了した場合、前記コンピュータが、前記スケールテーブル、前記性能テーブル、及び前記コストテーブルのうち少なくとも２つを互いに関連付け、前記関連を示すユーザービューデータを作成するステップと、
（Ｊ）前記コンピュータが、前記ユーザービューデータを表示装置に表示させるステップと
を有する
サイジング支援方法。
【請求項１１】
請求項１０に記載のサイジング支援方法であって、
前記ユーザービューデータは、前記性能テーブルが示す前記性能と前記コストテーブルが示す前記コストとの関連を示し、
前記（Ｊ）ステップにおいて、前記パターンのそれぞれに関する性能とコストとの関係が前記表示装置に表示される
サイジング支援方法。
【請求項１２】
請求項７乃至１１のいずれか一項に記載のサイジング支援方法を前記コンピュータに実行させるための
サイジング支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、階層的リソースのサイジング技術に関する。特に、本発明は、３階層以上の階層的リソースに対するサイジングを支援するサイジング支援システム、方法、及びプログラムに関する。
【背景技術】
【０００２】
ＣＰＵ、メモリ、通信装置をそれぞれ１つ以上持つ、ＰＣやワークステーション等の情報処理装置（以下、ノードと参照される）の低価格化が進んでいる。その結果、複数のノードが集合化（クラスタ化）されて１つのシステムを構成する「クラスタ（cluster）」が増加している。クラスタにおいて、それら複数のノードは相互に接続され、互いに通信を行う。クラスタは、コストパフォーマンスが高いだけでなく、拡張性も高いという点で優れている。
【０００３】
その優れた拡張性は、クラスタが階層的な計算機リソースであることに起因する。「階層的リソース（hierarchical resource）」は、複数の階層にわたる計算機リソースにより構築され、上位階層のリソース（上位リソース）は、下位階層のリソース（下位リソース）の組み合わせにより構成される。あるリソースを構成する下位リソースの数を増加させる、あるいは、その性能を向上させることによって、そのリソースの性能を向上させることができる。例えば、クラスタを構成するノードの数を増加させる、あるいは、ノードの性能を向上させることで、クラスタの性能は向上する。従って、クラスタは階層的リソースである。また、クラスタを構成するノードも階層的リソースである。なぜなら、ノードを構成するＣＰＵの数を増加させる、あるいは、ＣＰＵの性能を向上させることで、ノードの性能が向上するからである。
【０００４】
また、階層的リソースが均一な構成を有している場合、その階層的リソースは「均一な階層的リソース」と呼ばれる。例えば、同じ種類のノードだけから構成されるクラスタは、均一な階層的リソースである。その同種のノードのそれぞれは、同種・同数のＣＰＵから構成されている。実際に使用されているクラスタは、多くの場合において均一な階層的リソースである。
【０００５】
階層的リソースを構築する、または拡張を行う前に、適切なリソース構成を検討することは重要である。つまり、システムに要求される処理性能を達成するためにはどのようなリソースを採用すればよいか検討し、階層的リソースの構成を決定することは重要である。そのようなプロセスは、「サイジング」と呼ばれている。十分な処理性能を提供できないシステムでは、顧客に十分なサービスを提供できないため、サイジングを精度良く行うことは非常に重要である。
【０００６】
一般的には、サイジングは、熟練した技能者の勘や経験に基づいて経験的に行われる。それにより構成された階層的リソースの処理性能が見積もられ、システムに要求される処理性能と比較される。要求に適合しない場合、再度サイジングが行われる。システム構築または拡張前に、階層的リソースのサイジングを、経験に拠らず定量的に行うことができる技術が望まれている。特に、多くのクラスタは均一な階層的リソースであり、均一な階層的リソースのサイジングを定量的に行うことができる技術が望まれている。
【０００７】
尚、システム構築後の計算機リソースの制御や性能評価に関連する従来技術として、次のものが知られている。
【０００８】
特許文献１には、仮想独立型アウトソーシングシステムが記載されている。その仮想独立型アウトソーシングシステムによれば、計算機リソースは複数のパーティションに分割され、それぞれのパーティションが顧客に利用される。また、パーティション毎の性能情報に応じて、パーティションの構成は動的に変更される。
【０００９】
特許文献２には、パーティションサーバにおいてコンピューティングリソースを自動的に割り振る方法が記載されている。その方法によれば、パーティションに対して優先度が設定される。その優先度に基づいて、リソース（ＣＰＵ）の競合が解決され、また、パーティションに割り当てられるリソース量が決定される。
【００１０】
特許文献３には、コンピュータシステムの性能バランス評価装置が記載されている。性能評価指標取得手段は、評価対象コンピュータシステムを構成する各装置に対して個別にテストアプリケーションを送受信する。そして、性能評価指標取得手段は、そのテストアプリケーションの数を変化させて、各装置のトランザクション密度と性能評価指標を取得する。利用率取得手段は、評価対象コンピュータシステムにテストアプリケーションを送信し、各装置に通常のサービスオペレーションのように処理させて各装置の利用率を取得する。許容量算出手段は、各装置の性能評価指標をそれぞれの利用率で除して、各装置の許容量を算出する。性能バランス評価手段は、装置のいずれかを基準装置と定めて、該基準装置の許容量に対する他の装置の許容量の比から性能バランスを算出する。
【００１１】
特許文献４には、階層的資源競合を持つシステムの性能評価方法が記載されている。その階層的資源において、ソフトウェア資源の層が上位層であり、ハードウェア資源の層が下位層である。まず、下位層のハードウェア構成が入力される。次に、上位層のソフトウェア資源を利用するトランザクションのトランザクションデータが入力される。次に、ソフトウェア資源を構成するプロセスのプロセスデータが入力される。次に、プロセスの制約条件が入力される。次に、どのような性能評価値をどのような形式で表示するかが設定される。次に、与えられた上記データが性能評価値を算出するのに十分かどうかがチェックされる。十分な時は、上位層のプロセスの制約条件のもとで求めるべき性能評価値が算出される。最後に、表示手段が、これらの性能評価値をユーザーに示す。
【００１２】
【特許文献１】特開２００３−２２３３３５号公報
【特許文献２】特開２００４−２８８１８３号公報
【特許文献３】特開２００４−３０２５２５号公報
【特許文献４】特開２０００−２９７５３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
本発明の目的は、システム構築または拡張前に階層的リソースの定量的なサイジングを支援する技術を提供することにある。
【課題を解決するための手段】
【００１４】
以下に、［発明を実施するための最良の形態］で使用される番号・符号を用いて、［課題を解決するための手段］を説明する。これらの番号・符号は、［特許請求の範囲］の記載と［発明を実施するための最良の形態］との対応関係を明らかにするために括弧付きで付加されたものである。ただし、それらの番号・符号を、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１５】
本発明の第１の観点において、ｎ階層（ｎは３以上の整数）の階層的リソースのサイジングを支援するサイジング支援システム（１）が提供される。そのサイジング支援システム（１）は、記憶装置（２）と、テーブル定義モジュール（１１０）と、フィールド算出モジュール（１５０）とを備える。記憶装置（２）は、ｎ階層の各々のリソースが有し得る下位リソースの種類及び最大数を示す下位リソースデータ（１０）と、ｎ階層の各々のリソースに関するパラメータを示すリソースデータとを格納する。単位処理においては、第１リソースから構成される第Ｋ階層（Ｋ＝１〜ｎ−２）と、第２リソースから構成される第Ｋ＋１階層と、第３リソースから構成される第Ｋ＋２階層とを含む処理階層に対して処理が実行される。その単位処理において、テーブル定義モジュール（１１０）は、下位リソースデータ（１０）を参照することによって、第１リソースがとり得る複数のパターンを示すテーブルフレーム（Ｔ１０）を作成する。また、フィールド算出モジュール（１５０）は、テーブルフレーム（Ｔ１０）及びリソースデータを参照することによって、テーブルフレーム（Ｔ１０）が示すパターンの特性を算出する。
【００１６】
上記リソースデータは、各々の階層のリソースに関するスケーラビリティを示すスケーラビリティデータ（２０）を含んでいる。フィールド算出モジュール（１５０）は、そのスケーラビリティデータ（２０）を参照することによって、テーブルフレーム（Ｔ１０）が示すパターンの性能を算出する。
【００１７】
フィールド算出モジュール（１５０）は、スケール評価モジュール（１２０）を含んでいる。そのスケール評価モジュール（１２０）は、スケーラビリティデータ（２０）を参照することによって、テーブルフレーム（Ｔ１０）が示すパターンに対する性能倍率を算出し、それらパターンのそれぞれに対して算出された性能倍率を示すスケールテーブル（Ｔ２０）を生成する。ここで、性能倍率は、下位リソースの数が１の場合と比較してパターンの性能が何倍になるかを示す。より詳細には、スケール評価モジュール（１２０）は、各パターンに対する性能倍率Ｓｉｊを、次式：Ｓｉｊ＝ｓＫ＋１［ｉ］×ｉ×ｓＫ＋２［ｊ］×ｊに基づいて算出する。ここで、ｉは第２リソースの数を表し、ｊは第３リソースの数を表す。配列ｓＫ＋１［ｉ］は、第２リソースに関するスケーラビリティデータ（２０）を表し、配列ｓＫ＋２［ｊ］は、第３リソースに関するスケーラビリティデータ（２０）を表す。
【００１８】
フィールド算出モジュール（１５０）は、更に、性能評価モジュール（１３０）を含んでいる。リソースデータは、第３リソース（ＲＫ＋２）の単位性能を示す単位性能データ（３０）を含んでいる。性能評価モジュール（１３０）は、スケールテーブル（Ｔ２０）が示す性能倍率と単位性能データ（３０）が示す単位性能の乗算を行うことによって、上記パターンのそれぞれの性能を示す性能テーブル（Ｔ３０）を生成する。
【００１９】
フィールド算出モジュール（１５０）は、更に、コスト評価モジュール（１４０）を含んでもよい。リソースデータは、各々の階層のリソースのコストを示すコストデータ（４０）を含んでもよい。コスト評価モジュール（１４０）は、コストデータ（４０）を参照することによって、テーブルフレーム（Ｔ１０）が示すパターンのコストを算出し、それらパターンのそれぞれに対して算出されたコストを示すコストテーブル（Ｔ４０）を生成する。コストテーブル（Ｔ４０）は、外部から与えられて、記憶装置（２）に格納されてもよい。
【００２０】
サイジング支援システム（１）は、更に、処理階層更新モジュール（１６０）を備える。処理階層更新モジュール（１６０）は、Ｋをｎ−２に初期設定する。そして、単位処理が終了する度に、処理階層更新モジュール（１６０）は、Ｋの値を１減らし、また、上述の性能テーブル（Ｔ３０）及びコストテーブル（Ｔ４０）を参照することにより、次の単位処理で用いられる第３リソース（ＲＫ＋２）に関する単位性能データ（３０）及びコストデータ（４０）を抽出する。テーブル定義モジュール（１１０）及びフィールド算出モジュール（１５０）は、各Ｋに対応する処理階層に対して単位処理を繰り返し実行する。
【００２１】
本発明に係るサイジング支援システム（１）は、更に、表示装置（５）を備える。Ｋが１である場合の単位処理が終了した場合、表示装置（５）は、生成されたスケールテーブル（Ｔ２０）、性能テーブル（Ｔ３０）、及びコストテーブル（Ｔ４０）のうち少なくとも１つを表示する。
【００２２】
本発明に係るサイジング支援システム（１）は、更に、ユーザービュー作成モジュール（１７０）を備える。Ｋが１である場合の単位処理が終了した場合、ユーザービュー作成モジュール（１７０）は、上述のスケールテーブル（Ｔ２０）、性能テーブル（Ｔ３０）、及びコストテーブル（Ｔ４０）のうち少なくとも２つを互いに関連付け、その関連を示すユーザービューデータ（７０）を作成する。表示装置（５）は、そのユーザービューデータ（７０）の表示を行う。例えば、ユーザービューデータ（７０）は、性能テーブル（Ｔ３０）が示す性能とコストテーブル（Ｔ４０）が示すコストとの関連を示す。この場合、表示装置（５）は、上記パターンのそれぞれに関する性能とコストとの関係を表示する。このように、階層的リソースの性能とコストとの関係を、ユーザーにわかりやすく提示することが可能となる。ユーザーは、提示された情報を検討することによって、適切な階層的リソースの構成を容易に決定することができる。
【００２３】
本発明の第２の観点において、階層的リソースのサイジングを支援するサイジング支援システム（１）が提供される。そのサイジング支援システム（１）は、階層的リソースがとり得る複数のパターンのそれぞれに対して性能とコストとの関係を示すユーザービューデータ（７０）が格納された記憶装置（２）と、ユーザービューデータ（７０）の表示を行う表示装置（５）とを備える。これにより、階層的リソースの性能とコストとの関係を、ユーザーにわかりやすく提示することが可能となる。ユーザーは、提示された情報を検討することによって、適切な階層的リソースの構成を容易に決定することができる。
【００２４】
本発明の第３の観点において、ｎ階層（ｎは３以上の整数）の階層的リソースのサイジングを支援するサイジング支援方法が提供される。そのサイジング支援方法は、（Ａ）ｎ階層の各々のリソースが有し得る下位リソースの種類及び最大数を示す下位リソースデータ（１０）を記憶装置（２）に格納するステップと、（Ｂ）ｎ階層の各々のリソースに関するパラメータを示すリソースデータを記憶装置（２）に格納するステップと、（Ｃ）処理階層を設定するステップと、ここで、処理階層は、第１リソースから構成される第Ｋ階層（Ｋ＝１〜ｎ−２）と、第２リソースから構成される第Ｋ＋１階層と、第３リソースから構成される第Ｋ＋２階層とを含み、（Ｄ）その処理階層に対して単位処理を実行するステップと、を有する。上記（Ｄ）ステップは、（ａ）記憶装置（２）に格納された下位リソースデータ（１０）を参照することによって、第１リソースがとり得る複数のパターンを示すテーブルフレーム（Ｔ１０）を作成するステップと、（ｂ）記憶装置（２）に格納されたリソースデータを参照することによって、テーブルフレーム（Ｔ１０）が示すパターンの特性を算出するステップとを含む。
【００２５】
上記リソースデータは、各々の階層のリソースに関するスケーラビリティを示すスケーラビリティデータ（２０）を含む。上記（ｂ）ステップは、そのスケーラビリティデータ（２０）を参照することによって、テーブルフレーム（Ｔ１０）が示すパターンの性能を算出するステップを含む。
【００２６】
上記（ｂ）ステップは、（ｂ１）スケーラビリティデータ（２０）を参照することによって、テーブルフレーム（Ｔ１０）が示すパターンに対する性能倍率を算出し、それらパターンのそれぞれに対して算出された性能倍率を示すスケールテーブル（Ｔ２０）を生成するステップを含む。性能倍率Ｓｉｊは、次式：Ｓｉｊ＝ｓＫ＋１［ｉ］×ｉ×ｓＫ＋２［ｊ］×ｊに基づいて算出される。ここで、ｉは第２リソースの数を表し、ｊは第３リソースの数を表す。配列ｓＫ＋１［ｉ］は、第２リソースに関するスケーラビリティデータ（２０）を表し、配列ｓＫ＋２［ｊ］は、第３リソースに関するスケーラビリティデータ（２０）を表す。
【００２７】
上記リソースデータは、第３リソースの単位性能を示す単位性能データ（３０）を含む。上記（ｂ）ステップは、（ｂ２）スケールテーブル（Ｔ２０）が示す性能倍率と単位性能データ（３０）が示す単位性能の乗算を行うことによって、上記パターンのそれぞれの性能を示す性能テーブル（Ｔ３０）を生成するステップを含む。
【００２８】
上記リソースデータは、各々の階層のリソースのコストを示すコストデータ（４０）を含んでもよい。上記（ｂ）ステップは、（ｂ３）そのコストデータ（４０）を参照することによって、テーブルフレーム（Ｔ１０）が示すパターンのコストを算出し、それらパターンのそれぞれに対して算出されたコストを示すコストテーブル（Ｔ４０）を生成するステップを含む。
【００２９】
本発明に係るサイジング支援方法は、更に、（Ｅ）Ｋをｎ−２に初期設定するステップと、（Ｆ）上記（Ｄ）ステップが終了する度に、Ｋの値を１減らし、また、上述の性能テーブル（Ｔ３０）及びコストテーブル（Ｔ４０）を参照することにより、次の単位処理で用いられる第３リソースに関する単位性能データ（３０）及びコストデータ（４０）を抽出するステップと、（Ｇ）各Ｋに対応する処理階層に対して単位処理を繰り返し実行するステップと、を有する。
【００３０】
本発明に係るサイジング支援方法は、更に、（Ｈ）Ｋが１である場合の単位処理が終了した場合、上述のスケールテーブル（Ｔ２０）、性能テーブル（Ｔ３０）、及びコストテーブル（Ｔ４０）のうち少なくとも１つを表示装置（５）に表示させるステップを有する。
【００３１】
本発明に係るサイジング支援方法は、更に、（Ｉ）Ｋが１である場合の単位処理が終了した場合、上述のスケールテーブル（Ｔ２０）、性能テーブル（Ｔ３０）、及びコストテーブル（Ｔ４０）のうち少なくとも２つを互いに関連付け、その関連を示すユーザービューデータ（７０）を作成するステップと、（Ｊ）そのユーザービューデータ（７０）を表示装置（５）に表示させるステップと、を有する。例えば、ユーザービューデータ（７０）は、性能テーブル（Ｔ３０）が示す性能とコストテーブル（Ｔ４０）が示すコストとの関連を示す。この場合、上記（Ｊ）ステップにおいて、パターンのそれぞれに関する性能とコストとの関係が表示装置（５）に表示される。このように、階層的リソースの性能とコストとの関係を、ユーザーにわかりやすく提示することが可能となる。ユーザーは、提示された情報を検討することによって、適切な階層的リソースの構成を容易に決定することができる。
【００３２】
本発明の第４の観点において、階層的リソースのサイジングを支援するサイジング支援方法が提供される。そのサイジング支援方法は、（Ａ）階層的リソースがとり得るパターンのそれぞれに対して性能とコストとの関係を示すユーザービューデータ（７０）を生成するステップと、（Ｂ）そのユーザービューデータ（７０）の表示を行うステップとを有する。
【００３３】
本発明の第５の観点において、上記サイジング支援方法をコンピュータに実行させるためのサイジング支援プログラム（１００）が提供される。
【発明の効果】
【００３４】
本発明によれば、システム構築または拡張前に、階層的リソースの性能やコスト等を定量的に見積もることが可能となる。これにより、システム構築または拡張前に、階層的リソースのサイジングを精度良く行うことが可能となる。
【発明を実施するための最良の形態】
【００３５】
添付図面を参照して、本発明の実施の形態に係るサイジング支援システム、サイジング支援方法、及びサイジング支援プログラムを説明する。サイジングの対象は、ｎ階層の均一な階層的リソースである（ｎは３以上の整数）。そのサイジングの対象としては、クラスタシステムが例示される。例えば、３階層のクラスタシステムの場合、第１階層のリソースがクラスタであり、第２階層のリソースがノードであり、第３階層のリソースがＣＰＵである。クラスタシステムは、仮想化クラスタシステムであってもよい。また、サイジングの対象は、マルチプロセッサシステムや、仮想化サーバや、ブレードサーバであってもよい。
【００３６】
１．サイジング支援システム
サイジング対象のシステムは、採用されるハードウェアの種類によって様々なパターンの構成を有し得る。本実施の形態に係るサイジング支援システムは、その様々なパターンに関して、システム全体の性能やコストを定量的に算出する。更に、本実施の形態に係るサイジング支援システムは、その様々なパターンに対して算出された性能とコストとの関係を表示し、ユーザーによる検討・選択を容易にする。
【００３７】
図１は、本実施の形態に係るサイジング支援システム１の構成を示すブロック図である。そのサイジング支援システム１は、記憶装置２、プロセッサ３、入力装置４、表示装置５、ネットワークインタフェース６、メディアドライブ７を備えている。
【００３８】
記憶装置２としては、ＲＡＭやハードディスクが例示される。記憶装置２には、下位リソースデータ１０、スケーラビリティデータ２０、単位性能データ３０、及びコストデータ４０が格納される。それらデータは、入力装置４により入力されてもよいし、ネットワークインタフェース６を介して提供されてもよい。または、それらデータは、コンピュータ読み取り可能な記録媒体に記録され、メディアドライブ７によって読み込まれてもよい。記憶装置２には、更に、テーブルフレームＴ１０、スケールテーブルＴ２０、性能テーブルＴ３０、コストテーブルＴ４０、及びユーザービューデータ７０が格納される。それらテーブルやデータは、主に、サイジング支援システム１により生成される。
【００３９】
プロセッサ３はＣＰＵを含み、各種処理を行い、また、各装置や各デバイスの動作を制御する。また、プロセッサ３は、サイジング支援プログラム１００を実行し、そのサイジング支援プログラム１００の命令に従ってサイジング支援処理を実現する。
【００４０】
サイジング支援プログラム１００は、例えば、コンピュータ読み取り可能な記録媒体に記録されており、メディアドライブ７によって読み込まれる。あるいは、サイジング支援プログラム１００は、ネットワークインタフェース６を介して提供されてもよい。サイジング支援プログラム１００は、プロセッサ３との協働により、テーブル定義モジュール１１０、スケール評価モジュール１２０、性能評価モジュール１３０、コスト評価モジュール１４０、処理階層更新モジュール１６０、及びユーザービュー作成モジュール１７０を提供する。
【００４１】
入力装置４としては、キーボードやマウスが例示される。表示装置５としては、液晶ディスプレイが例示される。ユーザーは、表示装置５に表示された情報を参照しながら、入力装置４を用いて各種データやコマンドを入力することができる。
【００４２】
図２は、サイジング支援システム１におけるデータの流れを概略的に示している。テーブル定義モジュール１１０は、記憶装置２から下位リソースデータ１０を読み出し、その下位リソースデータ１０に基づいてテーブルフレームＴ１０を生成する。テーブルフレームＴ１０はテーブルの枠であり、テーブルフレームＴ１０の生成は、配列の定義に相当する。その配列の各要素、すなわち、テーブルの各フィールドを算出するモジュールが、スケール評価モジュール１２０、性能評価モジュール１３０、及びコスト評価モジュール１４０である。その意味で、それらスケール評価モジュール１２０、性能評価モジュール１３０、及びコスト評価モジュール１４０を合わせて、フィールド算出モジュール１５０と呼ぶこともできる。
【００４３】
スケール評価モジュール１２０は、上述のテーブルフレームＴ１０及びスケーラビリティデータ２０を記憶装置２から読み出し、それらデータに基づいてスケールテーブルＴ２０を生成する。性能評価モジュール１３０は、スケールテーブルＴ２０及び単位性能データ３０を記憶装置２から読み出し、それらデータに基づいて性能テーブルＴ３０を生成する。コスト評価モジュール１４０は、上述のテーブルフレームＴ１０及びコストデータ４０を記憶装置２から読み出し、それらデータに基づいてコストテーブルＴ４０を生成する。
【００４４】
生成されたテーブルＴ２０〜Ｔ４０は、そのままサイジング支援システム１から出力されてもよい。あるいは、それらテーブルＴ２０〜Ｔ４０は、ユーザービュー作成モジュール１７０に送られてもよい。ユーザービュー作成モジュール１７０は、それらテーブルＴ２０〜Ｔ４０を互いに関連付け、ユーザービューデータ７０を生成する。ユーザービューデータ７０は、表示装置５により表示される。ユーザービューデータ７０においては、例えば、サイジング対象のシステム全体の性能とコストとが関連付けられる。ユーザーは、表示装置５に表示された性能とコストとの関係を検討することによって、適切な階層的リソース構成を容易に決定することができる。
【００４５】
２．処理の詳細
次に、図３に示されるフローチャートに沿って、本実施の形態に係るサイジング支援システム１の動作を詳細に説明する。サイジングの対象は、ｎ階層の均一な階層的リソースである（ｎは３以上の整数）。後に示されるように、処理は、３つの階層を１つの単位として順番に行われる。その処理対象である３階層は、以下、第Ｋ階層、第Ｋ＋１階層、及び第Ｋ＋２階層（Ｋ＝１〜ｎ−２）と参照される。処理は、Ｋ＝ｎ−２の場合から始まり、Ｋ＝１となるまで繰り返し行われる。
【００４６】
２−１．第１の動作例
第１の動作例として、３階層（ｎ＝３）のクラスタのサイジングが示される。その場合、図４に示されるように、第１階層のリソースがクラスタであり、第２階層のリソースがノードであり、第３階層のリソースがＣＰＵである。ある階層のリソースに対して、上位の階層のリソースは「上位リソース」と参照され、下位の階層のリソースは「下位リソース」と参照される。つまり、クラスタの下位リソースはノードであり、ノードの下位リソースはＣＰＵである。本例において、クラスタは同種のノードから構成される。また、それぞれのノードは、同種・同数のＣＰＵから構成される。つまり、本例におけるサイジング対象であるクラスタは、均一な階層的リソースである。採用されるＣＰＵやノードの種類によって、様々なパターンのクラスタが構築され得る。本実施の形態に係るサイジング支援システム１は、その様々なパターンに関して、クラスタの性能やコストを算出することができる。
【００４７】
ステップＳ１：基礎情報の提供
まず、処理に用いられる基礎情報がサイジング支援システム１に入力され、記憶装置２に格納される。その基礎情報は、各階層のリソースに関するパラメータを示すデータであり、以下に示される下位リソースデータ１０、スケーラビリティデータ２０、単位性能データ３０、及びコストデータ４０を含んでいる。
【００４８】
（下位リソースデータ１０）
図５は、下位リソースデータ１０の一例を示している。下位リソースデータ１０は、各階層のリソースが、どのような下位リソースを有し得るかを示している。より具体的には、各階層のリソースに関して、そのリソースが有し得る下位リソースの種類と最大数が定義されている。
【００４９】
例えば、第１階層（第Ｋ階層）に対する下位リソースデータ１０−１は、クラスタ（ＲＫ）を構成し得るノードの種類（ＲＫ＋１）とそのノードの最大数（ＭＫ＋１）を示している。クラスタ（cluster）の下位リソースとしては、「２−ｗａｙノード」と「４−ｗａｙノード」の２種類が挙げられている。クラスタは、最大８個の２−ｗａｙノード、あるいは、最大７個の４−ｗａｙノードを持つことができる。第２階層（第Ｋ＋１階層）に対する下位リソースデータ１０−２は、ノード（ＲＫ＋１）を構成し得るＣＰＵの種類（ＲＫ＋２）とそのＣＰＵの最大数（ＭＫ＋２）を示している。２−Ｗａｙノードは、最大２個の「ＣＰＵ−Ａ」を持つことができる。一方、４−Ｗａｙノードは、最大４個の「ＣＰＵ−Ｂ」を持つことができる。尚、第３階層（第Ｋ＋２階層）は最下位層であるため、第３階層に対する下位リソースデータ１０−３は参照されない。
【００５０】
（スケーラビリティデータ２０）
図６は、スケーラビリティデータ２０の一例を示している。「スケーラビリティ（scalability）」とは、リソースを増やした時の性能変化率である。本明細書において、スケーラビリティは、Ｎ個の下位リソースを含む上位リソースの性能を、１個の下位リソースの性能のＮ倍で割った値と定義される。例えば、１つのノードでは秒１００件のリクエストを処理でき、４つのノードで構成されるクラスタ全体では秒３５０件のリクエストを処理できる場合、スケーラビリティは０．８７５（＝３５０／（４×１００））である。スケーラビリティは、ある階層における１個あたりのリソースの性能が、その数に応じてどう変化するかを示しているとも言える。
【００５１】
例えば、第２階層（第Ｋ＋１階層）に対するスケーラビリティデータ２０−２は、ノードの種類（ＲＫ＋１）とそのノードの数（ｉ：ｉ＝１〜ＭＫ＋１）に応じたスケーラビリティとの関係を示している。２−ｗａｙノードのスケーラビリティは、１次元配列ｓＫ＋１［１：８］で与えられ、４−ｗａｙノードのスケーラビリティは、１次元配列ｓＫ＋１［１：７］で与えられている。また、第３階層（第Ｋ＋２階層）に対するスケーラビリティデータ２０−３は、ＣＰＵの種類（ＲＫ＋２）とそのＣＰＵの数（ｊ：ｊ＝１〜ＭＫ＋２）に応じたスケーラビリティとの関係を示している。ＣＰＵ−Ａのスケーラビリティは、１次元配列ｓＫ＋２［１：２］で与えられ、ＣＰＵ−Ｂのスケーラビリティは、１次元配列ｓＫ＋２［１：４］で与えられている。種類と最大数は、図５に示された下位リソースデータ１０の内容と整合している。尚、最上位層である第１階層（第Ｋ階層）に対するスケーラビリティデータ２０−１は参照されない。
【００５２】
（単位性能データ３０）
図７は、単位性能データ３０の一例を示している。この単位性能データ３０は、最下位層である第３階層（第Ｋ＋２階層）に対してのみ与えられ、各ＣＰＵの種類（ＲＫ＋２）に関する「単位性能（ｐＫ＋２）」を示している。単位性能は、ＣＰＵが１秒間に処理できるリクエストの数を示している。図７において、ＣＰＵ−Ａ及びＣＰＵ−Ｂの単位性能は共に１００である。
【００５３】
（コストデータ４０）
図８は、コストデータ４０の一例を示している。このコストデータ４０は、各階層のリソースに関するコストを示している。コストには、ハードウェアの値段やソフトウェアのライセンス価格などが含まれる。第２階層（第Ｋ＋１階層）に対するコストデータ４０−２は、ノードの種類（ＲＫ＋１）とそのノードのコスト（ｃＫ＋１）を示している。第３階層（第Ｋ＋２階層）に対するコストデータ４０−３は、ＣＰＵの種類（ＲＫ＋２）とそのＣＰＵのコスト（ｃＫ＋２）を示している。また、第１階層（第Ｋ階層）に対するコストデータ４０−１は、ノードの種類（ＲＫ）とそのノードのコスト（ｃＫ）を示している。但し、本例において、第Ｋ階層は最上位階層であるため、そのコストｃＫは“０”に設定されている。第１階層のコスト、すなわちクラスタのコストは、求めるべき対象の１つである。
【００５４】
ステップＳ２：プログラムの実行
次に、サイジング支援プログラム１００がプロセッサ３により実行される。それにより、図２に示された各モジュールが提供され、処理が行われる。
【００５５】
ステップＳ３：処理階層の初期設定
処理は、３つの階層（第Ｋ〜Ｋ＋２階層）を１つの単位として繰り返し行われる。その処理対象である３階層は、以下、「処理階層」と参照される。処理階層は、下位（Ｋ＝ｎ−２）から上位（Ｋ＝１）へ順番にシフトしていく。処理階層更新モジュール１６０は、処理階層の初期設定として、Ｋを“ｎ−２”に設定する。本例においては、サイジング対象が３階層であるため、処理の繰り返しは１回だけである。また、処理階層は、第１階層、第２階層、及び第３階層の３階層である（Ｋ＝１）。
【００５６】
ステップＳ１０：テーブルフレームの作成
サイジング対象のクラスタは、採用されるノードの種類と数、及び採用されるＣＰＵの種類と数により、様々なパターンの構成をとり得る。従って、クラスタの性能やコストを見積もる前に、そもそもクラスタがどのようなパターンをとり得るのか知る必要がある。その様々なパターンを定義するのが、テーブルフレームＴ１０である。クラスタが持ち得るノードの種類と最大数、また、ノードが持ち得るＣＰＵの種類と最大数は、上述の下位リソースデータ１０に示されている（図５参照）。よって、下位リソースデータ１０を参照することによって、クラスタがとり得る様々なパターンを知ることができる。
【００５７】
図２に示されるように、テーブル定義モジュール１１０は、下位リソースデータ１０に基づいてテーブルフレームＴ１０を生成する。より具体的なフローは、図９に示されている。まず、テーブル定義モジュール１１０は、記憶装置２から下位リソースデータ１０を読み込む（ステップＳ１１）。次に、テーブル定義モジュール１１０は、第２階層のリソース種類（ＲＫ＋１）毎に、図１０に示されるようなテーブルフレームＴ１０−ａ、Ｔ１０−ｂを作成する（ステップＳ１２）。テーブルフレームＴ１０−ａは、クラスタに２−ｗａｙノードが採用される場合のパターンを示しており、テーブルフレームＴ１０−ｂは、クラスタに４−ｗａｙノードが採用される場合のパターンを示している。
【００５８】
各テーブルフレームＴ１０は２次元テーブルの枠であり、その行は、第２階層（第Ｋ＋１階層）のノード数ｉ（ｉ＝１〜ＭＫ＋１）を示し、その列は、第３階層（第Ｋ＋２階層）のＣＰＵ数ｊ（ｊ＝１〜ＭＫ＋２）を示している。例えば、２−ｗａｙノードが採用される場合、その２−ｗａｙノードは最大２個のＣＰＵ−Ａによって構成され得る（図５参照）。よって、テーブルフレームＴ１０−ａの行は、２−ｗａｙノードの数ｉ（＝１〜８）を示し、その列はＣＰＵ−Ａの数ｊ（＝１、２）を示している。同様に、テーブルフレームＴ１０−ｂの行は、４−ｗａｙノードの数ｉ（＝１〜７）を示し、その列はＣＰＵ−Ｂの数ｊ（＝１〜４）を示している。
【００５９】
このように、テーブルフレームＴ１０は、クラスタが取り得る４４パターンの構成を示している。実際のコンピュータ上では、テーブルフレームＴ１０の生成は、配列の定義に相当する。その配列の各要素（テーブルの各フィールド）として、性能やコストが算出されていく。すなわち、クラスタが取り得るパターンのそれぞれに対して、性能やコストといった特性が算出されていく。その算出を行うモジュールが、次に示されるフィールド算出モジュール１５０（スケール評価モジュール１２０、性能評価モジュール１３０、及びコスト評価モジュール１４０）である。
【００６０】
ステップＳ２０：スケールテーブルの作成
図２に示されるように、スケール評価モジュール１２０は、上述のテーブルフレームＴ１０及びスケーラビリティデータ２０に基づいてスケールテーブルＴ２０を生成する。スケールテーブルＴ２０は、クラスタが取り得るパターンのそれぞれに関する「性能倍率」を示すテーブルである。性能倍率は、下位リソースの数が１である場合と比較してそのパターンの性能が何倍になるかを示すパラメータである。この性能倍率は、下位リソースのスケーラビリティ及び数から算出することができる。
【００６１】
より具体的なフローは図１１に示されている。まず、スケール評価モジュール１２０は、記憶装置２からテーブルフレームＴ１０及びスケーラビリティデータ２０を読み込む（ステップＳ２１）。次に、スケール評価モジュール１２０は、１つのテーブルフレームＴ１０を選択する（ステップＳ２２）。次に、スケール評価モジュール１２０は、選択されたテーブルフレームＴ１０の各フィールド（各パターン）に対して性能倍率Ｓｉｊを算出する（ステップＳ２３）。その性能倍率Ｓｉｊは、次の式により与えられる。
【００６２】
Ｓｉｊ＝ｓＫ＋１［ｉ］×ｉ×ｓＫ＋２［ｊ］×ｊ
ここで、ｉは第２階層のノード数（１〜ＭＫ＋１）であり、ｊは第３階層のＣＰＵ数（１〜ＭＫ＋２）である。また、ｓＫ＋１［ｉ］は、数ｉに応じたノードのスケーラビリティであり、図６に示されたスケーラビリティデータ２０−２から得られる。同様に、ｓＫ＋２［ｊ］は、数ｊに応じたＣＰＵのスケーラビリティであり、図６に示されたスケーラビリティデータ２０−３から得られる。
【００６３】
このような計算により、選択されたテーブルフレームＴ１０に対応するスケールテーブルＴ２０が生成される。図１２は、本例において生成されるスケールテーブルＴ２０を示している。スケールテーブルＴ２０−ａ、Ｔ２０−ｂは、それぞれテーブルフレームＴ１０−ａ、Ｔ１０−ｂに対応している。全てのテーブルフレームＴ１０に関する処理が完了すると（ステップＳ２４；Ｙｅｓ）、スケールテーブルＴ２０の作成処理が終了する（ステップＳ２５）。
【００６４】
ステップＳ３０：性能テーブルの作成
図２に示されるように、性能評価モジュール１３０は、上述のスケールテーブルＴ２０及び単位性能データ３０に基づいて性能テーブルＴ３０を生成する。性能テーブルＴ３０は、クラスタが取り得るパターンのそれぞれに関する「性能」を示すテーブルである。
【００６５】
より具体的なフローは図１３に示されている。まず、性能評価モジュール１３０は、記憶装置２からスケールテーブルＴ２０及び単位性能データ３０を読み込む（ステップＳ３１）。次に、性能評価モジュール１３０は、１つのスケールテーブルＴ２０を選択する（ステップＳ３２）。次に、性能評価モジュール１３０は、選択されたスケールテーブルＴ２０の各フィールド（各パターン）に対して性能Ｐｉｊを算出する（ステップＳ３３）。その性能Ｐｉｊは、次の式により与えられる。
【００６６】
Ｐｉｊ＝Ｓｉｊ×ｐＫ＋２
ここで、ｉは第２階層のノード数（１〜ＭＫ＋１）であり、ｊは第３階層のＣＰＵ数（１〜ＭＫ＋２）である。また、ｐＫ＋２は、ＣＰＵの単位性能であり、図７に示された単位性能データ３０から得られる。
【００６７】
このような計算により、選択されたスケールテーブルＴ２０に対応する性能テーブルＴ３０が生成される。図１４は、本例において生成される性能テーブルＴ３０を示している。性能テーブルＴ３０−ａ、Ｔ３０−ｂのそれぞれは、スケールテーブルＴ２０−ａ、Ｔ２０−ｂ、すなわち、テーブルフレームＴ１０−ａ、Ｔ１０−ｂに対応している。全てのスケールテーブルＴ２０に関する処理が完了すると（ステップＳ３４；Ｙｅｓ）、性能テーブルＴ３０の作成処理が終了する（ステップＳ３５）。
【００６８】
ステップＳ４０：コストテーブルの作成
図２に示されるように、コスト評価モジュール１４０は、上述のテーブルフレームＴ１０及びコストデータ４０に基づいてコストテーブルＴ４０を生成する。コストテーブルＴ４０は、クラスタが取り得るパターンのそれぞれに関する「コスト」を示すテーブルである。
【００６９】
より具体的なフローは図１５に示されている。まず、コスト評価モジュール１４０は、記憶装置２からテーブルフレームＴ１０及びコストデータ４０を読み込む（ステップＳ４１）。次に、コスト評価モジュール１４０は、１つのテーブルフレームＴ１０を選択する（ステップＳ４２）。次に、コスト評価モジュール１４０は、選択されたテーブルフレームＴ１０の各フィールド（各パターン）に対してコストＣｉｊを算出する（ステップＳ４３）。そのコストＣｉｊは、次の式により与えられる。
【００７０】
Ｃｉｊ＝ｃＫ＋ｃＫ＋１×ｉ＋ｃＫ＋２×ｉ×ｊ
ここで、ｉは第２階層のノード数（１〜ＭＫ＋１）であり、ｊは第３階層のＣＰＵ数（１〜ＭＫ＋２）である。また、ｃＫ，ｃＫ＋１，ｃＫ＋２は、各階層のノードのコストであり、図８に示されたコストデータ４０から得られる。
【００７１】
このような計算により、選択されたテーブルフレームＴ１０に対応するコストテーブルＴ４０が生成される。図１６は、本例において生成されるコストテーブルＴ４０を示している。コストテーブルＴ４０−ａ、Ｔ４０−ｂは、それぞれテーブルフレームＴ１０−ａ、Ｔ１０−ｂに対応している。全てのテーブルフレームＴ１０に関する処理が完了すると（ステップＳ４４；Ｙｅｓ）、コストテーブルＴ４０の作成処理が終了する（ステップＳ４５）。
【００７２】
また、割引等の価格変動要因に対応するため、コストテーブルＴ４０は、外部から直接与えられてもよい。その場合、ユーザーは、入力装置４を用いてコストテーブルＴ４０を入力することができる。あるいは、コストテーブルＴ４０は、ネットワークやメディアを介して提供されてもよい。与えられるコストテーブルＴ４０は、図１６に示されるようなフォーマットを有しており、記憶装置２に格納される。
【００７３】
ステップＳ５０：
Ｋが２以上の場合、すなわち、処理階層に最上位階層が含まれていない場合、後述のステップＳ６０が実行される。本動作例ではＫ＝１なので（ステップＳ５０；Ｙｅｓ）、処理は次のステップに移る。
【００７４】
ステップＳ７０，Ｓ８０：結果の出力
上述の処理により生成されたスケールテーブルＴ２０、性能テーブルＴ３０、及びコストテーブルＴ４０は全て、適切なクラスタ構成を選択するにあたり重要なパラメータを定量的に示している。それらテーブルＴ２０〜Ｔ４０は、そのまま表示装置５に表示されてもよいし、メディアドライブ７によって記録媒体に記録されてもよい。ユーザーは、それらテーブルＴ２０〜Ｔ４０を参考にして、所望のシステムを実現できるクラスタ構成を決定することができる。
【００７５】
また、それらテーブルＴ２０〜Ｔ４０は、互いに関連付けられてユーザーに提示されてもよい。その関連付けを行うモジュールが、ユーザービュー作成モジュール１７０である。図２に示されるように、ユーザービュー作成モジュール１７０は、テーブルＴ２０〜Ｔ４０を互いに関連付けることによってユーザービューデータ７０を作成する。例えば、ユーザービューデータ７０は、クラスタが取り得る様々なパターンのそれぞれに対して性能とコストとの関係を示す。ユーザービューデータ７０は、グラフ形式又はテーブル形式で与えられ、ユーザービュー作成モジュール１７０は、そのユーザービューデータ７０を表示装置５に表示させる。
【００７６】
図１７は、表示装置５によるユーザービューデータ７０の表示の一例を示している。図１７においては、クラスタの性能とコストとの関係がグラフ形式で表示されている。グラフの縦軸はクラスタのコストを示し、横軸はクラスタの性能を示している。縦軸は、性能あたりのコスト（コストを性能で割った値）を示していてもよい。グラフ中の点は、テーブルＴ２０〜Ｔ４０のフィールド値に対応している。また、グラフ中の点は、ノードの種類別に線で結ばれており、系列化されている。例えば、２個のＣＰＵ−Ｂを有する４−ｗａｙノードからクラスタが構成される場合の関係は、系列“４−ｗａｙ（２ＣＰＵ）”で表されている。各系列において、最も左の点はノード数が１の場合を示し、右に行くに従ってノード数が１ずつ増える。
【００７７】
ユーザーは、このグラフを参照することによって、所望のクラスタを構築するためにはどの種類のノードを採用すればよいか、容易に判断することができる。例えば、最初に秒５００リクエストを処理できるクラスタを構築して、将来的には秒１０００リクエストまで処理できるようにクラスタを拡張するつもりであれば、ユーザーは、２−ｗａｙ（２ＣＰＵ）、４−ｗａｙ（２ＣＰＵ）、４−ｗａｙ（３ＣＰＵ）、４−ｗａｙ（４ＣＰＵ）のいずれかを採用すればよい。また、最も安価なクラスタを構築したければ、ユーザーは、２−ｗａｙ（２ＣＰＵ）を採用すればよい。
【００７８】
また、秒１５００リクエストまで処理できるようにクラスタを拡張したければ、ユーザーは、４−ｗａｙ（３ＣＰＵ）、４−ｗａｙ（４ＣＰＵ）のいずれかを採用すればよい。その中でも、安価にクラスタを拡張したければ、ユーザーは、４−ｗａｙ（４ＣＰＵ）を選択すればよい。つまり、４−ｗａｙ（４ＣＰＵ）に関しては、初期費用が高いものの、将来の拡張がコスト的に容易であることがわかる。一方、２−ｗａｙ（１ＣＰＵ）に関しては、初期費用は安いが、将来拡張される時に価格がネックになることがわかる。
【００７９】
尚、このような性能とコストとの関係を示す表示は、２階層の階層的リソースに関しても可能である。その場合、図１７に示された表示と比較して、線の本数が少なくなるだけである。
【００８０】
以上に説明されたように、所望のシステムを実現するために必要な階層的リソース構成を容易に決定することが可能となる。クラスタの構築前に、ユーザーは、将来の拡張性を予測でき、初期費用や拡張性の観点から最適なクラスタ構成を決定することができる。よって、リクエストが増加した時に、性能不足によりサービスが提供できなくなることが防止される。
【００８１】
２−２．第２の動作例
次に、サイジングの対象である階層的リソースが４階層以上である場合を考える。例として、４階層（ｎ＝４）のクラスタのサイジングが示される。その場合、図１８に示されるように、第１階層のリソースがクラスタであり、第２階層のリソースがノードであり、第３階層のリソースがＣＰＵであり、第４階層のリソースがコアである。クラスタは同種のノードから構成され、それぞれのノードは同種・同数のＣＰＵから構成され、それぞれのＣＰＵは同種・同数のコアから構成される。つまり、本例におけるサイジング対象であるクラスタは、均一な階層的リソースである。採用されるリソースの種類によって、様々なパターンのクラスタが構築され得る。本例の説明において、第１の動作例と重複する説明は適宜省略される。
【００８２】
ステップＳ１において最初にサイジング支援システム１に入力される基礎情報は、次の通りである。図１９は、下位リソースデータ１０の一例を示している。下位リソースデータ１０は、各階層に対する下位リソースデータ１０−１〜１０−４を含んでいる。尚、最下位層である第４階層に対する下位リソースデータ１０−４は参照されない。図２０は、スケーラビリティデータ２０の一例を示している。スケーラビリティデータ２０は、各階層に対するスケーラビリティデータ２０−１〜２０−４を含んでいる。尚、最上位層である第１階層に対するスケーラビリティデータ２０−１は参照されない。図２１は、単位性能データ３０の一例を示している。この単位性能データ３０は、最下位層である第４階層に対してのみ与えられている。図２２は、コストデータ４０の一例を示している。コストデータ４０は、各階層に対するコストデータ４０−１〜４０−４を含んでいる。尚、最上位層である第１階層のコストｃ１は、“０”に設定されている。
【００８３】
初期設定（ステップＳ３）において、Ｋは“２（＝ｎ−２）”に設定される。よって、第１回目の処理における処理階層は、第２階層（第Ｋ階層）、第３階層（第Ｋ＋１階層）、及び第４階層（第Ｋ＋２階層）である。その後、第１の動作例と同様の処理が実行される（ステップＳ１０、Ｓ２０、Ｓ３０、Ｓ４０）。その結果、第Ｋ階層（第２階層）に関するスケールテーブルＴ２０、性能テーブルＴ３０、及びコストテーブルＴ４０が生成される。
【００８４】
図２３は、第１回目の処理により生成されるスケールテーブルＴ２０を示している。スケールテーブルＴ２０−ａは、第３階層のリソースが「ＣＰＵ−Ａ」である場合に対応している。その行は、第３階層のＣＰＵ−Ａの数を示し、その列は、第４階層のｃｏｒｅ−Ａの数を示している。一方、スケールテーブルＴ２０−ｂは、第３階層のリソースが「ＣＰＵ−Ｂ」である場合に対応している。その行は、第３階層のＣＰＵ−Ｂの数を示し、その列は、第４階層のｃｏｒｅ−Ｂの数を示している。各テーブルにおいて、様々なパターンのそれぞれに対して算出された性能倍率が示されている。
【００８５】
同様に、図２４は、第１回目の処理により生成される性能テーブルＴ３０を示している。性能テーブルＴ３０−ａ、Ｔ３０−ｂは、それぞれ第３階層のリソースが「ＣＰＵ−Ａ」、「ＣＰＵ−Ｂ」である場合に対応している。各テーブルにおいて、様々なパターンのそれぞれに対して算出された性能が示されている。また、図２５は、第１回目の処理により生成されるコストテーブルＴ４０を示している。コストテーブルＴ４０−ａ、Ｔ４０−ｂは、それぞれ第３階層のリソースが「ＣＰＵ−Ａ」、「ＣＰＵ−Ｂ」である場合に対応している。各テーブルにおいて、様々なパターンのそれぞれに対して算出されたコストが示されている。
【００８６】
次に、ステップＳ５０が実行される。ステップＳ５０において、Ｋは１ではない、すなわち、処理階層に最上位階層が含まれていない（ステップＳ５０；Ｎｏ）。その場合、処理階層更新モジュール１６０によって、処理階層の更新が行われる（ステップＳ６０）。図１８は、ステップＳ６０におけるフローを詳細に示している。
【００８７】
第２回目の処理において、処理階層は第１〜第３階層に移る。その処理階層のうち最下位層は第３階層であり、その第３階層に関する単位性能データ３０が必要となる。そのため、本実施の形態によれば、図２４に示された性能テーブルＴ３０から、第３階層のＣＰＵの単位性能が抽出される。具体的には、図２４に示された性能テーブルＴ３０のうち、フィールドＰ１１〜Ｐ１ＭＫ＋２（図中の点線で囲まれた部分）の値が参照される。これらフィールド値は、第３階層のＣＰＵの数が１である場合の性能、すなわち、第３階層の単位性能を示している。よって、３種類のフィールド値Ｐ１１〜Ｐ１ＭＫ＋２が、第３階層に対する単位性能データ３０として設定されればよい。その単位性能データ３０は、（ＣＰＵ−Ａ，１ｃｏｒｅ−Ａ）、（ＣＰＵ−Ｂ，１ｃｏｒｅ−Ｂ）、（ＣＰＵ−Ｂ、２ｃｏｒｅ−Ｂ）の３種類のそれぞれの単位性能を示している（ステップＳ６１）。
【００８８】
同様に、図２５に示されたコストテーブルＴ４０から、第３階層のＣＰＵのコストが抽出される。具体的には、図２５に示されたコストテーブルＴ４０のうち、フィールドＣ１１〜Ｃ１ＭＫ＋２（図中の点線で囲まれた部分）の値が参照される。これらフィールド値は、第３階層のＣＰＵの数が１である場合のコストを示している。よって、３種類のフィールド値Ｃ１１〜Ｃ１ＭＫ＋２が、第３階層に対するコストデータ４０−３として設定されればよい。そのコストデータ４０−３は、（ＣＰＵ−Ａ，１ｃｏｒｅ−Ａ）、（ＣＰＵ−Ｂ，１ｃｏｒｅ−Ｂ）、（ＣＰＵ−Ｂ、２ｃｏｒｅ−Ｂ）の３種類のそれぞれのコストを示している（ステップＳ６２）。
【００８９】
このように、処理階層更新モジュール１６０は、ある単位処理により作成された性能テーブルＴ３０及びコストテーブルＴ４０を参照することにより、次の単位処理で用いられる単位性能データ３０及びコストデータ４０−３を抽出する。コストテーブルＴ４０が外部から与えられる場合は、処理階層更新モジュール１６０は、ある単位処理により作成された性能テーブルＴ３０を参照することにより、次の単位処理で用いられる単位性能データ３０を抽出する。このように、ある単位処理において作成されたデータは、次の単位処理にフィードバックされる。
【００９０】
次に、処理階層更新モジュール１６０は、Ｋをデクリメントする（ステップＳ６３）。その結果、Ｋは１となり、処理階層は、第１〜第３階層にシフトする。
【００９１】
次に、新たな処理階層である第１階層（第Ｋ階層）、第２階層（第Ｋ＋１階層）、及び第３階層（第Ｋ＋２階層）に対して、第２回目の処理が実行される。ここで、最下位層である第３階層に関するデータとしては、上述の抽出データが利用される。第２回目の処理も、既出の動作例と同様に実行される（ステップＳ１０、Ｓ２０、Ｓ３０、Ｓ４０）。その結果、第１階層に関するスケールテーブルＴ２０、性能テーブルＴ３０、及びコストテーブルＴ４０が生成される。Ｋは１であるので（ステップＳ５０；Ｙｅｓ）、処理の繰り返しは終了する。そして、最終的に得られたテーブルＴ２０〜Ｔ４０に基づいてユーザービューデータ７０が作成され（ステップＳ７０）、結果が表示装置５に出力される（ステップＳ８０）。
【００９２】
図２７は、本例における表示の一例を示している。図２７においては、クラスタの性能とコストとの関係がグラフ形式で表示されている。グラフ中には、ノードの種類毎に、「１．ｎｏｄｅ−Ａ，１ＣＰＵ−Ａ，１ｃｏｒｅ−Ａ」、「２．ｎｏｄｅ−Ａ，２ＣＰＵ−Ａ，１ｃｏｒｅ−Ａ」、「３．ｎｏｄｅ−Ｂ，１ＣＰＵ−Ｂ，１ｃｏｒｅ−Ｂ」、「４．ｎｏｄｅ−Ｂ，２ＣＰＵ−Ｂ，１ｃｏｒｅ−Ｂ」、「５．ｎｏｄｅ−Ｂ，１ＣＰＵ−Ｂ，２ｃｏｒｅ−Ｂ」、「６．ｎｏｄｅ−Ｂ，３ＣＰＵ−Ｂ，１ｃｏｒｅ−Ｂ」、「７．ｎｏｄｅ−Ｂ，４ＣＰＵ−Ｂ，１ｃｏｒｅ−Ｂ」、「８．ｎｏｄｅ−Ｂ，２ＣＰＵ−Ｂ，２ｃｏｒｅ−Ｂ」、「９．ｎｏｄｅ−Ｂ，３ＣＰＵ−Ｂ，２ｃｏｒｅ−Ｂ」、及び「１０．ｎｏｄｅ−Ｂ，４ＣＰＵ−Ｂ，２ｃｏｒｅ−Ｂ」の１０種類の系列が示されている。
【００９３】
サイジング対象が５階層以上である場合であっても、同様の処理が行われる。ある処理によって得られたデータは、次の処理における最下位層（第Ｋ＋２階層）に関するデータとしてフィードバックされる。処理を繰り返すことによって、ｎ階層全体の性能やコストを見積もることが可能となる。
【００９４】
２−３．第３の動作例
性能やコストの算出は、クラスタが有し得るパターンの全てに対して行われる必要はない。クラスタが有し得るパターンの一部に関してだけ、性能やコストが算出されてもよい。例えば、優れた性能が要求される場合、リソース数の少ないシステムでは要求される性能を達成できないと考えられる。よって、計算量を減らすために、リソース数の少ないパターンに対する計算は飛ばされてよい。図２８は、本動作例において生成される性能テーブルＴ３０の一例を示しており、第１の動作例で示された図１４に対応している。図２８において、第３階層のＣＰＵの数が１である場合の性能は算出されていない。ユーザーは、比較的高い性能が得られるパターンだけを知ることができる。
【００９５】
また、比較的低コストのシステムが要求される場合、コストが高くなりすぎるパターンに対する計算が飛ばされてもよい。例えば、計算中にコストが所定の目標値を超えたら、その系列に対する計算は終了する。図２９は、本動作例において生成されるコストテーブルＴ４０の一例を示しており、第１の動作例で示された図１６に対応している。図２９においては、コストが８，０００，０００円を超えるパターンは示されていない。第３の動作例によれば、計算量が低減されるという効果が得られる。更に、要求されたシステムからかけ離れたパターンに関するプロットが表示されないため、ユーザーは、結果を見やすくなり、最適な構成を決定しやすくなる。
【００９６】
３．効果
以上に説明されたように、本実施の形態によれば、３階層以上の均一な階層的リソースの性能やコストを定量的に見積もることが可能となる。これにより、システム構築前に、階層的リソースのサイジングを精度良く行うことが可能となる。また、本実施の形態によれば、階層的リソースの性能とコストとの関係を、ユーザーにわかりやすく提示することが可能となる。ユーザーは、提示された情報を検討することによって、適切な階層的リソースの構成を容易に決定することができる。つまり、ユーザーは、システム構築前に将来の拡張性を予測でき、初期費用や拡張性の観点から最適な構成を決定することができる。よって、性能不足によりサービスが提供できなくなることが防止される。このようにして、サイジングが支援される。
【００９７】
上述の実施の形態において、各リソースの価格を示すコストデータ４０が用いられていた。コストデータ４０の代わりに、各リソースが放出する熱量を示す熱量データが用いられてもよい。その熱量データのフォーマットは、コストデータ４０と同様であり、処理内容は変わらない。この場合、クラスタ等の階層的リソースの性能と熱量との関係を、ユーザーに定量的に提示することが可能となる。ユーザーは、要求性能を満たす熱放出の少ないクラスタを構築することができる。熱量以外にも性能と異なる指標を導入することによって、様々なサイジング支援が可能である。
【図面の簡単な説明】
【００９８】
【図１】図１は、本発明の実施の形態に係るサイジング支援システムの構成を示すブロック図である。
【図２】図２は、本発明の実施の形態に係るサイジング支援システムにおけるデータの流れを概念的に示すブロック図である。
【図３】図３は、本発明の実施の形態に係るサイジング支援方法を示すフローチャートである。
【図４】図４は、第１の動作例におけるサイジング対象であるクラスタの階層構造を示す概念図である。
【図５】図５は、下位リソースデータの一例を示す図である。
【図６】図６は、スケーラビリティデータの一例を示す図である。
【図７】図７は、単位性能データの一例を示す図である。
【図８】図８は、コストデータの一例を示す図である。
【図９】図９は、ステップＳ１０を詳細に示すフローチャートである。
【図１０】図１０は、生成されるテーブルフレームの一例を示す図である。
【図１１】図１１は、ステップＳ２０を詳細に示すフローチャートである。
【図１２】図１２は、生成されるスケールテーブルの一例を示す図である。
【図１３】図１３は、ステップＳ３０を詳細に示すフローチャートである。
【図１４】図１４は、生成される性能テーブルの一例を示す図である。
【図１５】図１５は、ステップＳ４０を詳細に示すフローチャートである。
【図１６】図１６は、生成されるコストテーブルの一例を示す図である。
【図１７】図１７は、ユーザービューデータの表示の一例を示す図である。
【図１８】図１８は、第２の動作例におけるサイジング対象であるクラスタの階層構造を示す概念図である。
【図１９】図１９は、下位リソースデータの一例を示す図である。
【図２０】図２０は、スケーラビリティデータの一例を示す図である。
【図２１】図２１は、単位性能データの一例を示す図である。
【図２２】図２２は、コストデータの一例を示す図である。
【図２３】図２３は、生成されるスケールテーブルの一例を示す図である。
【図２４】図２４は、生成される性能テーブルの一例を示す図である。
【図２５】図２５は、生成されるコストテーブルの一例を示す図である。
【図２６】図２６は、ステップＳ６０を詳細に示すフローチャートである。
【図２７】図２７は、ユーザービューデータの表示の一例を示す図である。
【図２８】図２８は、第３の動作例において生成される性能テーブルの一例を示す図である。
【図２９】図２９は、第３の動作例において生成されるコストテーブルの一例を示す図である。
【符号の説明】
【００９９】
１    サイジング支援システム
２    記憶装置
３    プロセッサ
４    入力装置
５    表示装置
６    ネットワークインタフェース
７    メディアドライブ
１０    下位リソースデータ
２０    スケーラビリティデータ
３０    単位性能データ
４０    コストデータ
７０    ユーザービューデータ
Ｔ１０    テーブルフレーム
Ｔ２０    スケールテーブル
Ｔ３０    性能テーブル
Ｔ４０    コストテーブル
１００    サイジング支援プログラム
１１０    テーブル定義モジュール
１２０    スケール評価モジュール
１３０    性能評価モジュール
１４０    コスト評価モジュール
１５０    フィールド算出モジュール
１６０    処理階層更新モジュール
１７０    ユーザービュー作成モジュール
【図１】
0004716259.tif 000002
【図２】
0004716259.tif 000003
【図３】
0004716259.tif 000004
【図４】
0004716259.tif 000005
【図５】
0004716259.tif 000006
【図６】
0004716259.tif 000007
【図７】
0004716259.tif 000008
【図８】
0004716259.tif 000009
【図９】
0004716259.tif 000010
【図１０】
0004716259.tif 000011
【図１１】
0004716259.tif 000012
【図１２】
0004716259.tif 000013
【図１３】
0004716259.tif 000014
【図１４】
0004716259.tif 000015
【図１５】
0004716259.tif 000016
【図１６】
0004716259.tif 000017
【図１７】
0004716259.tif 000018
【図１８】
0004716259.tif 000019
【図１９】
0004716259.tif 000020
【図２０】
0004716259.tif 000021
【図２１】
0004716259.tif 000022
【図２２】
0004716259.tif 000023
【図２３】
0004716259.tif 000024
【図２４】
0004716259.tif 000025
【図２５】
0004716259.tif 000026
【図２６】
0004716259.tif 000027
【図２７】
0004716259.tif 000028
【図２８】
0004716259.tif 000029
【図２９】
0004716259.tif 000030