JP2011186793A - ハイパバイザ、計算機システム、及び、仮想プロセッサのスケジューリング方法 - Google Patents

ハイパバイザ、計算機システム、及び、仮想プロセッサのスケジューリング方法 Download PDF

Info

Publication number
JP2011186793A
JP2011186793A JP2010051575A JP2010051575A JP2011186793A JP 2011186793 A JP2011186793 A JP 2011186793A JP 2010051575 A JP2010051575 A JP 2010051575A JP 2010051575 A JP2010051575 A JP 2010051575A JP 2011186793 A JP2011186793 A JP 2011186793A
Authority
JP
Japan
Prior art keywords
processor
virtual
time
cycles
physical
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
JP2010051575A
Other languages
English (en)
Other versions
JP5388909B2 (ja
Inventor
Shintaro Wada
慎太郎 和田
Shuhei Matsumoto
周平 松本
Hiroisa Inoue
裕功 井上
Kenichiro Yamato
賢一郎 大和
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2010051575A priority Critical patent/JP5388909B2/ja
Priority to US13/041,012 priority patent/US8695007B2/en
Publication of JP2011186793A publication Critical patent/JP2011186793A/ja
Application granted granted Critical
Publication of JP5388909B2 publication Critical patent/JP5388909B2/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/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/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/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/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4893Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

【課題】複数の仮想プロセッサの走行比率をなるべく複数の仮想計算機のサービス率の比の通りにする。
【解決手段】ハイパバイザが、第1の時間長毎に、各物理プロセッサの動作周波数の和と第1の時間長とを基に、第1の時間長における全プロセッササイクル数(1以上の物理プロセッサのプロセッササイクル数)を算出する。ハイパバイザは、各仮想計算機について、複数の仮想計算機のサービス率の比に従って全プロセッササイクル数が配分された値である持ちサイクル数を算出する。ハイパバイザは、仮想プロセッサのスケジューリングにおいて、各仮想計算機の持ちサイクル数を基に、仮想計算機内の仮想プロセッサをいずれかの物理プロセッサで走行させる。
【選択図】図1

Description

本発明は、計算機の仮想化に関し、特に、仮想プロセッサのスケジューリングに関する。
計算機の仮想化が知られている。計算機の仮想化では、一般に、1以上の物理プロセッサが複数の仮想計算機に時分割共有される。具体的には、複数の仮想計算機が複数の仮想プロセッサを有し、それら複数の仮想プロセッサがそれぞれ物理プロセッサで走行する。
計算機の仮想化では、複数の仮想プロセッサの走行比率が複数の仮想計算機のサービス率の比の通りであることが望ましい。また、計算機システム(例えばサーバ装置)の処理性能の低下を抑えつつ計算機システムの消費電力を抑制することが望ましい。
特許文献1には、仮想プロセッサの物理プロセッサへの割り当てのスケジューリングに関する技術が開示されている。特許文献1によれば、計算機システムにおいて物理プロセッサの動作周波数が低下した際、所定のゲストオペレーティングシステム(ゲストOS)に、プロセッサ時間がより多く割り当てられる。
特許文献2には、計算機システムの消費電力を削減するために、仮想プロセッサが割り当てられていないスリープ状態の物理プロセッサを増やす方法が開示されている。物理プロセッサへの仮想プロセッサの追加及び切離しの基準には、仮想プロセッサの稼働率が使われている。また、各仮想プロセッサには割り当て率が設定可能である。物理プロセッサへ割り当てられた仮想プロセッサの割り当て率の和に基づき、物理プロセッサの動作周波数が決定される。
特開2009−110404号公報 特開2009−140157号公報
一般に、計算機システムにおいて、物理プロセッサの動作周波数が異なっているケースがある。例えば、計算機システムが複数の物理プロセッサを有し、それら複数の物理プロセッサの動作周波数が異なっているケースがある。また、例えば、計算機システムが有する物理プロセッサの数が1つであっても、その物理プロセッサが、動作周波数を調整可能な物理プロセッサであれば、第1の時点での動作周波数が第2の時点での動作周波数と異なっていることがある。
物理プロセッサが一定時間内に実行可能な命令の数は、その時間内に与えられるプロセッササイクル数に比例し、単位時間当たりのプロセッササイクル数は、動作周波数によって決まる。
従って、特許文献1のようにプロセッサ時間を基にスケジューリングが行われると、複数の仮想計算機の仮想プロセッサがサービス率の比の通りに走行されないことがある。
特許文献2には、計算機システムの消費電力を削減するための技術が開示されているが、仮想プロセッサのスケジューリングに関する上記の問題を解決する方法は開示されていない。
そこで、本発明の目的は、複数の仮想プロセッサの走行比率をなるべく複数の仮想計算機のサービス率の比の通りにすることにある。
ハイパバイザが、第1の時間長(例えば、後述のスケジューリング初期化周期T)毎に、各物理プロセッサの動作周波数の和と第1の時間長とを基に、第1の時間長における全プロセッササイクル数(1以上の物理プロセッサのプロセッササイクル数)を算出する。ハイパバイザは、各仮想計算機について、複数の仮想計算機のサービス率の比に従って全プロセッササイクル数が配分された値である持ちサイクル数を算出する。ハイパバイザは、仮想プロセッサのスケジューリングにおいて、各仮想計算機の持ちサイクル数を基に、仮想計算機内の仮想プロセッサをいずれかの物理プロセッサで走行させる。
1以上の物理プロセッサの全プロセッサ時間を基に行う従来のスケジューリングよりも、複数の仮想プロセッサの走行比率を複数の仮想計算機のサービス率の比に近づけることができる。
本発明の一実施例に係る計算機システムを示す構成図である。 物理プロセッサ#0の業務量及び処理量を示す。 グローバルテーブル201の構成を示す。 仮想計算機テーブル310の構成を示す。 従来のスケジューリングに従うタイムスライスに関する概念図である。 本発明の一実施例に係るスケジューリングに従うタイムスライスに関する概念図である。 従来のスケジューリングの結果と本発明の一実施例に係るスケジューリングの結果との違いを示す。 全体処理のフローチャートである。 スケジューリング初期化処理のフローチャートである。 持ちサイクル数の算出処理のフローチャートである。 タイムスライス時間長の設定のフローチャートである。 スケジューリング処理と初期化条件判定処理とを含んだ処理のフローチャートである。 優先度比較から仮想プロセス走行までの処理のフローチャートである。 仮想計算機#iの仮想プロセッサの走行停止から使用サイクル数及びサービスアウト回数の更新までの処理のフローチャートである。 外部要因による周波数変更の有無の判定、及び、周波数変更検出時の処理のフローチャートである。 各仮想計算機のスケジュール優先度を時系列に示す表である。 各仮想計算機の走行先物理プロセッサを時系列に示す表である。 各仮想計算機へ時刻ごとのプロセッササイクル数配分を示すグラフである。 時間利用率算出処理のフローチャートである。 周波数調整処理のフローチャートである。 絶対業務量の増大に伴い、動作周波数を上昇させる際の動きの一例を示す。 絶対業務量の減少に伴い、動作周波数を下降させる際の動きの一例を示す。
以下、図面を参照して、本発明の一実施例を説明する。
なお、以下の説明では、「xxxテーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「xxxテーブル」を「xxx情報」と呼ぶことができる。
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサによって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)を用いながら行うことができる。このため、処理の主語が、プロセッサとされてもよい。プロセッサは、プロセッサが行う処理の一部又は全部を行うハードウェア回路を含んでも良い。コンピュータプログラムは、プログラムソースから各計算機にインストールされても良い。プログラムソースは、例えば、プログラム配布サーバ又は記憶メディアであっても良い。
また、以下の説明では、同種の複数の要素には、同一の参照番号と、異なる通し番号が割り振られている。同種の複数の要素を区別して説明する場合には、通し番号を用いて説明し、同種の複数の要素を区別しないで説明する場合には、参照番号を用いて説明する。
図1は、本発明の一実施例に係る計算機システムを示す構成図である。
計算機システムは、一以上の物理計算機で構成されており、例えば、サーバ装置である。計算機システムは、物理資源001を有し、物理資源001上で、ハイパバイザ100及び複数の仮想計算機300が実行される。本実施例では、3つの仮想計算機#1〜#3があるが、仮想計算機300の数は、3に限定されない。
物理資源001は、1以上の物理プロセッサ(物理的なプロセッサ)002と、1以上のタイマ005と、外部割込み機構006と、システム時刻007と、物理記憶資源(例えば、1以上の物理的なメモリ)008とを有する。1つの物理プロセッサ002につき1つのタイマ005がある。本実施例では、2つの物理プロセッサ#0及び#1と、2つのタイマ#0及び#1があるが、いずれも、その数は2に限定されない。
物理プロセッサ002は、オペレーティングシステム(例えば汎用的なオペレーティングシステム)が動作可能なプロセッサである。物理プロセッサ002は、周波数制御機能003と、周波数設定レジスタ004とを有する。周波数制御機能003は、物理プロセッサ002の動作周波数を変更する機能である。具体的には、その機能003(例えば#0)は、物理プロセッサ002(例えば#0)の動作周波数を、周波数設定レジスタ004(例えば#0)に設定された値に対応した動作周波数に変更することができる。物理プロセッサ002の動作周波数に応じて、その物理プロセッサ002へ供給される電圧も調整される。物理プロセッサ002の動作周波数が低ければ、その物理プロセッサ002の消費電力を抑制することができる。
外部割り込み機構006は、物理プロセッサ002に非同期でイベント発生を通知する機能を有する。外部割り込み機構006は、例えば、タイマ005の期限が来たことの物理プロセッサ002への通知、及び、或る物理プロセッサ002から別の物理プロセッサ002へのプロセッサ間割り込みなどで使用される。機構006の用途は、これらのうちの少なくとも1つに代えて又は加えて、他の用途に用いられても良い。
システム時刻007は、ハイパバイザ100が現在時刻と経過時間を参照する為に使用する、全ての物理プロセッサ002での共通時刻(システム時刻)を示すデバイスである。システム時刻007の実現方式は限定されなくて良い。
タイマ005は、外部割り込みを発生させる機能を有する。その機能は、指定した時刻もしくは指定した周期に、外部割り込み機構006を介して物理プロセッサ002に外部割り込みを発生させる。タイマ#0及び#1は、ハイパバイザ100がタイムスライスによって物理プロセッサ#0及び#1を時分割共有するために使用する。
ハイパバイザ100は、物理資源001を制御して、複数の仮想計算機300を構築する。各仮想計算機300は、例えば、レディキュー302及び仮想プロセッサ303を有する。仮想計算機300の生成(起動)の操作を行うことにより、稼働中の仮想計算機300の数を増やすことが可能である。仮想計算機の停止(削除)の操作により、仮想計算機300の数を減らすことも可能である。
仮想プロセッサ303は、1以上の物理プロセッサ002に基づく仮想的なプロセッサである。図1によれば、各仮想計算機300が有する仮想プロセッサ303の数は1であるが、仮想計算機300は、1より多くの仮想プロセッサ303を有して良い。レディキュー302は仮想プロセッサ303を複数個格納可能な先入れ先出しのデータ構造である。レディキュー302からの仮想プロセッサ303の取り出し操作は、レディキュー302の先頭から行われ、レディキュー302への仮想プロセッサ303の挿入操作はレディキューの末尾に対して行う。
仮想計算機300では、仮想プロセッサ303によって、汎用オペレーティングシステム(ゲストOS)301が実行される。ゲストOS301上で、アプリケーションプログラム等の他のプログラムが実行されて良い。仮想計算機300において、仮想プロセッサ303の数が動的に変更されても良い。
ハイパバイザ100によって、物理プロセッサ#0及び#1が仮想プロセッサ#0〜#2に時分割共有される。仮想プロセッサ303が物理プロセッサ#0及び/又は#1に割り当てられることにより、その仮想プロセッサ303でプログラム(例えばゲストOS301)が実行される。
ハイパバイザ100は、仮想プロセッサ303の1以上の物理プロセッサ002への割り当てとして、その仮想プロセッサ303に、「タイムスライス」と呼ばれるプロセッサ時間を与える。
本実施例では、仮想プロセッサのスケジューリングにおいて、物理プロセッサ002のプロセッサ時間に加え、物理プロセッサ002の「業務量」及び「処理量」が利用される。以下、物理プロセッサ#0を例に採って、業務量及び処理量を説明する。
図2は、物理プロセッサ#0の業務量及び処理量を示す。
業務量600は、任意の時刻又は期間における業務の量が単位時間(例えば1秒)当たりのプロセッササイクル数で表わされる。業務は、物理プロセッサ#0が何らかの処理(例えば、ゲストOS301、或いは、ゲストOS301上で動作するアプリケーションの実行)を行うことに伴い発生する。
利用可能実行資源量601がある。この量601は、任意の時刻又は期間において利用可能な単位時間当たりのプロセッササイクル数である。各時点での資源量601は、その時点での、物理プロセッサ#0の動作周波数に依存する。
最大利用可能実行資源量602がある。この量602は、物理プロセッサ#0において利用可能な時間当たりのプロセッササイクル数の最大値であるとする。この量602は、物理プロセッサ#0を最高動作周波数で稼働させた時の利用可能実行資源量601に等しい。
処理量603は、或る時点において、その時点での業務量603(単位時間当たりのプロセッササイクル数)のうち、実際に物理プロセッサ#0で使われる単位時間当たりのプロセッササイクル数である。各時点において、業務量600が利用可能実行資源量601を超えないのであれば、その時点において、物理プロセッサ#0の業務量600と処理量603は等しくなる。各時点において、処理量603のとりうる上限値は、その時点での利用可能実行資源量601である。
再び図1を参照する。
ハイパバイザ100は、構築機能108、スケジューリング機能101、周波数変更機能105及び負荷監視機能106を有し、制御データ200を管理する。制御データ200は、例えば物理記憶資源008に格納される。
構築機能108は、1以上の仮想プロセッサ303を有する複数の仮想計算機300を構築する。
スケジューリング機能101は、サービス率制御102、初期化機能103及び周波数変化検出機能104を含む。スケジューリング機能101は、サービス率制御102を含んでいるため、例えばユーザの指定する仮想計算機及びそのサービス率により、各仮想計算機300へ割り当てられる利用可能実行資源量601の大きさをプロセッササイクル数単位で決めることができる。スケジューリング機能101は、各仮想計算機300へ与えられるタイムスライスの配分を制御することにより、物理プロセッサ002のプロセッササイクル数をサービス率の比の通りに分配する。詳細は後述する。
ゲストOS301は、与えられたタイムスライスを使い切る前に、ゲストOS301を実行する仮想プロセッサ303の休止状態への切り替え要求を発行して、その仮想プロセッサ303を休止させることがある。この要因には、仮想プロセッサ303がアイドルの場合などがある。
仮想プロセッサ303がアイドルであるため、休止状態に入る際には、その仮想プロセッサ303の物理プロセッサ002への割当てが直ちに解除される。その仮想プロセッサ303の休止が解除されるまで、その仮想プロセッサ303の分、他の仮想プロセッサ303がより多く1以上の物理プロセッサ002に割り当てられて良い。これにより、1以上の物理プロセッサ002を効率よく使用させることができる。
ハイパバイザ100は、物理プロセッサ002にアイドルプロセス020を対応付ける。本実施例では、アイドルプロセス#0及び#1がある。アイドルプロセス#0が、物理プロセッサ#0に対応し、アイドルプロセス#1が、物理プロセッサ#1に対応する。ハイパバイザ100は、物理プロセッサ002に割り当てる仮想プロセッサ303が見つからなかった場合、仮想プロセッサ303が見つかるまで、その物理プロセッサ002に対応するアイドルプロセス020をその物理プロセッサ002に実行させる。
このように、物理プロセッサ002のプロセッサ時間は、仮想プロセッサ303が走行している場合とアイドルプロセス020が実行されている場合に分けられる。各物理プロセッサ002について、一定時間のうち、仮想プロセッサ303の走行時間の占める比率を求めれば、各物理プロセッサ002の時間利用率が求められる。周期的に物理プロセッサ時間利用率を採取した場合、物理プロセッサ002の動作周波数が一定であれば、物理プロセッサ時間利用率の増減を調べることにより、物理プロセッサ002の処理量603の変化を特定することができる。
本実施例では、前述したように、3つの仮想計算機300が存在し、各仮想計算機300が、1つの仮想プロセッサ303を有する。2つの物理プロセッサ002があり、それらが、複数の仮想計算機300に時分割共有される。以下の説明では、適宜、アルファベットの記号や、数式を用いる。以降に示す式やアルファベットにおいて、iは、仮想計算機番号(通し番号)を、jは物理プロセッサ番号(通し番号)を表す。仮想計算機番号iは1から始まる整数であり、物理プロセッサ番号jは0から始まる整数である。具体的には、本実施例では、iに代入可能な値は、1、2及び3のいずれかであり、jに代入可能な値は、0又は1である。
制御データ200は、機能101、105、106及び108で利用される各種の指標やパラメータを含む。制御データ200は、計算機システムの構成(例えば、物理プロセッサ002の数、仮想計算機300の数、及び、仮想プロセッサ303の数)を基に、ハイパバイザ100により生成及び更新される。制御データ200は、グローバルテーブル201及び仮想計算機テーブル310を含む。テーブル310は、仮想計算機300毎にある。本実施例では、仮想計算機300の数は3のため、テーブル310の数も3である。
図3は、グローバルテーブル201の構成を示す。
グローバルテーブル201は、複数の物理プロセッサ002に共通であり、例えば、下記の情報を有する。
*物理プロセッサの数Nを表す情報202、
*スケジューリングの初期化周期Tを表す情報203、
*周波数調整処理の周期である調整周期Tを表す情報204、
*スケジューリングの初期化を行った最近の時刻であるラスト初期化時刻LastSを表す情報205、
*周波数調整処理を行った最近の時刻であるラスト調整時刻LastFを表す情報206、
*サイクル数単位のタイムスライスSを表す情報207、
*持ちサイクル数の和を表す情報208、
*第1しきい値Yを表す情報221、
*第2しきい値Yを表す情報222、
*対応する物理プロセッサ002に関する情報を含んだテーブルである物理プロセッサテーブル210。
物理プロセッサテーブル210は、物理プロセッサ002毎にある。本実施例では、物理プロセッサ002の数は2のため、テーブル210の数も2である。物理プロセッサテーブルj210は、例えば、下記の情報を有する。
*物理プロセッサ#jに設定される動作周波数fを表す情報211、
*物理プロセッサ#jから提供されるタイムスライスの時間長tを表す情報212、
*物理プロセッサ#jでアイドルプロセス#jが走行される開始時刻Iを表す情報213、
*物理プロセッサ#jの時間利用率αを表す情報214、
*物理プロセッサ#jで仮想プロセッサ303が走行した時間の合計を表す情報215、
*外部要因により周波数が変更されるか否かを表す変更フラグ216、
*物理プロセッサ#jの動作周波数の変更が検出された時刻を表す情報217。
図4は、仮想計算機テーブル310の構成を示す。
仮想計算機テーブルi310は、仮想計算機#iに関する情報、例えば、下記の情報を有する。
*仮想計算機#iがレディ状態か否かを表すビットであるレディ状態ビット311、
*仮想計算機#iのサービス率Wを表す情報312、
*仮想計算機#iの持ちプロセッササイクル数Qを表す情報313、
*仮想計算機#iが使用するプロセッササイクル数Uを表す情報314、
*仮想計算機#iのスケジュール優先度Pを表す情報315、
*仮想計算機#iのサービスアウト回数Oを表す情報316、
*レディキュー#iへのポインタ317、
*対応する仮想プロセッサに関する情報を含んだ仮想プロセッサテーブル318。
レディ状態ビット311は、ON(1)であれば、仮想計算機#iがレディ状態であることを意味し、OFF(0)であれば、仮想計算機#iがレディ状態では無いことを意味する。
仮想プロセッサテーブル318は、仮想計算機#iが有する仮想プロセッサ303毎にある。本実施例では、1つの仮想計算機#iが有する仮想プロセッサ303の数は1のため、テーブル318の数も1である。仮想プロセッサテーブル318は、例えば、下記の情報を有する。
*仮想プロセッサの走行が開始された時刻を表す情報319、
*前回タイムスライス残り時間を表す情報320。
再び図1を参照する。
負荷監視機能106は、一定の周期T毎に、各物理プロセッサ002について、次の処理を行う。すなわち、機能106は、物理プロセッサ#jの時間利用率αを採取し、物理プロセッサテーブル#jに、採取した時間利用率αを表す情報を保存する。
周波数変更機能105は、各物理プロセッサ002について、次の処理を行う。すなわち、機能105は、負荷監視機能106により採取された物理プロセッサ時間利用率αを基に、物理プロセッサ#jの動作周波数を上げる、下げる、あるいは変更しない、のいずれかの処理を選択し、実行する。
周波数変化検出機能105は、物理プロセッサ#jの動作周波数が外部要因により変更されたことを検出し、物理プロセッサテーブル#j内のフラグ216をON(1)にすることができる。それが検出された場合、機能105は、スケジューリングを初期化させ、サービス率制御の正確性を維持させることもできる。このための方法としては、例えば、電力パワーキャッピングに利用される特定の割り込み信号検出を契機に、各物理プロセッサ#j上で動作周波数を取得する関数を呼び出し、その動作周波数と、物理プロセッサテーブル#j上の設定動作周波数fと比較する方法がある。しかし、方法は、それに限らず、他の方法が採用されて良い。
さて、既に述べたように、一般に、計算機システムにおいて、物理プロセッサの動作周波数が異なっているケースがある。例えば、計算機システムが複数の物理プロセッサを有し、それら複数の物理プロセッサの動作周波数が異なっているケースがある。また、例えば、計算機システムが有する物理プロセッサの数が1つであっても、その物理プロセッサが、動作周波数を調整可能な物理プロセッサであれば、第1の時点での動作周波数が第2の時点での動作周波数と異なっていることがある。
物理プロセッサが一定時間内に実行可能な命令の数は、その時間内に与えられるプロセッササイクル数に比例し、単位時間当たりのプロセッササイクル数は、動作周波数によって決まる。そのため、動作周波数が異なれば、単位時間当たりに実行可能な命令の数も異なる。
ここで、仮想計算機のサービス率の比は、#1:#2:#3=5:3:2、であるとする。
従来のスケジューリングによれば、プロセッサ時間が、物理プロセッサの実行資源量を表す唯一の量として利用される。
複数の物理プロセッサの動作周波数が等しければ、図7の左側の積上げ棒グラフ701が示すように、従来のスケジューリングでも、物理プロセッサの実行資源は、仮想計算機のサービス率の比の通りに配分される。
しかし、物理プロセッサの動作周波数が異なっていれば、従来のスケジューリングでは、物理プロセッサの実行資源は、仮想計算機のサービス率の比の通りに配分されない。具体的には、任意の物理プロセッサ上で、一定の長さの物理プロセッサ時間のタイムスライスが取得された場合、タイムスライスによって、実行可能な命令の数が一定で無い可能性がある。すなわち、図5に示すように、物理プロセッサによって動作周波数が異なっている場合に、同一時間長のタイムスライスが与えられると、走行する物理プロセッサによって、利用可能なプロセッササイクル数が異なってしまう。このため、図7の中央の積上げ棒グラフ703が示すように、仮想計算機#1〜#3の実行可能な命令数の比が、サービス率の比と異なってしまうことがある。このため、サービス率制御の正確性が損なわれてしまう。
そこで、本実施例では、スケジューリング機能101が、プロセッサ時間に代わり、プロセッササイクル数を算出し、プロセッササイクル数を基に複数の仮想計算機へ実行資源を配分する。このため、持ち時間は持ちサイクル数に置き換わる。プロセッササイクル数は、物理プロセッサ上で実行可能な命令数と比例関係にある。
また、図5に示すように、従来のスケジューリングで与えられるタイムスライスは、どの物理プロセッサについても、一定の時間長であるが、本実施例で与えられるタイムスライスは、図6に示すように、どの物理プロセッサ上においても一定のプロセッササイクル数である。どの物理プロセッサ上においても1タイムスライスあたりのプロセッササイクル数を一定にするために、物理プロセッサの動作周波数に応じ、タイムスライスの時間長が調節される。図6に示す例では、プロセッササイクル数で与えられたタイムスライスSは、S=1.6X10サイクルに設定されている。このため、3.2GHz動作の物理プロセッサ#0と、1.6GHz動作の物理プロセッサ#1のいずれのタイムスライスで走行しても同じプロセッササイクル数が利用されるよう、タイムスライスの時間長はそれぞれ5ms(ミリ秒)、10msに調節される。
このように、本実施例に係るスケジューリングは、プロセッササイクル数を配分するスケジューリングである。このため、すべてのタイムスライス上での実行可能な命令数が一定になり、図7の右側の積上げ棒グラフ705が示すように、動作周波数を調節可能な物理プロセッサが利用されている場合でも、仮想計算機の実行可能な命令数の比は、仮想計算機のサービス率の比の通りに維持される。
また、本実施例によれば、それぞれの物理プロセッサの時間利用率が定期的にチェックされ、物理プロセッサの処理量が低い時間帯においては、その物理プロセッサの動作周波数が低下させられる。これにより、計算機システムの消費電力の抑制を図ることができる。なお、プロセッササイクル数ベースのスケジューリングと両立される本機能については、後に説明する。
図8は、本実施例に係る計算機システムで行われる全体処理のフローチャートである。全体処理の呼び出し条件は、例えば、計算機システムが立ち上がっており、ひとつでも起動中の仮想計算機が存在すること、である。
ステップS1では、初期化機能103が、スケジューリング初期化処理を行う。
ステップS2では、スケジューリング機能101が、各物理プロセッサ002についてのスケジューリング処理を行い、且つ、負荷監視機能106が、各物理プロセッサ002についての負荷監視を行う。負荷監視機能106によって、各物理プロセッサ002について、物理プロセッサ#jおける、仮想プロセッサの走行時間の和、が集計され、その和を表す情報215が、物理プロセッサテーブル#jに登録される。
ステップS3では、ステップS2の結果がいずれかのスケジューリング初期化条件に該当するか否かが判定される。その判定の結果が肯定的であれば(S3:YES)、ステップS4が行われ、その判定の結果が否定的であれば(S3:NO)、ステップS2が行われる。
ステップS4では、起動中の仮想計算機300の数が0か否かが判定される。全体処理の起動条件は、ひとつでも起動中の仮想計算機300が存在することなので、起動中の仮想計算機300がなくなった場合(S4:YES)、全体処理は終了する。ひとつでも仮想計算機300が起動したならば、全体処理が再開する。起動中の仮想計算機300の数が1以上であれば(S4:NO)、ステップS5が行われる。
ステップS5では、ステップS2の結果が、周波数調整処理を行う条件に適合しているか否かが判定される。この判定の結果が肯定的であれば(S5:YES)、ステップS6が行われる。逆に、この判定の結果が否定的であれば(S5:NO)、ステップS1が行われる。具体的には、例えば、ラスト調整時刻LastFから調整周期Tが経過していることがシステム時刻を基に検出された場合、S5の判定結果は肯定的である。
ステップS6では、時間利用率算出処理が行われる。ここでは、時間利用率αが算出される。
ステップS7では、周波数変更機能105が、周波数調整処理を行う。周波数調整処理では、ステップS6で算出された時間利用率αが利用される。
初期化機能103は、ステップS2のスケジューリング処理が始まる前に必ず実行される。また、初期化機能103は、例えば、以下の(1)〜(4)のうちのいずれかを契機に呼び出される。
(1)初期化機能103が最近呼び出されてから初期化周期Tが経過した場合、
(2)仮想計算機300のサービス率の比が変更された場合(例えば、ユーザによって、いずれかの仮想計算機のサービス率が変更された場合)、
(3)仮想計算機の生成又は削除が行われた場合、
(4)いずれかの物理プロセッサの動作周波数が外部要因により変更されたことが検出された場合。
以上が、全体処理の概要である。以下、全体処理の各ステップを詳細に説明する。
<初期化処理(図8のステップS1)>。
図9は、スケジューリング初期化処理のフローチャートである。
ステップS11では、初期化機能103は、各仮想計算機300の持ちサイクル数を算出する。
ステップS12では、初期化機能103は、制御データ200内の諸パラメータをゼロにリセットする。
ステップS13では、初期化機能103は、物理プロセッサ002毎にタイムスライス時間長の設定を行う。
以下、各ステップについて、詳細に説明する。
<<仮想計算機の持ちサイクル数の算出(図9のステップS11)>>。
この初期化処理において、ステップS11、すなわち、各仮想計算機300の持ちサイクル数の算出は、例えば以下のように行われる。
を、仮想計算機#iのサービス率とし、fを、物理プロセッサ#jの動作周波数とする。全仮想計算機300のサービス率の和Wは、下記数1の通りである。また、全物理プロセッサ002の動作周波数の和Fは、下記数2の通りである。
Figure 2011186793
Figure 2011186793
ここで、全物理プロセッサ002の動作周波数の和Fとスケジューラの初期化周期Tの積(F×T)を求めると、計算機システムで利用可能な全実行資源量(=K)がサイクル数単位で求められる。つまり、全プロセッササイクル数Kが算出される。仮想計算機#iの持てる実行資源量は、K×W/Wに等しい。従って、仮想計算機#iの持てる実行資源量である持ちサイクル数(仮想計算機#iが持てるプロセッササイクル数)Qは、下記数3の通りとなる。
Figure 2011186793
図10は、持ちサイクル数の算出処理のフローチャートである。
ステップS111では、初期化機能103は、各物理プロセッサ002について、物理プロセッサテーブル#jから、物理プロセッサ#jの設定動作周波数fを特定する。
ステップS112では、初期化機能103は、ステップS111で特定した全てのfの和(F(数2参照))を算出する。
ステップS113では、初期化機能103は、プロセッササイクル数の総和(T×F)を算出する。すなわち、設定動作周波数の和Fとスケジューリングの初期化周期Tとの積が算出される。
ステップS114では、初期化機能103は、各仮想計算機300について、仮想計算機テーブル#iから、仮想計算機#iのサービス率Wを特定する。
ステップS115では、初期化機能103は、ステップS114で特定した全てのWの和(W(数1参照))を算出する。
ステップS116では、初期化機能103は、プロセッササイクル数の総和(T×F)、サービス率の和W、及び、各仮想計算機300についての仮想計算機#iのサービス率Wを使い、上記数3に従い、各仮想計算機300について、仮想計算機#iの持ちサイクル数Qを算出する。
<<諸パラメータのゼロリセット(図9のステップS12)>>。
諸パラメータのゼロリセットでは、初期化機能103が、スケジューリング機能101で使われるパラメータの値を0にリセットする。具体的には、初期化機能103は、仮想計算機#iの使用サイクル数(仮想計算機#iで使用されたプロセッササイクル数)U、サービスアウト回数O、及び、スケジュール優先度Pを、それぞれ0とする。
<<タイムスライス時間長の設定(図9のステップS13)>>。
タイマ割り込みが物理プロセッサ002へあがったことをプロセス走行停止の条件とするにより、物理プロセッサ時間の時分割共有が実現されている。物理プロセッサ#jに対応するタイマ#jが、タイマ割り込みをあげる時刻を変更することによって、タイムスライスの時間長が調節可能である。この処理が、タイムスライス時間長の設定である。
図11は、タイムスライス時間長の設定のフローチャートである。
本実施例では、タイムスライスSはプロセッササイクル数で表され、物理プロセッサの動作周波数に関わらず、各タイムスライスで利用できるプロセッササイクル数が一定になるように制御される。
ステップS131では、初期化機能103は、グローバルテーブル201から、タイムスライスSを特定する。タイマ#jへタイマ割り込み周期を設定する際は、時間単位tを使う必要がある。
ステップS132では、初期化機能103が、各物理プロセッサ002について、物理プロセッサ#jの動作周波数を物理プロセッサテーブル#jから特定する。
ステップS133では、初期化機能103は、下記数4に従って、物理プロセッサ#jのタイムスライス時間長tを算出する。すなわち、サイクル数単位のタイムスライスSが、物理プロセッサ#jの設定動作周波数fで除算される。
Figure 2011186793
ステップS134では、初期化機能103は、各物理プロセッサ002について、ステップS133で算出されたタイムスライス時間長tを、物理プロセッサ#jに対応する物理プロセッサテーブル#jに登録する。
<スケジューリング処理(図8のステップS2)、及び、初期化条件判定処理(図8のステップS3)>。
図12は、スケジューリング処理と初期化条件判定処理とを含んだ処理のフローチャートである。スケジューリング処理は、スケジューリング機能101により行われる。
スケジューリング処理は、4つの通常処理を有し、初期化条件判定処理は、4つの判定処理と、外部要因による周波数変更発生時の処理(ステップS35)とを含む。4つの通常処理とは、優先度比較(ステップS21)、仮想プロセッサ走行(ステップS22)、仮想プロセッサ停止(ステップS23)、及び、使用サイクル数とサービスアウト回数との更新(ステップS24)である。4つの判定処理とは、初期化周期Tの経過の判定(ステップS31)、サービス率設定変更有無の判定(ステップS32)、仮想計算機数変更の有無の判定(ステップS33)、及び、外部要因による周波数変更の有無の判定(ステップS34)である。
各物理プロセッサ002について、図12に示すスケジューリング処理が適用される。各物理プロセッサ002を時分割共有することにより、物理計算機002のプロセッササイクルが、複数の仮想計算機300へ、仮想計算機300のサービス率の比の通りに配分される。
優先度比較の基準として、仮想計算機#iのスケジュール優先度Pが定義され且つ利用される。仮想計算機#iが持ちサイクル数Qを使いきってしまった回数が、サービスアウト回数Oである。スケジュール優先度Pは、下記数5に従って算出される。すなわち、仮想計算機#iの使用サイクル数Uが、持ちサイクル数Qで除算され、且つ、サービスアウト回数Oが加算される。
Figure 2011186793
スケジュール優先度Pが小さい仮想計算機が優先的に選択され、その選択された仮想計算機内の仮想プロセッサが、優先的に物理プロセッサで走行させられる。また、優先度が等しい仮想計算機が存在する場合、仮想計算機番号の大きいもの、あるいは小さいもののいずれかが優先的に選択されるように決める。
<<優先度比較から仮想プロセッサ走行までの処理(図12のステップS21及びS22>>。
図13は、優先度比較から仮想プロセス走行までの処理のフローチャートである。この処理は、任意の物理プロセッサ002に対するスケジュール対象の仮想計算機300を選び、且つ、その仮想計算機300内の仮想プロセッサ303を走行させる際に呼び出される。
ステップS211からS213では、優先度比較において使われる変数の初期化が行われる。
すなわち、ステップS211では、スケジューリング機能101が、最小優先度を格納する変数MinPrioに、スケジュール優先度Pが取り得ない最大値を代入する。
ステップS212では、スケジューリング機能101が、スケジュール対象仮想計算機番号を格納する変数SchedLparへ−1を代入する。
ステップS213では、スケジューリング機能101が、優先度確認中の仮想計算機番号を格納する変数iに1を代入する。
ステップS214からS219は、各仮想計算機300について繰り返される。
ステップS214で、スケジューリング機能101は、仮想計算機テーブル310にあるレディ状態ビット311を確認する。ビット311がON(1)であれば(S214:YES)、ステップS215が行われ、ビット311がOFF(0)であれば(S214:NO)、ステップS219が行われる。
ステップS215では、スケジューリング機能101は、仮想計算機テーブル#iからスケジュール優先度Pを特定する。
ステップS216では、スケジューリング機能101は、変数MinPrioの値が優先度Pより大きいか否かを判定する。この判定の結果が肯定的であれば(S216:YES)、ステップS217が行われ、この判定の結果が否定的であれば(S216:NO)、ステップS219が行われる。
ステップS217では、スケジューリング機能101は、スケジュール優先度Pの値を変数MinPrioへ代入する。
ステップS218では、スケジューリング機能101は、変数iの値を変数SchedLparへ代入する。
ステップS219では、スケジューリング機能101は、変数iの値に1を加算する。
ステップS220では、スケジューリング機能101は、変数iの値が最大仮想計算機番号であるか否かを判定する。つまり、全ての仮想計算機についてステップ214が行われたか否かが判定される。この判定の結果が肯定的であれば、ステップS221が行われ、この判定の結果が否定的であれば、変数iの値と等しい仮想計算機番号の仮想計算機について、ステップS214が行われる。
ステップS221では、スケジューリング機能101は、変数SchedLparの値が−1であるか否かを判定する。ここまででスケジュール可能な仮想計算機が見つからない場合、変数SchedLparの値は−1のままであり(S221:YES)、ステップS226が行われる。そうでない場合には(S221:NO)、スケジュール可能な仮想計算機が見つかったことになり、ステップS222が行われる。
ステップS222では、スケジューリング機能101は、変数SchedLparの値に等しい番号の仮想計算機#iのレディキュー#iの先頭より仮想プロセッサを取り出す。
ステップS223では、スケジューリング機能101は、システム時刻を特定し、仮想プロセッサテーブル#iに、仮想プロセッサの走行開始時刻を表す情報319として、システム時刻を表す情報を登録する。
ステップS224では、スケジューリング機能101は、物理プロセッサ#jへタイマ割り込みをあげる時刻を設定する。仮想プロセッサの走行開始時刻からタイマ割り込みが物理プロセッサ#jにあげられる時刻までの時間長が、仮想プロセッサにとってのタイムスライス時間長になる。仮想プロセッサテーブル#iにおいて、情報320が表す前回タイムスライス残り時間が0ならば、仮想プロセッサの走行開始時刻(情報319が表す時刻)からタイムスライス時間長tが経過してからタイマ割り込みがあがるように設定される。もし、前回タイムスライス残り時間として0以外の値が設定されているのであれば、仮想プロセッサ走行開始時刻から前回タイムスライス残り時間が経過してからタイマ割り込みがあがるように設定される。
ステップS225では、スケジューリング機能101は、仮想プロセッサを物理プロセッサ#jへ走行開始する。
ステップS226では、スケジューリング機能101は、物理プロセッサ#jへタイマ割り込みをあげる時刻を設定する。アイドルプロセス走行開始時刻Iからタイマ割り込みが物理プロセッサ#jにあげられる時刻までが、アイドルプロセス#jにとってのタイムスライス時間長になる。
ステップS227では、スケジューリング機能101は、物理プロセッサ#jへアイドルプロセス#jを走行開始させる。
<<仮想プロセッサの走行停止より使用サイクル数及びサービスアウト回数の更新までの処理(図12のステップS23及びS24)>>。
仮想計算機#iが、或るタイムスライスxへスケジュールされ、走行が終了したとする。走行終了後には、使用サイクル数Uの値が更新される。スケジュール終了後、持ちサイクル数Qが残っている場合には、これまでの使用サイクル数Uに、停止した仮想プロセッサが直前に走行していた物理プロセッサの周波数fixとその仮想プロセッサが直前に連続走行した時間長である走行時間rixとの積が加算される。走行時間rixと周波数fixとの積が算出される理由は、これにより走行サイクル数が求められることにある。
更新後の使用サイクル数Unew_iは、下記数6に従い算出される。
Figure 2011186793
いずれかの仮想計算機がアイドルになり、仮想プロセッサが休止状態に入り、仮想プロセッサがスケジュールされてからタイムスライス分だけ走行する前に、その仮想プロセッサが走行した物理プロセッサを譲り渡すこともあり得る。そのため、ここでは、走行時間として、タイマ設定値(タイムスライス時間長)tではなく、別のアルファベット記号rixが用いられる。もし、仮想プロセッサがタイムスライス分だけ走行できずに物理プロセッサが譲り渡された場合、仮想プロセッサテーブル#iに、情報320(前回タイムスライス残り時間)として、タイムスライスの残り時間を表す情報が登録される。
仮想プロセッサが走行した結果、その仮想プロセッサを有する仮想計算機#iが持ちサイクル数Qを使い果たしてしまうことを、本実施例の説明において、サービスアウト発生と呼ばれる。サービスアウト発生とは、下記数7の条件があてはまることである。
Figure 2011186793
仮想計算機#iのサービスアウト発生が検出された場合、スケジューリング機能101が、サービスアウト回数Oに1を加算する。サービスアウト発生がある場合、使用サイクル数の更新処理は数6から下記数8のように変わる。
使用サイクル数Uに物理プロセッサの周波数fixと走行時間rixとの積が加算され、且つ、Qが引かれた値が、更新後の使用サイクル数になる。すなわち、サービスアウト発生がある場合、更新後の使用サイクル数は、下記数8の通りとなる。
Figure 2011186793
図14は、仮想計算機#iの仮想プロセッサの走行停止から使用サイクル数及びサービスアウト回数の更新までの処理のフローチャートである。
図14の処理が呼び出される契機は、仮想プロセッサが物理プロセッサを譲り渡す場合、或いは、仮想プロセッサがタイムスライス分だけ走行した場合である。
ステップS240では、仮想プロセッサの走行が停止する。
ステップS241では、スケジューリング機能101が、仮想プロセッサ走行終了時にシステム時刻007を参照することにより、仮想プロセッサ走行終了時のシステム時刻を特定する。
ステップS242では、スケジューリング機能101が、仮想プロセッサ走行終了時刻を、仮想プロセッサテーブル#iの情報319が表す仮想プロセッサ走行開始時刻から引く。これにより算出された値が、仮想プロセッサの走行時間rixである。
ステップS243では、スケジューリング機能101が、停止した仮想プロセッサが走行した物理プロセッサ#jに対応する物理プロセッサテーブル#j内の情報215(仮想プロセッサ走行時間の和を表す情報)に、仮想プロセッサの走行時間rixを加算する。
ステップS244では、スケジューリング機能101が、物理プロセッサテーブル#jから、設定動作周波数f(fix)を特定する。
ステップS245では、スケジューリング機能101が、走行時間rixと設定動作周波数fixとの積を求める。その積が、今回使用分のプロセッササイクル数である。
ステップS246では、スケジューリング機能101が、停止した仮想プロセッサを有する仮想計算機#iに対応した仮想計算機テーブル#iにおける使用サイクル数Uに、今回使用分のプロセッササイクル数(fix×rix)を加算する。つまり、前述の数6が計算される。
ステップS247では、スケジューリング機能101が、仮想計算機テーブル#iを基に、使用サイクル数Uが持ちサイクル数Qより大きいか否かを判定する。このステップは、サービスアウト発生の有無の確認のために実行される。UがQ以下の場合(S247:NO)、処理が終了する。UがQより大きい場合(S247:YES)、ステップS248が行われる。
ステップS248では、スケジューリング機能101が、仮想計算機テーブル#iにおける使用サイクル数U(ステップS246での更新後のU)から持ちサイクル数Qiを引く。このステップでの更新後のUが、前述の数8に従うUnew_iである。
ステップS249では、スケジューリング機能101が、仮想計算機テーブル#iにおけるサービスアウト回数Oに1を加算する。
図14の処理の後に、図12のステップS31からS34の判定処理が行われる。
<<初期化周期Tの経過の判定(図12のステップS31)>>。
初期化時間Tの検出処理においては、スケジューリング機能101が、グローバルテーブル201を基に、現在のシステム時刻がラスト初期化時刻LastSから初期化周期Tを経過したか否かを判定する。この判定の結果が肯定的であれば(図12のS31:YES)、図12の処理が終了する。その後、図8のステップS1(図9のスケジューリング初期化処理)が行われる。
<<サービス率設定変更有無の判定(図12のステップS32)>>。
スケジューリング機能101が、いずれかの仮想計算機のサービス率Wがユーザにより変更されているか否かを判定する。この判定結果が肯定的であれば(図12のS32:YES)、図12の処理が終了する。その後、図8のステップS1(図9のスケジューリング初期化処理)が行われる。
<<仮想計算機数変更の有無の判定(図12のステップS33)>>。
スケジューリング機能101が、稼働中の仮想計算機の稼働停止、又は、新たな仮想計算機の起動があるか否かを判定する。この判定の結果が肯定的であれば(図12のS33:YES)、図12の処理が終了する。その後、図8のステップS1(図9のスケジューリング初期化処理)が行われる。
<<外部要因による周波数変更の有無の判定(図12のステップS34)、及び、外部要因による周波数変更検出時の処理(図12のステップS35>>。
周波数変化検出機能104が、周波数変更機能105の外部の要因(例えば、プロセッサパワーキャッピング機能の稼働、物理プロセッサの温度異常検出時)によって物理プロセッサの動作周波数が変更されたか否かを判定する。この判定の結果が肯定的の場合(図12のS34:YES)、ステップS35が行われる。一方、この判定の結果が否定的の場合(図12のS34:NO)、図12のステップS21が再度行われる。
図12のS31、S32、S33のいずれかでYESの場合、図12の処理が終了し、その後、図8のS1で初期化機能103が呼び出される。
本実施例では、スケジューリング初期化の条件判定として、図12のステップS34が追加され、S34:YESの場合、ステップS35が行われる。このため、外部要因によって動作周波数が変更した場合でも、サービス率制御(仮想計算機のサービス率の比の通りに命令を配分すること)の正確性が損なわれることはない。
図15は、外部要因による周波数変更の有無の判定、及び、周波数変更検出時の処理のフローチャートである。図15は、図12のステップS34およびS35を詳細に示す。図15に示す処理は、スケジューリング機能101の一部である周波数変化検出機能104により行われる。本処理により周波数の変化が検出され、周波数変更機能105は周波数変化後に負荷監視機能106が採取した情報を元に動作を行う。
ステップS350では、周波数変化検出機能104は、物理プロセッサ番号である変数jを0に初期化する。
ステップS351では、周波数変化検出機能104は、物理プロセッサ#jの動作周波数が外部要因により変更されているか否かを判定する。この判定の結果が肯定的であれば(S351:YES)、ステップS352が行われ、この判定の結果が否定的であれば(S351:NO)、ステップS357が行われる。
ステップS352では、周波数変化検出機能104は、物理プロセッサ#jのレジスタ004から、動作周波数fを特定する。
ステップS353では、周波数変化検出機能104は、物理プロセッサテーブル#jの情報211を、ステップS352で特定した動作周波数fを表す情報に更新する。
ステップS354では、周波数変化検出機能104は、仮想プロセッサ走行時間rixを0にリセットする。
ステップS355では、周波数変化検出機能104は、物理プロセッサテーブル#jにおける外部要因周波数変更フラグ216をON(1)にする。
ステップS356では、周波数変化検出機能104は、物理プロセッサテーブル#jに、周波数変更検出時刻を表す情報217として、現在のシステム時刻を表す情報を登録する。
ステップS357では、周波数変化検出機能104は、変数jに1を加算する。
ステップS358では、周波数変化検出機能104は、変数jの値が物理プロセッサ番号の最大値より大きいか否かを判定する。この判定の結果が肯定的であれば(S358:YES)、図15の処理が終了する。この判定の結果が否定的であれば(S358:NO)、ステップS351が再度行われる。
以上が、図8のステップS1〜S3の詳細である。
本実施例においてプロセッササイクル数ベースのスケジューリングを適用した際の動作の具体例を以下に説明する。ここでは、仮想計算機300のサービス率の比が、#1:#2:#3=5:3:2であり、スケジューリング初期化周期Tは、100msであるとする。
なお、ここでは、仮想計算機がアイドルであるため、タイムスライスの途中で仮想プロセッサが物理プロセッサを明け渡たすことはないとする。時刻0msより100msの間でサービス率の変更、仮想計算機の稼働停止、新たな仮想計算機の起動、外部要因による動作周波数の発生もないとする。なお、「明け渡す」とは、仮想プロセッサが停止し、それ故、物理プロセッサが解放されることを意味する。
仮想計算機#1の持ちサイクル数Qは、前述の数3によれば、(100×10−3)×(3.2×10+1.6×10)×(5/(5+3+2))=240×10、つまり、240メガサイクルとなる。
仮想計算機#2の持ちサイクル数Qは、前述の数3によれば、(100×10−3)×(3.2×10+1.6×10)×(3/(5+3+2))=144×10、つまり、144メガサイクルとなる。
仮想計算機#3の持ちサイクル数Qは、前述の数3によれば、(100×10−3)×(3.2×10+1.6×10)×(2/(5+3+2))=96×10、つまり、96メガサイクルとなる。サイクル数については、桁数が多いため、図や文中においてメガ(10)サイクル単位で値を表示していくことにする。
タイムスライスSは、1.6×10サイクルと設定されている。
物理プロセッサ#0の動作周波数は3.2GHzなので、タイマ割り込みのあがる間隔は、前述の数4によれば、(1.6×10)/(3.2×10)=5.0×10−3となる。つまり、物理プロセッサ#0へスケジュールされる仮想プロセッサは、5msだけ連続して走行可能である。
物理プロセッサ#1については、動作周波数が1.6GHzであるので、タイマ割り込みのあがる間隔は、前述の数4によれば、(1.6×10)/(1.6×10)=1.0×10−2となる。つまり、物理プロセッサ#1へスケジュールされる仮想プロセッサは10msだけ連続して走行可能である。
以降では、各時刻におけるプロセッササイクル数ベースのスケジューラの動きを説明する。なお、図16では、各時刻におけるそれぞれの仮想計算機のスケジュール優先度を表している。仮想計算機#iのスケジュール優先度Pは、持ちサイクル数Qに対する使用サイクル数Uの割合である。すなわち、図16及び以後の説明では、スケジュール優先度Pについては、分子に使用サイクル数U、分母に持ちサイクル数Qをメガサイクル数単位で明示的に表示することにする。図17は、各時間帯において仮想計算機の仮想プロセッサの走行した物理プロセッサを示した表である(「CPU0」は、物理プロセッサ#0のことであり、「CPU1」は、物理プロセッサ#1のことである)。図17によれば、複数の仮想計算機の優先度が等しい場合、番号の最も小さい仮想計算機が優先的にタイムスライスの割当先とされる。また、番号の最も小さい物理プロセッサが、優先的に、タイムスライスの割当元とされる。しかし、それは一例にすぎず、例えば、番号の最も大きい仮想計算機或いは物理プロセッサが優先的に選択されてもよい。
時刻0msにおいては、物理プロセッサ#0も物理プロセッサ#1も、走行中である仮想計算機の仮想プロセッサが存在しない。本実施例の場合、物理プロセッサ#0の動作周波数が物理プロセッサ#1の動作周波数より高く処理速度が大きいため、物理プロセッサ#0へ走行対象の仮想計算機の優先的に割り当てられる。全仮想計算機の優先度は0で等しいため、仮想計算機番号が最小である仮想計算機#1の仮想プロセッサが、物理プロセッサ#0へスケジュールされる。そして、物理プロセッサ#1への走行対象仮想計算機として、次に仮想計算機番号が小さい仮想計算機#2が選択される。
時刻5msにおいては、物理プロセッサ#0へタイマ割りこみがあがり、仮想計算機#1の仮想プロセッサが物理プロセッサ#0を明け渡す。このため、仮想計算機間の優先度比較が行われることになる。物理プロセッサ#1においては、仮想計算機#2の仮想プロセッサがまだ走行中である。本実施例では、どの仮想計算機も仮想プロセッサをひとつずつしか持たないので、仮想計算機#2のレディ状態ビット#2はOFF(0)であり、優先度比較の対象から外れている。優先度比較の結果、仮想計算機#3の優先度が0で最低値をとっているので、仮想計算機#3の仮想プロセッサが物理プロセッサ#0へスケジュールされる。
時刻10msにおいては、物理プロセッサ#0及び#1の両方へタイマ割り込みがあがる。このため、仮想計算機#3および仮想計算機#2の仮想プロセッサは、それぞれ、物理プロセッサを明け渡す。物理プロセッサ#0、物理プロセッサ#1の順番で、走行対象仮想計算機の優先度比較が行われる。物理プロセッサ#0への走行対象仮想計算機については、優先度が、16/240:16/144:16/96となっているので、最小である仮想計算機#1が選択される。物理プロセッサ#1への走行対象仮想計算機については、次に値の小さい仮想計算機#2が選択される。
時刻15msにおいては、物理プロセッサ#0へタイマ割り込みがあがり、仮想計算機#1の仮想プロセッサは物理プロセッサ#0を明け渡し、仮想計算機間の優先度比較が行われることになる。物理プロセッサ#1においては、仮想計算機2#の仮想プロセッサがまだ走行中でレディ状態ビット#2がOFF(0)になっているので、仮想計算機#2は優先度比較の対象から外れる。残りの仮想計算機#1及び#3の優先度32/240と16/96を比較すると、前者の方が小さい値なので、仮想計算機#1の仮想プロセッサが物理プロセッサ#0へスケジューリングされる。
時刻20msにおいては、物理プロセッサ#0及び#1の両方へタイマ割り込みがあがるので、仮想計算機#1及び#2の仮想プロセッサは物理プロセッサを明け渡す。物理プロセッサ#0、物理プロセッサ#1の順番で、走行対象仮想計算機の優先度比較が行われる。物理プロセッサ#0への走行対象仮想計算機については、優先度が48/240:32/144:16/96となっているので、最小である仮想計算機#3が選択される。物理プロセッサ#1への走行対象仮想計算機については、次に値の小さい仮想計算機#1が選択される。
時刻25msにおいては、物理プロセッサ#0へタイマ割り込みがあがり、仮想計算機#3の仮想プロセッサが物理プロセッサ#0を明け渡し、仮想計算機間の優先度比較が行われることになる。物理プロセッサ#1においては、仮想計算機#1の仮想プロセッサがまだ走行中でレディ状態ビット#1がOFF(0)になっているので、仮想計算機#1は優先度比較の対象から外れる。残りの仮想計算機#2及び#3の優先度を比較すると、32/144:32/96であり、前者の方が小さい値なので、物理プロセッサ#0へ仮想計算機#2の仮想プロセッサがスケジューリングされる。
時刻30msにおいては、物理プロセッサ#0及び#1の両方へタイマ割り込みがあがるので、仮想計算機#2および仮想計算機#1の仮想プロセッサは物理プロセッサを明け渡す。物理プロセッサ#0、物理プロセッサ#1の順番で走行対象仮想計算機の優先度比較が行われる。物理プロセッサ#0への走行対象仮想計算機については、優先度が、64/240:48/144:32/96となっているので、最小である仮想計算機#1が選択される。物理プロセッサ#1への走行対象仮想計算機をみてみると、仮想計算機#2、仮想計算機#3の優先度はともに1/3で等しい値をとっているので、仮想計算機番号の小さい仮想計算機#2の仮想プロセッサがスケジュールされる。
時刻35msにおいては、物理プロセッサ#0へタイマ割り込みがあがり、仮想計算機#1の仮想プロセッサは物理プロセッサ#0を明け渡し、仮想計算機間の優先度比較が行われることになる。物理プロセッサ#1においては、仮想計算機#2の仮想プロセッサがまだ走行中でレディ状態ビット#2がOFF(0)になっているので、仮想計算機#1は優先度比較の対象から外れる。残りの仮想計算機#1及び#3の優先度を比較すると、80/240:32/96で、ともに1/3で等しい値をとっているので、仮想計算機番号の小さい仮想計算機#1の仮想プロセッサが物理プロセッサ#0へスケジュールされる。
時刻40msにおいては、物理プロセッサ#0及び#1の両方へタイマ割り込みがあがるので、仮想計算機#1及び#2の仮想プロセッサが物理プロセッサを明け渡す。物理プロセッサ#0、物理プロセッサ#1の順番で走行対象仮想計算機の優先度比較が行われる。物理プロセッサ#0への走行対象仮想計算機については、優先度が96/240:64/144:32/96となっているので、最小である仮想計算機#3が選択される。物理プロセッサ#1への走行対象仮想計算機をみてみると、仮想計算機#1の方が優先度の値が小さい。よって、仮想計算機#1の仮想プロセッサが物理プロセッサ#1へスケジュールされる。
時刻45msにおいては、物理プロセッサ#0へタイマ割り込みがあがり、仮想計算機#3の仮想プロセッサは物理プロセッサを明け渡し、仮想計算機間の優先度比較が行われることになる。物理プロセッサ#1においては、仮想計算機#1の仮想プロセッサがまだ走行中でレディ状態ビット#1がOFF(0)であるので、仮想計算機#1は優先度比較の対象から外れる。残りの仮想計算機#2及び#3の優先度を比較すると、64/144:48/96となっており、前者の方が小さい値なので、仮想計算機#2の仮想プロセッサが物理プロセッサ#0へスケジュールされる。
時刻50msにおいては、物理プロセッサ#0及び#1の両方へタイマ割り込みがあがるので、仮想計算機#2および仮想計算機#1の仮想プロセッサは物理プロセッサを明け渡す。物理プロセッサ#0、物理プロセッサ#1の順番で走行対象仮想計算機の優先度比較が行われる。物理プロセッサ#0への走行対象仮想計算機については、優先度が112/240:80/144:48/96となっているので、最小である仮想計算機#1が選択される。物理プロセッサ#1への走行対象仮想計算機をみてみると、仮想計算機#3の方が優先度の値が小さいので、仮想計算機#3の仮想プロセッサが物理プロセッサ#1へスケジュールされる。
時刻55msにおいては、物理プロセッサ#0へタイマ割り込みがあがり、仮想計算機#1の仮想プロセッサは物理プロセッサ#0を明け渡し、仮想計算機間の優先度比較が行われることになる。物理プロセッサ#1においては、仮想計算機#3の仮想プロセッサがまだ走行中でレディ状態ビット#3がOFF(0)になっているので、仮想計算機#3は優先度比較の対象から外れる。残りの仮想計算機#1、仮想計算機#2の優先度を比較すると、128/240:80/144となっており、前者の方が小さい値なので、仮想計算機#1の仮想プロセッサが物理プロセッサ#0へスケジュールされる。
時刻60msにおいては、物理プロセッサ#0及び#1の両方へタイマ割り込みがあがるので、仮想計算機#1および仮想計算機#3の仮想プロセッサは物理プロセッサを明け渡す。物理プロセッサ#0、物理プロセッサ#1の順番で走行対象仮想計算機の優先度比較が行われる。物理プロセッサ#0への走行対象仮想計算機については、優先度が144/240:80/144:64/96となっているので、最小である仮想計算機#2が選択される。物理プロセッサ#1への走行対象仮想計算機をみてみると、仮想計算機#1の方が優先度の値が小さいので、仮想計算機#1の仮想プロセッサが物理プロセッサ#1へスケジュールされる。
時刻65msにおいては、物理プロセッサ#0へタイマ割り込みがあがり、仮想計算機#2の仮想プロセッサは物理プロセッサ#0を明け渡し、仮想計算機間の優先度比較が行われることになる。物理プロセッサ#1においては、仮想計算機#1の仮想プロセッサがまだ走行中でレディ状態ビット#1がOFF(0)であるので、仮想計算機#1は優先度比較の対象から外れる。残りの仮想計算機#2及び#3の優先度を比較すると、96/144:64/96となっており、ともに2/3で等しい値をとっているので、仮想計算機番号の小さい仮想計算機#2の仮想プロセッサが物理プロセッサ#0へスケジュールされる。
時刻70msにおいては、物理プロセッサ#0、物理プロセッサ#1の両方へタイマ割り込みがあがるので、仮想計算機#2および仮想計算機#1の仮想プロセッサは物理プロセッサを明け渡す。物理プロセッサ#0、物理プロセッサ#1の順番で走行対象仮想計算機の優先度比較が行われる。物理プロセッサ#0への走行対象仮想計算機については、優先度が160/240:112/144:64/96となっており、最小値を探すと仮想計算機1と仮想計算機3の優先度がともに2/3で等しい値をとっているので、仮想計算機番号の小さい仮想計算機#1の仮想プロセッサが物理プロセッサ#0へスケジュールされる。もう片方である仮想計算機#3の仮想プロセッサについては物理プロセッサ#1へスケジュールされる。
時刻75msにおいては、物理プロセッサ#0へタイマ割り込みがあがり、仮想計算機#1の仮想プロセッサは物理プロセッサ#0を明け渡し、仮想計算機間の優先度比較が行われることになる。物理プロセッサ#1においては、仮想計算機#3の仮想プロセッサがまだ走行中でレディ状態ビット#3がOFF(0)であるので、仮想計算機#3は優先度比較の対象から外れる。残りの仮想計算機#1及び#2の優先度を比較すると、176/240:112/144となっており、前者の方が小さい値なので、仮想計算機#1の仮想プロセッサが物理プロセッサ#0へスケジュールされる。
時刻80msにおいては、物理プロセッサ#0及び#1の両方へタイマ割り込みがあがるので、仮想計算機#1及び#3の仮想プロセッサは物理プロセッサを明け渡す。物理プロセッサ#0、物理プロセッサ#1の順番で走行対象仮想計算機の優先度比較が行われる。物理プロセッサ#0への走行対象仮想計算機については、優先度が192/240:112/144:80/96となっているので、最小である仮想計算機#2が選択される。物理プロセッサ#1への走行対象仮想計算機をみてみると、仮想計算機#1の方が優先度の値が小さいので、仮想計算機#1の仮想プロセッサが物理プロセッサ#1へスケジュールされる。
時刻85msにおいては、物理プロセッサ#0へタイマ割り込みがあがり、仮想計算機#2の仮想プロセッサが物理プロセッサ#0を明け渡し、仮想計算機間の優先度比較が行われることになる。物理プロセッサ#1においては、仮想計算機#1がまだ走行中でレディ状態ビット#1がOFF(0)であるので、仮想計算機#1は優先度比較の対象から外れる。残りの仮想計算機#2及び#3の優先度を比較すると、128/144:80/96となっており、後者の方が小さい値なので、仮想計算機#3の仮想プロセッサが物理プロセッサ#0へスケジュールされる。
時刻90msにおいては、物理プロセッサ#0及び#1の両方へタイマ割り込みがあがるので、仮想計算機#3および仮想計算機#1の仮想プロセッサは物理プロセッサを明け渡す。物理プロセッサ#0、物理プロセッサ#1の順番で走行対象仮想計算機の優先度比較が行われる。物理プロセッサ#0への走行対象仮想計算機については、優先度が208/240:128/144:96/96となっているので、最小である仮想計算機#1が選択される。仮想計算機#3については、使用サイクル数が持ちサイクル数に等しくなっているので、サービスアウトしたことがわかる。物理プロセッサ#1への走行対象仮想計算機をみてみると、仮想計算機#2の方が優先度の値が小さいので、仮想計算機#2の仮想プロセッサが物理プロセッサ#1へスケジュールされる。
時刻95msにおいては、物理プロセッサ#0へタイマ割り込みがあがり、仮想計算機#1の仮想プロセッサが物理プロセッサ#0を明け渡し、仮想計算機間の優先度比較が行われることになる。物理プロセッサ#1においては、仮想計算機#2がまだ走行中でレディ状態ビット#2がOFF(0)であるので、仮想計算機#2は優先度比較の対象から外れる。残りの仮想計算機#1及び#3の優先度を比較すると、224/240:1となっており、前者の方が小さい値なので、仮想計算機#1の仮想プロセッサが物理プロセッサ#0へスケジュールされる。
時刻100msにおいては、仮想計算機#1の使用サイクル数が240メガサイクル、仮想計算機#2の使用サイクル数が144メガサイクル、仮想計算機#3の使用サイクル数が96メガサイクルとなっており、設定されたサービス率に等しい5:3:2の比率でプロセッササイクルが正確に配分されたことがわかる。本具体例では、スケジューリングのパラメータ再計算の周期(初期化周期)Tが100msに設定されているので、この時点において、持ちサイクル数Q、使用サイクル数U、サービスアウト回数Oのゼロへのリセットが行われる。
以上で説明した、プロセッササイクル数ベースのスケジューリングにおいては、各時刻に置いて物理プロセッサへ走行させる仮想計算機の仮想プロセッサが見つからず、アイドルプロセスが走行することはない。
各時刻において、各仮想計算機の割り当てプロセッササイクル数の比率が、仮想計算機のサービス率の比5:3:2に近くなるほど、各仮想計算機の実行可能命令数の比率もサービス率の比に近づくため、スケジューリングとしてより望ましい。本実施例に係るスケジューリングを用いれば、物理プロセッサの動作周波数が異なっていても、従来のスケジューリングに比べて、仮想計算機のサービス率の比の通りに実行資源を配分することが可能である。
さて、ここまでは、図8の全体処理のうち、スケジューリング初期化、スケジューリング処理、初期化条件判定処理、起動中の仮想計算機がなくなった場合についての処理に関する説明を中心に行ってきた。
以降では、図8のステップS2での負荷監視処理と、図8のステップS5、ステップS6およびステップS7に対応する、周波数個別変更処理とを説明する。図8のフローチャートに示されているように、スケジューリング処理は、周波数個別変更処理に悪影響を与えることなく行われる。すなわち、スケジューリング処理と周波数個別変更処理は、互いに矛盾なく両立される。
<負荷監視処理(図8のステップS2)、及び、調整条件判定処理(図8のステップS5)>。
周波数調整処理の周期Tは、スケジューリング初期化の周期Tと等しい値、或いは、スケジューリング初期化周期Tの2倍以上の整数倍βTに設定される(βは、2以上の整数)。
先に述べたように、図8ステップS5では、システム時刻を基に、ラスト調整時刻LastFより周波数調整処理の周期T分だけ時間が経過していることが検出された場合に(S5:YES)、時間利用率算出慮リ(図8のステップS6)が行われる。この時、周期Tが周期Tと等しければ、定期的なスケジューリング初期化処理の前に、必ず、周波数調整処理が行われる。
もし、周期Tが周期Tの2倍以上の整数倍βTであれば、周波数調整処理は、スケジューリング初期化β回につき1回の割合で実行される。
本実施例に係る計算機システムを稼働させた結果、物理プロセッサ#0への業務量600は、図2の上側のグラフに示したような変化をしたとする。業務量600の時間的変化、周波数変更機能105及び負荷監視機能106の働きにより、物理プロセッサ#0の処理量603は、図2の下側のグラフに示したような変化をする。各時点での利用可能実行資源量601は、その時点での動作周波数で決まる、1秒あたりに処理可能なサイクル数の上限である。
なお、図2の上下のグラフに示した時間範囲においては、外部要因による周波数変更が発生していないものとする。物理プロセッサ#0の設定動作周波数は、最高値が3.2GHzであり、最低値である1.6GHzまで133MHz単位での設定変更が可能であるとする。
図2の上側のグラフによれば、物理プロセッサ#0への業務量600は、下記のように変化している。
すなわち、時刻0より時刻t1までの期間においては、業務量600は、6.4X10サイクル/秒となっている。
時刻t1において、業務量600が、6.4×10サイクル/秒から2.56×10サイクル/秒に上昇している。
時刻t2において、業務量600が、2.56×10サイクル/秒より、9.6×10サイクル/秒に低下している。
図2の下側のグラフによれば、物理プロセッサ#0の処理量603は、下記のように変化している。
時刻0より時刻t1までの期間においては、処理量603は、6.4×10サイクル/秒となっており、業務量600に等しい。設定動作周波数は1.6GHzであるため、利用可能実行資源量601は、1.6×10サイクル/秒となっている。
時刻t1において、業務量600が上昇した結果、処理量603は、利用可能実行資源量601である1.6×10サイクル/秒まで上昇する。
時刻t1より時刻t1+Tまでの期間においては、業務量600が2.56×10サイクル/秒に対し、利用可能実行資源量601は1.6×10サイクル/秒となっているため、処理量603に不足が生じている。
時刻(t1+T)において、負荷監視機能106及び周波数変更機能105の働きにより、物理プロセッサ#0の設定動作周波数が3.2GHzに上げられ、利用可能実行資源量601が、3.2×10サイクル/秒に上昇する。物理プロセッサ#0の処理量603は業務量600に等しい2.56×10サイクル/秒に上昇する。
時刻t2において、業務量600は低下しているが、処理量603は、時刻(t2+X)まで、2.56×10サイクルのままである(X>0)。これは、時刻t1から(t1+T)までの期間において、処理量603が足した分を補うため、時刻t2以降にそれ以前の時刻に生じた業務の一部が処理されているからである。
時刻(t2+X)において、時刻t2以前に生じた業務の処理が終了するため、処理量603は、業務量600に等しい9.6×10サイクル/秒に低下する。物理プロセッサ#0の設定動作周波数は3.2GHzのままである。
時刻(t2+X+T)において、負荷監視機能106及び周波数変更機能105の働きにより、物理プロセッサ#0の設定動作周波数が2.0GHzに下げられ、利用可能実行資源量601が2.0×10サイクル/秒に低下する。
前述したように、物理プロセッサ#0の処理量603は、物理プロセッサ#0の設定動作周波数により決まる。
物理プロセッサ#0の処理量603に不足がないのであれば、物理プロセッサ#0への業務量600がそのまま処理量603に等しくなる。物理プロセッサ#0への業務量600が利用可能実行資源量601を上回ってしまう場合、処理量603は当該時刻での利用可能実行資源量601の値までしかとることができない。
図16より図18に示したプロセッササイクル数ベースのスケジューリングの例においては、仮想計算機がアイドルであるなどの理由で、タイムスライスを使い果たす前に物理プロセッサを明け渡してしまったり、物理プロセッサへ走行させる仮想計算機の仮想プロセッサがなく、物理プロセッサ上をアイドルプロセスが走行したりすることがなかった。図16より図18に示した例では、時刻0msより時刻100msまでのすべての期間において、物理プロセッサ#0及び#1のいずれも、仮想計算機の仮想プロセッサが走行しており、各仮想プロセッサは与えられたプロセッサ時間のすべてを利用していることになる。従って、それぞれの物理プロセッサ002の時間利用率は1.0であることがわかる。
もし、いずれかの仮想計算機がアイドルになり、仮想プロセッサが休止状態に入ってしまうことがあれば、物理プロセッサへ走行させる仮想計算機の仮想プロセッサがなく、物理プロセッサ上にアイドルプロセスが走行することがありうる。より多くの仮想計算機がより長い時間アイドルになるのであれば、計算機システム全体の業務量は低下し、各物理プロセッサ上をアイドルプロセスの走行している時間が長くなる。このような場合、各物理プロセッサの時間利用率は低下することが予想される。
物理プロセッサ#jの時間利用率αは、或る期間(例えば、後述の計算対象時間)に対する、物理プロセッサ#jの仮想プロセッサの走行時間合計(物理プロセッサテーブル#jの情報215が表す値)の割合である。物理プロセッサ#jが或る期間において与えられた業務を処理した場合、時間利用率αは、「その期間において、物理プロセッサ#jの処理量が、設定動作周波数によって決まる利用可能実行資源量のうち、どの程度を占めているのか」を判定する材料になる。
<物理プロセッサの時間利用率算出処理(図8のステップS6)>。
図19は、時間利用率算出処理のフローチャートである。
ステップS600では、負荷監視機能106は、物理プロセッサ番号である変数jを0で初期化する。
ステップS601では、負荷監視機能106は、システム時刻を特定する。
ステップS602では、負荷監視機能106は、物理プロセッサテーブル#jの外部要因周波数変更フラグ216がON(1)であるか否かを判定する。フラグ216がON(1)の場合(S602:YES)、ステップS603が行われ、フラグ216がOFF(0)の場合(S602:NO)、ステップS605が行われる。
ステップS603では、負荷監視機能106は、物理プロセッサテーブル#j内の情報217が表す周波数変更検出時刻を特定する。
ステップS604では、負荷監視機能106は、ステップS601で特定したシステム時刻とステップS603で特定した周波数変更検出時刻との差を算出する。その差が、ステップS608での計算対象時間とされる。
ステップS605では、負荷監視機能106は、グローバルテーブル201からラスト調整時刻LastFを特定する。
ステップS606では、負荷監視機能106は、ステップS601で特定したシステム時刻と、ステップ605で特定したラスト調整時刻LastFとの差を算出する。その差が、ステップS608での計算対象時間とされる。
ステップS607では、負荷監視機能106は、物理プロセッサテーブル#j内の情報215が表す仮想プロセッサ走行時間合計を特定する。
ステップS608では、負荷監視機能106は、ステップS604又はS606で算出された計算対象時間に対する、ステップS607で特定した仮想プロセッサ走行時間合計の割合を算出する。その割合が、物理プロセッサ#jの時間利用率αである。
ステップS609では、負荷監視機能106は、変数jに1を加算する。
ステップS610では、負荷監視機能106は、更新後の変数jの値が物理プロセッサ番号の最大値より大きいか否かを判定する。この判定の結果が肯定的であれば(S610:YES)、図18の処理が終了する。逆に、この判定の結果が否定的であれば(S610:NO)、ステップS601が再度行われる。
負荷監視機能106により、周期Tごとの時間利用率αが採取されることは、図2の下側のグラフにおいて、nを0以上の整数とした時、時刻nTより時刻(n+1)Tまでの区間において、利用可能実行資源量601と時間軸との間の面積のうち、処理量603の面積の占める割合を求めることに等しい。
<物理プロセッサの周波数調整処理(図8のステップS7)>。
周波数変更機能105は、周期Tごとの時間利用率α(時刻nTより時刻(n+1)Tまでの期間における、利用可能実行資源量601と時間軸との間の面積のうち、処理量603の面積の占める割合)を基に、時刻(n+1)Tより時刻(n+2)Tの期間での設定動作周波数を決定する。周波数変更機能105は、物理プロセッサ#jの動作周波数を、決定後の動作周波数に変更する。
周波数変更機能105が設定動作周波数を変更させる際の基準として、前述した第1しきい値Yと第2しきい値Yが用いられる(しきい値の数は、1でも2より多くても良い)。
時刻nTより時刻(n+1)Tまでの期間において、時間利用率αjが第1しきい値Yより大きければ、周波数変更機能105は、次の時刻(n+1)Tより時刻(n+2)Tの期間での設定動作周波数を上昇させる。
時刻nTより時刻(n+1)Tまでの期間において、時間利用率αjが第2しきい値Yより小さければ、周波数変更機能105は、次の時刻(n+1)Tより時刻(n+2)Tの期間での設定動作周波数を下降させる。
図20は、周波数調整処理のフローチャートである。
ステップS700では、周波数変更機能105は、システム時刻を特定し、グローバルテーブル201に、ラスト調整時刻LastFとして、特定されたシステム時刻を設定する。
ステップS701では、周波数変更機能105は、物理プロセッサ番号である変数jを0で初期化する。
ステップS702では、周波数変更機能105は、物理プロセッサテーブル#jから時間利用率αを特定する。
ステップS703では、周波数変更機能105は、ステップS702で特定した時間利用率αが第2しきい値Yより大きいか否かを判定する。この判定の結果が肯定的の場合(S703:YES)、ステップS704が行われ、この判定の結果が否定的の場合(S703:NO)、ステップS705が行われる。
ステップS704では、周波数変更機能105は、物理プロセッサ#jの動作周波数(次の周期Tにおける動作周波数)を上げる。具体的には、例えば、周波数変更機能105は、物理プロセッサ#jのレジスタ#jに、その物理プロセッサ#jの現在の動作周波数よりも高い動作周波数を表す情報を設定する。
ステップS705では、周波数変更機能105は、ステップS702で特定した時間利用率αが第1しきい値Yより小さいか否かを判定する。この判定の結果が肯定的の場合(S705:YES)、ステップS706が行われ、この判定の結果が否定的の場合(S705:NO)、ステップS707が行われる。
ステップS706では、周波数変更機能105は、物理プロセッサ#jの動作周波数(次の周期Tにおける動作周波数)を下げる。具体的には、例えば、周波数変更機能105は、物理プロセッサ#jのレジスタ#jに、その物理プロセッサ#jの現在の動作周波数よりも低い動作周波数を表す情報を設定する。
ステップS707では、周波数変更機能105は、物理プロセッサ番号の変数jに1を加算する。
ステップS708では、周波数変更機能105は、負荷監視機能106により採取された時間利用率αの値を0にリセットする。
ステップS709では、周波数変更機能105は、物理プロセッサテーブル#jにおける情報215(仮想プロセッサの走行時間合計)を0にリセットする。
ステップS710では、周波数変更機能105は、物理プロセッサテーブル#jにおける外部要因周波数変更フラグ216をOFF(0)にする。
ステップS711では、周波数変更機能105は、更新後の変数jの値が物理プロセッサ番号の最大値を上回っているか否かを判定する。この判定の結果が肯定的であれば(S711:YES)、図20の処理が終了する。逆に、この判定の結果が否定的であれば(S711:NO)、ステップS702が再度行われる。
図2に示した例においては、周波数上昇時は、動作周波数は、物理プロセッサの最高動作周波数に上昇される。
また、周波数下降時は、時刻(n+1)Tから時刻(n+2)Tまでの期間において、物理プロセッサへの業務量が以前の時刻nTより時刻(n+1)Tまでの期間のものと等しいと仮定した場合、物理プロセッサの時間利用率が0.5近傍になるように調整が行われる。
図2の例においては、上記のような動作となっているものの、周波数上昇および周波数下降を行う際、次の設定周波数を決定するアルゴリズムおよび規則は、特に限定されない。
しきい値についても同様で、図2で示している例においては、図21および図22を参照すればわかるように、第1しきい値Y=0.4、第2しきい値Y=0.9に設定されているものの、Y<Yであるならば、しきい値は特に限定されない。
以降では、図21及び図22を参照し、物理プロセッサ#0を例に採り、物理プロセッサ#0の設定動作周波数変更が行われるまでの負荷監視機能106及び周波数変更機能105の動作を説明する。
図21及び図22において、「絶対業務量の比」とは、物理プロセッサ#0への業務量が、物理プロセッサ#0の最大利用可能実行資源量602に対してどれくらいの割合に達しているかを意味する。物理プロセッサ#0の最大利用可能実行資源量602は、最高周波数である3.2GHz動作時の3.2X10サイクル/秒である。
例えば、図21の上段(1)に示すように、時刻0より時刻t1までの期間であれば、業務量600は、6.4X10サイクル/秒であるので、絶対業務量の比は、(6.4X10)/(3.2X10)=0.2となる。
時刻0から時刻t1までの期間において、時間利用率αは、0.4であり、第1しきい値Yを下回っていないので、設定動作周波数の変更は行われない。
時刻t1において、業務量600が増大し、図21の中段(2)に示すように、時刻t1から時刻(t1+T)の期間において、時間利用率αは1.0になっており、第2しきい値Yを上回っている。図2で示したように、業務量600は、この期間での利用可能実行資源量601を超えているが、計算機システムにより算出された時間利用率αだけでは、処理量603がどの程度不足しているのかはわからない。
時刻(t1+T)において、動作周波数が最高動作周波数である3.2GHzに変更されている理由は、次の通りである。すなわち、その理由は、時刻t1から時刻(t1+T)の期間において処理量603に不足が生じているが、計算機システムの持っている情報ではどの程度処理量603が不足しているのかが不明であるため、可能な限り高い周波数まで上げ、時刻(t1+T)から時刻(t1+2T)の期間に処理量603の不足ができるだけ発生しないようにすることにある。
図21の下段(3)及び図22の上段(1)に示すように、時刻(t1+T)から時刻(t2+X)の期間において、時間利用率αは0.8であり、第2しきい値Yを上回っていないので、動作周波数の変更は行われない。
時刻(t2+X)において、業務量600が減少したため、図22の中段(2)に示すように、時刻(t2+X)から時刻(t2+X+T)の期間において、時間利用率αは0.3となっている。これは、第1しきい値Yを下回っているので、時刻(t2+X+T)において、設定動作周波数は2.0GHzに変更される。
図22の下段(3)に示すように、時刻(t2+X+T)より後の期間においては、時間利用率αは0.48となり、第1しきい値Yと第2しきい値Yとの間の値となっている。よって、設定動作周波数が変更されない。
前述した具体例によれば、物理プロセッサ#0の動作周波数は、業務量600が多い時には高くされ、業務量600が少ない時は低くされる。このように、業務量600に応じた動作周波数に調整されるので、業務量600の多寡に関わらず、常に最高動作周波数で物理プロセッサ#0を稼働させた場合に比べて、電力消費の削減が期待できる。
また、周波数変化検出機能104によって、周波数変更機能105とは別の要因(外部要因)で物理プロセッサ#jの動作周波数が変更させられたことが検出される。この場合、周波数変化検出機能104が、物理プロセッサテーブル#j内の情報211を、変更後の新しい動作周波数fを表す情報に更新し、時間利用率αの算出には、動作周波数変化検出後の期間が利用される。よって、外部要因による動作周波数変更により、周波数調整の処理が誤作動することも、算出される時間利用率が不正確になることもない。
以上が、本発明の実施例の説明である。
上述した実施例によれば、全プロセッサ時間(1以上の物理プロセッサ002のプロセッサ時間)ではなく、全プロセッササイクル数が、複数の仮想計算機300のサービス率の比に従い持ちサイクル数として、各仮想計算機300に配分される。これにより、物理プロセッサ002の動作周波数が異なっていても、周期Tにおいて、各仮想計算機300への実行命令数の配分(仮想プロセッサの走行時間長)をなるべく複数の仮想計算機300のサービス率の比の通りにすることができる。
ハイパバイザ100は、周期T毎に、各物理プロセッサ002のプロセッサ時間のうち仮想プロセッサ走行時間の占める割合である時間利用率を、各物理プロセッサについて算出する。ハイパバイザ100は、物理プロセッサ002の動作周波数の調整を、各物理プロセッサ002の時間利用率を基に行う。そのため、ハイパバイザ100は、仮想プロセッサ303のスケジューリングの正確性を損なうことなく、動作周波数の調整を行うことができる。つまり、仮想プロセッサのスケジューリングと動作周波数の調整は両立される。
ハイパバイザ100は、いずれかの物理プロセッサ002の外部要因による動作周波数変更を検出した場合、再び、持ちサイクル数の算出等を含んだ初期化処理を行い、その後に、仮想プロセッサ303のスケジューリングを行う。このため、外部要因によりいずれかの物理プロセッサ002の動作周波数変更が検出されても、仮想計算機への実行命令数の配分(仮想プロセッサの走行時間長の配分)が損なわれることはない。
以上、本発明の一実施例を説明したが、本発明は、この実施例に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
001…物理資源、100…ハイパバイザ、300…仮想計算機

Claims (15)

  1. 各々が1以上の仮想プロセッサを有し1以上の物理プロセッサで走行される複数の仮想計算機を構築する構築機能と、
    各仮想計算機の仮想プロセッサのスケジューリングを行うスケジューリング機能と
    を有し、
    前記スケジューリング機能が、スケジューリングの初期化の周期である第1の周期毎に、
    (A)仮想プロセッサのスケジューリングの初期化と、
    (B)仮想プロセッサのスケジューリングと
    を行い、
    前記(A)において、前記スケジューリング機能が、
    (a1)各物理プロセッサの動作周波数の和と前記第1の周期の長さとを基に、第1の周期における前記1以上の物理プロセッサのプロセッササイクル数である全プロセッササイクル数を算出し、
    (a2)各仮想計算機について、前記複数の仮想計算機のサービス率の比の通りに前記全プロセッササイクル数が配分された値である持ちサイクル数を算出し、
    前記(B)において、前記スケジューリング機能が、
    (b1)各仮想計算機の持ちサイクル数を基に、仮想計算機内の仮想プロセッサをいずれかの物理プロセッサで走行させる、
    ハイパバイザ。
  2. 請求項1記載のハイパバイザであって、
    前記(A)において、前記スケジューリング機能が、
    (a3)各物理プロセッサについて、物理プロセッサの動作周波数と、前記1以上の物理プロセッサに共通しサイクル数で表されるタイムスライスとを基に、タイムスライス時間長を算出し、
    前記(B)において、仮想プロセッサの走行時間長が、その仮想プロセッサが走行する物理プロセッサのタイムスライス時間長に達した場合、その仮想プロセッサが停止し、
    前記(B)において、前記スケジューリング機能が、
    (b2)仮想プロセッサの走行が停止する都度に、停止した仮想プロセッサを有する仮想計算機で使用されたプロセッササイクル数である使用サイクル数を更新し、
    (b0)前記(b1)の前に、レディ状態の仮想計算機のうちで優先度が最小の仮想計算機を選択し、
    使用サイクル数の更新は、停止した仮想プロセッサが走行していた物理プロセッサの動作周波数と、その仮想プロセッサが走行していた時間長である走行時間との積を、直前の使用サイクル数に加算することであり、
    仮想計算機の優先度は、その仮想計算機の持ちサイクル数に対する使用サイクル数の割合であり、
    前記(b1)で走行させられる仮想プロセッサは、前記(b0)で選択された仮想計算機名内の仮想プロセッサである、
    ハイパバイザ。
  3. 請求項2記載のハイパバイザであって、
    前記(b2)において、前記スケジューリング機能が、停止した仮想プロセッサを有する仮想計算機について、更新後の使用サイクル数が持ちサイクル数の値を上回った回数であるサービスアウト回数を更新し、
    仮想計算機の優先度は、その仮想計算機の持ちサイクル数に対する使用サイクル数の割合に、その仮想計算機のサービスアウト回数が反映された値であり、
    サービスアウトが発生した場合の使用サイクル数の更新は、停止した仮想プロセッサが走行していた物理プロセッサの動作周波数と、その仮想プロセッサが走行していた時間長である走行時間との積から、その仮想プロセッサを有する仮想計算機の持ちサイクル数が減算された値を、直前の使用サイクル数に加算することである、
    ハイパバイザ。
  4. 請求項2記載のハイパバイザであって、
    物理プロセッサの動作周波数を変更する周波数調整処理を、前記周波数調整処理の周期である第2の周期毎に行う周波数調整機能と、
    前記1以上の物理プロセッサにとっての現在時刻を特定し各物理プロセッサの時間利用率を算出する負荷監視機能と
    を更に有し、
    前記周波数調整機能は、別の要因である外部要因で物理プロセッサの動作周波数が変更されたことを検出し、外部要因で動作周波数が変更されたことを意味するフラグである外部要因フラグをONとし、
    前記時間利用率は、計算対象時間に対する仮想プロセッサ走行時間合計の割合であり、
    前記仮想プロセッサ走行時間合計は、前記計算対象時間における、仮想プロセッサが走行した時間長の合計であり、
    前記計算対象時間は、前記外部要因フラグがONの場合、動作周波数の変化が検出された時刻から前記特定された現在時刻までの時間長であり、
    前記計算対象時間は、前記外部要因フラグがOFFの場合、直前回の前記周波数調整処理が行われた時刻から前記特定された現在時刻までの時間長であり、
    前記周波数調整機能は、前記時間利用率を基に前記周波数調整処理を行い、前記周波数調整処理が終了した場合に、前記仮想プロセッサ走行時間合計及び時間利用率をリセットし、且つ、前記外部要因フラグをOFFにし、
    前記スケジューリング機能は、前記外部要因で動作周波数が変更された場合、前記(A)を行ってから前記第1の周期を経過していなくても、前記(A)を行う、
    ハイパバイザ。
  5. 請求項1記載のハイパバイザであって、
    前記(B)において、前記スケジューリング機能が、
    (b2)仮想プロセッサの走行が停止する都度に、停止した仮想プロセッサを有する仮想計算機で使用されたプロセッササイクル数である使用サイクル数を更新し、
    (b0)前記(b1)の前に、各仮想計算機の優先度に従って、仮想計算機を選択し、
    使用サイクル数の更新は、停止した仮想プロセッサが走行していた物理プロセッサの動作周波数と、その仮想プロセッサが走行していた時間長である走行時間と、直前の使用サイクル数とを基に行われ、
    仮想計算機の優先度は、その仮想計算機の使用サイクル数と持ちサイクル数とに基づく値であり、
    前記(b1)で走行させられる仮想プロセッサは、前記(b0)で選択された仮想計算機名内の仮想プロセッサである、
    ハイパバイザ。
  6. 請求項5記載のハイパバイザであって、
    前記優先度は、持ちサイクル数に対する使用サイクル数の割合であり、
    前記(b0)では、優先度の小さい仮想計算機が優先的に選択される、
    ハイパバイザ。
  7. 請求項5記載のハイパバイザであって、
    前記(b2)において、前記スケジューリング機能が、停止した仮想プロセッサを有する仮想計算機について、更新後の使用サイクル数が持ちサイクル数の値を上回った回数であるサービスアウト回数を更新し、
    前記優先度は、持ちサイクル数と使用サイクル数の他に、サービスアウト回数が反映された値である、
    ハイパバイザ。
  8. 請求項5記載のハイパバイザであって、
    前記(b2)において、停止した仮想プロセッサを有する仮想計算機について、更新後の使用サイクル数が持ちサイクル数の値を上回ることであるサービスアウトが発生した場合、使用サイクル数の更新は、停止した仮想プロセッサが走行していた物理プロセッサの動作周波数と、その仮想プロセッサが走行していた時間長である走行時間と、持ちサイクル数と、直前の使用サイクル数とを基に行われる、
    ハイパバイザ。
  9. 請求項1記載のハイパバイザであって、
    前記(A)において、前記スケジューリング機能が、
    (a3)各物理プロセッサについて、物理プロセッサの動作周波数と、前記1以上の物理プロセッサに共通しサイクル数で表されるタイムスライスとを基に、タイムスライス時間長を算出し、
    前記(B)において、仮想プロセッサの走行時間長が、その仮想プロセッサが走行する物理プロセッサのタイムスライス時間長に達した場合、その仮想プロセッサが停止する、
    ハイパバイザ。
  10. 請求項1記載のハイパバイザであって、
    物理プロセッサの動作周波数を変更する周波数調整処理を行う周波数調整機能を更に有し、
    前記周波数調整機能は、別の要因である外部要因で物理プロセッサの動作周波数が変更されたことを検出し、
    前記スケジューリング機能は、前記外部要因で動作周波数が変更された場合、前記(A)を行ってから前記第1の周期を経過していなくても、前記(A)を行う、
    ハイパバイザ。
  11. 請求項10記載のハイパバイザであって、
    前記1以上の物理プロセッサにとっての現在時刻を特定し各物理プロセッサの時間利用率を算出する負荷監視機能を更に有し、
    前記時間利用率は、計算対象時間に対する仮想プロセッサ走行時間合計の割合であり、
    前記仮想プロセッサ走行時間合計は、前記計算対象時間における、仮想プロセッサが走行した時間長の合計であり、
    前記計算対象時間は、前記外部要因で動作周波数が変更されていない場合、直前回の前記周波数調整処理が行われた時刻から前記特定された現在時刻までの時間長であり、
    前記計算対象時間は、前記外部要因で動作周波数が変更された場合、動作周波数の変化が検出された時刻から前記特定された現在時刻までの時間長であり、
    前記周波数調整機能は、前記時間利用率を基に前記周波数調整処理を行い、前記周波数調整処理が終了した場合に、前記仮想プロセッサ走行時間合計及び時間利用率をリセットする、
    ハイパバイザ。
  12. 請求項11記載のハイパバイザであって、
    前記周波数調整機能は、前記周波数調整処理において、前記時間利用率が第2しきい値を上回っている物理プロセッサについては、動作周波数を上げ、前記時間利用率が前記第2のしきい値より低い第1しきい値を下回っている物理プロセッサについては動作周波数を下げる、
    ハイパバイザ。
  13. 請求項1記載のハイパバイザであって、
    前記スケジューリング機能は、仮想プロセッサが走行されない物理プロセッサにアイドルプロセスを走行させる、
    ハイパバイザ。
  14. 1以上の物理プロセッサと、
    各々が1以上の仮想プロセッサを有し前記1以上の物理プロセッサで走行される複数の仮想計算機を構築するハイパバイザと
    を有し、
    前記ハイパバイザが、スケジューリングの初期化の周期である第1の周期毎に、
    (A)仮想プロセッサのスケジューリングの初期化と、
    (B)仮想プロセッサのスケジューリングと
    を行い、
    前記(A)において、前記ハイパバイザが、
    (a1)各物理プロセッサの動作周波数の和と前記第1の周期の長さとを基に、第1の周期における前記1以上の物理プロセッサのプロセッササイクル数である全プロセッササイクル数を算出し、
    (a2)各仮想計算機について、前記複数の仮想計算機のサービス率の比の通りに前記全プロセッササイクル数が配分された値である持ちサイクル数を算出し、
    前記(B)において、前記ハイパバイザが、
    (b1)各仮想計算機の持ちサイクル数を基に、仮想計算機内の仮想プロセッサをいずれかの物理プロセッサで走行させる、
    計算機システム。
  15. 各々が1以上の仮想プロセッサを有し1以上の物理プロセッサで走行される複数の仮想計算機内の仮想プロセッサのスケジューリング方法であって、
    各物理プロセッサの動作周波数の和と前記第1の周期の長さとを基に、第1の周期における前記1以上の物理プロセッサのプロセッササイクル数である全プロセッササイクル数を算出し、
    各仮想計算機について、前記複数の仮想計算機のサービス率の比の通りに前記全プロセッササイクル数が配分された値である持ちサイクル数を算出し、
    各仮想計算機の持ちサイクル数を基に、仮想計算機内の仮想プロセッサをいずれかの物理プロセッサで走行させる、
    スケジューリング方法。
JP2010051575A 2010-03-09 2010-03-09 ハイパバイザ、計算機システム、及び、仮想プロセッサのスケジューリング方法 Expired - Fee Related JP5388909B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010051575A JP5388909B2 (ja) 2010-03-09 2010-03-09 ハイパバイザ、計算機システム、及び、仮想プロセッサのスケジューリング方法
US13/041,012 US8695007B2 (en) 2010-03-09 2011-03-04 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

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010051575A JP5388909B2 (ja) 2010-03-09 2010-03-09 ハイパバイザ、計算機システム、及び、仮想プロセッサのスケジューリング方法

Publications (2)

Publication Number Publication Date
JP2011186793A true JP2011186793A (ja) 2011-09-22
JP5388909B2 JP5388909B2 (ja) 2014-01-15

Family

ID=44561165

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010051575A Expired - Fee Related JP5388909B2 (ja) 2010-03-09 2010-03-09 ハイパバイザ、計算機システム、及び、仮想プロセッサのスケジューリング方法

Country Status (2)

Country Link
US (1) US8695007B2 (ja)
JP (1) JP5388909B2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013080275A (ja) * 2011-09-30 2013-05-02 Fujitsu Ltd 設定制御装置、設定制御方法および設定制御プログラム
JP2013214146A (ja) * 2012-03-30 2013-10-17 Toshiba Corp 仮想計算機システム、ハイパーバイザ及び仮想計算機システム管理方法
KR101465657B1 (ko) * 2014-03-10 2014-12-10 성균관대학교산학협력단 가상머신을 위한 협력 스케줄링 방법
KR101534139B1 (ko) * 2014-08-27 2015-07-24 성균관대학교산학협력단 가상머신을 위한 협력 스케줄링 방법
KR101534138B1 (ko) * 2014-08-27 2015-07-24 성균관대학교산학협력단 가상머신을 위한 협력 스케줄링 방법
KR101534137B1 (ko) * 2014-08-27 2015-07-24 성균관대학교산학협력단 가상머신을 위한 협력 스케줄링 방법

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8285590B2 (en) * 2000-06-23 2012-10-09 Ecomsystems, Inc. Systems and methods for computer-created advertisements
TW200704183A (en) 2005-01-27 2007-01-16 Matrix Tv Dynamic mosaic extended electronic programming guide for television program selection and display
US8875196B2 (en) 2005-08-13 2014-10-28 Webtuner Corp. System for network and local content access
US8806496B2 (en) * 2009-09-30 2014-08-12 Intel Corporation Virtualizing a processor time counter during migration of virtual machine by determining a scaling factor at the destination platform
US8296183B2 (en) * 2009-11-23 2012-10-23 Ecomsystems, Inc. System and method for dynamic layout intelligence
WO2012162464A1 (en) 2011-05-24 2012-11-29 WebTuner, Corporation System and method to increase efficiency and speed of analytics report generation in audience measurement systems
US9021543B2 (en) 2011-05-26 2015-04-28 Webtuner Corporation Highly scalable audience measurement system with client event pre-processing
JP5696603B2 (ja) * 2011-06-29 2015-04-08 富士通株式会社 計算機システム、計算機システムの電力制御方法およびプログラム
JP5748349B2 (ja) * 2012-03-16 2015-07-15 株式会社日立製作所 仮想計算機の制御方法及び仮想計算機システム
US9170648B2 (en) 2012-04-03 2015-10-27 The Boeing Company System and method for virtual engineering
US8862824B2 (en) * 2012-09-26 2014-10-14 Intel Corporation Techniques for managing power and performance of multi-socket processors
US9075789B2 (en) 2012-12-11 2015-07-07 General Dynamics C4 Systems, Inc. Methods and apparatus for interleaving priorities of a plurality of virtual processors
US10097989B2 (en) 2012-12-21 2018-10-09 E*Trade Financial Corporation Dynamic communication
US9992306B2 (en) * 2012-12-21 2018-06-05 E*Trade Financial Corporation Dynamic execution
US9692706B2 (en) * 2013-04-15 2017-06-27 International Business Machines Corporation Virtual enhanced transmission selection (VETS) for lossless ethernet
US9778943B2 (en) * 2013-05-28 2017-10-03 Red Hat Israel, Ltd. Timer based virtual processor scheduling and suspension on physical processor for use of physical processor by other processing
US10534421B2 (en) * 2013-06-13 2020-01-14 Microsoft Technology Licensing, Llc Virtual per-processor timers for multiprocessor systems
US10649796B2 (en) * 2014-06-27 2020-05-12 Amazon Technologies, Inc. Rolling resource credits for scheduling of virtual computer resources
US9552228B2 (en) * 2014-09-08 2017-01-24 Empire Technology Development Llc Instruction set extension concealment in data centers
US9361154B2 (en) * 2014-09-30 2016-06-07 International Business Machines Corporation Tunable computerized job scheduling
US9720722B2 (en) * 2015-09-03 2017-08-01 Red Hat Israel, Ltd. Hypervisor driven gradual balloon inflation
US10223235B2 (en) 2016-05-26 2019-03-05 International Business Machines Corporation Comprehensive testing of computer hardware configurations
US10216599B2 (en) 2016-05-26 2019-02-26 International Business Machines Corporation Comprehensive testing of computer hardware configurations
US10127068B2 (en) * 2016-06-30 2018-11-13 Amazon Technologies, Inc. Performance variability reduction using an opportunistic hypervisor
US10956193B2 (en) * 2017-03-31 2021-03-23 Microsoft Technology Licensing, Llc Hypervisor virtual processor execution with extra-hypervisor scheduling
CN107943568B (zh) * 2017-10-31 2021-11-26 北京航空航天大学 综合模块化航空电子系统两级调度模型与原型平台
CN111966202B (zh) * 2020-08-18 2021-06-04 深圳比特微电子科技有限公司 数字货币矿机的电源电压控制方法、装置和数字货币矿机

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003177928A (ja) * 2001-12-11 2003-06-27 Hitachi Ltd 可変タイムスライス時間のスケジューリング方法
JP2005122582A (ja) * 2003-10-20 2005-05-12 Matsushita Electric Ind Co Ltd 命令処理装置
JP2008171293A (ja) * 2007-01-15 2008-07-24 Hitachi Ltd 仮想計算機システムのスケジューリング方法
JP2008186210A (ja) * 2007-01-30 2008-08-14 Hitachi Ltd 仮想計算機システムのプロセッサキャッピング方法
JP2009110404A (ja) * 2007-10-31 2009-05-21 Toshiba Corp 仮想計算機システム及び同システムにおけるゲストosスケジューリング方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7007183B2 (en) * 2002-12-09 2006-02-28 International Business Machines Corporation Power conservation by turning off power supply to unallocated resources in partitioned data processing systems
US7594128B2 (en) 2004-08-04 2009-09-22 Hewlett-Packard Development Company, L.P. Systems and methods to determine processor utilization
US7613897B2 (en) * 2005-03-30 2009-11-03 International Business Machines Corporation Allocating entitled processor cycles for preempted virtual processors
US7386739B2 (en) 2005-05-03 2008-06-10 International Business Machines Corporation Scheduling processor voltages and frequencies based on performance prediction and power constraints
JP5433837B2 (ja) * 2007-12-05 2014-03-05 株式会社日立製作所 仮想計算機システム、仮想計算機の制御方法及びプログラム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003177928A (ja) * 2001-12-11 2003-06-27 Hitachi Ltd 可変タイムスライス時間のスケジューリング方法
JP2005122582A (ja) * 2003-10-20 2005-05-12 Matsushita Electric Ind Co Ltd 命令処理装置
JP2008171293A (ja) * 2007-01-15 2008-07-24 Hitachi Ltd 仮想計算機システムのスケジューリング方法
JP2008186210A (ja) * 2007-01-30 2008-08-14 Hitachi Ltd 仮想計算機システムのプロセッサキャッピング方法
JP2009110404A (ja) * 2007-10-31 2009-05-21 Toshiba Corp 仮想計算機システム及び同システムにおけるゲストosスケジューリング方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013080275A (ja) * 2011-09-30 2013-05-02 Fujitsu Ltd 設定制御装置、設定制御方法および設定制御プログラム
US9223601B2 (en) 2011-09-30 2015-12-29 Fujitsu Limited Control device, control method, and non-transitory computer-readable storage medium for a virtual system deployment
JP2013214146A (ja) * 2012-03-30 2013-10-17 Toshiba Corp 仮想計算機システム、ハイパーバイザ及び仮想計算機システム管理方法
KR101465657B1 (ko) * 2014-03-10 2014-12-10 성균관대학교산학협력단 가상머신을 위한 협력 스케줄링 방법
KR101534139B1 (ko) * 2014-08-27 2015-07-24 성균관대학교산학협력단 가상머신을 위한 협력 스케줄링 방법
KR101534138B1 (ko) * 2014-08-27 2015-07-24 성균관대학교산학협력단 가상머신을 위한 협력 스케줄링 방법
KR101534137B1 (ko) * 2014-08-27 2015-07-24 성균관대학교산학협력단 가상머신을 위한 협력 스케줄링 방법

Also Published As

Publication number Publication date
JP5388909B2 (ja) 2014-01-15
US20110225591A1 (en) 2011-09-15
US8695007B2 (en) 2014-04-08

Similar Documents

Publication Publication Date Title
JP5388909B2 (ja) ハイパバイザ、計算機システム、及び、仮想プロセッサのスケジューリング方法
TWI591542B (zh) 雲端計算節點、方法與系統及電腦可讀媒體
JP6386165B2 (ja) 分散コンピュータシステムへの電力割り振りに変更がある場合に中断され得るジョブ及び中断され得ないジョブを管理するための方法並びに装置
US9483321B2 (en) Method and apparatus for determining to-be-migrated task based on cache awareness
Isard et al. Quincy: fair scheduling for distributed computing clusters
US8296773B2 (en) Systems and methods for thread assignment and core turn-off for integrated circuit energy efficiency and high-performance
US7587621B2 (en) Computer system management and throughput maximization in the presence of power constraints
JP5332065B2 (ja) クラスタ構成管理方法、管理装置及びプログラム
JP6233413B2 (ja) タスク割り当て判定装置、制御方法、及びプログラム
JP2004199561A (ja) 計算機資源割当方法、それを実行するための資源管理サーバおよび計算機システム
JP2011118525A (ja) サーバ管理装置とサーバ管理方法およびサーバ管理プログラム
US20160077571A1 (en) Heuristic Processor Power Management in Operating Systems
Stavrinides et al. Energy-aware scheduling of real-time workflow applications in clouds utilizing DVFS and approximate computations
US20160196157A1 (en) Information processing system, management device, and method of controlling information processing system
Armstrong et al. Scheduling many-task workloads on supercomputers: Dealing with trailing tasks
JP2008171293A (ja) 仮想計算機システムのスケジューリング方法
Heo et al. IOCost: block IO control for containers in datacenters
JP5257709B2 (ja) 仮想計算機の移動方法、仮想計算機システム及び管理サーバ
US20150339167A1 (en) Virtual computer system and scheduling method
Nicodemus et al. Managing vertical memory elasticity in containers
Tesfatsion et al. PerfGreen: performance and energy aware resource provisioning for heterogeneous clouds
Lee et al. Hierarchical self-tuning of concurrency and resource units in data-analytics frameworks
JP2005018560A (ja) 命令プロセッサ割り当てスケジューリング方法、該命令プロセッサ割り当てスケジューリング方法を実現する計算機システムおよびそのためのプログラム
Kumar et al. A QoS-based reactive auto scaler for cloud environment
Liu et al. Cooperative job scheduling and data allocation for busy data-intensive parallel computing clusters

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120410

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130730

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130806

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130910

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131008

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