JP2009110404A - 仮想計算機システム及び同システムにおけるゲストosスケジューリング方法 - Google Patents
仮想計算機システム及び同システムにおけるゲストosスケジューリング方法 Download PDFInfo
- Publication number
- JP2009110404A JP2009110404A JP2007283721A JP2007283721A JP2009110404A JP 2009110404 A JP2009110404 A JP 2009110404A JP 2007283721 A JP2007283721 A JP 2007283721A JP 2007283721 A JP2007283721 A JP 2007283721A JP 2009110404 A JP2009110404 A JP 2009110404A
- Authority
- JP
- Japan
- Prior art keywords
- cpu
- guest
- operating frequency
- virtual machine
- processing amount
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
【課題】CPUの動作周波数が低下しても、ゲストOSのリアルタイム処理性能を維持できるようにする。
【解決手段】VMM(仮想計算機マネージャ)20は、CPU110を含むHW11を仮想化することによりVM(仮想計算機)30-0〜30-4を構築する。VM30-0〜30-4上ではゲストOS40-0〜40-4が実行される。CPU周波数変化検出部204はCPU110の動作周波数の変化を検出する。ゲストOSスケジューラ201は、上記動作周波数の変化が検出され、且つ当該動作周波数が規定動作周波数から低下した場合、ゲストOS40-0〜40-4のうちの特定ゲストOSが当該規定動作周波数での動作で必要とするCPU絶対処理量を維持するために、当該特定ゲストOSにCPU110が割り当てられるべき時間が増えるようにスケジューリングを行う。
【選択図】 図1
【解決手段】VMM(仮想計算機マネージャ)20は、CPU110を含むHW11を仮想化することによりVM(仮想計算機)30-0〜30-4を構築する。VM30-0〜30-4上ではゲストOS40-0〜40-4が実行される。CPU周波数変化検出部204はCPU110の動作周波数の変化を検出する。ゲストOSスケジューラ201は、上記動作周波数の変化が検出され、且つ当該動作周波数が規定動作周波数から低下した場合、ゲストOS40-0〜40-4のうちの特定ゲストOSが当該規定動作周波数での動作で必要とするCPU絶対処理量を維持するために、当該特定ゲストOSにCPU110が割り当てられるべき時間が増えるようにスケジューリングを行う。
【選択図】 図1
Description
本発明は、複数の仮想計算機が動作する仮想計算機システムに係り、特に当該複数の仮想計算機で実行される複数のゲストOSにCPUを時分割で割り当てるためのスケジュールを管理するのに好適な仮想計算機システム及び同システムにおけるゲストOSスケジューリング方法に関する。
古くから、メインフレームにおいてハードウェア(HW)で構成された仮想計算機(Virtual Machine:VM)支援機構(仮想マシン支援機構)を用いた仮想計算機システムが存在する。また近年、パーソナルコンピュータ(PC)のCPU(プロセッサ)が同様の仮想マシン支援機構をHWでサポートしてきたこともあり、PCの世界でも計算機の仮想化技術が活用されるようになってきている。そのため今後は、個人用のPCや、いわゆるPCサーバ等においても、仮想マシンの技術が広く利用されるようになることが予測される。
一般に、PCのような計算機システム(物理計算機)は、CPU(実CPU)、各種の入出力(I/O)装置(実I/O装置)及びメモリ(実メモリ)を含むHW(実HW)で構成されている。この実HWで構成される物理計算機(物理環境)上に、仮想マシンマネージャ(Virtual Machine Manager:VMM)が存在する。この仮想マシンマネージャ(仮想計算機マネージャ)の提供する仮想マシン実行環境のもとで複数のゲストOSが動作をする。
仮想マシンマネージャは仮想マシンモニタ(Virtual Machine Monitor:VMM)とも呼ばれる。仮想マシンマネージャは上述の実HWを直接管理し、それらを仮想化して仮想計算機(仮想マシン)を構築する。つまり仮想マシンマネージャは、実CPU、実I/O装置及び実メモリのような物理資源(HW資源)を時間的、空間(領域)的に、仮想マシンのそれぞれ仮想CPU、仮想I/O装置及び仮想メモリとして割り当てることによって、当該仮想マシンを構築(生成)する。各ゲストOSは仮想マシンにロードされて、当該仮想マシン内の仮想CPUによって実行される。
このように仮想マシンマネージャは、実CPU、実I/O装置及び実メモリのような物理資源を各ゲストOSに割り当てる、いわゆるゲストOSスケジューリングによって、当該各ゲストOSが同時に動作できる環境を提供し、仮想計算機システムの管理を行う。つまり仮想計算機システムにおいては、目的に合わせてゲストOSを複数稼動させることができる。これは従来の非仮想計算機システムに比べて大きなメリットである。しかし、仮想計算機システムではHW資源を複数のゲストOSで共有するため、特にリアルタイム(RT)処理の実現にはそれなりの考慮が必要である。
リアルタイム処理では、予め決められた時間内に特定の処理を終える等の時間的な制約がある。このため、リアルタイム処理を実現するには、OSにリアルタイムOS(RTOS)を使用するのが一般的である。リアルタイムOSは、当該OS上で実行されるアプリケーションプログラム(プロセス)に関してリアルタイム処理に適した実行優先度管理を行う。リアルタイムOSは当該OS自体もリアルタイム性を有するように実装されており、上述のアプリケーションプログラム(リアルタイムアプリケーション)に対するCPUのディスパッチ処理の時間精度、割り込みに対する応答性などを保証する。リアルタイムOS上では、上述のリアルタイム性が実現されていることを前提にアプリケーションプログラムが動作する。これにより、リアルタイムOS上で動作するアプリケーションプログラムを、例えば時間制約の厳しい制御用途に使用することができる。
上述のようなリアルタイムOS及びリアルタイム性を要求されるアプリケーションプログラムを仮想マシンで実行する場合を想定する。一般に仮想マシンでは、各ゲストOSにCPUを時分割で割り当てて実行する。しかし、通常のリアルタイムOS及び当該OS上で動作するリアルタイムアプリケーションプログラムは、その実行のために、CPUが常に割り当てられていることを前提として、時間管理や処理に要する時間の見積もりを行うのが普通である。
このようなリアルタイムOS及び当該OS上で動作するアプリケーションプログラムを仮想マシン上で実行するためには、一定の周期で一定の時間だけ正確にCPUを割り当ててればよい。この結果、単位時間当たりの処理量は一定となり、リアルタイム性の設計(見積もり)がしやすくなり、リアルタイムOS及びアプリケーションプログラム実行時にリアルタイム性を実現することが可能になる。
非特許文献1乃至3には、仮想計算機システムにおける一般的なゲストOSスケジューリングに関する技術が記載されている。例えば、非特許文献1には、仮想マシンのCPUのディスパッチに関する技術が記載されている。ここには、CPU割り当て単位としての「タイム・スライス量子(Time Slice Quantum)」が記載されている。非特許文献1は、汎用計算機の仮想化技術としてのCPU割り当てポリシーを紹介しており、この中で、対話型ユーザ及び非対話型ユーザ等からの端末入力を考慮したCPU割り当て方式を開示している。非特許文献2及び3には、PC(パーソナルコンピュータ)でのオープンソースで開発されている仮想化ソフトウェア「Xen」のディスパッチャ及びスケジューリングに関する内容が記載されている。ここには、「sefdスケジューラ」と呼ばれているデッドラインベースのスケジューラポリシに関して記載されている。
岡崎世雄・全先実著,「OSシリーズ11 VM」,共立出版株式会社,1989年8月,p.97−100 高橋浩和,「仮想マシンモニター Xen3.0解読室 第3回 ドメインのスケジューリング(1)」,オープンソースマガジン,2006年6月号,ソフトバンククリエイティブ株式会社,第161−170ページ 高橋浩和,「仮想マシンモニター Xen3.0解読室 第4回 ドメインのスケジューリング(2)」,オープンソースマガジン,2006年7月号,ソフトバンククリエイティブ株式会社,第147−155ページ
岡崎世雄・全先実著,「OSシリーズ11 VM」,共立出版株式会社,1989年8月,p.97−100 高橋浩和,「仮想マシンモニター Xen3.0解読室 第3回 ドメインのスケジューリング(1)」,オープンソースマガジン,2006年6月号,ソフトバンククリエイティブ株式会社,第161−170ページ 高橋浩和,「仮想マシンモニター Xen3.0解読室 第4回 ドメインのスケジューリング(2)」,オープンソースマガジン,2006年7月号,ソフトバンククリエイティブ株式会社,第147−155ページ
上記非特許文献1乃至3には、複数のゲストOSに対するCPU割り当て方法(つまりゲストOSスケジューリング方法)の例が示されている。この非特許文献1乃至3に記載の従来のゲストOSスケジューリング方法は対象の仮想マシンの使用目的により様々である。しかし非特許文献1乃至3に記載のゲストOSスケジューリング方法は、仮想マシンマネージャのスケジューラ、或いはディスパッチャにより、複数のゲストOSにCPU時間を割り当てる点において共通する。
ところで、最近のCPUは状況に応じて動作周波数が変化するように構成されている。代表的なケースとしては、例えば、CPU、或いは当該CPUを含むシステム(計算機システム)の温度が異常に上昇した場合に、当該CPU(或いは当該CPUを含むシステム)の動作周波数が自動的に下げられる。このように、CPUの動作周波数が下げられることにより、当該CPU及びシステムの消費電力が低減して温度上昇を止めることが可能となる。また、CPU(システム)の負荷が低いときにはOSのようなソフトウェア(SW)が例えば当該CPUの動作周波数を決定するHWに対して当該動作周波数を下げるように指示(設定)することにより、当該CPU及びシステムの消費電力を低減して、無駄な電力消費を避けることが可能となる。勿論、温度が下がった場合には、自動的に或いはSWの指示により、CPUの動作周波数が元のレベルに戻される。同様に、負荷が増えた場合にも、SWの指示によりCPUの動作周波数が元のレベルに戻される。
このようにCPU(或いは当該CPUを含むシステム)の動作周波数が変化すると、当該CPUの処理能力も影響を受ける。例えばCPUの動作周波数が下げられた場合には、一般的に当該CPUの処理能力が低下する。このように、CPUの動作周波数が変化する状況は、予め処理時間を見込んで、その通りに当該CPUが一定の能力で処理することを期待するリアルタイムOS及び当該OS上で動作するリアルタイムアプリケーションプログラムにとっては非常に都合が悪い。即ちCPUの動作周波数が変化すると処理時間の大きな誤差要因となるため、時間保証を伴ったリアルタイム処理が実現できなくなってしまう。これは仮想マシンだけの問題ではなく、広く計算機一般の問題である。
しかしながら、従来技術においては、CPUの動作周波数の変化とゲストOSのリアルタイム実行性の両方を考慮したゲストOSスケジューリングは存在しない。
本発明は上記事情を考慮してなされたものでその目的は、CPUの動作周波数が低下しても、ゲストOSに割り当てるCPU時間を増加することにより、当該ゲストOSのリアルタイム処理性能を維持できる仮想計算機システム及び同システムにおけるゲストOSスケジューリング方法を提供することにある。
本発明の1つの観点によれば、CPUを含むハードウェアと、温度を含む動作環境の変動に応じて前記CPUの動作周波数を変化させる動作周波数可変手段と、前記ハードウェアを仮想化することによって複数の仮想計算機を構築し、当該複数の仮想計算機で複数のゲストOSを実行させるための管理を行う仮想計算機マネージャとを具備する仮想計算機システムが提供される。このシステムにおいて、前記仮想計算機マネージャは、前記動作周波数の変化を検出するための動作周波数変化検出手段と、前記複数のゲストOSに前記CPUを時分割で割り当てるためのスケジュールを管理するスケジューラであって、前記動作周波数変化検出手段によって前記動作周波数の変化が検出され、且つ当該動作周波数が予め定められた規定動作周波数から低下した場合、前記複数のゲストOSのうちの予め定められた特定ゲストOSが当該規定動作周波数で必要とする前記CPUの処理能力であるCPU絶対処理量を維持するために、当該特定ゲストOSに前記CPUが割り当てられるべき時間(つまりCPU時間)が増えるように前記スケジュールを調整するスケジューラと、前記スケジューラによって管理される前記スケジュールに従って前記複数のゲストOSに前記CPUを時分割で割り当てるディスパッチャとを含む。ここで、スケジューラによるスケジュールの調整では、動作周波数の規定動作周波数からの低下分を相殺するように、特定ゲストOSに割り当てられるべきCPU時間を増やすとよい。
本発明によれば、CPUの動作周波数が変化した場合、特に当該動作周波数が規定動作周波数よりも低下した場合に、特定ゲストOSが当該規定動作周波数での動作で必要とするCPU絶対処理量(CPUの処理能力)を維持するために、当該特定ゲストOSに割り当てられるべきCPU時間が増えるようにスケジューリングされる。これにより、温度変化等の要因によりCPUの動作周波数が規定動作周波数よりも低下しても、少なくとも特定OSに関しては、リアルタイム性を保証することができ、仮想計算機の組み込み用途などへの応用の可能性を広げることができる。
以下、本発明の実施の形態につき図面を参照して説明する。
図1は本発明の一実施形態に係る仮想計算機システム(VMシステム)1の構成を示すブロック図である。図1に示す仮想計算機システム1は、物理計算機10を用いて実現される。物理計算機(実計算機)10は、仮想計算機(仮想マシン)の実行環境を提供するハードウェア(HW)11を備えている。HW11は、CPU(実CPU)110、更には図示せぬI/O(入出力)装置(実I/O装置)及びメモリ(実メモリ)を含む。
図1は本発明の一実施形態に係る仮想計算機システム(VMシステム)1の構成を示すブロック図である。図1に示す仮想計算機システム1は、物理計算機10を用いて実現される。物理計算機(実計算機)10は、仮想計算機(仮想マシン)の実行環境を提供するハードウェア(HW)11を備えている。HW11は、CPU(実CPU)110、更には図示せぬI/O(入出力)装置(実I/O装置)及びメモリ(実メモリ)を含む。
物理計算機10のHW11上では、仮想マシン(仮想計算機)マネージャ(Virtual Machine Manager:VMM)20が動作する。VMM20は、仮想計算機システム1の管理を行い、仮想マシン(Virtual Machine:VM)が動作する環境(仮想マシン実行環境)を提供する。更に具体的に述べるならば、VMM20は、物理計算機10のHW11を構成する物理資源(CPU110を含む物理資源)を管理すると共に当該物理資源の時間的、領域的な配分を管理することにより、複数の仮想マシン、例えば5台の仮想マシン(VM)30-0,30-1,30-2,30-3及び30-4が動作する仮想マシン実行環境を提供する。VM30-0〜30-4は何れも、VMM20が、物理計算機1のHW11を構成する物理資源(CPU110を含む物理資源)を、時間的、領域的に割り当てることにより構築される。
VM30-0,30-1,30-2,30-3及び30-4上では、それぞれゲストOS40-0(#0),40-1(#1),40-2(#2),40-3(#3)及び40-4(#4)が動作する。更に具体的に述べるならば、ゲストOS40-0〜40-4は、それぞれVM30-0〜30-4にロードされて、当該VM30-0〜30-4内の仮想CPUによって実行される。ゲストOS40-0〜40-4には、それぞれゲストOS番号0〜4が割り当てられている。
VMM20は、ゲストOSスケジューラ201、ゲストOS管理テーブル202、ディスパッチャ203、CPU周波数変化検出部204及びCPU周波数変更部205を含む。
ゲストOSスケジューラ201は、適切なタイミングで起動され、VMM20が管理する全てのゲストOS(ここではゲストOS40-0〜40-4)の各々にどの程度の時間の割合でCPU110を割り当てるかを計算し決定するモジュールである。本実施形態において、上記適切なタイミングとは、後述する要因1または2のいずれかが発生した場合である。
ゲストOS管理テーブル202は、ゲストOSスケジューラ201によって決定された、ゲストOS毎にCPU110が割り当てられるべき時間(CPU時間)の割合(CPU割り当て率)を保持するのに用いられる。このゲストOSスケジューラ201によって決定されたゲストOS毎のCPU割り当て率を、「現在の割当量」と称する。ゲストOS管理テーブル202は更に、CPU110(を含むHW11)が規定の動作周波数(規定CPU周波数)で動作する場合に各ゲストOSのリアルタイム性能を保証するのに必要な当該ゲストOS毎のCPU割り当て率(以下、「CPU絶対処理量」と称する)を保持するのに用いられる。
図2はゲストOS管理テーブル202の一例を示す。図2のゲストOS管理テーブル202には、ゲストOS番号がそれぞれ0,1,2,3及び4のゲストOSに対応付けて、当該ゲストOS、即ちゲストOS40-0(#0),40-1(#1),40-2(#2),40-3(#3)及び40-4(#4)にCPU110を割り当てる割合であるCPU割り当て比率40%,30%,20%,5%及び5%を示す情報が、「現在の割当量」として保持されている。また図2のゲストOS管理テーブル202には、ゲストOS40-0(#0),40-1(#1),40-2(#2),40-3(#3)及び40-4(#4)に対応付けて、そのゲストOSの「CPU絶対処理量」として、それぞれ20%,15%,10%,0%及び0%を示す情報が保持されている。
再び図1を参照すると、ディスパッチャ203は、ゲストOS管理テーブル202に保持されているゲストOS毎の「現在の割当量」(つまりゲストOS管理テーブル202の示すスケジュール)に従って、各ゲストOSに実際にCPU110を割り当てるディスパッチ処理を行う。図2のゲストOS管理テーブル202の例であれば、ディスパッチャ203は、ゲストOS40-0(#0),40-1(#1),40-2(#2),40-3(#3)及び40-4(#4)に対して、CPU110をそれぞれ40%,30%,20%,5%及び5%の割合で時分割で割り当てる。
図3はディスパッチャ203によるディスパッチの例を示す。図3において、横軸は時間の経過を示す。
本実施形態において、ゲストOSにCPU110を割り当てる時間単位は一定である。この時間単位を「クォンタム」と呼び「τ」で示す。図3には、図2のゲストOS管理テーブル202に従い、ゲストOS番号が2のゲストOS40-2(#2)に対してCPU110を20%の割合で割り当てる例が示されている。ここではディスパッチャ203が、5τ毎に1τだけゲストOS40-2(#2)をディスパッチすることで、上記の比率(CPU割り当て比率)20%を実現している。このようなディスパッチャ203によるディスパッチは、ゲストOS40-2(#2)以外のゲストOSに対しても同様に行われる。つまり本実施形態では、時間(時間単位)τ毎にVMM20内のディスパッチャ203に制御が渡り、次の時間(クォンタム)にCPU110を割り当てるべきゲストOSを選択する処理が繰り返される。
本実施形態において、HW11は、当該HW11の温度(つまり、CPU110を含むHW11の動作環境の1つである温度)が上昇した際にCPU110の動作周波数(CPU周波数)を自動的に下げる周知のCPU周波数自動調整機能を有している。VMM20内のCPU周波数変化検出部204は、このHW11の機能によりCPU周波数が変化させられたことを検出する。ここではCPU周波数変化検出部204は、CPU周波数の変化(現在のCPU周波数)を、HW11内の後述するCPU周波数変化通知部111からの通知により検出する。
CPU周波数変更部205は、CPU周波数を変更する。ここではCPU周波数変更部205は、HW11内の後述するCPU周波数設定部112に所望のCPU周波数を設定することにより、CPU周波数を変更操作する。
HW11は、CPU周波数変化通知部111及びCPU周波数設定部112を含む。CPU周波数変化通知部111は、HW11のCPU周波数自動調整機能によりCPU周波数が変化した場合に、その際のCPU周波数をCPU周波数変化検出部204に通知する。ここではCPU周波数変化通知部111は、CPU周波数の変化を割り込みによりCPU周波数変化検出部204に通知する。CPU周波数変化通知部111は、この割り込みを受けたCPU周波数変化検出部204からの問い合わせに対して、現在のCPU周波数を当該CPU周波数変化検出部204に通知する。また、CPU周波数変化通知部111は、CPU周波数の変化に無関係に、つまりCPU周波数変化検出部204への割り込みに無関係に、当該CPU周波数変化検出部204からの問い合わせに対して現在のCPU周波数を当該CPU周波数変化検出部204に通知する。
CPU周波数設定部112は、CPU周波数変更部205によって所望のCPU周波数を設定するのに用いられる。CPU周波数設定部112は、例えばCPU周波数変更部205からアクセス可能なレジスタである。CPU周波数設定部112にCPU周波数が設定されることにより、CPU110(を含むHW11)を当該設定されたCPU周波数で動作させることができる。なお、CPU周波数変化通知部111及びCPU周波数設定部112がCPU110に内蔵されていても構わない。
次に本実施形態における動作について説明する。
本実施形態において、予めリアルタイム処理を行う必要がある特定ゲストOS40-i(#i)(iは0〜4のいずれか)は、VMM20に対する専用のシステムコールを使って、自身に割り当てられるべき「CPU絶対処理量」を当該VMM20に要求する。そのため本実施形態では、
VMM_set_cpu_absolute_time(Cpu_Time_Rate);
のような、インターフェイス(インターフェイス関数)呼び出しのためのシステムコールが用意されている。ゲストOS40-iがインターフェイス関数を呼び出すとVMM20に対するシステムコールが発生する。
本実施形態において、予めリアルタイム処理を行う必要がある特定ゲストOS40-i(#i)(iは0〜4のいずれか)は、VMM20に対する専用のシステムコールを使って、自身に割り当てられるべき「CPU絶対処理量」を当該VMM20に要求する。そのため本実施形態では、
VMM_set_cpu_absolute_time(Cpu_Time_Rate);
のような、インターフェイス(インターフェイス関数)呼び出しのためのシステムコールが用意されている。ゲストOS40-iがインターフェイス関数を呼び出すとVMM20に対するシステムコールが発生する。
前記したように、「CPU絶対処理量」は、規定CPU周波数での動作でゲストOS40-iのリアルタイム性能を保証するのに必要なCPU割り当て率(%)、つまりゲストOS40-iが規定CPU周波数での動作で必要とするCPU割り当て率(%)として定義される。例えば、規定CPU周波数(つまり通常時のCPU周波数)が1GHzであった場合、ゲストOS40-iがリアルタイム性能の保証のために、1GHz動作時の単位時間当たりCPU処理能力の20%相当の処理量を「CPU絶対処理量」として確保したいときには、
VMM_set_cpu_absolute_time(20);
のように、このインターフェイスを呼び出すことにより、当該「CPU絶対処理量」の割り当てを要求する。ゲストOSスケジューラ201は、このインタフェースの機能を有する。
VMM_set_cpu_absolute_time(20);
のように、このインターフェイスを呼び出すことにより、当該「CPU絶対処理量」の割り当てを要求する。ゲストOSスケジューラ201は、このインタフェースの機能を有する。
ゲストOSスケジューラ201のインタフェースは上述のインターフェイス関数を用いたゲストOS40-iからのシステムコールにより呼び出されると、当該インターフェイス関数の引数で示される「CPU絶対処理量」(ここでは20%)の割り当ての要求を受け付ける。するとゲストOSスケジューラ201は、上記引数で示される「CPU絶対処理量」をゲストOS40-i(のゲストOS番号i)に対応付けてゲストOS管理テーブル202に登録する。以後、CPU周波数が変化したときには、ゲストOSスケジューラ201はゲストOS管理テーブル202に従い、規定CPU周波数で動作時の20%の処理能力に相当するCPU処理量(つまりCPU周波数の変化分を相殺するCPU処理量)となるようなCPU割り当て比率(現在の割当量)で、CPU110をゲストOS40-iに割り当てる。
なお、上述のインターフェイス関数の呼び出し(システムコール)を実行していないゲストOS、即ち「CPU絶対処理量」を要求しないゲストOS(非要求ゲストOS、非特定ゲストOS)に関しては、「CPU絶対処理量」を要求したゲストOS(要求ゲストOS、特定ゲストOS)に対してCPU処理量を割り当てた後の残ったCPU処理量を当該非要求ゲストOSに等分して割り当てるものとする。ゲストOS管理テーブル202においては、非要求ゲストOSの絶対CPU処理量の欄には(デフォルト値として)0がセットされる。
図2のゲストOS管理テーブル202の例では、ゲストOS番号がそれぞれ0,1及び2のゲストOS40-0,40-1及び40-2が要求ゲストOS(特定ゲストOS)であり、ゲストOS番号がそれぞれ3及び4のゲストOS40-3及び40-4が非要求ゲストOS(非特定ゲストOS)である。この例では、ゲストOS40-0,40-1及び40-2には、それぞれ規定CPU周波数で動作時の20%,15%及び10%の処理能力に相当するCPU処理量となるようなCPU割り当て比率(現在の割当量)40%,30%及び20%で、CPU110が割り当てられる。この場合、残りのCPU処理量は、(100−(40+30+20))%、即ち10%である。このため、ゲストOS40-3及び40-4には、この10%を2等分して、それぞれ5%のCPU割り当て比率(現在の割当量)でCPU110が割り当てられる。
次に、本実施形態においてCPU周波数が変化したときのスケジューリング処理について、図4のフローチャートを参照して説明する。
図4のフローチャートに従うスケジューリング処理は、例えば、
1)温度上昇などが原因でCPU周波数が自動的に低下してHW11内のCPU周波数変化通知部111が働いた結果、VMM20(内のCPU周波数変化検出部204)が当該CPU周波数変化通知部111から割り込み(CPU周波数変更通知割り込み)を受けた場合(要因1)
2)システム負荷が低下したとVMM20が判断することにより、或いはユーザの指示によりVMM20内のCPU周波数変更部205がHW11内のCPU周波数設定部112を操作することによってCPU周波数を低下させる場合(要因2)
のいずれかのケースに行われる。
図4のフローチャートに従うスケジューリング処理は、例えば、
1)温度上昇などが原因でCPU周波数が自動的に低下してHW11内のCPU周波数変化通知部111が働いた結果、VMM20(内のCPU周波数変化検出部204)が当該CPU周波数変化通知部111から割り込み(CPU周波数変更通知割り込み)を受けた場合(要因1)
2)システム負荷が低下したとVMM20が判断することにより、或いはユーザの指示によりVMM20内のCPU周波数変更部205がHW11内のCPU周波数設定部112を操作することによってCPU周波数を低下させる場合(要因2)
のいずれかのケースに行われる。
このような要因によりCPU周波数が変化する場合、VMM20内のゲストOSスケジューラ201は、ゲストOS管理テーブル202で「CPU絶対処理量」が0でない要求ゲストOS(図2の例では、ゲストOS40-0,40-1及び40-2)、及び「CPU絶対処理量」が0の非要求ゲストOS(図2の例では、ゲストOS40-3及び40-4)に対して、図4のフローチャートに従ったスケジューリング処理を次のように行う。
まずゲストOSスケジューラ201は、CPU周波数変化検出部204を用いて現在のCPU周波数をHW11内のCPU周波数変化通知部111に問い合わせさせ、その値を変数Fcとして設定する(ステップS1)。次にゲストOSスケジューラ201は、「CPU絶対処理量」を保証する要求ゲストOS(以下、第1のタイプのゲストOSと称する)の集合の中に未処理(CPU処理量が未割り当て)のゲストOSが存在するかを判定する(ステップS2)。本実施形態において、第1のタイプのゲストOSは、ゲストOS管理テーブル202において、「CPU絶対処理量」として0以外の値が設定されているゲストOS(要求ゲストOS)である。したがってゲストOSスケジューラ201は、ゲストOS管理テーブル202を参照することにより第1のタイプのゲストOS(「CPU絶対処理量」を保証するゲストOS)と「CPU絶対処理量」を保証する必要のないゲストOS(以下、第2のタイプのゲストOSと称する)とを識別することができる。
未処理の第1のタイプのゲストOSが存在するならば(ステップS2)、ゲストOSスケジューラ201は、その中の1つを選択し、GOSiとして設定する(ステップS3)。次にゲストOSスケジューラ201は、ゲストOS管理テーブル202においてGOSiに対応付けて登録されている「CPU絶対処理量」、即ち当該GOSiに対して定められている、当該GOSiが必要とする「CPU絶対処理量」をRs(%)として設定する(ステップS4)。明らかなように、Rsは、規定CPU周波数をFsとすると、GOSiが必要とする、当該Fsにおける単位時間当たりのCPU割り当て率を示す。
次にゲストOSスケジューラ201は、現在のCPU周波数FcにおいてGOSiが必要とするCPU処理量Rnowを、次式
Rnow=Rs×(Fs/Fc) ……(1)
により算出する(ステップS5)。つまりゲストOSスケジューラ201は、GOSiに対して定められているCPU絶対処理量Rs、現在のCPU周波数Fc及び規定CPU周波数Fsに基づき、現在のCPU周波数FcにおいてGOSiが必要とするCPU処理量Rnow(つまり、規定CPU周波数Fsに対する現在のCPU周波数Fcの低下分を相殺するためのCPU処理量Rnow)を算出する。
Rnow=Rs×(Fs/Fc) ……(1)
により算出する(ステップS5)。つまりゲストOSスケジューラ201は、GOSiに対して定められているCPU絶対処理量Rs、現在のCPU周波数Fc及び規定CPU周波数Fsに基づき、現在のCPU周波数FcにおいてGOSiが必要とするCPU処理量Rnow(つまり、規定CPU周波数Fsに対する現在のCPU周波数Fcの低下分を相殺するためのCPU処理量Rnow)を算出する。
ゲストOSスケジューラ201は、算出されたCPU処理量Rnowを、ゲストOS管理テーブル202のGOSiに対応付けられている現在の割り当て量の欄に登録する(ステップS6)。つまりゲストOSスケジューラ201は、ゲストOS管理テーブル202においてGOSiに対応付けられている現在の割り当て量の欄の値を、算出されたCPU処理量Rnowに更新する。
上記(1)式では、現在のCPU処理量Rnowが、CPU周波数の変化に反比例する値として算出される。例えば、現在のCPU周波数Fcが規定CPU周波数Fsの1/2になれば、(1)式に従って算出されるCPU処理割当量Rnowは2倍になる。図2のゲストOS管理テーブル202には、CPU周波数Fcが規定CPU周波数Fsの半分になった(1GHz→500MHz)場合の「現在の割当量」が示されている。
ゲストOSスケジューラ201は、以上の処理を、未処理の第1のタイプのゲストOSがなくなるまで繰り返す(ステップS2)。そして、未処理の第1のタイプのゲストOSがなくなったなら(ステップS2)、ゲストOSスケジューラ201はステップS7に進む。ステップS7において、ゲストOSスケジューラ201は全ての第1のタイプのゲストOSに割り当てられたCPU処理量(現在の割当量)Rnowの総和ΣRnow(%)を100%から差し引いた、残りのCPU処理量(CPU時間)を未割り当て時間(単位は%)として算出する。次にゲストOSスケジューラ201は、算出された未割り当て時間を第2のタイプのゲストOSの数で等分して、当該第2のタイプのゲストOSに割り当てる(ステップS8)。つまりゲストOSスケジューラ201は、未割り当て時間を全ての第2のタイプのゲストOSに均等に割り当てる。ステップS8において、ゲストOSスケジューラ201は、等分された未割り当て時間(CPU処理量)を、ゲストOS管理テーブル202において各第2のタイプのゲストOSに対応付けられている現在の割り当て量の欄に登録する。つまりゲストOSスケジューラ201は、ゲストOS管理テーブル202において各第2のタイプのゲストOSに対応付けられている現在の割り当て量の欄の値を、等分された未割り当て時間(CPU処理量)に更新する。ゲストOSスケジューラ201はステップS8を実行すると、スケジューリング処理を終了する。
以後、ディスパッチャ203は、CPU周波数の変化に応じて更新されたゲストOS管理テーブル202にゲストOS40-0〜40-4に対応付けて登録されている最新の「現在の割当量」に従って、当該ゲストOS40-0〜40-4にCPU110を割り当てるディスパッチ処理を行う。これにより、上述のようにCPU周波数が低下した場合には、その低下分を補うCPU時間を第1のタイプのゲストOS(図2の例では、ゲストOS40-0〜40-2)に割り当てられる。この結果、CPU周波数が低下しても、第1のタイプのゲストOS(ゲストOS40-0〜40-2)の単位時間当たりの処理量が一定になるように保証され、当該第1のタイプのゲストOSのリアルタイム処理性能が維持される。
[第1の変形例]
上記実施形態によれば、CPU周波数が規定CPU周波数の例えば1/2に低下した場合には、第1のタイプのゲストOSに対して、単位時間当たりのCPU処理量(CPU割り当て比率)を2倍に増やすことにより、当該第1のタイプのゲストOSの実行効率は影響を受けないで済む。しかしながら、第2のタイプのゲストOSに関しては、第1のタイプのゲストOSに割り当てるCPU処理量を増やした分、割り当てることができるCPU処理量(CPU時間)が少なくなる。これについて具体例を挙げて説明する。
上記実施形態によれば、CPU周波数が規定CPU周波数の例えば1/2に低下した場合には、第1のタイプのゲストOSに対して、単位時間当たりのCPU処理量(CPU割り当て比率)を2倍に増やすことにより、当該第1のタイプのゲストOSの実行効率は影響を受けないで済む。しかしながら、第2のタイプのゲストOSに関しては、第1のタイプのゲストOSに割り当てるCPU処理量を増やした分、割り当てることができるCPU処理量(CPU時間)が少なくなる。これについて具体例を挙げて説明する。
図5は、現在のCPU周波数が規定周波数に一致する場合のゲストOS管理テーブル202の一例を示す。この例では、第1のタイプのゲストOS40-0,40-1及び40-2に割り当てられる「現在の割当量」は、図5に示されるように、それぞれ「CPU絶対処理量」である20%,15%及び10%に一致する。この場合、第1のタイプのゲストOS40-0,40-1及び40-2に割り当てられる「現在の割当量」の総量は45%であり、残りのCPU処理量(余ったCPU処理量)は55%となる。この55%が、第2のタイプのゲストOS40-3及び40-4に均等に割り当てられる。これにより、第2のタイプのゲストOS40-3及び40-4にそれぞれ割り当てられる「現在の割当量」は、図5に示されるように、55%の1/2である27.5%となる。
ところが、CPU周波数が規定CPU周波数の1/2となったために、第1のタイプのゲストOS40-0,40-1及び40-2に割り当てられる「現在の割当量」を図5の状態から図2の例のように2倍に増やした場合、第2のタイプのゲストOS40-3及び40-4に割り当てられるCPU処理量(CPU時間)は27.5%から5%に低減する。この27.5%から5%への変化は、第2のタイプのゲストOS40-3及び40-4に単位時間当たりに割り当てられるクォンタムの個数が、その変化率に比例して減ること、つまり5/27.5に減ることを意味する。この結果、第2のタイプのゲストOS40-3及び40-4に関しては、ディスパッチ機会が少なくなり応答時間の悪化を引き起こしてしまう。
そこで、CPU周波数が低下しても、第1のタイプのゲストOSの単位時間当たりの処理量が一定になるように保証しつつ、第2のタイプのゲストOSのディスパッチ回数の減少を抑えることができる、上記実施形態の第1の変形例について説明する。第1の変形例が上記実施形態と相違するのは、スケジューリング処理である。
この第1の変形例におけるスケジューリング処理について、図6のフローチャートを参照して、図4のフローチャートと相違する点を中心に説明する。なお、図6のフローチャートにおいて、図4と同様のステップには同一参照符号を付してある。
図6のフローチャートが図4のフローチャートと相違する点は、ステップS9が追加されたことにある。このステップS9において、ゲストOSスケジューラ201は、規定CPU周波数Fsに対するCPU周波数Fcの割合、つまりFc/Fsで、ゲストOSにCPU時間を割り当てる単位であるクォンタムを変化させる。規定CPU周波数におけるクォンタムの値(時間)をτ、変化後の新しいクォンタムの値をτ’で表すと、新しいクォンタムの値τ’は、次式
τ’=τ×(Fc/Fs) ……(2)
により算出される。
τ’=τ×(Fc/Fs) ……(2)
により算出される。
したがって、CPU周波数が規定CPU周波数の例えば半分になった(1GHz→500MHz)場合には、上記(2)式は
τ’=τ×(500MHz/1GHz)
=0.5τ
となり、クォンタムの値は半分になる。
τ’=τ×(500MHz/1GHz)
=0.5τ
となり、クォンタムの値は半分になる。
このように第1の変形例においては、CPU周波数の低下に応じて、例えば規定CPU周波数Fsに対するCPU周波数Fcの割合に応じて、クォンタムの値を低減している。これにより、上述のように第2のタイプのゲストOS40-3及び40-4に割り当てられるCPU処理量(CPU時間)は低減しても、ディスパッチ回数の減少を抑えることができる。
CPU周波数Fcが規定CPU周波数Fsの1/2となった上記の例では、クォンタムの値は、τから(τ’=)0.5τのように1/2となる。この結果、単位時間当たりのクォンタムの数のCPU周波数の変化前のそれに対する比率は、上記実施形態と比較して2倍となる。具体的には、第2のタイプのゲストOS40-3及び40-4に割り当てられるCPU時間が上述のように27.5%から5%に低減した場合、上記比率は、5/27.5から(5/27.5)×2=10/27.5となる。これにより、第2のタイプのゲストOS40-3及び40-4のディスパッチ回数の減少を抑えることができ、当該ゲストOS40-3及び40-4の応答性悪化を緩和することができる。
上述の第1の変形例では、クォンタムの値を規定CPU周波数Fsに対するCPU周波数Fcの割合に比例するように変えている。しかし、CPU周波数が規定CPU周波数に一致する場合に第2のタイプのゲストOSに割り当てられる「現在の割当量」を第1の割当量と呼び、CPU周波数が規定CPU周波数よりも低下した場合に当該第2のタイプのゲストOSに割り当てられる「現在の割当量」を第2の割当量と呼ぶならば、クォンタムの値を、第1の割当量に対する第2の割当量の割合に比例するように変えても良い。このようにすると、第2のタイプのゲストOS(上記の例では、ゲストOS40-3及び40-4)に関して、単位時間当たりのクォンタムの個数が減るのを完全に防止できる。但し、クォンタムの値を小さくし過ぎるとゲストOS切り替えのオーバヘッドが増えて性能が悪化する可能性もある。そこで、クォンタムの値の下限値を予め定めておき、クォンタムの値が当該下限値より小さな値に設定されないようにすると良い。
図7は、第2のタイプのゲストOS、例えばゲストOS40-3(#3)に対するディスパッチの様子を示し。図7(a)は図5のゲストOS管理テーブル202で示される割当状況におけるゲストOS40-3(#3)へのCPUディスパッチの様子を示す。ここでは、単位時間を1秒、クォンタムの値を5ms(τ=5ms)とすると、当該単位時間当たり55個のクォンタムτ(つまり、単位時間当たりのクォンタムの総数200個の27,5%)がゲストOS40-3(#3)に割り当てられる。
図7(a)の状態で、クォンタムの値そのままで(つまりτ=5ms)、CPU周波数が半分になった状態、つまり図2のゲストOS管理テーブル202で示される割当状況におけるゲストOS40-3(#3)へのCPUディスパッチの様子を図7(b)に示す。ここでは、ゲストOS40-3(#3)に対する「現在の割当量」は5%なので、単位時間(1秒)当たり10個のクォンタムτが当該ゲストOS40-3(#3)に割り当てられている。この状況では、明らかにゲストOS40-3(#3)へのCPU割当回数が少なくなっている。この場合、ゲストOS40-3(#3)の応答性は悪くなる。
そこで、上記第1の変形例のように、クォンタムの値を規定CPU周波数Fsに対するCPU周波数Fcの割合で変更する。CPU周波数Fcが規定CPU周波数Fsの半分になった(1GHz→500MHz)例では、新しいクォンタムの値は、5msから2.5ms(τ=2.5ms)となる。なお、ここでは便宜的に、新しいクォンタムの値もτで表している。
図2のゲストOS管理テーブル202で示される割当状況で、クォンタムの値が2.5msに変更された場合のゲストOS40-3(#3)へのCPUディスパッチの様子を図7(c)に示す。ここでは、ディスパッチ1回あたりの時間(τ)は2.5msとなるが、単位時間当たりのゲストOS40-3(#3)へのディスパッチ回数は20回となり、図7(b)の単位時間当たりのディスパッチ回数(10回)よりも改善されたことが分かる。つまり、ディスパッチ1回あたりの処理時間は半分になるが、ディスパッチ頻度は2倍(ディスパッチ間隔は半分)となり応答性改善が期待できる。
例えば、制御用のシステムで、且つ(割り込みではなく)ポーリング方式で対象デバイスを制御しているような場合には、CPUが割り当てられる頻度が重要である。したがって、このようなシステムにおいて、第1の変形例のようにクォンタムの値が小さくなったとしても、ディスパッチ機会が増えることは応答性向上に貢献する。
[第2の変形例]
上記実施形態では、第1のタイプのゲストOSが複数存在し、且つ、例えばCPU周波数が大きく下がったときに、全ての第1のタイプのゲストOSのCPU割当量に関する要求を満たそうとすると、CPU処理量が足りなくなる可能性がある。そのため、CPU周波数がシステムの運用で想定される最低周波数となった場合でも当該システムを運用可能とする仕組みを予め用意しておくことが好ましい。即ち、CPU周波数が最低周波数(最低CPU周波数)となった場合でも、第1のタイプのゲストOSから要求された「CPU絶対処理量」を実現できるように、当該ゲストOSに対するCPU割り当てを調整する仕組みを必要とする。
上記実施形態では、第1のタイプのゲストOSが複数存在し、且つ、例えばCPU周波数が大きく下がったときに、全ての第1のタイプのゲストOSのCPU割当量に関する要求を満たそうとすると、CPU処理量が足りなくなる可能性がある。そのため、CPU周波数がシステムの運用で想定される最低周波数となった場合でも当該システムを運用可能とする仕組みを予め用意しておくことが好ましい。即ち、CPU周波数が最低周波数(最低CPU周波数)となった場合でも、第1のタイプのゲストOSから要求された「CPU絶対処理量」を実現できるように、当該ゲストOSに対するCPU割り当てを調整する仕組みを必要とする。
そこで、このような仕組みを実現する、上記実施形態の第2の変形例について説明する。第2の変形例では、第1のタイプのゲストOSが複数存在する場合に、当該ゲストOSの要求する「CPU絶対処理量」の保証の優先順位を当該ゲストOS毎に設定できるようにしたことを特徴とする。この優先順位により、CPU周波数が大きく(例えば最低周波数まで)下がっても必ずCPU絶対処理性能を保証すべきゲストOSと、それよりも優先順位が下がるが、できるだけCPU絶対処理性能を保証すべきゲストOSとを区別して指定することが可能となる。
図8は、第2の変形例で適用されるゲストOS管理テーブル212を示す。第2の変形例では、このゲストOS管理テーブル212が、図1に示されるゲストOS管理テーブル202に代えて用いられるものとする。ゲストOS管理テーブル212がゲストOS管理テーブル202と相違する点は、ゲストOS(のゲストOS番号)に対応付けられる項目として、「CPU絶対処理量割り当て優先度」「ALLOCフラグ」及び「MSGフラグ」が追加されていることである。
「CPU絶対処理量割り当て優先度」は、ゲストOSスケジューラ201がスケジューリングする際に「CPU絶対処理量」を割り当てるゲストOSの順番を決定するのに用いられる。この例では、「CPU絶対処理量割り当て優先度」は0〜7の値をとり、値が大きいほど優先的に「CPU絶対処理量」が割り当てられる。
第2の変形例においてゲストOS40-i(#i)(iは0〜4のいずれか)は、「CPU絶対処理量割り当て優先度」の設定が必要な場合、専用のシステムコールを使って、当該「CPU絶対処理量割り当て優先度」の設定をVMM20に要求する。そのため第2の変形例では、
VMM_set_guestos_priority(Priority);
のようなインターフェイス(インターフェイス関数)呼び出しのためのシステムコールが用意されている。ゲストOS40-iがインターフェイス関数を呼び出すとVMM20に対するシステムコールが発生する。このインターフェイス関数の引数は「CPU絶対処理量割り当て優先度」である。
VMM_set_guestos_priority(Priority);
のようなインターフェイス(インターフェイス関数)呼び出しのためのシステムコールが用意されている。ゲストOS40-iがインターフェイス関数を呼び出すとVMM20に対するシステムコールが発生する。このインターフェイス関数の引数は「CPU絶対処理量割り当て優先度」である。
ゲストOSスケジューラ201は上述のインターフェイス関数を用いたゲストOS40-iからのシステムコールにより、当該インターフェイス関数の引数の「CPU絶対処理量割り当て優先度」(つまり指定された値)を当該ゲストOS40-i(のゲストOS番号i)に対応付けて、ゲストOS管理テーブル212の「CPU絶対処理量割り当て優先度」の欄に登録する。
「ALLOCフラグ」は、CPU絶対処理量割り当て処理が行われたことを示すフラグである。「MSGフラグ」は、スケジューリング処理の結果、第1のタイプのゲストOSに対して、指定されていたCPU絶対処理量分のCPU処理量が割り当てられなかったことを示すフラグである。「MSGフラグ」がセットされていると、当該「MSGフラグ」に対応するゲストOSに対してVMM20から警告が発せられる。この警告は、例えばVMM20が対応するゲストOSに対して、メッセージパケットと割り込みを送信することで実現されるものとする。
図8に示されるゲストOS管理テーブル212は、CPU周波数が規定CPU周波数に一致する場合におけるスケジューリングの結果を表している。図8の例では、第1のタイプのゲストOSは上記実施形態及び第1の変形例と同様に、ゲストOS40-0〜40-2である。ここでは、第1のタイプの全てのゲストOS40-0〜40-2に対して、要求された分のCPU処理量が割り当てられている。
このような状態で、CPU周波数が規定CPU周波数の半分になった場合のスケジューリング処理について、図9A及び図9Bのフローチャートを参照して説明する。図において、Rrestは、現時点においてCPU処理量が未割り当ての第1のタイプのゲストOSに対して割り当て可能なCPU処理量(%)を示す。R0は、第2のタイプのゲストOSを実行するための最低限のCPU処理量(%)を示す。ここでは、R0として20%が予め定められているものとする。
ゲストOSスケジューラ201はまず、Rrestを初期設定する(ステップS11)。Rrestの初期値は、100%からR0を減じた値である。これにより、第2のタイプのゲストOSのためにR0で示されるCPU処理量が残される。次にゲストOSスケジューラ201は、ゲストOS管理テーブル212のゲストOS毎の「現在の割当量」「ALLOCフラグ」及び「MSGフラグ」を全てクリアする(ステップS12)。
次にゲストOSスケジューラ201は、Rrestが0であるかを判定する(ステップS13)。もし、Rrestが0でないならば(ステップS13)、ゲストOSスケジューラ201は、この段階で未処理の第1のタイプのゲストOSに割り当てるCPU処理量は残されているとして、ステップS14に進む。
ステップS14において、ゲストOSスケジューラ201はゲストOS管理テーブル212を参照することにより、現時点で未処理で且つCPU絶対処理量割り当て優先度が予め定められた最低優先度よりも高い第1のタイプのゲストOSが存在するかを判定する。但し、第2の変形例において上記最低優先度は0であり、第2のタイプのゲストOSの優先度である。したがって最低優先度以下の第1のタイプのゲストOSは存在しない。
もし、このような第1のタイプのゲストOSが存在するならば(ステップS14)、ゲストOSスケジューラ201は、その中で最もCPU絶対処理量割り当て優先度の高いゲストOSを1つ選択し、GOSiとして設定する(ステップS15)。但し、第2の変形例において上記最低優先度は0であり、第2のタイプのゲストOSのCPU絶対処理量割り当て優先度である。したがって第1のタイプのゲストOSのCPU絶対処理量割り当て優先度は全て最低優先度より高い。
ゲストOSスケジューラ201は、選択された第1のタイプのゲストOS(即ちGOSi)の「CPU絶対処理量」をゲストOS管理テーブル212から取得し、その「CPU絶対処理量」をAiとする(ステップS16)。次にゲストOSスケジューラ201は、現在のCPU周波数FcにおけるAiに相当するCPU処理量を求め、Ri[%]として設定する(ステップS17)。ここでRiは、上記実施形態におけるRnowに相当し、図4または図5のフローチャートのステップS4と同様に、GOSiに対して定められている「CPU絶対処理量」、現在のCPU周波数Fc及び規定CPU周波数Fsに基づき算出される。
次にゲストOSスケジューラ201は、RiがRrest(未割り当てのCPU処理量)以下であるかを判定する(ステップS18)。もし、RiがRrest以下であるならば(ステップS18)、ゲストOSスケジューラ201はGOSiに対してRiを割り当て可能であると判定する。この場合、ゲストOSスケジューラ201は、RrestからRiを減じて新たなRrestとすると共に(ステップS19)、当該RiをゲストOS管理テーブル212のGOSiに対応付けられた「現在の割当量」の欄に登録する(ステップS23)。つまりゲストOSスケジューラ201は、GOSiにRiを割り当てる。
これに対し、RiがRrestよりも大きいならば(ステップS18)、ゲストOSスケジューラ201はGOSiに対してRiの一部のみが割り当て可能であると判定する。この場合、ゲストOSスケジューラ201は、Rrestの全てをGOSiに割り当てるために、RiをRrestに変更すると共に(ステップS21)、Rrestを0に設定する(ステップS22)。このステップS22は、Rrestから当該Rrestを減じて新たなRrestとすることと等価である。そしてゲストOSスケジューラ201は、ステップS21で変更されたRiを、ゲストOS管理テーブル212のGOSiに対応付けられた「現在の割当量」の欄に登録する(ステップS23)。つまりゲストOSスケジューラ201は、GOSiに、ステップS18の実行時点のRrestの全てを(Riとして)割り当てる。またゲストOSスケジューラ201は、GOSiから要求されている「CPU絶対処理量」を当該GOSiに割り当てられなかったので、後で当該GOSiに警告を出すために、当該GOSiに対応付けられたゲストOS管理テーブル212の「MSGフラグ」の欄に1をセットする(ステップS20)。即ちゲストOSスケジューラ201は、GOSiに対応付けられているゲストOS管理テーブル212の「MSGフラグ」をセットする。
ゲストOSスケジューラ201は、上記ステップS23を実行すると、GOSiにCPU処理量を割り当てたことを記録するために、当該GOSiに対応付けられたゲストOS管理テーブル212の「ALLOCフラグ」の欄に1をセットする(ステップS24)。
ゲストOSスケジューラ201は、以上の処理を、Rrestが0になるか、或いは未処理の第1のタイプのゲストOSがなくなるまで繰り返す(ステップS13,S14)。そして、Rrestが0になるか(ステップS13)、或いは未処理の第1のタイプのゲストOSがなくなったなら(ステップS14)、ゲストOSスケジューラ201はステップS25に進む。このとき、未処理(CPU処理量が未割り当て)の第1のタイプのゲストOSが残っていれば、ゲストOSスケジューラ201はステップS25において、当該第1のタイプのゲストOSに対応付けられているゲストOS管理テーブル212のMSGフラグをセットする。
次にゲストOSスケジューラ201は、R0を含めた未割り当て時間Rtotal(=Rrest+R0)を算出する(ステップS26)。そしてゲストOSスケジューラ201は、未割り当て時間Rtotalを、未処理(CPU処理量が未割り当て)の全てのゲストOS(つまり未処理の第1のタイプのゲストOS及び未処理の第2のタイプのゲストOS)に均等に割り当て、その結果をゲストOS管理テーブル212の当該未処理のゲストOSに対応付けられた「現在の割当量」の欄に登録するる(ステップS27)。
このような図9A及び9Bのフローチャートに従うスケジューリング処理が、図8に示すゲストOS管理テーブル212の状態のときに行われた場合、当該ゲストOS管理テーブル212は図10のようになる。
図10のゲストOS管理テーブル212の例では、第1のタイプのゲストOS40-0(#0)〜40-2(#2)のうち、CPU絶対処理量優先度が高いゲストOS40-1(#1)及びOS40-2(#2)には、それぞれ当該ゲストOS40-1(#1)及びOS40-2(#2)が要求しているCPU絶対処理量20%及び15%を保証するCPU割当量40%及び30%が割り当てられている。
これに対して、ゲストOS40-1(#1)及びOS40-2(#2)よりもCPU絶対処理量優先度が低いゲストOS40-2(#2)には、当該ゲストOS40-2(#2)が要求しているCPU絶対処理量10%を保証するのに必要なCPU割当量20%ではなくて、それより少ない10%だけが割り当てられている。このため、ゲストOS40-2に対応付けてMSGフラグがセットされている。ディスパッチャ203は、このMSGフラグに基づき、ゲストOS40-2に対して警告メッセージを送る。
なお、本発明は、上記実施形態またはその変形例そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態またはその変形例に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態またはその変形例に示される全構成要素から幾つかの構成要素を削除してもよい。
1…仮想計算機システム、10…物理計算機、11…HW(ハードウェア)、20…VMM(仮想計算機マネージャ)、30-0〜30-3…VM(仮想マシン、仮想計算機)、40-0〜40-3…ゲストOS、110…CPU、111…CPU周波数変化通知部、112…CPU周波数設定部、201…ゲストOSスケジューラ、202,212…ゲストOS管理テーブル、203…ディスパッチャ、204…CPU周波数変化検出部、205…CPU周波数変更部。
Claims (5)
- CPUを含むハードウェアと、
温度を含む動作環境の変動に応じて前記CPUの動作周波数を変化させる動作周波数可変手段と、
前記ハードウェアを仮想化することによって複数の仮想計算機を構築し、当該複数の仮想計算機で複数のゲストOSを実行させるための管理を行う仮想計算機マネージャとを具備し、
前記仮想計算機マネージャは、
前記動作周波数の変化を検出するための動作周波数変化検出手段と、
前記複数のゲストOSに前記CPUを時分割で割り当てるためのスケジュールを管理するスケジューラであって、前記動作周波数変化検出手段によって前記動作周波数の変化が検出され、且つ当該動作周波数が予め定められた規定動作周波数から低下した場合、前記複数のゲストOSのうちの予め定められた特定ゲストOSが当該規定動作周波数での動作で必要とする前記CPUの処理能力であるCPU絶対処理量を維持するために、当該特定ゲストOSに前記CPUが割り当てられるべき時間が増えるように前記スケジュールを調整するスケジューラと、
前記スケジューラによって管理される前記スケジュールに従って前記複数のゲストOSに前記CPUを時分割で割り当てるディスパッチャと
を含むことを特徴とする仮想計算機システム。 - 前記仮想計算機マネージャは、前記特定ゲストOSにより発行される、当該特定ゲストOSへの前記CPU絶対処理量の割り当てのためのCPU絶対処理量設定要求を受け付けるインターフェイスを含み、
前記スケジューラは、前記インターフェイスで前記CPU絶対処理量設定要求が受け付けられた場合、当該要求の示すCPU絶対処理量を、前記特定ゲストOSが前記規定動作周波数での動作で必要とする前記CPUの処理能力であるとして管理する
ことを特徴とする請求項1記載の仮想計算機システム。 - 前記CPU絶対処理量設定要求は、前記CPU絶対処理量の割り当ての優先度を含み、
前記スケジューラは、前記動作周波数が前記規定動作周波数から低下し、且つ前記複数のゲストOSの中に前記CPU絶対処理量設定要求を発行した前記特定ゲストOSが複数含まれている場合、前記CPU絶対処理量設定要求の示す前記優先度に従って、前記複数の特定ゲストOSのうち優先度の高い特定ゲストOSから優先的に当該CPU絶対処理量を維持するために前記スケジュールを調整する
ことを特徴とする請求項2記載の仮想計算機システム。 - 前記スケジューラは、前記特定ゲストOSに前記CPUが割り当てられるべき時間が増えるように前記スケジュールを調整する際に、前記複数のゲストOSに前記CPUを割り当てる時間単位の大きさを小さくすることを特徴とする請求項1乃至3のいずれかに記載の仮想計算機システム。
- CPUを含むハードウェアと、温度を含む動作環境の変動に応じて前記CPUの動作周波数を変化させる動作周波数可変手段と、前記ハードウェアを仮想化することによって複数の仮想計算機を構築し、当該複数の仮想計算機で複数のゲストOSを実行させるための管理を行う仮想計算機マネージャとを具備する仮想計算機システムにおけるゲストOSスケジューリング方法であって、
前記動作周波数が予め定められた規定動作周波数から低下したことを前記仮想計算機マネージャが検出するステップと、
前記動作周波数が前記規定動作周波数から低下した場合、前記複数のゲストOSのうちの予め定められた特定ゲストOSが当該規定動作周波数での動作で必要とする前記CPUの処理能力であるCPU絶対処理量を維持するために、当該特定ゲストOSに前記CPUが割り当てられるべき時間が増えるように前記スケジュールを前記仮想計算機マネージャが調整するステップと
を具備することを特徴とするゲストOSスケジューリング方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007283721A JP2009110404A (ja) | 2007-10-31 | 2007-10-31 | 仮想計算機システム及び同システムにおけるゲストosスケジューリング方法 |
US12/261,901 US8291413B2 (en) | 2007-10-31 | 2008-10-30 | Virtual computer system managing schedule for allocating CPU to guest OSes and guest OS scheduling method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007283721A JP2009110404A (ja) | 2007-10-31 | 2007-10-31 | 仮想計算機システム及び同システムにおけるゲストosスケジューリング方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009110404A true JP2009110404A (ja) | 2009-05-21 |
Family
ID=40584586
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007283721A Pending JP2009110404A (ja) | 2007-10-31 | 2007-10-31 | 仮想計算機システム及び同システムにおけるゲストosスケジューリング方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8291413B2 (ja) |
JP (1) | JP2009110404A (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011186793A (ja) * | 2010-03-09 | 2011-09-22 | Hitachi Ltd | ハイパバイザ、計算機システム、及び、仮想プロセッサのスケジューリング方法 |
JP2012164032A (ja) * | 2011-02-03 | 2012-08-30 | Fujitsu Ltd | 計算機、制御方法及びプログラム |
JP2013012072A (ja) * | 2011-06-29 | 2013-01-17 | Fujitsu Ltd | 計算機システム、計算機システムの電力制御方法およびプログラム |
US8595746B2 (en) | 2009-11-09 | 2013-11-26 | Denso Corporation | Method and apparatus for scheduling tasks to control hardware devices |
US9588577B2 (en) | 2013-10-31 | 2017-03-07 | Samsung Electronics Co., Ltd. | Electronic systems including heterogeneous multi-core processors and methods of operating same |
US20200218676A1 (en) * | 2019-04-02 | 2020-07-09 | Intel Corporation | Adaptive processor resource utilization |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9542222B2 (en) * | 2008-11-14 | 2017-01-10 | Oracle International Corporation | Resource broker system for dynamically deploying and managing software services in a virtual environment based on resource usage and service level agreement |
US20100262722A1 (en) * | 2009-04-10 | 2010-10-14 | Christophe Vauthier | Dynamic Assignment of Graphics Processing Unit to a Virtual Machine |
US9015706B2 (en) * | 2010-07-08 | 2015-04-21 | Symantec Corporation | Techniques for interaction with a guest virtual machine |
JP5625710B2 (ja) * | 2010-10-05 | 2014-11-19 | 富士通セミコンダクター株式会社 | シミュレーション装置、方法、及びプログラム |
US8621473B2 (en) * | 2011-08-01 | 2013-12-31 | Honeywell International Inc. | Constrained rate monotonic analysis and scheduling |
US9207977B2 (en) | 2012-02-06 | 2015-12-08 | Honeywell International Inc. | Systems and methods for task grouping on multi-processors |
US9612868B2 (en) | 2012-10-31 | 2017-04-04 | Honeywell International Inc. | Systems and methods generating inter-group and intra-group execution schedules for instruction entity allocation and scheduling on multi-processors |
US9703587B2 (en) | 2014-04-24 | 2017-07-11 | International Business Machines Corporation | Administering virtual machines in a distributed computing environment |
US9864622B2 (en) | 2014-04-24 | 2018-01-09 | International Business Machines Corporation | Administering virtual machines in a distributed computing environment |
US9612857B2 (en) | 2014-04-24 | 2017-04-04 | International Business Machines Corporation | Administering virtual machines in a distributed computing environment |
US9612856B2 (en) | 2014-04-24 | 2017-04-04 | International Business Machines Corporation | Administering virtual machines in a distributed computing environment |
CN104360893A (zh) * | 2014-10-23 | 2015-02-18 | 西安未来国际信息股份有限公司 | 一种基于环境能耗的虚拟资源调度方法 |
JP6840099B2 (ja) * | 2018-02-19 | 2021-03-10 | 日本電信電話株式会社 | サービス提供システム、資源割り当て方法、及び資源割り当てプログラム |
CN110362398B (zh) | 2018-04-09 | 2023-09-12 | 阿里巴巴集团控股有限公司 | 虚拟机的调度方法和系统 |
JP7331374B2 (ja) * | 2019-02-15 | 2023-08-23 | 日本電信電話株式会社 | リソース管理装置およびリソース管理方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0926889A (ja) * | 1995-07-13 | 1997-01-28 | Hitachi Ltd | 仮想計算機システム |
JP2003177928A (ja) * | 2001-12-11 | 2003-06-27 | Hitachi Ltd | 可変タイムスライス時間のスケジューリング方法 |
JP2005115751A (ja) * | 2003-10-09 | 2005-04-28 | Hitachi Ltd | 計算機システム及び計算機システムの障害兆候の検知方法 |
JP2007058331A (ja) * | 2005-08-22 | 2007-03-08 | Canon Inc | プロセッサシステム及びマルチスレッドプロセッサ |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7415708B2 (en) * | 2003-06-26 | 2008-08-19 | Intel Corporation | Virtual machine management using processor state information |
JP2007066265A (ja) | 2005-09-02 | 2007-03-15 | Hitachi Ltd | 計算機装置及び仮想マシン提供方法 |
JP4358224B2 (ja) | 2006-12-27 | 2009-11-04 | 株式会社東芝 | ゲストosスケジューリング方法及び仮想計算機モニタ |
-
2007
- 2007-10-31 JP JP2007283721A patent/JP2009110404A/ja active Pending
-
2008
- 2008-10-30 US US12/261,901 patent/US8291413B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0926889A (ja) * | 1995-07-13 | 1997-01-28 | Hitachi Ltd | 仮想計算機システム |
JP2003177928A (ja) * | 2001-12-11 | 2003-06-27 | Hitachi Ltd | 可変タイムスライス時間のスケジューリング方法 |
JP2005115751A (ja) * | 2003-10-09 | 2005-04-28 | Hitachi Ltd | 計算機システム及び計算機システムの障害兆候の検知方法 |
JP2007058331A (ja) * | 2005-08-22 | 2007-03-08 | Canon Inc | プロセッサシステム及びマルチスレッドプロセッサ |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8595746B2 (en) | 2009-11-09 | 2013-11-26 | Denso Corporation | Method and apparatus for scheduling tasks to control hardware devices |
JP2011186793A (ja) * | 2010-03-09 | 2011-09-22 | Hitachi Ltd | ハイパバイザ、計算機システム、及び、仮想プロセッサのスケジューリング方法 |
US8695007B2 (en) | 2010-03-09 | 2014-04-08 | Hitachi, Ltd. | Computer system and method of scheduling a virtual processor to run on physical processors based on the number of possessing cycles of each virtual computer |
JP2012164032A (ja) * | 2011-02-03 | 2012-08-30 | Fujitsu Ltd | 計算機、制御方法及びプログラム |
JP2013012072A (ja) * | 2011-06-29 | 2013-01-17 | Fujitsu Ltd | 計算機システム、計算機システムの電力制御方法およびプログラム |
US9588577B2 (en) | 2013-10-31 | 2017-03-07 | Samsung Electronics Co., Ltd. | Electronic systems including heterogeneous multi-core processors and methods of operating same |
US20200218676A1 (en) * | 2019-04-02 | 2020-07-09 | Intel Corporation | Adaptive processor resource utilization |
US11734204B2 (en) * | 2019-04-02 | 2023-08-22 | Intel Corporation | Adaptive processor resource utilization |
Also Published As
Publication number | Publication date |
---|---|
US20090113426A1 (en) | 2009-04-30 |
US8291413B2 (en) | 2012-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2009110404A (ja) | 仮想計算機システム及び同システムにおけるゲストosスケジューリング方法 | |
US11797327B2 (en) | Dynamic virtual machine sizing | |
US8438283B2 (en) | Method and apparatus of dynamically allocating resources across multiple virtual machines | |
EP1269313B1 (en) | Real-time scheduling of virtual machines | |
US9836418B2 (en) | System and method for deterministic time partitioning of asynchronous tasks in a computing environment | |
US9183016B2 (en) | Adaptive task scheduling of Hadoop in a virtualized environment | |
US9063783B2 (en) | Coordinating parallel execution of processes using agents | |
US20150309828A1 (en) | Hypervisor manager for virtual machine management | |
JP5458998B2 (ja) | 仮想マシンシステムおよび仮想マシン管理方法 | |
JP4705051B2 (ja) | 計算機システム | |
JP2005509976A (ja) | 予算剰余をタスクに割り当てるための方法及びシステム | |
KR20050030871A (ko) | 실시간 동작 수행방법 및 시스템 | |
US20080229319A1 (en) | Global Resource Allocation Control | |
JP2008171293A (ja) | 仮想計算機システムのスケジューリング方法 | |
Suo et al. | Preserving i/o prioritization in virtualized oses | |
JP4862056B2 (ja) | 仮想計算機管理機構及び仮想計算機システムにおけるcpu時間割り当て制御方法 | |
Jang et al. | An efficient virtual CPU scheduling in cloud computing | |
JP4409568B2 (ja) | 帯域制御プログラム及びマルチプロセッサシステム | |
KR20120071979A (ko) | 클라우드 컴퓨팅 시스템의 자원관리장치 및 방법 | |
US20240126601A1 (en) | Method to dynamically regulate volatile and non-volatile memory pools on persistent memory across cloud | |
US20220318061A1 (en) | Dynamic process criticality scoring | |
WO2014020752A1 (ja) | サーバ計算機及びサーバ計算方法 | |
JP2003186686A (ja) | リソース制御装置、方法及び記憶媒体 | |
Rooney et al. | Intelligent resource director | |
CN117472570A (zh) | 用于调度加速器资源的方法、装置、电子设备和介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20090916 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090929 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20091130 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20100713 |