IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特表2024-507695サーバ上で並列プロセスを起動するためのシステムおよび方法
<>
  • 特表-サーバ上で並列プロセスを起動するためのシステムおよび方法 図1
  • 特表-サーバ上で並列プロセスを起動するためのシステムおよび方法 図2
  • 特表-サーバ上で並列プロセスを起動するためのシステムおよび方法 図3
  • 特表-サーバ上で並列プロセスを起動するためのシステムおよび方法 図4
  • 特表-サーバ上で並列プロセスを起動するためのシステムおよび方法 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-02-21
(54)【発明の名称】サーバ上で並列プロセスを起動するためのシステムおよび方法
(51)【国際特許分類】
   G06F 9/48 20060101AFI20240214BHJP
【FI】
G06F9/48 300Z
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023546022
(86)(22)【出願日】2022-03-01
(85)【翻訳文提出日】2023-07-28
(86)【国際出願番号】 EP2022055082
(87)【国際公開番号】W WO2022184678
(87)【国際公開日】2022-09-09
(31)【優先権主張番号】17/190,086
(32)【優先日】2021-03-02
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】ハーシー、ジョシュア
(72)【発明者】
【氏名】ソルト、デイヴィッド
(72)【発明者】
【氏名】ローリア、オーステン、ウィリアム
(57)【要約】
いくつかの並列プロセスを処理するように構成されたサーバ上で並列プロセスを起動するためのシステムおよび方法が提供される。並列アプリケーションからいくつかの並列プロセスを開始するよう求める要求が受信される。この要求に対応してランチャがサロゲートを作成する。サロゲートはランチャから通信チャネルを継承する。次いでサロゲートは並列プロセスの起動に関連するアクティビティを実行し、次いで並列プロセスを起動する。並列プロセスが起動されサロゲートが終了する。
【特許請求の範囲】
【請求項1】
並列プロセスを起動する方法であって、
並列アプリケーションから、いくつかの並列プロセスを開始するよう求める要求を受信することと、
ランチャによってサロゲートを作成することと、
前記サロゲートによって、前記ランチャから通信チャネルを継承することと、
前記サロゲートによって、fork呼出しの前に、前記いくつかの並列プロセスの起動に関連するアクティビティを実行することと、
前記サロゲートによって、前記いくつかの並列プロセスを起動することと、
前記並列プロセスを実行することと、
前記サロゲートを終了することと
を含む、方法。
【請求項2】
前記いくつかの並列プロセスのうちの一部が、前記サロゲートを使用して起動される、請求項1に記載の方法。
【請求項3】
前記サロゲートを作成する前に、前記ランチャによって親プロセスを作成すること
をさらに含む、請求項1または2に記載の方法。
【請求項4】
前記親プロセスによって、前記並列プロセスのそれぞれに対する通信チャネルを作成すること
をさらに含む、請求項3に記載の方法。
【請求項5】
前記親プロセスによって、前記並列プロセスのそれぞれに対するシステム・リソースを確立すること
をさらに含む、請求項3または4に記載の方法。
【請求項6】
前記システム・リソースが、前記並列プロセスのそれぞれによるexec呼出しの実行前に必要とされるリソースである、請求項5に記載の方法。
【請求項7】
起動することが、
前記いくつかの並列プロセスが関連する実行呼出しに進むことを許可することと、
前記いくつかの並列プロセスのすべてが前記関連する実行呼出しに到達するまで、前記関連する実行呼出しの実行を停止することと
をさらに含む、請求項1ないし6のいずれかに記載の方法。
【請求項8】
前記いくつかの並列プロセスを実行することが、
前記サロゲートによって、前記いくつかの並列プロセスが開始されたとの指示と、前記いくつかの並列プロセスのそれぞれに対するプロセスごとの識別子とを、ランチャからサロゲートまでの通信チャネルを通じて前記ランチャに提供すること
をさらに含む、請求項1ないし7のいずれかに記載の方法。
【請求項9】
前記サロゲートを終了する前に、前記いくつかの並列プロセスの所有権を前記ランチャに譲渡すること
をさらに含む、請求項1ないし8のいずれかに記載の方法。
【請求項10】
譲渡することが、前記いくつかの並列プロセスが実行されるときに行われる、請求項9に記載の方法。
【請求項11】
譲渡することが、
ランチャからサロゲートまでの通信チャネルを提供することと、
前記ランチャからサロゲートまでの通信チャネルを通じて、前記いくつかの並列プロセスのそれぞれに対する並列プロセス追跡を前記ランチャに送信することと、
前記ランチャからサロゲートまでの通信チャネルを通じて、前記サロゲートによって、前記いくつかの並列プロセスに対する制御動作を前記ランチャから受信することと
を含む、請求項9または10に記載の方法。
【請求項12】
前記制御動作が、間接的に接続されたプロセスに対するオペレーティング・システムによって認可されていない動作である、請求項11に記載の方法。
【請求項13】
並列プロセスを起動するためのシステムであって、
いくつかの並列プロセスを要求するように構成された並列アプリケーションと、
前記いくつかの並列プロセスを処理するように構成されたサーバと、
サロゲートを作成するように構成されたランチャであって、他のシステム・サービスと連携し、ピア・プロセスにランタイム情報を提供し、プロセスにリソースを割り当てるようにさらに構成された、前記ランチャと
前記ランチャがさらに関与することなく前記いくつかの並列プロセスを起動するように構成された前記サロゲートと
を含む、システム。
【請求項14】
親プロセスであって、前記サロゲートの作成前に前記ランチャによって作成され、前記いくつかの並列プロセスのそれぞれに対する通信チャネルを作成するよう構成される、前記親プロセス
をさらに含む、請求項13に記載のシステム。
【請求項15】
前記親プロセスが、前記いくつかの並列プロセスのそれぞれに対するfork呼出しの前に前記いくつかの並列プロセスによって必要とされる任意のシステム・リソースを前記いくつかの並列プロセスのそれぞれに対して確立するようにさらに構成される、請求項14に記載のシステム。
【請求項16】
前記ランチャによって作成され、前記ランチャと前記サロゲートと間の通信を許可するように構成された、ランチャからサロゲートまでの通信チャネル
をさらに含む、請求項13、14または15に記載のシステム。
【請求項17】
前記サロゲートが、前記いくつかの並列プロセスのうちの一部のみを起動し、前記ランチャが、前記いくつかのプロセスのうちの残りの数のプロセスを起動する、請求項13ないし16のいずれかに記載のシステム。
【請求項18】
前記サロゲートが、前記いくつかの並列プロセスを起動した後、前記いくつかの並列プロセスを前記ランチャにリペアレントするように構成される、請求項13ないし17のいずれか一項に記載のシステム。
【請求項19】
前記サロゲートが、リペアレンティング後に終了するように構成される、請求項18に記載のシステム。
【請求項20】
少なくとも1つのコンピュータによって実行されたときに前記コンピュータに請求項1ないし12のいずれかに記載の方法を実行させるコンピュータ実行可能命令を有するコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、並列アプリケーションのための並列プロセスの起動に関し、より詳細には、サロゲートを使用した並列プロセスの起動に関する。
【背景技術】
【0002】
並列プロセスを起動するための現在のプロセスは、プロセスを直列方式で起動することである。この手法は、システムに多大なオーバーヘッドをもたらし、基盤となるシステムの全体的な性能に影響を与える。並列プロセスを起動するための起動メカニズムは多くの役割を担うので、結果としてメモリ・フットプリントが増加することにより、プロセス作成中にシステムにさらに多くのオーバーヘッドがかかることになる。
【発明の概要】
【0003】
本開示の実施形態は、サーバ上で並列プロセスを起動するための方法を対象とする。並列アプリケーションから、いくつかの並列プロセスを開始するよう求める要求が受信される。この要求に対応して、ランチャがサロゲートを作成する。サロゲートは、ランチャから通信チャネルを継承する。次いで、サロゲートは、並列プロセスの起動に関連するアクティビティを実行し、次いで、並列プロセスを起動する。並列プロセスが起動され、サロゲートが終了する。
【0004】
本開示の実施形態は、いくつかの並列プロセスを処理するように構成されたサーバ上で並列プロセスを起動するためのシステムを対象とする。システムは、いくつかの並列プロセスを要求するように構成された並列アプリケーションと、サロゲートを作成するように構成されたランチャとを含む。ランチャは、他のシステム・サービスと連携し、ピア・プロセスにランタイム情報を提供し、プロセスにリソースを割り当てるようにさらに構成される。サロゲートは、ランチャがさらに関与することなく、いくつかの並列プロセスを起動するように構成される。
【0005】
本出願に含まれる図面は、本明細書に組み込まれ、本明細書の一部を形成する。図面は、本開示の実施形態を例示しており、説明とともに本開示の原理を説明する役割を果たす。図面は、特定の実施形態を単に例示したものであり、本開示を限定するものではない。
【図面の簡単な説明】
【0006】
図1】実施形態による、サーバ上でいくつかの固有の協働プロセスを同時に起動するためのシステムを示すブロック図である。
図2】実施形態による、ランチャが他のタスクを自由に実行できるようにしながらサロゲートを使用して並列プロセスを効率的に起動するためのプロセスを示す流れ図である。
図3】一実施形態による、コンピューティング・システムを示すブロック図である。
図4】例示的なクラウド・コンピューティング環境の図表現である。
図5】例示的な一実施形態による、クラウド・コンピューティング環境によって提供される一組の機能抽象化層を示す図である。
【発明を実施するための形態】
【0007】
本発明は、様々な修正形態および代替形態に従うことができ、その詳細については、例として図面に示されており、詳細に説明される。しかしながら、本発明を説明される特定の実施形態に限定することは意図されていないことを理解されたい。むしろ、本発明の思想および範囲内にあるすべての修正、均等物、および代替物をカバーすることが意図されている。
【0008】
本開示の態様は、並列アプリケーションのための並列プロセスの起動に関し、より詳細には、サロゲートを使用した並列プロセスの起動に関する。本開示は必ずしもそのような用途に限定されるわけではなく、このコンテキストを使用した様々な例の考察を通じて、本開示の様々な態様が理解され得る。
【0009】
図1は、サーバ上でいくつかの固有の協働プロセスを同時に起動するためのシステムを示すブロック図である。システムは、並列アプリケーション110、サーバ120、ランチャ130、親プロセス140、およびサロゲート150を含む。
【0010】
並列アプリケーション110は、大きなタスクを、同時にまたはほぼ同時に実行されるいくつかのより小さいプロセスに分割するアプリケーションである。これらのより小さいプロセスのそれぞれは、並列プロセスまたは子プロセス160、160-1、160-2、160-3、...160-N(総称して160)と呼ばれる。並列プロセス160によって表される並列アプリケーション110の計算タスクは、互いに独立して実行され、次いで、それらの完了結果が結合されて、最終結果が生成される。しかしながら、いくつかの実施形態では、並列プロセスは、他の並列プロセスと通信して、データを共有すること、またはそれらのアクションを連携させること、あるいはその両方が可能である。並列アプリケーション110は、ビットレベルの並列処理、命令レベルの並列処理、タスク並列処理、またはスーパーワードレベルの並列処理を実装することができる。
【0011】
サーバ120は、並列アプリケーション110からの要求を処理する、システムの構成要素である。サーバ120は、多数の実行ユニットを含む。これらの実行ユニットは、しばしば、ソケット、コア、およびハードウェア・スレッドとして編成される。1つまたは複数のサーバを使用する並列アプリケーション110は、アプリケーションのためにサーバから最大量の性能を引き出すために、最小実行ユニットごとに1つのプロセス(またはスレッド)を配置することを決定することができる。
【0012】
ランチャ130は、並列アプリケーション110内のすべてのプロセスをアプリケーションに割り当てられた一組のサーバ上で同時に開始する役割を担う、並列アプリケーション110起動メカニズムである。ランチャ130は、プロセスの作成を指示し、プロセスのための環境をセットアップし、システム監視サービスにプロセスを登録し、それらのプロセスを実行ユニットにマッピングし、各プロセスにサーバ・リソースをバインドする。ランチャ130はさらに、各プロセスの標準的な入力および出力を中央位置にルーティングする。しかしながら、他の位置を使用することもできる。プロセスを起動するこの手法は、システムにおけるオーバーヘッドである。ランチャ130はさらに、このオーバーヘッドを最小限に抑えてシステム利用率を高めるように構成される。ランチャ130は、プロセスが起動されるサーバ上に存在することも、別のサーバ上に位置することもできる。
【0013】
Linux(R)では、親プロセス140のメモリを子プロセス160内に論理的に複製するfork()関数呼出しを使用して、単一のプロセスが作成される(fork()関数は子プロセスを起動するシステム呼出しの関数であり、並列処理などが求められるケースにおいて使用され、fork()関数を実行すると、呼出し元のプロセスを複製することで新しいプロセスを生成する。その際に生成された新しいプロセスは子プロセスと呼ばれ、呼出し元のプロセスは親プロセスと呼ばれる)。この動作は、実際には、親プロセス140のメモリをコピーするのではなく、代わりに親プロセス140のページ・テーブルのコピーを作り、コピー・オン・ライト・メカニズムを使用して、子プロセス160における後のexec()呼出しの前にfork()の効率を向上させる。fork()システム呼出しは、親プロセス140のメモリ・フットプリントに関連したオーバーヘッドを伴う子プロセス160を作成するときに、カーネル内でシリアル化される。コピー・オン・ライト・メカニズムのオーバーヘッドは、親プロセスおよび子プロセス160が、このようにリンクされている間にメモリ・ページをどの程度まで変更するかに関係する。コピー・オン・ライト・メカニズムが導入されていない場合、forkのオーバーヘッドにより、システムの機能性が大幅に制限される可能性がある。
【0014】
ランチャ130は、サーバ120上でN個の固有の協働プロセスを同時に開始するための効率的なメカニズムを実装する。ランチャ130は、プロセスの作成に加えて、他のシステム・サービスと連携し、ピア・プロセスおよび子プロセス160にランタイム情報を提供し、サーバ120上でリソースを割り当てるというタスクを担当する。ランチャ130に対して、他の追加タスクを与えることもできる。ランチャ130上に配置される追加タスクの数を考慮すると、ランチャ130のメモリ・フットプリントは中程度であるが頻繁に変化することになり、fork()システム呼出しの際にプロセス作成のさらなるオーバーヘッドを引き起こす。サーバ当たり多数プロセスを提起する並列アプリケーションでは、これらの要因により、プロセス作成に関連するオーバーヘッドが高くなる。
【0015】
親プロセス140は、ランチャ130によって作成されるプロセスである。ランチャ130は、一般に、fork()システム呼出しのための親プロセス140である。ランチャ130が異なるサーバ上に常駐している場合、ランチャ130は、設計されたサーバ上に代理のランチャ親プロセス140を作成することになる。親プロセス140は、N個の子プロセス160のそれぞれに対して通信チャネル(例えば、パイプ・ファイル記述子)を作成するように構成される。親プロセス140はさらに、子プロセス160のそれぞれに対して、初回のfork()呼出しのために確立する必要がある任意のシステム・リソースを確立するように構成される。
【0016】
サロゲート150は、子プロセス160を作成するプロセスを実行するように構成されたシステムの構成要素である。サロゲート150は、初回のforkが呼び出されたときに親プロセス140によって作成される。サロゲート150は、各子プロセス160のための通信チャネルのすべてを親プロセス140から継承し、サロゲート150によって子が作成されると、これらのチャネルを子に渡す。サロゲート150はまた、ランチャ130および親プロセス140からのコマンドを各子プロセス160に中継する。いくつかの実施形態では、サロゲート150は、子プロセス160の実行中に各子プロセス160を監視し、子プロセス160の完了をランチャ130または親プロセス140あるいはその両方に通知する。いくつかの実施形態では、子プロセス160のすべてが起動されると、サロゲート150はサロゲート150自体を終了する。この実施形態では、子プロセス160は、親なしの状態(孤児)のままであり、その後、ランチャ130または親プロセス140のいずれかにリペアレント(reparent)されなければならない。ランチャ130と同様に、サロゲート150は、プロセスが起動されるサーバ上に作成されるか、または異なるサーバ上に配置されてもよい。ランチャ130およびサロゲート150は、異なるサーバ上にあってもよい。
【0017】
図2は、ランチャ130が他のタスクを自由に実行できるようにしながらサロゲート150を使用して並列プロセスを効率的に起動するためのプロセス200を示す流れ図である。
【0018】
プロセスは、ランチャ130が並列アプリケーション110からサーバ120上でいくつかのプロセスを開始するよう求める要求を受信したときに開始される。これはステップ210に示されている。要求されるプロセスの数は、プロセスの任意の数であるN個とすることができる。いくつかの実施形態では、要求は特定のサーバに対するものである。しかしながら、要求は、サーバまたは任意の組のサーバ上でアプリケーションを開始するよう求める一般的な要求とすることができる。この実施形態では、ランチャ130は、アプリケーションをホストするために特定のサーバを選択することができる。ランチャ130は、サーバの予想される性能、サーバ上で既に実行されているプロセスの数、またはランチャ130が利用可能な任意の他のメトリックに基づいてサーバを選択することができる。
【0019】
ランチャ130は、要求されたプロセスのすべての起動に対して本開示のサロゲート150を実装する。しかしながら、いくつかの実施形態では、ランチャ130は、要求されたプロセスのすべてではなく一部についてサロゲート150を実装することを決定することができる。いくつかの実施形態では、ランチャ130は、要求されたN個のプロセスについて、プロセスの所定の閾値数を超えるいくつかのプロセスに対してサロゲート150を実装することができる。すなわち、例えば、要求が400個のプロセスであり、プロセスの閾値数が200個である場合、ランチャ130は、プロセスの残りの200個のインスタンスを通常どおり起動しながら、プロセスの200個のインスタンスに対してサロゲート150を使用することになる。いくつかの実施形態では、ランチャ130は、子プロセスの起動のうちの一部をそれぞれが担う複数のサロゲート150プロセスを使用することを決定することができる。
【0020】
ランチャ130は、サロゲート150を作成する前に親プロセス140を作成する。これはステップ220に示されている。親プロセス140は、N個の子プロセス160のそれぞれに対して通信チャネル・セット(例えば、パイプ・ファイル記述子)を作成し、結果としてN個の通信チャネルが得られる。親プロセス140はまた、最初のfork()呼出しのために確立する必要がある任意のシステム・リソースを子プロセス160のために確立する。
【0021】
ランチャ130はまた、ランチャからサロゲート150までの通信専用の通信チャネル(例えば、パイプ・ファイル記述子)を作成する。これはステップ230に示されている。
【0022】
次いで、親プロセス140は、サロゲート150を作成する。これはステップ240に示されている。いくつかの実施形態では、親プロセス140は、一次fork()を呼び出すことによってサロゲート150を作成する。サロゲート150は、サロゲート150アクティビティ用の専用サロゲート150バイナリに対してexec()を呼び出す。サロゲート150は、fork()呼出しとサロゲート150のexec()呼出しとの間で完了するために必要なアクティビティを最小限に抑えるように構成される。
【0023】
サロゲート150が作成されると、サロゲート150は、ランチャ130および親プロセス140から通信チャネルを継承する。これはステップ250に示されている。このステップにおいて、サロゲート150は、子のためのN個の通信チャネル・セットと、fork()呼出しおよびexec()呼出しにわたる、ランチャからサロゲート150までの通信チャネル155とを継承する。
【0024】
ランチャ130は、追加情報をサロゲート150に提供する。これはステップ260に示されている。ランチャ130は、ランチャからサロゲート150までの通信チャネル155を使用して、N個の通信チャネルのうちのどれが、サロゲート150によって作成される子プロセス160のどれに行くかをサロゲート150に指示する。さらに、ランチャ130は、fork()呼出しの前およびexec()呼出しの後のすべてのプロセスに適用される一般的なアクティビティ(例えば、環境変数、システム・サービスとの対話など)、ならびに特定のプロセスに適用されるプロセスごとの特定のアクティビティ(例えば、環境変数、バインディング、exec()呼出し前のランチャ130の親との同期要件)をサロゲート150に通知することができる。
【0025】
サロゲート150は、fork()呼出しの前に実行されるように指定された一般的なアクティビティを実行する。これはステップ270に示されている。次いで、サロゲート150は、N個のプロセスのそれぞれを立て続けに起動する。これはステップ280に示されている。各子プロセス160では、fork()呼出しの後、exec()呼出しの前に、この子プロセス160を対象としていないN-1個の通信チャネルが閉じられ、この子専用の1つの通信チャネルがランチャ130に直接接続される。ランチャ130が、fork()呼出しの後、exec()呼出しの前に、子プロセス160ごとにアクションを行う必要がある場合、ランチャ130は、サロゲート150を通じてそのアクティビティを連携させることができる。しかしながら、いくつかの実施形態では、ランチャ130は、サロゲート150を関与させることなく、その1つの子プロセス160との通信チャネルを直接使用することによって、独自にアクションを行うことができる。
【0026】
子プロセス160が起動されると、子プロセス160は実行を続行することが許可される。これはステップ290に示されている。いくつかの実施形態では、同期された実行が望ましい場合、サロゲート150は、すべての子プロセス160が同期点に到達した場合にのみ、子プロセス160の実行を許可する。いくつかの実施形態では、子プロセス160は、子プロセス160の準備が整うとすぐに、exec()呼出しを開始することができる。この実施形態では、サロゲート150は、ランチャからサロゲート150までの通信チャネル155を使用して、N個の子が注視されていることと、追跡用のそれらのプロセスごとの識別子(PID:per-process identifier)とをランチャ130に通知する。
【0027】
オペレーティング・システムが子プロセス160のリペアレンティングを許可する場合、サロゲート150は、実行呼出し時にN個の子の所有権/制御をランチャ130に譲渡する。その後、サロゲート150は終了することができる。しかしながら、オペレーティング・システムが子プロセス160のリペアレンティングを許可しない場合、サロゲート150は、最後の子が終了するまで存続しなければならない。サロゲート150は、ランチャからサロゲート150までの通信チャネル155を使用して、間接的に接続されたプロセスに対するオペレーティング・システムによって認可されていない子ごとの追跡(例えば、waitpid)動作および制御(例えば、シグナリング)動作を実行するためのプロトコルベースのチャネルをランチャ130に提供する。
【0028】
次に図3を参照すると、本開示の実施形態による並列プロセスを起動するためのサロゲート・プロセスなど、(例えば、コンピュータの1つもしくは複数のプロセッサ回路またはコンピュータ・プロセッサを使用した)本明細書に記載の方法、ツール、およびモジュール、ならびに任意の関連機能のうちの1つまたは複数を実装する際に使用される例示的なコンピュータ・システム301の高レベル・ブロック図が示されている。いくつかの実施形態では、コンピュータ・システム301の主要構成要素には、1つまたは複数のCPU302、メモリ・サブシステム304、端末インターフェース312、ストレージ・インターフェース316、I/O(入力/出力)デバイス・インターフェース314、およびネットワーク・インターフェース318が含まれてもよく、これらはすべて、メモリ・バス303、I/Oバス308、およびI/Oバス・インターフェース・ユニット310を介した構成要素間通信のために、直接的または間接的に通信可能に結合されてもよい。
【0029】
コンピュータ・システム301は、本明細書ではCPU302と総称される1つまたは複数の汎用プログラマブル中央処理装置(CPU)302A、302B、302C、および302Dを含んでもよい。いくつかの実施形態では、コンピュータ・システム301は、比較的大規模なシステムに典型的な複数のプロセッサを含んでもよい。しかしながら、他の実施形態では、コンピュータ・システム301は、代替として、単一のCPUシステムであってもよい。各CPU302は、メモリ・サブシステム304に記憶された命令を実行してもよく、1つまたは複数のレベルのオンボード・キャッシュを含んでもよい。
【0030】
システム・メモリ304は、ランダム・アクセス・メモリ(RAM)322またはキャッシュ・メモリ324などの揮発性メモリの形式のコンピュータ・システム可読媒体を含んでもよい。コンピュータ・システム301は、他の取外し可能/取外し不可能な揮発性/不揮発性コンピュータ・システム記憶媒体をさらに含んでもよい。単なる一例として、「ハード・ドライブ」などの取外し不可能な不揮発性磁気媒体に対する読出しおよび書込みのために、ストレージ・システム326を設けることができる。図示されていないが、取外し可能な不揮発性磁気ディスク(例えば、「フロッピ・ディスク」)に対する読出しおよび書込みのための磁気ディスク・ドライブ、またはCD-ROM、DVD-ROM、または他の光学媒体などの取外し可能な不揮発性光ディスクに対する読出しおよび書込みのための光ディスク・ドライブを設けることができる。加えて、メモリ304は、フラッシュ・メモリ、例えばフラッシュ・メモリ・スティック・ドライブまたはフラッシュ・ドライブを含むことができる。メモリ・デバイスは、1つまたは複数のデータ媒体インターフェースによってメモリ・バス303に接続されることが可能である。メモリ304は、様々な実施形態の機能を実行するように構成されたプログラム・モジュールのセット(例えば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含んでもよい。
【0031】
図3においてメモリ・バス303は、CPU302と、メモリ・サブシステム304と、I/Oバス・インターフェース310との間の直接通信経路を提供する単一のバス構造として示されているが、いくつかの実施形態では、メモリ・バス303は、複数の異なるバスまたは通信経路を含んでもよく、これらは、階層構成、スター構成、もしくはウェブ構成のポイント・ツー・ポイント・リンク、複数の階層バス、並列経路および冗長経路、または任意の他の適切なタイプの構成など、様々な形式のいずれかで配置されてもよい。さらに、I/Oバス・インターフェース310およびI/Oバス308はそれぞれ単一のユニットとして示されているが、いくつかの実施形態では、コンピュータ・システム301は、複数のI/Oバス・インターフェース・ユニット310、複数のI/Oバス308、またはその両方を含んでもよい。さらに、様々なI/Oデバイスにつながる様々な通信経路からI/Oバス308を分離する複数のI/Oインターフェース・ユニットが示されているが、他の実施形態では、I/Oデバイスの一部またはすべてが、1つまたは複数のシステムI/Oバスに直接接続されてもよい。
【0032】
いくつかの実施形態では、コンピュータ・システム301は、マルチユーザ・メインフレーム・コンピュータ・システム、シングルユーザ・システム、または直接的なユーザ・インターフェースをほとんどまたは全く有してないが他のコンピュータ・システム(クライアント)から要求を受信するサーバ・コンピュータもしくは同様のデバイスであってもよい。さらに、いくつかの実施形態では、コンピュータ・システム301は、デスクトップ・コンピュータ、ポータブル・コンピュータ、ラップトップもしくはノートブック・コンピュータ、タブレット・コンピュータ、ポケット・コンピュータ、電話、スマート・フォン、ネットワーク・スイッチもしくはネットワーク・ルータ、または任意の他の適切なタイプの電子デバイスとして実装されてもよい。
【0033】
図3は、本開示のサロゲート・プロセスを実装する例示的なコンピュータ・システム301の代表的な主要構成要素を示すことを意図していることに留意されたい。しかしながら、いくつかの実施形態では、個々の構成要素は、図3に示されるものよりも複雑であっても複雑でなくてもよく、図3に示された構成要素以外の構成要素または図3に示された構成要素に加えられた構成要素が存在してもよく、このような構成要素の数、タイプ、および構成は変化してもよい。
【0034】
メモリ304には、それぞれが少なくとも一組のプログラム・モジュール330を有する1つまたは複数のプログラム/ユーティリティ328が記憶されてもよい。プログラム/ユーティリティ328は、ハイパーバイザ(仮想マシン・モニタとも呼ばれる)、1つまたは複数のオペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データを含んでもよい。オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データのそれぞれ、またはそれらの何らかの組合せは、ネットワーキング環境の実装を含んでもよい。プログラム328またはプログラム・モジュール330あるいはその両方は、一般に、様々な実施形態の機能または方法論を実行する。
【0035】
本開示はクラウド・コンピューティングに関する詳細な説明を含むが、本明細書に記載された教示の実装はクラウド・コンピューティング環境に限定されないことを理解されたい。むしろ、本発明の実施形態は、現在知られているまたは後に開発される他の任意のタイプのコンピューティング環境と併せて実装されることが可能である。
【0036】
クラウド・コンピューティングは、最小限の管理労力またはサービスのプロバイダとの最小限の対話で迅速にプロビジョニングおよびリリースされる構成可能なコンピューティング・リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共用プールへの簡便なオンデマンドによるネットワーク・アクセスを可能にするためのサービス提供のモデルである。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つの展開モデルを含み得る。
【0037】
特徴は、次の通りである。
【0038】
オンデマンド・セルフサービス:クラウド消費者は、サービス・プロバイダと人間との対話を必要とすることなく、必要に応じて自動的に、サーバ時間およびネットワーク・ストレージなどのコンピューティング機能を一方的にプロビジョニングすることができる。
【0039】
広範なネットワーク・アクセス:機能は、ネットワーク上で利用可能であり、異種のシン・クライアント・プラットフォームまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による使用を促進する標準的なメカニズムを介してアクセスされる。
【0040】
リソースのプール化:プロバイダのコンピューティング・リソースは、マルチテナント・モデルを使用して複数の消費者にサービス提供するようにプール化され、要求に応じて、異なる物理リソースおよび仮想リソースが動的に割当ておよび再割当てされる。消費者は一般に、提供されたリソースの正確な位置について制御も知識も有していないが、より高い抽象化レベル(例えば、国、州、またはデータセンタ)で位置を特定することが可能であり得るという点で、位置の独立性があるといえる。
【0041】
迅速な柔軟性:機能を迅速かつ柔軟に、場合によっては自動的にプロビジョニングして、急速にスケール・アウトし、迅速に解放して急速にスケール・インすることができる。消費者にとっては、プロビジョニングに利用可能な機能は、しばしば無制限であるように見え、いつでも任意の数量で購入することができる。
【0042】
サービスの測定:クラウド・システムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅、およびアクティブなユーザ・アカウント)に適した一定の抽象化レベルでの計量機能を活用することによって、リソースの使用を自動的に制御および最適化する。リソースの使用状況を監視、制御、および報告することができ、利用するサービスのプロバイダと消費者との両方に透明性がもたらされる。
【0043】
サービス・モデルは、次の通りである。
ソフトウェア・アズ・ア・サービス(SaaS):クラウド・インフラストラクチャ上で動作しているプロバイダのアプリケーションを使用するために、消費者に提供される機能である。アプリケーションは、ウェブ・ブラウザ(例えば、ウェブ・ベースの電子メール)などのシン・クライアント・インターフェースを介して様々なクライアント・デバイスからアクセス可能である。限定されたユーザ固有のアプリケーション構成設定の想定される例外として、消費者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能を含む基礎となるクラウド・インフラストラクチャを管理も制御もしない。
プラットフォーム・アズ・ア・サービス(PaaS):プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、消費者が作成または取得したアプリケーションをクラウド・インフラストラクチャ上に展開するために、消費者に提供される機能である。消費者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージなどの基礎となるクラウド・インフラストラクチャを管理も制御もしないが、展開されたアプリケーション、および場合によっては環境構成をホストするアプリケーションを制御する。
インフラストラクチャ・アズ・ア・サービス(IaaS):オペレーティング・システムおよびアプリケーションを含み得る任意のソフトウェアを消費者が展開および実行することができる、処理、ストレージ、ネットワーク、および他の基本的なコンピューティング・リソースをプロビジョニングするために、消費者に提供される機能である。消費者は、基礎となるクラウド・インフラストラクチャを管理も制御もしないが、オペレーティング・システム、ストレージ、展開されたアプリケーションを制御し、場合によっては選択されたネットワーキング構成要素(例えば、ホスト・ファイアウォール)を限定的に制御する。
【0044】
展開モデルは、次の通りである。
プライベート・クラウド:クラウド・インフラストラクチャは、ある組織のためだけに運用される。このクラウド・インフラストラクチャは、組織または第三者によって管理される場合があり、オンプレミスまたはオフプレミスに存在する場合がある。
コミュニティ・クラウド:クラウド・インフラストラクチャは、複数の組織によって共有され、関心事項(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンス上の考慮事項)を共有している特定のコミュニティをサポートする。このクラウド・インフラストラクチャは、組織または第三者によって管理される場合があり、オンプレミスまたはオフプレミスに存在する場合がある。
パブリック・クラウド:クラウド・インフラストラクチャは、一般公衆または大規模な業界グループにとって利用可能であり、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:クラウド・インフラストラクチャは、2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の合成であり、これらのクラウドは、固有のエンティティのままであるが、データおよびアプリケーションの移植性(例えば、クラウド間の負荷分散のためのクラウド・バースティング)を可能にする標準化された技術または専用の技術によって結び付けられる。
【0045】
クラウド・コンピューティング環境は、ステートレス性、低結合性、モジュール性、および意味的相互運用性に重点を置いたサービス指向型である。クラウド・コンピューティングの中心は、相互接続されたノードのネットワークを含むインフラストラクチャである。
【0046】
システム100は、クラウド・コンピューティング環境において採用されてもよい。図4は、一実施形態による例示的なクラウド・コンピューティング環境450の図表現である。図示のように、クラウド・コンピューティング環境450は、例えば、携帯情報端末(PDA:personal digital assistant)もしくは携帯電話454A、デスクトップ・コンピュータ454B、ラップトップ・コンピュータ454C、または自動車コンピュータ・システム454Nあるいはその組合せなどのクラウド消費者によって使用されるローカル・コンピューティング・デバイスが通信することができる1つまたは複数のクラウド・コンピューティング・ノード454を含む。ノード454は、互いに通信してもよい。これらは、本明細書で上述したようなプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、もしくはハイブリッド・クラウド、またはその組合せなどの1つまたは複数のネットワーク内で物理的にまたは仮想的にグループ化されてもよい(図示せず)。これにより、クラウド・コンピューティング環境450は、インフラストラクチャ、プラットフォーム、またはソフトウェア、あるいはその組合せを、クラウド消費者がローカル・コンピューティング・デバイス上にリソースを保持する必要のないサービスとして提供することが可能になる。図4に示すコンピューティング・デバイス454A~454Nのタイプが例示のみを意図していること、およびコンピューティング・ノード454およびクラウド・コンピューティング環境450が、任意のタイプのネットワークまたはネットワーク・アドレス指定可能な接続あるいはその両方を介して(例えば、ウェブ・ブラウザを使用して)、任意のタイプのコンピュータ化されたデバイスと通信してもよいことを理解されたい。
【0047】
次に図5を参照すると、クラウド・コンピューティング環境450(図4)によって提供される一組の機能抽象化層が示されている。図5に示す構成要素、層、および機能は、例示のみを意図しており、本開示の実施形態はそれらに限定されないことを予め理解されたい。図示のように、以下の層および対応する機能が提供される。
【0048】
ハードウェアおよびソフトウェア層560は、ハードウェア構成要素およびソフトウェア構成要素を含む。ハードウェア構成要素の例には、メインフレーム561、RISC(縮小命令セット・コンピュータ)アーキテクチャ・ベースのサーバ562、サーバ563、ブレード・サーバ564、ストレージ・デバイス565、ならびにネットワークおよびネットワーキング構成要素566が含まれる。いくつかの実施形態では、ソフトウェア構成要素には、ネットワーク・アプリケーション・サーバ・ソフトウェア567およびデータベース・ソフトウェア568が含まれる。
【0049】
仮想化層570は、抽象化層を提供し、この層から仮想エンティティの以下の例、すなわち、仮想サーバ571、仮想ストレージ572、仮想プライベート・ネットワークを含む仮想ネットワーク573、仮想アプリケーションおよびオペレーティング・システム574、ならびに仮想クライアント575が提供されてもよい。
【0050】
一例では、管理層580は、以下に記載の機能を提供することができる。リソース・プロビジョニング581は、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング・リソースおよび他のリソースの動的な調達を提供する。計量および価格決定582は、クラウド・コンピューティング環境内でリソースが利用されるときのコスト追跡、およびこれらのリソースの消費に対する課金または請求を提供する。一例では、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含むことがある。セキュリティは、クラウド消費者およびタスクのための本人確認、ならびにデータおよび他のリソースのための保護を提供する。ユーザ・ポータル583は、消費者およびシステム管理者にクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理584は、要求されるサービス・レベルが満たされるようなクラウド・コンピューティング・リソースの割当ておよび管理を提供する。サービス・レベル・アグリーメント(SLA)の計画および履行585は、SLAに従って将来要求されることが予想されるクラウド・コンピューティング・リソースの事前配置および調達を提供する。
【0051】
ワークロード層590は、クラウド・コンピューティング環境が利用される機能の例を提供する。この層から提供されるワークロードおよび機能の例には、マッピングおよびナビゲーション591、ソフトウェア開発およびライフサイクル管理592、レイアウト検出593、データ分析処理594、トランザクション処理595、ならびにデータベース596が含まれる。
【0052】
本発明は、任意の可能な技術的詳細の統合レベルでのシステム、方法、またはコンピュータ・プログラム製品あるいはその組合せとすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実施させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(または複数のコンピュータ可読記憶媒体)を含んでもよい。
【0053】
コンピュータ可読記憶媒体は、命令実行デバイスが使用するための命令を保持および記憶することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁気記憶デバイス、半導体記憶デバイス、または上記の任意の好適な組合せとすることができるが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには以下のもの、すなわち、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読出し専用メモリ(ROM)、消去可能プログラマブル読出し専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読出し専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD(R))、メモリ・スティック、フロッピ・ディスク(R)、パンチカードまたは命令が記録された溝内の隆起構造体などの機械的に符号化されたデバイス、および上記の任意の好適な組合せが含まれる。本明細書で使用されるコンピュータ可読記憶媒体は、電波もしくは他の自由に伝播する電磁波、導波路もしくは他の伝送媒体を介して伝播する電磁波(例えば、光ファイバ・ケーブルを通る光パルス)、または電線を介して送信される電気信号などの一過性の信号自体であると解釈されるべきではない。
【0054】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、または、ネットワーク、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、またはワイヤレス・ネットワークあるいはその組合せを介して外部コンピュータまたは外部記憶デバイスにダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバあるいはその組合せを含んでもよい。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、そのコンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体における記憶のために転送する。
【0055】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、インストラクション・セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用の構成データ、または、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語および「C」プログラミング言語もしくは同様のプログラミング言語などの手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組合せで記述されたソース・コードもしくはオブジェクト・コードのいずれかとすることができる。コンピュータ可読プログラム命令は、スタンドアロン・ソフトウェア・パッケージとして全体がユーザのコンピュータ上で、一部がユーザのコンピュータ上で、一部がユーザのコンピュータ上かつ一部がリモート・コンピュータ上で、または全体がリモート・コンピュータ上もしくはサーバ上で実行されてもよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、または(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して接続されてもよい。いくつかの実施形態では、本発明の態様を実行するために、例えば、プログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路が、コンピュータ可読プログラム命令の状態情報を利用して電子回路をパーソナライズすることによって、コンピュータ可読プログラム命令を実行してもよい。
【0056】
本明細書では、本開示の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品の流れ図またはブロック図あるいはその両方を参照しながら、本開示の態様を説明している。流れ図またはブロック図あるいはその両方の各ブロック、および流れ図またはブロック図あるいはその両方におけるブロックの組合せがコンピュータ可読プログラム命令によって実施されることが理解されよう。
【0057】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、流れ図またはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/作用を実施するための手段を作り出すように、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されて、マシンを作り出すものであってもよい。これらのコンピュータ可読プログラム命令はまた、命令が記憶されたコンピュータ可読記憶媒体が、流れ図またはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/作用の態様を実施する命令を含む製造品を含むように、コンピュータ可読媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、または他のデバイスあるいはその組合せに対して特定の方式で機能するように指示できるものであってもよい。
【0058】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラマブル装置、または他のデバイスで実行される命令が、流れ図またはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/作用を実施するように、コンピュータ実施プロセスを作り出すべくコンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされて、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
【0059】
図中の流れ図およびブロック図は、本発明の様々な実施形態によるシステム、方法およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能性、ならびに動作を示す。これに関して、流れ図またはブロック図における各ブロックは、指定された1つまたは複数の論理機能を実装するための1つまたは複数の実行可能命令を含む、命令のモジュール、セグメント、または一部を表すことがある。いくつかの代替の実装形態では、ブロックに記載された機能は、図に記載された順序とは異なる順序で行われてもよい。例えば、連続して示されている2つのブロックは、実際には、関与する機能性に応じて、実質的に同時に実行されてもよく、またはそれらのブロックは、場合によっては逆の順序で実行されてもよい。ブロック図または流れ図あるいはその両方の各ブロック、およびブロック図または流れ図あるいはその両方におけるブロックの組合せは、指定された機能または作用を実行するか、あるいは専用ハードウェアとコンピュータ命令との組合せを遂行する専用ハードウェア・ベースのシステムによって実装されることにも留意されたい。
【0060】
本開示の様々な実施形態の説明は、例示を目的として提示されたものであり、網羅的であること、または開示された実施形態に限定されることを意図したものではない。記載された実施形態の範囲および思想から逸脱することなく、当業者には多くの修正形態および変形形態が明らかであろう。本明細書で使用される用語は、実施形態の原理、実際の適用例、もしくは市場で見られる技術に対する技術的改善を説明するために、または本明細書に開示された実施形態を当業者が理解できるように、選択されたものである。
図1
図2
図3
図4
図5
【国際調査報告】