以下に、本願に開示する情報処理装置、情報処理方法及びコンピュータプログラムを、各実施形態を示す図面に基づいて詳述する。以下では、本願に開示する情報処理装置をパーソナルコンピュータ(以下、PCという)に適用した各実施形態について説明する。
(実施形態1)
以下に、実施形態1に係るPCについて説明する。図1は実施形態1のPCの構成を示す模式図である。本実施形態1のPC10は、筺体に6つのUSB(Universal Serial Bus)ポート5a,5a…及び3つのモニタ接続ポート6a,6a…を有する。図1では、PC10の側面の下方に水平方向に6つ並べて示したポートがUSBポート5a,5a…であり、USBポート5a,5a…の上方に水平方向に3つ並べて示したポートがモニタ接続ポート6a,6a…である。
本実施形態1のPC10には、USBポート5a,5a…に接続されたUSBケーブルを介して、3つのキーボード51b,52b,53b及び3つのマウス51c,52c,53cが接続されている。また、本実施形態1のPC10には、モニタ接続ポート6a,6a…に接続されたモニタ接続用ケーブルを介して3つのモニタ51a,52a,53aが接続されている。
従って、本実施形態1のPC10では、モニタ51a(52a,53a)、キーボード51b(52b,53b)及びマウス51c(52c,53c)をそれぞれ含む入出力デバイスセット51(52,53)を3つ設置することができる。しかし、本願に開示する情報処理装置を適用できるPCは、このような構成に限られない。例えば、USBポート5a,5a…の数は6つに限られず、モニタ接続ポート6a,6a…の数は3つに限られない。また、1つのUSBポート5aにUSBハブを接続し、USBハブを介して複数のキーボード及びマウスを接続させたPC10にも、本願に開示する情報処理装置を適用することができる。
図2は実施形態1のPC10の構成を示すブロック図である。本実施形態1のPC10は、CPU(Central Processing Unit)1、ROM(Read Only Memory)2、RAM(Random Access Memory)3、ハードディスクドライブ(以下、HDDという)4、USBインタフェース5、モニタインタフェース6等のハードウェア各部を備える。これらのハードウェア各部はバス1aを介して相互に接続されている。
CPU1は、ROM2又はHDD4に予め格納されている制御プログラムを適宜RAM3に読み出して実行すると共に、上述したハードウェア各部の動作を制御する。
ROM2は、PC10を本願に開示する情報処理装置として動作させるために必要な種々の制御プログラムを予め格納している。RAM3は、例えばSRAM(Static RAM)、DRAM(Dynamic RAM)、フラッシュメモリ等である。RAM3は、CPU1による制御プログラムの実行時に発生する種々のデータを一時的に記憶する。
HDD4は大容量の記憶装置である。HDD4は、PC10を本願に開示する情報処理装置として動作させるために必要な種々の制御プログラム及び各種のデータ等を格納している。HDD4は、CPU1が読み出して実行する制御プログラムとして、VMMプログラム20、管理OSプログラム30、3つのゲストOSプログラム40、アプリケーションプログラム50等を格納している。
また、HDD4は、図3(a)に示すようなデバイステーブル4a、図3(b)に示すようなユーザ情報テーブル4b、図3(c)に示すようなVM情報テーブル4c、図3(d)に示すような制御方法テーブル4dを格納している。また、HDD4は、図4(a)に示すようなVMデバイス対応テーブル4e、図4(b)に示すようなVM管理テーブル4fを格納している。
USBインタフェース5には、6つのUSBポート5a,5a…が接続されている。USBインタフェース5は、USBポート5a,5a…にそれぞれ接続されたUSBケーブルを介して接続された機器との間でデータの送受信を行なう。本実施形態1のUSBインタフェース5は、USBケーブルを介してキーボード51b,52b,53b及びマウス51c,52c,53cと接続されている。従って、USBインタフェース5は、キーボード51b,52b,53b及びマウス51c,52c,53cとの間でデータの送受信を行なう。
キーボード51b,52b,53b及びマウス51c,52c,53cは、ユーザがPC10を操作するために必要な各種の操作検知装置を備えている。ユーザにより各操作キーが操作された場合、キーボード51b,52b,53b及びマウス51c,52c,53cは、操作された操作キーに対応した制御信号を、対応する管理OS31a又はゲストOS41a,42a,43a(図5,6参照)へ送出する。管理OS31a及びゲストOS41a,42a,43aは、キーボード51b,52b,53b及びマウス51c,52c,53cから取得した制御信号に対応した処理を実行する。
モニタインタフェース6には、3つのモニタ接続ポート6a,6a…が接続されている。本実施形態1のモニタインタフェース6は、モニタ接続ポート6a,6a…にそれぞれ接続されたモニタ接続用ケーブルを介してモニタ51a,52a,53aと接続されている。従って、モニタインタフェース6は、モニタ51a,52a,53aとの間でデータの送受信を行なう。
モニタ51a,52a,53aは、液晶ディスプレイ又はCRT(Cathode Ray Tube)ディスプレイ等である。モニタ51a,52a,53aは、対応する管理OS31a又はゲストOS41a,42a,43aから、モニタインタフェース6を介して送出されてくるデータに従って、PC10(VM)の動作状態、ユーザによって入力された情報、ユーザに対して通知すべき情報等を表示する。
上述した構成のPC10において、CPU1は、HDD4に格納されているVMM(Virtual Machine Monitor)プログラム20、管理OSプログラム30、ゲストOSプログラム40をそれぞれRAM3に読み出して実行することにより、VMM21、管理OS31a及びゲストOS41a,42a,43a(図5,6参照)として動作する。
VMMプログラム20は、PC10において複数(本実施形態1では4つ)のOS(管理OS31a、ゲストOS41a,42a,43a)が動作する仮想化技術を実現するためのソフトウェアプログラムである。CPU1は、PC10の起動後にVMMプログラム20を実行することによりVMM21としての動作を開始する。CPU1は、VMM21として動作することにより、論理的に複数のCPU1として動作する。なお、CPU1にマルチコアCPUを用いた場合、VMM21、管理OS31a、ゲストOS41a,42a,43aをそれぞれ物理的に異なるCPUコア上に分散させて動作させることができるが、CPU1にシングルコアCPUを用いてもよいことは勿論である。
CPU1がVMM21として動作することにより、PC10は、論理的に複数のPCとして動作する仮想環境(管理OS用VM31、第1ゲストOS用VM41、第2ゲストOS用VM42、第3ゲストOS用VM43)を提供する。これにより、1つのPC10において論理的に4つの独立した仮想マシン(VM)が動作する。
また、VMM21は、各ソフトウェアとハードウェア資源との間の管理を実現し、管理OS31a及びゲストOS41a,42a,43aのそれぞれに対するハードウェアの動作の基本的な制御を行なう。例えば、VMM21は、管理OS31a及びゲストOS41a,42a,43aを起動させる際に、管理OS31a及びゲストOS41a,42a,43aのそれぞれに対して、CPU1、RAM3、HDD4、入出力デバイスセット51,52,53等のハードウェアを割り当てる。
なお、RAM3は、CPU1がVMMプログラム20、管理OSプログラム30及びゲストOSプログラム40等をそれぞれ読み出す際に使用されるほか、CPU1が各制御プログラムを読み出して実行し、各処理を行なう際に一時的に各種情報を記憶する。また、RAM3は、CPU1が管理OS31a、ゲストOS41a,42a,43aとして動作する際に、管理OS31a、ゲストOS41a,42a,43a毎の設定情報を記憶するためにも使用される。従って、RAM3も、VMM21によって論理的に複数のRAM3に分割され、VMM21、管理OS31a、ゲストOS41a,42a,43aのそれぞれに割り当てられる。
管理OSプログラム30は、ゲストOS41a,42a,43aの動作を正常に維持するために構成されたソフトウェアプログラムであり、通常ユーザが操作できるCUI(Command User Interface)、GUI(Graphic User Interface)等のインタフェースは用意されていない。CPU1は、PC10の起動後に管理OSプログラム30を実行することにより管理OS31aとしての動作を開始する。また、管理OSプログラム30は管理者が操作できるCUI,GUIを持っていてもよい。
ゲストOSプログラム40は、ユーザが操作できるCUI、GUIを持つWindows (登録商標)、Linux等のOSソフトウェアプログラムである。CPU1は、管理OS31aからいずれかのゲストOS用VM41,42,43の起動指示があった場合に、ゲストOSプログラム40を実行することによりゲストOS41a,42a,43aとしての動作を開始する。
ゲストOS41a,42a,43aは、実行した処理に応じて表示すべきCUI,GUI等を含む表示画面を生成し、自身に対応付けられているモニタ51a(又は52a,53a)に表示させる。また、ゲストOS41a,42a,43aは、自身に対応付けられているキーボード51b(又は52b,53b)及びマウス51c(又は52c、53c)からの制御信号を受け付け、受け付けた制御信号に応じて各種処理を実行する実行手段として機能する。更に、ゲストOS41a,42a,43aは、自身のゲストOS用VM41,42,43における処理負荷を検出しており、検出した処理負荷を逐次VMM21へ通知する。なお、処理負荷としては、例えばCPU使用率を用いることができる。
アプリケーションプログラム50は、ゲストOS41a,42a,43aのそれぞれによって実行されるソフトウェアプログラムである。PC10は、アプリケーションプログラム50が記録された外部メモリからアプリケーションプログラム50を読み取ってHDD4に格納してもよい。また、PC10がネットワークに接続するための通信部を備える場合、PC10は、ネットワークを介してアプリケーションプログラム50をダウンロードしてHDD4に格納させてもよい。
図3及び図4は各テーブルの格納内容を示す模式図である。図3(a)はデバイステーブル4aの格納内容を、図3(b)はユーザ情報テーブル4bの格納内容を、図3(c)はVM情報テーブル4cの格納内容を、図3(d)は制御方法テーブル4dの格納内容をそれぞれ示す。また、図4(a)はVMデバイス対応テーブル4eの格納内容を、図4(b)はVM管理テーブル4fの格納内容をそれぞれ示す。
図3(a)に示すように、デバイステーブル4aには、PC10に接続されている全ての入出力デバイスセット51,52,53のそれぞれに割り当てられた入出力デバイスIDが格納されている。デバイステーブル4aの格納内容は、PC10の初期設定処理時に登録される。なお、モニタ51a(又は52a,53a)、キーボード51b(又は52b,53b)及びマウス51c(又は52c,53c)のそれぞれをまとめて入出力デバイスセット51(又は52,53)として扱う。
図3(b)に示すように、ユーザ情報テーブル4bには、PC10の使用が可能なユーザのユーザIDと、各ユーザによって予め登録されているパスワードとが対応付けて格納されている。ユーザ情報テーブル4bの格納内容は、PC10の初期設定処理時に登録されると共に、ユーザが自身のVM(ゲストOS用VM41,42,43)を使用中に自身のパスワードを変更した場合には、対応するゲストOS41a,42a,43aによって変更される。
図3(c)に示すように、VM情報テーブル4cには、CPU1がゲストOSプログラム40のそれぞれを実行することによって構築されるゲストOS用VM41,42,43を識別するためのVM−IDと、それぞれのゲストOS用VM41,42,43を割り当てられているユーザを識別するためのユーザIDとが対応付けて格納されている。VM情報テーブル4cの格納内容は、PC10の初期設定処理時に登録される。従って、PC10は、VM情報テーブル4cに格納されたユーザIDのユーザによってのみ使用可能である。なお、各ゲストOS用VM41,42,43は、自身を割り当てられたユーザのユーザID、ユーザによって設定された各種の設定情報等を、自身に割り当てられたRAM3又はHDD4に格納している。
図3(d)に示すように、制御方法テーブル4dには、アプリケーションプログラム50を識別するためのアプリケーションID及びアプリケーション名と、各アプリケーションプログラム50に対して予め設定された制御方法とが対応付けて格納されている。制御方法テーブル4dの格納内容は、PC10を管理する管理者によって予め登録されている。なお、制御方法テーブル4dの格納内容は、PC10の管理者によって変更可能としてもよい。
図4(a)に示すように、VMデバイス対応テーブル4eには、ゲストOS用VM41,42,43のVM−IDと、各ゲストOS用VM41,42,43に対応付けられた入出力デバイスセット51,52,53を示す入出力デバイスIDとが対応付けて格納されている。VM−デバイス対応テーブル4eの格納内容は、管理OS31aがゲストOS41a,42a,43aを起動させた場合に、ゲストOS41a,42a,43aのそれぞれに入出力デバイスセット51,52,53を対応付ける都度、管理OS31aによって登録される。また、VMデバイス対応テーブル4eの格納内容は、ゲストOS41a,42a,43aが動作を終了させた場合に、管理OS31aによって削除される。
図4(b)に示すように、VM管理テーブル4fには、ゲストOS用VM41,42,43のVM−IDと、各ゲストOS用VM41,42,43が実行中の処理に対して動作の制御(制限)が行なわれているか否かを示す制御状態情報と、制御が行なわれている場合に制御されている負荷の量を示す負荷変動量とが対応付けて格納されている。VM管理テーブル4fの格納内容は、管理OS31aがゲストOS41a,42a,43aを起動させた場合に、管理OS31aによって登録される。
なお、このとき、管理OS31aは、制御情報として「制御なし」を格納し、負荷変動量として「0」を格納する。また、VM管理テーブル4fの格納内容は、管理OS31aがゲストOS41a,42a,43aのそれぞれが実行中のアプリケーションプログラム50の実行状態を制御する都度、又は実行状態の制御を解除する都度、管理OS31aによって更新される。
以下に、上述した構成のPC10において、CPU1が、ROM2又はHDD4に格納されている各種の制御プログラムを実行することによって実現される機能について説明する。図5及び図6は実施形態1のPC10の機能を示す機能ブロック図である。なお、図5及び図6は、PC10が仮想化技術により複数のPC(VM)として動作する原理を示している。
図5及び図6には、PC10において、VMM21の動作により、4つのVM(管理OS用VM31、第1ゲストOS用VM41、第2ゲストOS用VM42、第3ゲストOS用VM43)がそれぞれ独立して実行可能となっていることを示している。なお、VMM21は、CPU1、RAM3、HDD4、入出力デバイスセット51,52,53等を含むハードウェア上で動作する。また、図6では、第2ゲストOS用VM42及び第3ゲストOS用VM43の図示を省略しているが、第2ゲストOS用VM42及び第3ゲストOS用VM43は、第1ゲストOS用VM41と同様の構成を有する。なお、第1ゲストOS用VM41、第2ゲストOSVM42、第3ゲストOS用VM43を省略してゲストOS用VM41,42,43と呼び、第1ゲストOS41a、第2ゲストOS42a、第3ゲストOS43aを省略してゲストOS41a,42a,43aと呼ぶこともある。
本実施形態1のVMM21は、VMMプログラム20に含まれるモジュールによって、デバイス割当部22、デバイス振分部23、負荷状態監視部24等の機能を有する。また、本実施形態1の管理OS31aは、管理OSプログラム30に含まれるモジュールによって、起動要求受付部31b、VM起動部31c、VM負荷監視部31d、VM負荷判定部31e、VM通知部31f等の機能を有する。また、本実施形態1のゲストOS41aは、ゲストOSプログラム40に含まれるモジュールによって、負荷解析部41b、制御方法特定部41c、制御部41d等の機能を有する。
本実施形態1のPC10に電源が投入され、PC10のハードウェア各部の起動が完了した場合、CPU1は、まず、VMMプログラム20をHDD4から読み出して実行することによりVMM(仮想マシンモニタ)21としての動作を開始する。
VMM21は、起動後、管理OSプログラム30をHDD4から読み出して実行することにより管理OS31aの動作を開始させる。このとき、VMM21は、管理OS31aに使用されるハードウェアの割り当て等を行ない、管理OS用VM31を起動させる。
管理OS用VM31の起動直後は、入出力デバイスセット51,52,53の全てが管理OS31aに割り当てられる。即ち、管理OS31aは、VMM21のデバイス振分部23を介して全ての入出力デバイスセット51,52,53と接続されている。また、管理OS31aは、起動直後は、全てのモニタ51a,52a,53aに、図7(a)に示すようなログイン画面を表示させる。
図7は表示画面の構成を示す模式図である。図7(a)に示したログイン画面は、ユーザID及びパスワードの入力欄、OKボタン及びキャンセルボタンを表示する。PC10を使用したいユーザは、入出力デバイスセット51,52,53のいずれかを用いてユーザID及びパスワードを入力する。
入出力デバイスセット51,52,53のいずれかを用いてユーザID及びパスワードが入力され、OKボタンが選択された場合、使用された入出力デバイスセット51(又は52,53)は、入力されたユーザID及びパスワードを管理OS31aへ送出する。なお、入出力デバイスセット51(又は52,53)は、ユーザID及びパスワードを、VMM21のデバイス振分部23を介して管理OS31aへ送出する。
いずれかの入出力デバイスセット51(又は52,53)から管理OS31aへユーザID及びパスワードの送出処理が開始された場合、デバイス振分部23は、他の入出力デバイスセット52,53(又は51)からのデータの管理OS31aへの転送を禁止する。これにより、複数の入出力デバイスセット51,52,53から同時に管理OS31aへデータが転送されることを防止できる。
管理OS31aは、いずれかの入出力デバイスセット51(又は52,53)からユーザID及びパスワードを取得した場合、ユーザID及びパスワードを送出してきた入出力デバイスセット51(又は52,53)を特定する。そして、管理OS31aは、取得したユーザID及びパスワードを起動要求受付部31bへ送出する。
起動要求受付部31bは、管理OS31aからユーザID及びパスワードを取得した場合、ユーザ情報テーブル4bの格納内容に基づいて認証を行なう。具体的には、起動要求受付部31bは、取得したユーザID及びパスワードがユーザ情報テーブル4bに格納されているか否かを判断する。起動要求受付部31bは、取得したユーザID及びパスワードがユーザ情報テーブル4bに格納されていると判断した場合、認証できた旨を管理OS31aに返す。
一方、取得したユーザID及びパスワードがユーザ情報テーブル4bに格納されていないと判断した場合、起動要求受付部31bは、認証できなかった旨を管理OS31aに返す。認証できなかった旨を起動要求受付部31bから通知された場合、管理OS31aは、例えば「ユーザIDまたはパスワードが誤りです」のようなエラーメッセージを、ユーザID及びパスワードを送出してきた入出力デバイスセット51(又は52,53)のモニタ51a(又は52a,53a)に表示させる。そして、管理OS31aは、図7(a)に示したログイン画面を再度表示させる。なお、このとき、VMM21のデバイス振分部23は、データの転送を禁止されていた入出力デバイスセット52,53(又は51)からのデータの管理OS31aへの転送を再開する。
認証できた旨を起動要求受付部31bから通知された場合、管理OS31aは、取得したユーザID及びこのユーザIDを送出してきた入出力デバイスセット51(又は52,53)の情報をVM起動部31cへ通知する。
VM起動部31cは、管理OS31aからユーザID及び入出力デバイスセット51(又は52,53)の情報を通知された場合、通知されたユーザIDに対応するVM−IDをVM情報テーブル4cから読み出す。VM起動部31cは、VM情報テーブル4cから読み出したVM−IDに対応するゲストOS用VMを起動させ、ゲストOSプログラム40をHDD4から読み出して実行することによりゲストOS41a(又は42a,43a)の動作を開始させる。
このとき、VMM21は、ゲストOS用VM41(又は42,43)に使用されるハードウェアの割り当て等を行ない、ゲストOS用VM41(又は42,43)を起動させる。なお、ゲストOS用VM41(又は42,43)に割り当てるハードウェアとしては、例えば、CPU1、RAM3、HDD4、管理OS31aから通知された入出力デバイスセット51(又は52,53)等がある。
なお、各ユーザが自身のゲストOS用VM41(又は42,43)に対して設定した各種の設定情報を、ゲストOS用VM41(又は42,43)を起動させる際に読み込ませることにより、各ユーザに対応したゲストOS用VM41(又は42,43)を起動させる。以下では、ゲストOS41a(又は42a,43a)を単にゲストOS41aと言い、ゲストOS用VM41(又は42,43)を単にゲストOS用VM41と言い、入出力デバイスセット51(又は52,53)を単に入出力デバイスセット51と言う。
ゲストOS用VM41を起動させた場合、VM起動部31cは、起動させたゲストOS用VM41のVM−IDと、起動させたゲストOS用VM41に割り当てた入出力デバイスセット51の入出力デバイスIDとをVMM21に通知する。また、VM起動部31cは、起動させたゲストOS用VM41のVM−IDをVM管理テーブル4fに登録する。このとき、VM起動部31cは、制御状態情報として「制御なし」を、負荷変動量として「0」をそれぞれVM管理テーブル4fに格納させる。
ゲストOS用VM41のVM−IDと、ゲストOS用VM41に割り当てられた入出力デバイスセット51の入出力デバイスIDとを通知されたVMM21では、デバイス割当部22が、通知されたVM−IDと入出力デバイスIDとを対応付けてVMデバイス対応テーブル4eに格納させる。
デバイス振分部23は、VMデバイス対応テーブル4eの格納内容に従って、ゲストOS41a,42a,43aからの出力情報を、それぞれ対応する入出力デバイスセット51,52,53へ転送する。具体的には、デバイス振分部23は、ゲストOS41a,42a,43aからの出力情報を取得した場合、ゲストOS41a,42a,43aに対応するゲストOS用VM41,42,43のVM−IDを特定する。そして、デバイス振分部23は、特定したVM−IDに対応付けてVMデバイス対応テーブル4eに格納されている入出力デバイスIDの入出力デバイスセット51,52,53を特定し、特定した入出力デバイスセット51,52,53へ転送する。
また、デバイス振分部23は、VMデバイス対応テーブル4eの格納内容に従って、入出力デバイスセット51,52,53のそれぞれからの入力情報を、それぞれ対応するゲストOS用VM41,42,43(ゲストOS41a,42a,43a)へ転送する。これにより、入出力デバイスセット51,52,53のそれぞれは、対応するゲストOS41a,42a,43aに対するダイレクトI/O(Input/Output)として機能することができる。
従って、起動されたゲストOS用VM41のVM−IDと入出力デバイスIDとがVMデバイス対応テーブル4eに格納されることにより、ゲストOS用VM41の使用環境を、入出力デバイスセット51を介して提供できる。よって、ユーザID及びパスワードを入力したユーザは、自身が使用する入出力デバイス51(又は52,53)において、自身に割り当てられているゲストOS用VM41(又は42,43)の使用を開始できる。
なお、起動されたゲストOS用VM41のVM−IDと入出力デバイスIDとがVMデバイス対応テーブル4eに格納された場合、VMM21のデバイス振分部23は、禁止していた入出力デバイスセット52,53(又は51)から管理OS31aへのデータの転送を再開する。
本実施形態1のPC10では、入出力デバイスセット51,52,53とゲストOS41a,42a,43aとの間のデータのやりとりをVMM21のデバイス振分部23が行なう。しかし、例えば、VMM21を介さずに、入出力デバイスセット51,52,53とゲストOS41a,42a,43aとが直接的にデータのやりとりを行なってもよい。
また、VMM21だけでなく管理OS31aを更に介して、入出力デバイスセット51,52,53とゲストOS41a,42a,43aとの間のデータのやりとりを行なってもよい。この場合は、管理OS31aが、デバイス振分部23の機能を備え、ゲストOS41a,42a,43aからの出力情報をVMM21を介して取得し、対応する入出力デバイスセット51,52,53へ転送する。また、管理OS31aが、入出力デバイスセット51,52,53からの入力情報を取得し、それぞれ対応するゲストOS41a,42a,43aへVMM21を介して転送する。
VMM21の負荷状態監視部(検出手段)24は、起動後のゲストOS用VM41,42,43のそれぞれにおける処理負荷を監視しており、監視した処理負荷を、図8(a)に示すようなVM負荷テーブル4gで管理している。図8は各テーブルの格納内容を示す模式図である。図8(a)はVM負荷テーブル4gの格納内容を、図8(b)は後述する実行プロセステーブル4hの格納内容を、図8(c)は後述する制御状態管理テーブル4iの格納内容をそれぞれ示す。
図8(a)に示すように、VM負荷テーブル4gには、ゲストOS用VM41,42,43のVM−IDと、各ゲストOS用VM41,42,43におけるCPU負荷とが対応付けて格納されている。VM負荷テーブル4gの格納内容は、管理OS31aがゲストOS用VM41,42,43を起動させる都度、負荷状態監視部24によって登録される。また、VM負荷テーブル4gの格納内容は、負荷状態監視部24が各ゲストOSVM41,42,43における処理負荷(CPU負荷)を検出する都度、負荷状態監視部24によって更新される。更に、VM負荷テーブル4gの格納内容は、各ゲストOS用VM41,42,43が動作を終了させる都度、負荷状態監視部24によって削除される。
管理OS用VM31のVM負荷監視部31dは、VMM21の負荷状態監視部24を介して定期的(例えば1秒毎)にVM負荷テーブル4gに格納された各ゲストOS用VM41,42,43のCPU負荷を取得する。VM負荷監視部31dは、取得した各ゲストOS用VM41,42,43のCPU負荷の合計値を算出し、算出した合計値と、VMM21の負荷状態監視部24から取得した各ゲストOS用VM41,42,43のCPU負荷とをVM負荷判定部31eに通知する。
なお、ここでVM負荷監視部31dが各ゲストOS用VM41,42,43のCPU負荷を取得するタイミング(例えば1秒毎)は、例えば管理OS用VM31に割り当てられたHDD4に予め格納されている。また、この時間は、例えばPC10の管理者等によって変更可能である。
VM負荷判定部(判定手段)31eは、VM負荷監視部31dから取得したCPU負荷の合計値が所定値(例えば90%)以上であるか否かを判定する。VM負荷判定部31eは、CPU負荷の合計値が所定値(例えば90%)未満であると判定した場合、PC10が高負荷状態ではないと判断して何も行なわない。なお、ここでCPU負荷の合計値と比較する所定値は、例えば管理OS用VM31に割り当てられたHDD4に予め格納されている。また、この所定値は、例えばPC10の管理者等によって変更可能である。
VM負荷判定部31eは、CPU負荷の合計値が所定値(例えば90%)以上であると判定した場合、PC10が高負荷状態であると判断する。そして、VM負荷判定部(特定手段)31eは、各ゲストOS用VM41,42,43のCPU負荷に基づいて、CPU負荷が最大のゲストOS用VM41(又は42,43)を動作制御の対象に特定する。VM負荷判定部31eは、特定したゲストOS用VM41(又は42,43)をVM通知部31fに通知する。
VM通知部31fは、VM負荷判定部31eから通知されたゲストOS用VM41(又は42,43)のゲストOS41a(又は42a,43a)に対して、処理負荷の低減(軽減)を要求する。なお、このとき、VM通知部31fは、VM負荷監視部31dがVM負荷テーブル4gから取得したゲストOS用VM41,42,43のCPU負荷のうちで、処理負荷の低減を要求するゲストOS用VM41(又は42,43)のCPU負荷を保持しておく。
ゲストOS用VM41において、ゲストOS41aは、HDD4に格納してあるアプリケーションプログラム50の実行を開始した場合に、各アプリケーションプログラム50における処理負荷(CPU負荷)の監視を開始する。ゲストOS41aは、監視した各アプリケーションプログラム50における処理負荷を、図8(b)に示すような実行プロセステーブル4hで管理している。
図8(b)に示すように、実行プロセステーブル4hには、ゲストOS41aが実行中のアプリケーションプログラム50のアプリケーションIDと、各アプリケーションプログラム50における処理負荷(CPU負荷)とが対応付けて格納されている。実行プロセステーブル4hの格納内容は、ゲストOS41aがアプリケーションプログラム50を実行させる都度、ゲストOS41aによって登録される。また、実行プロセステーブル4hの格納内容は、ゲストOS41aが実行中のアプリケーションプログラム50における処理負荷を検出する都度、ゲストOS41aによって更新される。更に、実行プロセステーブル4hの格納内容は、ゲストOS41aがアプリケーションプログラム50の実行を終了させる都度、ゲストOS41aによって削除される。
ゲストOS41aは、管理OS用VM31のVM通知部31fから処理負荷の低減を要求された場合、その旨を負荷解析部41bに通知する。負荷解析部(処理特定手段)41bは、処理負荷の低減の要求を通知された場合、実行プロセステーブル4hの格納内容に基づいて、実行中のアプリケーションプログラム50のうちで、CPU負荷が最大のアプリケーションプログラム50を特定する。なお、図8(b)に示した実行プロセステーブル4hでは、アプリケーションIDが「4」のアプリケーションプログラム50が、CPU負荷が最大のアプリケーションプログラム50に特定される。
負荷解析部41bは、特定したアプリケーションプログラム50のアプリケーションIDを制御方法特定部41cに通知する。制御方法特定部41cは、アプリケーションIDを通知された場合、制御方法テーブル4dの格納内容に基づいて、負荷解析部41bによって特定されたアプリケーションプログラム50における処理負荷を低減させるための制御方法を取得する。なお、ここでは、制御方法特定部41cは、アプリケーションIDが「4」のアプリケーションプログラム50の制御方法として「一時停止」を取得する。制御方法特定部41cは、取得した制御方法と、負荷解析部41bから通知されたアプリケーションIDとを制御部41dに通知する。
制御部(制御手段)41dは、制御方法特定部41cからアプリケーションID及び制御方法を通知された場合、アプリケーションIDが示すアプリケーションプログラム50の実行状態を、通知された制御方法で制御する処理を開始する。なお、このとき、制御部41dは、対応するモニタ51a(又は52a,53a)に、図7(b)に示すような通知画面を表示させ、アプリケーションプログラム50の実行制御(実行制限)が開始される旨をユーザに通知しておく。
図7(b)に示した通知画面は、使用中のゲストOS用VM41における処理負荷が大きいので現在実行中のアプリケーションプログラム50の動作を一時停止させる旨をユーザに通知する。これにより、ユーザは、アプリケーションプログラム50の実行を制御(制限)する処理が開始される前にその旨を把握できる。
制御部41dは、アプリケーションプログラム50の実行制御を開始した後、アプリケーションプログラム50における処理負荷(CPU負荷)を検出し、実行プロセステーブル4hに格納されていた処理負荷からの負荷変動量を算出する。制御部41dは、算出した負荷変動量を、図8(c)に示すような制御状態管理テーブル4iに格納する。これにより、制御部41dは、アプリケーションプログラム50の実行状態が制御されることによって低減された処理負荷(負荷変動量)を制御状態管理テーブル4iで管理できる。
図8(c)に示すように、制御状態管理テーブル4iには、制御部41dによって動作状態が制御中のアプリケーションプログラム50のアプリケーションIDと、実行状態を制御されることによって低減されている負荷変動量とが対応付けて格納されている。制御状態管理テーブル4iの格納内容は、制御部41dがアプリケーションプログラム50の実行制御を開始する都度、制御部41dによって登録される。また、制御状態管理テーブル4iの格納内容は、制御部41dがアプリケーションプログラム50の実行制御を終了する都度、制御部41dによって削除される。
制御部41dは、アプリケーションプログラム50の実行制御を開始した場合、その旨を管理OS用VM31のVM通知部31fに通知する。VM通知部31fは、アプリケーションプログラム50の実行制御の開始を通知された場合、通知してきたゲストOS用VM41(又は42,43)に関してVM管理テーブル4fに格納されている情報を更新する。具体的には、VM通知部31fは、通知してきたゲストOS用VM41(又は42,43)の制御状態情報を「制御中」に更新する。
また、VM通知部31fは、ゲストOS用VM41(又は42,43)に処理負荷の低減を要求する際に保持しておいたCPU負荷と、新たにVM負荷監視部31dがVM負荷テーブル4gから取得したゲストOS用VM41(又は42,43)のCPU負荷との差分値を算出する。そして、VM通知部31fは、VM負荷テーブル4gに格納されているゲストOS用VM41(又は42,43)の負荷変動量に、算出した差分値を加算して更新する。これにより、管理OS用VM31は、各ゲストOS用VM41,42,43において実行制御中のアプリケーションプログラム50があるか否かを管理でき、ある場合には実行状態が制御されることによって低減されている処理負荷を把握できる。
上述したように、いずれかのゲストOS用VM41,42,43で実行中のアプリケーションプログラム50の実行状態が制御されているPC10において、管理OS用VM31のVM負荷判定部31eは、いずれかのアプリケーションプログラム50の実行制御を解除できるか否かを監視している。具体的には、VM負荷判定部31eは、定期的(例えば1秒毎)にVM負荷監視部31dから取得する各ゲストOS用VM41,42,43のCPU負荷の合計値と、VM管理テーブル4fの格納内容とに基づいて、実行制御を解除できるアプリケーションプログラム50があるか否かを判断する。
VM負荷判定部31eは、まず、VM管理テーブル4fに格納されている負荷変動量に基づいて、負荷変動量が最小のゲストOS用VM41(又は42,43)を特定する。VM負荷判定部31eは、VM負荷監視部31dから取得する各ゲストOS用VM41,42,43のCPU負荷の合計値に、最小の負荷変動量を加算した加算値が、所定値(例えば90%)以上となるか否かを判定する。VM負荷判定部31eは、加算値が所定値以上となると判定した場合、実行制御を解除すればPC10が高負荷状態となると判断して何も行なわない。
VM負荷判定部31eは、加算値が所定値未満となると判定した場合、実行制御を解除してもPC10が高負荷状態とはならないと判断する。そして、VM負荷判定部31eは、最小の負荷変動量であると特定したゲストOS用VM41(又は42,43)を、動作制御の解除対象としてVM通知部31fに通知する。
VM通知部31fは、動作制御の解除対象としてVM負荷判定部31eから通知されたゲストOS用VM41(又は42,43)のゲストOS41a(又は42a,43a)に対して、動作制御の解除を要求する。なお、このとき、VM通知部31fは、VM負荷監視部31dがVM負荷テーブル4gから取得したゲストOS用VM41,42,43のCPU負荷のうちで、動作制御の解除を要求するゲストOS用VM41(又は42,43)のCPU負荷を保持しておく。
ゲストOS41aは、管理OS用VM31のVM通知部31fから動作制御の解除を要求された場合、その旨を負荷解析部41bに通知する。負荷解析部41bは、動作制御の解除の要求を通知された場合、制御状態管理テーブル4iの格納内容に基づいて、実行制御中のアプリケーションプログラム50のうちで、負荷変動量が最小のアプリケーションプログラム50を特定する。
負荷解析部41bは、特定したアプリケーションプログラム50のアプリケーションIDを、実行制御の解除対象として制御方法特定部41cに通知する。制御方法特定部41cは、実行制御の解除対象としてアプリケーションIDを通知された場合、制御方法テーブル4dの格納内容に基づいて、負荷解析部41bによって特定されたアプリケーションプログラム50に対する制御方法を取得する。制御方法特定部41cは、取得した制御方法と、負荷解析部41bから通知されたアプリケーションIDとを、実行制御の解除対象として制御部41dに通知する。
制御部41dは、実行制御の解除対象として制御方法特定部41cからアプリケーションID及び制御方法を通知された場合、通知された制御方法によってアプリケーションIDが示すアプリケーションプログラム50に対して行なわれていた実行制御を解除する。なお、このとき、制御部41dは、対応するモニタ51a(又は52a,53a)に、図7(c)に示すような通知画面を表示させ、アプリケーションプログラム50の実行制御が解除される旨をユーザに通知しておく。
図7(c)に示した通知画面は、実行可能となったので現在実行制御(制限)中のアプリケーションプログラム50の動作を再開させる旨をユーザに通知する。これにより、ユーザは、アプリケーションプログラム50の動作が再開される前にその旨を把握できる。
制御部41dは、アプリケーションプログラム50の実行制御を解除した後、実行制御を解除させたアプリケーションプログラム50の情報を制御状態管理テーブル4iから削除する。
また、制御部41dは、アプリケーションプログラム50の実行制御を解除した場合、その旨を管理OS用VM31のVM通知部31fに通知する。VM通知部31fは、アプリケーションプログラム50の実行制御の解除を通知された場合、通知してきたゲストOS用VM41(又は42,43)に関してVM管理テーブル4fに格納されている情報を更新する。
VM通知部31fは、まず、ゲストOS用VM41(又は42,43)におけるアプリケーションプログラム50の実行制御を解除することによって増加する処理負荷(負荷変動量)を算出する。具体的には、VM通知部31fは、ゲストOS用VM41(又は42,43)に動作制御の解除を要求する際に保持しておいたCPU負荷と、新たにVM負荷監視部31dがVM負荷テーブル4gから取得したゲストOS用VM41(又は42,43)のCPU負荷との差分値(増加する負荷変動量)を算出する。そして、VM通知部31fは、VM管理テーブル4fに格納されているゲストOS用VM41(又は42,43)の負荷変動量から、算出した差分値を減算してVM管理テーブル4fを更新する。
更に、VM通知部31fは、更新したゲストOS用VM41(又は42,43)の負荷変動量が0であれば、VM管理テーブル4fに格納されているゲストOS用VM41(又は42,43)の制御状態情報を「制御なし」に更新する。
これにより、管理OS用VM31は、各ゲストOS用VM41,42,43について、アプリケーションプログラム50の実行状態の制御、又は制御の解除によって増減する処理負荷をリアルタイムで把握できる。
上述したように、本実施形態1のPC10は、動作中の各ゲストOS用VM41,42,43の処理負荷が大きくなった場合に、いずれかのゲストOS用VM41,42,43が実行中のアプリケーションプログラム50の動作を制御する。よって、PC10全体としての処理負荷が低減され、各ゲストOS用VM41,42,43における操作性が確保できる。
以下に、本実施形態1のPC10において、管理OS用VM31がゲストOS用VM41,42,43を起動させる際の処理についてフローチャートに基づいて説明する。図9は管理OS用VM31によるゲストOS用VM41,42,43の起動処理の手順を示すフローチャートである。なお、以下の処理は、PC10のROM2又はHDD4に格納してある制御プログラムに従って管理OS用VM31(管理OS31a)及びVMM21によって実行される。また、図9では、破線で区切った2つの領域において、左側の領域に管理OS用VM31による処理を、右側の領域にVMM21による処理をそれぞれ示している。
PC10に電源が投入され、PC10のハードウェア各部の起動が完了した後、CPU1は、VMMプログラム20を実行してVMM21を起動させる。VMM21は、管理OSプログラム30を実行して管理OS用VM31を起動させる。
管理OS用VM31は、全てのモニタ51a,52a,53aに、図7(a)に示すようなログイン画面を表示させている。管理OS用VM31は、いずれかの入出力デバイスセット51(又は52,53)を介してユーザID及びパスワードのユーザ情報を取得したか否かを判断する(S1)。いずれの入出力デバイスセット51,52,53からもユーザ情報を取得していないと判断した場合(S1:NO)、管理OS用VM31は、他の処理を行ないつつ待機する。
いずれかの入出力デバイスセット51(又は52,53)を介してユーザ情報を取得したと判断した場合(S1:YES)、管理OS用VM31は、ユーザ情報を送出してきた入出力デバイスセット51(又は52,53)を特定する(S2)。なお、このとき、管理OS用VM31は、他の入出力デバイスセット52,53(又は51)からのデータの取得を禁止する。管理OS用VM31は、取得したユーザ情報の認証をユーザ情報テーブル4bの格納内容に基づいて行ない、認証されたか否かを判断する(S3)。
認証されなかったと判断した場合(S3:NO)、管理OS用VM31は、認証されなかった旨を通知するエラー通知画面を、ユーザ情報を送出してきた入出力デバイスセット51(又は52,53)のモニタ51a(又は52a,53a)に表示させる(S4)。管理OS用VM31は、図7(a)に示すようなログイン画面を表示させ、ステップS1に処理を戻す。なお、このとき、管理OS用VM31は、データの取得を禁止していた他の入出力デバイスセット52,53(又は51)からのデータの取得を再開する。
認証されたと判断した場合(S3:YES)、管理OS用VM31は、取得したユーザIDに対応するVM−IDをVM情報テーブル4cから読み出す(S5)。また、管理OS用VM31は、VMM21によってゲストOS用VM41(又は42,43)に使用されるハードウェアの割り当て等を行ない、ゲストOS用VM41(又は42,43)を起動させる(S6)。管理OS用VM31は、読み出したVM−IDに対応するゲストOS用VMを起動させ、ゲストOSプログラム40をHDD4から読み出して実行し、ゲストOS41a(又は42a,43a)の動作を開始させる。
管理OS用VM31は、起動させたゲストOS用VM41(又は42,43)のVM−IDと、ゲストOS用VM41(又は42,43)に割り当てた入出力デバイスセット51(又は52,53)の入出力デバイスIDとの対応をVMM21に通知する(S7)。管理OS用VM31は、起動させたゲストOS用VM41のVM−IDをVM管理テーブル4fに登録する(S8)。このとき、管理OS用VM31は、制御状態情報として「制御なし」を、負荷変動量として「0」をそれぞれVM管理テーブル4fに格納させる。
VMM21は、通知されたVM−IDと入出力デバイスIDとを対応付けてVMデバイス対応テーブル4eに格納させ(S9)、処理を終了する。
これにより、ステップS6で起動させたゲストOS用VM41(又は42,43)と、このゲストOS用VM41(又は42,43)に対応付けられた入出力デバイスセット51(又は52,53)とのデータの送受信が開始される。従って、いずれかの入出力デバイスセット51,52,53を用いてユーザ情報を入力してきたユーザは、自身専用のゲストOS用VM41,42,43の使用を開始できる。なお、管理OS用VM31は、ステップS1に処理を戻し、データの取得を禁止していた他の入出力デバイスセット52,53(又は51)からのデータの取得を再開する。
次に、本実施形態1のPC10において、ゲストOS用VM41,42,43における処理負荷が大きくなった場合に管理OS用VM31が行なう処理についてフローチャートに基づいて説明する。図10及び図11は実施形態1の負荷制御処理の手順を示すフローチャートである。なお、以下の処理は、PC10のROM2又はHDD4に格納してある制御プログラムに従って管理OS用VM31(管理OS31a)及びゲストOS用VM41,42,43(ゲストOS41a,42a,43a)によって実行される。また、図10及び図11では、破線で区切った2つの領域において、左側の領域に管理OS用VM31による処理を、右側の領域にゲストOS用VM41,42,43による処理をそれぞれ示している。
管理OS用VM31は、所定時間を計時しており、所定時間(例えば1秒間)が経過したか否かを判断し(S11)、経過していないと判断した場合(S11:NO)、他の処理を行ないつつ待機する。所定時間が経過したと判断した場合(S11:YES)、管理OS用VM31は、VMM21が逐次更新するVM負荷テーブル4gに格納された各ゲストOS用VM41,42,43のCPU負荷を取得する(S12)。管理OS用VM31は、取得した各ゲストOS用VM41,42,43のCPU負荷の合計値を算出し(S13)、算出した合計値が所定値(例えば90%)以上であるか否かを判定する(S14)。
CPU負荷の合計値が所定値未満であると判定した場合(S14:NO)、管理OS用VM31は、ステップS11に処理を戻す。CPU負荷の合計値が所定値以上であると判定した場合(S14:YES)、管理OS用VM31は、ステップS12で取得したCPU負荷に基づいて、CPU負荷が最大のゲストOS用VM41(又は42,43)を特定する(S15)。管理OS用VM31は、特定したゲストOS用VM41(又は42,43)のCPU負荷を保持し(S16)、特定したゲストOS用VM41(又は42,43)に対して、CPU負荷の低減を要求する(S17)。
ゲストOS用VM41(又は42,43)は、CPU負荷の低減を要求された場合、実行プロセステーブル4hの格納内容に基づいて、実行中のアプリケーションプログラム50のうちで、CPU負荷が最大のアプリケーションプログラム50を特定する(S18)。ゲストOS用VM41は、特定したアプリケーションプログラム50におけるCPU負荷を低減させるための制御方法を制御方法テーブル4dから読み出す(S19)。
ゲストOS用VM41は、現在実行中のアプリケーションプログラム50の実行状態が制御される旨をユーザに通知する通知画面を、対応するモニタ51a(又は52a,53a)に表示させる(S20)。ゲストOS用VM41は、通知画面によって通知されたアプリケーションプログラム50の実行制御が開始されるまでの所定時間(例えば5秒間)が経過したか否かを判断する(S21)。ゲストOS用VM41は、所定時間が経過していないと判断した場合(S21:NO)、所定時間が経過するまで待機する。
なお、アプリケーションプログラム50の実行制御が開始されるまでの所定時間(例えば5秒間)は、例えばゲストOS用VM41に割り当てられたHDD4に予め格納されている。また、この所定値は、例えばPC10の管理者又はゲストOS用VM41のユーザ等によって変更可能である。
ゲストOS用VM41は、所定時間が経過したと判断した場合(S21:YES)、制御方法テーブル4dから読み出した制御方法で、ステップS18で特定したアプリケーションプログラム50の実行制御を開始する(S22)。ゲストOS用VM41は、アプリケーションプログラム50の実行制御を開始した後、このアプリケーションプログラム50におけるCPU負荷を検出し、実行プロセステーブル4hに格納されていた処理負荷からの負荷変動量を算出する。ゲストOS用VM41は、算出した負荷変動量を制御状態管理テーブル4iに登録する(S23)。
ゲストOS用VM41は、アプリケーションプログラム50の実行制御を開始した旨を管理OS用VM31に通知する(S24)。管理OS用VM31は、アプリケーションプログラム50の制御開始を通知された場合、VM負荷テーブル4gから新たにゲストOS用VM41のCPU負荷を取得する(S25)。管理OS用VM31は、ゲストOS用VM41のアプリケーションプログラム50の実行状態が制御されることによって低減された負荷変動量を算出する(S26)。具体的には、管理OS用VM31は、ステップS25で取得したゲストOS用VM41のCPU負荷と、ステップS16で保持しておいたCPU負荷との差分値を算出する。
管理OS用VM31は、VM管理テーブル4fに格納されているゲストOS用VM41の制御状態情報を「制御中」に更新し、ゲストOS用VM41の負荷変動量に、算出した負荷変動量を加算してVM管理テーブル4fを更新する(S27)。管理OS用VM31は、ステップS11に処理を戻す。
これにより、管理OS用VM31は、各ゲストOS用VM41,42,43について、アプリケーションプログラム50の実行状態が制御されることによって低減されている処理負荷をVM管理テーブル4fによって管理できる。
次に、上述したように、いずれかのゲストOS用VM41,42,43で実行中のアプリケーションプログラム50の実行状態が制御されているPC10において、管理OS用VM31がゲストOS用VM41,42,43における処理負荷を監視する処理についてフローチャートに基づいて説明する。図12及び図13は実施形態1の負荷監視処理の手順を示すフローチャートである。
なお、以下の処理は、PC10のROM2又はHDD4に格納してある制御プログラムに従って管理OS用VM31(管理OS31a)及びゲストOS用VM41,42,43(ゲストOS41a,42a,43a)によって実行される。また、図12及び図13では、破線で区切った2つの領域において、左側の領域に管理OS用VM31による処理を、右側の領域にゲストOS用VM41,42,43による処理をそれぞれ示している。
管理OS用VM31は、所定時間を計時しており、所定時間(例えば1秒間)が経過したか否かを判断し(S31)、経過していないと判断した場合(S31:NO)、他の処理を行ないつつ待機する。所定時間が経過したと判断した場合(S31:YES)、管理OS用VM31は、VM管理テーブル4fの格納内容に基づいて、アプリケーションプログラム50の実行を制御されているゲストOS用VM41,42,43が有るか否かを判断する(S32)。アプリケーションプログラム50の実行を制御されているゲストOS用VM41,42,43が無いと判断した場合(S32:NO)、管理OS用VM31は、ステップS31に処理を戻す。
アプリケーションプログラム50の実行を制御されているゲストOS用VM41,42,43が有ると判断した場合(S32:YES)、管理OS用VM31は、VMM21が逐次更新するVM負荷テーブル4gに格納された各ゲストOS用VM41,42,43のCPU負荷を取得する(S33)。管理OS用VM31は、取得した各ゲストOS用VM41,42,43のCPU負荷の合計値を算出する(S34)。
管理OS用VM31は、VM管理テーブル4fに格納されている負荷変動量に基づいて、負荷変動量が最小のゲストOS用VM41(又は42,43)を特定する(S35)。管理OS用VM31は、ステップS34で算出したCPU負荷の合計値と、ステップS35で特定したゲストOS用VM41(又は42,43)の負荷変動量との加算値を算出する(S36)。管理OS用VM31は、算出した加算値が所定値(例えば90%)未満であるか否かを判定する(S37)。
算出した加算値が所定値以上であると判定した場合(S37:NO)、管理OS用VM31は、ステップS31に処理を戻す。算出した加算値が所定値未満であると判定した場合(S37:YES)、管理OS用VM31は、ステップS35で特定したゲストOS用VM41(又は42,43)に対して制御解除を要求する(S38)。なお、このとき、管理OS用VM31は、制御解除を要求するゲストOS用VM41(又は42,43)のCPU負荷を保持しておく。
ゲストOS用VM41(又は42,43)は、制御解除を要求された場合、実行プロセステーブル4hの格納内容に基づいて、実行状態が制御中のアプリケーションプログラム50が有るか否かを判断する(S39)。制御中のアプリケーションプログラム50が無いと判断した場合(S39:NO)、ゲストOS用VM41は、ステップS45へ処理を移行する。制御中のアプリケーションプログラム50が有ると判断した場合(S39:YES)、ゲストOS用VM41は、実行状態が制御中のアプリケーションプログラム50のうちで、負荷変動量が最小のアプリケーションプログラム50を特定する(S40)。
ゲストOS用VM41は、特定したアプリケーションプログラム50に対する制御方法を制御方法テーブル4dから読み出す(S41)。ゲストOS用VM41は、現在制御中のアプリケーションプログラム50の実行が再開される旨をユーザに通知する通知画面を、対応するモニタ51a(又は52a,53a)に表示させる(S42)。ゲストOS用VM41は、制御方法テーブル4dから読み出した制御方法で、ステップS40で特定したアプリケーションプログラム50の実行制御を解除する(S43)。これにより、ステップS40で特定したアプリケーションプログラム50の動作が再開される。
ゲストOS用VM41は、アプリケーションプログラム50の動作を再開させた後、動作を再開させたアプリケーションプログラム50の情報を制御状態管理テーブル4iから削除する(S44)。ゲストOS用VM41は、アプリケーションプログラム50の実行制御を解除した旨を管理OS用VM31に通知する(S45)。
管理OS用VM31は、アプリケーションプログラム50の制御解除を通知された場合、VM負荷テーブル4gから新たにゲストOS用VM41のCPU負荷を取得する(S46)。管理OS用VM31は、ゲストOS用VM41のアプリケーションプログラム50の実行制御が解除されることによって増加する負荷変動量を算出する(S47)。具体的には、管理OS用VM31は、ステップS46で取得したゲストOS用VM41のCPU負荷と、ゲストOS用VM41に制御解除を要求する際に保持しておいたCPU負荷との差分値を算出する。
管理OS用VM31は、VM管理テーブル4fに格納されているゲストOS用VM41の負荷変動量から、算出した負荷変動量を減算してVM管理テーブル4fを更新する(S48)。なお、このとき、更新した負荷変動量が0となった場合、管理OS用VM31は、VM管理テーブル4fに格納されているゲストOS用VM41の制御状態情報を「制御なし」に更新する。管理OS用VM31は、ステップS31に処理を戻す。
これにより、管理OS用VM31は、各ゲストOS用VM41,42,43について、アプリケーションプログラム50の実行制御が解除されることによって変動する処理負荷をリアルタイムで把握できる。
次に、上述したように、動作中のゲストOS用VM41,42,43の動作を終了させる際の処理についてフローチャートに基づいて説明する。図14はゲストOS用VM41,42,43の終了処理の手順を示すフローチャートである。なお、以下の処理は、PC10のROM2又はHDD4に格納してある制御プログラムに従ってゲストOS用VM41,42,43(ゲストOS41a,42a,43a)、管理OS用VM31(管理OS31a)及びVMM21によって実行される。また、図14では、破線で区切った3つの領域において、左側の領域にゲストOS用VM41,42,43による処理を、中央の領域に管理OS用VM31による処理を、右側の領域にVMM21による処理をそれぞれ示している。
ゲストOS用VM41,42,43は、対応する入出力デバイスセット51,52,53を介して終了指示を受け付けたか否かを判断している(S51)。終了指示を受け付けていないと判断した場合(S51:NO)、ゲストOS用VM41,42,43は、他の処理を行ないつつ待機する。終了指示を受け付けたと判断した場合(S51:YES)、ゲストOS用VM41,42,43は、終了処理を実行する(S52)。終了処理が完了した場合、ゲストOS用VM41,42,43は、終了処理の完了を管理OS用VM31に通知し(S53)、動作を終了する。
管理OS用VM31は、終了処理の完了を通知された場合、終了処理の完了を通知してきたゲストOS用VM41(又は42,43)から、このゲストOS用VM41(又は42,43)に割り当てられている入出力デバイスセット51(又は52,53)を剥奪する(S54)。対象のゲストOS用VM41(又は42,43)の情報をVM管理テーブル4fから削除する(S55)。管理OS用VM31は、ゲストOS用VM41(又は42,43)から入出力デバイスセット51(又は52,53)を剥奪した旨をVMM21に通知し(S56)、処理を終了する。
VMM21は、通知されたゲストOS用VM41(又は42,43)のVM−IDと、ゲストOS用VM41(又は42,43)から剥奪された入出力デバイスセット51(又は52,53)の入出力デバイスIDとをVMデバイス対応テーブル4eから削除する(S57)。VMM21は、処理を終了する。これ以降は、ゲストOS用VM41(又は42,43)から剥奪された入出力デバイスセット51(又は52,53)は、管理OS31aに対応付けられる。
上述したように、本実施形態1では、高負荷のゲストOS用VM41(又は42,43)で実行中の高負荷のアプリケーションプログラム50の実行を制限することによって、このゲストOS用VM41(又は42,43)における処理負荷を低減させる。よって、他のゲストOS用VM42,43(又は41)には影響を与えずに、PC10全体としての処理負荷を低減できる。従って、限られたリソースの中で、各ゲストOS用VM41,42,43の要求を満たしつつ、各ゲストOS用VM41,42,43に公平にリソースを割り当てることができ、各ユーザに高品質のゲストOS用VM41,42,43を提供できる。
本実施形態1では、1つのPC10に3つのゲストOS用VM41,42,43を構築することによって3人のユーザによって1つのPC10を共用する構成を例に説明した。本願に開示する情報処理装置は、このような構成に限られないことは勿論である。PC10に設けられたUSBポート5a,5a…の数、モニタ接続ポート6a,6a…の数に応じて、構築するゲストOS用VMの数も適宜変更可能である。
本実施形態1のPC10は、各ゲストOS用VM41,42,43におけるCPU負荷の合計値が所定値以上となった場合に、CPU負荷が最大のゲストOS用VM41(又は42,43)のCPU負荷を低減させていた。しかし、PC10全体としてのCPU負荷が低減されればよいので、CPU負荷が最大のゲストOS用VM41(又は42,43)ではなく、ゲストOS用VM41,42,43のいずれかのCPU負荷を低減させてもよい。
また、ゲストOS用VM41,42,43のCPU負荷を低減させる際に、本実施形態1のPC10は、CPU負荷が最大のアプリケーションプログラム50の実行状態を制御していた。しかし、各ゲストOS用VM41,42,43におけるCPU負荷が低減されればよいので、CPU負荷が最大のアプリケーションプログラム50ではなく、いずれかのアプリケーションプログラム50の実行状態を制御すればよい。
また、本実施形態1では、管理OS用VM31が処理負荷を低減させるべきゲストOS用VM41,42,43を特定し、特定されたゲストOS用VM41,42,43が実行状態を制御されるべきアプリケーションプログラム50を特定していた。このような構成に限られず、管理OS用VM31が、各ゲストOS用VM41,42,43のどのアプリケーションプログラム50の実行を制御すべきかを特定してもよい。
また、本実施形態1では、管理OS用VM31が動作制御を解除すべきゲストOS用VM41,42,43を特定し、特定されたゲストOS用VM41,42,43が実行制御を解除すべきアプリケーションプログラム50を特定していた。このような構成に限られず、管理OS用VM31が、各ゲストOS用VM41,42,43のどのアプリケーションプログラム50の実行制御を解除すべきかを特定してもよい。なお、この場合、管理OS用VM31が、各ゲストOS用VM41,42,43において実行制御中の各アプリケーションプログラム50における負荷変動量を管理しておけばよい。
また、本実施形態1では、実行制御を解除すべきアプリケーションプログラム50として、処理負荷が最小のアプリケーションプログラム50が選択されていた。このように、処理負荷が小さいアプリケーションプログラム50から順に実行制御を解除することにより、処理負荷の急激な増加を防止できる。しかし、このような構成に限られない。例えば、処理負荷が最大のアプリケーションプログラム50、制御開始が最も古いアプリケーションプログラム50が、実行制御の解除対象として選択されてもよい。
本実施形態1のPC10では、入出力デバイスセット51,52,53を用いて各ユーザが入力したユーザID及びパスワードに基づいてユーザ認証を行なっていた。しかし、ユーザ認証は必ずしも必要ではない。例えば、入出力デバイスセット51,52,53を用いて各ユーザがユーザIDのみを入力し、管理OS31aが、入力されたユーザIDに対応するゲストOS41a,42a,43aを起動させてもよい。
本実施形態1のPC10は、各ゲストOS用VM41,42,43における処理負荷としてCPU負荷(CPU使用率)を用いていたが、これに限られない。例えば、各ゲストOS用VM41,42,43に割り当てられたRAM3の使用量(メモリ使用率)が処理負荷を示す情報に利用できる。また、各ゲストOS用VM41,42,43がネットワークに接続可能であればネットワークの使用率、アプリケーションプログラム50を実行する際のアプリケーションの応答速度等が利用できる。
本実施形態1のPC10は、ゲストOS用VM41,42,43とは別に管理OS用VM31を備えていた。しかし、例えば、1つのゲストOS用VM41,42,43が、本実施形態1の管理OS用VM31の機能を備えてもよい。この場合、管理OS31aのライセンス料、管理OS用VM31に割り当てられる各リソースの削減が可能である。
(実施形態2)
以下に、実施形態2に係るPCについて説明する。なお、本実施形態2のPCは、上述した実施形態1のPC10と同様の構成によって実現することができるので、同様の構成については同一の符号を付して説明を省略する。
上述した実施形態1では、管理OS用VM31は、定期的(例えば1秒毎)にVM負荷テーブル4gから取得する各ゲストOS用VM41,42,43のCPU負荷の合計値が所定値(例えば90%)以上となった場合に、PC10が高負荷状態であると判断していた。そして、管理OS用VM31は、PC10が高負荷状態であると判断した場合、ゲストOS用VM41,42,43のいずれかに対して処理負荷の低減を要求していた。
本実施形態2では、管理OS用VM31は、定期的(例えば1秒毎)にVM負荷テーブル4gから取得する各ゲストOS用VM41,42,43のCPU負荷の合計値が所定値(例えば90%)以上である時間(高負荷状態継続時間)を計時する。そして、管理OS用VM31は、計時した高負荷状態継続時間が所定時間(例えば5秒間)となった場合に、PC10が高負荷状態であると判断する。
本実施形態2のPC10において、CPU1が、ROM2又はHDD4に格納されている各種の制御プログラムを実行することによって、図5及び図6で示した機能と同様の機能を実現する。
本実施形態2のVM負荷判定部31eは、VM負荷監視部31dから取得したCPU負荷の合計値が所定値(例えば90%)以上であるか否かを判定する。VM負荷判定部31eは、CPU負荷の合計値が所定値(例えば90%)未満であると判定した場合、高負荷状態開始時刻として現在時刻を例えばRAM3に格納する。なお、現在時刻は、例えばCPU1が有する時計機能に基づいて取得される。
VM負荷判定部31eは、VM負荷監視部31dから取得したCPU負荷の合計値が所定値(例えば90%)以上であると判定した場合、現在時刻を取得する。VM負荷判定部31eは、RAM3に格納した高負荷状態開始時刻から現在時刻までの時間(高負荷状態継続時間)を算出する。VM負荷判定部31eは、算出した高負荷状態継続時間が所定時間(例えば5秒間)以上であるか否かを判断し、高負荷状態継続時間が所定時間(例えば5秒間)以上となるまで上述した処理を繰り返す。
VM負荷判定部31eは、高負荷状態継続時間が所定時間(例えば5秒間)以上であると判断した場合、PC10が高負荷状態であると判定する。PC10が高負荷状態であると判定した場合、VM負荷判定部31eは、各ゲストOS用VM41,42,43のCPU負荷に基づいて、CPU負荷が最大のゲストOS用VM41(又は42,43)を特定する。VM負荷判定部31eは、特定したゲストOS用VM41(又は42,43)をVM通知部31fに通知する。
なお、ここでPC10が高負荷状態であるか否かの基準となる所定時間(例えば5秒間)は、例えば管理OS用VM31に割り当てられたHDD4に予め格納されている。また、この時間は、例えばPC10の管理者等によって変更可能である。
VM通知部31fは、VM負荷判定部31eから通知されたゲストOS用VM41(又は42,43)のゲストOS41a(又は42a,43a)に対して、処理負荷の低減を要求する。処理負荷の低減を要求されたゲストOS用VM41,42,43は、実行中のアプリケーションプログラム50のうちで、処理負荷が最大のアプリケーションプログラム50の実行状態を制御する。これにより、ゲストOS用VM41,42,43における処理負荷が低減される。
本実施形態2のCPU1が実現する各機能において、上述したVM負荷判定部31e以外は、上述の実施形態1で説明した処理と同様の処理を行なうので説明を省略する。
本実施形態2のPC10において、管理OS用VM31がゲストOS用VM41,42,43を起動させる際の処理は、上述の実施形態1において図9で説明した処理と同一であるので説明を省略する。
次に、本実施形態2のPC10において、ゲストOS用VM41,42,43における処理負荷が大きくなった場合に管理OS用VM31が行なう処理についてフローチャートに基づいて説明する。図15及び図16は実施形態2の負荷制御処理の手順を示すフローチャートである。なお、以下の処理は、PC10のROM2又はHDD4に格納してある制御プログラムに従って管理OS用VM31(管理OS31a)及びゲストOS用VM41,42,43(ゲストOS41a,42a,43a)によって実行される。また、図16では、破線で区切った2つの領域において、左側の領域に管理OS用VM31による処理を、右側の領域にゲストOS用VM41,42,43による処理をそれぞれ示している。
管理OS用VM31は、所定時間を計時しており、所定時間(例えば1秒間)が経過したか否かを判断し(S61)、経過していないと判断した場合(S61:NO)、他の処理を行ないつつ待機する。所定時間が経過したと判断した場合(S61:YES)、管理OS用VM31は、VMM21が逐次更新するVM負荷テーブル4gに格納された各ゲストOS用VM41,42,43のCPU負荷を取得する(S62)。管理OS用VM31は、取得した各ゲストOS用VM41,42,43のCPU負荷の合計値を算出し(S63)、算出した合計値が所定値(例えば90%)以上であるか否かを判定する(S64)。
CPU負荷の合計値が所定値未満であると判定した場合(S64:NO)、管理OS用VM31は、高負荷状態開始時刻を消去した状態でRAM3等に格納し(S65)、ステップS61に処理を戻す。CPU負荷の合計値が所定値以上であると判定した場合(S64:YES)、管理OS用VM31は、高負荷状態開始時刻が消去された状態か否かを判定する(S66)。高負荷状態開始時刻が消去された状態であると判定した場合(S66:YES)、管理OS用VM31は、高負荷状態開始時刻として現在時刻をRAM3等に格納し(S67)、現在時刻を取得する(S68)。
高負荷状態開始時刻が消去された状態でないと判定した場合(S66:NO)、管理OS用VM31は、ステップS67の処理をスキップし、現在時刻を取得する(S68)。管理OS用VM31は、ステップS67でRAM3等に格納した高負荷状態開始時刻から、ステップS68で取得した現在時刻までの高負荷状態継続時間を算出する(S69)。
管理OS用VM31は、算出した高負荷状態継続時間が所定時間(例えば5秒間)以上であるか否かを判断し(S70)、所定時間以上でないと判断した場合(S70:NO)、ステップS61に処理を戻す。高負荷状態継続時間が所定時間以上であると判断した場合(S70:YES)、管理OS用VM31は、ステップS62で取得したCPU負荷に基づいて、CPU負荷が最大のゲストOS用VM41(又は42,43)を特定する(S71)。管理OS用VM31は、特定したゲストOS用VM41(又は42,43)のCPU負荷を保持し(S72)、特定したゲストOS用VM41(又は42,43)に対して、CPU負荷の低減を要求する(S73)。
以下のステップS74からステップS83までの処理は、上述の実施形態1において図11で説明したステップS18からステップS27までの処理と同一であるので説明を省略する。これにより、管理OS用VM31は、各ゲストOS用VM41,42,43について、アプリケーションプログラム50の実行状態が制御されることによって低減されている処理負荷をVM管理テーブル4fによって逐次管理できる。
本実施形態2のPC10において、管理OS用VM31がゲストOS用VM41,42,43における処理負荷を監視し、必要に応じて実行制御されているアプリケーションプログラム50の制御を解除する処理は、上述の実施形態1において図12及び図13で説明した処理と同一であるので説明を省略する。また、本実施形態2のPC10において、動作中のゲストOS用VM41,42,43の動作を終了させる際の処理は、上述の実施形態1において図14で説明した処理と同一であるので説明を省略する。
上述したように、本実施形態2では、各ゲストOS用VM41,42,43のCPU負荷の合計値が所定値(例えば90%)以上となる高負荷状態が所定時間(例えば5秒間)以上継続した場合に、PC10が高負荷状態であると判定する。よって、例えば、各アプリケーションプログラム50の起動時のように瞬間的に高負荷状態となった場合であっても、PC10が高負荷状態であるとは判定しない。従って、所定時間以上継続的に高負荷状態である場合にのみ、各ゲストOS用VM41,42,43における処理負荷を低減させる。よって、各ゲストOS用VM41,42,43で実行中のアプリケーションプログラム50の実行状態の制御処理が頻繁に行なわれることを防止できる。
(実施形態3)
以下に、実施形態3に係るPCについて説明する。なお、本実施形態3のPCは、上述した実施形態1のPC10と同様の構成によって実現することができるので、同様の構成については同一の符号を付して説明を省略する。
上述した実施形態1では、管理OS用VM31は、各ゲストOS用VM41,42,43のCPU負荷の合計値が所定値(例えば90%)以上となった場合に、CPU負荷が最大のゲストOS用VM41(又は42,43)に対して処理負荷の低減を要求していた。
本実施形態3では、ゲストOS用VM41,42,43のそれぞれに対して許容CPU負荷を設定する。そして、CPU負荷が許容CPU負荷以上であり、他のゲストOS用VM41,42,43よりも大きいゲストOS用VM41,42,43に対して処理負荷の低減を要求する。即ち、CPU負荷が最大であっても、そのCPU負荷が許容CPU負荷未満であれば、そのゲストOS用VM41,42,43は処理負荷の低減を要求されない。
本実施形態3のPC10において、CPU1は、ROM2又はHDD4に格納されている各種の制御プログラムを実行させることによって、図5及び図6に示した各機能を実現する。また、本実施形態3の管理OS用VM31は、図5及び図6に示した各機能のほかに優先利用設定部31gの機能を有し、本実施形態3のゲストOS用VM41は、図6に示した各機能のほかに優先利用要求部41eの機能を有する。図17は実施形態3のPC10の機能を示す機能ブロック図である。なお、図17には、VMM21、管理OS用VM31及びゲストOS用VM41の各機能の一部のみを記載している。
本実施形態3のPC10では、ゲストOS用VM41,42,43の各ユーザは、他のユーザよりも優先的にPC10を使用したい場合、使用中の入出力デバイスセット51,52,53を介して優先利用を要求する。優先利用を要求する方法としては、例えば、所定のボタン又はメニューの選択によって行なうことが考えられる。
本実施形態3のゲストOS用VM41において、優先利用要求部41eは、対応する入出力デバイスセット51(又は52,53)を介して優先利用の要求を受け付ける。優先利用要求部41eは、ユーザから優先利用を要求された場合、管理OS用VM31の優先利用設定部31gに優先利用の設定を要求する。
本実施形態3の管理OS用VM31において、優先利用設定部31gは、ゲストOS用VM41,42,43から優先利用の設定を要求された場合、要求してきたゲストOS用VM41,42,43に対して優先利用を設定する。優先利用設定部31gは、まず、図18に示すような優先度テーブル4jの格納内容に基づいて、優先利用の設定を要求してきたゲストOS用VM41,42,43に対して優先利用が既に設定されているか否かを判断する。
図18は優先度テーブル4jの格納内容を示す模式図である。図18に示すように、優先度テーブル4jには、各ゲストOS用VM41,42,43のVM−IDと、各ゲストOS用VM41,42,43に対する許容CPU負荷とが対応付けて登録されている。優先度テーブル4jには、各ゲストOS用VM41,42,43に対する許容CPU負荷として予め「35」が格納されている。優先度テーブル4jに格納される各ゲストOS用VM41,42,43に対する許容CPU負荷は、優先利用設定部31gによって適宜更新される。
優先利用設定部31gは、優先利用の設定を要求してきたゲストOS用VM41,42,43に対する許容CPU負荷として優先度テーブル4jに「65」が格納されているか否かを判断する。許容CPU負荷として「65」が格納されていると判断した場合、優先利用設定部31gは、優先利用の設定を要求してきたゲストOS用VM41,42,43に対して優先利用が既に設定されていると判断する。一方、許容CPU負荷として「65」が格納されていないと判断した場合、即ち、許容CPU負荷として「35」が格納されている場合、優先利用設定部31gは、優先利用の設定を要求してきたゲストOS用VM41,42,43に対して優先利用がまだ設定されていないと判断する。
優先利用設定部31gは、優先利用の設定を要求してきたゲストOS用VM41,42,43に対して優先利用が既に設定されていると判断した場合、優先利用が既に設定されている旨を、要求してきたゲストOS用VM41,42,43に通知する。この場合、ゲストOS用VM41,42,43の優先利用要求部41eは、優先利用が既に設定されているので優先利用の設定に失敗した旨を通知するエラーメッセージを、対応するモニタ51a,52a,53aに表示させる。
優先利用設定部31gは、優先利用の設定を要求してきたゲストOS用VM41,42,43に対して優先利用がまだ設定されていないと判断した場合、要求された優先利用の設定が可能であるか否かを判断する。例えば、優先利用設定部31gは、既に優先利用が設定されたゲストOS用VM41,42,43が有るか否かに基づいて、要求された優先利用の設定が可能であるか否かを判断する。複数のゲストOS用VM41,42,43に対して65%のCPU負荷を確保することは困難であるので、優先利用は1つのゲストOS用VM41,42,43に対してのみ設定可能とする。
従って、優先利用設定部31gは、既に優先利用が設定されたゲストOS用VM41が有る場合、要求された優先利用の設定が可能でないと判断する。優先利用設定部31gは、要求された優先利用の設定が可能でないと判断した場合、優先利用の設定が可能でない旨を、要求してきたゲストOS用VM41,42,43に通知する。この場合、ゲストOS用VM41,42,43の優先利用要求部41eは、優先利用の設定に失敗した旨を通知するエラーメッセージを、対応するモニタ51a,52a,53aに表示させる。
優先利用設定部31gは、要求された優先利用の設定が可能であると判断した場合、優先利用の設定を要求してきたゲストOS用VM41,42,43に対して優先度テーブル4jに格納されている許容CPU負荷を「65」に更新する。これにより、優先利用設定部31gは、優先利用の設定を要求してきたゲストOS用VM41,42,43に対して、優先利用を設定したことになる。
優先利用設定部31gは、優先利用を設定した後、優先利用の設定完了を、優先利用の設定を要求してきたゲストOS用VM41,42,43に通知する。この場合、ゲストOS用VM41,42,43の優先利用要求部41eは、優先利用が設定された旨を通知する通知画面を、対応するモニタ51a,52a,53aに表示させる。
本実施形態3のVM負荷判定部31eは、VM負荷監視部31dから取得したCPU負荷の合計値が所定値(例えば90%)以上であるか否かを判定する。VM負荷判定部31eは、CPU負荷の合計値が所定値(例えば90%)未満であると判定した場合、PC10が高負荷状態ではないと判断して何も行なわない。VM負荷判定部31eは、CPU負荷の合計値が所定値(例えば90%)以上であると判定した場合、PC10が高負荷状態であると判断する。そして、VM負荷判定部31eは、各ゲストOS用VM41,42,43のCPU負荷に基づいて、CPU負荷が最大のゲストOS用VM41(又は42,43)を特定する。
VM負荷判定部31eは、特定したゲストOS用VM41(又は42,43)に対して設定されている許容CPU負荷を優先度テーブル4jから取得する。VM負荷判定部31eは、特定したゲストOS用VM41(又は42,43)のCPU負荷が、優先度テーブル4jから取得した許容CPU負荷よりも大きいか否かを判断する。特定したゲストOS用VM41(又は42,43)のCPU負荷が許容CPU負荷以下であれば、VM負荷判定部31eは、このゲストOS用VM41(又は42,43)には処理負荷の低減を要求しない。そして、VM負荷判定部31eは、CPU負荷が次に大きいゲストOS用VM42(又は43)を特定する。
VM負荷判定部31eは、CPU負荷が次に大きいゲストOS用VM42(又は43)に対して設定されている許容CPU負荷を優先度テーブル4jから取得する。VM負荷判定部31eは、CPU負荷が次に大きいゲストOS用VM42(又は43)のCPU負荷が、優先度テーブル4jから取得した許容CPU負荷よりも大きいか否かを判断する。CPU負荷が次に大きいゲストOS用VM42(又は43)のCPU負荷が許容CPU負荷以下であれば、VM負荷判定部31eは、このゲストOS用VM42(又は43)には処理負荷の低減を要求しない。そして、VM負荷判定部31eは、CPU負荷が次に大きいゲストOS用VM43を特定する。
なお、VM負荷判定部31eは、特定したゲストOS用VM41(又は42,43)のCPU負荷が許容CPU負荷より大きいと判断した場合、特定したゲストOS用VM41(又は42,43)をVM通知部31fに通知する。
VM通知部31fは、VM負荷判定部31eから通知されたゲストOS用VM41(又は42,43)のゲストOS41a(又は42a,43a)に対して、処理負荷の低減を要求する。処理負荷の低減を要求されたゲストOS用VM41,42,43は、実行中のアプリケーションプログラム50のうちで、処理負荷が最大のアプリケーションプログラム50の実行状態を制御する。これにより、ゲストOS用VM41,42,43における処理負荷が低減される。
上述したように、本実施形態3では、CPU負荷が大きいゲストOS用VM41,42,43であっても、優先度テーブル4jで設定されている許容CPU負荷未満であれば、ゲストOS用VM41,42,43における処理負荷を低減させない。よって、優先度テーブル4jに大きい値の許容CPU負荷が設定されているゲストOS用VM41,42,43は、他のゲストOS用VM42,43(又は41)よりも優先的に処理負荷を確保できる。
本実施形態3のCPU1が実現する各機能において、上述した優先利用設定部31g、VM負荷判定部31e及び優先利用要求部41e以外は、上述の実施形態1で説明した処理と同様の処理を行なうので説明を省略する。
本実施形態3のPC10において、管理OS用VM31がゲストOS用VM41,42,43を起動させる際の処理は、上述の実施形態1において図9で説明した処理と同一であるので説明を省略する。
次に、本実施形態3のPC10において、ゲストOS用VM41,42,43に対して優先利用の設定を行なう際の処理についてフローチャートに基づいて説明する。図19は優先利用の設定処理の手順を示すフローチャートである。なお、以下の処理は、PC10のROM2又はHDD4に格納してある制御プログラムに従ってゲストOS用VM41,42,43(ゲストOS41a,42a,43a)及び管理OS用VM31(管理OS31a)によって実行される。また、図19では、破線で区切った2つの領域において、左側の領域にゲストOS用VM41,42,43による処理を、右側の領域に管理OS用VM31による処理をそれぞれ示している。
ゲストOS用VM41,42,43は、対応する入出力デバイスセット51,52,53を介して優先利用を要求されたか否かを判断しており(S91)、優先利用を要求されていないと判断した場合(S91:NO)、他の処理を行ないつつ待機する。優先利用を要求されたと判断した場合(S91:YES)、ゲストOS用VM41,42,43は、管理OS用VM31に優先利用の設定を要求する(S92)。
管理OS用VM31は、ゲストOS用VM41,42,43から優先利用の設定を要求された場合、優先度テーブル4jの格納内容に基づいて、要求してきたゲストOS用VM41,42,43に対して優先利用が既に設定されているか否かを判断する(S93)。優先利用が既に設定されていると判断した場合(S93:YES)、管理OS用VM31は、優先利用が既に設定されている旨を、要求してきたゲストOS用VM41,42,43に通知する(S94)。
ゲストOS用VM41,42,43は、優先利用が既に設定されている旨を通知された場合、優先利用の設定に失敗した旨を通知するエラーメッセージを、対応するモニタ51a,52a,53aに表示させる(S95)。そして、ゲストOS用VM41,42,43はステップS91に処理を戻す。
優先利用がまだ設定されていないと判断した場合(S93:NO)、管理OS用VM31は、要求された優先利用の設定が可能であるか否かを判断する(S96)。要求された優先利用の設定が可能でないと判断した場合(S96:NO)、管理OS用VM31は、優先利用の設定が可能でない旨を、要求してきたゲストOS用VM41,42,43に通知する(S97)。
ゲストOS用VM41,42,43は、優先利用の設定が可能でない旨を通知された場合、優先利用の設定に失敗した旨を通知するエラーメッセージを、対応するモニタ51a,52a,53aに表示させる(S95)。そして、ゲストOS用VM41,42,43はステップS91に処理を戻す。
管理OS用VM31は、要求された優先利用の設定が可能であると判断した場合(S96:YES)、優先利用の設定を要求してきたゲストOS用VM41,42,43に対して優先度テーブル4jに格納されている許容CPU負荷を「65」に更新する(S98)。管理OS用VM31は、優先度テーブル4jを更新した後、優先利用の設定完了を、優先利用の設定を要求してきたゲストOS用VM41,42,43に通知する(S99)。
ゲストOS用VM41,42,43は、優先利用の設定完了を通知された場合、優先利用が設定された旨を通知する通知画面を、対応するモニタ51a,52a,53aに表示させる(S100)。そして、ゲストOS用VM41,42,43はステップS91に処理を戻す。
次に、本実施形態3のPC10において、ゲストOS用VM41,42,43における処理負荷が大きくなった場合に管理OS用VM31が行なう処理についてフローチャートに基づいて説明する。図20及び図21は実施形態3の負荷制御処理の手順を示すフローチャートである。なお、以下の処理は、PC10のROM2又はHDD4に格納してある制御プログラムに従って管理OS用VM31(管理OS31a)及びゲストOS用VM41,42,43(ゲストOS41a,42a,43a)によって実行される。また、図21では、破線で区切った2つの領域において、左側の領域に管理OS用VM31による処理を、右側の領域にゲストOS用VM41,42,43による処理をそれぞれ示している。
管理OS用VM31は、所定時間を計時しており、所定時間(例えば1秒間)が経過したか否かを判断し(S111)、経過していないと判断した場合(S111:NO)、他の処理を行ないつつ待機する。所定時間が経過したと判断した場合(S111:YES)、管理OS用VM31は、VMM21が逐次更新するVM負荷テーブル4gに格納された各ゲストOS用VM41,42,43のCPU負荷を取得する(S112)。管理OS用VM31は、取得した各ゲストOS用VM41,42,43のCPU負荷の合計値を算出し(S113)、算出した合計値が所定値(例えば90%)以上であるか否かを判定する(S114)。
CPU負荷の合計値が所定値未満であると判定した場合(S114:NO)、管理OS用VM31は、ステップS111に処理を戻す。CPU負荷の合計値が所定値以上であると判定した場合(S114:YES)、管理OS用VM31は、ステップS112で取得したCPU負荷に基づいて、CPU負荷が最大のゲストOS用VM41(又は42,43)を特定する(S115)。管理OS用VM31は、特定したゲストOS用VM41(又は42,43)に対して設定されている許容CPU負荷を優先度テーブル4jから取得する(S116)。
管理OS用VM31は、ステップS112で取得したゲストOS用VM41(又は42,43)のCPU負荷が、優先度テーブル4jから取得した許容CPU負荷よりも大きいか否かを判断する(S117)。ゲストOS用VM41(又は42,43)のCPU負荷が許容CPU負荷以下であると判断した場合(S117:NO)、管理OS用VM31は、CPU負荷が次に大きいゲストOS用VM42(又は43)を特定する(S118)。
管理OS用VM31は、CPU負荷が次に大きいゲストOS用VMを特定した結果、該当するゲストOS用VMが存在するか否かを判断する(S119)。CPU負荷が次に大きいゲストOS用VMが存在しないと判断した場合(S119:NO)、管理OS用VM31は、ステップS111に処理を戻す。CPU負荷が次に大きいゲストOS用VMが存在すると判断した場合(S119:YES)、管理OS用VM31は、ステップS116に処理を戻し、ステップS118で特定したゲストOS用VM42(又は43)に対して設定されている許容CPU負荷を優先度テーブル4jから取得する(S116)。管理OS用VM31は、特定したゲストOS用VM41(又は42,43)のCPU負荷が許容CPU負荷より大きいと判断するまで、又は、全てのゲストOS用VMのCPU負荷が許容CPU負荷以下と判断するまで、ステップS116〜S119の処理を繰り返す。
管理OS用VM31は、特定したゲストOS用VM41(又は42,43)のCPU負荷が許容CPU負荷より大きいと判断した場合(S117:YES)、特定したゲストOS用VM41(又は42,43)のCPU負荷を保持する(S120)。管理OS用VM31は、特定したゲストOS用VM41(又は42,43)に対して、CPU負荷の低減を要求する(S121)。
以下のステップS122からステップS131までの処理は、上述の実施形態1において図11で説明したステップS18からステップS27までの処理と同一であるので説明を省略する。これにより、管理OS用VM31は、各ゲストOS用VM41,42,43について、アプリケーションプログラム50の実行状態が制御されることによって低減されている処理負荷をVM管理テーブル4fによって逐次管理できる。
本実施形態3のPC10において、管理OS用VM31がゲストOS用VM41,42,43における処理負荷を監視し、必要に応じて実行制御されているアプリケーションプログラム50の制御を解除する処理は、上述の実施形態1において図12及び図13で説明した処理と同一であるので説明を省略する。また、本実施形態3のPC10において、動作中のゲストOS用VM41,42,43の動作を終了させる際の処理は、上述の実施形態1において図14で説明した処理と同一であるので説明を省略する。
上述したように、本実施形態3では、CPU負荷が最大のゲストOS用VM41,42,43であっても、CPU負荷が、設定されている許容CPU負荷よりも小さい場合には、このゲストOS用VM41,42,43における処理負荷を低減させない。よって、各ゲストOS用VM41,42,43において、優先度テーブル4jに設定されている許容CPU負荷の使用が確保される。従って、優先度テーブル4jに大きい値の許容CPU負荷が設定されているゲストOS用VM41,42,43は、他のゲストOS用VM42,43(又は41)よりも高いCPU負荷が許容されるので、優先的に処理を実行することができる。
本実施形態3のPC10は、上述した実施形態1のPC10の変形例として説明したが、本実施形態3の構成は、上述した実施形態2のPC10にも適用することができる。
本実施形態3では、優先利用が設定されていないゲストOS用VM41,42,43に対しては許容CPU負荷として35%のCPU負荷が確保され、優先利用が設定されたゲストOS用VM41,42,43に対しては許容CPU負荷として65%のCPU負荷が確保されていた。しかし、各ゲストOS用VM41,42,43に対する許容CPU負荷はこのような数値に限られず、例えば、PC10の管理者によって任意に変更されてもよい。
また、許容CPU負荷は、「35%」及び「65%」の2段階に限られず、3段階以上に分割して設定してもよい。これにより、3段階以上の優先度を各ゲストOS用VM41,42,43に設定することができる。更に、PC10を使用する際のサービス料金に応じて、許容CPU負荷を変動させてもよい。
本実施形態3では、管理OS用VM31は、各ゲストOS用VM41,42,43から優先利用が要求された場合に、各ゲストOS用VM41,42,43を優先利用できるように設定していた。このような構成のほかに、例えば、予め優先的にPC10を使用できるユーザを登録しておき、登録してあるユーザから優先利用が要求された場合にのみ、このユーザのゲストOS用VM41,42,43を優先利用できるように設定してもよい。
また、各ユーザが時間帯を指定して優先利用を要求し、管理OS用VM31が、要求された時間帯について、各ゲストOS用VM41,42,43に対する優先利用を設定してもよい。この場合、時間帯毎にゲストOS用VM41,42,43のそれぞれが優先的に処理を実行できるので、各ユーザの操作性を向上させることができる。
(実施形態4)
以下に、実施形態4に係るPCについて説明する。なお、本実施形態4のPCは、上述した実施形態1のPC10と同様の構成によって実現することができるので、同様の構成については同一の符号を付して説明を省略する。
上述した実施形態1では、各ゲストOS用VM41,42,43において実行中のアプリケーションプログラム50の実行状態を制御する方法として、アプリケーションプログラム50を「停止」又は「一時停止」させていた。本実施形態4では、アプリケーションプログラム50の実行状態を制御する方法として、対応するモニタ51a,52a,53aに表示させる表示画面のサイズを半分(1/2)にする処理について説明する。
図示しないが、本実施形態4の制御方法テーブル4dには、制御方法として、「停止」及び「一時停止」のほかに、「表示サイズ縮小(半分)」が格納されている。
本実施形態4のゲストOS用VM41,42,43において、制御部41dは、制御方法特定部41cからアプリケーションID及び制御方法を通知される。
本実施形態4の制御部41dは、「表示サイズ縮小(半分)」の制御方法を通知された場合、通知されたアプリケーションIDが示すアプリケーションプログラム50に対して、表示サイズの縮小処理を行なう。制御部41dが表示サイズの縮小処理を行なうことにより、アプリケーションプログラム50における処理負荷が低減される。
制御部41dは、まず、現在表示中の表示画面のサイズを検出する。なお、表示画面のサイズは、アプリケーションプログラム50において設定されており、制御部41dは、現在表示中の表示画面のサイズをアプリケーションプログラム50から取得できる。次に制御部41dは、縮小後の表示画面のサイズを算出する。制御部41dは、現在の表示サイズとして、例えば640pixel×480pixelを取得した場合、縮小後の表示サイズとして、320pixel×240pixelを算出する。そして、制御部41dは、算出した縮小後の表示サイズでの表示画面の表示を開始する。なお、このとき、制御部41dは、対応するモニタ51a(又は52a,53a)に、表示サイズが縮小される旨を通知する通知画面を表示させ、ゲストOS用VM41,42,43のユーザに通知しておく。
本実施形態4のCPU1が実現する各機能において、上述した処理以外は、上述の実施形態1で説明した処理と同様の処理であるので説明を省略する。
また、本実施形態4のPC10において、管理OS用VM31がゲストOS用VM41,42,43を起動させる際の処理は、上述の実施形態1において図9で説明した処理と同一であるので説明を省略する。
また、本実施形態4のPC10において、ゲストOS用VM41,42,43における処理負荷が大きくなった場合に管理OS用VM31が行なう処理は、上述の実施形態1において図10及び図11で説明した処理と同一であるので説明を省略する。なお、本実施形態4のゲストOS用VM41,42,43は、図11のステップS19において、アプリケーションプログラム50の実行状態を制御する方法として「表示サイズ縮小」を読み出す場合がある。この場合、図11のステップS22において、ゲストOS用VM41,42,43は、アプリケーションプログラム50を実行することによって表示される表示画面のサイズを半分(1/2)にする処理を行なう。
本実施形態4のPC10において、管理OS用VM31がゲストOS用VM41,42,43における処理負荷を監視し、必要に応じて実行制御されているアプリケーションプログラム50の制御を解除する処理は、上述の実施形態1において図12及び図13で説明した処理と同一であるので説明を省略する。また、本実施形態4のPC10において、動作中のゲストOS用VM41,42,43の動作を終了させる際の処理は、上述の実施形態1において図14で説明した処理と同一であるので説明を省略する。
上述したように、本実施形態4では、各ゲストOS用VM41,42,43で実行中のアプリケーションプログラム50における処理負荷を低減させる方法として、モニタ51a,52a,53aに表示させる表示画面のサイズを半分にする処理を行なう。これにより、アプリケーションプログラム50の処理を停止又は一時停止させることなく、アプリケーションプログラム50における処理負荷が低減される。よって、表示画面のサイズは縮小されるが、アプリケーションプログラム50の処理は中断されないので、ゲストOS用VM41,42,43のユーザの操作性が向上する。
なお、アプリケーションプログラム50における処理負荷を低減させるために縮小される表示画面のサイズは、アプリケーションプログラム50における処理負荷の大小に応じて適宜変更させてもよい。
本実施形態4のPC10は、上述した実施形態1のPC10の変形例として説明したが、本実施形態4の構成は、上述した実施形態2,3のPC10にも適用することができる。
(実施形態5)
以下に、実施形態5に係るPCについて説明する。なお、本実施形態5のPCは、上述した実施形態1のPC10と同様の構成によって実現することができるので、同様の構成については同一の符号を付して説明を省略する。
上述した実施形態1では、各ゲストOS用VM41,42,43において実行中のアプリケーションプログラム50の実行状態を制御する方法として、アプリケーションプログラム50を「停止」又は「一時停止」させていた。本実施形態5では、アプリケーションプログラム50の実行状態を制御する方法として、アプリケーションプログラム50を実行させるために必要なCPU1を割り当てる際の優先度を変動させる処理について説明する。
図示しないが、本実施形態5の制御方法テーブル4dには、制御方法として、「停止」及び「一時停止」のほかに、「CPUを割り当てる際の優先度を下げる」が格納されている。
本実施形態5のゲストOS用VM41,42,43において、制御部41dは、制御方法特定部41cからアプリケーションID及び制御方法を通知される。
本実施形態5の制御部41dは、「CPUを割り当てる際の優先度を下げる」の制御方法を通知された場合、通知されたアプリケーションIDが示すアプリケーションプログラム50に対して、CPUを割り当てる際の優先度を下げる処理を行なう。制御部41dがCPUを割り当てる際の優先度を下げる処理を行なうことにより、アプリケーションプログラム50の実行速度が遅くなり、処理負荷が低減される。
具体的には、制御部41dは、例えば、マイクロソフト株式会社によって提供されているWindowsが提供する制御関数の一つであるSetPriorityClass()関数を使用し、アプリケーションプログラム50に対してCPUを割り当てる際の優先度を下げる処理を行なう。より具体的には、制御部41dは、通知されたアプリケーションIDが示すアプリケーションプログラム50に対して、例えば、図22に示すような設定情報を設定する。
図22はCPUを割り当てる際の優先度を下げる処理に用いる設定情報を示す図である。図22中の「hProcess」の箇所には、アプリケーションプログラム50を特定するためのハンドルIDを記述する。なお、アプリケーションプログラム50のハンドルIDは、アプリケーションプログラム50に記述されており、制御部41dは、ハンドルIDをアプリケーションプログラム50から取得できる。
なお、制御部41dは、アプリケーションプログラム50に対してCPUを割り当てる際の優先度を下げる処理を行なう際にも、その旨を通知する通知画面を、対応するモニタ51a(又は52a,53a)に表示させ、ゲストOS用VM41,42,43のユーザに通知しておく。
本実施形態5のCPU1が実現する各機能において、上述した処理以外は、上述の実施形態1で説明した処理と同様の処理であるので説明を省略する。
また、本実施形態5のPC10において、管理OS用VM31がゲストOS用VM41,42,43を起動させる際の処理は、上述の実施形態1において図9で説明した処理と同一であるので説明を省略する。
また、本実施形態5のPC10において、ゲストOS用VM41,42,43における処理負荷が大きくなった場合に管理OS用VM31が行なう処理は、上述の実施形態1において図10及び図11で説明した処理と同一であるので説明を省略する。なお、本実施形態4のゲストOS用VM41,42,43は、図11のステップS19において、アプリケーションプログラム50の実行状態を制御する方法として「CPUを割り当てる際の優先度を下げる」を読み出す場合がある。この場合、図11のステップS22において、ゲストOS用VM41,42,43は、アプリケーションプログラム50に対して、CPUを割り当てる際の優先度を下げる処理を行なう。
本実施形態5のPC10において、管理OS用VM31がゲストOS用VM41,42,43における処理負荷を監視し、必要に応じて実行制御されているアプリケーションプログラム50の制御を解除する処理は、上述の実施形態1において図12及び図13で説明した処理と同一であるので説明を省略する。また、本実施形態5のPC10において、動作中のゲストOS用VM41,42,43の動作を終了させる際の処理は、上述の実施形態1において図14で説明した処理と同一であるので説明を省略する。
上述したように、本実施形態5では、各ゲストOS用VM41,42,43で実行中のアプリケーションプログラム50における処理負荷を低減させる方法として、アプリケーションプログラム50にCPU1を割り当てる際の優先度を下げる処理を行なう。これにより、アプリケーションプログラム50の処理を停止又は一時停止させることなく、アプリケーションプログラム50における処理負荷が低減される。よって、アプリケーションプログラム50の動作速度は遅くなるが、アプリケーションプログラム50の処理は中断されないので、ゲストOS用VM41,42,43のユーザの操作性が向上する。
なお、アプリケーションプログラム50にCPU1を割り当てる際の優先度を下げる処理は、上述のSetPriorityClass()関数を使用する方法に限られず、例えば、CPU1の処理時間を分割して実行中の各アプリケーションプログラム50に割り当てる際の割り当て率を下げてもよい。
本実施形態5のPC10は、上述した実施形態1のPC10の変形例として説明したが、本実施形態5の構成は、上述した実施形態2,3のPC10にも適用することができる。
(実施形態6)
以下に、実施形態6に係るPCについて説明する。図23は実施形態6のPCの構成を示すブロック図である。本実施形態6のPC10は、図2に示したハードウェア各部のほかに、外部記憶装置7を備える。外部記憶装置7は、例えば、CD−ROMドライブ又はDVDドライブ等であり、CD−ROM又はDVD−ROM等である記録媒体7aから、記録媒体7aに格納されたデータを読み出す。
記録媒体7aは、上述の各実施形態で説明したPC10として動作するために必要な制御プログラムを記録している。外部記憶装置7は、記録媒体7aから制御プログラムを読み出してHDD4に格納させる。CPU1は、HDD4に格納された制御プログラムをRAM3に読み出して順次実行し、これにより、本実施形態6のPC10は、上述の各実施形態で説明したPC10と同様の動作を行なう。
記録媒体7aとしては、CD−ROM又はDVD−ROMのほかに、フレキシブルディスク、メモリカード、USBメモリ等、各種の記録媒体を用いることができる。
なお、PC10は、インターネット又はLAN(Local Area Network)等のネットワークに接続するための通信部を有してもよい。この場合、PC10は、上述の各実施形態で説明したPC10として動作するために必要な制御プログラムを、ネットワークを介してダウンロードしてHDD4に格納させればよい。
上述した実施形態1〜6では、1つのPC10に仮想化技術を適用し、1つのPC10に複数の入出力デバイスセット51,52,53を直接的に接続してPC10を共用する例について説明した。本願の情報処理装置は、例えば、1つのサーバ装置のハードウェアを仮想化し、このサーバ装置をネットワークを介して複数のユーザによって共用するシンクライアントシステムを提供するサーバ装置においても適用できる。