まず、本実施例に係る資源計画の概念について説明する。図1は、本実施例に係る資源計画の概念を説明するための説明図である。図1の左側のグラフには、XXチケット販売会社の提供するWEBサービスに関する年間の負荷変動予測がプロットされている。
このグラフ内の水平の点線で示した高さがXXチケット販売会社の自社センタの保有資源量で処理できる負荷の量を表している。このグラフの負荷変動は2箇所のピークを持ち、いずれのピークにおいても自社センタ資源で処理できる負荷量(点線の高さ)を超えてしまっている。そこで、本実施例に係る資源計画では、ピーク時に自社センタ以外のデータセンタに派生サービスを発生させて点線を超えた分の負荷を肩代わりさせる。
ここで、左側のピークの発生期間においては、データセンタXでは資源が殆ど消費されていないのに対し、データセンタYでは大半の資源が他のサービスなどによって消費されている。従って、左側のピーク時にはデータセンタXに派生サービスを配置する。
一方、右側のピークの発生期間においては、データセンタXの大半の資源が他のサービスなどによって消費されており、データセンタYでは資源が殆ど消費されていないので、データセンタYに派生サービスを配置する。
すなわち、本実施例に係る資源計画では、複数個あるオリジナル・センタの内、運用中の原始サービスが低負荷となったことにより一時的に遊休資源が大量に余っているオリジナル・センタを選んで臨時の後方支援センタとして扱い、当該臨時の後方支援センタで、派生サービスを運用する。
このような運用形態に基づくならば、オリジナル・センタと後方支援センタの役割分担は各データセンタに固有のものではなく、データセンタXが原始サービスAを恒常的に運用しており、データセンタYが原始サービスBを恒常的に運用している場合、データセンタXは、原始サービスAにとっては常にオリジナル・センタとしての役割を持ち、原始サービスBにとっては後方支援センタとしての役割を持つ場合がある。以後、ここでは、オリジナル・センタと後方支援センタの役割分担は上記のようにサービスとの相対関係で決まるものとする。
ここで、多数のデータセンタがネットワークで繋がった環境で多数の原始サービスを運用しようとする際には、ある原始サービスが将来において過負荷になった際、どのデータセンタを派生サービス運用のための後方支援センタとして選択すればよいかが問題となる。つまり、将来発生することが予想される各派生サービスを各々どのデータセンタにいつ何時に配置すべきかが問題となる。
ただし、ある将来時点で発生している各派生サービスを各計算機クラスタへどのように配置するかについての最適解の探索については、計算量と計算時間を考慮する必要がある。例えば、データセンタが3個あり、ある将来時点で30個の派生サービスが同時に発生しているとすると、ある1個の派生サービスは、発生元の原始サービスのオリジナル・センタ以外の二つのデータセンタのどちらかに配置可能だから、30個の派生サービスの3個のデータセンタへの配置の仕方は2の30乗(10億以上)通りあることになる。
従って、これら全てを単純探索により評価するのは膨大な時間の無駄となり、派生サービス集合のデータセンタ集合への配置の最適解を発見するに当たっては、探索ステップ数ができるだけ少なく抑えられるような最適解探索手法が必要となる。
具体的には、データセンタ群と原始サービスの集合が与えられ、各原始サービスを運用するオリジナル・センタが指定された場合、派生サービスの将来発生時点を予め予測し、全てのデータセンタの計算資源利用効率が改善されるように、様々な時点で発生する各派生サービスを各々どのデータセンタで運用するか(派生サービスのセンタ配置)を最適化する必要がある(図2)。
また、派生サービス集合の構成や各派生サービスの処理する負荷量、各データセンタの資源消費状況などは時々刻々と変化するので、時間の経過に従って、派生サービス集合のデータセンタ群への配置の最適化を定期的にやり直す必要がある。上記の配置の最適化を定期的にやり直す際は、時間軸をタイムスロットと呼ぶ周期に分割し、各タイムスロット毎に最適な派生サービス配置を求める(図3)。
従って、最終的には、派生サービス集合のデータセンタ群への配置パターンの最適候補を一定時間周期毎(各タイムスロット毎)に求めて、それをタイムスロットの時刻順に時系列として並べた情報を出力する必要がある。この出力情報のことを以後、データセンタ群の資源計画と呼ぶ。
また、最適な派生サービス配置の時系列を探索するに当たって、同時発生する派生サービスの個数によっては、探索空間が巨大となり、単純探索では膨大な時間がかかるので、それを防ぐために、本実施例に係る資源計画では、以下の工夫をする。
探索対象の解は一般に複数個の指標によって評価され、それら全ての指標をなるべく最適にする解が最終的に選ばれなくてはならないが、探索空間の中から少なくとも一つの指標が最適であるような解から構成される集合(Pareto解集合)を絞り込み、そのPareto解集合の中から特定の基準によって任意の解を選び、その解を暫定解とする。
そして、後述するNDC入れ替え操作により、暫定解を漸近的に真の最適解に近づけてゆき、暫定解の評価値が一定の収束半径に入ったらその暫定解を最終的な最適解として出力する。
なお、データセンタが運用するサービスには、WEBサービスのようにユーザ・リクエストを受け付けてから数秒以内に応答を返さなくてはならないようなリアルタイム性を要求されるトランザクション型のサービスと、毎日、毎月といった一定の周期で決められた時刻に投入された複数のジョブ群を、予め定められたデッドライン時刻までに全て処理完了する必要のあるバッチ型のサービスがある。
バッチ型のサービスは複数個のジョブによって構成され、一般に複数回に分けて、各々決められた時刻に、複数個ずつのジョブがまとめてデータセンタに投入される。このジョブの投入スケジュールは一日周期や1ヶ月周期等の一定周期毎に繰り返される。ジョブの投入スケジュールは、そのバッチ型サービスの運用を委託した委託元業者によって事前に指定される。
バッチ型サービスに関しては、投入されたジョブ群が指定されたデッドライン時刻までに全て処理完了するのであれば、個々のジョブは、いつ何時処理されてもよく、いわばリアルタイム性を必要としない。
従って、データセンタ群で運用する原始サービス集合がトランザクション型のサービスとバッチ型のサービスの2種類のサービスから構成されている場合は、トランザクション型サービスがリアルタイム性を要求されるサービスであることを考慮し、データセンタ群の持つ計算資源は、トランザクション型サービスに優先的に割り当てる。
その後、トランザクション型サービスに割り当てられなかった余剰計算資源をバッチ型サービスの処理に割り当てるような資源計画の生成を行う必要がある。従って、データセンタ群の資源計画を生成するには、まず、トランザクション型の原始サービスのみを当該データセンタ群で運用したと仮定して資源計画の生成を行い、その資源計画においてトランザクション型サービスに割り当てられていない余剰計算資源に対し、バッチ型サービスの資源計画の生成を行う。
また、バッチ型原始サービスの負荷変動予測に関しては、バッチ型サービスのジョブ投入スケジュールが予め既知であることから、ARIMAモデル手法のような数理的な予測アルゴリズムによってサービスの将来負荷変動を予測するのではなく、将来の負荷変動の推移を特定のジョブ・スケジューリング・アルゴリズムによって計画することが出来る。
従って、バッチ型原始サービスの集合に関する資源計画の生成では、バッチ型原始サービスの将来の負荷変動は予測するのではなく、ジョブ・スケジューリング・アルゴリズムによって事前に計画されたものを用いるという形をとる。
具体的なジョブ・スケジューリング・アルゴリズムは、後述するが、当該スケジューリング・アルゴリズムの特徴は、バッチ型原始サービスを構成する各ジョブを、投入時刻の遅い順にスケジューリングしてゆき、スケジューリング対象となったジョブを、当該ジョブの投入時刻からデッドライン時刻までの間の時間帯の中でデータセンタ群の余剰計算資源の最も多い時刻に当該ジョブをスケジューリングするというものである。
このようなジョブ・スケジューリング・アルゴリズムを採用する理由は、バッチ型サービスの負荷の処理は、なるべくトランザクション型サービスによる負荷が空いている時を選んで行わせることにある。
次に、本実施例に係る資源計画作成装置の構成について説明する。図4は、本実施例に係る資源計画作成装置の構成を示す機能ブロック図である。同図に示すように、この資源計画作成装置100は、トランザクション計画部110と、バッチ計画部120と、資源計画送信部130とを有する。
トランザクション計画部110は、トランザクション型サービスに対して資源計画を作成する処理部であり、予測部111と、派生サービス生成部112と、DC生成部113と、NDC生成部114と、最適解探索部115とを有する。
なお、以下のトランザクション計画部110の説明において、サービス、原始サービスおよび派生サービスについては、特に断らない限り、トランザクション型のサービスを意味する。また、トランザクション型サービスの資源計画の生成においては、タイムスロットの長さはデータセンタ群の運営業者によって、データセンタ群全体で一意の値が手動で決定されるものとする。
予測部111は、運用すべき全ての原始サービスの負荷変動の将来予測を行う処理部である。ここで、予測の対象となる期間を以後、予測期間と呼び、その長さは、1日、1ヶ月、1年などである。
派生サービス生成部112は、予測部111による負荷変動予測とオリジナル・センタの保有資源量に基づいて、派生サービスの発生時刻、発生個数、各派生サービスと原始サービスとの間の負荷分配比率を求める処理部である。
派生サービスの発生条件としては以下のようなものが例として挙げられる。図5−1および図5−2は、派生サービスの発生条件を説明するための説明図(1)および(2)である。図5−1は、データセンタ内に配置された原始サービスのリソース使用率が90%を超えたときに派生サービスを発生させる場合を示している。
また、図5−2は、三つのデータセンタX、YおよびZのリソース使用率の平均を算出し、各データセンタのリソース使用率が平均の1.2倍以上になったときに派生サービスを発生させる場合を示している。
実際には、派生サービス生成部112は、各データセンタ毎に原始サービスによるリソース使用率の標準偏差を計算し、その値が一定の閾値を超えた時に派生サービスを発生させるという発生条件を採用している。
DC生成部113は、予測期間を一定周期のタイムスロットに分割し、各タイムスロット毎にタイムスロット内で発生する派生サービスをどのデータセンタに配置するかを定める配置組合せパターンの候補全てを生成する処理部である。
ここで、生成される配置組合せパターンの各候補のことをDC(Deployment Candidate)と呼び、タイムスロット(t)について生成したDCの集合に属するDCのことを、タイムスロット(t)に属するDCと呼ぶ。
NDC生成部114は、各タイムスロットに属するDCからVDC(Violating DC)を除外したNDC(Normal DC)を作成する処理部である。ここで、VDCとは、複数の評価指標m1, …, mkによる評価結果e1, …, ekが所定の条件に違反するDCであり、NDCとは、それ以外のDCである。
評価指標は、評価指標を用いて派生サービス群のデータセンタ群への配置組合せの最適化をすることにより、データセンタ群全体の資源利用効率が改善されるようなものであり、例えば、負荷の均等度(図6−1)、NDCの類似度(図6−2)などがある。なお、ここでは、評価値の値が小さいほど評価が良いものとする。
図6−1は、三つのデータセンタX、YおよびZにおいて負荷の配置が均等でなく悪い配置と負荷の配置が均等で良い配置とを示しており、配置が良いほど負荷の均等度の値は小さいものとする。
図6−2は、四つのデータセンタW、X、YおよびZの間での、タイムスロット(K−1)からタイムスロット(K)に移る際の派生サービスの移動およびタイムスロット(K)からタイムスロット(K+1)に移る際の派生サービスの移動を示しており、ここでは、時間の経過に伴うタイムスロットの遷移時におけるサービス移動個数が多いほどNDCの類似度の値は大きいものとする。
最適解探索部115は、Pareto最適性理論に基づいて最適なNDC系列を作成する処理部である。ここで、NDC系列とは、各タイムスロットからNDCを一つずつ選んでタイムスロット順に時系列に並べたものである。すなわち、最適なNDC系列を作成することが最適な資源計画を作成することとなる。
具体的には、この最適解探索部115は、NDC系列毎に、それを構成する各NDCのk個の評価値e1, …, ekの各々をNDC系列全体にわたって合計して系列評価値E1, …, Ekとする。
そして、k個の系列評価値E1, …, Ekの中で、いずれか一つ以上の系列評価値が最小の値となるものを全て選び出し、初期系列集合とする。この初期系列集合は、NDC系列の集合を解空間とし、k個の系列評価値E1, …, Ekの各々を目的関数とした時の多目的最適化問題におけるPareto解集合に相当する。
そして、求めた初期系列集合の中から系列評価関数ξの値が最小となるようなNDC系列を選び出し、準最適NDC系列とする。そして、各タイムスロット毎に、準最適NDC系列を構成する各NDCを、当該NDCと同一のタイムスロットに属する他の全てのNDCと比較し、以下の入れ替え条件が成り立つ場合には、前者のNDCを後者のNDCと入れ替える操作を行う。
ここで、ei(Tp,c)は準最適NDC系列内のタイムスロットTpに属するNDCについてのeiの値であり、ei(Tp,o)はタイムスロットTpに属するNDCであって準最適NDC系列に含まれないNDCについてのeiの値と定義する。
そして、タイムスロットTpに属する準最適NDC系列内のNDCのk個の全ての評価値について、ei(Tp,c) ≧ ei(Tp,o) (1 ≦ i ≦ k)となる場合はNDCの入れ替えを行う。つまり、NDCの入れ替えの結果、k個の評価値の組を構成する全ての評価値に関して評価値が改善される場合はNDCの入れ替えを行う。
また、次の場合にもNDCの入れ替えを行う。k個の評価値の組を構成する評価値の中で、一部の評価値が入れ替えにより改善され、その他の評価値が改悪される場合、改善される評価値の改善量に入れ替え制御関数を適用した値の重み付け平均が、改悪される評価値の改悪量に入れ替え制御関数を適用した値の重み付け平均より上回るならば入れ替えを行うというものである。
つまり、整数の集合I=[i|1≦i≦k]が二つの部分集合I1とI2に分割でき、i ∈ I1の場合にe
i(T
p,c) ≦ e
i(T
p,o)であり、i ∈ I2の場合にe
i(T
p,c)>e
i(T
p,o)であるとき、以下の式(1)
が成り立つならば、NDC入れ替え操作を実行する。ここで、φ
iは重み係数、Δe
i(T
p) = e
i(T
p,c)−e
i(T
p,o)、δe
i(T
p) = e
i(T
p,o)−e
i(T
p,c)、Λ
iおよびλ
iは評価値e
iに関する入れ替え制御関数である。
そして、NDCの入れ替えによって修正された準最適NDC系列を系列評価関数ξで評価し、NDC入れ替え操作を行う以前の準最適NDC系列のξで評価した値と比較し、改善率が一定の閾値を下回ったら準最適NDC系列をデータセンタ群の資源計画とし、そうでなければ、NDC入れ替えによって修正されたNDC系列を新たな準最適NDC系列としてNDCの入れ替えを繰り返す。
ここで、図7〜図12を用いてこの最適解探索部115の処理の具体例について説明する。図7は、最適解探索部115による最適化手順の概略を説明するための説明図である。なお、ここでは、評価指標として負荷の均等度とNDCの類似度を用いる。
同図に示すように、この最適解探索部115は、最適化ステップ(1)として、NDCの類似度に基づいて暫定解の初期候補群を生成し、最適化ステップ(2)として、暫定解の初期候補群を負荷の均等度とNDCの類似度を用いて評価し、評価値が最小のものを暫定解とする。
そして、最適化ステップ(3)として、暫定解に対するNDCの入れ替えによってより良い暫定解を生成し、最適化ステップ(4)として、収束条件を満たすか否かを判定し、収束条件を満たす場合には、暫定解を最終解として出力し、収束条件を満たさない場合には、最適化ステップ(3)に戻って収束条件を満たすまでNDCの入れ替えを繰り返す。
図8は、最適化手順の説明に用いるNDCテーブルの概念を説明するための説明図である。同図に示すように、NDCテーブルとは、各タイムスロットに属するNDCを負荷均等度の良い順に並べたものである。以下、このNDCテーブルを用いて各最適化ステップを説明する。
図9は、最適化ステップ(1)を説明するための説明図である。同図に示すように、この最適化ステップでは、隣接するタイムスロット間で「NDCの類似度=0」となるNDC同士を接続して類似NDC系列を生成する。例えば、図9では、タイムスロット(0)のNDC(1)を先頭とする類似NDC系列、タイムスロット(0)のNDC(2)を先頭とする類似NDC系列などの複数の類似NDC系列が得られる。
なお、NDC同士を接続する場合に、「NDCの類似度=0」となるNDCがない場合には、NDCの類似度が最も小さいNDCを選択する。この結果、生成された類似NDC系列は、NDCの類似度を評価指標とし、この評価指標の値が最も小さいNDC系列であり、これらを暫定解の初期候補群とする。また、各タイムスロットで最小の負荷均等度を持つNDCから構成されるNDC系列は、系列全体としての負荷均等度の合計が最小のNDC系列であり、これも暫定解の初期候補群に含める。
図10は、最適化ステップ(2)を説明するための説明図である。同図に示すように、この最適化ステップでは、負荷均等度およびNDCの類似度を評価指標として全ての類似NDC系列を評価し、系列評価値Ecが最小の最良類似NDC系列を暫定解とする。
図11−1は、最適化ステップ(3)を説明するための説明図である。同図に示すように、この最適化ステップでは、暫定解の各タイムスロットにおいて、暫定解に含まれるNDC以外のNDCが所定の条件を満たす場合に、NDCを入れ替える。
ここで、所定の条件とは、図11−2に示すように、負荷均等度およびNDCの類似度を同時に改善するNDCがある場合には、そのタイムスロットでの評価値Eiの値が最小のものを選んで入れ替えを行う。
また、どちらか一方だけが改善する場合には、以下のようにする。負荷均等度だけが改善するときは、NDCの類時度の悪化量ΔSを所定の関数で評価した値BL(ΔS)よりも、負荷均等度の改善量ΔLの方が大きいNDCの中でΔL−BL(ΔS)の値が最大のものを選び、類似度だけが改善するときは、類似度の改善量ΔSを所定の関数で評価した値BL(ΔS)よりも、負荷均等度の悪化量ΔLの方が大きいNDCの中でBL(ΔS)−ΔLの値が最大のものを選んで入れ替えを行う。
図12は、最適化ステップ(4)を説明するための説明図である。同図に示すように、この最適化ステップでは、NDC入れ替え処理を施した最良類似NDC系列の系列評価値Ecの改善率を調べ、改善率が例えば3%以内であれば収束条件を満たしたものとして最終解を出力し、収束条件を満たさない場合には、最適化ステップ(3)に戻って、入れ替え処理を繰り返す。
このように、NDCの類似度に基づいてNDC系列の初期候補群を生成し、初期候補群から系列評価値Ecが最小の最良類似NDC系列を暫定解とし、NDCの入れ替えによって暫定解を改善することによって、最適なNDC系列を求めることができる。なお、ここでは、負荷均等度およびNDCの類似度の二つの評価指標を用いたが、一般には、任意の個数の評価指標を用いることができる。また、収束条件に用いる改善率も3%以外の他の値を用いることができる。
バッチ計画部120は、バッチ型の原始サービス集合について資源計画の生成を行う処理部であり、負荷量算出部121と、バッチ型派生サービス生成部122と、バッチ型DC生成部123と、バッチ型NDC生成部124と、バッチ型最適解探索部125とを有する。
なお、以下のバッチ計画部120の説明では、ジョブの投入スケジュールは1日周期で繰り返され、予測期間の長さが1日のトランザクション型サービスについての資源計画が得られていると仮定して説明する。
また、あるバッチ型サービスの1個のジョブを標準的な性能のサーバ1台で処理するのに必要な時間を「ターンアラウンド時間」と呼び、この時間の長さはバッチ型サービス毎に一意に定まる。
また、標準的な性能のサーバ1台が捌くことの出来る負荷量を「単位サーバ性能」と呼ぶ。デッドライン時刻とターンアラウンド時間は各バッチ型原始サービス毎に一意の値が定まる。また、バッチ型サービスの個々のジョブの投入時刻と予測期間の開始時刻の時間差は当該バッチ型サービスのターンアラウンド時間の整数倍とする。
負荷量算出部121は、将来の負荷量を算出する処理部である。具体的には、この負荷量算出部121は、以下の手順で将来の負荷量を算出する。まず、全てのバッチ型原始サービスのターンアラウンド時間の最小公倍数を求め、この値を新たなタイムスロットの長さとする。
そして、各データセンタ毎、各計測周期毎に、当該計測周期において当該データセンタに存在する(トランザクション型サービスに割り当てられなかった)余剰資源量で捌くことの出来る負荷量を単位サーバ性能で除算し、余剰資源量を標準性能サーバ台数の表現に換算する(以後これを、余剰サーバ台数と呼ぶ)。
そして、予測期間内における各バッチ型原始サービスの将来負荷変動を0で初期化する。その後、各バッチ型原始サービス毎に、各バッチ型サービスのジョブ投入スケジュールが、「時刻t1にn1件のジョブを投入、t2にn2件を投入、…、tkにnk件を投入」となっている時、1≦i≦kである各整数iについて以下の(S1)〜(S5)を実行する。ただしt1>t2>…>tkとする。
(S1)時刻tiから当該バッチ型原始サービスのデッドライン時刻までの期間(これをスケジュール期間と呼ぶ)を当該バッチ型原始サービスのターンアラウンド時間の長さを持つタイム・クォンタムに分割する。
(S2)各データセンタの各タイム・クォンタム毎に余剰サーバ台数が最小となる計測周期を求め、その時の余剰サーバ台数をそのタイム・クォンタムの余剰サーバ台数とする。
(S3)各タイム・クォンタムにおいて、余剰サーバ台数が最大であるデータセンタを検索し、当該データセンタをそのタイム・クォンタムにおける最大センタとし、各タイム・クォンタム毎に全データセンタにわたって余剰サーバ台数を合計し、その合計値を、当該タイム・クォンタムのR値とする。
(S4)R値が最大となるタイム・クォンタムを検索し、当該タイム・クォンタムにおける最大センタの余剰サーバ台数の値を1だけ減算し、当該タイム・クォンタムについて最大センタとR値を求めなおすとともに、当該バッチ型原始サービスの将来負荷変動の当該タイム・クォンタムに対応する部分の負荷量に、単位サーバ性能と等しい負荷量を加算する。
(S5)niから1を減算し、ni>0なら(S3)に戻る。
バッチ型派生サービス生成部122は、負荷量算出部121により算出された将来負荷変動を表す負荷量に基づいてバッチ型派生サービスを発生させる処理部である。具体的には、このバッチ型派生サービス生成部122は、各バッチ型原始サービスについて、将来負荷変動を表す負荷量に基づいて、当該バッチ型原始サービスからバッチ型派生サービスが発生する時刻を定める。
その際、当該バッチ型原始サービスから適切な個数のバッチ型派生サービスを発生させ、バッチ型原始サービスの負荷量をそれらのバッチ型派生サービスの間で適切に分配するものとする。そして、各タイムスロット毎に、そのタイムスロット内で発生するバッチ型派生サービスの集合を生成する。
バッチ型DC生成部123は、各タイムスロット毎に、そのタイムスロットで発生するバッチ型派生サービス集合のデータセンタ群への配置組合せパターンの全ての候補(DC)を生成する処理部である。
バッチ型NDC生成部124は、DCからVDCを除いたNDCを作成する処理部である。すなわち、このバッチ型NDC生成部124は、各タイムスロット毎に、評価指標m1,…,mkに基づいて、当該タイムスロットに属する各DCを評価し、各DCについての評価値e1,…,ekを計算する。
そして、各タイムスロット毎に、そのタイムスロットに属する各DCを評価値e1,…,ekに基づいてNDCとVDCに分類し、VDCを当該タイムスロットに属するDCの集合から除く。
バッチ型最適解探索部125は、バッチ型資源計画を作成する処理部である。すなわち、このバッチ型最適解探索部125は、NDC系列の集合から、トランザクション型サービスの場合と同様の手法でPareto解集合(初期系列集合)を生成し、初期系列集合の中から系列評価関数の値の最小となるNDC系列を選び、準最適NDC系列とする。
そして、準最適NDC系列内の各タイムスロットに対応するNDCをNDCの入れ替え操作(トランザクション型サービスの場合と同様)によって入れ替え、NDC入れ替え操作の前後の準最適NDC系列の系列評価関数の値を比較し、改善率が3%以下なら準最適NDC系列をバッチ型資源計画とし、そうでなければNDCの入れ替えを繰り返す。
資源計画送信部130は、作成した資源計画をインターネット20を介して接続されるn個のデータセンタ101〜10nに送信する処理部である。各データセンタは、この資源計画送信部130により送信された資源計画にしたがってサービスの運用を行う。
次に、図3に示したトランザクション計画部110の処理手順について説明する。なお、以下では、トランザクション型サービスの例としてXMLベースのWEBサービスを仮定し、原始サービスは全てWEBサービスであるとする。
また、原始サービスの負荷変動予測の対象となった予測期間を表す時間軸は一定周期のタイムスロットに分割され、各タイムスロットは原始サービスの負荷を計測する周期である計測周期に分割される。そして、予測期間に含まれるタイムスロットの全数をNt、予測期間内の(時間軸上の時刻の早いほうから数えて)i番目のタイムスロットをTiと表す。
また、時刻tにおけるサービスの負荷量は、時刻tに当該サービスに到着する毎秒当りのユーザ・リクエスト数とする。ここで、データセンタの集合をC=[ci|1≦i≦Nc]、原始サービスの集合をP=[pi|1≦i≦Np]、タイムスロットTiの期間内において発生している全ての派生サービスの集合をD(Ti)=[d(Ti,j)|1≦j≦n(Ti)]、DCを評価するためのk個の評価指標の組を[m1, m2, …, mk]、k個の評価指標でDCを評価したk個の評価値の組を[e1, e2,…, ek]、NDC系列を構成する各NDCのeiをNDC系列全体にわたって合計したものを系列評価値Ei、タイムスロットTiに属するNDCの集合をΓ(Ti)=[γ(Ti,j)|1≦j≦ν(Ti)]、NDC系列全体の集合をSとする。
また、あるNDC系列s∈Sを構成するNDCでタイムスロットTiに属するNDCを
γs(Ti,j)と書き、またNDCγ(Ti,j)について計算した評価値eiの値をei(γ(Ti,j))と書く。従って、NDC系列の一つのインスタンスs∈Sは、s = <γs(T1,j1), γs(T2,j2), γs(T3,j3), … , γs(TNt-1,jNt-1), γs(TNt,jNt)>と表わされる。
また、データセンタciが原始サービスpjのオリジナル・センタであることをpj ⇒ ci等と表し、ciの全資源量を使って捌くことが出来る負荷量(毎秒リクエスト数)をR(ci)と表す。
また、ここでは、DCを評価する評価指標として以下に定義する三つの指標m1,m2,m3を採用した。ここで、m1は派生サービスを評価対象のDCに従って配置した場合のデータセンタ群全体の負荷の均等度合いを表す。データセンタ群の各データセンタで用意しておくべきピーク時必要資源量を最小化するには、予測期間全体にわたって、全てのデータセンタの間で負荷量を均等に分散すればよいからである。
また、m2は派生サービス間通信量を表す。各原始サービスがXMLベースのWEBサービスである場合、原始サービス同士がSOAPプロトコルによって互いに通信しあうケースが考えられる。このような場合、それらの原始サービスから発生した派生サービス同士もSOAP通信を行うことになる。
従って、あるDCに従って各派生サービスを配置先データセンタに配置した際、互いに頻繁に大量のデータをSOAP通信でやり取りするような複数の派生サービスの各々が異なるデータセンタに配置されることとなった場合、データセンタ間の通信量が大幅に増大する。
そして、通信路の帯域幅が不足することによりSOAP通信の通信遅延が増大すると、結果として各データセンタに対して不必要な負荷をかけることになる。そのため、DCの評価指標として派生サービス間通信量m2を採用した。
また、m3はNDCの類似度を表す。タイムスロットTiに属するNDC γ(Ti,j1)の類似度の定義は次の通りである。あるNDC系列が定められたとき、NDC系列を構成するNDCで、タイムスロットTi-1に対応するNDC をγ(Ti-1,j0) 、タイムスロットTiに対応するNDC をγ(Ti,j1)、タイムスロットTi+1に対応するNDC をγ(Ti+1,j2)としたとき、時間の経過に従ってタイムスロットがTi-1からTiに遷移する際には、派生サービス集合のデータセンタ群への配置がγ(Ti-1,j0)からγ(Ti,j1)へと変更になるに伴って、派生サービス集合[D(Ti-1)∩D(Ti)]に属する幾つかの派生サービスは、あるデータセンタから別のデータセンタへ移動させられる場合がある。
また、タイムスロットがTiからTi+1に遷移する際にも同様に派生サービス配置がγ(Ti,j1)からγ(Ti+1,j2)へと変更になるに伴い、[D(Ti)∩D(Ti+1)]に属する幾つかの派生サービスがデータセンタ間を移動させられる場合がある。
そこで、タイムスロットTiに対応するNDC系列内のNDC γ(Ti,j1)の類似度は、タイムスロットがTi-1からTiに遷移する時に上記の理由によりデータセンタ間を移動させられる派生サービスの個数とタイムスロットがTiからTi+1に遷移する時にデータセンタ間を移動させられる派生サービスの個数を合計したものとする。
すなわち、あるNDCの類似度が大きいということは、そのNDCに従って派生サービスを配置すると、タイムスロットの遷移に伴う派生サービスの移動回数が多くなり、その分だけデータセンタ群に対してサービス移動のための制御負荷をかけることになる。
その結果、各データセンタが本来なら処理する必要のない負荷まで大量に担わされることになってしまうため、NDCの類似度をNDCの評価指標の一つとして採用する必要がある。なお、m3はm1,m2と異なり、NDC単体では評価できず、NDC系列が指定されて初めて評価することができる。
図13は、図3に示したトランザクション計画部110の処理手順を示すフローチャートである。同図に示すように、このトランザクション計画部110は、まず、予測部111が、1≦i≦Npとなる全ての整数iについて、piの予測期間全体にわたる負荷変動予測をARIMAモデル予測などの既存の予測手法を用いて予測する(ステップS101)。なお、piの負荷変動予測はpiの負荷量の時間関数として表され、時刻tにおけるpiの負荷量は
θi(t)と表すことにする。
そして、派生サービス生成部112が、負荷変動予測およびオリジナル・センタの資源量に基づいて派生サービスを発生させる(ステップS102)。なお、負荷変動予測に基づく派生サービスの発生のさせ方の詳細については後述する。そして、1≦i≦Ntとなる各整数iについてTiの期間中に発生すると予測された派生サービスの集合D(Ti)を生成する(ステップS103)。
そして、DC生成部113が、1≦i≦Ntとなる各整数iについて、D(Ti)に属する各派生サービスのデータセンタ群Cへの可能な配置組合せの全ての候補(DC)を木探索アルゴリズムによって生成し、タイムスロットTiについて生成した配置組合せの候補の集合をΓ(Ti)とする(ステップS104)。
そして、NDC生成部114が、1≦i≦Ntとなる各整数i、1≦j≦ν(Ti)となる各整数jの全ての組み合わせについてγ(Ti,j)∈Γ(Ti)を評価指標m1,m2で評価し、評価値e1,e2を求める(ステップS105)。なお、γ(Ti,j)についてe1およびe2を計算する手順の詳細は後述する。
そして、1≦i≦Ntとなる各整数i、1≦j≦ν(Ti)となる各整数jの全ての組み合わせについて、e1(γ(Ti,j)) > 0.7またはe2(γ(Ti,j)) > 0.8ならばγ(Ti,j)をVDCとし、集合Γ(Ti)から取り除く。そうでなければ、γ(Ti,j)をNDCとし集合Γ(Ti)に残す(ステップS106)。
そして、最適解探索部116が、NDC系列集合Sを定義し(ステップS107)、NDC系列集合Sに含まれるNDC系列でk個の系列評価値E1(s),E2(s),E3(s)のいずれか一つ以上が最小値をとるNDC系列sを全て探し出し、初期系列集合の要素とする(ステップS108)。
ただし、
とする。なお、NDC系列集合Sから初期系列集合(Pareto集合)を抽出する手順の詳細は後述する。
そして、初期系列集合に属するNDC系列を系列評価関数ξ(s)で評価し、その評価値が最小となるNDC系列を準最適NDC系列σとする(ステップS109)。ただし、k=3で
とする。また、K
1=1.0, K
2=1.0, K
3=0.1とした。
そして、1≦i≦Ntとなる各整数iに対応するタイムスロットTiついてNDCの入れ替え処理を行い(ステップS110)、NDCの入れ替えを行う前の準最適NDC系列をσ'、NDC入れ替え後の準最適NDC系列をσとして改善率|ξ(σ')−ξ(σ)|/ξ(σ')を算出する(ステップS111)。なお、NDCの入れ替え処理の詳細については後述する。
そして、改善率が0.03以下であるか否かを判定し(ステップS112)、改善率が0.03以下である場合には、σをデータセンタ群Cの資源計画として出力し、全ての処理を終える(ステップS113)。そうでなければ、σを新たなσ'としてステップS110に戻る。
このように、派生サービス生成部112が生成した派生サービスに対して最適解探索部115がPareto最適化理論に基づいて最適NDC系列を生成することによって、データセンタ群に対する最適な資源計画を作成することができる。
次に、派生サービス生成部112による派生サービス生成の詳細について説明する。派生サービス生成部112は、全ての計測周期について、各計測周期毎に次の(S1)〜(S3)を行う。
(S1)計測周期の中心時刻t、1≦i≦N
cとなる整数iについて、p
j ⇒ c
iとなる全てのjについて
を求め、集合[Θ
i / R(c
i)|1≦i≦N
c ]を標本分布と見なした時の標準偏差を計算し、当該標準偏差が0.1以下であれば(S3)へ、そうでなければ(S2)へ行く。
(S2)1≦i≦Ncとなる各整数iについてpiの時刻tにおける負荷量の一部を派生サービスとして分割する。ここで、派生サービスへの負荷量の分割のしかたは次の通りである。
各原始サービスから派生サービスがNc-1個ずつ発生したと仮定し、各派生サービスの仮のセンタ配置を定める。仮定した派生サービスと原始サービスの負荷量の分配比率は次のようにして求める。
線形計画法を用いて上記の分配比率を最適化し、次の条件が満たされるようにする。各派生サービスを上記の仮のセンタ配置で配置した際、各データセンタci(1≦i≦Nc)について、そこで運用している原始サービスと派生サービスの負荷量の合計をgiとした時の、標本集合[gi / R(ci)|1≦i≦Nc]の標準偏差が0.1以下になるようにする。
もし整数計画法によって上記の条件を充足する分割比率が得られなかった場合は、各派生サービスの仮のセンタ配置をランダムに変更して、再び整数計画法による分割比率の最適化を行うことを繰り返すことにより、各原始サービスについて派生サービスに分割する負荷量の分割比率を求める。
ただし、Nc>5であった場合でも一つの原始サービスから同時に発生可能な派生サービスの個数の上限は4個とする。ある派生サービスについて上記の方法で決定した分配比率が0であった場合、その派生サービスは存在しないものとして扱う。
(S3)次の計測周期に移り、新たな計測周期について(S1)を開始する。
次に、γ(Ti,j)についてe1を計算する手順の詳細について説明する。タイムスロットTi内に含まれる計測周期の中心時刻の集合を[ti h|1≦h≦Nm]とする。すなわち、タイムスロットTiの開始時点からh番目の計測周期の中心時刻をti hとし、一つのタイムスロット内にはNm個の計測周期が含まれるとする。
データセンタcr(1≦r≦Nc)に配置されている全サービスの時刻tにおける負荷量合計をgr(t)とすると、γ(Ti,j)に対するeiの値は以下のようにして求まる。
まず、1≦r≦N
cである各整数rについてセンター毎負荷量合計値の時系列[g
r(t
i h)| 1≦h≦N
m ]を求め、1≦r≦N
cである各整数rについて時系列[g
r(t
i h)/R(c
r)| 1≦h≦N
m ]の時間軸上の平均値
を求める。
そして、集合[μ(0,i), μ(1,i), μ(2,i), …,μ(Nc,i)]を標本分布と見なした時の標準偏差を計算し、この標準偏差をγ(Ti,j)に対するeiの値とする。
次に、γ(Ti,j)についてe2を計算する手順の詳細について説明する。まず、評価対象NDCの属するタイムスロットT内の各計測周期について各データセンタ毎に、サービス間のSOAP通信による通信量をbpsの単位で見積もる。
そして、データセンタ毎に、その見積もり通信量を、当該データセンタと外部ネットワークを繋ぐ通信路の帯域幅の値(bps単位)で除算した値(以下、通信路占有率と呼ぶ)を求める。
そして、計測周期毎の通信路占有率をタイムスロットT全体にわたって平均した値を各データセンタについて計算する。当該平均値が最大となるデータセンタでの当該平均値をe2の値とする。
なお、互いに通信しあう原始サービス同士の関係が、図14に示すようなものであるとき、データセンタciにおける計測周期がtの時の、サービス間のSOAP通信の通信量の見積もり手順の例を以下に示す。
ここで、e2による評価対象となっているNDCにおいて配置先データセンタが指定されている派生サービスの集合をD=[dk|1≦k≦Nd]、dkの配置先データセンタがciであることをdk ⇒ ci等と表す。また、サービスXの負荷量を毎秒リクエスト数で表した値をL(X,t)と表す。また、原始サービスpjがdkの派生元の原始サービスであることを、pj↑dk等と表す。
まず、図14の1段目と2段目の間の通信量の見積もりで、計測周期tの時のデータセンタciにおける値B1(ci,t)を求める。まず、B1(ci,t)を0で初期化し、以下の四つの場合に分けて考える。
(1) p1 ⇒ ciかつp2 ⇒ ciの場合
B1(ci,t)= B1(ci,t)+|L(p1,t)×ω1 − L(p2,t)|とする。
(2) p
1 ⇒ c
iであり、p
2 ⇒ c
iでない場合
(p
2↑d
h)∧(d
h⇒c
i)となる全ての添字hの集合をHとすると
(3) p
2 ⇒ c
iであり、p
1 ⇒ c
iでない場合
(p
1↑d
h)∧(d
h⇒c
i)となる全ての添字hの集合をHとすると
(4) p
1 ⇒ c
iでなく、p
2 ⇒ c
iでもない場合
(p
1↑d
h)∧(d
h⇒c
i) となる全ての添字hの集合をHとし、(p
2↑d
k)∧(d
k⇒c
i)となる全ての添字kの集合をKとすると
その次に、図14の2段目と3段目の間の通信量の見積もりで、計測周期tの時のデータセンタciにおける値B2(ci,t)を求める。まず、B1(ci,t)を0で初期化し、以下の四つの場合に分けて考える。
(1) p2 ⇒ ciかつp3 ⇒ ciの場合
B2(ci,t)= B2(ci,t)+|L(p2,t)×ω2 − L(p3,t)|とする。
(2) p
2 ⇒ c
iであり、p
3 ⇒ c
iでない場合
(p
3↑d
h)∧(d
h⇒c
i)となる全ての添字hの集合をHとすると
(3) p
3 ⇒ c
iであり、p
2 ⇒ c
iでない場合
(p
2↑d
h)∧(d
h⇒c
i)となる全ての添字hの集合をHとすると
(4) p
2 ⇒ c
iでなく、p
3 ⇒ c
iでもない場合
(p
2↑d
h)∧(d
h⇒c
i) となる全ての添字hの集合をHとし、(p
3↑d
k)∧(d
k⇒c
i)となる全ての添字kの集合をKとすると
ここで、ω(ci,t)=ω1(ci,t)+ω2(ci,t)とすることで、計測周期tの時のデータセンタciにおける見積もり通信量ω(ci,t)が得られる。
次に、NDC系列集合Sから初期系列集合(Pareto集合)を抽出する手順の詳細について説明する。まず、系列評価値E1(s)を最小にするようなs∈Sを求める。このようなsは一般に複数個存在する。
具体的には、1≦i≦Ntとなる各整数iについてΓ(Ti)に属する全てのNDCを配列に格納して、e1の値をキーとしてその配列をソーティングし、Γ(Ti)内でe1の値が最小となるNDCの集合Γb(Ti)を生成する。そして、直積集合Γb(T0)×Γb(T1)×…×Γb(TNt)に属する各NDC系列を系列評価値E1(s)を最小にするようなs∈Sとする。
その次に、系列評価値E2(s)を最小にするようなs∈Sを求める。すなわち、1≦i≦Ntとなる各整数iについてΓ(Ti)に属する全てのNDCを配列に格納して、e2の値をキーとしてその配列をソーティングし、Γ(Ti)内でe2の値が最小となるNDCの集合Γb(Ti)を生成する。そして、直積集合Γb(T0)×Γb(T1)×…×Γb(TNt)に属する各NDC系列を系列評価値E2(s)を最小にするようなs∈Sとする。
その次に、系列評価値E
3(s)を最小にするようなs∈Sを求める。ここで時間軸全体にわたるNDCの集合Γを以下のように定義する。
そして、1≦k≦NAとなる各整数kと1≦i≦Ntとなる各整数iの全ての組合せについて以下の処理を行う。集合Γ(Ti)内のNDCを検索して、γ(Ti,j)∈Γ(Ti),1≦j≦ν(Ti)で、γkとγ(Ti,j)を比較した時の相対類似度が最小となるような添字jk iの値を求める。
ここで、相対類似度とは、二つのNDCを比較した時、二つのNDCの指定する派生サービス配置の両方に共通に含まれている派生サービスの中で、一方のNDCで指定されている配置先データセンタと他方のNDCで指定されている配置先データセンタが異なるような派生サービスの個数を表す。
そして、1≦k≦NAとなる各整数kについて以下のように表されるNDC系列s(k) = <γ(T0,jk 0),γ(T1,jk 1),…,γ(TNt,jk Nt)>を求める。
最後に、集合[s(k)|1≦k≦NA]に含まれるNDC系列s(k)の内E2(s(k))の値が最小となるものを選び出す。
上記のようにしてE1(s),E2(s),E3(s)の内のいずれかが最小値となるNDC系列を全てSの中から選び出し、Pareto集合(初期系列集合)の要素とする。
次に、NDCの入れ替え処理の詳細について説明する。NDCの入れ替え処理としては以下の(S1)〜(S3)を行う。
(S1)集合Γ(Ti)内を探索して、γσ(Ti,j1)とγ(Ti,j2)(ただしj1≠j2とする)の間に以下の関係が成り立つようなj2を求める。
e1(γσ(Ti,j1)) > e1(γ(Ti,j2))
e2(γσ(Ti,j1)) > e2(γ(Ti,j2))
e3(γσ(Ti,j1)) > e3(γ(Ti,j2))
上記の条件を満たすj2が見つかった場合は、γσ(Ti,j1)とγ(Ti,j2)を入れ替えることにより、γ(Ti,j2)をNDC系列σ内のタイムスロットTiに対応するNDCとし、(S3)に進む。上記の条件を満たすj2が見つからないときには(S2)に進む。
(S2)集合Γ(T
i)内を探索して、γσ(T
i,j
1)とγ(T
i,j
2)(ただしj
1≠j
2とする)の間に以下の関係が成り立つようなj
2を求める。
ここで、I1,I2は整数集合[h|1≦h≦3]を共通部分の無い2つに分割した部分集合でh ∈ I1の時にeh(γσ(Ti,j1)) ≦ eh(γ(Ti,j2))であり、h ∈ I2の時にeh(γσ(Ti,j1)) > eh(γ(Ti,j2))であり、また、Δeh = eh(γσ(Ti,j1))−eh(γ(Ti,j2)),δeh= eh(γ(Ti,j2))−eh(γσ(Ti,j1))である。
上記の条件を満たすj2が見つかった場合は、γσ(Ti,j1)とγ(Ti,j2)を入れ替えることにより、γ(Ti,j2)をNDC系列σ内のタイムスロットTiに対応するNDCとする。上記条件を満たすj2が見つからない場合は、タイムスロットTiについてはNDCの入れ替えを行わない。ここで、λ1,λ2,λ3,Λ1,Λ2,Λ3の定義及び、φ1,φ2,φ3の値は以下の通りとする。
λ1(x)=x λ2(x)=x λ3(x)=0.1×exp(1.3x)
Λ1(x)=x Λ2(x)=x Λ3(x)=0.1×exp(1.3x)
φ1=1.0 φ2=1.0 φ3=1.0
ただし、exp( )は自然対数の底を基数とする指数関数である。
(S3)i = i+1として次のタイムスロットに移り、(S1)に戻る。
次に、図3に示したバッチ計画部120の処理手順について説明する。バッチ型サービスの例としては、コンビニエンス・ストアの各店舗の売り上げ情報の集計処理のための計算サービスなどが考えられる。
以下、ここでは、バッチ型原始サービスの集合をP=[pi|1≦i≦Np]、piの各ジョブのターンアラウンド時間をτi、データセンタciにおいて、ciに配置されている全サービスの負荷量の合計がピークとなる時の、ciの必要資源量を毎秒リクエスト数で表したものをRmax(ci)、データセンタciの資源の内、時刻tにおいてWEBサービスに割り当てられずに残っている余剰計算資源量をR(ci,t)、単位サーバ性能の値をfとし、他の記号の定義などはトランザクション計画部110の処理手順の説明に用いた時と同様とする。
また、ここでは、piの各ジョブの投入時刻と予測期間の開始時刻との時間差はτiの整数倍であるとし、τiはトランザクション型サービスの負荷の計測周期の整数倍であるとする。
また、バッチ型サービスに関する資源計画の生成では、NDCを評価する指標として、WEBサービスの資源計画生成で採用した評価指標の内、m1とm3のみを採用する。何故なら、バッチ型サービス同士がSOAP通信を行うことは通常はありえないので、サービス間のSOAP通信量に関する評価指標であるm2は考慮する意義がないからである。
図15は、図3に示したバッチ計画部120の処理手順を示すフローチャートである。同図に示すように、このバッチ計画部120は、まず、負荷量算出部121が、τ1,τ2,…,τNpの最小公倍数を求め、その値をタイムスロットの長さとする(ステップS201)。
そして、時間軸をタイムスロットに分割し、1≦i≦Ncとなる各整数iについて、η(ci,t)=R(ci,t) / fとし、後述するジョブ・スケジューリング・アルゴリズムにより、各バッチ型原始サービスpi(1≦i≦Np)について、将来負荷変動を計画する(ステップS202)。なお、piに関する将来負荷変動は時系列データとして生成され、将来時刻tにおけるpiの負荷量をθ(i,t)と表す。
そして、バッチ型派生サービス生成部122が負荷量算出部121が算出した負荷量に基づいてバッチ型派生サービスを発生させる(ステップS203)。なお、バッチ型派生サービス生成部122によるバッチ型派生サービス発生の詳細については後述する。
そして、1≦i≦Ntとなる各整数iについて、Tiの期間中に発生すると予測された派生サービスの集合D(Ti)を生成する(ステップS204)。
そして、バッチ型DC生成部123が、1≦i≦Ntとなる各整数iについて、D(Ti)に属する各派生サービスのデータセンタ群Cへの可能な配置組合せの全ての候補(DC)を木探索アルゴリズムによって生成し(ステップS205)、タイムスロットTiについて生成した配置組合せの候補の集合をΓ(Ti)とする。
そして、バッチ型NDC生成部124が、1≦i≦Ntとなる各整数i、1≦j≦ν(Ti)となる各整数jの全ての組み合わせについてγ(Ti,j)∈Γ(Ti)を評価指標m1で評価し、評価値e1を求める(ステップS206)。
そして、1≦i≦Ntとなる各整数i、1≦j≦ν(Ti)となる各整数jの全ての組み合わせについて、e1(γ(Ti,j)) > 0.7ならばγ(Ti,j)をVDCとし、集合Γ(Ti)から取り除く。そうでなければ、γ(Ti,j)をNDCとし集合Γ(Ti)に残す(ステップS207)。
そして、バッチ型最適解探索部125が、NDC系列集合Sを作成し(ステップS208)、NDC系列集合Sに含まれるNDC系列でk個の系列評価値E1(s),E3(s)のいずれか一つ以上が最小値をとるNDC系列sを全て探し出し、初期系列集合の要素とする(ステップS209)。
そして、初期系列集合に属するNDC系列を系列評価関数ξ(s)で評価し、その評価値が最小となるNDC系列を準最適NDC系列σとする(ステップS210)。ただし、ξ(s)=K1E1(s)+K2E2(s)とする。また、K1=1.0, K3=0.1とした。
そして、1≦i≦Ntとなる各整数iに対応するタイムスロットTiついて後述するNDCの入れ替え処理を行う(ステップS211)。そして、NDCの入れ替えを行う前の準最適NDC系列のξ( )での評価値と、NDC入れ替え後の準最適NDC系列のξ( )での評価値を用いて改善率を算出する(ステップS212)。
そして、改善率が3%以下であるか否かを判定し(ステップS213)、改善率が3%以下なら現在の準最適NDC系列を資源計画として出力し(ステップS214)、全ての処理を終える。そうでなければステップS211に戻る。
次に、バッチ型原始サービスの将来負荷変動を計画するためのジョブ・スケジューリング・アルゴリズムについて説明する。各バッチ型原始サービスpi(1≦i≦Np)のジョブ投入スケジュールとターンアラウンド時間、デッドライン時刻が図16の様であるとき、各バッチ型原始サービスpi(1≦i≦Np)について以下の(S1)〜(S9)を実行する。
ただし、予測期間の開始時刻をt0とすると、任意のiとjについて、t(i,j)−t0 = TA(i)×N、TD(i)−t0 = TA(i)×N'(ただしNおよびN'は整数)の関係が有り、TA(i)は計測周期の長さの整数倍であるものとする。また、単位サーバ性能をfとする。
(S1)j=ρ(i)とする。また、予測期間内の各時刻tにおいてθi(t)=0とする。
(S2)予測期間内の各時刻tにおいて、トランザクション型およびバッチ型のいかなるサービスにも割り当てられていないデータセンタck内の余剰資源量をR(ck,t)とした時のη(ck,t)=R(ck,t) / fを求める。
(S3)時刻t(i,j)から時刻TD(i)までの時間帯を、TA(i)の長さのタイム・クォンタムに分割し、時刻t(i,j)から開始時刻の早い順に数えてh番目のタイム・クォンタムをQ(i,j,h)とする。またNQ(i,j)=(TD(i)−t(i,j))/TA(i)とする。
(S4)1≦h≦NQ(i,j)となる各整数hと1≦k≦Ncとなる各整数kの組合せについて次の処理を行う。タイム・クォンタムQ(i,j,h)に含まれる複数の計測周期の中で計測周期の中心時刻tにおけるη(ck,t)の値が最小となる計測周期を求め、当該計測周期の中心時刻tの時のη(ck,t)の値をQ(i,j,h)における余剰資源量η(Q(i,j,h),ck)とする。
(S5)1≦h≦N
Q(i,j)となる各整数hについて、次の処理を行う。η(Q(i,j,h),c
k)が最大となるような添字kの値を求め、これをk(i,j,h)とし、
を計算する。
(S6)η(i,j,h)の値を最大にするような添字hの値を求め、η(ck(i,j,h),t)から1を減算し、R(ck(i,j,h),t)からfを減算する。
(S7) t(i,j)+TA(i)×h ≦ t ≦ t(i,j)+TA(i)×(h+1)となる各時刻tについてθi(t)= θi(t)+fとする。
(S8)n(i,j)から1を減算してn(i,j)>0なら(S5)へ戻る。
(S9)jが1なら処理を終了。そうでなければj = j−1として(S2)に戻る。
以上の手順実行の結果得られたθi(t)の値がバッチ型原始サービスpiの将来時刻tの時の将来負荷である。
次に、バッチ型派生サービス生成部122によるバッチ型派生サービス生成の詳細について説明する。バッチ型派生サービス生成部122は、1≦i≦Ncとなる各整数iについて、以下の(S1)および(S2)を実行する。ここで、時刻tにおけるデータセンタciのWEBサービスによる負荷量の合計をg(ci,t)と表す。
(S1)予測期間内の各計測周期において、次の処理を実行する。当該計測周期の中心時刻tにおいて、p
j ⇒ c
iとなる全ての添字jの集合をJとした時に
ならば、p
h ⇒ c
iとなるp
hの時刻tでの負荷量θ'(h,t)を
とする。
(S2)予測期間内の各計測周期において次の処理を実行する。当該計測周期の中心時刻をtとした場合、p
j ⇒ c
iとなる全ての添字jの集合をJとした時に
ならば、p
h⇒c
iとなる各バッチ型原始サービスp
hから時刻tにおいてN
c-1個のバッチ型派生サービスを発生させ、当該各バッチ型派生サービスの時刻tでの負荷量を以下のようにする。
次に、NDCの入れ替え処理の詳細について説明する。NDCの入れ替え処理としては、以下の(S1)〜(S3)を行う。
(S1)集合Γ(Ti)内を探索して、γσ(Ti,j1)とγ(Ti,j2)(ただしj1≠j2とする)の間に以下の関係が成り立つようなj2を求める。
e1(γσ(Ti,j1)) > e1(γ(Ti,j2))
e3(γσ(Ti,j1)) > e3(γ(Ti,j2))
上記の条件を満たすj2が見つかった場合は、γσ(Ti,j1)とγ(Ti,j2)を入れ替えることにより、γ(Ti,j2)をNDC系列σ内のタイムスロットTiに対応するNDCとし、(S3)に進む。上記の条件を満たすj2が見つからないときには(S2)に進む。
(S2)集合Γ(T
i)内を探索して、γσ(T
i,j
1)とγ(T
i,j
2)(ただしj
1≠j
2とする)の間に以下の式(S2)または式(S3)のいずれか一方の関係が成り立つようなj
2を求める。
ただし、λ(x)=0.1×exp(1.3×x)とした。上記の条件を満たすj2が見つかった場合は、γσ(Ti,j1)とγ(Ti,j2)を入れ替えることにより、γ(Ti,j2)をNDC系列σ内のタイムスロットTiに対応するNDCとする。上記条件を満たすj2が見つからない場合は、タイムスロットTiについてはNDCの入れ替えを行わない。
(S3)i = i+1として次のタイムスロットに移り、(S1)に戻る。
次に、本実施例に係る資源計画作成装置100による資源計画作成のシミュレーション結果について説明する。図17は、本実施例に係る資源計画作成装置100による資源計画作成のシミュレーション結果を示す図である。
同図に示すように、データセンタXのConsumerトラフィックが朝と夜の高負荷時に3分割されて、データセンタYおよびデータセンタZでも処理が行われている。また、データセンタZの商店トラフィックが朝晩のピーク時に3分割されて、データセンタXおよびデータセンタYでも処理が行われている。
上述してきたように、本実施例では、複数のデータセンタによって運用される複数のトランザクション型サービスに対して、トランザクション計画部110の予測部111が原始サービスの負荷予測を行い、派生サービス生成部112が予測部111による負荷予測およびデータセンタの計算資源量に基づいて派生サービスを生成し、最適解探索部115が派生サービス生成部112により生成された派生サービスに対する最適な資源計画を作成する。
また、複数のデータセンタによって運用される複数のバッチ型サービスに対して、負荷量算出部121が原始サービスの負荷予測を行い、バッチ計画部120のバッチ型派生サービス生成部122が負荷量算出部121による負荷予測およびトランザクション型サービスの処理に使用されない計算資源量に基づいて派生サービスを生成し、バッチ型最適解探索部125が派生サービス生成部122により生成された派生サービスに対する最適な資源計画を作成する。
従って、各データセンタに対して計算資源に応じた最適な負荷割り当てを行うことができるので、データセンタの過負荷を防ぐとともに、データセンタの計算資源を効率良く使用することができる。
また、このような資源計画の生成処理により、各派生サービスと発生元となった原始サービスとの間の負荷分配比率、および各派生サービスの発生時刻とその時の配置先データセンタが定まるので、データセンタ毎に予測期間内における原始サービス負荷と派生サービス負荷の合計量の時間変動推移が得られる。
これを基に、各データセンタ毎に、負荷の変動に応じて派生サービスの発生を適切に行った場合の、当該データセンタのピーク時負荷量を見積もることができ、この見積もり負荷量は、派生サービスの発生を全く行わない場合や、各派生サービスの配置が不適切である場合の各データセンタのピーク時負荷量より小さい値とすることができる。
また、本実施例では、資源計画作成装置100だけで負荷予測、最適資源計画の作成および資源計画のデータセンタへの送信まで行う場合について説明したが、本発明はこれに限定されるものではなく、例えば負荷予測部111を他の装置で行う場合にも同様に適用することができる。
また、本実施例では、資源計画作成装置について説明したが、この資源計画作成装置が有する構成をソフトウェアによって実現することで、同様の機能を有する資源計画作成プログラムを得ることができる。そこで、この資源計画作成プログラムを実行するコンピュータシステムについて説明する。
図18は、本実施例に係る資源計画作成プログラムを実行するコンピュータシステムを示す図である。同図に示すように、このコンピュータシステム200は、本体部201と、本体部201からの指示により表示画面202aに情報を表示するディスプレイ202と、このコンピュータシステム200に種々の情報を入力するためのキーボード203と、ディスプレイ202の表示画面202a上の任意の位置を指定するマウス204と、LAN206または広域エリアネットワーク(WAN)に接続するLANインタフェースと、公衆回線207に接続するモデムとを有する。ここで、LAN206は、他のコンピュータシステム(PC)211、サーバ212、プリンタ213などとコンピュータシステム200とを接続している。
また、図19は、図18に示した本体部201の構成を示す機能ブロック図である。同図に示すように、この本体部201は、CPU221と、RAM222と、ROM223と、ハードディスクドライブ(HDD)224と、CD−ROMドライブ225と、FDドライブ226と、I/Oインタフェース227と、LANインタフェース228と、モデム229とを有する。
そして、このコンピュータシステム200において実行される資源計画作成プログラムは、フロッピィディスク(FD)208、CD−ROM209、DVDディスク、光磁気ディスク、ICカードなどの可搬型記憶媒体に記憶され、これらの記憶媒体から読み出されてコンピュータシステム200にインストールされる。
あるいは、この資源計画作成プログラムは、LANインタフェース228を介して接続されたサーバ212のデータベース、他のコンピュータシステム(PC)211のデータベースなどに記憶され、これらのデータベースから読み出されてコンピュータシステム200にインストールされる。
そして、インストールされた資源計画作成プログラムは、HDD224に記憶され、RAM222、ROM223などを利用してCPU221により実行される。
また、本実施例では、データセンタにサービスを配置する場合について説明したが、本発明はこれに限定されるものではなく、他の計算機クラスタにサービスを配置する場合にも同様に適用することができる。
例えば、各データセンタの内部を構成する計算資源の集合が複数の区画に分割され、各区画毎に独立した運用管理がなされている場合である。この場合、各区画毎に、どの派生サービスをいつ何時配置するかについて最適化したり、どの区画で恒常的にどの原始サービスを運用するか定め、区画毎に、そこで運用する原始サービスから派生サービスを発生させる将来時点を決定するといったことも可能である。
(付記1)複数の計算機から構成される計算機クラスタが複数接続されて構成される計算機クラスタシステムが運用する複数のサービスを該複数の計算機クラスタへ配置する資源計画を作成する資源計画作成プログラムであって、
運用される計算機クラスタが定められたサービスである原始サービスから該原始サービスの負荷予測に基づいて各計算機クラスタから他の計算機クラスタへ運用の一部が移される派生サービスを生成する派生サービス生成手順と、
前記派生サービス生成手順により生成された派生サービス群を前記複数の計算機クラスタへ配置する資源計画を所定の評価指標に基づいて作成する計画作成手順と、
をコンピュータに実行させることを特徴とする資源計画作成プログラム。
(付記2)前記派生サービス生成手順は、前記負荷予測の予測期間を所定の時間間隔で複数のタイムスロットに分割したタイムスロット毎に派生サービスを生成し、
前記計画作成手順は、前記タイムスロット毎の派生サービスの配置計画であるタイムスロット配置計画を該タイムスロットの時刻順に並べた配置計画系列を前記資源計画として作成することを特徴とする付記1に記載の資源計画作成プログラム。
(付記3)前記計画作成手順は、派生サービス群を前記複数の計算機クラスタへ最適に配置する資源計画をPareto最適性理論に基づいて作成することを特徴とする付記2に記載の資源計画作成プログラム。
(付記4)前記計画作成手順は、計算機クラスタ間の負荷均等度と、時間軸上で隣接するタイムスロット間の前記タイムスロット配置計画の類似度とを評価指標として用いることを特徴とする付記3に記載の資源計画作成プログラム。
(付記5)前記計画作成手順は、前記類似度と負荷均等度を評価指標とした場合に評価が最も良い配置計画系列を初期系列集合とし、該初期系列集合に含まれる配置計画系列に対して前記負荷均等度の評価がより良くなるような補正を行うことによって前記資源計画を作成することを特徴とする付記4に記載の資源計画作成プログラム。
(付記6)前記計画作成手順により作成された資源計画を各計算機クラスタに送信する資源計画送信手順をさらにコンピュータに実行させることを特徴とする付記1〜5のいずれか一つに記載の資源計画作成プログラム。
(付記7)前記計算機クラスタはデータセンタであり、前記計算機クラスタシステムは複数のデータセンタがネットワークを介して接続されたシステムであることを特徴とする付記1〜6のいずれか一つに記載の資源計画作成プログラム。
(付記8)前記派生サービス生成手順は、
指定されたデッドライン時刻までに、サービスを構成する全てのジョブが処理完了されていれば、個々のジョブはいつ何時処理されても構わないことを特徴とするような非リアルタイム性のバッチ型サービスが計算機クラスタの集合で運用されている場合に、リアルタイム性を要求されるトランザクション型のサービスに対して計算機クラスタの資源を優先的に割り当て、残った余剰資源をバッチ型サービスに割り当てるために、トランザクション型サービスに対して資源計画の生成を行い、その後、割り当て対象とならなかった余剰資源についてバッチ型サービスの資源計画の生成を行う事を特徴とする付記1に記載の資源計画作成プログラム。
(付記9)前記計画作成手順は、各バッチ型原始サービスを構成する全てのジョブを、その投入時刻がデッドライン時刻に近いものから順に実行計画の対象とし、いかなるサービスによっても使用されていない余剰計算資源の量の計算機クラスタ集合全体にわたる総和が最大となる期間に当該スケジューリング対象となったジョブの実行計画を生成する
ことを特徴とする付記1に記載の資源計画作成プログラム。
(付記10)複数の計算機から構成される計算機クラスタが複数接続されて構成される計算機クラスタシステムが運用する複数のサービスを該複数の計算機クラスタへ配置する資源計画を作成する資源計画作成プログラムを記録したコンピュータ読み取り可能な記録媒体であって、
運用される計算機クラスタが定められたサービスである原始サービスから該原始サービスの負荷予測に基づいて各計算機クラスタから他の計算機クラスタへ運用が移される派生サービスを生成する派生サービス生成手順と、
前記派生サービス生成手順により生成された派生サービスを前記複数の計算機クラスタへ配置する資源計画を所定の評価指標に基づいて作成する計画作成手順と、
をコンピュータに実行させる資源計画作成プログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
(付記11)複数の計算機から構成される計算機クラスタが複数接続されて構成される計算機クラスタシステムが運用する複数のサービスを該複数の計算機クラスタへ配置する資源計画を作成する資源計画作成方法であって、
運用される計算機クラスタが定められたサービスである原始サービスから該原始サービスの負荷予測に基づいて各計算機クラスタから他の計算機クラスタへ運用の一部が移される派生サービスを生成する派生サービス生成工程と、
前記派生サービス生成工程により生成された派生サービス群を前記複数の計算機クラスタへ最適に配置する資源計画を所定の評価指標に基づいて作成する計画作成工程と、
を含んだことを特徴とする資源計画作成方法。
(付記12)複数の計算機から構成される計算機クラスタが複数接続されて構成される計算機クラスタシステムが運用する複数のサービスを該複数の計算機クラスタへ配置する資源計画を作成する資源計画作成装置であって、
運用される計算機クラスタが定められたサービスである原始サービスから該原始サービスの負荷予測に基づいて各計算機クラスタから他の計算機クラスタへ運用の一部が移される派生サービスを生成する派生サービス生成手段と、
前記派生サービス生成手段により生成された派生サービス群を前記複数の計算機クラスタへ最適に配置する資源計画を所定の評価指標に基づいて作成する計画作成手段と、
を備えたことを特徴とする資源計画作成装置。