(57)【要約】【課題】ＯＳが要求する実時間性の確保と計算機資源の有効利用との両立を実現すること。【解決手段】データ記憶部１１が、ゲストＯＳの動作に必要な仮想機器に関するゲストＯＳプロファイル情報と、同一の計算機資源を共有可能な仮想機器の組み合わせに関する計算機資源割当ポリシ情報とを記憶しておき、計算機資源割当管理部１２が、ゲストＯＳプロファイル情報に基づきハイパーバイザ上のゲストＯＳが必要とする仮想機器を生成し、計算機資源割当ポリシ情報に基づき当該仮想機器に計算機資源を割り当てる。【選択図】図４
2015228075.tif 000002
【特許請求の範囲】
【請求項１】
プログラムで生成されたハイパーバイザ上の仮想機器にコンピュータの計算機資源を割り当てる計算機資源割当装置において、
オペレーティングシステムの動作に必要な仮想機器に関する第１の情報と、同一の計算機資源を共有可能な仮想機器の組み合わせに関する第２の情報とを記憶しておくデータ記憶手段と、
前記データ記憶手段から前記第１の情報および前記第２の情報を読み出して、前記第１の情報に基づきハイパーバイザ上のオペレーティングシステムが必要とする仮想機器を生成し、前記第２の情報に基づき当該仮想機器に計算機資源を割り当てる計算機資源割当手段と、
を有することを特徴とする計算機資源割当装置。
【請求項２】
前記計算機資源割当手段は、
前記組み合わせに含まれる複数の仮想機器に同一の計算機資源を割り当てることを特徴とする請求項１に記載の計算機資源割当装置。
【請求項３】
前記計算機資源割当手段は、
前記割り当てられた計算機資源の処理負荷状況に応じて当該計算機資源の数を変更することを特徴とする請求項１又は２に記載の計算機資源割当装置。
【請求項４】
請求項１乃至３のいずれかに記載の計算機資源割当装置としてコンピュータを機能させるための計算機資源割当プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハイパーバイザ上の仮想機器にコンピュータの計算機資源を割り当てる技術に関する。
【背景技術】
【０００２】
近年、ハイパーバイザ上にオペレーティングシステム（ＯＳ）を集約することにより、コンピュータの計算機資源を有効に活用する取り組みが進んでいる。ハイパーバイザ技術は、ハードウェアとＯＳとの間で用いられ、ハイパーバイザ機能上で動作するＯＳ（以下、ゲストＯＳ）に対して計算機資源を疑似的に提供する技術である。具体的には、図８に示すように、ゲストＯＳを動作させるための仮想機器をソフトウェアプログラムで生成し、その仮想機器に対して計算装置等の計算機資源を割り当て、この仮想機器上でゲストＯＳを動作させることにより、処理負荷の小さいゲストＯＳや処理負荷特性の異なるゲストＯＳを同一のハードウェア上に集約し、計算機資源の有効利用を実現する。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】小比賀、外１名、“仮想化環境における通信処理要求の処理時間安定化方式”、ＮＥＣクラウドシステム研究所、電子情報通信学会総合大会、情報・システム講演論文集１、2013年、p.60
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、異なるゲストＯＳ間やゲストＯＳとハイパーバイザ間で計算機資源を共有するため、同一の計算装置、記憶装置、入出力装置等への同時アクセスにより性能干渉が発生する。ゆえに、常に安定した応答性が要求されるリアルタイムシステムをハイパーバイザ上に搭載する際には、実時間性の確保と、ハイパーバイザ適用のメリットである計算機資源の有効利用との両立が課題であった。
【０００５】
従来ではゲストＯＳのリアルタイム要件をハイパーバイザ側で把握できず、ゲストＯＳの要求するリアルタイム性を保証するためには、図９に示すように、そのゲストＯＳを動作させる仮想機器に対して計算機資源を占有させていた。しかし、本方法では、実時間性の確保を実現できるが、ハイパーバイザ適用のメリットである計算機資源の利用効率が大きく低下していた。
【０００６】
本発明は、上記事情を鑑みてなされたものであり、ＯＳが要求する実時間性の確保と計算機資源の有効利用との両立を実現することを目的とする。
【課題を解決するための手段】
【０００７】
以上の課題を解決するため、請求項１に記載の計算機資源割当装置は、プログラムで生成されたハイパーバイザ上の仮想機器にコンピュータの計算機資源を割り当てる計算機資源割当装置において、オペレーティングシステムの動作に必要な仮想機器に関する第１の情報と、同一の計算機資源を共有可能な仮想機器の組み合わせに関する第２の情報とを記憶しておくデータ記憶手段と、前記データ記憶手段から前記第１の情報および前記第２の情報を読み出して、前記第１の情報に基づきハイパーバイザ上のオペレーティングシステムが必要とする仮想機器を生成し、前記第２の情報に基づき当該仮想機器に計算機資源を割り当てる計算機資源割当手段と、を有することを要旨とする。
【０００８】
本発明によれば、ＯＳの動作に必要な仮想機器に関する第１の情報と、同一の計算機資源を共有可能な仮想機器の組み合わせに関する第２の情報とを記憶しておき、第１の情報に基づきハイパーバイザ上のＯＳが必要とする仮想機器を生成し、第２の情報に基づき当該仮想機器に計算機資源を割り当てるため、ＯＳが要求する実時間性の確保と計算機資源の有効利用との両立を実現できる。
【０００９】
請求項２に記載の計算機資源割当装置は、請求項１に記載の計算機資源割当装置において、前記計算機資源割当手段は、前記組み合わせに含まれる複数の仮想機器に同一の計算機資源を割り当てることを要旨とする。
【００１０】
請求項３に記載の計算機資源割当装置は、請求項１又は２に記載の計算機資源割当装置において、前記計算機資源割当手段は、前記割り当てられた計算機資源の処理負荷状況に応じて当該計算機資源の数を変更することを要旨とする。
【００１１】
請求項４に記載の計算機資源割当プログラムは、請求項１乃至３のいずれかに記載の計算機資源割当装置としてコンピュータを機能させることを要旨とする。
【発明の効果】
【００１２】
本発明によれば、ＯＳが要求する実時間性の確保と計算機資源の有効利用との両立を実現できる。
【図面の簡単な説明】
【００１３】
【図１】計算機資源割当装置の機能ブロック構成を示す図である。
【図２】ゲストＯＳプロファイル情報の例を示す図である。
【図３】計算機資源割当ポリシ情報の例を示す図である。
【図４】計算機資源の割り当て方法を示す図である。
【図５】計算機資源の割り当て方法の具体例を示す図である。
【図６】計算機資源の割り当て数の増加方法を示す図である。
【図７】計算機資源の割り当て数の減少方法を示す図である。
【図８】コンピュータ上におけるハイパーバイザ機能部の物理的な位置関係を示す図である。
【図９】従来の計算機資源の割り当て例を示す図である。
【発明を実施するための形態】
【００１４】
本発明は、ゲストＯＳが要求する実時間性の確保とハイパーバイザ適用のメリットである計算機資源の有効利用とを両立するため、ゲストＯＳの処理特性やリアルタイム要件等をハイパーバイザ側で考慮し、仮想機器に対する利用計算機資源の割り当てを決定するようにする。例えば、同一ＣＰＵを共有してもよい仮想機器や共有できない仮想機器を予め定義しておき、その定義に基づき仮想機器へＣＰＵを振り分けるようにする。以下、本発明を実施する一実施の形態について図面を用いて説明する。
【００１５】
図１は、本実施の形態に係る計算機資源割当装置１の機能ブロック構成を示す図である。この計算機資源割当装置１は、データ記憶部１１と、計算機資源割当管理部１２と、を備えて構成される。ハイパーバイザ機能を具備し、かつ、１つ以上のゲストＯＳを同時に実行するコンピュータ上で動作する。
【００１６】
データ記憶部１１は、ゲストＯＳの処理負荷特性を含む情報を記述したゲストＯＳプロファイル情報と、処理負荷特性に応じた仮想機器への計算機資源の割り当てポリシを記述した計算機資源割当ポリシ情報と、を記憶しておく機能部である。
【００１７】
ゲストＯＳプロファイル情報には、ゲストＯＳが起動時に必要な計算機資源（仮想機器）に関する情報、ゲストＯＳの負荷特性に関する情報が含まれている。特にゲストＯＳの負荷特性に関する情報には、例えば、データベース、ウェブサーバ、ＶｏＩＰサーバといったサーバの用途に関する情報、物理環境又は仮想環境上で過去に動作させた際の実測性能に関する情報が含まれている。この実測性能に関する情報には、例えば、ＣＰＵ使用率、メモリ使用量、ＩＯ使用率といったＯＳ側で測定可能なハードウェア資源利用状況情報、ゲストＯＳ上で動作するプロセス及びスレッドに関する情報が含まれている。このプロセス及びスレッドに関する情報には、例えば、動作するプロセス及びスレッドのコマンド名又は実行ファイル名、動作するプロセス及びスレッドの実行優先度やスケジューリング方式が含まれている。ゲストＯＳプロファイル情報の例を図２に示す。
【００１８】
一方、計算機資源割当ポリシ情報には、ゲストＯＳの処理負荷特性に対応する計算機資源の割り当てポリシが記述されている。具体的には、仮想機器間における同一計算機資源の共有可否を判断するための情報として、仮想機器の組み合わせより共有可否を決定するための表形式の２次元配列情報、実測値に基づく計算機資源の使用量と計算機資源から共有可否を判断するための条件式が含まれている。２次元配列情報には、占有可否を決定するための情報や共有範囲の情報を含むようにしてもよい。計算機資源割当ポリシ情報の例を図３に示す。本例はＤＢサーバの場合を例示しており、仮想機器間（仮想ＣＰＵと仮想ＨＤＤと仮想ＮＩＣとの各間）での同一ＣＰＵの共有可否を示している。ＡＰサーバやＶｏＩＰサーバについても処理負荷特性に応じて同様に定義される。
【００１９】
計算機資源割当管理部１２は、ゲストＯＳプロファイル情報及び計算機資源割当ポリシ情報に基づき仮想機器に計算機資源を割り当てる機能部である。すなわち、データ記憶部１１からそれら２つの情報を取得し、各情報を基に仮想機器間での計算機資源の共有の可否を判定し、各仮想機器が使用可能な計算機資源を定義して、定義した計算機資源の割り当てをハイパーバイザ機能内のディスパッチャ機能やスケジューラ機能に設定する。
【００２０】
次に、図４を参照しながら、計算機資源割当装置１で行う計算機資源の割り当て方法について説明する。なお、図４は最小の構成例であり、実施時には同図内に未記載の機器やシステムを接続し、他の機能部やデータを更に用いてもよい。特に、実施例の簡略化のため、計算機資源の管理対象として代表的なＣＰＵを用いている。ＣＰＵ以外に、メモリやモニタ等のハードウェア資源やソフトウェア資源であっても構わない。
【００２１】
最初に、ステップＳ１において、計算機資源割当管理部１２は、データ記憶部１１からゲストＯＳプロファイル情報を読み出す。このゲストＯＳプロファイル情報には、上述したように、ゲストＯＳが起動時に必要な計算機資源に関する情報等が含まれている。
【００２２】
次に、ステップＳ２において、計算機資源割当管理部１２は、ステップＳ１で取得したゲストＯＳプロファイル情報を基に仮想機器を生成する。例えば、図２に示したゲストＯＳプロファイル情報の場合、ゲストＯＳ１やゲストＯＳ２については、それぞれ、２つの仮想ＣＰＵ、１つの仮想ＮＩＣ、１つの仮想ＨＤＤを生成する。一方、ゲストＯＳ３については、４つの仮想ＣＰＵ、１つの仮想ＮＩＣ、１つの仮想ＨＤＤを生成する。
【００２３】
次に、ステップＳ３において、計算機資源割当管理部１２は、データ記憶部１１から読み出した計算機資源割当ポリシ情報を参照し、ステップＳ２で生成した仮想機器において同一ＣＰＵを共有可能な組み合わせを判定する。例えば、図３に示した計算機資源割当ポリシ情報の場合、仮想ＨＤＤ同士、仮想ＨＤＤ−仮想ＮＩＣ、又は仮想ＮＩＣ同士であれば同一ＣＰＵを共有できると判定する。
【００２４】
次に、ステップＳ４において、計算機資源割当管理部１２は、ステップＳ２で生成した仮想機器群と、ステップＳ３で判定した同一ＣＰＵの共有可能な組み合わせ情報とに基づき、当該仮想機器群を動作させるＣＰＵを仮想機器毎に割り当てる。例えば、同一ＣＰＵを共有可能な複数の仮想機器に対しては１つのＣＰＵを割り当て、同一ＣＰＵを共有できない仮想機器に対しては１つのＣＰＵを仮想機器毎に割り当てる。その後、ＣＰＵの割り当て結果をディスパッチャ機能部やスケジューラ機能部へ通知する。
【００２５】
最後に、ステップＳ５において、その通知を受けたディスパッチャ機能部又はスケジューラ機能部は、ステップＳ４で通知されたＣＰＵの割り当て結果に基づき仮想機器群に対するＣＰＵの割り当て処理を実行する。
【００２６】
続いて、図５を参照しながら、ステップＳ４で説明したＣＰＵの割り当て方法を具体的に説明する。なお、ここではゲストＯＳ１を用いて説明する。ステップＳ２を行ったタイミングで当該ゲストＯＳ１のサーバ種別と、必要な仮想機器の種類及び数が確定している。すなわち、ゲストＯＳ１のサーバ種別はＤＢサーバであり、仮想機器として仮想ＣＰＵ１、仮想ＣＰＵ２、仮想ＮＩＣ、仮想ＨＤＤが生成されているものとする。
【００２７】
まず、計算機資源割当管理部１２は、計算機資源割当ポリシ情報の行を上から探索し、行に該当する種別の仮想機器の中で、動作可能ＣＰＵが未定義の仮想機器を１つ抽出し、動作可能ＣＰＵの番号Ｃｉ（Ｃｉ∈Ｃ⊂Ｎ、Ｃは他のゲストＯＳに割り当てられていないＣＰＵ番号の集合、Ｎは自然数）を定義する（ステップＳ４−１）。ここでは理解を容易にするため、仮想ＨＤＤに番号Ｃ０のＣＰＵが定義されたとする。ここで動作可能ＣＰＵの番号が未定義の仮想機器がない場合は、処理を終了する。
【００２８】
次に、計算機資源割当管理部１２は、ステップＳ４−１で定義を行った仮想機器が属する行の列を１列目から順次探索し、同一ＣＰＵを共有可能な仮想機器の中で動作可能ＣＰＵの番号が未定義の仮想機器を探索する。当該仮想機器が発見された場合には、当該仮想機器にも同じ番号Ｃ０のＣＰＵを定義する（ステップＳ４−２）。その後、１列目に戻り、同じ番号Ｃ０で動作する仮想機器と共存可能な仮想機器を新たに探索する。なお、同一ＣＰＵを共有可能かつ動作可能ＣＰＵの番号が未定義な仮想機器を発見できない場合は、ＣＰＵ番号の識別子ｉをインクリメント（ｉ＝ｉ＋１）してステップＳ４−１へ戻る。
【００２９】
ステップＳ４−１〜ステップＳ４−２を繰り返し行うことにより、同一ＣＰＵを共有可能な複数の仮想機器に対しては１つのＣＰＵが割り当てられ、同一ＣＰＵを共有できない仮想機器に対しては１つのＣＰＵが仮想機器毎に割り当てられる。
【００３０】
ここまで、同一ＣＰＵを共有可能な複数の仮想機器に対して１つのＣＰＵ（最小数のＣＰＵ）を割り当てる実施例を説明した。一方、そのような複数の仮想機器に対して複数のＣＰＵを割り当てても構わない。例えば、後述するステップＳ６を周期的に実行し、同一ＣＰＵを共有可能な複数の仮想機器に対し、処理負荷状況に応じてＣＰＵ番号の割り当てを増減させる。以下、図６を参照しながら、ＣＰＵ番号の割り当て増減方法を説明する。
【００３１】
まず、ステップＳ６−１において、計算機資源割当管理部１２は、仮想機器と当該仮想機器に対して割り当てられた動作可能ＣＰＵとを対応付けた配列データを探索し、同一の動作可能ＣＰＵの番号を持つ仮想機器の組を抽出する。例えば、番号Ｃ０のＣＰＵが割り当てられた仮想ＨＤＤと仮想ＮＩＣの組を抽出する。
【００３２】
次に、ステップＳ６−２において、計算機資源割当管理部１２は、抽出した組のＣＰＵ番号に対応するＣＰＵについて、その処理負荷状況をスケジューラ機能部等から取得し、所定の閾値に基づき組毎にＣＰＵの処理負荷状態（高負荷状態、通常状態、低負荷状態）を判定する。ある組において動作可能なＣＰＵ番号が複数ある場合には、その平均値等を用いて判定する。また、処理負荷状況の判断指標や閾値については、ゲストＯＳプロファイル情報に記述があればそれを用いてもよい。また、閾値は使用中のＣＰＵ番号やＣＰＵ数等から動的に変更してもよい。
【００３３】
その後、ステップＳ６−３において、計算機資源割当管理部１２は、ステップＳ６−２での処理負荷の判定の結果、判定対象の組が高負荷状態と判定された場合、他のゲストＯＳに割り当てられていないＣＰＵ番号の集合ＣからＣＰＵを取得し、当該組に属する各仮想機器の動作可能ＣＰＵとして追加する。例えば、番号Ｃ０のＣＰＵ使用率が８０％以上の場合、そのＣＰＵを高負荷状態と判定し、集合Ｃから未割当である番号Ｃ３のＣＰＵを更に割り当てる。
【００３４】
一方、図７に示すように、仮想機器の組に複数の動作可能なＣＰＵが既に割り当てられており、かつ、その組が低負荷状態と判定された場合は、番号の大きいＣＰＵを当該組に属する各仮想機器の動作可能ＣＰＵから除外する。例えば、番号Ｃ０と番号Ｃ３の２つのＣＰＵが割り当てられており、それら使用率の平均値が４０％以下の場合には、それらＣＰＵを低負荷状態と判定し、番号の大きいＣ３のＣＰＵを動作可能ＣＰＵから除外する。これにより、割り当てられたＣＰＵの処理負荷状況に応じて、仮想機器に割り当てられるＣＰＵ資源を増減できる。
【００３５】
本実施の形態によれば、データ記憶部１１が、ゲストＯＳの動作に必要な仮想機器に関するゲストＯＳプロファイル情報と、同一の計算機資源を共有可能な仮想機器の組み合わせに関する計算機資源割当ポリシ情報とを記憶しておき、計算機資源割当管理部１２が、ゲストＯＳプロファイル情報に基づきハイパーバイザ上のゲストＯＳが必要とする仮想機器を生成し、計算機資源割当ポリシ情報に基づき当該仮想機器に計算機資源を割り当てるので、ゲストＯＳが要求する実時間性の確保と計算機資源の有効利用との両立を実現できる。また、ハイパーバイザによる仮想環境を提供する事業者とゲストＯＳの所有者が異なる場合でも、ゲストＯＳの処理特性に応じて仮想機器へ計算資源を割り当てることができる。
【００３６】
最後に、本実施の形態で説明した計算機資源割当装置１をプログラムとして構築し、コンピュータにインストールして実行させることや、通信ネットワークを介して流通させることも可能である。
【符号の説明】
【００３７】
１…計算機資源割当装置
１１…データ記憶部
１２…計算機資源割当管理部
Ｓ１〜Ｓ６、Ｓ４−１〜Ｓ４−２、Ｓ６−１〜Ｓ６−３…ステップ
【図１】
2015228075.tif 000003
【図２】
2015228075.tif 000004
【図３】
2015228075.tif 000005
【図４】
2015228075.tif 000006
【図５】
2015228075.tif 000007
【図６】
2015228075.tif 000008
【図７】
2015228075.tif 000009
【図８】
2015228075.tif 000010
【図９】
2015228075.tif 000011