特許第6288714号(P6288714)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電気株式会社の特許一覧 ▶ 矢野 雅文の特許一覧

特許6288714コンピュータネットワークシステム、コンピュータネットワークシステムでの負荷の移動要否の判定方法
<>
  • 特許6288714-コンピュータネットワークシステム、コンピュータネットワークシステムでの負荷の移動要否の判定方法 図000018
  • 特許6288714-コンピュータネットワークシステム、コンピュータネットワークシステムでの負荷の移動要否の判定方法 図000019
  • 特許6288714-コンピュータネットワークシステム、コンピュータネットワークシステムでの負荷の移動要否の判定方法 図000020
  • 特許6288714-コンピュータネットワークシステム、コンピュータネットワークシステムでの負荷の移動要否の判定方法 図000021
  • 特許6288714-コンピュータネットワークシステム、コンピュータネットワークシステムでの負荷の移動要否の判定方法 図000022
  • 特許6288714-コンピュータネットワークシステム、コンピュータネットワークシステムでの負荷の移動要否の判定方法 図000023
  • 特許6288714-コンピュータネットワークシステム、コンピュータネットワークシステムでの負荷の移動要否の判定方法 図000024
  • 特許6288714-コンピュータネットワークシステム、コンピュータネットワークシステムでの負荷の移動要否の判定方法 図000025
  • 特許6288714-コンピュータネットワークシステム、コンピュータネットワークシステムでの負荷の移動要否の判定方法 図000026
  • 特許6288714-コンピュータネットワークシステム、コンピュータネットワークシステムでの負荷の移動要否の判定方法 図000027
  • 特許6288714-コンピュータネットワークシステム、コンピュータネットワークシステムでの負荷の移動要否の判定方法 図000028
  • 特許6288714-コンピュータネットワークシステム、コンピュータネットワークシステムでの負荷の移動要否の判定方法 図000029
  • 特許6288714-コンピュータネットワークシステム、コンピュータネットワークシステムでの負荷の移動要否の判定方法 図000030
  • 特許6288714-コンピュータネットワークシステム、コンピュータネットワークシステムでの負荷の移動要否の判定方法 図000031
  • 特許6288714-コンピュータネットワークシステム、コンピュータネットワークシステムでの負荷の移動要否の判定方法 図000032
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6288714
(24)【登録日】2018年2月16日
(45)【発行日】2018年3月7日
(54)【発明の名称】コンピュータネットワークシステム、コンピュータネットワークシステムでの負荷の移動要否の判定方法
(51)【国際特許分類】
   G06F 9/50 20060101AFI20180226BHJP
【FI】
   G06F9/46 465D
【請求項の数】40
【全頁数】26
(21)【出願番号】特願2014-529391(P2014-529391)
(86)(22)【出願日】2013年7月2日
(86)【国際出願番号】JP2013068579
(87)【国際公開番号】WO2014024612
(87)【国際公開日】20140213
【審査請求日】2016年6月9日
(31)【優先権主張番号】特願2012-173520(P2012-173520)
(32)【優先日】2012年8月6日
(33)【優先権主張国】JP
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(73)【特許権者】
【識別番号】312011006
【氏名又は名称】矢野 雅文
(74)【代理人】
【識別番号】100077838
【弁理士】
【氏名又は名称】池田 憲保
(74)【代理人】
【識別番号】100129023
【弁理士】
【氏名又は名称】佐々木 敬
(72)【発明者】
【氏名】小川 雅嗣
(72)【発明者】
【氏名】鳥居 隆史
(72)【発明者】
【氏名】菅 真樹
(72)【発明者】
【氏名】小林 大
(72)【発明者】
【氏名】矢野 雅文
【審査官】 大桃 由紀雄
(56)【参考文献】
【文献】 特開2012−141671(JP,A)
【文献】 米国特許第08024596(US,B1)
【文献】 米国特許第06353616(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/50
(57)【特許請求の範囲】
【請求項1】
それぞれのノードが少なくとも一本の経路を介して他のノードに接続された複数のノードからなり、第1のノードNと、第1のノードNと経路Pを介して接続された第2のノードNとを少なくとも含み、
第1のノードNが現に担っている負荷量であって、第2のノードNに移すべきか否かの検討の対象となる負荷量λを定める手段、
第1のノードが現に保持する負荷要素の中から、負荷量λに相当する負荷を第1のノードNに生じさせる負荷要素を選択する手段、
前記選択した負荷要素に起因して発生する負荷を含む負荷全体を担うときの第1のノードNのレスポンス性を評価する評価値D、経路Pが現に担っている負荷に加えて、前記選択した負荷要素の搬送に起因して発生する負荷が経路Pに生じたと仮定したときの経路Pのレスポンス性を評価する評価値D、第2のノードが現に担っている負荷に加えて、前記選択した負荷要素に起因して発生する負荷を担うことにより第2のノードNに生じる負荷を第2のノードNが担うと仮定したときの第2のノードNのレスポンス性を評価する評価値Dをそれぞれ求める手段、及び、
と和D+Dの大小の比較結果に応じて、前記選択した負荷要素を移動するか否かを判定する手段
を備えることを特徴とするコンピュータネットワークシステム。
【請求項2】
前記負荷要素はデータオブジェクトdであり、前記負荷要素に起因して発生する負荷は、前記データオブジェクトdをそのノードが保持することに起因してそのノードが担う負荷であることを特徴とする請求項1に記載のコンピュータネットワークシステム。
【請求項3】
第1のノードN、第2のノードN、経路Pのそれぞれに対して、その性能に応じた関数であって、そのノード或いは経路が現に担う或いは搬送する負荷量λを少なくとも変数とする1変数関数の凸関数である、評価関数f、f、fを予め定め、
評価値Dを評価関数fに基づいて定め、評価値Dを評価関数fに基づいて定め、評価値Dを評価関数fに基づいて定める
ことを特徴とする請求項2に記載のコンピュータネットワークシステム。
【請求項4】
評価値Dを評価関数fの微分に基づいて定め、
評価値Dを評価関数fの微分に基づいて定め、
評価値Dを評価関数fの微分に基づいて定める
ことを特徴とする請求項3に記載のコンピュータネットワークシステム。
【請求項5】
Kを予め定められた比例定数とし、ノードNの負荷がλのときノードNの評価関数fの微分をdf/dλとし、同時刻におけるノードNの負荷がλのときノードNの評価関数fの微分をdf/dλとするとき、dλ/dt=K(df/dλ−df/dλから負荷量dλ/dtを求めることを特徴とする請求項3及び4のいずれかに記載のコンピュータネットワークシステム。
【請求項6】
前記第1のノードN、前記第2のノードN、前記経路Pの単位時間当たりの処理能力に応じて定められる係数をそれぞれ順にμmax,1、μmax,2、μmax,nとするとき、前記評価値D、D、Dと前記評価関数f、f、fの間に以下の数1の関係があることを特徴とする請求項3乃至5のいずれかに記載のコンピュータネットワークシステム。
【数1】
【請求項7】
関数gを、データオブジェクトdに関するm種類(mは自然数)の観測量K1d、K2d、…Kmdを変数とする予め定められた関数とするとき、データオブジェクトdを保持するノードに、データオブジェクトdに起因して発生する負荷λを、関数gに基づいて求める手段を備えることを特徴とする請求項6に記載のコンピュータネットワークシステム。
【請求項8】
観測量K1d、K2d、…Kmdのいずれかがデータオブジェクトdへのアクセス頻度であることを特徴とする請求項7に記載のコンピュータネットワークシステム。
【請求項9】
観測量K1d、K2d、…Kmdのいずれかがデータオブジェクトdのレプリカ数であることを特徴とする請求項7及び8のいずれかに記載のコンピュータネットワークシステム。
【請求項10】
前記負荷要素は処理であり、前記負荷要素に起因して発生する負荷は、その処理をそのノードが実行することに起因してそのノードが担う負荷であることを特徴とする請求項1に記載のコンピュータネットワークシステム。
【請求項11】
それぞれのノードが少なくとも一本の経路を介して他のノードに接続された複数のノードからなり、第1のノードNと、第1のノードNと経路Pを介して接続された第2のノードNとを少なくとも含むコンピュータネットワークシステムの前記複数のノードのいずれかとして動作するコンピュータであって、
第1のノードNが現に担っている負荷量であって、第2のノードNに移すべきか否かの検討の対象となる負荷量λを定める手段、
第1のノードが現に保持する負荷要素の中から、負荷量λに相当する負荷を第1のノードNに生じさせる負荷要素を選択する手段、
前記選択した負荷要素に起因して発生する負荷を含む負荷全体を担うときの第1のノードNのレスポンス性を評価する評価値D、経路Pが現に担っている負荷に加えて、前記選択した負荷要素に起因して発生する負荷が経路Pに生じたと仮定したときの経路Pのレスポンス性を評価する評価値D、第2のノードが現に担っている負荷に加えて、前記選択した負荷要素に起因して発生する負荷を担うことにより第2のノードNに生じる負荷を第2のノードNが担うと仮定したときの第2のノードNのレスポンス性を評価する評価値Dをそれぞれ求める手段、及び、
と和D+Dの大小の比較結果に応じて、前記選択した負荷要素を移動するか否かを判定する手段
を備えることを特徴とするコンピュータ。
【請求項12】
前記負荷要素はデータオブジェクトdであり、前記負荷要素に起因して発生する負荷は、前記データオブジェクトdをそのノードが保持することに起因してそのノードが担う負荷であることを特徴とする請求項11に記載のコンピュータ。
【請求項13】
第1のノードN、第2のノードN、経路Pのそれぞれに対して、その性能に応じた関数であって、そのノード或いは経路が現に担う或いは搬送する負荷量λを少なくとも変数とする1変数関数の凸関数である、評価関数f、f、fを予め定め、
評価値Dを評価関数fに基づいて定め、評価値Dを評価関数fに基づいて定め、評価値Dを評価関数fに基づいて定める
ことを特徴とする請求項12に記載のコンピュータ。
【請求項14】
評価値Dを評価関数fの微分に基づいて定め、
評価値Dを評価関数fの微分に基づいて定め、
評価値Dを評価関数fの微分に基づいて定める
ことを特徴とする請求項13に記載のコンピュータ。
【請求項15】
Kを予め定められた比例定数とし、ノードNの負荷がλのときノードNの評価関数fの微分をdf/dλとし、同時刻におけるノードNの負荷がλのときノードNの評価関数fの微分をdf/dλとするとき、dλ/dt=K(df/dλ−df/dλから負荷量dλ/dtを求めることを特徴とする請求項13及び14のいずれかに記載のコンピュータ。
【請求項16】
前記第1のノードN、前記第2のノードN、前記経路Pの単位時間当たりの処理能力に応じて定められる係数をそれぞれ順にμmax,1、μmax,2、μmax,nとするとき、前記評価値D、D、Dと前記評価関数f、f、fの間に以下の数2の関係があることを特徴とする請求項13乃至15のいずれかに記載のコンピュータ。
【数2】
【請求項17】
関数gを、データオブジェクトdに関するm種類(mは自然数)の観測量K1d、K2d、…Kmdを変数とする予め定められた関数とするとき、データオブジェクトdを保持するノードに、データオブジェクトdに起因して発生する負荷λを、関数gに基づいて求める手段を備えることを特徴とする請求項16に記載のコンピュータ。
【請求項18】
観測量K1d、K2d、…Kmdのいずれかがデータオブジェクトdへのアクセス頻度であることを特徴とする請求項17に記載のコンピュータ。
【請求項19】
観測量K1d、K2d、…Kmdのいずれかがデータオブジェクトdのレプリカ数であることを特徴とする請求項17及び18のいずれかに記載のコンピュータ。
【請求項20】
前記負荷要素は処理であり、前記負荷要素に起因して発生する負荷は、その処理をそのノードが実行することに起因してそのノードが担う負荷であることを特徴とする請求項11に記載のコンピュータ。
【請求項21】
それぞれのノードが少なくとも一本の経路を介して他のノードに接続された複数のノードからなり、第1のノードNと、第1のノードNと経路Pを介して接続された第2のノードNとを少なくとも含むコンピュータネットワークシステムの前記複数のノードのいずれかとして動作するコンピュータを、
第1のノードNが現に担っている負荷量であって、第2のノードNに移すべきか否かの検討の対象となる負荷量λを定める手段、
第1のノードが現に保持する負荷要素の中から、負荷量λに相当する負荷を第1のノードNに生じさせる負荷要素を選択する手段、
前記選択した負荷要素に起因して発生する負荷を含む負荷全体を担うときの第1のノードNのレスポンス性を評価する評価値D、経路Pが現に担っている負荷に加えて、前記選択した負荷要素の搬送に起因して発生する負荷が経路Pに生じたと仮定したときの経路Pのレスポンス性を評価する評価値D、第2のノードが現に担っている負荷に加えて、前記選択した負荷要素に起因して発生する負荷を担うことにより第2のノードNに生じる負荷を第2のノードNが担うと仮定したときの第2のノードNのレスポンス性を評価する評価値Dをそれぞれ求める手段、及び、
と和D+Dの大小の比較結果に応じて、前記選択した負荷要素を移動するか否かを判定する手段
として機能させるためのプログラム。
【請求項22】
前記負荷要素はデータオブジェクトdであり、前記負荷要素に起因して発生する負荷は、前記データオブジェクトdをそのノードが保持することに起因してそのノードが担う負荷であることを特徴とする請求項21に記載のプログラム。
【請求項23】
第1のノードN、第2のノードN、経路Pのそれぞれに対して、その性能に応じた関数であって、そのノード或いは経路が現に担う或いは搬送する負荷量λを少なくとも変数とする1変数関数の凸関数である、評価関数f、f、fを予め定め、
評価値Dを評価関数fに基づいて定め、評価値Dを評価関数fに基づいて定め、評価値Dを評価関数fに基づいて定める
ことを特徴とする請求項22に記載のプログラム。
【請求項24】
評価値Dを評価関数fの微分に基づいて定め、
評価値Dを評価関数fの微分に基づいて定め、
評価値Dを評価関数fの微分に基づいて定める
ことを特徴とする請求項23に記載のプログラム。
【請求項25】
Kを予め定められた比例定数とし、ノードNの負荷がλのときノードNの評価関数fの微分をdf/dλとし、同時刻におけるノードNの負荷がλのときノードNの評価関数fの微分をdf/dλとするとき、dλ/dt=K(df/dλ−df/dλから負荷量dλ/dtを求めることを特徴とする請求項23及び24のいずれかに記載のプログラム。
【請求項26】
前記第1のノードN、前記第2のノードN、前記経路Pの単位時間当たりの処理能力に応じて定められる係数をそれぞれ順にμmax,1、μmax,2、μmax,nとするとき、前記評価値D、D、Dと前記評価関数f、f、fの間に以下の数3の関係があることを特徴とする請求項23及び24のいずれかに記載のプログラム。
【数3】
【請求項27】
関数gを、データオブジェクトdに関するm種類(mは自然数)の観測量K1d、K2d、…Kmdを変数とする予め定められた関数とするとき、データオブジェクトdを保持するノードに、データオブジェクトdに起因して発生する負荷λを、関数gに基づいて求める手段を備えることを特徴とする請求項26に記載のプログラム。
【請求項28】
観測量K1d、K2d、…Kmdのいずれかがデータオブジェクトdへのアクセス頻度であることを特徴とする請求項27に記載のプログラム。
【請求項29】
観測量K1d、K2d、…Kmdのいずれかがデータオブジェクトdのレプリカ数であることを特徴とする請求項27及び28のいずれかに記載のプログラム。
【請求項30】
前記負荷要素は処理であり、前記負荷要素に起因して発生する負荷は、その処理をそのノードが実行することに起因してそのノードが担う負荷であることを特徴とする請求項21に記載のプログラム。
【請求項31】
それぞれのノードが少なくとも一本の経路を介して他のノードに接続された複数のノードからなり、第1のノードNと、第1のノードNと経路Pを介して接続された第2のノードNとを少なくとも含むコンピュータネットワークシステムのノード間での負荷の移動の要否を前記複数のノードのいずれかとして動作するコンピュータによって判定する方法であって、
第1のノードNが現に担っている負荷量であって、第2のノードNに移すべきか否かの検討の対象となる負荷量λを定める段階、
第1のノードが現に保持する負荷要素の中から、負荷量λに相当する負荷を第1のノードNに生じさせる負荷要素を選択する段階、
前記選択した負荷要素に起因して発生する負荷を含む負荷全体を担うときの第1のノードNのレスポンス性を評価する評価値D、経路Pが現に担っている負荷に加えて、前記選択した負荷要素の搬送に起因して発生する負荷が経路Pに生じたと仮定したときの経路Pのレスポンス性を評価する評価値D、第2のノードが現に担っている負荷に加えて、前記選択した負荷要素に起因して発生する負荷を担うことにより第2のノードNに生じる負荷を第2のノードNが担うと仮定したときの第2のノードNのレスポンス性を評価する評価値Dをそれぞれ求める段階、及び、
と和D+Dの大小の比較結果に応じて、前記選択した負荷要素を移動するか否かを判定する段階
を含むことを特徴とする方法。
【請求項32】
前記負荷要素はデータオブジェクトdであり、前記負荷要素に起因して発生する負荷は、前記データオブジェクトdをそのノードが保持することに起因してそのノードが担う負荷であることを特徴とする請求項31に記載の方法。
【請求項33】
第1のノードN、第2のノードN、経路Pのそれぞれに対して、その性能に応じた関数であって、そのノード或いは経路が現に担う或いは搬送する負荷量λを少なくとも変数とする1変数関数の凸関数である、評価関数f、f、fを予め定め、
評価値Dを評価関数fに基づいて定め、評価値Dを評価関数fに基づいて定め、評価値Dを評価関数fに基づいて定める
ことを特徴とする請求項32に記載の方法。
【請求項34】
評価値Dを評価関数fの微分に基づいて定め、
評価値Dを評価関数fの微分に基づいて定め、
評価値Dを評価関数fの微分に基づいて定める
ことを特徴とする請求項33に記載の方法。
【請求項35】
Kを予め定められた比例定数とし、ノードNの負荷がλのときノードNの評価関数fの微分をdf/dλとし、同時刻におけるノードNの負荷がλのときノードNの評価関数fの微分をdf/dλとするとき、dλ/dt=K(df/dλ−df/dλから負荷量dλ/dtを求めることを特徴とする請求項33及び34のいずれかに記載の方法。
【請求項36】
前記第1のノードN、前記第2のノードN、前記経路Pの単位時間当たりの処理能力に応じて定められる係数をそれぞれ順にμmax,1、μmax,2、μmax,nとするとき、前記評価値D、D、Dと前記評価関数f、f、fの間に以下の数4の関係があることを特徴とする請求項33乃至35のいずれかに記載の方法。
【数4】
【請求項37】
関数gを、データオブジェクトdに関するm種類(mは自然数)の観測量K1d、K2d、…Kmdを変数とする予め定められた関数とするとき、データオブジェクトdを保持するノードに、データオブジェクトdに起因して発生する負荷λを、関数gに基づいて求めることを特徴とする請求項36に記載の方法。
【請求項38】
観測量K1d、K2d、…Kmdのいずれかがデータオブジェクトdへのアクセス頻度であることを特徴とする請求項37に記載の方法。
【請求項39】
観測量K1d、K2d、…Kmdのいずれかがデータオブジェクトdのレプリカ数であることを特徴とする請求項37及び38のいずれかに記載の方法。
【請求項40】
前記負荷要素は処理であり、前記負荷要素に起因して発生する負荷は、その処理をそのノードが実行することに起因してそのノードが担う負荷であることを特徴とする請求項31に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のコンピュータをネットワークを介して接続してなるコンピュータネットワークシステムに関し、特に、この種のネットワークシステムにおける負荷の分散に関する。
【背景技術】
【0002】
ネットワークを介して互いに接続した複数のコンピュータを統合し、ひとつのコンピュータシステムとしてサービスを提供するコンピュータネットワークシステムが現在利用されている。一般に、この種のネットワークシステムにおいて、ノードとなる各コンピュータに対して割り当てた負荷に大きなばらつきがあると、システム全体でのレスポンス性能が低下する。このため、この種のシステムには、ノード間で負荷を分散して負荷の均衡化を図る技術が適用されていることが多い。
ノード間の負荷を分散する際、従来のコンピュータネットワークシステムでは、負荷の大きいノードを検出し、そのノードの負荷の一部を他のノードに分配することがよく行なわれる。
例えば、各ノードがデータサーバーであるようなコンピュータネットワークシステムでは、各ノードに蓄積されているデータ量に大きなばらつきがあるとき、蓄積するデータ量が大きいサーバーから小さいサーバーへと一部データを移動することにより、蓄積データ量の均衡化を図るものがある。この場合はデータ量が負荷に相当する。
別の例では、各ノードが計算資源を提供する計算サーバーであるようなコンピュータネットワークシステムにおいて、各ノードに対して割り当てられている計算量に大きなばらつきがあるとき、割り当てた計算量が大きいサーバーから小さいサーバーへと割当を変更することにより、割当計算量の均衡化を図るものがある。この場合は割り当てた計算が負荷に相当する。
【発明の概要】
【発明が解決しようとする課題】
【0003】
このように、従来のシステムでは、負荷を移動することによってノード間での負荷の均衡化を図り、結果としてシステム全体のレスポンス性能の維持を図っていた。しかしながら、このような手法では、負荷を均衡化した結果、かえってレスポンス性能が悪化する場合がある。
例えば、蓄積データ量を均衡化するために、データサーバー間で大量のデータを移動する場合、データの移動に長時間を要し、その間、データ移動を担うネットワーク経路の帯域を圧迫するので、システム全体のレスポンス性能に悪影響を及ぼしてしまうことがある。
本発明はこのような状況に鑑みてなされたものであり、本発明が解決しようとする課題は、それぞれがノードとなる複数のコンピュータを互いに接続してなるコンピュータネットワークシステムにおいて、負荷の分散処理に起因するレスポンス性能の低下を回避することである。
【課題を解決するための手段】
【0004】
上述の課題を解決するため、本発明は、その一態様として、
それぞれのノードが少なくとも一本の経路を介して他のノードに接続された複数のノードからなり、第1のノードNと、第1のノードNと経路Pを介して接続された第2のノードNとを少なくとも含み、
第1のノードNが現に担っている負荷量であって、第2のノードNに移すべきか否かの検討の対象となる負荷量λを定める手段、
第1のノードが現に保持する負荷要素の中から、負荷量λに相当する負荷を第1のノードNに生じさせる負荷要素を選択する手段、
前記選択した負荷要素に起因して発生する負荷を含む負荷全体を担うときの第1のノードNのレスポンス性を評価する評価値D、経路Pが現に担っている負荷に加えて、前記選択した負荷要素の搬送に起因して発生する負荷が経路Pに生じたと仮定したときの経路Pのレスポンス性を評価する評価値D、第2のノードが現に担っている負荷に加えて、前記選択した負荷要素に起因して発生する負荷を担うことにより第2のノードNに生じる負荷を第2のノードNが担うと仮定したときの第2のノードNのレスポンス性を評価する評価値Dをそれぞれ求める手段、及び、
と和D+Dの大小の比較結果に応じて、前記移動負荷要素を移動するか否かを判定する手段
を備えることを特徴とするコンピュータネットワークシステムを提供する。
また、本発明は、他の一態様として、
それぞれのノードが少なくとも一本の経路を介して他のノードに接続された複数のノードからなり、第1のノードNと、第1のノードNと経路Pを介して接続された第2のノードNとを少なくとも含むコンピュータネットワークシステムの前記複数のノードのいずれかとして動作するコンピュータであって、
第1のノードNが現に担っている負荷量であって、第2のノードNに移すべきか否かの検討の対象となる負荷量λを定める手段、
第1のノードが現に保持する負荷要素の中から、負荷量λに相当する負荷を第1のノードNに生じさせる負荷要素を選択する手段、
前記選択した負荷要素に起因して発生する負荷を含む負荷全体を担うときの第1のノードNのレスポンス性を評価する評価値D、経路Pが現に担っている負荷に加えて、前記選択した負荷要素に起因して発生する負荷が経路Pに生じたと仮定したときの経路Pのレスポンス性を評価する評価値D、第2のノードが現に担っている負荷に加えて、前記選択した負荷要素に起因して発生する負荷を担うことにより第2のノードNに生じる負荷を第2のノードNが担うと仮定したときの第2のノードNのレスポンス性を評価する評価値Dをそれぞれ求める手段、及び、
と和D+Dの大小の比較結果に応じて、前記移動負荷要素を移動するか否かを判定する手段
を備えることを特徴とするコンピュータを提供する。
また、本発明は、他の一態様として、
それぞれのノードが少なくとも一本の経路を介して他のノードに接続された複数のノードからなり、第1のノードNと、第1のノードNと経路Pを介して接続された第2のノードNとを少なくとも含むコンピュータネットワークシステムの前記複数のノードのいずれかとして動作するコンピュータを、
第1のノードNが現に担っている負荷量であって、第2のノードNに移すべきか否かの検討の対象となる負荷量λを定める手段、
第1のノードが現に保持する負荷要素の中から、負荷量λに相当する負荷を第1のノードNに生じさせる負荷要素を選択する手段、
前記選択した負荷要素に起因して発生する負荷を含む負荷全体を担うときの第1のノードNのレスポンス性を評価する評価値D、経路Pが現に担っている負荷に加えて、前記選択した負荷要素の搬送に起因して発生する負荷が経路Pに生じたと仮定したときの経路Pのレスポンス性を評価する評価値D、第2のノードが現に担っている負荷に加えて、前記選択した負荷要素に起因して発生する負荷を担うことにより第2のノードNに生じる負荷を第2のノードNが担うと仮定したときの第2のノードNのレスポンス性を評価する評価値Dをそれぞれ求める手段、及び、
と和D+Dの大小の比較結果に応じて、前記移動負荷要素を移動するか否かを判定する手段
として機能させるためのプログラムを提供する。
また、本発明は、他の一態様として、
それぞれのノードが少なくとも一本の経路を介して他のノードに接続された複数のノードからなり、第1のノードNと、第1のノードNと経路Pを介して接続された第2のノードNとを少なくとも含むコンピュータネットワークシステムのノード間での負荷の移動の要否を判定する方法であって、
第1のノードNが現に担っている負荷量であって、第2のノードNに移すべきか否かの検討の対象となる負荷量λを定める段階、
第1のノードが現に保持する負荷要素の中から、負荷量λに相当する負荷を第1のノードNに生じさせる負荷要素を選択する段階、
前記選択した負荷要素に起因して発生する負荷を含む負荷全体を担うときの第1のノードNのレスポンス性を評価する評価値D、経路Pが現に担っている負荷に加えて、前記選択した負荷要素の搬送に起因して発生する負荷が経路Pに生じたと仮定したときの経路Pのレスポンス性を評価する評価値D、第2のノードが現に担っている負荷に加えて、前記選択した負荷要素に起因して発生する負荷を担うことにより第2のノードNに生じる負荷を第2のノードNが担うと仮定したときの第2のノードNのレスポンス性を評価する評価値Dをそれぞれ求める段階、及び、
と和D+Dの大小の比較結果に応じて、前記移動負荷要素を移動するか否かを判定する段階
を含むことを特徴とする方法を提供する。
【発明の効果】
【0005】
本発明によれば、第1及び第2のノードのレスポンス性だけではなく、両ノードの間を接続する経路のレスポンス性を考慮して、移動負荷要素を実際に移動すべきか否かを判定する。このため、本発明によれば、システム全体のレスポンスを改善することを目的として、負荷要素が集中しているノードからそれほどではないノードに負荷要素を移動したにも関わらず、ネットワークのレスポンス性が悪化することにより、システム全体のレスポンスがかえって悪化するような事態を回避することができる。
【図面の簡単な説明】
【0006】
図1は本発明の一実施の形態であるコンピュータネットワークシステムについて説明するための図である。
図2は本発明のコンピュータネットワークシステムを構成するノードが、負荷要素を移動するか否かを判定する方法を説明するためのフローチャートである。
図3は一般的なコンピュータネットワークシステムについて説明するための図である。
図4図2の判定を行なう状態制御部を図3のコンピュータネットワークシステムに追加した図である。
図5は要素1、即ちストレージ装置であるデータサーバー1の評価関数fと、要素2、即ち他のストレージ装置であるデータサーバー2の評価関数fを説明するための図である。
図6は評価関数f及びfについて更に説明するための図である。
図7は3つのノードからなるコンピュータネットワークシステムについて説明するための図である。
図8は評価関数、負荷分散制御の結果、評価関数の傾きを示すグラフである。
図9は評価関数、負荷分散制御の結果、評価関数の傾きを示すグラフである。
図10は評価関数を示すグラフである。
図11は本発明の実施例1の動作を説明するためのフローチャートである。
図12は本願発明を適用しない場合の待ち行列の時間変化を示すグラフである。
図13は本願発明を適用した場合の待ち行列の時間変化の一例を示すグラフである。
図14は本願発明を適用した場合の待ち行列の時間変化の一例を示すグラフである。
図15は本発明を適用したノードに50秒後に格納されていたデータ数を示す表である。
【発明を実施するための形態】
【0007】
本発明の一実施の形態であるコンピュータネットワークシステム1について説明する。図1を参照すると、コンピュータネットワークシステム1は、複数のコンピュータN、N、…、N(mは自然数)からなるネットワークである。コンピュータNとコンピュータNの間を接続する経路をP1,2と呼ぶものとする。
次に、図2を参照してコンピュータネットワークシステム1の動作について説明する。いまコンピュータNに負荷が集中しているものとする。
(ステップS1)コンピュータNから他コンピュータに分配すべき負荷の量と、その負荷の移動先となる受け手側コンピュータを決定する。ここでは、コンピュータNから他コンピュータに分配すべき負荷量をλとし、受け手側コンピュータの候補をコンピュータNとする。負荷量λ及び受け手側コンピュータの決定は、コンピュータネットワークシステム1が自律分散制御系であり、個々のコンピュータが自律的に自身を制御する場合はコンピュータN自身が行なう。また、コンピュータネットワークシステム1が集中制御系であり、システム1の全体を制御する集中制御コンピュータがコンピュータNを制御する場合は集中制御コンピュータが行なう。
(ステップS2)コンピュータNは分配すべき負荷λに応じて一乃至複数の適当な負荷要素を選択する。負荷要素とは負荷の原因となる要素であり、例えばそのコンピュータが管理しているデータ、そのコンピュータの記憶装置に格納しているデータや、そのコンピュータに対して割り当てられている処理である。負荷要素毎の負荷量を同じとする場合、選択した負荷要素による負荷量の合計が、負荷λと同じかなるべく近くなるように負荷要素を選択する。
各負荷要素により生じる負荷の大きさが等しいとみなせる場合、コンピュータNが管理する負荷要素の中から、負荷量の合計が負荷λに一致するかなるべく近くなるように、ランダムに負荷要素を選択することが考えられる。
また、各負荷要素により生じる負荷の大きさが異なる場合、負荷要素毎の負荷の大きさを考慮して負荷要素を選択する。負荷要素毎の負荷量についてはステップS1に先立って算出しておくことが好ましい。例えば、コンピュータが管理するデータを負荷要素とする場合、コンピュータNは、自身が管理するデータそれぞれに対するアクセスを監視し、各データへのアクセス頻度を記録しておき、アクセス頻度に応じてデータ毎にそのデータの負荷を評価して、データの負荷の合計が負荷λと一致するかなるべく近くなるようなデータの組み合わせを選択する。
一般的に負荷が均質でない場合、全体としての負荷ではなく、個別の負荷を測定する必要があり、サーバーやCPUの負荷をCPU占有率などの直接的な値で測定するのが難しくなる。個々のデータの負荷は、データへのアクセス頻度を用いて、サーバー、CPUの負荷へ以下のように変換する。
データサーバーiにおけるデータjの負荷λijは、データjに関する観測量をK1jとすると、次の式1により求められる。
関数gは測定等により予め定めておく。観測量の例としては、データjへのアクセス頻度、データjのレプリカ数などがある。
負荷λijを求める際に用いる観察量は一種類だけとは限らず、複数用いてもよい。例えば、データjへのアクセス頻度をK1jと表し、データjのレプリカ数をK2jと表すものとする。一般に、あるデータのレプリカ数と、それらレプリカのひとつに対するアクセス頻度とは反比例する。このことを踏まえて、観測量K1j、K2jに基づいて負荷λijを求めるとすると、関数gを次の式2のように表すことができる。
複数の観測量に基づいて求める考えを更に進めると、データjに関するm種類(mは自然数)の観察量に基づいて負荷λijを求める場合に一般化することができる。すなわち、データサーバーiにおけるデータjによる負荷λijを、データjに関するm種類の観測量K1j、K2j、・・・、Kmjに基づいて次の式3で表すことができる。
式3に基づいて、データサーバーiに格納されている全データがデータサーバーiに与える負荷λは、次の式4のように表すことができる。
個々のデータで変換関数gが代わらない場合は、全データで共通の変換関数を使用しても構わない。
このようにして、データサーバーのデータ毎の負荷を割り出した後、移動するデータの候補を決定する。この決定には次の式5や式6を用いることができる。データサーバーiの負荷がλのときデータサーバーiの評価関数fの微分をdf/dλと表し、同時刻におけるデータサーバーkの負荷がλのときデータサーバーkの評価関数fの微分をdf/dλと表すものとする。このとき、データサーバーiとデータサーバーkの交換すべき負荷量dλ/dtは次の式5または式6により求めることができる。Kは負荷変更のゲインに相当する係数である。λnom,iはデータサーバiの規格化係数を表す。システム内に性能が異なるデータサーバーが混在している場合、システム全体で規格化した評価関数を定め更に、データサーバー毎にその性能や規模に応じた規格化係数を定めて、各データサーバーの評価関数を、その規格化係数を規格化した評価関数に乗算したものとして表すと都合が良い場合が多いため、ここでは規格化係数を導入している。
ここでは式5を用いた決定について説明する。式5により、データサーバーiとデータサーバーkの交換すべき負荷量dλ/dtがわかる。そこで、その負荷量dλ/dtが分かった後、負荷を送り出すほうのデータサーバーの中から、その負荷量dλ/dtにマッチした負荷λijを持つデータを選択する。選択されるデータは一つでも良いし、複数でも良い。複数の場合、選ばれたデータの負荷λijの和が移動する負荷量となる。式5で算出された負荷量にできるだけ近い負荷量になるように、移動データ候補を選ぶ。ネットワークが性能に影響を与えない場合は、選ばれたデータ候補を単純に送り出せばよい。これにより、最適な負荷分散が実現される。
上述の方法では、負荷を個別に評価し、式5の特性に符合した形で制御することで、データ種類によって負荷が異なり、負荷が均質ではなくなり、それとともに、負荷の切り出しを連続的に行えなくなる場合にも対処可能となった。
(ステップS3)コンピュータNは、負荷の移動を行なわない場合のコンピュータNのレスポンス性を示す評価値Dと、負荷の移動を行なった場合に予想される、コンピュータN及び経路P1,2それぞれのレスポンス性を示す評価値D、Dを求める。
、D、Dは、コンピュータN、コンピュータN及び経路P1,2それぞれの性能に応じて定められる指標μによって一意に定められる関数であり、コンピュータN、コンピュータN及び経路P1,2に対する負荷量λを入力とし、負荷λに対するコンピュータN、コンピュータN及び経路P1,2のレスポンス性を示す値を出力とする。
今、コンピュータNはデータdを保持しており、このデータdの移動の要否を検討しているものとする。このとき、評価値D、評価値D、評価値Dは次のようなものである。
評価値Dは、コンピュータNの現時点におけるレスポンス性を示す値である。
評価値Dは、他の条件を現状のままに、コンピュータNがデータdを現に保持していると仮定したときのコンピュータNのレスポンス性を示す値である。コンピュータNは何がしかの負荷を現に担っている。コンピュータNがデータdを保持すると仮定すると、その保持に起因する追加の負荷をコンピュータNは担うことになる。従ってコンピュータNがデータdを保持すると仮定すると、コンピュータNのレスポンスに影響がある。現に担っている負荷に加えて、データdの保持に起因する追加の負荷を担うことと仮定したときのコンピュータNのレスポンス性を示す値が評価値Dである。尚、コンピュータNが現に担う負荷がゼロの場合も同様である。
評価値Dは、他の条件を現状のままに、コンピュータNとコンピュータNの間のネットワークが現にデータdを伝送していると仮定したときのネットワークのレスポンス性を示す値である。コンピュータNとコンピュータNの間をつなぐ経路Pは現に搬送中のデータに起因する負荷を担っている。ここで経路Pが搬送中のデータは、必ずしもコンピュータNとコンピュータNのいずれかを送信元、送信先とするものではなく、コンピュータN、N以外のコンピュータを送信元/送信先とするものも含む。こうした現に搬送中のデータに加えて、経路Pがデータdを搬送すると仮定すると、データdの搬送に起因する追加の負荷を経路Pは担うことになる。従って、経路Pがデータdを搬送すると仮定すると、経路Pのレスポンスに影響がある。現に搬送中のデータに加えて、経路Pがデータdを搬送すると仮定したときの経路Pのレスポンス性を示す値が評価値Dである。尚、経路Pが現に何のデータも搬送していない場合も同様である。
(ステップS4)コンピュータNは、Dと、DとDの和D+Dとの大小を比較する。上述のように、評価値D、D、Dはいずれも、コンピュータ乃至経路がデータdを現に担っている、或いは、現に担っていると仮定したときの値である。本ステップでは、コンピュータN、N及びその間の経路P1,2に、同一のデータdが同時刻に存在すると仮定して比較を行なうことになる。現実にはこのような状態はありえないが、本願発明者らは、コンピュータNからコンピュータNへのデータdの移動が十分に短い時間内に完了する場合、このような近似的な比較であっても効果的な制御が可能であることを見出した。この知見は本発明の基礎となっている。
(ステップS5)コンピュータNは、比較結果に応じて選択した負荷要素をコンピュータNに移動するか否かを判定する。
【実施例1】
【0008】
コンピュータネットワークシステム1が自律分散制御系であり、コンピュータN、N、…、Nがそれぞれデータサーバーであり、負荷要素をデータとする実施例について説明する。本実施例では、コンピュータネットワークシステム1は複数のデータサーバーをネットワークで接続したデータセンターであり、データサーバー群におけるデータ配置の負荷分散について本発明を適用したものである。
データセンターのデータ配置の負荷分散とは、あるデータサーバーにアクセス頻度の高いデータが多く偏ってしまい、特定のデータサーバーが落ちてしまう事を避けるために実施するものである。特定のデータサーバーに集中したアクセス頻度の高いデータを、他の空いているデータサーバーに移動し、負荷を分散させるというものである。
これまでに検討されている、最も簡単な負荷分散制御としては、すべてのデータサーバーを中央制御ユニットがモニタし、負荷の高いデータサーバーのデータを負荷の低いデータサーバーへ移動させるというものが挙げられるだろう。
しかしながら、データサーバーの数が多くなれば、中央制御ユニットが制御しきれなくなるため、昨今の大規模化したシステムではうまく機能しなくなってきている。大規模なシステムでは、個々のデータサーバーが自律分散的に動作するのが望まれる。
自律分散的に行うものとしては、データの特性を統計的にモニタし、例えば、ある時間にあるデータに負荷が集中するなどの特性を見極め、その特性を基に予めシナリオを作成し、負荷を分散させるなどの制御が行われている。これは予測シナリオを用いて制御するので、シナリオベースの制御と言うことができる。
このような制御の場合、シナリオの想定内では自律分散的に動作させられるが、シナリオの想定外の事象が起きた場合、途端に破綻することとなる。したがって、自律分散的に動作しつつも、外部環境の変化に適応できるデータの配置負荷分散制御が望まれている。
(1)負荷量λと受け手側コンピュータの決定
ここでは性能の異なるサーバーが混在する場合を想定する。性能の異なるサーバーが複数(N個)存在し、それがネットワークを形成し、各サーバーにランダムにやってくる処理(負荷)をサーバー全体で負荷分散し、効率的な処理を実行するという問題を考える。効率的な処理とは、系全体でレスポンスを最小化するとか、エネルギー効率を最大化するという意味である。このような負荷分散の問題は、効率の悪いサーバーの起動、停止も含むので、これは「起動停止問題」となる。この問題の概略図を図3に示す。
我々はこの問題を検討した結果、以下の方法を考案した。解くべき問題は、2つの問題が混在している構造になっている。ひとつは、起動停止の決定であり、もうひとつは負荷の配置である。本明細書では、制御対象を機能ブロック、要素、リソース、ノードと表現するが、どれも同じである。
起動停止とは、リソース群があった場合、どのリソースを使い、どのリソースを使わないかを決定する、または管理する問題である。また、負荷の配置は、リソースが与えられたとして、系全体に与えられた仕事をどのように割り振れば、ある指標の元に最適化できるかという問題である。これらの問題は従来、個々に、確率論的なアプローチで解くことを試みられていることが多いが、単純な確率論では、変幻自在に変わっていく環境の中で、状況に応じてロバスト、リアルタイムに即応することが難しい。
今回は、これら2つの問題を一体のものとし、状況に応じてロバスト、リアルタイムに即応できる手法を考案した。その際、それぞれの問題を、確率論ではなく、決定論的または関係論的な方法で解く方法を考案した。「起動停止問題」をリアルタイムに解き、要素を制御するブロックは状態制御部と称し、図4に示すように各要素に付属される。図4では、状態制御部は要素の外側に記されているが、要素の内側に設置されていても良い。今回は完璧な最適化として、起動停止と負荷の配置を一体として解いたが、起動停止だけを決定するなど個別に使用することも当然可能である。
まず、我々は図5のような各要素と関係する評価関数fを導入する。評価関数fは、データサーバーのようなノード、データサーバー間のネットワークに対し、その性能に応じて予め定められる関数であり、ある時刻におけるデータサーバー、データサーバー間ネットワークの状態を示すパラメータλを変数とする関数である。関数fはいわば制御の指針として定められる関数であり、必ずしも測定可能な値、或いは、測定値から算出可能な値である必要はないが、そうであってもよい。関数fの横軸は各要素の状態に関するパラメータであり、今回の例ではサーバーの負荷量などに相当する。縦軸は、何らかの効率または利潤に関わる指標である。この何らかの効率に関わる指標の例は実施例のところで詳説するので、ここでは、一般的な効率として捉えていただきたい。この効率に関わる評価関数を凸関数で表す。凸関数を使用するのも本ステップで行なう制御手法のポイントである。なぜなら、多くのシステムは何らかの効率やシステムの安定性などを図5に示すような凸関数で表されるからである。図5のような上に凸な関数を凹関数と呼び、下に凸な関数を凸関数と呼ぶこともあるが、ここでは、関数の性質上で区別する表現を採用し、凹関数も凸関数と表現することにする。
評価関数が凸関数である要素を連携させて、全体で最適化(各要素の評価関数の値の総和が最大となる状態)する問題は、「凸計画問題」として知られており、各要素の動作レベルにおける評価関数の微分値が等しい状況で最適化が達成されることが数学的に明らかにされている。今回はこの原理を応用した。今回、評価関数として凸関数を使った理由がここにある。
この原理を勘案し、各要素の状態変化(今回のサーバのケースでは負荷分散)を上述の式5の方程式に従い制御する。ここで、Kは状態変更のゲインに相当する係数である。この制御をかけることで、各要素は評価関数の微分値df/dλを等しくするように状態を変更しようとする。これは「凸計画問題」のところで説明したように、全体利潤を最大化するポイントに各要素の状態(負荷量)を制御するのと等価である。つまり、式5の制御により、評価関数の縦軸で設定された効率が系全体として最大化される。kは要素iに隣接する要素の番号を意味する。隣接要素が複数個有る場合は、順次、式5の制御を繰り返せばよい。
式5には、効率最大化以外に大きなポイントがある。それは、式5は要素iと要素kに対して、絶対値は同じで反対の符号の状態変化を要求することである。これは、ある要素とそれに隣接する要素のある時刻における状態変化の総和が0になることを意味する。このように制御することで、系全体でローカルに起こる負荷要求に対して、負荷の授受をローカルな自律分散的処理で行っているにも関わらず、系全体に要求されるトータルの負荷要求を過不足無く満足させられる。「起動停止問題」は系全体(この場合、サーバネットワーク全体)で満たさなくてはいけない総要求(総需要)がある。これを満たす事を需給平衡化とも言うが、ひとつの拘束条件となる。これが満たされないまま、効率や利潤が最大化されても意味がない。一般的には、全体の総要求を計算し、それをもとに各要素の担当分を分配したりするが、このような従来方法では、全体の総要求をまとめるために、系全体を統括する要素が必要になる。本制御手法は、負荷の授受を均衡させることで、全体の総要求をまとめなくても、ローカルな自律分散処理で総要求を満たすことができる。これは大規模なネットワークになり、系全体を統括する要素が設定し辛くなった場合に、特に有効になる。
また、本ステップの制御手法は上述の式6を用いても行うことができる。ここで、λnom,iは要素iの規格化係数で、要素がヘテロな場合、全体で規格化した係数を乗算しておいた方が良い場合が多く、式6に導入している。λnom,iは要素の能力や規模に相当する量である。式6の場合、式5の場合と異なり、要素間で負荷の授受が自動的に均衡しない。したがって、ある要素とそれに隣接する要素のある時刻における状態変化の総和が0になるような工夫を加える必要がある。
最も単純なものは、以下のようなものである。例えば、要素iが隣接要素に負荷を与えたい場合(式6がマイナスの値を持つ場合)、隣接要素のうち、負荷を受け取りたい要素(式6がプラスの値を持つ要素)を選び出し、それらの総数で式6から導出される値を割り算し、算出された分割された負荷を、負荷を受け取りたい要素それぞれに分配する。
その他の手法としては、分配するときに、隣接要素の負荷の状態を見て、負荷を受け取りやすい要素に重みをかけて(式6がプラスの値が大きい要素ほど多く)分配するなどが考えられる。隣接要素がどの程度負荷を受け取りやすいかは、今回の制御の原理と同様に、評価関数の微分値を比べればわかる。
上記までの説明の手法で、負荷の配置の問題は総需要を満たしながらリアルタイムに解くことができる。では、どの要素を起こして、どの要素を止めるかという起動停止はどのように決定していくのであろうか。以下に説明する。
まず、要素自身と、その要素に隣接するノードの評価関数間にある指標を定義する。それを説明するための図6に示す。負荷が0のときに、効率または利潤(縦軸)が負の値を取っている意味は、起動によりコストが発生することを意味している。サーバーなどのIT系だとやや想像しにくいが、例えば、発電所の場合、縦軸を利潤と考えれば、運転(起動)しているにも関わらず、需要がなければ、運転コストが回収(需要家から集める金額)を上回り、利潤がマイナスになる。評価関数の値が0になったところが、運転コストと回収が均衡した点であり、評価関数の値がプラスになるということは利益が発生している事を意味する。実施例のところで示すが、データセンターのレスポンスを最適化するようなときは、縦軸がレスポンス関連量となり、負荷0のところでも評価関数は正の値を持つ。負荷0において、評価関数は正負どちらもとる可能性があるのだが、負の値をとる方を考えておけば、正の値をとる場合はその一部として解くことができる。したがって、ここでは、負荷0において、評価関数が負の値をとるケースで説明する。
ここで、ノードi(自身)のゼロクロス点をλ0,i、隣接ノードjの評価関数における、ノードiのゼロクロス点と同じ傾きの点をzij、隣接ノードjの現在の負荷をλとする。したがって、zijは次の式7で書くことができる。
そして、ここで次の式8で示す指標を定義する。
この指標は、現在の隣接ノードの負荷(総和)が、自身のゼロクロス点よりどれだけ大きいかを意味している。もしノードiが停止しているとして、ノードiを起動すべき条件は、起動することでノードiがゼロクロス点以上の負荷を担当する状況にあるかどうかである。そうすれば利潤はマイナス(評価関数値が負)にならないため、ノードiを起動することで不利はない。指標Siはそれを数値化したものである。隣接ノードがノードiのゼロクロス点における評価関数微分値と等価なzijよりどれだけ負荷を担当しているかを示すのが右辺第1項であり、それをゼロクロス点λ0,iで引くことで(右辺第2項)、自身のゼロクロス点以上の負荷が周りに存在しているかを示す指標となっている。Siが0より大きければ、ノードiを起動したときにいずれ隣接ノードが担当している負荷はノードiが担当することになり、かつノードiの担当負荷はゼロクロス点以上となる。逆に、Siが0より小さければ、ノードiが隣接ノードの担当負荷を新たに担っても、ゼロクロス点以下となり、ノードiの起動により利潤をマイナスにしてしまう。指標Siはこのようなものであり、Siの正負を見ることでノードiを起動すべきか停止すべきかがわかる。Siが負のときとは、その時点でノードiの負荷は評価関数が負の値をとる領域にあるということで、起動しているノードは評価関数が0以下になった時点で停止すると考えても良い。
起動しているノードを停止する場合にはもうひとつ考慮しなければならないことがある。ノードの性能が同じ場合の起動停止に関する場合である。先ほども述べたが、起動コストがかかる場合、どれかひとつのノードだけ起動し、残りは停止したほうが良いことが良く起こる。しかしながら、性能が同じ場合、どちらを止めればいいのか今のままでは判断できない。そこで、我々は次のようなアルゴリズムを導入した。
「評価関数値が0以下で、かつ隣接ノードを含め最も値が低い場合、停止。
値の比較は起動しているノード間で行う。
最小値が複数ある場合でも停止」
これにより、全結合なら、すべてのノードの性能が等しくても、最終的に1ノードだけ残ることになる。ネットワークの結合が疎の場合(要素と要素が全結合しておらず、まばらに結合している状態)、このアルゴリズムでもいくつかセグメント(停止したノードに取り囲まれた孤立した起動ノード群)が残ってしまう可能性はあるが、そのような場合は、ロードバランサを介して、実質的な隣接ノード(停止したノードを越えて存在する起動ノード群)を探し、上記アルゴリズムを実施するなどの方法で対処するなどが考えられる。
以上のように、式5で制御しながら、式8の指標のモニタと、上記停止用のアルゴリズムで起動停止を決定すれば、リアルタイムに「起動停止問題」を解くことができる。これは従来のように予めスケジューリングして「起動停止問題」を解いていたのに比べ画期的なことである。なぜなら、想定外の外乱や需給変化があってもリアルタイムに即応できるからである。
また、このシステムは、自律分散的に独立に動くので、どこかが故障したりしても、故障した要素からの信号が途絶えた分だけ、他の要素が自律的にリカバーするという動作を行う。また、突然要素を増やしたり、減らしたりしても、徐々に自律的に適正な動作に向かうことができる。つまり、外乱に対して、非常にロバストであり、また、要素の増減を自由にできるスケーラビリティを有している。
従来のシステムは、故障に対して無力であったり、様々なエラー用のシーケンスを用意したりしなければならなかった。また、勝手に要素(リソース)を増やしたり減らしたりすればシステム全体の安定性が保たれるか保証はなく、そのたびにプログラム、処理を見直さなければならなかった。本ステップの手法ではこれらの問題を自律分散適応的な制御ですべて解決することができるのである。
以下に、この制御手法の動作の詳細を説明する。簡単のため、今回は3つのノードが相互に繋がった3角形の構造のネットワーク状態に対してこの制御手法を適応した。ネットワークの構造を図7に示す。
まず、この3つのノードに図8に示すそれぞれ異なる評価関数を設定した。その後、総需要を時刻0から10まで0.2、時刻10から20まで1.0、時刻20以降にまた0.2と変化させた場合のノードの起動停止、負荷の分担を、本制御手法で実施した。その様子も図8に示す。総需要が0.2のときは最も利潤効率の良いノード1だけ起動し、総需要が1.0に増えると、性能の順にノード2、ノード3を起動し、負荷の分担を設定していることがわかる。そして、再度総需要が0.2になると、ノード2、3を停止して、ノード1のみ起動した状態に戻ることがわかる。本制御手法は数学的に起動停止問題を最適に解く仕組みとなっているので、これはリアルタイム(動的に)起動停止問題を解きながら、外乱(需要の急変)に適応しできたことを意味する。これは非常に大きな成果である。
また、3つのノードが同じ性能を持っている場合の例も図9に示す。ノードの性能が同じなので、評価関数のグラフはすべて重なっており、ひとつに見える。この場合も、総需要を時刻0から10まで0.2、時刻10から20まで1.0、時刻20以降にまた0.2と変化させた。すべてのノードの性能が同じなので、わかりにくいが、総需要が0.2のときは、ノード3のみ起動しており、総需要が1.0のときは3つのノードで均等に負荷を分担している様子がわかる。このように本制御手法は、起動コストがあり、ノードの性能が同じ場合でも有効に最適化を行える。
本ステップでの制御手法は、評価関数の微分を各要素で等しくするという制御を行っているが、ある関数の微分を各要素で等しくするというのが本質ではない。凸関数の微分を各要素で等しくするというのが本質である。
上記のような制御は、負荷自体が均質で任意に切り出せる場合、負荷がアナログ量であるなどの場合などには、式5あるいは式6の制御式によって導出される単位時間当たりの負荷変動量を各ノードが実現すれば良い。このとき、隣接ノードの評価関数の微分値を用いていることですでに周りの状況を勘案しているので、単純に式5あるいは式6の制御を自身に課せばよく、制御の段階で隣接ノードの状況を考える必要がない。負荷自体が均質で任意に切り出せる場合の例としては、サーバーを複数用意して処理を分散させる場合や複数のCPUを用意して処理を分散させる場合が挙げられる。アナログ量である場合の例としては、発電機ネットワークがお互いの出力パワを配分する場合が挙げられる。
しかしながら、上記制御手法を、例えば、データセンターのデータ配置分散に応用しようとすると問題が発生する。データの配置問題の場合、負荷の移動はデータ単位となるので、データ種類によって負荷が異なり負荷が均質ではなくなる。それとともに、負荷の切り出しを連続的に行えなくなるので、式5あるいは式6で計算された量と同じ負荷を移動することが必ずしもできない。また、データの移動の場合、ネットワークを通じてあるノードから別のノードにデータを移動し、負荷分散を達成するわけだが、データはネットワークへの負荷が大きく、ネットワークの状態を無視するわけにはいかない。
(2)移動する負荷要素の選択
本実施例では、データjへのアクセス頻度K1jとレプリカ数K2jとして、データサーバーiにおけるデータjの負荷λijを次の式9で表した。
(3)コンピュータN、Nの評価関数
データサーバーのデータ配置負荷分散で一般的に評価されるのはレスポンス性能である。分散配置されたデータサーバーの系全体でレスポンス性能が最小になることが望まれる。サーバーなどの処理を行う機械のレスポンス性能を最小にする評価関数を今回は導出した。その説明を以下で行う。
待ち行列理論から、単位時間当たり平均λのポアソン分布で負荷が到着し、単位時間当たり平均μmaxのポアソン分布で負荷を処理できるとすると(M/M/1の待ち行列)、系全体のレスポンスが最小となる条件は次の式10で表される。
式10の左辺は負荷量λの1次関数であり、λで積分すれば、λの2次関数が得られる。2次関数は凸関数であることが知られているから、式10の左辺を積分した関数を各ノード(サーバーなど)の評価関数と考えるならば、式10の意味は凸関数である評価関数の微分値が各ノード(サーバーなど)で等しくなるときレスポンスが最小になることを意味している。これはとりもなおさず、式5、式6の制御と同じである。つまり、式10の左辺をλで積分した関数を各ノードの評価関数として設定し、本願発明の自律分散制御を行えば、定常状態では、系全体のレスポンスを最小にすることができるのである。μmaxはサーバーの処理能力に関するパラメータであり、この値により、サーバーの能力を記述できる。したがって、すべて同じ性能のサーバー群である必要はなく、様々な性能のサーバーが混在している系でも良い。式10の左辺をλで積分した場合、定数の自由度だけ解が不定になるので、今回は原点(0,0)を通る関数を各データサーバーの評価関数に設定した。評価関数は、μmaxで一意に決まり、ピーク値がμmax1.5でピーク位置が(μmax,μmax1.5/2)の2次関数となる。図10に設定した評価関数を示す。
(4)経路P1,2の評価関数
今回、ネットワークにも評価関数を設定した。ネットワーク(個々の回線またはリンク)も実はサーバーと同じ処理を実行する機械と考えることができる。単位時間ごとにやってくるパケットという負荷を処理していくと考えれば、サーバーと全く同じ観点で評価関数を設定できる。ネットワークの単位時間当たりの処理能力をμmax,nとすると、サーバーのときに使ったμmaxをμmax,nで置き換えた評価関数をネットワークに設定すれば良い。以下では簡単のため、ネットワークの処理能力もμmaxで統一して記載する。あるネットワークiにかかる負荷をλi,nとすると、今回のデータ移動のケースでは、あるデータjのデータ長さLをとして次の式11で表される。
今回は、測定により次の式12を使用した。
(5)評価値D、D、Dの算出
これで、データサーバー、ネットワークともに評価関数が設定されたわけだが、データを移動するかどうかを判断するための評価量D、D、Dを設定しなければならない。今回は、データサーバー、ネットワークに設定した評価関数がレスポンスに関連した量を縦軸にしたものであるので、レスポンス量そのものを評価量D、D、Dに設定することとした。
待ち行列理論を用いれば、レスポンス量と今回の評価関数の関係は簡単に導出できるので、データ送り側のデータサーバーの番号をi、データ受け側のデータサーバーの番号j、データを移動させるネットワークの番号をkとして、以下の式13−15のように設定した。それぞれの式の右辺は評価関数をレスポンスに変換する式である。ここで、λはデータサーバーi全体の負荷、λはデータサーバーjの全体の負荷、λはデータサーバーiとデータサーバーjの間のネットワークの負荷を表す。
データ移動の最終決定は、式13、式14、式15で計算した評価量で、Dと和D+Dの大小を比較し、D+D<Dならばデータの移動を行う。
図11を参照して、各ノードが実行する負荷の移動の要否判定について説明する。ノードは、そのノードに隣接する他のノードから必要な情報を取得(ステップS201)し、取得した情報に基づいて、負荷変化量を求め、その負荷変化量に相当する負荷を送信すべき隣接ノードを選択する(ステップS202)。
次に、ノードは、自ノードが保持している負荷(ノードがデータサーバーならばそのデータサーバーが保持しているデータオブジェクト)の中から、求めた負荷変化量に相当する負荷を選択する(ステップS203)。
次に、ノードは、評価量D、D、Dを求める。評価量Dは、ステップS203にて選択した負荷から自ノードが受ける影響の大きさを評価した値である。評価量Dは、ステップS203にて選択した負荷を、ステップS202にて選択した隣接ノードが保持したときに、その隣接ノードがその負荷から受ける影響の大きさを評価した値である。評価量Dは、ステップS203にて選択した負荷を、ステップS202にて選択した隣接ノードと自ノードとの間のネットワークを介して送出したときに、そのネットワークがその負荷から受ける影響の大きさを評価した値である。
更に、D+D<Dが成り立つか判定する(ステップS204)。判定が成り立つ場合、そのノードはその隣接ノード宛にその負荷を送出(ステップS205)し、更に、そのノードを起動したままにしておくか、それとも停止するかを決定(ステップS206)し、ステップS201に戻る。判定が成り立たない場合はその負荷の移動を中止(ステップS207)、ステップS201に戻る。
評価量D、D、Dを算出するとき、どの内部状態(負荷)の評価関数微分値を使用するかは、いくつかのバリエーションがある。最も簡単なのは、現在の内部状態に対する評価関数微分値を用いる方法である。その他には、現在の内部状態に、データを転送することにより新たに発生する負荷分をプラスした内部状態に対する評価関数微分値を使用したりすればより正確である。また、データを受け取ったことにより新たに発生する負荷分をプラスした内部状態に対する評価関数微分値を使用しても良い。今回は、現在の内部状態に対する評価関数微分値を用いた。
(6)実施例1の効果
本実施例では、待ち行列の時間変化をモニタすることで、本願発明の効果を調べた。待ち行列とは、ある時刻にサーバーに溜まっている処理要求数で、これが多いということは処理が遅れており、系全体のレスポンスが低いことを意味する。今回の場合、待ち行列数とアクセス数は同じである。データサーバーを30台(データサーバーの処理能力は3種類で各10台ずつ)用意し、データ数はほぼ1kBのデータ(たまに10kB程度のデータも混じる)が系全体で200ランダムに配置される。3種類のデータサーバーは単位時間当たり、120、90、60の処理を行う設定とした。各データには単位時間当たり平均6のポアソン分布に従うアクセスが実施される。このアクセスが負荷、つまり処理である。
まず、本願発明を適用しない場合の待ち行列の時間変化を図12に示す。ノード番号1、2、3の結果を示している。これらの処理能力はそれぞれ120、90、60である。処理能力の比較的低いノード3の待ち行列が溜まりがちであることがわかる。残りのノード(データサーバー)の結果も、処理能力ごとにほぼ同じであった。系全体のレスポンスは0.089secであった。
次に、本発明を適用したコンピュータネットワークシステムにおいて、ネットワークの帯域が100kbpsの場合の結果を図13に示す。データの容量が1kBであるので、データ配置の負荷分散が実施されるはずである。結果を見ると、待ち行列が溜まりやすかったノード3の待ち行列が減っていることがわかる。系全体のレスポンスは0.021secと大幅に改善しており、本願発明の有効性が示された。
さらに、本発明を適用したコンピュータネットワークシステムにおいて、ネットワークの帯域が1Mbpsの場合の結果を図14に示す。待ち行列が溜まりやすかったノード3の待ち行列がほとんどなく、代わりにむしろノード1の待ち行列が少し増えている。ノード1は能力が比較的高いので、能力の高いノードにデータを集めていることが伺える。系全体のレスポンスは0.014secとさらに改善しており、本願発明の有効性が示された。
50秒後に、上記のノードに格納されていたデータ数を図15に示すが、ネットワークのレスポンスが良くなるほど、性能の高いノードにデータを配置していることがわかる。式10から今回の条件で導かれる最適なデータ配置個数を計算すると、図15の1Mbpsの場合と同じになった。つまり、本願発明によりデータの最適配置が実現されたと言うことができる。
【実施例2】
【0009】
実施例1では、データサーバーのデータは配置負荷分散制御を示したが、データではなく、処理の負荷分散制御にも本願発明は使用できる。本実施例では、本願発明を用いた処理の負荷分散を説明する。本実施例では、実施例1と同じ構成を用いた。データサーバーを、データ移動を伴わない処理をするサーバーとし、ポアソン分布的に各サーバーに降りかかる処理を、本願発明を用いて分散させる。その際、実施例1のように、処理とデータの関係を式9のように表す必要はなく、現在抱えている処理数が負荷量だと思えばよい。そして、各処理は均質であるとした。したがって、この実施例の場合、式5または式6にて決定した負荷の移動量と同等の負荷を移動すると決定できる。移動量を決定した後は、実施例1と同様、D+D<Dを評価し、負荷を移動するかどうか決定する。以上より、処理の負荷分散の場合、負荷を個別に評価しないで実施例1を実施することと同じになることがわかる。
実施例1と同じ設定で、サーバーを30台(データサーバーの処理能力は3種類で各10台ずつ)用意した。3種類のサーバーは単位時間当たり、120、90、60の処理を行う設定とした。各サーバーには単位時間当たり平均60のポアソン分布に従う処理が到着するものとする。実施した結果、本願発明を使用すると、使用しない場合に比べ10倍程度のレスポンス性能が得られた。以上より、本願発明が、サーバーの負荷分散にも有効であることがわかった。
実施例2では、例えば転送を待っている処理の待ち数がネットワークの負荷と関連する。評価関数はネットワークの転送能力(μmax)に基づいて実施例1と同様に求めることができる。その際、ネットワーク転送を待っている処理の待ち数に負荷を関連付ける。より正確には、μmax−(負荷の到着数/待ち数)がそのノードの負荷になる。待ち数を直接負荷と考えるのはある種の近似である。
以上、本発明を実施の形態及び実施例に則して説明したが、本発明はこれに限定されるものではない。
この出願は、2012年8月6日に出願された日本出願特願第2012−173520号を基礎とする優先権を主張し、その開示のすべてをここに取り込むものである。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15