JP5343586B2 - 情報処理装置、情報処理方法及びコンピュータプログラム - Google Patents

情報処理装置、情報処理方法及びコンピュータプログラム Download PDF

Info

Publication number
JP5343586B2
JP5343586B2 JP2009018558A JP2009018558A JP5343586B2 JP 5343586 B2 JP5343586 B2 JP 5343586B2 JP 2009018558 A JP2009018558 A JP 2009018558A JP 2009018558 A JP2009018558 A JP 2009018558A JP 5343586 B2 JP5343586 B2 JP 5343586B2
Authority
JP
Japan
Prior art keywords
guest
load
management
execution
unit
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.)
Expired - Fee Related
Application number
JP2009018558A
Other languages
English (en)
Other versions
JP2010176413A (ja
Inventor
亮 宮本
隆一 松倉
敬史 大野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2009018558A priority Critical patent/JP5343586B2/ja
Priority to US12/692,327 priority patent/US8448174B2/en
Publication of JP2010176413A publication Critical patent/JP2010176413A/ja
Application granted granted Critical
Publication of JP5343586B2 publication Critical patent/JP5343586B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、仮想化技術が適用され、仮想的に複数の装置としての動作を提供することができる情報処理装置、情報処理方法及びコンピュータプログラムに関する。
近年、仮想マシン(VM:Virtual Machine)技術が注目を集めている。仮想マシン技術とは、1つのコンピュータ内のハードウェア資源を論理的に分割し、仮想的に複数の独立したコンピュータ(仮想マシン)として動作させる技術である。このように、1つのコンピュータによって複数の仮想マシンの動作を実現することにより、1つのコンピュータを複数のユーザによって共用することができる。
このようなコンピュータでは、各仮想マシンが各種の処理の実行を開始する都度、処理に必要なハードウェア資源を割り当てる場合が多い。しかし、1つのコンピュータが備えるハードウェア資源は有限であるので、各ユーザの仮想マシンの使用状況によって、各仮想マシンに割り当てられるハードウェア資源にばらつきが生じる。即ち、処理負荷の大きい処理を実行している仮想マシンが存在する場合、他の仮想マシンに十分なハードウェア資源を割り当てることができない状況が生じる。このような状況では、処理負荷の大きい処理を実行している仮想マシンが、他の仮想マシンの使用環境に影響を与え、他の仮想マシンにおける操作性が低下する虞がある。
そこで、各仮想マシンに割り当てられるハードウェア資源にばらつきが生じた場合に、各仮想マシンへのハードウェア資源の割り当てを再構築するシステムが提案されている(特許文献1,2参照)。
特開2002−202959号公報 特許第4018900号公報
しかし、各仮想マシンへのハードウェア資源の割り当てを再構築する場合、再構築した割り当てを各仮想マシンに反映させるために、各仮想マシンを再起動させる必要がある。従って、他の仮想マシンに影響を与えていない仮想マシンのユーザも、仮想マシンの使用を一時的に中断させる必要があり、各ユーザに与える影響が非常に大きい。
また、従来技術ではサーバ向けのシステムへの適用を想定しており、仮想マシンの性能を保証する等の目的で予め一定量のハードウェア資源を仮想マシンに割り当てておくことが多い。しかし、高負荷な処理を行ないハードウェア資源を大量に消費した仮想マシンが存在した場合に、各仮想マシンに割り当て可能なハードウェア資源に上限があるため、たとえ余剰なハードウェア資源が存在しても、高負荷な仮想マシンへ割り当てることができずハードウェア資源を効率的に利用できない。そこで、各仮想マシンが処理を実行する度にその処理に必要なハードウェア資源を割り当てることで、ハードウェア資源を効率的に利用することは可能である。その場合、各仮想マシンの処理負荷状況に応じてハードウェア資源の割り当てにばらつきが生じる。つまり、処理負荷の高い仮想マシンにはハードウェア資源が多く割り当てられ、その他の仮想マシンに影響を与えてしまうことになる。
本発明は斯かる事情に鑑みてなされたものであり、その目的とするところは、動作中の各仮想マシン(実行手段)に影響を与えずに、各仮想マシンに対してハードウェア資源を公平に割り当てることが可能な情報処理装置、情報処理方法及びコンピュータプログラムを提供することにある。
本願に開示する情報処理装置は、各種の処理を実行する複数の実行手段と、各実行手段に割り当てられるハードウェア資源とを備える情報処理装置であって、実行手段のそれぞれにおけるハードウェア資源の使用率を検出し、検出した使用率の合計値が所定値以上であるか否かを判定する。また、本願に開示する情報処理装置は、使用率の合計値が所定値以上であると判定した場合、実行手段のそれぞれにおけるハードウェア資源の使用率に基づいて、動作状態を制御される実行手段を特定する。更に、本願に開示する情報処理装置は、特定した実行手段が実行中の処理のうちで、実行状態を制御される処理を特定し、特定した処理の実行状態を制御する。
本願に開示する情報処理装置によれば、複数の実行手段のそれぞれにおけるハードウェア資源の使用率の合計値が所定値以上となった場合に、いずれかの実行手段において実行中のいずれかの処理の実行状態が制御される。
本願に開示する情報処理装置では、複数の実行手段のそれぞれにおけるハードウェア資源の使用率の合計値が所定値以上となった場合に、各実行手段に影響を与えずに、各実行手段における処理負荷の均衡を保つことができる。よって、各実行手段を使用する各ユーザの操作性を平等に確保できる。
実施形態1のPCの構成を示す模式図である。 実施形態1のPCの構成を示すブロック図である。 各テーブルの格納内容を示す模式図である。 各テーブルの格納内容を示す模式図である。 実施形態1のPCの機能を示す機能ブロック図である。 実施形態1のPCの機能を示す機能ブロック図である。 表示画面の構成を示す模式図である。 各テーブルの格納内容を示す模式図である。 管理OS用VMによるゲストOS用VMの起動処理の手順を示すフローチャートである。 実施形態1の負荷制御処理の手順を示すフローチャートである。 実施形態1の負荷制御処理の手順を示すフローチャートである。 実施形態1の負荷監視処理の手順を示すフローチャートである。 実施形態1の負荷監視処理の手順を示すフローチャートである。 ゲストOS用VMの終了処理の手順を示すフローチャートである。 実施形態2の負荷制御処理の手順を示すフローチャートである。 実施形態2の負荷制御処理の手順を示すフローチャートである。 実施形態3のPCの機能を示す機能ブロック図である。 優先度テーブルの格納内容を示す模式図である。 優先利用の設定処理の手順を示すフローチャートである。 実施形態3の負荷制御処理の手順を示すフローチャートである。 実施形態3の負荷制御処理の手順を示すフローチャートである。 CPUを割り当てる際の優先度を下げる処理に用いる設定情報を示す図である。 実施形態6のPCの構成を示すブロック図である。
以下に、本願に開示する情報処理装置、情報処理方法及びコンピュータプログラムを、各実施形態を示す図面に基づいて詳述する。以下では、本願に開示する情報処理装置をパーソナルコンピュータ(以下、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で説明した処理と同一であるので説明を省略する。
次に、本実施形態の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負荷として5%の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つのサーバ装置のハードウェアを仮想化し、このサーバ装置をネットワークを介して複数のユーザによって共用するシンクライアントシステムを提供するサーバ装置においても適用できる。
10 PC(情報処理装置)
1 CPU
21 VMM
24 負荷状態監視部(検出手段)
31 管理OS用VM
31e VM負荷判定部(判定手段、特定手段)
41 第1ゲストOS用VM
42 第2ゲストOS用VM
43 第3ゲストOS用VM
41a 第1ゲストOS(実行手段)
41b 負荷解析部(処理特定手段)
41d 制御部(制御手段)
42a 第2ゲストOS(実行手段)
43a 第3ゲストOS(実行手段)

Claims (7)

  1. 各種の処理を実行する複数の実行手段と、該実行手段のそれぞれに割り当てられるハードウェア資源とを備える情報処理装置であって、
    前記実行手段のそれぞれにおける前記ハードウェア資源の使用状況を示す使用率を検出する検出手段と、
    該検出手段が検出した使用率の合計値が所定値以上であるか否かを判定する判定手段と、
    該判定手段によって前記合計値が所定値以上であると判定された場合、前記検出手段が検出した前記実行手段のそれぞれにおける前記使用率に基づいて、動作状態を制御される実行手段を特定する特定手段と、
    該特定手段が特定した実行手段が実行中の処理のうちで、実行状態を制御される処理を特定する処理特定手段と、
    該処理特定手段が特定した処理の実行状態を制御する制御手段と
    を備える情報処理装置。
  2. 前記特定手段は、前記検出手段が検出した前記実行手段のそれぞれにおける前記使用率に基づいて、他の実行手段よりも前記使用率が高い実行手段を特定する請求項1に記載の情報処理装置。
  3. 前記制御手段は、前記処理特定手段が特定した処理の実行状態を、該処理による前記ハードウェア資源の使用率を軽減するように制御する請求項1又は2に記載の情報処理装置。
  4. 前記判定手段は、前記検出手段が検出した前記使用率の合計値が所定値以上である時間を計時し、計時した時間が所定時間以上となった場合に、前記合計値が所定値以上であると判定する請求項1から3までのいずれかひとつに記載の情報処理装置。
  5. 前記特定手段は、前記検出手段が検出した前記実行手段のそれぞれにおける前記使用率と、前記実行手段のそれぞれに対して予め設定された許容使用率とに基づいて、動作状態を制御される実行手段を特定する請求項1から4までのいずれかひとつに記載の情報処理装置。
  6. 各種の処理を実行する複数の実行手段と、該実行手段のそれぞれに割り当てられるハードウェア資源とを備える情報処理装置による情報処理方法であって、
    前記情報処理装置が、前記実行手段のそれぞれにおける前記ハードウェア資源の使用状況を示す使用率を検出する検出ステップと、
    前記情報処理装置が、該検出ステップで検出した使用率の合計値が所定値以上であるか否かを判定するステップと、
    前記情報処理装置が、前記合計値が所定値以上であると判定した場合、前記検出ステップで検出した前記実行手段のそれぞれにおける前記使用率に基づいて、動作状態を制御される実行手段を特定するステップと、
    前記情報処理装置が、特定した実行手段が実行中の処理のうちで、実行状態を制御される処理を特定するステップと、
    前記情報処理装置が、特定した処理の実行状態を制御するステップと
    を含む情報処理方法。
  7. コンピュータに、各種の処理を実行する複数の実行手段と、該実行手段のそれぞれに割り当てられるハードウェア資源とを備える情報処理装置としての動作を実行させるためのコンピュータプログラムであって、
    コンピュータに、
    前記実行手段のそれぞれにおける前記ハードウェア資源の使用状況を示す使用率を検出する検出ステップと、
    該検出ステップで検出した使用率の合計値が所定値以上であるか否かを判定するステップと、
    前記合計値が所定値以上であると判定した場合、前記検出ステップで検出した前記実行手段のそれぞれにおける前記使用率に基づいて、動作状態を制御される実行手段を特定するステップと、
    特定した実行手段が実行中の処理のうちで、実行状態を制御される処理を特定するステップと、
    特定した処理の実行状態を制御するステップと
    を実行させるためのコンピュータプログラム。
JP2009018558A 2009-01-29 2009-01-29 情報処理装置、情報処理方法及びコンピュータプログラム Expired - Fee Related JP5343586B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009018558A JP5343586B2 (ja) 2009-01-29 2009-01-29 情報処理装置、情報処理方法及びコンピュータプログラム
US12/692,327 US8448174B2 (en) 2009-01-29 2010-01-22 Information processing device, information processing method, and recording medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009018558A JP5343586B2 (ja) 2009-01-29 2009-01-29 情報処理装置、情報処理方法及びコンピュータプログラム

Publications (2)

Publication Number Publication Date
JP2010176413A JP2010176413A (ja) 2010-08-12
JP5343586B2 true JP5343586B2 (ja) 2013-11-13

Family

ID=42355228

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009018558A Expired - Fee Related JP5343586B2 (ja) 2009-01-29 2009-01-29 情報処理装置、情報処理方法及びコンピュータプログラム

Country Status (2)

Country Link
US (1) US8448174B2 (ja)
JP (1) JP5343586B2 (ja)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9015706B2 (en) * 2010-07-08 2015-04-21 Symantec Corporation Techniques for interaction with a guest virtual machine
US9195518B1 (en) * 2012-03-27 2015-11-24 Vmware, Inc. System and method for communicating production virtual machine access events to a service appliance in a virtualized environment
JP2013218527A (ja) * 2012-04-09 2013-10-24 Mitsubishi Electric Corp グラフィックス描画装置
US10387201B2 (en) * 2012-06-26 2019-08-20 Vmware, Inc. Storage performance-based virtual machine placement
US9141416B2 (en) * 2013-03-15 2015-09-22 Centurylink Intellectual Property Llc Virtualization congestion control framework for modifying execution of applications on virtual machine based on mass congestion indicator in host computing system
US9430259B2 (en) 2013-03-15 2016-08-30 Centurylink Intellectual Property Llc Virtualization congestion control framework for modifying execution of applications on virtual machine based on mass congestion indicator in host computing system
JP5493031B1 (ja) * 2013-04-30 2014-05-14 エヌ・ティ・ティ・コミュニケーションズ株式会社 端末装置、シナリオ実行制御方法、及びプログラム
US10389577B2 (en) 2013-08-14 2019-08-20 Centurylink Intellectual Property Llc Ethernet carrier group alarm (CGA)
JPWO2015040728A1 (ja) * 2013-09-20 2017-03-02 富士通株式会社 情報処理装置,情報処理方法,プログラム
WO2015073029A1 (en) * 2013-11-15 2015-05-21 Mcafee, Inc. Determining trustworthiness of a virtual machine operating system prior to boot up
US9864623B2 (en) 2013-11-21 2018-01-09 Centurylink Intellectual Property Llc Physical to virtual network transport function abstraction
US9934047B2 (en) * 2014-03-20 2018-04-03 Intel Corporation Techniques for switching between operating systems
JP6295759B2 (ja) * 2014-03-20 2018-03-20 富士通株式会社 ネットワーク管理装置,情報処理システム及びプログラム
CN104951694B (zh) * 2014-03-24 2018-04-10 华为技术有限公司 一种管理虚拟机的隔离方法及装置
US9998320B2 (en) 2014-04-03 2018-06-12 Centurylink Intellectual Property Llc Customer environment network functions virtualization (NFV)
US10356225B2 (en) 2014-04-03 2019-07-16 Centurylink Intellectual Property Llc System and method for implementing isolated service overlays between provider network service point and customer premises
US10225327B2 (en) 2014-08-13 2019-03-05 Centurylink Intellectual Property Llc Remoting application servers
US9898318B2 (en) 2014-08-15 2018-02-20 Centurylink Intellectual Property Llc Multi-line/multi-state virtualized OAM transponder
US10673978B2 (en) 2015-05-06 2020-06-02 Centurylink Intellectual Property Llc Method and system for implementing network experience shifting using shared objects
US10481938B2 (en) 2015-05-06 2019-11-19 Centurylink Intellectual Property Llc System and method for implementing network experience shifting
JP2017059030A (ja) * 2015-09-17 2017-03-23 日本電気株式会社 情報処理装置及び情報処理装置の制御方法
US9882833B2 (en) 2015-09-28 2018-01-30 Centurylink Intellectual Property Llc Intent-based services orchestration
US10078528B2 (en) 2015-10-06 2018-09-18 Centurylink Intellectual Property Llc Virtual machine-to-port peripheral device driver for implementing communications between virtual machines and client devices
US10601863B1 (en) 2016-03-25 2020-03-24 Fireeye, Inc. System and method for managing sensor enrollment
US10785255B1 (en) 2016-03-25 2020-09-22 Fireeye, Inc. Cluster configuration within a scalable malware detection system
US10671721B1 (en) 2016-03-25 2020-06-02 Fireeye, Inc. Timeout management services
US10616266B1 (en) 2016-03-25 2020-04-07 Fireeye, Inc. Distributed malware detection system and submission workflow thereof
US10572644B2 (en) * 2017-01-26 2020-02-25 Microsoft Technology Licensing, Llc Interacting with a computing device via identity-bearing peripheral devices
MX2019011257A (es) * 2017-03-28 2019-11-01 Cloudjumper Corp Metodos y sistemas para proporcionar acceso de activacion por demanda a los servidores de sesiones.
JP7235295B2 (ja) * 2019-03-01 2023-03-08 Necソリューションイノベータ株式会社 仮想マシン管理装置、仮想マシン管理方法、及びプログラム
JP7151631B2 (ja) * 2019-06-11 2022-10-12 株式会社デンソー 車両用制御装置、車両用表示システム、及び車両用表示制御方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0683650A (ja) * 1992-08-31 1994-03-25 Fujitsu Ltd システム資源の監視方法
US7028298B1 (en) * 1999-09-10 2006-04-11 Sun Microsystems, Inc. Apparatus and methods for managing resource usage
JP2002202959A (ja) 2000-12-28 2002-07-19 Hitachi Ltd 動的な資源分配をする仮想計算機システム
JP4018900B2 (ja) 2001-11-22 2007-12-05 株式会社日立製作所 仮想計算機システム及びプログラム
BRPI0416101A (pt) * 2003-10-29 2007-01-02 Ibm sistema de informação, método de controle de carga, programa de controle de carga e mìdia de gravação
JP4367856B2 (ja) * 2005-07-07 2009-11-18 レノボ シンガポール プライヴェート リミテッド プロセス制御システム及びその制御方法
WO2007148371A1 (ja) * 2006-06-19 2007-12-27 Nec Corporation 仮想マシンのための性能管理システムと性能管理方法
US7673113B2 (en) * 2006-12-29 2010-03-02 Intel Corporation Method for dynamic load balancing on partitioned systems
JP5029440B2 (ja) 2008-03-14 2012-09-19 富士通株式会社 情報処理システム、情報処理方法及びコンピュータプログラム
US8892916B2 (en) * 2008-08-06 2014-11-18 International Business Machines Corporation Dynamic core pool management

Also Published As

Publication number Publication date
US8448174B2 (en) 2013-05-21
US20100192152A1 (en) 2010-07-29
JP2010176413A (ja) 2010-08-12

Similar Documents

Publication Publication Date Title
JP5343586B2 (ja) 情報処理装置、情報処理方法及びコンピュータプログラム
JP5029440B2 (ja) 情報処理システム、情報処理方法及びコンピュータプログラム
JP5245869B2 (ja) 情報処理装置、情報処理方法及びコンピュータプログラム
JP4240062B2 (ja) 計算機システムおよび性能計測方法ならびに管理サーバ装置
JP5130375B2 (ja) コンピュータシステム、コンピュータシステムのリソース資源管理サーバ、及びコンピュータシステムのリソース管理方法
JP5365399B2 (ja) スクリーンセーバ制御システム、画像処理装置、画像表示装置、スクリーンセーバ制御方法、及びコンピュータプログラム
US8966489B2 (en) Information processing device, information processing method, and computer product
US10459769B2 (en) Elastic container management system
US8566463B2 (en) Concurrent web based multi-task support for control management system
US7330957B2 (en) User-based allocation and deallocation of storage in a storage system
JP2011134024A (ja) 計算機システム、情報処理装置、仮想計算機運用方法及びプログラム
US9213544B2 (en) Desktop shadowing in a virtual desktop infrastructure environment
US20110029971A1 (en) Information processing apparatus, image processing method and computer program
US20140067917A1 (en) Daas manager and daas client for daas system
KR20150045669A (ko) 가상 데스크탑 서비스 장치 및 방법
JP2008140120A (ja) 計算資源管理プログラム、計算資源管理装置および分散処理システム
KR20170061675A (ko) 타겟 장치 리소스를 호스트 장치의 컴퓨팅 환경에 대여하는 방법
JP2010237788A (ja) サーバ装置、計算機システム、プログラム及び仮想計算機移動方法
JP7174764B2 (ja) リソーススケジューリング方法、機器、システム、ならびにセンタサーバ
JP5493976B2 (ja) 情報処理装置、計算機システム及びプログラム
JP5360199B2 (ja) 仮想計算機システム、情報処理装置、コンピュータプログラム及び接続制御方法
JP4526539B2 (ja) コンピュータ・システム及び情報処理方法
JP5533005B2 (ja) 情報処理装置、計算機システム及びプログラム
KR101608327B1 (ko) 이기종 하이퍼바이저 환경에서의 스토리지 제공방법
JP6064822B2 (ja) 情報処理システム、情報処理装置及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20111006

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130318

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130326

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130424

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130716

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130729

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees