JP2016151852A - 実行情報通知プログラム、情報処理装置および情報処理システム - Google Patents

実行情報通知プログラム、情報処理装置および情報処理システム Download PDF

Info

Publication number
JP2016151852A
JP2016151852A JP2015028415A JP2015028415A JP2016151852A JP 2016151852 A JP2016151852 A JP 2016151852A JP 2015028415 A JP2015028415 A JP 2015028415A JP 2015028415 A JP2015028415 A JP 2015028415A JP 2016151852 A JP2016151852 A JP 2016151852A
Authority
JP
Japan
Prior art keywords
virtual machine
information
unit
execution
storage 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.)
Granted
Application number
JP2015028415A
Other languages
English (en)
Other versions
JP6447217B2 (ja
Inventor
優人 田▲邨▼
Masato Tamura
優人 田▲邨▼
耕太 中島
Kota Nakajima
耕太 中島
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 JP2015028415A priority Critical patent/JP6447217B2/ja
Priority to US14/974,932 priority patent/US9852008B2/en
Publication of JP2016151852A publication Critical patent/JP2016151852A/ja
Application granted granted Critical
Publication of JP6447217B2 publication Critical patent/JP6447217B2/ja
Active 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/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
    • 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/45537Provision of facilities of other operating environments, e.g. WINE
    • 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
    • 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]
    • 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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • 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/45583Memory management, e.g. access or allocation
    • 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/45591Monitoring or debugging support
    • 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
    • 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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

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

Abstract

【課題】仮想マシンへのリソースの割り当てを迅速に変更できるようにする。
【解決手段】情報処理装置10は、記憶部11と、仮想マシン14を動作させる演算部12とを有する。演算部12は、仮想マシン14上の実行待ち中であるプロセスP1,P2,P3を検出する。演算部12は、検出されたプロセスP1,P2,P3に応じたプロセス情報16を、記憶部11の中の、仮想マシン14を管理する管理ソフトウェア15から参照可能な記憶領域11aに書き込む。
【選択図】図1

Description

本発明は実行情報通知プログラム、情報処理装置および情報処理システムに関する。
現在、物理的なコンピュータ(物理マシンと言うことがある)上で、複数の仮想的なコンピュータ(仮想マシン(VM:Virtual Machine)と言うことがある)を動作させる、仮想化技術が利用されている。ある情報処理と他の情報処理とを異なる仮想マシンに実行させることで、それらの情報処理を干渉しないように明確に分離することができる。よって、ユーザ毎に仮想マシンを用意することで、複数の仮想マシンを同じ物理マシンに配置しても、それら複数のユーザの情報処理を分離することが容易となる。
物理マシンでは、仮想マシンを管理する管理ソフトウェアが実行されている。管理ソフトウェアには、仮想マシンモニタ(VMM:Virtual Machine Monitor)、ハイパーバイザ、管理オペレーティングシステム(OS:Operating System)などと呼ばれるものが含まれる。管理ソフトウェアは、物理マシンが有するCPU(Central Processing Unit)コアやRAM(Random Access Memory)領域などの物理的・ハードウェア的なリソースを、その物理マシンに配置された仮想マシンに対して割り当てる。各仮想マシンでは、他の仮想マシンとは独立にユーザ用のOS(ゲストOSやユーザOSと言うことがある)が実行される。各仮想マシンのOSは、管理ソフトウェアから割り当てられたリソースの範囲内で、そのOS上で起動されたプロセスのスケジューリングを行う。
リソース割り当てに関して、動的に仮想マシンにリソースを割り当てる仮想マシンシステムが提案されている。提案の仮想マシンシステムでは、複数の仮想マシンそれぞれが管理ソフトウェアにリソース要求を送信する。管理ソフトウェアは、複数の仮想マシンからのリソース要求に基づいて最適化演算を行い、各仮想マシンにリソースを割り当てる。管理ソフトウェアは、割り当て結果を示すリソース供給情報を各仮想マシンに送信する。複数の仮想マシンと管理ソフトウェアの間で、リソース要求およびリソース供給情報を継続的に交換することで、各仮想マシンへの動的なリソース割り当てが実現される。
なお、複数のコアを含むプロセッサ(マルチコアプロセッサ)を有するデータ処理システムが提案されている。提案のデータ処理システムでは、OSまたはハイパーバイザが、あるスレッドの実行特徴を学習してスレッド性能データを生成する。当該スレッドが再び実行される場合、OSはスレッド性能データに基づいて、複数のコアのうち最も効率的に実行できると予測されるコアを当該スレッドに割り当てる。
また、性能の異なる複数のコアを有する異種処理システムが提案されている。提案の異種処理システムでは、ハイパーバイザが、コアを仮想化して仮想コアを定義し、OSに対して仮想コアを割り当てる。ハイパーバイザは、仮想コア上でのスレッドの実行を要求するスケジューリング要求をOSから受信すると、当該スレッドを実行するコアを選択し、選択したコアについてスレッドのスケジューリングを行う。これにより、ハイパーバイザを通じて、コア間の性能の違いをOSから隠蔽することができる。
国際公開第2008/132924号 特開2009−151774号公報 国際公開第2012/170746号
管理ソフトウェアは、仮想マシンの負荷に応じて当該仮想マシンへのリソースの割り当てを動的に変更することがある。動的なリソース割り当てを実現するには、管理ソフトウェアは、仮想マシンの負荷に関する情報を仮想マシンから継続的に取得することになる。しかし、管理ソフトウェアと仮想マシンの間の通信が効率的でなくそのオーバヘッドが大きいと、仮想マシンの負荷が変化してからリソースの割り当てが変化するまでの遅延が大きくなり、仮想マシンの需要を十分に満たせなくなるという問題がある。
例えば、管理ソフトウェアと仮想マシンの間の通信の方法として、「割り込み」を用いる方法が考えられる。しかしながら、「割り込み」を用いると、割り込まれた側のCPUリソースは、割り込みハンドラを起動して割り込み直前の処理状態を退避するなどの事前処理を行い、その後に負荷調査などの本来の処理を行うルーチンを呼び出すことになる。このため、割り込みハンドラのオーバヘッドが大きく通信の遅延が大きくなってしまう。その結果、仮想マシンの負荷が急激に高くなっても、その仮想マシンの割り当てリソース量がしばらくは増えず、高負荷の状態が続いてしまうおそれがある。
1つの側面では、本発明は、仮想マシンへのリソースの割り当てを迅速に変更できるようにする実行情報通知プログラム、情報処理装置および情報処理システムを提供することを目的とする。
1つの態様では、コンピュータに以下の処理を実行させる実行情報通知プログラムが提供される。コンピュータで動作する仮想マシン上の実行待ち中であるプロセスを検出する。検出されたプロセスに応じたプロセス情報を、コンピュータが有する記憶部の中の、仮想マシンを管理する管理ソフトウェアから参照可能な記憶領域に書き込む。
また、1つの態様では、記憶部と演算部とを有する情報処理装置が提供される。
また、1つの態様では、記憶部と、仮想マシンを動作させる第1の演算部と、仮想マシンを管理する管理ソフトウェアを実行する第2の演算部とを有する情報処理システムが提供される。第1の演算部は、仮想マシン上の実行待ち中であるプロセスを検出し、検出されたプロセスに応じたプロセス情報を、記憶部の中の管理ソフトウェアから参照可能な記憶領域に書き込む。第2の演算部は、記憶領域を監視し、記憶領域からプロセス情報が検出された場合、プロセス情報に基づいて仮想マシンにリソースを割り当てる。
1つの側面では、仮想マシンへのリソースの割り当てを迅速に変更できるようになる。
第1の実施の形態の情報処理装置を示す図である。 情報処理装置のハードウェア例を示すブロック図である。 仮想化アーキテクチャの例を示すブロック図である。 CPUリソースの割り当て例を示す図である。 リソース割り当ての第1のフロー例を示すシーケンス図である。 リソース割り当ての第2のフロー例を示すシーケンス図である。 プロセス情報の通知方法の例を示す図である。 情報処理装置の第1の機能例を示すブロック図である。 時間推定テーブルの例を示す図である。 プロセス情報テーブルの例を示す図である。 スケジューラの手順例を示すフローチャートである。 リソース割り当て部の手順例を示すフローチャートである。 情報処理装置の第2の機能例を示すブロック図である。 情報処理装置の第3の機能例を示すブロック図である。 プロセス監視部の手順例を示すフローチャートである。
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の情報処理装置を示す図である。
第1の実施の形態の情報処理装置10は、仮想化技術を用いて1または2以上の仮想マシンを動作させることができるコンピュータ(物理マシン)である。情報処理装置10は、記憶部11および演算部12,13を有する。ただし、演算部12と演算部13とが、ネットワークで接続された異なる筐体または異なる物理マシンに属していてもよい。その場合、情報処理装置10を情報処理システムと言うこともできる。
記憶部11は、演算部12,13からアクセスされる共有の記憶装置(例えば、共有メモリ)である。記憶部11は、演算部12,13が実行するプログラムや当該プログラムによって使用されるデータを記憶する。記憶部11は、例えば、RAMなどの揮発性の半導体メモリである。ただし、記憶部11は、フラッシュメモリやHDD(Hard Disk Drive)などの不揮発性の記憶装置であってもよい。
演算部12(第1の演算部)は、仮想マシン14を動作させる。演算部13(第2の演算部)は、仮想マシン14を管理する管理ソフトウェア15を実行する。ただし、仮想マシン14と管理ソフトウェア15とが同一の演算部上で実行されてもよい。演算部12,13それぞれは、例えば、CPU、2以上のCPUの集合、CPUコア、2以上のCPUコアの集合などである。演算部12,13は、CPUリソースと言うこともできる。演算部12,13は、記憶部11に記憶されたプログラムを実行する。ただし、演算部12,13は、DSP(Digital Signal Processor)などの他の種類のプロセッサを含んでもよく、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの特定用途の電子回路を含んでもよい。複数のプロセッサの集合(マルチプロセッサ)を「プロセッサ」と言うこともある。
仮想マシン14は、OSを実行する。情報処理装置10で他の仮想マシンが動作していても、仮想マシン14は、他の仮想マシンとは独立にOSを実行する。これにより、仮想マシン間で情報処理を明確に分離することができる。仮想マシン14に対しては、管理ソフトウェア15によって演算部12が割り当てられている。仮想マシン14のOSは、割り当てられた演算部12のリソースに基づいて、当該OS上で起動されたプロセスのスケジューリングを行う。OS上で起動されるプロセスには、アプリケーションソフトウェアのプロセスやデバイスドライバのプロセスなどが含まれる。
プロセスのスケジューリングに関して、仮想マシン14のOSは、実行待ちのプロセスを並べた待ち行列を管理する。仮想マシン14のOSは、所定のスケジューリングアルゴリズムに従い、待ち行列に含まれるプロセスの中から次に実行するプロセスを決定する。例えば、FIFO(First In First Out)方式では、実行中のプロセスが終了する毎に、待ち行列の先頭から次のプロセスが抽出されて開始される。また、プリエンプティブ方式では、所定の割り当て時間が経過すると実行中のプロセスが中断されて待ち行列の末尾に戻され、待ち行列の先頭から次のプロセスが抽出されて開始される。図1の例では、仮想マシン14の待ち行列にプロセスP1,P2,P3が含まれている。
管理ソフトウェア15は、情報処理装置10が有する物理的・ハードウェア的なリソースの一部を仮想マシン14に割り当てる。現在、仮想マシン14には演算部12が割り当てられている。また、管理ソフトウェア15は、仮想マシン14の負荷に応じて、仮想マシン14に割り当てるリソースを動的に変更する。例えば、管理ソフトウェア15は、仮想マシン14の負荷が高くなると仮想マシン14に割り当てるリソースを増やし、仮想マシン14の負荷が低くなると仮想マシン14に割り当てるリソースを減らす。ただし、情報処理装置10で他の仮想マシンが動作している場合、管理ソフトウェア15は、他の仮想マシンの負荷も考慮して仮想マシン14に割り当てるリソースを決定してもよい。
ここで、管理ソフトウェア15が仮想マシン14の負荷を把握できるように、次のような手順で通信が行われる。演算部12は、仮想マシン14上の実行待ちのプロセス(例えば、プロセスP1,P2,P3)を検出する。実行待ちのプロセスは、例えば、仮想マシン14のOSが有する情報を参照することで検出できる。演算部12は、検出されたプロセスに応じたプロセス情報16を、記憶部11の中の記憶領域11aに書き込む。記憶領域11aは、管理ソフトウェア15から参照可能な領域であり、例えば、管理ソフトウェア15によって記憶部11上に確保されたものである。記憶領域11aの場所は、予め管理ソフトウェア15から仮想マシン14に通知されてもよい。
プロセス情報16は、検出された実行待ちのプロセスの数を含んでもよい。例えば、待ち行列にプロセスP1,P2,P3が含まれている場合、実行待ちのプロセスは3個である。また、プロセス情報16は、検出されたプロセスが実行されるまでの待ち時間(実行待ちのプロセスが複数ある場合は、例えば、最大の待ち時間)の推定値を含んでもよい。例えば、実行待ちのプロセスの数と待ち行列の末尾にあるプロセスの過去の実行状況から、末尾のプロセスが開始されるまでの待ち時間が推定される。演算部12は、例えば、実行待ちのプロセスの検出およびプロセス情報16の書き込みを、仮想マシン14のOSによってプロセスのスケジューリングが行われる毎に実行する。
演算部13は、記憶部11の記憶領域11aを監視する。例えば、演算部13は、ポーリング方式によって定期的に記憶領域11aにアクセスする。演算部13は、記憶領域11aからプロセス情報16が検出された場合、検出されたプロセス情報16に基づいて仮想マシン14に割り当てるリソースを変更する。情報処理装置10で他の仮想マシンが動作している場合、演算部13は、次のような方法によって、プロセス情報16が何れの仮想マシンに対応するものであるか特定してもよい。例えば、演算部13は、仮想マシン毎に記憶部11に記憶領域を確保しておく。これにより、記憶領域11aに記憶されたプロセス情報16は、仮想マシン14に対応するものと判断できる。また、例えば、演算部12がプロセス情報16に仮想マシン14の識別情報を付加しておく。
第1の実施の形態の情報処理装置10によれば、仮想マシン14上の実行待ちのプロセスが検出され、管理ソフトウェア15から参照可能な記憶領域11aに、実行待ちのプロセスに関するプロセス情報16が書き込まれる。管理ソフトウェア15によって記憶領域11aが監視され、記憶領域11aからプロセス情報16が検出されると、プロセス情報16に基づいて仮想マシン14のリソースの割り当てが変更される。これにより、仮想マシン14と管理ソフトウェア15との間の通信を効率化でき、仮想マシン14の負荷に応じて迅速に仮想マシン14にリソースを割り当てることが可能となる。
例えば、管理ソフトウェア15が「割り込み」を用いて仮想マシン14の負荷情報を取得しようとすると、本来の処理の前に割り込みハンドラが起動され、通信のオーバヘッドが大きくなってしまう。このため、仮想マシン14の負荷が変化してからその変化がリソース割り当てに反映されるまでの遅延が大きくなってしまう。これに対し、第1の実施の形態の方法によれば、割り込みを用いる方法と比べて通信のオーバヘッドが小さく、仮想マシン14の負荷の変化を管理ソフトウェア15が迅速に把握できる。その結果、仮想マシン14の負荷が急増したときに仮想マシン14のリソースを迅速に増やすことができるなど、負荷の変化に迅速に対応することが可能となる。
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図2は、情報処理装置のハードウェア例を示すブロック図である。
第2の実施の形態の情報処理装置100は、複数の仮想マシンを動作させることができる。情報処理装置100は、端末装置、クライアント装置、クライアントコンピュータなどと呼ばれるものであってもよい。また、情報処理装置100は、サーバ装置、サーバコンピュータ、ホストコンピュータなどと呼ばれるものであってもよい。情報処理装置100は、CPU101,102、タイマ103、RAM104、HDD105、画像信号処理部106、入力信号処理部107、媒体リーダ108および通信インタフェース109を有する。これらのユニットはバス110に接続されている。
CPU101,102は、プログラムを実行するプロセッサパッケージである。CPU101,102は、HDD105に格納されたプログラムやデータの少なくとも一部をRAM104にロードし、プログラムを実行する。CPU101は、コア101a,101b,101c,101dを有する。CPU102は、コア102a,102b,102c,102dを有する。コア101a,101b,101c,101d,102a,102b,102c,102dは、並列にプログラムの命令を実行できる。なお、1つのCPUまたは1つのコアを「プロセッサ」と言うことがある。また、2以上のCPUの集合または2以上のコアの集合を、「マルチプロセッサ」や「プロセッサ」と言うことがある。
タイマ103は、指定された時間が経過したときにその旨を通知するハードウェアである。タイマ103は、何れかのコアから指定時間を含むタイマ要求を受け付けると、指定時間からのカウントダウン(または、ゼロからのカウントアップ)を開始する。残り時間がゼロになる(または、カウンタが指定時間と一致する)と、タイマ103は、タイマ要求を発行したコアに対してタイマ割り込み信号を送信する。なお、各CPUまたは各コアの中に、タイマ103に相当するハードウェアが搭載されていてもよい。
RAM104は、コア101a,101b,101c,101d,102a,102b,102c,102dから使用される共有メモリである。RAM104は、プログラムやデータを一時的に記憶する。なお、情報処理装置100は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えていてもよい。
HDD105は、OS、デバイスドライバ、アプリケーションソフトウェアなどの各種のソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、情報処理装置100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
画像信号処理部106は、コア101a,101b,101c,101d,102a,102b,102c,102dからの指示に従って、情報処理装置100に接続されたディスプレイ111に画像を出力する。ディスプレイ111としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ(PDP:Plasma Display Panel)、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなどを用いることができる。
入力信号処理部107は、情報処理装置100に接続された入力デバイス112から入力信号を取得し、何れかのコアに出力する。入力デバイス112としては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、情報処理装置100に、複数の種類の入力デバイスが接続されてもよい。
媒体リーダ108は、記録媒体113に記録されたプログラムやデータを読み取る駆動装置である。記録媒体113として、例えば、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。媒体リーダ108は、例えば、記録媒体113から読み取ったプログラムやデータをRAM104またはHDD105に格納する。
通信インタフェース109は、ネットワーク114に接続され、ネットワーク114を介して他の情報処理装置と通信するインタフェースである。通信インタフェース109は、ケーブルでスイッチやルータなどの通信装置と接続される有線通信インタフェースでもよいし、無線基地局と接続される無線通信インタフェースでもよい。
なお、情報処理装置100は、媒体リーダ108を備えていなくてもよい。また、ユーザが操作する端末装置からネットワーク114経由で情報処理装置100を制御できる場合、情報処理装置100は、画像信号処理部106や入力信号処理部107を備えていなくてもよい。また、ディスプレイ111や入力デバイス112が、情報処理装置100の筐体と一体に形成されていてもよい。なお、RAM104は、第1の実施の形態の記憶部11の一例である。コア101aは、第1の実施の形態の演算部12の一例である。コア102aは、第2の実施の形態の演算部13の一例である。
図3は、仮想化アーキテクチャの例を示すブロック図である。
情報処理装置100は、仮想マシン120,130および仮想マシンモニタ140を有する。仮想マシン120,130は、仮想化技術を用いて実現される仮想的なコンピュータである。仮想マシンモニタ140は、仮想マシン120,130を管理する。仮想マシンモニタ140は、ハイパーバイザと呼ばれることもある。仮想マシンモニタ140は、例えば、1または2以上のコアで実行されるプログラムを用いて実装される。なお、仮想マシン120は、第1の実施の形態の仮想マシン14の一例である。仮想マシンモニタ140は、第1の実施の形態の管理ソフトウェア15の一例である。
仮想マシンモニタ140は、情報処理装置100が有する物理的・ハードウェア的なリソースを、仮想マシン120,130に割り当てる。仮想マシン120,130に割り当てられるリソースには、CPU101,102の演算能力であるCPUリソースと、RAM104の記憶領域であるRAMリソースが含まれる。また、仮想マシン120,130に割り当てられるリソースには、HDD105の記憶領域であるHDDリソースや、通信インタフェース109の帯域である通信リソースなどが含まれることがある。第2の実施の形態では、リソースとして主にCPUリソースを想定する。また、仮想マシン120,130には、原則としてコア単位でCPUリソースが割り当てられるとする。ただし、1つのコアの演算時間を分割して異なる仮想マシンに割り当てることも可能である。
仮想マシン120は、プロセス121a,121b,121cおよびオペレーティングシステム122を有する。プロセス121a,121b,121cは、オペレーティングシステム122上で起動された、処理の実行単位である。プロセス121a,121b,121cでは、例えば、アプリケーションプログラムに従って処理が実行される。
オペレーティングシステム122は、仮想マシン120を制御する。オペレーティングシステム122は、仮想マシンモニタ140から割り当てられたリソースのみを、情報処理装置100が有するリソースと認識する。そして、オペレーティングシステム122は、割り当てられたリソースを用いてプロセス121a,121b,121cが時分割で実行されるように、プロセス121a,121b,121cをスケジューリングする。
オペレーティングシステム122は、プロセス121a,121b,121cを待ち行列に入れて管理する。オペレーティングシステム122は、実行中のプロセスが中断または終了する毎に、実行待ちのプロセスの中から優先順位の高いプロセスを選択して開始させる。プロセスのスケジューリングには、FIFO方式やプリエンプティブ方式などの所定のスケジューリングアルゴリズムが用いられる。FIFO方式の場合、オペレーティングシステム122は、実行中のプロセスが終了するのを待ち、終了すると待ち行列の先頭から実行待ちのプロセスを1つ抽出して開始させる。プリエンプティブ方式の場合、オペレーティングシステム122は、所定の割り当て時間が経過すると、実行中のプロセスを中断させて待ち行列の末尾に戻す。そして、オペレーティングシステム122は、待ち行列の先頭から実行待ちのプロセスを1つ抽出して開始させる。
仮想マシン130は、プロセス131a,131b,131cおよびオペレーティングシステム132を有する。仮想マシン120と仮想マシン130とは、仮想マシンモニタ140から異なるリソースが割り当てられることで、情報処理が互いに干渉しないように明確に分離される。よって、仮想マシン120,130は、異なるユーザによって起動されたものであってもよい。プロセス131a,131b,131cは、仮想マシン120のプロセス121a,121b,121cに対応する。オペレーティングシステム132は、仮想マシン120のオペレーティングシステム122に対応する。
図4は、CPUリソースの割り当て例を示す図である。
仮想マシン120,130にはそれぞれ、CPUリソースとして1または2以上のコアが割り当てられる。また、仮想マシンモニタ140は、少なくとも1つのコアを使用する。例えば、仮想マシン120には、CPU101のコア101a,101bが割り当てられる。仮想マシン130には、CPU101のコア101c,101dが割り当てられる。仮想マシンモニタ140は、CPU102のコア102aを使用する。
ここで、仮想マシンモニタ140は、仮想マシン120,130の負荷を監視し、負荷に応じて動的に仮想マシン120,130へのリソースの割り当てを変更することができる。仮想マシン120,130の負荷を示す指標としては、後述するように、実行待ちのプロセスの数や、待ち行列の末尾にあるプロセスが開始されるまでの待ち時間の推定値(推定最大待ち時間)などを用いることができる。実行待ちのプロセス数や推定最大待ち時間が大きいほど、その仮想マシンの負荷が大きいと判断される。
仮想マシンモニタ140は、複数の仮想マシンの間の相対的な負荷の大きさに基づいて、各仮想マシンに割り当てるリソースを決定する。特に、仮想マシンモニタ140は、相対的に負荷が大きい仮想マシンのCPUリソースを増やし、相対的に負荷が小さい仮想マシンのCPUリソースを減らす。例えば、仮想マシン120の負荷が大きくなり、仮想マシン130の負荷が小さくなったとする。すると、例えば、仮想マシンモニタ140は、仮想マシン120にコア101a,101b,101cを割り当て、仮想マシン120が使用するコアの数を増やす。また、仮想マシンモニタ140は、仮想マシン130にコア101dを割り当て、仮想マシン130が使用するコアの数を減らす。
次に、仮想マシンモニタ140が仮想マシン120,130の負荷を監視する方法について説明する。以下では、仮想マシンモニタ140が割り込みを用いて定期的に仮想マシン120,130から負荷情報を収集する第1の方法と、仮想マシン120,130がRAM104の所定の記憶領域にプロセス情報を直接書き込む第2の方法を説明する。
図5は、リソース割り当ての第1のフロー例を示すシーケンス図である。
第1の方法では、負荷情報を収集する周期がタイマ103に設定される。タイマ103は、設定された時間が経過すると、仮想マシンモニタ140に対してタイマ割り込みを発行する(S10)。仮想マシンモニタ140では、タイマ割り込みを受け付けると、タイマ割り込みに対応する割り込みハンドラが実行される(S11)。割り込みハンドラは、割り込みの種類毎に用意されるプログラムモジュールである。割り込みハンドラによって、割り込み直前のコア102aの状態がRAM104に退避され、所望のプログラムモジュールが呼び出される。すなわち、コア102aでコンテキストスイッチが発生する。
コンテキストスイッチが完了すると、仮想マシンモニタ140は、仮想マシン120に対して負荷情報要求を送信する(S12)。負荷情報要求は、仮想マシン120に対する割り込みとして実現される。仮想マシン120では、負荷情報要求が送信されると、割り込みハンドラが実行される(S13)。割り込みハンドラによって、割り込み直前のコア101aなどのコアの状態がRAM104に退避され、所望のプログラムモジュールが呼び出される。すなわち、コア101aなどでコンテキストスイッチが発生する。
コンテキストスイッチが完了すると、仮想マシン120は、仮想マシン120の現在の負荷を確認し、現在の負荷を示す負荷情報を仮想マシンモニタ140に送信する(S14)。負荷情報の送信は、仮想マシンモニタ140に対する割り込みとして実現される。仮想マシンモニタ140では、負荷情報が送信されると、割り込みハンドラが実行される(S15)。そして、仮想マシンモニタ140は、仮想マシン120から取得した負荷情報に基づいて、仮想マシン120,130へのリソースの割り当てを再計算し、仮想マシン120,130にリソースを割り当てる(S16)。このとき、仮想マシン130の負荷は、前回から変化していないものとして取り扱う。その後、仮想マシンモニタ140は、負荷情報を収集する周期をタイマ103に設定する(S17)。
同様に、タイマ103は、設定された時間が経過すると、仮想マシンモニタ140に対してタイマ割り込みを発行する(S18)。仮想マシンモニタ140では、タイマ割り込みに対応する割り込みハンドラが実行される(S19)。そして、仮想マシンモニタ140は、仮想マシン130に対して負荷情報要求を送信する(S20)。仮想マシン130では、負荷情報要求が送信されると、割り込みハンドラが実行される(S21)。そして、仮想マシン130は、仮想マシン130の現在の負荷を確認し、現在の負荷を示す負荷情報を仮想マシンモニタ140に送信する(S22)。
仮想マシンモニタ140では、負荷情報が送信されると、割り込みハンドラが実行される(S23)。そして、仮想マシンモニタ140は、仮想マシン130から取得した負荷情報に基づいて、仮想マシン120,130へのリソースの割り当てを再計算し、仮想マシン120,130にリソースを割り当てる(S24)。このとき、仮想マシン120の負荷は、前回から変化していないものとして取り扱う。その後、仮想マシンモニタ140は、負荷情報を収集する周期をタイマ103に設定する(S25)。
なお、上記では複数の仮想マシンの負荷情報を間隔を空けて取得し、1つの仮想マシンの負荷情報を取得する毎にリソースの割り当てを再計算している。これに対して、1回に複数の仮想マシンから負荷情報を取得し、複数の仮想マシンの負荷情報に基づいてリソースの割り当てを再計算してもよい。その場合、例えば、仮想マシンモニタ140は、上記のステップS12に続けて仮想マシン130に負荷情報要求を送信する。
しかし、図5に示した第1の方法では、負荷の確認やリソース割り当てなどの本来の処理と比べて割り込みハンドラの処理時間が長くなるおそれがあり、仮想マシン120,130と仮想マシンモニタ140の間の通信のオーバヘッドが大きいという問題がある。例えば、割り込みハンドラによるコンテキストスイッチには、1マイクロ秒〜10マイクロ秒程度の時間を要することがある。一方、負荷の確認などの本来の処理は、0.1マイクロ秒〜1マイクロ秒程度の時間で済む可能性がある。
このため、仮想マシン120,130の負荷が変化してからリソースの割り当てが更新されるまでの遅延が大きくなり、仮想マシン120,130におけるリソースの需要に迅速に対応できない可能性がある。そこで、第2の実施の形態では、仮想マシン120,130の負荷を監視する方法として、次の第2の方法を採用することにする。
図6は、リソース割り当ての第2のフロー例を示すシーケンス図である。
第2の方法では、仮想マシンモニタ140は、後述するように、RAM104に共有領域を確保しておく。共有領域は、仮想マシン120に対応付けた領域と仮想マシン130に対応付けた領域とを含む。仮想マシンモニタ140は、共有領域を所定周期(例えば、1ナノ秒〜10ナノ秒程度の周期)でポーリングして監視する(S30)。例えば、仮想マシンモニタ140は、1回のポーリング処理で、共有領域内の複数の領域を順にアクセスし、少なくとも1つの領域にプロセス情報が記憶されていたか判断する。少なくとも1つの領域でプロセス情報が検出されるまで、周期的にポーリングが行われる。
共有領域のポーリングは、例えば、仮想マシンモニタ140がポーリング用のスレッドを起動し、他のスレッドと並行して実行することで実現できる。ポーリング用のスレッドは、例えば、共有領域からの読み出しを行い、プロセス情報が検出されなければ一定時間スリープして、再び共有領域からの読み出しを行うことを繰り返す。このような繰り返しはループを含むプログラムとして実装でき、タイマ割り込みを使用しなくてもよい。
仮想マシン120では、オペレーティングシステム122がプロセスのスケジューリングを行う(S31)。スケジューリングの契機は、スケジューリングアルゴリズムに依存する。例えば、オペレーティングシステム122は、実行中のプロセスが終了したとき、または、実行中のプロセスがプリエンプションによって中断したとき、スケジューリングを行う。スケジューリングによって、プロセスの待ち行列が更新される。仮想マシン120は、更新された待ち行列を参照してプロセス情報を生成し、共有領域内の仮想マシン120に対応付けられた領域にプロセス情報を書き込む(S32)。プロセス情報は、実行待ちのプロセス数および推定最大待ち時間の少なくとも一方を含む。
仮想マシンモニタ140は、共有領域内の仮想マシン120に対応付けた領域からプロセス情報が検出されると、プロセス情報を当該領域からRAM104の他の領域に移して当該領域を空にする。そして、仮想マシンモニタ140は、仮想マシン120のプロセス情報に基づいて、仮想マシン120,130にリソースを割り当てる(S33)。このとき、仮想マシン130の実行待ち状況は、前回から変化していないものとして取り扱う。例えば、仮想マシンモニタ140は、仮想マシン120の実行待ちのプロセス数や推定最大待ち時間が増加した場合、仮想マシン120に割り当てるCPUリソースを増やす。
仮想マシン130では、オペレーティングシステム132がプロセスのスケジューリングを行う(S34)。例えば、オペレーティングシステム132は、仮想マシン130において実行中のプロセスが終了したとき、または、実行中のプロセスがプリエンプションによって中断したとき、スケジューリングを行う。仮想マシン130は、仮想マシン130の待ち行列を参照してプロセス情報を生成し、共有領域内の仮想マシン130に対応付けられた領域にプロセス情報を書き込む(S35)。プロセス情報は、仮想マシン130の実行待ちのプロセス数および推定最大待ち時間の少なくとも一方を含む。
仮想マシンモニタ140は、共有領域内の仮想マシン130に対応付けた領域からプロセス情報が検出されると、プロセス情報を当該領域からRAM104の他の領域に移して当該領域を空にする。そして、仮想マシンモニタ140は、仮想マシン130のプロセス情報に基づいて、仮想マシン120,130にリソースを割り当てる(S36)。このとき、仮想マシン120の実行待ち状況は、前回から変化していないものとして取り扱う。
その後、仮想マシン120では、オペレーティングシステム122がプロセスのスケジューリングを行う(S37)。仮想マシン120は、待ち行列を参照してプロセス情報を生成し、共有領域内の仮想マシン120に対応付けられた領域にプロセス情報を書き込む(S38)。仮想マシンモニタ140は、共有領域内の仮想マシン120に対応付けた領域からプロセス情報が検出されると、プロセス情報を当該領域からRAM104の他の領域に移して当該領域を空にする。仮想マシンモニタ140は、仮想マシン120のプロセス情報に基づいて、仮想マシン120,130にリソースを割り当てる(S39)。
なお、仮想マシンモニタ140が共有領域をポーリングする周期は、仮想マシン120,130それぞれがスケジューリングを行う頻度に比べて十分に短いものとする。この場合、仮想マシンモニタ140は1回のポーリングでは高々1つの仮想マシンからのプロセス情報を検出するという仮定をおくことができ、1回のポーリングで2以上の仮想マシンからのプロセス情報を検出することは想定しなくてもよい。
図7は、プロセス情報の通知方法の例を示す図である。
上記の通り、仮想マシンモニタ140は、RAM104に共有領域150を確保する。共有領域150は、例えば、仮想マシンモニタ140が起動して仮想化が開始されるときに確保される。共有領域150は、仮想マシン120に対応する領域151と、仮想マシン130に対応する領域152とを含む。仮想マシンモニタ140は、仮想マシン120に領域151のアドレスを通知する。領域151のアドレスは、例えば、仮想マシン120が起動したときに仮想マシン120に通知される。また、仮想マシンモニタ140は、仮想マシン130に領域152のアドレスを通知する。領域152のアドレスは、例えば、仮想マシン130が起動したときに仮想マシン130に通知される。
仮想マシン120は、プロセスのスケジューリングを行う毎にプロセス情報153を生成し、仮想マシンモニタ140から指定された領域151にプロセス情報153を書き込む。プロセス情報153は、例えば、実行待ちのプロセス数と推定最大待ち時間を含む。同様に、仮想マシン130は、プロセスのスケジューリングを行う毎にプロセス情報を生成し、仮想マシンモニタ140から指定された領域152にプロセス情報を書き込む。仮想マシンモニタ140は、領域151,152を所定周期でポーリングする。
領域151からプロセス情報153が読み出されると、仮想マシンモニタ140は、プロセス情報153を生成した仮想マシンが、領域151に対応付けられた仮想マシン120であると判断する。そして、仮想マシンモニタ140は、仮想マシン120の識別情報とプロセス情報153とを対応付けて、共有領域150とは異なるRAM104の領域に保存し、仮想マシン120,130に割り当てるリソースを再計算する。なお、プロセス情報153は、第1の実施の形態のプロセス情報16の一例である。
同様に、領域152からプロセス情報が読み出されると、仮想マシンモニタ140は、そのプロセス情報を生成した仮想マシンが、領域152に対応付けられた仮想マシン130であると判断する。そして、仮想マシンモニタ140は、仮想マシン130の識別情報と読み出したプロセス情報とを対応付けて、共有領域150とは異なるRAM104の領域に保存し、仮想マシン120,130に割り当てるリソースを再計算する。
次に、情報処理装置100が有する動的なリソース割り当ての機能について説明する。
図8は、情報処理装置の第1の機能例を示すブロック図である。
仮想マシン120は、上記の通り、オペレーティングシステム122を有する。オペレーティングシステム122は、待ち行列記憶部123、パラメータ記憶部124およびスケジューラ125を有する。待ち行列記憶部123およびパラメータ記憶部124は、例えば、RAM104に確保された記憶領域として実現することができる。スケジューラ125は、例えば、コア101aなどのコアが実行するプログラムモジュールとして実現することができる。仮想マシン130のオペレーティングシステム132も、オペレーティングシステム122と同様のモジュール構成によって実現できる。
待ち行列記憶部123は、オペレーティングシステム122上で起動されたプロセスのうち実行待ちのプロセスを示す情報(例えば、プロセスID)を記憶する。実行待ちのプロセスは、例えば、実行の優先順位が高い順に並べられている。「優先順位」の意味は、スケジューリングアルゴリズムに依存する。例えば、FIFO方式の場合、先に起動されたプロセスほど優先順位が高く、待ち行列の前方に格納されることになる。
パラメータ記憶部124は、最大待ち時間の推定に用いるパラメータの値を記憶する。後述するように、パラメータには、各プロセスが待ち行列の中を1つ進む(優先順位が1つ繰り上がる)のに要する時間の平均が含まれる。パラメータの値は、ユーザによって定義され、または、予めユーザによって測定されて、パラメータ記憶部124に記憶されていてもよい。また、パラメータの値は、スケジューラ125がプロセスの実行状況を監視することで、動的・継続的に算出して更新するようにしてもよい。
スケジューラ125は、オペレーティングシステム122上で起動されたプロセスのスケジューリングを行い、待ち行列記憶部123に記憶された待ち行列の情報を更新する。例えば、スケジューラ125は、実行中のプロセスが中断または終了すると、待ち行列の先頭から優先順位が最も高いプロセスを抽出する。また、実行していたプロセスが終了せずに中断した場合、スケジューラ125は、中断したプロセスを待ち行列の末尾に戻す。そして、スケジューラ125は、コア101aなどのコアにコンテキストスイッチを発生させ、待ち行列から抽出したプロセスの実行を開始させる。
また、スケジューラ125は、スケジューリングが行われる毎にプロセス情報153を生成する。このとき、スケジューラ125は、待ち行列記憶部123に記憶された更新後の待ち行列の情報を参照して、実行待ちのプロセス数をカウントする。また、スケジューラ125は、更新後の待ち行列の情報と、パラメータ記憶部124に記憶されたパラメータの値を参照して、待ち行列の末尾のプロセスが開始されるまでの待ち時間(推定最大待ち時間)を推定する。そして、スケジューラ125は、プロセス数と推定最大待ち時間とを含むプロセス情報153を生成し、共有領域150の中の仮想マシンモニタ140から予め指定された領域151にプロセス情報153を書き込む。ただし、プロセス情報153は、プロセス数と推定最大待ち時間の何れか一方のみ含んでいてもよい。
仮想マシンモニタ140は、収集情報記憶部141およびリソース割り当て部142を有する。収集情報記憶部141は、例えば、RAM104に確保された記憶領域として実現することができる。リソース割り当て部142は、例えば、コア102aが実行するプログラムモジュールとして実現することができる。
収集情報記憶部141は、複数の仮想マシンそれぞれから取得されたプロセス情報を記憶する。収集情報記憶部141には、仮想マシン毎に最新のプロセス情報(当該仮想マシンから最後に取得されたプロセス情報)が記憶されていればよい。
リソース割り当て部142は、共有領域150を周期的にポーリングする。リソース割り当て部142は、1回のポーリングで、共有領域150に含まれる全ての仮想マシン分の領域にアクセスしてデータを読み出す。リソース割り当て部142は、何れかの領域のデータからプロセス情報が検出されると、その領域に基づいてプロセス情報を生成した仮想マシンを判定する。そして、リソース割り当て部142は、読み出したプロセス情報を、判定した仮想マシンの識別情報と対応付けて収集情報記憶部141に格納する。
リソース割り当て部142は、1つの仮想マシンのプロセス情報が更新される毎に、収集情報記憶部141に記憶された全ての仮想マシンのプロセス情報を参照して、各仮想マシンに割り当てるリソースを決定する。例えば、リソース割り当て部142は、各仮想マシンのプロセス数および推定最大待ち時間の少なくとも一方に基づいて、仮想マシン120の相対的な負荷の大きさを判定する。リソース割り当て部142は、相対的な負荷の大きさに基づいて、仮想マシン120に割り当てるリソースの量を決定する。割り当てリソース量が増加する場合、リソース割り当て部142は、仮想マシン120に追加のリソースを割り当てる。割り当てリソース量が減少する場合、リソース割り当て部142は、仮想マシン120に割り当てていたリソースの一部を解放する。
共有領域150は、仮想マシンモニタ140によって確保されたRAM104の記憶領域である。共有領域150は、複数の仮想マシンに対応する複数の領域を含む。仮想マシンモニタ140は、領域のアドレスと仮想マシンとの対応関係の情報を保持しておく。共有領域150は、仮想マシンモニタ140によって管理され、仮想マシンモニタ140からアクセスできる。ただし、共有領域150は、仮想マシン120,130からもアクセスすることができる。仮想マシン120,130がアクセスできる領域のアドレスは、仮想マシンモニタ140から仮想マシン120,130に通知される。
図9は、時間推定テーブルの例を示す図である。
時間推定テーブル126は、パラメータ記憶部124に記憶されている。時間推定テーブル126は、プロセスIDおよび平均時間の項目を有する。プロセスIDは、プロセスに付与された識別情報である。同じプログラムから起動されるプロセスには、起動タイミングに依存せずに同じプロセスIDが付与される。よって、あるプロセスと、過去に起動された同様の振る舞いをするプロセスとの間の実質的な同一性を、プロセスIDから判断することができる。平均時間の項目には、プロセスIDの異なるプロセス毎に、当該プロセスが待ち行列を1段階進むのに要する時間の平均値が登録される。
プロセス情報153に含まれる推定最大待ち時間は、待ち行列の長さ(実行待ちのプロセス数)と、待ち行列の末尾のプロセスに対応する平均時間とから算出できる。例えば、スケジューラ125は、待ち行列の長さと待ち行列の末尾のプロセスに対応する平均時間との積を、推定最大待ち時間として算出する。一例として、仮想マシン120の待ち行列の長さが「3」であり、待ち行列の末尾のプロセスのプロセスIDが「P02」であるとする。すると、図9の例の場合、推定最大待ち時間はT2×3マイクロ秒になる。
図10は、プロセス情報テーブルの例を示す図である。
プロセス情報テーブル143は、収集情報記憶部141に記憶されている。プロセス情報テーブル143は、仮想マシンID、プロセス数および推定最大待ち時間の項目を有する。仮想マシンIDは、仮想マシン120,130を含む複数の仮想マシンそれぞれに付与された識別情報である。ある仮想マシンの仮想マシンIDは、例えば、その仮想マシンが最初に生成されたときに決定される。プロセス数の項目には、各仮想マシンの実行待ちのプロセスの数が登録される。推定最大待ち時間の項目には、各仮想マシンについて待ち行列の末尾にあるプロセスが開始されるまでの待ち時間の推定値が登録される。
プロセス情報テーブル143には、情報処理装置100で起動される仮想マシン120,130それぞれについて、仮想マシンIDとプロセス数と推定最大待ち時間が登録される。例えば、仮想マシン120の仮想マシンIDが「VM00」、仮想マシン120の待ち行列の長さが「C0」、その待ち行列の末尾にあるプロセスのプロセスIDが「P02」であるとする。すると、仮想マシン120について、「VM00」と「C0」と「T2×C0」とが対応付けられて、プロセス情報テーブル143に登録される。
また、仮想マシン130の仮想マシンIDが「VM01」、仮想マシン130の待ち行列の長さが「C1」、その待ち行列の末尾にあるプロセスのプロセスIDが「P01」であるとする。すると、仮想マシン130について、「VM01」と「C1」と「T1×C1」とが対応付けられて、プロセス情報テーブル143に登録される。なお、プロセス数と推定最大待ち時間については、何れか一方のみ登録されていてもよい。
次に、情報処理装置100が実行する処理の手順について説明する。
図11は、スケジューラの手順例を示すフローチャートである。
ここでは、仮想マシン120のスケジューラ125の処理手順を説明する。他の仮想マシンのスケジューラも、スケジューラ125と同様の処理を行う。
(S40)スケジューラ125は、仮想マシンモニタ140から共有領域150の通知を受け付ける。共有領域150の通知には、共有領域150に含まれる複数の領域のうち、仮想マシン120に対応付けられた領域151のアドレスが含まれる。
(S41)スケジューラ125は、オペレーティングシステム122を終了させる終了イベントが発生したか判断する。終了イベントとしては、例えば、ユーザがオペレーティングシステム122に対してシャットダウン命令を入力したことなどが挙げられる。終了イベントが発生した場合はスケジューラ125の処理が終了し、終了イベントが発生していない場合はステップS42に処理が進む。
(S42)スケジューラ125は、実行中のプロセスが終了したか判断する。また、スケジューラ125は、実行中のプロセスがプリエンプションによって中断したか判断する。プロセスの中断または終了が発生した場合はステップS43に処理が進み、中断や終了が発生していない場合はステップS41に処理が進む。
(S43)スケジューラ125は、実行されていたプロセスが中断した場合には、中断したプロセスを待ち行列の末尾に追加する。そして、スケジューラ125は、待ち行列に含まれる実行待ちのプロセスをスケジューリングする。例えば、スケジューラ125は、待ち行列の先頭からプロセスを1つ抽出し、次に実行するプロセスに決定する。スケジューラ125は、待ち行列記憶部123に記憶された待ち行列の情報を更新する。
(S44)スケジューラ125は、待ち行列記憶部123に記憶された待ち行列の情報を参照して、待ち行列の長さ、すなわち、実行待ちのプロセス数を算出する。
(S45)スケジューラ125は、待ち行列記憶部123に記憶された待ち行列の情報と、パラメータ記憶部124に記憶された時間推定テーブル126とを参照して、推定最大待ち時間を算出する。例えば、スケジューラ125は、時間推定テーブル126から待ち行列の末尾のプロセスに対応する平均時間を検索し、検索された平均時間とステップS44のプロセス数との積を推定最大待ち時間として算出する。
(S46)スケジューラ125は、ステップS44で算出したプロセス数とステップS45で算出した推定最大待ち時間とを含むプロセス情報153を生成する。そして、スケジューラ125は、ステップS40で仮想マシンモニタ140から通知された共有領域150内の領域151に、生成したプロセス情報153を書き込む。
(S47)スケジューラ125は、ステップS43で決定したプロセスを開始させる。すなわち、スケジューラ125は、コア101aなどのコアにコンテキストスイッチを発生させ、抽出したプロセスを実行させる。そして、ステップS41に処理が進む。
図12は、リソース割り当て部の手順例を示すフローチャートである。
(S50)リソース割り当て部142は、RAM104に共有領域150を確保する。また、リソース割り当て部142は、情報処理装置100で起動される仮想マシン120,130に対して、共有領域150の中の領域151,152を対応付ける。
(S51)リソース割り当て部142は、仮想マシン120が起動すると、仮想マシン120に対して共有領域150の通知を発信する。仮想マシン120への通知には領域151のアドレスが含まれる。また、リソース割り当て部142は、仮想マシン130が起動すると、仮想マシン130に対して共有領域150の通知を発信する。仮想マシン130への通知には領域152のアドレスが含まれる。
(S52)リソース割り当て部142は、仮想マシンモニタ140を終了させる終了イベントが発生したか判断する。終了イベントとしては、例えば、管理者が情報処理装置100の電源をOFFにする停止命令を入力したことや、管理者が仮想マシンモニタ140に対して仮想環境を終了させるためにシャットダウン命令を入力したことなどが挙げられる。終了イベントが発生した場合はリソース割り当て部142の処理が終了し、終了イベントが発生していない場合はステップS53に処理が進む。
(S53)リソース割り当て部142は、所定時間待つ。所定時間は、ポーリングの周期を意味し、例えば、予め1ナノ秒〜10ナノ秒程度に設定されている。
(S54)リソース割り当て部142は、共有領域150をポーリングする。ポーリングでは、リソース割り当て部142は、仮想マシン120に対応する領域151および仮想マシン130に対応する領域152を含む複数の領域を順にアクセスする。
(S55)リソース割り当て部142は、共有領域150内の何れかの領域においてプロセス情報が検出されたか判断する。プロセス情報が検出された場合はステップS56に処理が進み、プロセス情報が検出されなかった場合はステップS52に処理が進む。
(S56)リソース割り当て部142は、プロセス情報を検出した領域から、当該プロセス情報を書き込んだ仮想マシンを特定する。例えば、リソース割り当て部142は、領域151でプロセス情報を検出した場合、当該プロセス情報は仮想マシン120のものと判断する。また、リソース割り当て部142は、領域152でプロセス情報を検出した場合、当該プロセス情報は仮想マシン130のものと判断する。
(S57)リソース割り当て部142は、ステップS55で検出したプロセス情報に基づいて、収集情報記憶部141に記憶されたプロセス情報テーブル143を更新する。すなわち、リソース割り当て部142は、ステップS56で特定した仮想マシンの仮想マシンIDと対応付けて、検出したプロセス情報に含まれるプロセス数および推定最大待ち時間をプロセス情報テーブル143に登録する。プロセス数と推定最大待ち時間は、仮想マシン毎に最新のものを保持すればよいため上書き保存される。
(S58)リソース割り当て部142は、プロセス情報テーブル143に登録された仮想マシン120,130のプロセス数および推定最大待ち時間に基づいて、仮想マシン120,130へのリソース配分を決定する。ただし、リソース割り当て部142は、プロセス数と推定最大待ち時間の一方のみを参照するようにしてもよい。例えば、リソース割り当て部142は、プロセス数や推定最大待ち時間から、仮想マシン120,130それぞれの相対的な負荷の大きさを判定する。リソース割り当て部142は、相対的に負荷が大きい仮想マシンには、CPUリソースとして多くのコアを割り当てるようにする。
(S59)リソース割り当て部142は、ステップS58で決定したリソース配分に従って、仮想マシン120,130にリソースを割り当てる。割り当てるリソースには、CPUリソースが含まれる。また、割り当てるリソースに、RAMリソースなどの他のリソースが含まれてもよい。そして、ステップS52に処理が進む。
第2の実施の形態の情報処理装置100によれば、仮想マシン120のオペレーティングシステム122でスケジューリングが行われる毎に、実行待ちのプロセス数や推定最大待ち時間などを示すプロセス情報が、仮想マシン120によって共有領域150に書き込まれる。また、仮想マシン130のオペレーティングシステム132でスケジューリングが行われる毎に、実行待ちのプロセス数や推定最大待ち時間などを示すプロセス情報が、仮想マシン130によって共有領域150に書き込まれる。一方、共有領域150は仮想マシンモニタ140によってポーリングされており、共有領域150からプロセス情報が検出されると、仮想マシン120,130のリソース割り当てが変更される。
これにより、「割り込み」を用いて仮想マシン120,130と仮想マシンモニタ140とが通信する場合と比べて、割り込みハンドラのオーバヘッドを削減できる。また、仮想マシン120,130から仮想マシンモニタ140に対してプロセス情報がプッシュされるため、仮想マシンモニタ140からプロセス情報を要求する場合と比べて、要求に相当する往路の通信を削減できる。よって、仮想マシン120,130と仮想マシンモニタ140との間の通信が効率化され、仮想マシン120,130の負荷の変化に応じて迅速に仮想マシン120,130のリソース割り当てを変更することが可能となる。
また、第2の実施の形態では、プロセス情報はスケジューリング毎に共有領域150に書き込まれ、共有領域150はスケジューリングの間隔と比べて十分に短い周期でポーリングされる。よって、仮想マシン120,130の負荷が変化してからリソース割り当てが変更されるまでの遅延を十分に短縮することができる。
[第3の実施の形態]
次に、第3の実施の形態を説明する。第2の実施の形態との違いを中心に説明し、第2の実施の形態と同様の事項については説明を省略することがある。第2の実施の形態では、オペレーティングシステム122の中のスケジューラ125の機能を拡張することで、スケジューリング毎に共有領域150にプロセス情報153が書き込まれるようにした。これに対し、第3の実施の形態では、オペレーティングシステム自体を改変せずに、スケジューリング毎に共有領域150にプロセス情報153が書き込まれるようにする。
図13は、情報処理装置の第2の機能例を示すブロック図である。
第3の実施の形態の情報処理装置100aは、仮想マシンモニタ140、共有領域150、および、仮想マシン160を含む複数の仮想マシンを有する。仮想マシン160は、オペレーティングシステム161および拡張スケジューリング部162を有する。他の仮想マシンも、仮想マシン160と同様のモジュール構成によって実現できる。
オペレーティングシステム161は、プロセス情報153を出力する機能をもたない通常のオペレーティングシステムである。拡張スケジューリング部162は、オペレーティングシステム161に外付けされるソフトウェアモジュールである。拡張スケジューリング部162は、オペレーティングシステム161からは1つの大きなプロセスに見える。拡張スケジューリング部162上では、アプリケーションプログラムからスレッドが起動される。拡張スケジューリング部162は、これらのスレッドをスケジューリングする。
すなわち、第2の実施の形態のプロセス121a,121b,121cは、拡張スケジューリング部162によってスケジューリングされるスレッドに対応する。オペレーティングシステム161内のスケジューラが拡張スケジューリング部162の実行を制御し、拡張スケジューリング部162が実際にアプリケーションプログラムの実行を制御する。これにより、オペレーティングシステム161内のスケジューラを改変せずに、オペレーティングシステム161とは異なるスケジューリング機能を実装することができる。
拡張スケジューリング部162は、待ち行列記憶部163、パラメータ記憶部164およびスケジューラ165を有する。待ち行列記憶部163とパラメータ記憶部164は、第2の実施の形態の待ち行列記憶部123とパラメータ記憶部124に相当する。
スケジューラ165は、オペレーティングシステム161上でアプリケーションプログラムからプロセスが起動される代わりに、拡張スケジューリング部162上でアプリケーションプログラムからスレッドを起動する。スケジューラ165は、それらスレッドのスケジューリングを行い、待ち行列記憶部163に記憶された待ち行列の情報を更新する。例えば、スケジューラ165は、コア101aなどのコアがもつレジスタに格納される命令アドレスを書き換えることで、擬似的にコンテキストスイッチを発生させる。
また、スケジューラ165は、スレッドのスケジューリングが行われる毎にプロセス情報153を生成する。このとき、スケジューラ165は、待ち行列記憶部163に記憶された更新後の待ち行列の情報を参照して、実行待ちのプロセス数をカウントする。また、スケジューラ165は、更新後の待ち行列の情報と、パラメータ記憶部164に記憶されたパラメータの値を参照して、待ち行列の末尾のスレッドが開始されるまでの待ち時間(推定最大待ち時間)を推定する。そして、スケジューラ165は、プロセス数と推定最大待ち時間とを含むプロセス情報153を生成し、共有領域150の中の仮想マシンモニタ140から予め指定された領域151にプロセス情報153を書き込む。
第3の実施の形態の情報処理装置100aによれば、第2の実施の形態と同様の効果が得られる。更に、第3の実施の形態では、オペレーティングシステム161内のスケジューラを改変しなくても、スケジューリング毎にプロセス情報153が共有領域150に書き込まれるようにすることができる。よって、実装の負担が軽減される。
[第4の実施の形態]
次に、第4の実施の形態を説明する。第2の実施の形態との違いを中心に説明し、第2の実施の形態と同様の事項については説明を省略することがある。第4の実施の形態では、第3の実施の形態と同様に、オペレーティングシステム自体を改変せずに、スケジューリング毎に共有領域150にプロセス情報153が書き込まれるようにする。
図14は、情報処理装置の第3の機能例を示すブロック図である。
第4の実施の形態の情報処理装置100bは、仮想マシンモニタ140、共有領域150、および、仮想マシン170を含む複数の仮想マシンを有する。仮想マシン170は、オペレーティングシステム171およびデバイスドライバ174を有する。他の仮想マシンも、仮想マシン170と同様のモジュール構成によって実現できる。
オペレーティングシステム171は、プロセス情報153を出力する機能をもたない通常のオペレーティングシステムである。オペレーティングシステム171は、待ち行列記憶部172およびスケジューラ173を有する。待ち行列記憶部172は、第2の実施の形態の待ち行列記憶部123に相当する。スケジューラ173は、オペレーティングシステム171上で起動されたプロセスのスケジューリングを行い、待ち行列記憶部172に記憶された待ち行列の情報を更新する。スケジューラ173は、コア101aなどのコアにコンテキストスイッチを発生させ、実行されるプロセスを切り替える。
デバイスドライバ174は、CPU101,102にアクセスすることができる。デバイスドライバ174は、CPU101,102用のドライバプログラムに基づいて、オペレーティングシステム171上で起動される。デバイスドライバ174は、パラメータ記憶部175およびプロセス監視部176を有する。パラメータ記憶部175は、第2の実施の形態のパラメータ記憶部124に相当する。プロセス監視部176は、例えば、コア101aなどのコアが実行するプログラムモジュールとして実装できる。
プロセス監視部176は、継続的に、仮想マシン170に割り当てられたコアから所定のレジスタの値を読み出す。読み出す値は、そのコアで発生したコンテキストスイッチの回数を示すものであり、PMC(Performance Monitoring Counter)と言うことがある。PMCの値は、データ処理に用いる汎用レジスタとは異なる特殊レジスタに格納されている。コアは、コンテキストスイッチが発生する毎にPMCをカウントアップする。
プロセス監視部176は、コアから読み出したPMCの値が変化したか判断する。PMCの値が変化したことは、当該コアでコンテキストスイッチが発生したことを示すため、スケジューラ173でプロセスのスケジューリングが行われたことを意味する。よって、プロセス監視部176は、PMCの値が変化する毎に、プロセス情報153を生成して共有領域150に書き込む。これにより、スケジューラ173を改変しなくても、スケジューリング毎にプロセス情報153を共有領域150に書き込むことができる。
PMCの値が変化すると、プロセス監視部176は、オペレーティングシステム171から、待ち行列記憶部172に記憶された待ち行列の情報を取得する。プロセス監視部176は、取得した待ち行列の情報に基づいて、実行待ちのプロセス数をカウントする。また、プロセス監視部176は、取得した待ち行列の情報とパラメータ記憶部175に記憶されたパラメータの値とに基づいて、推定最大待ち時間を算出する。そして、プロセス監視部176は、プロセス数と推定最大待ち時間とを含むプロセス情報153を生成する。
図15は、プロセス監視部の手順例を示すフローチャートである。
(S60)プロセス監視部176は、仮想マシンモニタ140から共有領域150の通知を受け付ける。共有領域150の通知には、共有領域150に含まれる複数の領域のうち、仮想マシン170に対応付けられた領域151のアドレスが含まれる。
(S61)プロセス監視部176は、デバイスドライバ174を終了させる終了イベントが発生したか判断する。終了イベントとしては、例えば、ユーザがオペレーティングシステム171に対してシャットダウン命令を入力したことなどが挙げられる。終了イベントが発生した場合はプロセス監視部176の処理が終了し、終了イベントが発生していない場合はステップS62に処理が進む。
(S62)プロセス監視部176は、仮想マシン170に割り当てられたコアから、コンテキストスイッチの発生回数をカウントするカウンタの値を読み出す。
(S63)プロセス監視部176は、ステップS62で読み出したカウンタの値が、前回読み出したときから変化したか判断する。カウンタの値が変化した場合はステップS64に処理が進み、変化していない場合はステップS61に処理が進む。
(S64)プロセス監視部176は、オペレーティングシステム171から、待ち行列記憶部172に記憶されている待ち行列の情報を取得する。
(S65)プロセス監視部176は、ステップS64で取得した待ち行列の情報に基づいて、待ち行列の長さ、すなわち、実行待ちのプロセス数を算出する。
(S66)プロセス監視部176は、ステップS64で取得した待ち行列の情報と、パラメータ記憶部175に記憶された時間推定テーブル126とに基づいて、推定最大待ち時間を算出する。例えば、プロセス監視部176は、時間推定テーブル126から待ち行列の末尾のプロセスに対応する平均時間を検索し、検索された平均時間とステップS65のプロセス数との積を推定最大待ち時間として算出する。
(S67)プロセス監視部176は、ステップS65で算出したプロセス数とステップS66で算出した推定最大待ち時間とを含むプロセス情報153を生成する。そして、プロセス監視部176は、ステップS60で仮想マシンモニタ140から通知された共有領域150内の領域151に、生成したプロセス情報153を書き込む。その後、プロセス監視部176の処理がステップS61に進む。
第4の実施の形態の情報処理装置100bによれば、第2の実施の形態と同様の効果が得られる。更に、第4の実施の形態では、オペレーティングシステム171のスケジューラ173を改変しなくても、スケジューリング毎にプロセス情報153が共有領域150に書き込まれるようにすることができる。また、第3の実施の形態のスケジューラ165のようなスケジューリング機能を独自に実装しなくてもよく、オペレーティングシステム171がもつスケジューラ173を利用できる。よって、実装の負担が軽減される。
なお、前述のように、第1の実施の形態の情報処理は、情報処理装置10にプログラムを実行させることで実現できる。第2の実施の形態の情報処理は、情報処理装置100にプログラムを実行させることで実現できる。第3の実施の形態の情報処理は、情報処理装置100aにプログラムを実行させることで実現できる。第4の実施の形態の情報処理は、情報処理装置100bにプログラムを実行させることで実現できる。
プログラムは、コンピュータ読み取り可能な記録媒体(例えば、記録媒体113)に記録しておくことができる。記録媒体としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、FDおよびHDDが含まれる。光ディスクには、CD、CD−R(Recordable)/RW(Rewritable)、DVDおよびDVD−R/RWが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体からHDDなどの他の記録媒体(例えば、HDD105)にプログラムをコピーしてから実行してもよい。
10 情報処理装置
11 記憶部
11a 記憶領域
12,13 演算部
14 仮想マシン
15 管理ソフトウェア
16 プロセス情報

Claims (7)

  1. コンピュータに、
    前記コンピュータで動作する仮想マシン上の実行待ち中であるプロセスを検出し、
    前記検出されたプロセスに応じたプロセス情報を、前記コンピュータが有する記憶部の中の、前記仮想マシンを管理する管理ソフトウェアから参照可能な記憶領域に書き込む、
    処理を実行させる実行情報通知プログラム。
  2. 前記プロセス情報は、前記検出されたプロセスの数、および、前記検出されたプロセスが実行されるまでの待ち時間の推定値の少なくとも一方を含む、
    請求項1記載の実行情報通知プログラム。
  3. 前記プロセス情報の書き込みは、前記仮想マシン上で実行されるオペレーティングシステムでプロセスのスケジューリングが行われたときに実行される、
    請求項1または2記載の実行情報通知プログラム。
  4. 前記コンピュータが有するプロセッサ内のカウンタを監視する処理を更に実行させ、
    前記プロセス情報の書き込みは、前記カウンタの値の変化に応じて実行される、
    請求項1または2記載の実行情報通知プログラム。
  5. 前記記憶領域は、前記管理ソフトウェアによって前記記憶部に確保され、前記管理ソフトウェアから前記仮想マシンに対して指定される、
    請求項1乃至4の何れか一項に記載の実行情報通知プログラム。
  6. 記憶部と、仮想マシンを動作させる演算部とを有し、
    前記演算部は、前記仮想マシン上の実行待ち中であるプロセスを検出し、前記検出されたプロセスに応じたプロセス情報を、前記記憶部の中の前記仮想マシンを管理する管理ソフトウェアから参照可能な記憶領域に書き込む、
    情報処理装置。
  7. 記憶部と、
    仮想マシンを動作させる第1の演算部と、
    前記仮想マシンを管理する管理ソフトウェアを実行する第2の演算部とを有し、
    前記第1の演算部は、前記仮想マシン上の実行待ち中であるプロセスを検出し、前記検出されたプロセスに応じたプロセス情報を、前記記憶部の中の前記管理ソフトウェアから参照可能な記憶領域に書き込み、
    前記第2の演算部は、前記記憶領域を監視し、前記記憶領域から前記プロセス情報が検出された場合、前記プロセス情報に基づいて前記仮想マシンにリソースを割り当てる、
    情報処理システム。
JP2015028415A 2015-02-17 2015-02-17 実行情報通知プログラム、情報処理装置および情報処理システム Active JP6447217B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015028415A JP6447217B2 (ja) 2015-02-17 2015-02-17 実行情報通知プログラム、情報処理装置および情報処理システム
US14/974,932 US9852008B2 (en) 2015-02-17 2015-12-18 Computer-readable recording medium storing execution information notification program, information processing apparatus, and information processing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015028415A JP6447217B2 (ja) 2015-02-17 2015-02-17 実行情報通知プログラム、情報処理装置および情報処理システム

Publications (2)

Publication Number Publication Date
JP2016151852A true JP2016151852A (ja) 2016-08-22
JP6447217B2 JP6447217B2 (ja) 2019-01-09

Family

ID=56621283

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015028415A Active JP6447217B2 (ja) 2015-02-17 2015-02-17 実行情報通知プログラム、情報処理装置および情報処理システム

Country Status (2)

Country Link
US (1) US9852008B2 (ja)
JP (1) JP6447217B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200034572A (ko) * 2018-09-21 2020-03-31 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 요청 처리 방법 및 장치

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10581687B2 (en) 2013-09-26 2020-03-03 Appformix Inc. Real-time cloud-infrastructure policy implementation and management
US10291472B2 (en) 2015-07-29 2019-05-14 AppFormix, Inc. Assessment of operational states of a computing environment
US10623481B2 (en) * 2015-04-27 2020-04-14 Microsoft Technology Licensing, Llc Balancing resources in distributed computing environments
JP6705266B2 (ja) * 2016-04-07 2020-06-03 オムロン株式会社 制御装置、制御方法およびプログラム
US10235211B2 (en) * 2016-04-22 2019-03-19 Cavium, Llc Method and apparatus for dynamic virtual system on chip
US11068314B2 (en) * 2017-03-29 2021-07-20 Juniper Networks, Inc. Micro-level monitoring, visibility and control of shared resources internal to a processor of a host machine for a virtual environment
US10868742B2 (en) 2017-03-29 2020-12-15 Juniper Networks, Inc. Multi-cluster dashboard for distributed virtualization infrastructure element monitoring and policy control
US11323327B1 (en) 2017-04-19 2022-05-03 Juniper Networks, Inc. Virtualization infrastructure element monitoring and policy control in a cloud environment using profiles
CN111124687B (zh) * 2019-12-30 2022-04-22 浪潮电子信息产业股份有限公司 一种cpu资源预留方法、装置及其相关设备
WO2021234623A1 (en) * 2020-05-22 2021-11-25 Cron Systems Pvt. Ltd. System and method for transposition of a detected object and its tracking to a different device
JP2022133993A (ja) * 2021-03-02 2022-09-14 株式会社日立製作所 ストレージシステム、リソース制御方法、及びリソース制御プログラム
JP2023021662A (ja) * 2021-08-02 2023-02-14 富士通株式会社 プログラムおよび管理方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10333927A (ja) * 1997-05-29 1998-12-18 Nec Software Ltd プロセスのディスパッチ装置
JP2002202959A (ja) * 2000-12-28 2002-07-19 Hitachi Ltd 動的な資源分配をする仮想計算機システム
JP2004522234A (ja) * 2000-11-24 2004-07-22 キャサロン プロダクションズ, インコーポレイテッド 仮想スレッドを介したコンピューター多重タスク
JP2004213625A (ja) * 2002-12-31 2004-07-29 Internatl Business Mach Corp <Ibm> プログラムに基づいた応答時間ベースの作業負荷分配技法
JP2010134557A (ja) * 2008-12-02 2010-06-17 Nec Corp 仮想マシン運用管理システム、その運用管理方法、及びプログラム
JPWO2011148563A1 (ja) * 2010-05-24 2013-07-25 パナソニック株式会社 情報処理システム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008132924A1 (ja) 2007-04-13 2008-11-06 Nec Corporation 仮想計算機システムおよびその最適化方法
US7996346B2 (en) 2007-12-19 2011-08-09 International Business Machines Corporation Method for autonomic workload distribution on a multicore processor
US8429276B1 (en) * 2010-10-25 2013-04-23 Juniper Networks, Inc. Dynamic resource allocation in virtual environments
US8793686B2 (en) 2011-06-08 2014-07-29 Microsoft Corporation Operating system decoupled heterogeneous computing

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10333927A (ja) * 1997-05-29 1998-12-18 Nec Software Ltd プロセスのディスパッチ装置
JP2004522234A (ja) * 2000-11-24 2004-07-22 キャサロン プロダクションズ, インコーポレイテッド 仮想スレッドを介したコンピューター多重タスク
JP2002202959A (ja) * 2000-12-28 2002-07-19 Hitachi Ltd 動的な資源分配をする仮想計算機システム
JP2004213625A (ja) * 2002-12-31 2004-07-29 Internatl Business Mach Corp <Ibm> プログラムに基づいた応答時間ベースの作業負荷分配技法
JP2010134557A (ja) * 2008-12-02 2010-06-17 Nec Corp 仮想マシン運用管理システム、その運用管理方法、及びプログラム
JPWO2011148563A1 (ja) * 2010-05-24 2013-07-25 パナソニック株式会社 情報処理システム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
後藤 弘茂,外3名: ""CPU/サーバ/ディレクトリ−注目は「ハイパーバイザー」そして「Xen」 仮想化ソフトウェア「レイ", COMPUTERWORLD GET TECHNOLOGY RIGHT, vol. 第3巻,第5号, JPN6018029751, 1 May 2006 (2006-05-01), pages 72 - 81, ISSN: 0003849936 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200034572A (ko) * 2018-09-21 2020-03-31 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 요청 처리 방법 및 장치
KR102214981B1 (ko) * 2018-09-21 2021-02-09 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 요청 처리 방법 및 장치
US11210127B2 (en) 2018-09-21 2021-12-28 Beijing Baidu Netcom Science And Technology Co., Ltd. Method and apparatus for processing request

Also Published As

Publication number Publication date
US9852008B2 (en) 2017-12-26
US20160239331A1 (en) 2016-08-18
JP6447217B2 (ja) 2019-01-09

Similar Documents

Publication Publication Date Title
JP6447217B2 (ja) 実行情報通知プログラム、情報処理装置および情報処理システム
US11088961B2 (en) Monitoring data streams and scaling computing resources based on the data streams
AU2014309371B2 (en) Virtual hadoop manager
JP6241300B2 (ja) ジョブスケジューリング装置、ジョブスケジューリング方法、およびジョブスケジューリングプログラム
JP6186787B2 (ja) データ転送装置、データ転送システム、データ転送方法及びプログラム
US8484495B2 (en) Power management in a multi-processor computer system
US8943252B2 (en) Latency sensitive software interrupt and thread scheduling
JP5005028B2 (ja) 受信したリクエストに応じて動作するサーバ装置
JP2021190074A (ja) リソーススケジューリング方法、装置、設備、記憶媒体、及びプログラム
US10979505B1 (en) Distributed storage system and data migration method
JPWO2008062864A1 (ja) 仮想マシン配置システム、仮想マシン配置方法、プログラム、仮想マシン管理装置およびサーバ装置
JP2012525641A (ja) アプリケーション効率エンジン
JP7039631B2 (ja) アクセスリクエストを管理するための方法、装置、デバイス、および記憶媒体
JPWO2012066640A1 (ja) 計算機システム、マイグレーション方法及び管理サーバ
JP2015504541A (ja) マルチプロセッサ・コンピューティング・システムにおけるメモリ・アクセスを動的に最適化する方法、プログラム、及びコンピューティング・システム
JP6160236B2 (ja) 情報処理装置、情報処理システム、情報処理装置の制御方法及び情報処理装置の制御プログラム
JP2011186701A (ja) リソース割当装置、リソース割当方法、およびリソース割当プログラム
JP2015036873A (ja) キャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法
BR112015030433B1 (pt) Processo executado por um computador que inclui uma pluralidade de processadores, artigo de fabricação e computador
Gifford et al. Dna: Dynamic resource allocation for soft real-time multicore systems
US10754547B2 (en) Apparatus for managing disaggregated memory and method thereof
JP5136658B2 (ja) 仮想計算機の割当方法及び割当プログラム並びに仮想計算機環境を有する情報処理装置
US20210149726A1 (en) Scheduling device, scheduling system, scheduling method, and non-transitory computer-readable medium
JP5597293B2 (ja) 計算機システム及びプログラム
JP2014229235A (ja) ストレージ制御装置、ストレージ制御方法およびストレージ制御プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171215

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180731

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180807

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180920

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: 20181106

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181119

R150 Certificate of patent or registration of utility model

Ref document number: 6447217

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150