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

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

▶ サイクル コンピューティング,エルエルシーの特許一覧

特許6373432仮想環境における演算インフラストラクチャのリアルタイム最適化
<>
  • 特許6373432-仮想環境における演算インフラストラクチャのリアルタイム最適化 図000002
  • 特許6373432-仮想環境における演算インフラストラクチャのリアルタイム最適化 図000003
  • 特許6373432-仮想環境における演算インフラストラクチャのリアルタイム最適化 図000004
  • 特許6373432-仮想環境における演算インフラストラクチャのリアルタイム最適化 図000005
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6373432
(24)【登録日】2018年7月27日
(45)【発行日】2018年8月15日
(54)【発明の名称】仮想環境における演算インフラストラクチャのリアルタイム最適化
(51)【国際特許分類】
   G06F 9/50 20060101AFI20180806BHJP
   G06F 9/455 20060101ALI20180806BHJP
   G06F 8/60 20180101ALI20180806BHJP
   G06F 9/48 20060101ALI20180806BHJP
【FI】
   G06F9/50 120Z
   G06F9/455 150
   G06F8/60
   G06F9/48 300H
【請求項の数】3
【全頁数】9
(21)【出願番号】特願2017-54221(P2017-54221)
(22)【出願日】2017年3月21日
(62)【分割の表示】特願2015-534760(P2015-534760)の分割
【原出願日】2013年9月27日
(65)【公開番号】特開2017-142824(P2017-142824A)
(43)【公開日】2017年8月17日
【審査請求日】2017年4月10日
(31)【優先権主張番号】61/707,564
(32)【優先日】2012年9月28日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】514318459
【氏名又は名称】サイクル コンピューティング,エルエルシー
(74)【代理人】
【識別番号】100140109
【弁理士】
【氏名又は名称】小野 新次郎
(74)【代理人】
【識別番号】100118902
【弁理士】
【氏名又は名称】山本 修
(74)【代理人】
【識別番号】100106208
【弁理士】
【氏名又は名称】宮前 徹
(74)【代理人】
【識別番号】100120112
【弁理士】
【氏名又は名称】中西 基晴
(74)【代理人】
【識別番号】100196508
【弁理士】
【氏名又は名称】松尾 淳一
(72)【発明者】
【氏名】ハリス,ダニエル
(72)【発明者】
【氏名】ジョンソン,アドリアン
(72)【発明者】
【氏名】ストウ,ジェイソン, エー
(72)【発明者】
【氏名】ワトゥロウス,ベン
【審査官】 多賀 実
(56)【参考文献】
【文献】 特表2007−506169(JP,A)
【文献】 特開2012−003476(JP,A)
【文献】 国際公開第2011/031459(WO,A2)
【文献】 特開2012−168756(JP,A)
【文献】 特開2007−293603(JP,A)
【文献】 山崎泰宏,「PaaSを企業システムで活用 自動スケールアウトを生かす」,日経コンピュータ,日経BP社,2012年 3月15日,第804号,pp.102-105
(58)【調査した分野】(Int.Cl.,DB名)
G06F8/00−8/77
G06F9/44−9/54
(57)【特許請求の範囲】
【請求項1】
(a)未完了のジョブを同定する情報をスケジューラから要件エンジンに入力する工程と、
(b)新しいジョブと関連したメタデータを上記要件エンジンに入力する工程と、
(c)上記新しいジョブを完了するために、上記要件エンジンへの入力に対応する仮想マシンおよび仮想マシンセットの少なくとも一方をプロビジョニングする工程と、
を備えた方法。
【請求項2】
利用可能な仮想マシン構成のリストを格納する工程をさらに備えたことを特徴とする請求項1に記載の方法。
【請求項3】
上記メタデータが、仮想マシン構成に関する、上記新しいジョブのためのランク式を含むことを特徴とする請求項1に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、公的、私的、および公私のハイブリッド環境における仮想演算インフラストラクチャ(virtualized compute infrastructure)に関し、その環境内で実行しようとするジョブの特徴に基づいて、上記仮想演算インフラストラクチャを自動的かつリアルタイムに最適化する方法およびシステムに関する。
【背景技術】
【0002】
クラウドベースのリソースは、典型的には仮想演算環境である。この仮想演算環境では、各物理マシン(physical machine)の全リソースのサブセットを利用して、一連の物理サーバ(physical severs)がプロビジョニングされ(provisioned;準備、供給、配置)
、一時的に使用可能な1つまたは複数の仮想サーバとなる。1つまたは複数のinfrastructure-as-a-service(IaaS)プロバイダを用いる場合、ユーザは、典型的には、仮想イン
フラストラクチャの所望の構成を制御することができる。この制御の例としては、所定の構成のリストから仮想ハードウェアを選択すること、あるいは所望の仮想ハードウェア構成に必要とされるリソースを厳密に特定することが含まれよう。クラウドベースの演算インフラストラクチャは、典型的には、異なるタイプの仮想マシンによって提供されるリソースに基づいて、異なる価格設定ポイントを有する。提供されるリソースが多ければ多いほど、単位時間当たりのコストが高くなる。
【0003】
伝統的な演算環境は、典型的には、購入時の限られたハードウェア構成に基づいているため、サイズが固定されており、異種性(heterogeneity)が限定されている。その結果
、マシンは、プラットホームとの互換性の欠如、ディスクの空き容量、メモリ、またはネットワーク相互接続等の限定要因のために、ジョブの要求する作業を行うことが出来ることもあり、出来ないこともある。逆に、単一のマシンで実行されているジョブがマシンを十分に活用しておらず、リソースが無駄になっている可能性もある。
【0004】
アプリケーションのための現行の自動スケーリング演算リソース(auto-scaling compute resources)は、米国特許第8,346,921号に示されるように、RAM、CPU数、またはインスタンスタイプ等に関する単一の仮想マシン構成の使用履歴に基づく、予測型の自動スケーリングに焦点を当てている。一方、演算環境に多数のアプリケーションがサブミットされ(submited;提出、委託、送信)、各アプリケーションがそれぞれに最適なVM(仮想マシン)構成または複数のVM構成を要求するような状況は無視されている。
【0005】
CycleCloud等の、これと似た現行のクラウドベースのソリューションは、キューイングシステム、メッセージングシステム、またはCondorまたはGridEngine等のバッチスケジューリングシステムにおけるアイドルジョブ(idel jobs;実行されていないジョブ)の数
に基づいて、仮想ハードウェアをプロビジョニングする。これらのソリューションは、ジョブの実行に用いられる実行ノードの仮想構成を予め決めておくことを要求し、それから、キュー(queue;待ち行列)、メッセージバスまたはスケジューラにおけるアイドルジョブを実行するために、この1つの構成に適合する仮想マシンを自動的にプロビジョニングする。その結果、ワークフロー内のあらゆるジョブを実行することの出来る仮想マシン構成、すなわち全ジョブのための最小公倍数的なマシン構成を定義する必要が、しばしば生じる(たとえ、この構成が大多数のジョブが必要とするよりも過剰なリソースを含んでいたとしても)。
【0006】
現代の仮想演算環境の、異なるハードウェア構成をリアルタイムに特定する能力を活用して、ジョブのキュー(待ち行列)における各ジョブの特定のニーズと特徴に基づいて、インフラストラクチャの自動プロビジョニングが出来るようにすることが望ましい。キューに投入されたジョブからメタデータを用いて作成される仮想インスタンスのタイプを最適化することにより、より速く、より低コストで、より少ないエラーでジョブを完了することが可能になる。本発明はそのような方法とシステムを記述する。
【発明の概要】
【0007】
本システムは、演算インフラストラクチャをジョブ実行要件に基づいてリアルタイムに自動的に最適化する方法について、情報に基づいた判断をするための要件エンジン(requirements engine)を提供する。この要件エンジンに加えて、本システムはジョブメタデ
ータの格納メカニズムを提供する。この格納メカニズムは、ジョブが利用すると考えられる種々のソフトウエアアプリケーションのランタイム要件、または、サブミッション時に分かっている場合はキューの中の特定のジョブの特徴(characteristics)、を取り込む
。本システムによって格納されたメタデータは、ジョブを適切に実行するために必要とする環境を記述した論理式を含む。これは、1つまたは複数の仮想サーバの測定可能ないかなる特性を含んでいてもよく、例えば以下のメトリックのいずれでもよいが、これに限定されない。
【0008】
CPUのパフォーマンスの総計(aggregate)
【0009】
利用可能なCPUの数
【0010】
利用可能な最大メモリ
【0011】
利用可能な最大ディスク空き容量
【0012】
ディスクのパフォーマンスの総計
【0013】
ネットワーク帯域幅の総計
【0014】
ベースオペレーティングシステム
【0015】
追加的に要求されるソフトウエア構成
【0016】
IaaSプロビジョニングされたハードウェアの1時間当たりの最大コスト
【0017】
物理ハードウェアの地理的ロケーション
【0018】
ジョブが投入されたスケジューリングシステムのキュー
【0019】
物理ハードウェアの管轄権(法的管轄圏;jurisdiction)(例えば、米国愛国者法で管理されているサーバでは実行出来ない)、および
【0020】
使用する可能性のある1つまたは複数のIaaSプロバイダの名前
【0021】
上記プロパティの一部を用いて、4つ以上のCPUと2ギガバイト以上のRAMを要求するジョブを記述した論理式の例は、以下のようになろう。
CPUCount>4&&Memory>2G
【0022】
上記プロパティの一部を用いて、複数のマシン(1つのマシンは4つ以上のCPUと2ギガバイト以上のRAMを有し、もう1つのマシンは8つのCPUと8ギガバイトのRAMを有する)を要求するジョブを記述した一組の論理式の例は、以下のようになろう。
[“CPUCount>4&&Memory>2G”,“CPUCount>8&&Memory>8G”]
【0023】
論理式はまた、ジョブを実行するのに要求される仮想マシン構成のタイプ“m1.small”等)であってもよく、またはジョブを実行するのに要求される一組のノード[“m1.small
”, “cl.xlarge”, “m1.xlarge”]であってもよい。
【0024】
要件エンジンは、キューにおける各ジョブのためのメタデータをリアルタイムに処理し、メタデータで特定された要件に基づいて、そのジョブを実行するのに最適な仮想マシン構成を決定する。オプションで、このプロセスは、ジョブが入っているキューの名前から、それらのジョブのために作成された1つまたは複数の仮想マシンの構成のタイプへの、ダイレクトマッピングであってもよい。さらにジョブがキューに追加されると、本システムは各アイドルジョブと関連したメタデータを処理し続け、追加の仮想マシン(ジョブあたり1つのマシンまたはリソース、またはジョブあたり複数のリソース)をプロビジョニングする。各リソースは各ジョブ固有のランタイム要件に合わせて最適化される。
【0025】
キューまたはスケジューリングシステム内のアイドルジョブに基づいてノードを開始および停止させることに加えて、要件エンジンは、どの仮想インスタンスがすでにプロビジョニングされ、開始されたかに基づいて、新しいプロビジョニングの決定をする。そして、現在のインスタンスのワークの未処理分(バックログ;backlog)が何らかのユーザ定
義の閾値を超えた時のみ、追加のインスタンスを開始させる。メタデータに基づいてジョブのハードウェア要件を決定する際、本システムは、前にプロビジョニングされたハードウェアであって、最初に委託された何らかのジョブを完了または完了間近なハードウエアを検査し、このハードウェアが現在アイドル状態にあるジョブを実行するのに適しているか否かを判断する。このハードウェアを再び利用することが出来る場合、本システムは、新しい仮想マシンのプロビジョニングは行わず、代わりに、このジョブがアイドル状態にあるかアイドル状態間近なノードに割り当てられることを許容する。
【0026】
さらに、要件エンジンは、ユーザからの要求があれば、前にジョブを実行するようプロビジョニングされ、そのジョブがもう完了してマシンのプールの中で使用されない状態でいる、あらゆる仮想マシンを終了させることが出来る。ほとんどのIaaS環境において、レンタルされた仮想マシンは、特定の時間間隔で、典型的にはマシンがプロビジョニングされた時から1時間毎に課金される。本願で提案するシステムは、開始させた各インスタンスについて、この課金間隔を追跡し、アイドル状態にある仮想マシンを次の課金期間の前に必ず終了させることが出来る。もはやジョブを実行しておらず、キュー内にジョブがない時に仮想マシンを終了させることにより、IaaSクラウド環境における全体のコストが低減され、演算環境のライフスパンにわたってクラスタトポグラフィが最小限に保たれる。
【0027】
ジョブを実行するのに要求されるハードウェアを決定するために、要件エンジンが提供するアルゴリズムは、ジョブの実行ための最低要件(minimum requirements)のみならず
、そのジョブの実行には要求されない優先メトリック(preferential metrics)も含むように拡張することが出来る。その結果、利用可能な仮想マシン構成に対する動的ランク付けシステムが出来る。例えば、ジョブを記述するメタデータが、そのジョブを実行するのに2ギガバイトのメモリしか要求しないが、利用可能であればより大きなメモリを好むシステムを記述するとする。そして、2ギガバイトのRAMの仮想マシンと4ギガバイトのRAMの仮想マシンとの選択を与えられた場合、どちらのマシンをプロビジョニングするかを決めるに当たっては、RAMの容量がより大きい仮想マシンをより高位にランク付けすべきである。
【図面の簡単な説明】
【0028】
図1】ジョブとそれに伴うメタデータのサブミッションの両プロセスを、要件エンジンと共に示すブロック図である。上記サブミッションは、エンドユーザまたはジョブサブミッションポータル、コマンドラインツール、APIまたはウェブページ/サービス(CycleServer、shell commands、RESTfulAPI等であるが、それらに限定されない。)による。上記要求エンジンは、1つまたは複数のIaaSプロバイダから、適合する仮想マシン構成を決定する。
【0029】
図2】どの利用可能な仮想ハードウェアをプロビジョニングするかを決定するアルゴリズムを作動させることの出来る、要件エンジンと変数を示すブロック図である。
【0030】
図3】アイドルジョブとそのジョブに関連したメタデータを、前にプロビジョニングされた、ジョブ完了または完了間近の仮想マシンセットとマッチングさせる工程を示すブロック図である。
【0031】
図4】アイドルジョブを、そのジョブに関連したメタデータを用いて、仮想マシンとマッチングさせる工程を示すブロック図である。このマッチングは、最低要件式(minimum requirements expression)と、複数のマシン構成が要件に適合した時の選択に用いられるランク式(ranking expression)との両者に基づいて行われる。
【発明の詳細な説明】
【0032】
本発明に係るプロセスおよびシステムの好ましい実施形態を以下に述べる。ただし、本発明はこの実施形態に限定されるものではない。
【0033】
ジョブを実行するために要求される仮想のマシン構成またはインスタンス/ノードタイプは、マシンの単一のプロセッサ、複数のプロセッサ、または様々なタイプの複数の仮想マシンであってよいことが理解される。
【0034】
この好ましい実施形態において、要件エンジンは、スケジューラまたはメッセージングミドルウェアにおける個々のジョブキューまたは複数のジョブキューを見て、それらのキューにおけるタスクまたはジョブのために要求されるインフラストラクチャを演算し、様々な構成の仮想マシンの現行の数、予期される数および理想的な数の間の相違に基づいて、要求される新しいインフラストラクチャを開始させる。ここで、スケジューラまたはメッセージングミドルウェアは、例えば、Condor、GridEngine、Platform LSF、Platform Symphony、AMQPqueue、MQseries、AWS SQS等を含むが、これらに限定されない。
【0035】
図1を参照すると、このブロック図は、エンドユーザまたはCycleServer等のジョブサ
ブミッションポータルによる、ジョブとそれに伴うメタデータの両方のサブミッションプロセスを、要件エンジンと共に示すものである。この要件エンジンは、1つまたは複数のIaaSプロバイダから、適合する仮想マシン構成を決定する。
【0036】
このシステムのプロセスおよび構成要素は次の通りである。
【0037】
・エンドユーザまたはサブミッションポータル、コマンドライン、APIまたはウェブページ/サービス(A1)がジョブを生成してキュー/バッチスケジューラ(A2)にサブミットし、それに加えて、そのジョブの論理要件を記述したメタデータを生成してメタデータ格納システム(A3)に格納する。
【0038】
・これにより要件エンジン(A4)を作動させ、要件エンジンは、キュー/スケジューリングシステム(A2)におけるアイドルジョブおよび適合するメタデータ(A3)を見つける。
【0039】
・要件エンジンは、1つまたは複数のIaaSプロバイダ(A5)とやり取りして、利用可能な仮想マシン構成(A5)を決定する。
【0040】
・要件エンジン(A4)は、上記のリスト(A5)から、メタデータ(A3)に定義された全ての論理要件に適合する仮想構成を選択し、新しい仮想マシン(A6)をプロビジョニングする。この新しい仮想マシン上でジョブ(A2)が実行される。
【0041】
図2は、利用可能な仮想ハードウェアの中からどれをプロビジョニングするかを決定するアルゴリズムを作動させることの出来る、要件エンジンと変数を示すブロック図である。
【0042】
このシステムのプロセスおよび構成要素は次の通りである。
【0043】
・ジョブキュー/バッチスケジューラ(B1)は、まだ完了していないジョブを含む。一方、メタデータ格納部(B2)はキューにおける各ジョブのマッチング要件を含む。
【0044】
・要件エンジン(B3)は、1つまたは複数のIaaSプロバイダ(B4a&B4b)によりプロビジョニングできる利用可能な仮想マシンの各々のメトリックを格納する。
【0045】
・要件エンジンのアルゴリズムは、ジョブメタデータ(B2)における要件に適合する仮想マシン構成(B5)を決定し、ジョブを実行するために、適切なIaaSプロバイダの適合する構成をプロビジョニングする。
【0046】
図3は、アイドルジョブとそのジョブに関連したメタデータを、以前にプロビジョニングされジョブ完了または完了間近の仮想マシンのセットとマッチングさせる工程を示すブロック図である。
【0047】
このシステムのプロセスおよび構成要素は次の通りである。
【0048】
・ジョブキュー/バッチスケジューラ(C1)は、まだ完了していないジョブを含み、メタデータ格納部(C2)は、各アイドルジョブのマッチング要件を含む。
【0049】
・これら情報は要件エンジン(C3)に供給され、要件エンジンは、1つまたは複数のIaaSプロバイダ(C5)からの利用可能なマシン構成のリストと、現在プロビジョニングされている全仮想マシン(C6)の構成の両方を処理する。
【0050】
既にプロビジョニングされアイドルになっているか又はアイドルになろうとしているインスタンス(C3b/C4c)で、キュー(C1)内のジョブが実行可能である場合には、新しい仮想マシンはプロビジョニングされず、ジョブメタデータで特定された要件に適合する既にプロビジョニングされたハードウェアで、ジョブの実行が許可される。
【0051】
図4は、アイドルジョブを、それに関連したメタデータを用いて、仮想マシンとマッチングさせる工程を示すブロック図である。このマッチングは、最低要件式(minimum requirements expression)と、複数のマシン構成が要件に適合した時の選択のために用いら
れるランク式との両者に基づいて行われる。
【0052】
このシステムのプロセスおよび構成要素は次の通りである。
【0053】
・ジョブキュー/バッチスケジューラはまだ完了していないジョブ(D1)を含み、メタデータ格納部はアイドルジョブのマシン要件(D2)を含む。
【0054】
・上記情報は、要件エンジン(D3)に供給され、この要件エンジンは、1つまたは複数のIaaSプロバイダからの利用可能なマシン構成のリスト(D4)を格納する。
【0055】
・要件エンジン(D3)は、メタデータ(D2)を用いて、上記ジョブ(D1)に適合する構成(D4b&D4c)を見つける。
【0056】
・要件エンジン(D3)は、メタデータで定義されたランク式に従って、上記適合する構成(D4b&D4c)のそれぞれをランク付けする。
【0057】
・ジョブメタデータ(D2)による最高ランクの適合構成(D4c)に基づいて、マシンがプロビジョニングされる(D5)。
【0058】
仮想演算クラウド環境を利用するあらゆる当事者のために、キュー環境またはスケジューリング環境におけるジョブのランタイム構成(実行時構成;runtime configuration)に基づいて、演算クラスタのトポグラフィーをリアルタイムに動的に最適化するシステムおよび方法を提供する。ランタイム構成はメタデータとして定められる。上記当事者とは、このようなクラウド環境を提供するプロバイダを含む。
本システムは、現在のキューにおけるジョブの全てのアプリケーションのプロファイルに基づいて、関連するメタデータ内の要件およびランク式として定義されたランタイム構成の集合(aggregate runtime configuration)に基づいて、クラウド中の複数タイプの
仮想リソースをプロビジョニングしたり終了させる。
ジョブがキューを出入りすると、本システムは、継続的に演算リソースを要求し終了させ、クラスタを、キュー内の全てのジョブを完了させるために最適化しつつ、最小限に維持する。コスト、ランタイムその他のメトリックを最適化する。
本システムは、エンドユーザに、ジョブのランタイム要件を特定する方法を提供するが、この方法では、エンドユーザは、ジョブを実行するシステムに対してジョブを具体的に設計するために、演算クラスタの物理プロファイルについて知る必要がない。
【0059】
好ましい実施例を参照して本発明を具体的に記載してきたが、本発明の精神および範囲を逸脱することなく、形態および詳細を種々変更してもよいことは、当業者に理解されよう。
図1
図2
図3
図4