JP2012068790A - Osのイメージの選択装置、選択方法、及び選択プログラム - Google Patents
Osのイメージの選択装置、選択方法、及び選択プログラム Download PDFInfo
- Publication number
- JP2012068790A JP2012068790A JP2010211812A JP2010211812A JP2012068790A JP 2012068790 A JP2012068790 A JP 2012068790A JP 2010211812 A JP2010211812 A JP 2010211812A JP 2010211812 A JP2010211812 A JP 2010211812A JP 2012068790 A JP2012068790 A JP 2012068790A
- Authority
- JP
- Japan
- Prior art keywords
- image
- images
- pool
- data processing
- processing system
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】プロビジョニングに使用されるデータ処理システムにおいて、事前にキャッシュすべきOSのイメージを選択する技術を提供する。
【解決手段】互いに異なる複数のOSのイメージを有する第1プールと、複数のデータ処理システムを有する第2プールとを含むプロビジョニング・システムにおいて、第1プール内の各OSのイメージについて、該OSのイメージが次のプロビジョニングにおいて使用される確率を算出し、対象データ処理システムにおけるキャッシュのために第1プールから選択可能な1以上のOSのイメージのあらゆる組み合わせの中で、その組み合わせのキャッシュを仮定して得られる次のプロビジョニングにおけるOSのイメージの転送時間の期待値を最小にする1以上のOSのイメージの組み合わせを、対象データ処理システムにおいてキャッシュすべき1以上のOSのイメージとして決定し、決定した組み合わせのOSのイメージの転送を要求する。
【選択図】図4
【解決手段】互いに異なる複数のOSのイメージを有する第1プールと、複数のデータ処理システムを有する第2プールとを含むプロビジョニング・システムにおいて、第1プール内の各OSのイメージについて、該OSのイメージが次のプロビジョニングにおいて使用される確率を算出し、対象データ処理システムにおけるキャッシュのために第1プールから選択可能な1以上のOSのイメージのあらゆる組み合わせの中で、その組み合わせのキャッシュを仮定して得られる次のプロビジョニングにおけるOSのイメージの転送時間の期待値を最小にする1以上のOSのイメージの組み合わせを、対象データ処理システムにおいてキャッシュすべき1以上のOSのイメージとして決定し、決定した組み合わせのOSのイメージの転送を要求する。
【選択図】図4
Description
本発明は、プロビジョニングに使用されるデータ処理システムにおいて事前にキャッシュすべきOSのイメージを選択する技術に関する。
従来、迅速なプロビジョニングをするための方法として、予め所定のオペレーティング・システム(OS)/アプリケーションをインストールしたコンピュータのディスク・イメージをリポジトリ・サーバに複数種類用意しておき、プロビジョニング時にはリポジトリ・サーバから必要なディスク・イメージを選んで、プロビジョニングするコンピュータにコピーするクローン・インストールが知られている。
しかしネットワーク経由での完全なディスク・イメージの転送は時間を要する。また、非常に多くのリソース要求が一度になされる場合、リポジトリ・サーバがボトルネックとなって処理が遅延するおそれがある。
上記問題に関し、特許文献1は、サーバとクライアント間で仮想マシンを転送する際に、仮想マシンのイメージ・ファイルの差分データのみを転送することで、処理の高速化を図る技術を開示する。
しかしながら、特許文献1が開示する技術は、イメージ・ファイルの差分データの取得、及び転送方法に限定されている。即ち、特許文献1は、そのようにイメージ・ファイルの差分データのみの転送によって高速化を図れるようにするための、ベースとなるイメージ・ファイルのキャッシュや、キャッシュすべきイメージ・ファイルの選択方法について何ら開示していない。
この発明は、上記の問題点を解決するためになされたものであって、プロビジョニングに使用されるデータ処理システムにおいて事前にキャッシュすべきOSのイメージを選択する技術を提供することを目的とする。
上記課題を解決するために、本発明の第1の態様においては、互いに異なる複数のオペレーティング・システム(OS)のイメージを有する第1プールと、複数のデータ処理システムを有する第2プールとを含むプロビジョニング・システムにおいて、前記複数のデータ処理システムの1つである対象データ処理システムにおいてキャッシュすべき1以上のOSのイメージを前記第1プール内の前記複数のOSのイメージから選択する選択方法であって、コンピュータの処理により、前記第1プール内の各OSのイメージについて、該OSのイメージが次のプロビジョニングにおいて使用される確率を算出するステップと、前記対象データ処理システムにおけるキャッシュのために前記第1プール内の前記複数のOSのイメージから選択可能な1以上のOSのイメージのあらゆる組み合わせの中で、そのキャッシュを仮定して得られる前記次のプロビジョニングにおける前記対象データ処理システムへのOSのイメージの転送時間の期待値を最小にする1以上のOSのイメージの組み合わせを、キャッシュすべき1以上のOSのイメージとして決定するステップと、を含む選択方法を提供する。
好ましくは、前記確率を算出するステップは、前記第1プール内の前記各OSのイメージについて、該OSのイメージを用いて作成され、かつ前記第2プール内のいずれかのデータ処理システムにおいて現在稼動中のリソースの数を求めるステップを含む。求めたOSのイメージごとのリソースの数は、それぞれ、前記プロビジョニング・システムにおいて現在稼動中のリソースの総数で割ってもよく、あるいはそのまま、前記転送時間の期待値を求めるのに利用してもよい。
更に好ましくは、前記決定するステップは、前記第1プール内のi番目のOSのイメージについて、該OSのイメージのサイズをSi、該OSのイメージを使用して作成され、かつ現在稼動中のリソースの数をpi、及び該OSのイメージの前記対象データ処理システムにおけるキャッシュの状態を2値で表す変数をxiとした場合に、キャッシュする1以上のOSのイメージの合計サイズが前記対象データ処理システムにおけるキャッシュ・サイズを超えないという条件の下、前記第1プール内の全OSのイメージについてのpi *Si *xiの総和を最大にするxiのパターンを算出するステップと、算出したxiのパターンに基づき前記転送時間の期待値を最小にする1以上のOSのイメージの組み合わせ決定するステップとを含む。
更にまた好ましくは、前記第1プール内の全OSのイメージについての前記pi *Si *xiの総和を最大にするxiのパターンを、0−1ナップサック問題の近似アルゴリズムを用いて算出する。
更にまた好ましくは、プロビジョニング時に前記対象データ処理システムにおいて前記第1プール内のOSのイメージの転送要求が生じたことに応答して、前記対象データ処理システムにおいてキャッシュされている1以上のOSのイメージから前記対象データ処理システムにおいて使用中のOSのイメージを除いた残りのOSのイメージに対し、該OSのイメージを用いて作成され、かつ前記第2プール内のいずれかのデータ処理システムにおいて現在稼動中であるリソースの数を取得するステップと、前記キャッシュ・サイズから前記使用中のOSのイメージと新たに転送されるOSのイメージのサイズとを引いた値を新たなキャッシュ・サイズとして、前記対象データ処理システムへのOSのイメージの転送時間の期待値を最小にする1以上のOSのイメージの組み合わせを新たに決定するステップと、前記残りOSのイメージのうち、前記新たに決定された組み合わせに含まれないOSのイメージを前記対象データ処理システムから削除するステップとを含む。
また好ましくは、プロビジョニングによって提供される前記リソースは、前記第1プール内のいずれかのOSのイメージを用いて前記第2プール内のいずれかのデータ処理システム上のハイパーバイザにより提供される仮想マシンである。
また好ましくは、前記第1プールは更に、各OSのイメージについて、該OSのイメージを基に作成されるカスタマイズされたOSのイメージから前記OSのイメージを差し引いた差分のイメージを1以上有し、前記最小の期待値を与える前記第1プール内のOSの1以上のイメージの組み合わせは、OSのイメージと該OSのイメージに対応する差分のイメージとの転送時間の期待値を最小にする。
以上、キャッシュすべき1以上のOSのイメージを選択する選択方法として本発明を説明したが、本発明は、コンピュータに上記選択方法を実行させる選択プログラム及び該選択プログラムをコンピュータにインストールすることによって実現される選択装置として把握することもできる。
本発明によれば、プロビジョニングに使用されるデータ処理システムに対し、OSのイメージの転送時間の期待値を最小にする1以上のOSのイメージの組み合わせが決定され、決定された組み合わせが、データ処理システムにおいて事前にキャッシュすべき1以上のOSのイメージの組み合わせとして決定される。そのため、該決定に従って1以上のOSのイメージを事前にキャッシュすると、プロビジョニング時において、カスタマイズされたOSのイメージからキャッシュされているベースとなるOSのイメージを差し引いた差分のイメージのみを転送すればよい機会が増え、プロビジョニングの高速化を一層促進できる。本発明のその他の効果については、各実施の形態の記載から理解される。
以下、本発明を実施するための形態を図面に基づいて詳細に説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
本発明の説明に入る前に、図1A乃至図1Cを参照して本発明が前提とするプロビジョニング・システムを説明する。図1Aは、ユーザからのリクエストを受け付ける前のプロビジョニング・システム100a内の初期状態を示す。プロビジョニング・システム100aは、ユーザからリソースのリクエストを受信し、該リクエストを満たす仮想マシンを構築してユーザに提供するプロビジョニング・マネージャ102と、仮想マシンを構築するために使用される複数種類のオペレーティング・システム(OS)のイメージを保管するイメージ・プール106としてのリポジトリ・サーバ104と、仮想マシンを構築するために使用される複数のホストマシン110、120を含むホストマシン・プール108とから構成される。プロビジョニング・マネージャ102、リポジトリ・サーバ104、及びホストマシン・プール108内の各ホストマシン110、120は、ネットワーク101を介して互いに接続される。
なお、図1Aでは、ホストマシン・プール108内に2台のホストマシンが示されているが、ホストマシンの台数に制限はないことを理解されたい。
なお、図1Aでは、ホストマシン・プール108内に2台のホストマシンが示されているが、ホストマシンの台数に制限はないことを理解されたい。
ホストマシン・プール108内のホストマシン110、120はそれぞれ、イメージ・キャッシュ116、126とデータディスク・プール118、128とを備える。イメージ・キャッシュ116、126は、リポジトリ・サーバ104から予め受信した主要なOSのイメージを記憶する。データディスク・プール118、128は、フォーマット済みの固定サイズのデータディスクを保管する。また、各ホストマシン110、120には、プロビジョニング・マネージャ102の指示に従って仮想マシンを構築し管理できるように、ホストOS112、122上で動作するハイパーバイザ114、124がそれぞれインストールされている。
図1Bは、ユーザからのリクエストを受け付けた際のプロビジョニング・システム100b内の状態を示す。プロビジョニング・マネージャ102は、ユーザからリソースのリクエストを受信すると、ユーザのリクエストを満たす仮想マシンを構築するのに最も適したホストマシンを選択する。図1Bに示す例では、ユーザのリクエストはOSイメージ1を用いて構築される仮想マシンである。ホストマシン110、120はどちらもイメージ・キャッシュ116、126にOSイメージ1をキャッシュしているので、いずれのホストマシンを選択したとしても仮想マシンの構築に要する時間は同じである。図1Bに示す例では、プロビジョニング・マネージャ102は、仮想マシン構築のためにホストマシン110を選択している。
ホストマシン110のハイパーバイザ114は、プロビジョニング・マネージャ102からOSイメージ1を使用する仮想マシン構築の指示を受けると、OSイメージ1に対する差分イメージ1aをコピー・オン・ライト(copy−on−write、cow)データとして作成する。続いてハイパーバイザ114は、ベースとなるOSイメージ1と差分イメージ1aとを組み合わせてスナップショット・ボリュームを作成し、仮想マシンとして構築するゲストOS1a132のシステム・ディスクとする(矢印130参照)。
上記スナップショット・ボリュームは、例えばLinux(商標)のLogical Volume Managerを用いて作成できる。しかし、そのようなスナップショット・ボリュームを作成できない場合は、ベースとなるOSイメージ1と差分イメージ1aとをマージして、ゲストOS1a132のシステム・ディスクを作成してもよい。マージ処理では、データの処理単位ごとにcowデータ内に変更データがあるか否かを判断し、ある場合はcowデータ内の変更データから、ない場合はベースとなる元のOSイメージ1の該当箇所からコピーを行ってシステム・ディスクを作成する。そのためマージ処理によりシステム・ディスクを作成する場合は、スナップショット・ボリュームを作成する場合に比べて処理に時間を要する。
ハイパーバイザ114はまた、データディスク・プール118から使用可能なデータディスクを選択し、ゲストOS1a132に割り当てる(矢印134参照)。最後にハイパーバイザ114は、ゲストOS1a132をブートする。プロビジョニング・マネージャ102は、ブートされたゲストOS1a132をユーザに提供する。ユーザは、OSイメージ1に対し、設定の変更やアプリケーションの追加等カスタマイズを行うことができる。この際カスタマイズ情報は、cowデータとして作成された差分イメージ1aに保存される。カスタマイズを行ったユーザは、ゲストOS1a132の使用終了時に、プロビジョニング・マネージャ102に対しカスタマイズ情報の保存を要求できる。保存が要求された場合そのカスタマイズ情報である差分イメージ1aは、ホストマシン110からリポジトリ・サーバ104へ転送され、イメージ・プール106に保管される(矢印136参照)。
図1Cは、図1Bに示したプロビジョニング後に新たにユーザからリクエストを受け付けた際のプロビジョニング・システム100c内の状態を示す。図1Cに示す例においても、ユーザのリクエストはOSイメージ1を用いて構築される仮想マシンである。プロビジョニング・マネージャ102は、前回ホストマシン110を選択したことから、今回はホストマシン120を選択して仮想マシンを提供する。
ホストマシン120のハイパーバイザ124は、プロビジョニング・マネージャ102からOSイメージ1を使用する仮想マシン構築の指示を受けると、リポジトリ・サーバ104のイメージ・プール106から、差分イメージ1aを差分イメージ1bとしてそのイメージ・キャッシュ126にコピーする(矢印138参照)。続いてハイパーバイザ124は、ベースとなるOSイメージ1と差分イメージ1bとを組み合わせてスナップショット・ボリュームを作成し、仮想マシンとして構築するゲストOS1b140のシステム・ディスクとする(矢印142参照)。
ハイパーバイザ124はまた、データディスク・プール128から使用可能なデータディスクを選択し、ゲストOS1b140に割り当てる(矢印144参照)。最後にハイパーバイザ124は、ゲストOS1b140をブートする。プロビジョニング・マネージャ102は、ブートされたゲストOS1b140をユーザに提供する。
このように実際のプロビジョニング時には、カスタマイズ情報である差分イメージのみをリポジトリ・サーバ104からホストマシン110、120へ転送すればよいようにするために、ベースとなる主要なOSのイメージを各ホストマシン110、120に事前に記憶させることもできる。しかし本発明では、プロビジョニングの高速化を一層促進するために、キャッシュするベースとなるOSのイメージのより効率的な選択手法を開発した。以下その選択手法について説明する。
本発明のキャッシュするベースとなるOSのイメージの選択手法は、プロビジョニング・システム100a、b、cを構成する、プロビジョニング・マネージャ102とホストマシン・プール108内の各ホストマシン110、120のいずれに実装してもよい。しかしながら、計算速度や資源の有効活用の観点から、本発明を各ホストマシン110、120にそれぞれ実装し、それによって処理を分散させる方が好ましい。そこで以下では、本発明をホストマシン・プール108内の各ホストマシン110、120に実装する場合について説明する。なお、本発明を実装するホストマシンを以下では選択装置とよぶ。
図2は、本発明の実施形態に係る選択装置200の機能ブロック図を示す。本実施例において選択装置200は、図示しない他のホストマシンと共にプロビジョニング・システムにおけるホストマシン・プール212を構成する。選択装置200はまた、ネットワーク214を介して、ユーザからリソースのリクエストを受信し、該リクエストを満たすリソースをユーザに提供するプロビジョニング・マネージャ216と、互いに異なる複数のOSのイメージを有するイメージ・プール222としてのリポジトリ・サーバ220とに接続される。そして、選択装置200は、イメージ・プール222から、キャッシュする1以上のOSのイメージを選択するために、確率算出部202と、組み合わせ決定部204と、キャッシュする1以上のOSのベース・イメージを記憶するイメージ記憶部206と、転送要求部208と、削除部210とを含む。
ここで、リポジトリ・サーバ220のイメージ・プール222に保管される互いに異なる複数のOSのイメージは、例えば、Red HatやOpen SUSE等のLinux(商標)OS、Windows(登録商標)等のOSのイメージであってよい。また、イメージ・プール222は、各OSのイメージについて、カスタマイズされたOSのイメージからベースとなるOSのイメージを差し引いた差分のイメージ(複数可)を更に有してもよい。なお、以下ではベースとなるOSのイメージをベース・イメージという。
プロビジョニング・マネージャ216は、図1A乃至図1Cを参照して説明したプロビジョニング・マネージャ102の機能に加えて、カウンタとしての機能(カウント部218)を更に有する。カウント部218の詳細については後述する。なお、選択装置200は、図1A乃至図1Cを参照して説明したホストマシン・プール108内の各ホストマシン110、120と同様に、プロビジョニング・マネージャ216の指示に従ってリソースを構築するための機能構成を更に有する。かかる機能構成は既に説明した通りであるからここでは説明を省略する。
確率算出部202は、イメージ・プール222内の各ベース・イメージについて、該ベース・イメージが次のプロビジョニングにおいて使用される確率を算出する。このようなあるベース・イメージが次のプロビジョニングで使用される確率は、そのベース・イメージから作成され、かつホストマシン・プール212内のいずれかのホストマシン上で現在稼動中のリソースの数に比例すると仮定して求めてよい。
即ち、確率算出部202は、上記確率を、イメージ・プール222内の各ベース・イメージについて、該ベース・イメージとホストマシン・プール212内のいずれかのホストマシンとを使用して作成され、かつ現在稼動中のリソースの数pを、イメージ・プール220内のいずれかのベース・イメージとホストマシン・プール212内のいずれかのホストマシンとを使用して作成され、かつ現在稼動中のリソースの数Nで除算することにより算出してもよい。
なお、本実施例では、プロビジョニングのためにベース・イメージとホストマシンとを使用して作成されるリソースは仮想マシンであるとする。また、確率算出部202は、キャッシュするベース・イメージの選択処理においては、上記確率を、第1プール内の各ベース・イメージについて算出するが、キャッシュミスにより行うベース・イメージの削除処理では、上記確率を、イメージ記憶部206にキャッシュされている1以上のベース・イメージから選択装置200において使用中のベース・イメージを除いた残りのベース・イメージについて算出する。
ここで、図3を参照して、プロビジョニングによって作成され、かつ、現在稼動中である仮想マシンの数pのカウント方法を具体的に説明する。図3は、あるプロビジョニング・システムにおけるリポジトリ・サーバ300とホストマシン・プール内のホストマシン304、314、322の現在の状況を示す。なお、ホストマシン・プールには、図3に示す3つのホストマシン304、314、322のみが含まれるとする。
まず、イメージ・プール302に格納されるベース・イメージ1に注目する。すると、ベース・イメージ1に対しては、差分イメージ1aと差分イメージ1bとが存在する。従って、ベース・イメージ1から作成され、かつ現在稼動中の仮想マシンは、ホストマシン304における仮想マシン310及び312と、ホストマシン314における仮想マシン320の3つである。従って、ベース・イメージ1についての稼動中の仮想マシンの数pは3となる。
一方、ベース・イメージ2に対しては、差分イメージ2aのみが存在する。従って、ベース・イメージ2から作成され、かつ現在稼動中の仮想マシンは、ホストマシン322における仮想マシン328及び330の2つであり、ベース・イメージ2についての稼動中の仮想マシンの数pは2となる。そして、図3に示すプロビジョニング・システム内において現在稼動中の仮想マシンは、仮想マシン310、312、320、328及び330の5つであるから、仮想マシンの数Nは5となる。最終的に求める確率は、ベース・イメージ1については、3/5=0.6、ベース・イメージ2については、2/5=0.4となる。
確率算出部202は、このようにしてカウントされるベース・イメージごとの現在稼動中の仮想マシンの数pを、プロビジョニング・マネージャ216に要求し、プロビジョニング・マネージャ216の後述するカウント部218から、ベース・イメージごとの現在稼動中の仮想マシンの数pを取得してよい。そして確率算出部202は、イメージ・プール222内のいずれかのベース・イメージから作成され、かつ現在稼動中の全仮想マシンの数Nを、ベース・イメージごとの現在稼動中の仮想マシンの数pを合計することにより求めてよい。
本実施例におけるプロビジョニング・マネージャ216はカウント部218を有し、カウント部218は、イメージ・プール222内のベース・イメージごとのカウンタを有する。カウント部218は、プロビジョニング・マネージャ216におけるユーザからの仮想マシン作成のリクエストの受信に応答して、該リクエストにより指定されるベース・イメージのカウンタを1インクリメントする。カウント部218はまた、プロビジョニング・マネージャ102における仮想マシン破棄のリクエストの受信に応答して、該リクエストにおいて指定されるベース・イメージのカウンタを1デクリメントする。カウント部218は、確率算出部202からの要求に応答して、各ベース・イメージのカウンタの現在の値を、該ベース・イメージから作成され、かつ現在稼動中の仮想マシンの数pとして返す。
確率算出部202は、プロビジョニング・マネージャ216から、ベース・イメージごとの現在稼動中の仮想マシンの数pを取得すると、これを基に各ベース・イメージが次のプロビジョニングで使用される確率p/Nを求め、後述する組み合わせ決定部204へ渡す。なお、確率算出部202は、確率p/Nの代わりに、各ベース・イメージの現在稼動中の仮想マシンの数pをそのまま後述する組み合わせ決定部204へ渡してもよい。
組み合わせ決定部204は、選択装置200におけるキャッシュのためにイメージ・プール222内の1以上のベース・イメージから選択可能な1以上のベース・イメージのあらゆる組み合わせの中で、その組み合わせのベース・イメージのキャッシュを仮定して得られる次のプロビジョニングにおける選択装置200へのイメージの転送時間の期待値E1を最小にする1以上のベース・イメージの組み合わせを、選択装置200においてキャッシュすべき1以上のベース・イメージとして決定する。なお、注目する転送時間の期待値E1は、ベース・イメージと該ベース・イメージに対する差分イメージとを合わせたカスタム・イメージの転送時間の期待値である。しかしながら、後述するように、最小の期待値を与えるベース・イメージの組み合わせは、カスタム・イメージの転送時間の期待値E1のみならず、ベース・イメージの転送時間の期待値をも最小化する。
上記カスタム・イメージの転送時間の期待値E1は、次式により表される。
上式における各変数の定義は次の通りである。
i:イメージ・プール222に格納されている各ベース・イメージのインデックス
xi:イメージ記憶部206におけるインデックスiのベース・イメージのキャッシュ状態を示す2値変数。キャッシュされている場合値1を、そうでない場合値0をとる
Si:インデックスiのベース・イメージのサイズ
j:イメージ・プール222に格納されている各差分イメージのインデックス
Di:インデックスiのベース・イメージをそのベース・イメージとする差分イメージのインデックスの集合
Δj:インデックスjの差分イメージのサイズ
T:選択装置200におけるイメージのコピーのスループット
N:プロビジョニング・システム内で稼動中の仮想マシンの数
nj:インデックスjの差分イメージを用いて作成された稼動中の仮想マシンの数
上式における各変数の定義は次の通りである。
i:イメージ・プール222に格納されている各ベース・イメージのインデックス
xi:イメージ記憶部206におけるインデックスiのベース・イメージのキャッシュ状態を示す2値変数。キャッシュされている場合値1を、そうでない場合値0をとる
Si:インデックスiのベース・イメージのサイズ
j:イメージ・プール222に格納されている各差分イメージのインデックス
Di:インデックスiのベース・イメージをそのベース・イメージとする差分イメージのインデックスの集合
Δj:インデックスjの差分イメージのサイズ
T:選択装置200におけるイメージのコピーのスループット
N:プロビジョニング・システム内で稼動中の仮想マシンの数
nj:インデックスjの差分イメージを用いて作成された稼動中の仮想マシンの数
数式1によりカスタム・イメージの転送時間の期待値E1が表されることを以下に説明する。上述のように2値変数xiは、xi=1のときインデックスiのベース・イメージがイメージ記憶部206にキャッシュされており、xi=0のときインデックスiのベース・イメージがイメージ記憶部206にキャッシュされていないことを示す。従って、xi=0の場合、インデックスiのベース・イメージはイメージ記憶部206にキャッシュされていないので、インデックスiのベース・イメージとインデックスjの差分イメージとを基に作成されるカスタム・イメージの転送時間は(Si+Δj)/Tとなる。但し、インデックスjは集合Diの要素である(以下同じ)。
一方、xi=1の場合、インデックスiのベース・イメージはイメージ記憶部206にキャッシュされているので、インデックスiのベース・イメージとインデックスjの差分イメージとを基に作成されるカスタム・イメージの転送時間はΔj/Tとなる。これら2つのケースを、2値変数xiを使って表すことを考える。すると、インデックスiのベース・イメージとインデックスjの差分イメージを基に作成されるカスタム・イメージの転送時間は、{(1- xi)* Si+Δj}/Tより表わされる。
また、本実施例では、インデックスjの差分イメージが次のプロビジョニングで使用される確率は、インデックスjの差分イメージから作成された現在稼動中の仮想マシンの数に比例すると仮定する。すると上記確率はnj/ Nより表わされる。従って、カスタム・イメージの転送時間の期待値E1は、個々のカスタム・イメージの転送時間を示す{(1- xi)* Si+Δj}/Tと、該カスタム・イメージが次のプロビジョニングで使用される確率nj/ Nとの積を、全てのカスタム・イメージで総和をとることにより求められ、最終的に数式1が得られる。そして、数式1において転送時間の期待値E1を最小にするxiの割り当てを求めることが、選択装置200においてキャッシュする1以上のベース・イメージの組み合わせを求めることになる。
そこで数式1の右辺を、イメージ・プール222内のベース・イメージごとに求められる稼動中の仮想マシンの数を用いて変形する。かかる稼動中の仮想マシンの数は、上述したように確率算出部202に対し、確率nj/ Nの代わりに要求することにより取得される。すると、カスタム・イメージの転送時間の期待値E1は次のように書き直される。
数式2をみると、第1項目と第2項目はxiを含んでいないため定数となる。従って、転送時間の期待値E1を最小にするには、第3項を最小にすればよいが、第3項目にはマイナスがついている。結局、転送時間の期待値E1を最小化にするには、次式を最大化すればよい。
なお、ベース・イメージの転送時間の期待値は、数式2において第2項を除いたものであるから、カスタム・イメージの転送時間の期待値E1を最小にするベース・イメージの組み合わせは、ベース・イメージの転送時間の期待値をも最小化することに留意されたい。
なお、ベース・イメージの転送時間の期待値は、数式2において第2項を除いたものであるから、カスタム・イメージの転送時間の期待値E1を最小にするベース・イメージの組み合わせは、ベース・イメージの転送時間の期待値をも最小化することに留意されたい。
ところで選択装置200におけるキャッシュのためにイメージ・プール222内の1以上のベース・イメージから選択可能なベース・イメージの組み合わせは、その組み合わせのベース・イメージの合計サイズが、選択装置200におけるキャッシュ・サイズを超えないものである必要がある。従って、数式3を最大化する際には、次式で表される条件が課される。
ここでWは、選択装置200おけるキャッシュ・サイズ(例えば、イメージ記憶部206の容量)を示す。
ここでWは、選択装置200おけるキャッシュ・サイズ(例えば、イメージ記憶部206の容量)を示す。
このように、転送時間の期待値E1を最小にするxiの割り当てを求める問題は、数式4で示される条件の下、数式3で表される値を最大化する問題に置き換えられる。この問題は、0−1ナップサック問題として捉えることができ、0−1ナップサック問題の近似アルゴリズムを用いて解くことができる。
0−1ナップサック問題とは、「容量Mのと、N個のアイテム(k番目のアイテムは、価値value[k]、容量weight[k]を有する)が与えられたとき、ナップサックの容量Mを超えないという条件の下で、ナップサックに詰めるアイテムの価値の和を最大化するにはどのアイテムを選択すればよいか」というである。
従って、サイズWのキャッシュは容量Mのに、イメージ・プール222内の各ベース・イメージはN個のアイテムに、ベース・イメージのサイズSiはアイテムのweight[k]に、ベース・イメージについての(pi *Si)はアイテムの価値value[k]にそれぞれ対応させることで、転送時間の期待値E1を最小にするxiの割り当てを求める問題を、0−1ナップサック問題として解くことが可能となる。
0−1ナップサックの問題の解法は公知であり、複数のアルゴリズムが提案されている。本実施例では、TimothyJ. Rolfe, ”AnAlternative Dynamic Programming Solution for the 0/1 Knapsack”, ACM SIGC SE Bulletin, Volume 39, Issue 4, December 2007, Pages 54-56のセクション3.に記載されているアルゴリズムを使用する。この解法は、ナップサックの容量Mの条件の下、N個のアイテム(k番目のアイテムは、価値value[k]、容量weight[k]を有する)を1つ1つ試しながら、ボトムアップ方式で価値の和の最大値を求める手法である。以下、上記アルゴリズムの概要を説明する。
まず、前準備として、各容量wt(0 以上M以下の整数)に対し求められる価値の和の最大値を格納するための配列bestVal[wt]を用意し、wt=0の要素を値0で初期化する。また、各容量wt(0 以上M以下の整数)について価値の和の最大値を与えるアイテムの組み合わせを示す、M×Nサイズの2次元のboolean配列trial[wt][k]を用意し、各要素をfalseで初期化する。そして小さい容量wtから順に、次の(1)〜(4)の処理を繰り返して、各容量wtについての価値の和の最大値と、その最大値を与えるアイテムの組み合わせとを求める。その際、bestVal[wt]>=bestVal[wt-1]であるとして、最初にbestVal[wt]の値をbestVal[wt-1]の値で初期化する。また最大値を与えるアイテムの識別子bestKを値0で初期化する。
(1)N個のアイテムのうちk番目(kは1からNまでの正の整数)のアイテムを入れることを考える。まず、k番目のアイテムを入れた場合に、容量wtを超えないこと、また、k番目のアイテムを入れた場合に、重複したアイテムの利用にならないことを確認する。どちらか一方でも該当する場合、k番目のアイテムを検討対象から外す。なお、重複アイテムの利用は、trial [wt-weight[k]]の行をチェックすることにより確認できる。
(2)(1)においてk番目のアイテムを検討対象とする場合、k番目のアイテムを入れるとして考えた場合の価値の和の最大値と、k番目のアイテムを入れないとして考えた場合の価値の和の最大値とを比較し、大きいほうを価値の和の最大値とする。
(3)(2)において、k番目のアイテムを入れるとした場合の価値の和の最大値は、現在の容量wtからk番目のアイテムの容量weight[k]を引いた容量についての価値の和の最大値bestVal[wt-weight[k]]に、k番目のアイテムの価値value[k]を足すことにより求められる。なお(2)において、k番目のアイテムを入れるとして考えた場合の価値の和の最大値の方が大きい場合、該最大の価値の和をbestVal[wt]に、アイテムの識別子kをbestKにそれぞれ登録する。
(4)容量wtに対し全アイテムの検討が終了し、かつbestVal[wt-1]よりも大きい価値の和の最大値が得られた場合、行列trialのwt-weight[bestK]行の各要素の値を、wt行の各要素にコピーする。但し、要素trial[wt][bestK]については、値trueを登録する。これは、容量wtのナップサックに詰めるアイテムの価値の和を最大化するのは、容量wt-weight[bestK]のナップサックに詰めるアイテムの価値の和を最大化するアイテムの集合に、bestKのアイテムを加えたアイテムの集合だからである。一方、容量wtに対し、bestVal[wt-1]よりも大きい価値の和の最大値が得られなかった場合、行列trialのwt-1行の各要素の値を、wt行の各要素にコピーする。
組み合わせ決定部204は、0−1ナップサック問題の近似アルゴリズムを用いて転送時間の期待値E1を最小にするxiの割り当てを求めると、その結果を転送要求部208に渡す。
転送要求部208は、組み合わせ決定部204により渡されたxiの割り当て結果に基づいて、リポジトリ・サーバ220にベース・イメージの転送を要求する。即ち、転送要求部208は、xiの値が1であるベース・イメージの転送をリポジトリ・サーバ220に要求する。転送要求部208が受信したベース・イメージは、その後イメージ記憶部206に格納され事前キャッシュされる。
組み合わせ決定部204はまた、プロビジョニング時に選択装置200において指定されたベース・イメージがなく、イメージ・プール222内のベース・イメージの転送要求が生じたことに応答して、イメージ記憶部206にキャッシュされている1以上のベース・イメージから選択装置200において現在使用中のベース・イメージを除いた残りのベース・イメージに対し、選択装置200へのイメージの転送時間の期待値を最小にするベース・イメージの組み合わせを新たに決定する。なお、注目する転送時間の期待値E2は、ベース・イメージと該ベース・イメージに対する差分イメージとを合わせたカスタム・イメージの転送時間の期待値である。しかしながら、後述するように、最小の期待値E2を与える新たなベース・イメージの組み合わせは、カスタム・イメージの転送時間の期待値のみならず、ベース・イメージの転送時間の期待値をも最小化する。
新たなベース・イメージの組み合わせの決定は、新たに転送されるベース・イメージを記憶するためのスペースをイメージ記憶部206内に用意するために行われる。従って、イメージ記憶部206にキャッシュされている1以上のベース・イメージから選択装置200において現在使用中のベース・イメージを除いた残りのベース・イメージ(以下、単に残りのベース・イメージという)のうち、新たに決定される組み合わせに含まれないベース・イメージは、イメージ記憶部206から削除される。
上記カスタム・イメージの転送時間の期待値E2は、数式1に関して説明したのと同様の考えにより求められ、次式により表される。
上式における各変数の定義は数式1に関して説明したのと同じであるから、ここでは新たに導入した変数について説明する。
C:選択装置200のイメージ記憶部206内に記憶されているベース・イメージのインデックスの集合
R:選択装置200において現在稼動中の仮想マシンの生成に用いられたベース・イメージのインデックスの集合
上式における各変数の定義は数式1に関して説明したのと同じであるから、ここでは新たに導入した変数について説明する。
C:選択装置200のイメージ記憶部206内に記憶されているベース・イメージのインデックスの集合
R:選択装置200において現在稼動中の仮想マシンの生成に用いられたベース・イメージのインデックスの集合
数式5において転送時間の期待値E2を最小にするxiの割り当てを求めることが、イメージ記憶部206に残しておくべきベース・イメージの組み合わせを求めることになる。
そこで数式5の右辺を、残りのベース・イメージ内のベース・イメージごとに求められる稼動中の仮想マシンの数を用いて変形する。かかる稼動中の仮想マシンの数は、上述したように確率算出部202に対し、確率nj/ Nの代わりに要求することにより取得される。すると、転送時間の期待値E2は次のように書き直される。
ここでpiは、確率算出部202から取得される、インデックスiのベース・イメージから作成されたカスタム・イメージを用いて稼動中の仮想マシンの数を示す。
ここでpiは、確率算出部202から取得される、インデックスiのベース・イメージから作成されたカスタム・イメージを用いて稼動中の仮想マシンの数を示す。
数式6をみると、第1項目と第2項目はxiを含んでいないため定数となる。従って、転送時間の期待値E2を最小にするには、第3項を最小にすればよいが、第3項目にはマイナスがついている。結局、転送時間の期待値E2を最小化するには、次式を最大化すればよい。
なお、ベース・イメージの転送時間の期待値は、数式6において第2項を除いたものであるから、カスタム・イメージの転送時間の期待値E2を最小にするベース・イメージの組み合わせは、ベース・イメージの転送時間の期待値をも最小化することに留意されたい。
なお、ベース・イメージの転送時間の期待値は、数式6において第2項を除いたものであるから、カスタム・イメージの転送時間の期待値E2を最小にするベース・イメージの組み合わせは、ベース・イメージの転送時間の期待値をも最小化することに留意されたい。
ところでイメージ記憶部206には、選択装置200において現在使用中のベース・イメージが記憶されており、また、新たに転送されるベース・イメージのためのスペースを用意しておく必要もある。従って、数式7を最大化する際には、次式で表される条件が課される。
Wは、数式4に関して説明したとおりキャッシュ・サイズを示す。kは、新たに転送されるベース・イメージのインデックスを示し、Skは、新たに転送されるベース・イメージのサイズを示す。
Wは、数式4に関して説明したとおりキャッシュ・サイズを示す。kは、新たに転送されるベース・イメージのインデックスを示し、Skは、新たに転送されるベース・イメージのサイズを示す。
このように、転送時間の期待値E2を最小にするxiの割り当てを求める問題は、数式8で示される条件の下、数式7で表される値を最大化する問題に置き換えられる。そしてこの問題も、0−1ナップサック問題として捉えることができ、0−1ナップサック問題の近似アルゴリズムを用いて解くことができる。
組み合わせ決定部204は、0−1ナップサック問題の近似アルゴリズムを用いて転送時間の期待値E2を最小にするxiの割り当てが求めると、その結果を削除部210に渡す。
削除部210は、組み合わせ決定部204により渡されたxiの割り当て結果に基づいて、イメージ記憶部206に記憶されたベース・イメージを削除する。即ち、削除部210は、xiの値が0であるベース・イメージをイメージ記憶部206から削除する。
次に図4及び図5を参照して、本発明の選択装置200による処理の流れを説明する。図4は、本発明の選択装置200によるベース・イメージのキャッシュ処理の流れを示すフローチャートである。図5は、本発明の選択装置200によるベース・イメージの削除処理の流れを示すフローチャートである。
図4に示す処理は、選択装置200が新たにホストマシン・プール212にホストマシンとして追加される際に開始され、確率算出部202は、イメージ・プール222内の各ベース・イメージについて、該ベース・イメージが次のプロビジョニングにおいて使用される確率を算出する(ステップ400)。算出されたベース・イメージごとの確率は、組み合わせ決定部202に渡される。
上述したように、あるベース・イメージが次のプロビジョニングで使用される確率は、そのベース・イメージから作成され、かつ現在稼動中の仮想マシンの数に比例すると仮定して求めてよい。更に確率算出部202は、ベース・イメージごとの現在稼動中の仮想マシンの数を、プロビジョニング・マネージャ216のカウント部218から取得し、取得したベース・イメージごとの稼動中の仮想マシン数を、そのまま組み合わせ決定部202に渡してもよい。
確率算出部202からベース・イメージごとの確率又は稼動中の仮想マシンの数を受け取ると、組み合わせ決定部204は、選択装置200におけるキャッシュのためにイメージ・プール222内の1以上のベース・イメージから選択可能な1以上のベース・イメージのあらゆる組み合わせの中で、その組み合わせのキャッシュを仮定して得られる次のプロビジョニングにおける選択装置200へのベース・イメージの転送時間の期待値を最小にする1以上のベース・イメージの組み合わせを、キャッシュすべき1以上のベース・イメージとして決定する(ステップ405)。決定したベース・イメージの組み合わせは、転送要求部208へ渡される。
上述したように、転送時間の期待値を最小にするベース・イメージの組み合わせを求める問題は、キャッシュする1以上のベース・イメージの合計サイズが選択装置200におけるキャッシュ・サイズを超えないという条件の下、イメージ・プール222内の全ベース・イメージについてのpi *Si *xiの総和を最大化するxiのパターンを算出する問題に置き換えられる。そしてこの問題は0−1ナップサック問題の近似アルゴリズムを用いて算出することができる。なお、変数pi、Si 、xiのそれぞれの意味は、数式1及び2に関して説明した通りである。0−1ナップサック問題の近似アルゴリズムの処理のフローは、図6を参照して後述する。
転送要求部208は、決定されたベース・イメージの組み合わせの結果に基づいて、リポジトリ・サーバ220にベース・イメージの転送を要求し、リポジトリ・サーバ220から受信したベース・イメージをイメージ記憶部206に保存する(ステップ410)。そして処理は終了する。
図5に示す処理は、プロビジョニング時に選択装置200においてキャッシュミスが生じ、リポジトリ・サーバ220に対しベース・イメージの転送を要求する必要が生じたことに応答してステップ500から開始される。ステップ500において、確率算出部202は、イメージ記憶部206にキャッシュされている1以上のベース・イメージから選択装置200において使用中のベース・イメージを除いた残りのベース・イメージについて、該ベース・イメージが次のプロビジョニングにおいて使用される確率を算出する。算出されたベース・イメージごとの確率は、組み合わせ決定部202に渡される。
上述したように、あるベース・イメージが次のプロビジョニングで使用される確率は、そのベース・イメージから作成され、かつ現在稼動中の仮想マシンの数に比例すると仮定して求めてよい。更に確率算出部202は、ベース・イメージごとの現在稼動中の仮想マシンの数をプロビジョニング・マネージャ216のカウント部218から取得し、取得したベース・イメージごとの稼動中の仮想マシン数を、そのまま組み合わせ決定部202に渡してもよい。
確率算出部202からベース・イメージごとの確率又は稼動中の仮想マシンの数を受け取ると、組み合わせ決定部204は、選択装置200におけるキャッシュ・サイズから使用中のベース・イメージと新たに転送されるベース・イメージのサイズとを差し引いた値を、新たなキャッシュ・サイズとして、イメージ記憶部206内の残りのベース・イメージについて、選択装置200へのベース・イメージの転送時間の期待値を最小にするベース・イメージの組み合わせを新たに決定する(ステップ505)。決定したベース・イメージの組み合わせは、削除部210へ渡される。
上述したように、転送時間の期待値を最小にするベース・イメージの組み合わせを求める上記問題は、イメージ記憶部206内の残りのベース・イメージのうちイメージ記憶部206に残す1以上のベース・イメージの合計サイズが、上記新たなキャッシュ・サイズを超えないという条件の下、イメージ記憶部206内の残りのベース・イメージの全てについてのpi*Si *xiの総和を最大化するxiのパターンを算出する問題に置き換えられる。そしてこの問題は0−1ナップサック問題の近似アルゴリズムを用いて算出することができる。なお、変数pi、Si 、xiのそれぞれの意味は、数式5及び6に関して説明した通りである。0−1ナップサック問題の近似アルゴリズムの処理のフローは、図6を参照して後述する。
削除部210は、決定されたベース・イメージの組み合わせの結果に基づき、結果の組み合わせに含まれないベース・イメージをイメージ記憶部206から削除する(ステップ510)。そして処理は終了する。
次に図6を参照して、0−1ナップサック問題の近似アルゴリズムの処理の流れを説明する。まず、アルゴリズムの擬似コードを以下に示す。該擬似コードは、上述したTimothyにより提案されるアルゴリズムに基づくものであり、使用されている変数や配列は、上記アルゴリズムに関して説明した通りである。但し、擬似コードでは、ナップサックの容量をmaxWeight、アイテムの個数をn(k番目のアイテムは価値value[k]、重さweight[k]を有する)とした。
01 for ( wt = 1; wt <= maxWeight; wt++ )
02 { intbestK = 0, testWt;
03
04 //Initial guess: the knapsack forwt-1.
05 bestVal[wt] = bestVal[wt-1];
06 for ( k = 1; k <= n; k++ )
07 { testWt = wt -weight[k];
08 if( testWt >= 0 && ! trial[testWt][k] )
09 if( bestVal[wt] < value[k]+bestVal[testWt] )
10 {bestK = k;
11 bestVal[wt] =value[k]
12 + bestVal[testWt];
13 }
14 }
15 if (bestK> 0)
16 { testWt = wt -weight[bestK];
17 System.arraycopy(trial[testWt],0,
18 trial[wt],0, n+1);
19 trial[wt][bestK]= true;
20 }
21 else // Finishusing the wt-1 solution
22 System.arraycopy(trial[wt-1], 0,
23 trial[wt],0, n+1);
24 }
02 { intbestK = 0, testWt;
03
04 //Initial guess: the knapsack forwt-1.
05 bestVal[wt] = bestVal[wt-1];
06 for ( k = 1; k <= n; k++ )
07 { testWt = wt -weight[k];
08 if( testWt >= 0 && ! trial[testWt][k] )
09 if( bestVal[wt] < value[k]+bestVal[testWt] )
10 {bestK = k;
11 bestVal[wt] =value[k]
12 + bestVal[testWt];
13 }
14 }
15 if (bestK> 0)
16 { testWt = wt -weight[bestK];
17 System.arraycopy(trial[testWt],0,
18 trial[wt],0, n+1);
19 trial[wt][bestK]= true;
20 }
21 else // Finishusing the wt-1 solution
22 System.arraycopy(trial[wt-1], 0,
23 trial[wt],0, n+1);
24 }
図6は、上記擬似コードに沿った0−1ナップサック問題の近似アルゴリズムの処理の流れを示すフローチャートである。図6に示す処理はステップ600から開始し、容量の小さい方から順に価値の和の最大値を求めるために、まず、容量wtに値1を設定する。続いてステップ605において、容量wtが、maxWeight以下であるか否かを判定する。
ステップ605において、容量wtがmaxWeight以下である場合、処理はステップ610へ進み、容量wtのナップサックに詰めるアイテムの価値の和の最大値bestVal[wt]をbestVal[wt-1]の値で、該最大値を与えるアイテムbestKを値0で、それぞれ初期化する。また検討対象のアイテムのインデックスkに値1を設定する。
続いて、ステップ615において、検討対象のアイテムのインデックスkがnより小さいか否かを判定する。検討対象のアイテムのインデックスkがnより小さい場合、即ち、n個の全アイテムについての検討がまだ終わっていない場合(ステップ615:YES)、処理はステップ620へ進み、容量wtからインデックスkのアイテムの容量weight[k]を引いた値を、残りの空き容量を示す変数testWtに設定する。
続いて、ステップ625において、変数testWtの値が0以上、かつtrial[testWt][k]がfalseであるか否かを判定する。変数testWtの値が0以上であり、かつtrial[testWt][k]がfalseである場合、即ち、インデックスkのアイテムを入れても容量wtを超えず、かつインデックスkのアイテムが、容量testWtに対し価値の和を最大化するアイテムの1つでない場合(ステップ625:YES)、処理はステップ630へ進み、インデックスkのアイテムを入れた場合の価値の和の最大値tを、bestVal[testWt]の値にvalue[k]の値を足すことにより求める。
続いて処理はステップ635へ進み、インデックスkのアイテムを入れた場合の価値の和の最大値tが、インデックスkのアイテムを入れない場合の価値の和の最大値bestVal[wt]より大きいか否かを判定する。インデックスkのアイテムを入れた場合の価値の和の最大値tが大きい場合(ステップ635:YES)、処理はステップ640へ進み、bestVal[wt]にインデックスkのアイテムを入れた場合の価値の和の最大値tを、また、bestKにインデックスkの値を、それぞれ設定する。
ステップ625において、変数testWtの値が0より小さいか、又はtrial[testWt][k]がtrueである場合、即ち、インデックスkのアイテムを入れると容量wtを超えてしまうか、又はインデックスkのアイテムが、容量testWtに対し価値の和を最大化するアイテムの1つである場合(ステップ625:NO)、又は、ステップ635においてインデックスkのアイテムを入れない場合の価値の和の最大値bestVal[wt]の方が大きい場合、或いはステップ640から、処理はステップ645へ進み、アイテムのインデックスkを1インクリメントする。そして処理はステップ615へ戻り、次のインデックスのアイテムについて再び同様の処理を行う。
ステップ615において、検討対象のアイテムのインデックスkがnに等しい場合、即ち、容量wtに対しn個の全アイテムについての検討が終わった場合(ステップ615:NO)、処理はステップ650へ進み、bestKの値が0より大きいか否かを判定する。bestKの値が0より大きい場合(ステップ650:YES)、即ち、容量wtに対し、bestVal[wt-1]よりも大きい価値の和の最大値が得られた場合、変数testWtに、容量wtからインデックスbestKのアイテムの容量weight[bestK]を引いた値を設定し、trial[testWt]行の各要素の値を、trial[wt]行のの各要素へコピーし、更に、要素trial[wt][bestK]には、値trueを上書きする(ステップ655)。
一方、bestKの値が0である場合(ステップ650:NO)、即ち、容量wtに対し、bestVal[wt-1]よりも大きい価値の和の最大値が得られなかった場合、trial[testWt-1]行の各要素の値を、trial[wt]行の各要素へコピーする(ステップ660)。ステップ655及びステップ660のいずれかにより、容量wtのナップサックに詰めるアイテムの価値の和を最大化するアイテムの組み合わせが、trial[wt]に登録される。
ステップ655又はステップ660から、処理はステップ665へ進み、容量wtを1インクリメントする。続いて、処理はステップ605へ戻り、容量wtが目的のmaxWeightを超えるまで、上述した一連の処理を繰り返す。そしてステップ605において、容量wtがmaxWeightを超えている場合、処理は終了する。
最終的に求めるべき、容量maxWeightについて価値の和を最大化するアイテムの組み合わせは、trial[maxWeight]行の各値より得られる。即ち、trial[maxWeight][k]=trueならば、インデックスkのアイテムは容量maxWeightについて価値の和を最大化するアイテムの1つである。trial[maxWeight][k]=falseならば、インデックスkのアイテムは容量maxWeightについて価値の和を最大化するアイテムの1つで
図6を参照して説明した0−1ナップサック問題の近似アルゴリズムの本発明への適用は次のようにして行う。まず、Uをベース・イメージのサイズの単位(例えば、256MB)とする。そして、各変数に次のように値を設定する。
maxWeight=キャッシュのサイズを単位Uで切り上げた値(例えば、100GB)
N=キャッシュする候補となるベース・イメージの総数
weight[i]=インデックスiのベース・イメージのサイズSiを単位Uで切り上げた値
value[i]=pi*Si
bestValue=要素数maxWeight/Uの配列(各要素の初期値は0)
trial=要素数maxWeiht/U×Nの2次元Boolean配列(各要素の初期値はfalse)
trial[maxWeight][i]=trueならばxi=1、falseならばxi=0
maxWeight=キャッシュのサイズを単位Uで切り上げた値(例えば、100GB)
N=キャッシュする候補となるベース・イメージの総数
weight[i]=インデックスiのベース・イメージのサイズSiを単位Uで切り上げた値
value[i]=pi*Si
bestValue=要素数maxWeight/Uの配列(各要素の初期値は0)
trial=要素数maxWeiht/U×Nの2次元Boolean配列(各要素の初期値はfalse)
trial[maxWeight][i]=trueならばxi=1、falseならばxi=0
上記近似アルゴリズムでは、本来連続量であるアイテムの大きさを離散量で近似することにより高速化を実現している。離散化の単位Uの大きさによって、正確性と速度が変わる。即ち、単位Uが大きいほど、アルゴリズムは早くなるが、正確性が低下する。逆に、単位Uが小さいほど、アルゴリズムは遅くなるが、正確性が向上する。
図7は、本実施形態に係るコンピュータ50のハードウェア構成の一例を示した図である。コンピュータ50は、バス2に接続されたメインCPU(中央処理装置)1とメインメモリ4を含んでいる。ハードディスク装置13、30、及びCD−ROM装置26、29、フレキシブル・ディスク装置20、MO装置28、DVD装置31のようなリムーバブル・ストレージ(記録メディアを交換可能な外部記憶システム)がフレキシブル・ディスクコントローラ19、IDEコントローラ25、SCSIコントローラ27などを経由してバス2へ接続されている。
フレキシブル・ディスク、MO、CD−ROM、DVD−ROMのような記憶メディアが、リムーバブル・ストレージに挿入される。これらの記憶メディアやハードディスク装置13、30、ROM14には、オペレーティング・システムと協働してCPU等に命令を与え、本発明を実施するためのコンピュータ・プログラムのコードを記録することができる。即ち、上記説明した数々の記憶装置には、コンピュータ50にインストールされ、コンピュータ50を命令実行装置200、800、又は1100として機能させるバイトコード実行プログラムを記録することができる。
コンピュータ50を選択装置200として機能させる選択プログラムは、確率算出モジュール、組み合わせ決定モジュール、転送要求モジュール、削除モジュールを含む。これらモジュールは、CPU1等に働きかけて、コンピュータ50を、確率算出部202、組み合わせ決定部204、イメージ記憶部206、転送要求部208、削除部210としてそれぞれ機能させる。コンピュータ・プログラムは圧縮し、また複数に分割して複数の媒体に記録することもできる。
コンピュータ50は、キーボード/マウス・コントローラ5を経由して、キーボード6やマウス7のような入力デバイスからの入力を受ける。コンピュータ50は、オーディオコントローラ21を経由して、マイク24からの入力を受け、またスピーカー23から音声を出力する。コンピュータ50は、視覚データをユーザに提示するための表示装置11に、グラフィックスコントローラ10を経由して接続される。コンピュータ50は、ネットワーク・アダプタ18(イーサネット(登録商標)・カードやトークンリング・カード)等を介してネットワークに接続し、他のコンピュータ等と通信を行うことが可能である。
以上の説明により、本実施形態に係るコンピュータ50は、通常のパーソナルコンピュータ、ワークステーション、メインフレームなどの情報処理装置、又は、これらの組み合わせによって実現されることが容易に理解されるであろう。なお、上記説明した構成要素は例示であり、そのすべての構成要素が本発明の必須構成要素となるわけではない。
以上、実施形態を用いて本発明の説明をしたが、本発明の技術範囲は上記実施形態に記載の範囲には限定されない。上記の実施形態に、種々の変更または改良を加えることが可能であることが当業者に明らかである。従って、そのような変更または改良を加えた形態も当然に本発明の技術的範囲に含まれる。
Claims (11)
- 互いに異なる複数のオペレーティング・システム(OS)のイメージを有する第1プールと、複数のデータ処理システムを有する第2プールとを含むプロビジョニング・システムにおいて、前記複数のデータ処理システムの1つである対象データ処理システムにおいてキャッシュすべき1以上のOSのイメージを前記第1プール内の前記複数のOSのイメージから選択する選択方法であって、コンピュータの処理により、
前記第1プール内の各OSのイメージについて、該OSのイメージが次のプロビジョニングにおいて使用される確率を算出するステップと、
前記対象データ処理システムにおけるキャッシュのために前記第1プール内の前記複数のOSのイメージから選択可能な1以上のOSのイメージのあらゆる組み合わせの中で、そのキャッシュを仮定して得られる前記次のプロビジョニングにおける前記対象データ処理システムへのOSのイメージの転送時間の期待値を最小にする1以上のOSのイメージの組み合わせを、キャッシュすべき1以上のOSのイメージとして決定するステップと、
を含む選択方法。 - 前記確率を算出するステップは、前記第1プール内の前記各OSのイメージについて、該OSのイメージを用いて作成され、かつ前記第2プール内のいずれかのデータ処理システムにおいて現在稼動中のリソースの数を求めるステップを含む、請求項1に記載の選択方法。
- 前記決定するステップは、前記第1プール内のi番目のOSのイメージについて、該OSのイメージのサイズをSi、該OSのイメージを使用して作成され、かつ現在稼動中のリソースの数をpi、及び該OSのイメージの前記対象データ処理システムにおけるキャッシュの状態を2値で表す変数をxiとした場合に、キャッシュする1以上のOSのイメージの合計サイズが前記対象データ処理システムにおけるキャッシュ・サイズを超えないという条件の下、前記第1プール内の全OSのイメージについてのpi *Si *xiの総和を最大にするxiのパターンを算出するステップと、算出したxiのパターンに基づき前記転送時間の期待値を最小にする1以上のOSのイメージの組み合わせ決定するステップとを含む、請求項2に記載の選択方法。
- 前記第1プール内の全OSのイメージについての前記pi *Si *xiの総和を最大にするxiのパターンを、0−1ナップサック問題の近似アルゴリズムを用いて算出する、請求項3に記載の選択方法。
- プロビジョニング時に前記対象データ処理システムにおいて前記第1プール内のOSのイメージの転送要求が生じたことに応答して、前記対象データ処理システムにおいてキャッシュされている1以上のOSのイメージから前記対象データ処理システムにおいて使用中のOSのイメージを除いた残りのOSのイメージに対し、
該OSのイメージを用いて作成され、かつ前記第2プール内のいずれかのデータ処理システムにおいて現在稼動中であるリソースの数を求めるステップと、
前記キャッシュ・サイズから前記使用中のOSのイメージと新たに転送されるOSのイメージのサイズとを引いた値を新たなキャッシュ・サイズとして、前記対象データ処理システムへのOSのイメージの転送時間の期待値を最小にする1以上のOSのイメージの組み合わせを新たに決定するステップと、
前記残りOSのイメージのうち、前記新たに決定された組み合わせに含まれないOSのイメージを前記対象データ処理システムから削除するステップとを更に含む、請求項4に記載の選択方法。 - 前記リソースは、前記第1プール内のいずれかのOSのイメージを用いて前記第2プール内のいずれかのデータ処理システム上のハイパーバイザにより提供される仮想マシンである、請求項4に記載の選択方法。
- 前記第1プールは更に、各OSのイメージについて、該OSのイメージを基に作成されるカスタマイズされたOSのイメージから前記OSのイメージを差し引いた差分のイメージを1以上有し、前記最小の期待値を与える前記第1プール内の1以上のOSのイメージの組み合わせは、OSのイメージと該OSのイメージに対応する差分のイメージとの転送時間の期待値を最小にする、請求項4に記載の選択方法。
- 請求項1乃至7のいずれかに記載の方法を、前記コンピュータに実行させる選択プログラム。
- 前記コンピュータは、前記対象データ処理システムである、請求項8に記載の選択プログラム。
- 互いに異なる複数のオペレーティング・システム(OS)のイメージを有する第1プールから、複数のデータ処理システムを有する第2プール内の対象とするデータ処理システムにおいてキャッシュする1以上のOSのイメージを選択するための装置であって、
前記第1プール内の各OSのイメージについて、該OSのイメージが次のプロビジョニングにおいて使用される確率を算出する確率算出部と、
前記対象とするデータ処理システムにおけるキャッシュのために前記第1プールから選択可能な1以上のOSのイメージのあらゆる組み合わせの中で、その組み合わせのOSのイメージのキャッシュを仮定して得られる前記次のプロビジョニングにおける前記対象データ処理システムへのOSのイメージの転送時間の期待値を最小にする1以上のOSのイメージの組み合わせを、前記対象データ処理システムにおいてキャッシュすべき1以上のOSのイメージとして決定する組み合わせ決定部と、
を含む装置。 - 前記確率算出部は、前記第1プール内の前記各OSのイメージについて、該OSのイメージを用いて作成され、かつ前記第2プール内のいずれかのデータ処理システムにおいて現在稼動中のリソースの数を求めることにより、前記確率を算出する、請求項10に記載の装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010211812A JP2012068790A (ja) | 2010-09-22 | 2010-09-22 | Osのイメージの選択装置、選択方法、及び選択プログラム |
US13/233,084 US8996444B2 (en) | 2010-09-22 | 2011-09-15 | Device, method, and program for selecting OS image |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010211812A JP2012068790A (ja) | 2010-09-22 | 2010-09-22 | Osのイメージの選択装置、選択方法、及び選択プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012068790A true JP2012068790A (ja) | 2012-04-05 |
Family
ID=45818633
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010211812A Pending JP2012068790A (ja) | 2010-09-22 | 2010-09-22 | Osのイメージの選択装置、選択方法、及び選択プログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US8996444B2 (ja) |
JP (1) | JP2012068790A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014235644A (ja) * | 2013-06-04 | 2014-12-15 | 日本電信電話株式会社 | リソース提供装置、リソース提供方法、およびリソース提供システム |
JP2016527604A (ja) * | 2013-06-10 | 2016-09-08 | アマゾン テクノロジーズ インコーポレイテッド | 事前設定および事前起動計算リソース |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8904113B2 (en) * | 2012-05-24 | 2014-12-02 | International Business Machines Corporation | Virtual machine exclusive caching |
KR102112605B1 (ko) | 2013-07-01 | 2020-05-19 | 삼성전자 주식회사 | 모바일 단말 및 모바일 단말의 네트워크 전송 제어 방법 |
JP2015130018A (ja) * | 2014-01-06 | 2015-07-16 | 富士通株式会社 | 検証プログラム、検証装置および検証方法 |
JP6700848B2 (ja) * | 2016-02-23 | 2020-05-27 | キヤノン株式会社 | 管理システム、制御方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8140683B2 (en) * | 2000-12-07 | 2012-03-20 | International Business Machines Corporation | Method and system for selecting an operating system at user login on a target device |
US7577722B1 (en) * | 2002-04-05 | 2009-08-18 | Vmware, Inc. | Provisioning of computer systems using virtual machines |
US7386678B2 (en) * | 2005-06-28 | 2008-06-10 | International Business Machines Corporation | Efficient system bootstrap loading |
US8549513B2 (en) * | 2005-06-29 | 2013-10-01 | Microsoft Corporation | Model-based virtual system provisioning |
US8429630B2 (en) | 2005-09-15 | 2013-04-23 | Ca, Inc. | Globally distributed utility computing cloud |
US7447854B1 (en) | 2005-12-30 | 2008-11-04 | Vmware, Inc. | Tracking and replicating changes to a virtual disk |
US7653794B2 (en) | 2006-05-08 | 2010-01-26 | Microsoft Corporation | Converting physical machines to virtual machines |
US20080201414A1 (en) | 2007-02-15 | 2008-08-21 | Amir Husain Syed M | Transferring a Virtual Machine from a Remote Server Computer for Local Execution by a Client Computer |
US8041793B2 (en) | 2008-09-24 | 2011-10-18 | Dell Products L.P. | Boot image discovery and delivery system |
-
2010
- 2010-09-22 JP JP2010211812A patent/JP2012068790A/ja active Pending
-
2011
- 2011-09-15 US US13/233,084 patent/US8996444B2/en active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014235644A (ja) * | 2013-06-04 | 2014-12-15 | 日本電信電話株式会社 | リソース提供装置、リソース提供方法、およびリソース提供システム |
JP2016527604A (ja) * | 2013-06-10 | 2016-09-08 | アマゾン テクノロジーズ インコーポレイテッド | 事前設定および事前起動計算リソース |
Also Published As
Publication number | Publication date |
---|---|
US8996444B2 (en) | 2015-03-31 |
US20120072388A1 (en) | 2012-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10567009B2 (en) | Dynamic erasure coding | |
US10664323B2 (en) | Live migration of virtual machines in distributed computing systems | |
US10678457B2 (en) | Establishing and maintaining data apportioning for availability domain fault tolerance | |
US11467933B2 (en) | Implementing availability domain aware replication policies | |
US10474656B1 (en) | Repurposing log files | |
US11740818B2 (en) | Dynamic data compression | |
US11562091B2 (en) | Low latency access to physical storage locations by implementing multiple levels of metadata | |
US20200026560A1 (en) | Dynamic workload classification for workload-based resource allocation | |
US9613037B2 (en) | Resource allocation for migration within a multi-tiered system | |
US20190138247A1 (en) | Dynamic scheduling of distributed storage management tasks using predicted system characteristics | |
US10635639B2 (en) | Managing deduplicated data | |
JP2012068790A (ja) | Osのイメージの選択装置、選択方法、及び選択プログラム | |
US10114751B1 (en) | Method and system for implementing cache size estimations | |
US11226865B2 (en) | Mostly unique file selection method for deduplication backup systems | |
US11216420B2 (en) | System and method for high replication factor (RF) data replication | |
US11907565B2 (en) | Storing write data in a storage system | |
US9971785B1 (en) | System and methods for performing distributed data replication in a networked virtualization environment | |
US11928517B2 (en) | Feature resource self-tuning and rebalancing | |
US20200026875A1 (en) | Protected health information in distributed computing systems | |
WO2022161170A1 (en) | Database log writing based on log pipeline contention | |
US20230106474A1 (en) | Data-driven evaluation of training action space for reinforcement learning | |
Zharikov et al. | Method of Distributed Two-Level Storage System Management in a Data Center | |
Saad et al. | Memory Management Approaches in Apache Spark: A Review |