JP6180866B2 - スケジューリング装置、システム、装置、方法およびプログラム - Google Patents

スケジューリング装置、システム、装置、方法およびプログラム Download PDF

Info

Publication number
JP6180866B2
JP6180866B2 JP2013196961A JP2013196961A JP6180866B2 JP 6180866 B2 JP6180866 B2 JP 6180866B2 JP 2013196961 A JP2013196961 A JP 2013196961A JP 2013196961 A JP2013196961 A JP 2013196961A JP 6180866 B2 JP6180866 B2 JP 6180866B2
Authority
JP
Japan
Prior art keywords
virtual
resource amount
execution
task
tasks
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2013196961A
Other languages
English (en)
Other versions
JP2015064657A (ja
Inventor
康之 小堺
康之 小堺
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2013196961A priority Critical patent/JP6180866B2/ja
Priority to US14/482,025 priority patent/US20150089510A1/en
Publication of JP2015064657A publication Critical patent/JP2015064657A/ja
Application granted granted Critical
Publication of JP6180866B2 publication Critical patent/JP6180866B2/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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances

Landscapes

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

Description

本発明の実施形態は、スケジューリング装置、システム、装置、方法およびプログラムに関する。
従来、1つの装置上で複数のOS(Operating System)を実行可能とする仮想化技術が知られている。仮想化技術は、たとえば、それぞれの仮想マシンに必要なCPU(Central Processing Unit)リソースを自動的に調整する。また、CPUリソースが仮想マシンに足りないと判断された場合にはフィードバック制御にてCPUリソースを増す技術も存在する。
しかしながら、従来の仮想化技術を用いても、十分なCPUリソースを仮想マシンに提供できない期間が存在してしまう場合がある。
米国特許第8166485号明細書
J. Lee, S. Xi, S. Chen, L. T.X. Phan, C. Gill, I. Lee, C. Lu, and O. Sokolsky, "Realizing Compositional Scheduling through Virtualization", 2012 IEEE 18th Raal Time and Embedded Technology and applications Symposium, Beijing, China, April 16-19, 2012
以下の実施形態では、十分でかつ可能な限り少ないCPUリソースやネットワークリソースを仮想マシンに割り当てることが可能なスケジューリング装置、システム、装置、方法およびプログラムを提供することを目的とする。
実施形態にかかるスケジューリング装置は、仮想OS上で動作する1つ以上のタスクであってそれぞれ予め決められた周期的なデッドラインまでに1回分の処理を完了する必要がある前記1つ以上のタスクが必要とする第1リソース量を取得する負荷計算部と、前記第1リソース量に基づいて前記仮想OSに割り当てる第2リソース量を計算するリソース計算部と、を備え、前記負荷計算部は、各タスクが必要とする最小限の第3リソース量に、各タスクの実行周期または1周期あたりの実行時間に基づく余裕を付加することで、前記第1リソース量を計算する。
図1は、実施形態1にかかる情報処理システムの概略構成例を示すブロック図。 図2は、実施形態1〜におけるタスクの実行周期の例を示す図。 図3は、実施形態1〜3における実行履歴の第1例を示す図。 図4は、実施形態1〜3における実行履歴の第2例を示す図。 図5は、実施形態1〜3におけるリソース量の例を示す図。 図6は、実施形態1の動作例を示すシーケンス図。 図7は、実施形態1および2においてオーケストレータが仮想OSに割当てるリソース量を計算する方法の例を示すフローチャート図。 図8は、実施形態1および2においてオーケストレータがタスクに対して最小のリソース量を計算する方法の例を示すフローチャート図。 図9は、実施形態2の動作例を示すシーケンス図。 図10は、実施形態3にかかる情報処理システムの概略構成例を示すブロック図。 図11は、実施形態3の動作例を示すシーケンス図。
以下、添付図面を参照しながら、例示する実施形態にかかるスケジューリング装置、システム、装置、方法およびプログラムを詳細に説明する。
(実施形態1)
まず、実施形態1にかかるスケジューリング装置、システム、装置、方法およびプログラムを、図面を参照して詳細に説明する。図1は、実施形態1にかかる情報処理システムの構成例を示す。図1に示すように、情報処理システム1は、1台以上のサーバ100A〜100Cと、スケジューリング装置110と、ストレージシステム120と、端末130とがネットワーク140を介して相互に接続された構成を有する。以下では、スケジューリング装置110をオーケストレータ110と記す場合もある。また、サーバ100A〜100Cを個別に区別しない場合、その符号を100と記す。
端末130は、管理者が操作する計算機である。管理者は、端末130を用いて、オーケストレータ110へ、仮想マシンの起動、テストまたは停止などの指示を入力する。端末130に入力された指示は、ネットワーク140を介してオーケストレータ110へ送信される。
オーケストレータ110は、仮想OS制御装置であり、サーバ100上で動作する仮想OS等を制御する。たとえば、オーケストレータ110は、端末130から受信したメッセージに従い、仮想OSの起動、テスト、停止などのコマンドを含むメッセージを作成する。作成されたメッセージは、ネットワーク140を介してサーバ100へ送信される。
また、オーケストレータ110は、必要に応じて仮想OSをサーバ100(以下、移動元サーバという)から別のサーバ100(以下、移動先サーバという)へ移動するコマンドを記したメッセージを作成し、そのメッセージをサーバ100へ送信する。また、オーケストレータ110は、各サーバ100から仮想OS上で実行されるタスクの実行周期を取得する。
各サーバ100は、1つ以上のCPUコア(演算装置)101、ハイパーバイザ102、0以上の仮想OS103A〜103B、0以上のタスク104A〜104Cで構成される。以下では、仮想OS103A〜103Bを個別に区別しない場合、その符号を103と記す。また、タスク104A〜104Cを個別に区別しない場合、その符号を104と記す。1つの仮想OS103上では、0以上のタスク104が実行される。図1の例では、タスク104Aが仮想OS103A上で実行され、タスク104Bおよびタスク104Cが仮想OS103B上で実行される。
仮想OS103は、たとえばサーバ100がネットワーク140を介してストレージシステム120から仮想OS103のイメージファイルを取得して起動することで実行される。ハイパーバイザ102は、仮想OS103をスケジューリングし、計算機をエミュレートするソフトウェアまたは回路である。仮想OS103は、CPUコア101上で実行されるオペレーティングシステムである。タスク104は、周期的に処理を実行するソフトウェアである。
オーケストレータ110は、コントローラ111、リソース計算部112、負荷計算部113、記憶部114で構成される。
負荷計算部113は、サーバ100から取得した仮想OS103および/またはタスク104の実行履歴から、仮想OS103上で実行される各タスク104に必要なリソースの量を計算する。
リソース計算部112は、各タスク104の実行に必要なリソースを用いて、仮想OS103に対する必要最小限のリソース量を計算する。
コントローラ111は、端末130から受信したメッセージに従い、仮想OS103の起動、テスト、停止などのコマンドを含むメッセージを作成し、作成したメッセージをサーバ100へ送信する。また、コントローラ111は、必要に応じて仮想OS103を移動元サーバ100から移動先サーバ100へ移動するコマンドを記したメッセージを作成し、作成したメッセージを移動元サーバ100へ送信する。さらに、コントローラ111は、仮想OS103に割り当てるリソース量を記したメッセージを作成し、作成したメッセージをサーバ100へ送信する。仮想OS103に割り当てるリソース量は、仮想OS103の起動または移動を指示するメッセージに記されてもよい。
記憶部114は、タスクの実行履歴、および、仮想OSに割り当てたリソース量を記憶する。
また、オーケストレータ110は、サーバ100に対して仮想OS103のテストを指示し、そのテスト結果をサーバ100から取得する。テスト結果には、たとえば仮想OS103上で実行された1以上のタスク104の実行履歴が含まれる。
ここで、図2に、タスクの実行周期の一例を示す。図2に示すように、タスク104は、予め決められた周期的なデッドラインDLまでに1回分の処理を完了する必要がある。デッドラインDLは、一定の間隔で設定され、その間隔がタスクの実行周期Cである。また、1つの実行周期C中にタスク104が実行される期間が、タスクの実行期間Pである。なお、タスク104は、1回の処理が完了するまで連続して実行される必要はなく、複数の期間に分割されて実行されてもよい。たとえば図2の実行周期C1に示すように、2つの期間P1およびP2に分割されて実行されてもよい。
図3は、CPUコア101のひとつがタスクAとタスクBとを実行したときの実行履歴の一例を示す。タスクの実行履歴は、CPUコア101があるタスクAおよびタスクBを実行した期間で表される。
図3に示すタスクAおよびBの実行履歴は、それぞれ1以上の実行期間を含む。ただし、図3は、CPUコア101がタスクAとタスクBとを切り替えながら実行した例を示す。そのため、図3は、それぞれのタスクAおよびBの実行期間が断続的である例を示す。
タスクの実行期間Pは、開始時刻と終了時刻とで表される。開始時刻は、CPUコア101がタスクAまたはBの実行を開始または再開した時刻である。終了時刻は、CPUコア101がタスクAまたはBの実行を終了または中断した時刻である。
これらの開始時刻と終了時刻は、たとえばUnix(登録商標) Epochからの経過時間で表される。たとえば図3において、タスクAの最初の開始時刻は、Unix(登録商標) Epochから1365557004.313221242秒経過した時点である。
なお、開始時刻と終了時刻とは、経過時間に限らず、どのような形式で表されてもよい。たとえば、任意のタイムゾーンにおける時刻で表されてもよいし、UTC(協定世界時)、TAI(国際原子時)、GMT(グリニッジ平均時)などで表されてもよい。また、開始時刻と終了時刻は、不図示のタイマを起動またはリセットしたタイミングからの経過時間で表されてもよい。また、開始時刻および終了時刻の単位は、秒に限らず、秒より短い単位であってもよい。さらに、終了時刻の代わりに、開始時刻から終了時点までの時間が用いられてもよい。
実行履歴は、図3に示すように、タスクごとに管理されていなくてもよい。たとえば、図4に示すように、タスクAとタスクBとの実行期間を一意に識別するための識別子(以下、タスクIDという)とともに列挙する形式で、実行履歴が管理されてもよい。なお、実行履歴には、1つのタスクに対して1以上のデッドラインDLの時刻が含まれる。
オーケストレータ110は、以上のような実行履歴を用いて仮想OS103に割り当てるリソースを計算する。また、オーケストレータ110は、計算したリソースの量を記したメッセージをサーバ100へ送信する。
サーバ100は、1以上の仮想OS103を実行する計算機である。サーバ100は、オーケストレータ110から受信したメッセージに従い、仮想OS103を起動、テストおよび停止する。また、サーバ100は、オーケストレータ110から受信したメッセージに従い、仮想OS103に割り当てるリソースを調節する。
次に、図5を用いてリソースの定義を説明する。本説明において、リソースは、たとえばCPUリソースまたはネットワークリソースである。ただし、これらに限定されるものではなく、多数の仮想OSまたはタスクが時分割で利用するリソースであればどのようなリソースであってもよい。実行周期はリソースを使用する周期に一般化され、実行期間はリソースを使用する期間に一般化される。
リソースは、タスクまたは仮想OSに割り当てられる。リソースは、割り当て周期Πと、1周期あたりの割当て時間Θとの組(Π,Θ)で定義される。つまり、リソース(Π,Θ)が与えられたタスクは、割当て周期Π毎に合計Θの期間リソースを使用可能である。リソースは実行周期および実行期間の総時間の組に似ているが、異なる概念である。タスクは与えられた全てのリソースを必ずしも消費する必要がない。そのため、リソース(Π,Θ)が割り当てられたタスクの実行周期はΠでなくてもよく、実行期間の総時間はΘでなくてもよい。仮想OSに割り当てるリソースの定義もタスクに割り当てるリソースと同様である。リソース(Π,Θ)が仮想OSに割り当てられると、仮想OSは周期Π毎にΘの時間、いずれかのタスクにCPUコアを使用させることができる。なお、割当て周期Πおよび割当て時間Θの単位は、例えば仮想OS103に割り当てることができる最短の時間で定義される。
図5は、図1に示す仮想OS103に割り当てられたCPUリソースの割当て周期Crと割当て時間Trとがそれぞれ100msと50msとである場合の例を示す。その場合、仮想OS103は、100msごとに50msの時間、CPUコア101を使用することができる。CPUコア101が仮想OS103上のタスク104を実行する期間は、必ず仮想OS103にCPUコア101が割り当てられた期間に含まれる。
なお、仮想OS103に割り当てられるリソースの割当て時間Trは、連続である必要はない。たとえば、図5に示す例では、期間Cr1における割当て時間が第1割当て時間Tr1と第2割当て時間Tr2とに分断されている。その場合、第1割当て時間Tr1と第2割当て時間Tr2とを足したトータルの時間が割当て時間Tr(50ms)であればよい。また、期間Cr1における仮想OS103の実行時間は、第1割当て時間Tr1内に実行された実行時間Pr1と、第2割当て時間Tr2内に実行された実行時間Pr2とを足した時間となる。この時間(Pr1+Pr2)は、仮想OS103を連続して実行した場合の実行時間Prと実質的に等しい。
次に、実施形態1にかかる情報処理システム1の動作を、図面を用いて詳細に説明する。図6は、実施形態1にかかる情報処理システムの動作例を示すシーケンス図である。なお、図6では、管理者が仮想OS103Bのイメージファイルを作成し、サーバ100において仮想OS103Bを起動する場合を例示する。
図6に示すように、まず、管理者が端末130へ仮想OS103Bの作成指示を入力すると、端末130は、仮想OS103Bを作成する指示が記されたメッセージM1をオーケストレータ110へ送信する(ステップS1)。メッセージM1には、少なくとも仮想OS103Bのイメージファイルを識別するための識別子が含まれる。
次に、オーケストレータ110のコントローラ111は、メッセージM1に含まれる識別子に対応するイメージファイルIF1をストレージシステム120から取得する(ステップS2)。また、コントローラ111は、ストレージシステム120にイメージファイルIF1のコピー1F2を保存する(ステップS3)。そして、オーケストレータ110は、仮想OS103Bの作成完了を示すメッセージM2を端末130へ通知する(ステップS4)。
次に、オーケストレータ110は、イメージファイルIF2に含まれる仮想OS103Bをテストモードで起動するコマンドを記したメッセージM3をサーバ100へ送信する(ステップS5)。このメッセージM3には、仮想OS103BのイメージファイルIF2を特定するための識別子も含まれる。
次に、サーバ100は、受信したメッセージM3に基づいてイメージファイルIF2に含まれる仮想OS103Bを起動し(ステップS6)、その後、仮想OS103Bの起動が完了すると、起動完了を示すメッセージM4をオーケストレータ110へ送信する(ステップS7)。
具体的には、ステップS6において、サーバ100のハイパーバイザ102は、受信したメッセージM3に含まれる識別子を用いてストレージシステム120から仮想OS103Bを含むイメージファイルIF2を取得する。次に、ハイパーバイザ102は、1以上のCPUコア101から1つのCPUコア101を選択し、このCPUコア101の100%のCPUリソースを仮想OS103Bに割り当てる。つまり、ステップS6において、仮想OS103Bに割り当てられるCPUリソースの割当て周期と1周期当たりの割当て時間とは同一である。そして、選択されたCPUコア101は仮想OS103Bと仮想OS103B上のタスク104とを実行する。このように仮想OS103Bのテストモードでの起動が完了すると、サーバ100は、ステップS7において、起動完了を示すメッセージM4をオーケストレータ110へ送信する。
次に、オーケストレータ110は、サーバ100へ実行履歴の要求を示すメッセージM5を送信する(ステップS8)。これに対し、サーバ100は、仮想OS103B上の全タスク104の実行履歴をあらかじめ決められた時間分計測して記録し(ステップS9)、記録した実行履歴を記したメッセージM6をオーケストレータ110へ送信する(ステップS10)。なお、ステップS10におけるサーバ100からオーケストレータ110への実行履歴の通知方法は、種々変更可能である。たとえば、タスク104Bとタスク104Cからハイパーバイザ102へ開始時刻と終了時刻とを渡すAPI(Application Programming Interface)を仮想OS103Bがタスク104Bとタスク104Cへ提供してもよい。この場合、タスク104Bおよびタスク104Cが開始時刻および終了時刻を記録し、ハイパーバイザ102へAPIを通じて渡す。そしてハイパーバイザ102は開始時刻と終了時刻とを実行履歴としてオーケストレータ110へ送信してもよい。または、仮想OS103Bがタスク104Bとタスク104Cの実行開始時刻と実行終了時刻とを記録し、記録された実行開始時刻と実行終了時刻とを実行履歴としてハイパーバイザ102がオーケストレータ110へ送信してもよい。また、ハイパーバイザ102を経由する代わりに、タスク104B、タスク104Cまたは仮想OS103Bが直接オーケストレータ110へ実行履歴を送信してもよい。
次に、オーケストレータ110は、受信したメッセージM6に含まれる実行履歴から、仮想OS103Bに割り当てるCPUリソースを計算する(ステップS11)。計算された仮想OS103Bに割り当てるべきリソース量は、たとえば記憶部114に記憶される。
次に、オーケストレータ110のコントローラ111は、サーバ100にテストモードの終了を指示するメッセージM7を送信する(ステップS12)。これに対し、サーバ100は、メッセージM7に含まれるテストモードの終了指示に従い、仮想OS103Bを停止する(ステップS13)。つづいて、サーバ100は、仮想OS103Bの停止が完了したことを通知するメッセージM8をオーケストレータ110へ送信する(ステップS14)。また、オーケストレータ110は、端末130へテストモードを終了したことを通知するメッセージM9を送信する(ステップS15)。
端末130がメッセージM9を受信した後、管理者が仮想OS103Bの起動指示を端末130に入力すると、端末130は、仮想OS103Bの起動を示すメッセージM10をオーケストレータ110へ送信する(ステップS16)。メッセージM10を受信したオーケストレータ110のコントローラ111は、記憶部114から仮想OS103Bに割り当てるリソース量を取得し、このリソース量を仮想OS103Bの起動指示とともにメッセージM11に含めてサーバ100へ送信する(ステップS17)。
次に、サーバ100は、メッセージM11に記載されたリソース量に従って仮想OS103BにCPUリソースを割り当てるとともに、仮想OS103Bを起動する(ステップS18)。その際、サーバ100のハイパーバイザ102は、仮想OS103BをRate Monotonic Schedulingでスケジュールしてもよい。または、ハイパーバイザ102は、仮想OS103BをEarliest Deadline Firstでスケジュールしてもよい。いずれにせよ、ハイパーバイザ102は、仮想OS103Bに割当てるリソースR2を(Π2,Θ2)として、CPUコア101が周期Π2毎に仮想OS103B上のタスク104を多くとも時間Θ2だけ実行するように、スケジュールを組み立てる。
次に、サーバ100は、仮想OS103Bの起動が完了したことを示すメッセージM12をオーケストレータ110へ送信する(ステップS19)。これに対し、オーケストレータ110は、仮想OS103Bの起動が完了したことを示すメッセージM13を端末130へ送信する(ステップS20)。これにより、仮想OSへ割り当てるリソース量の算出を目的としたテストモードの実行から実際の仮想OSの実行までの実施形態1による動作が完了する。
ここで、上記図6のステップS11におけるリソース量の計算方法について、以下に説明する。リソース量を計算するにあたり、オーケストレータ110は、少なくともステップS11より前の任意のタイミングで、タスク104Bおよびタスク104Cの実行周期を取得する。ただし、オーケストレータ110は、タスク104Bおよびタスク104Cの実行周期をそれぞれ異なるタイミングで取得しても良い。
オーケストレータ110は、以下のいずれかの方法で仮想OS103B上のタスク104Bの実行周期を取得してよい。たとえば、タスク104Bの実行周期をあらかじめ管理者が図1に示すオーケストレータ110の記憶部114に保存しておき、これをオーケストレータ110のリソース計算部112がコントローラ111を介して取得するようにしてもよい。もしくは、タスク104Bの実行周期を記したファイルをあらかじめストレージシステム120に保存しておき、このファイルをオーケストレータ110がネットワーク140を介して取得してリソース計算部112に渡すようにしてもよい。仮想OS103Bのプロバイダがタスク104Bの実行周期を記したファイルを仮想OS103Bのイメージとともに配布した場合、管理者がタスク104の実行周期を入力する手間を省くことができる。
または、オーケストレータ110は、サーバ100から任意のタイミングでタスク104Bの実行周期を記したメッセージを受信して、タスク104Bの実行周期を記憶部114に保存しておいてもよい。その場合、サーバ100のハイパーバイザ102、または、仮想OS103Bが、オーケストレータ110へ送信するメッセージにタスク104Bの実行周期を記載するようにしてもよい。もしくは、タスク104Bが、自身の実行周期をオーケストレータ110へ直接通知してもよい。その場合、たとえばタスク104Bの実行周期が変更された場合でも、管理者がタスク104Bの実行周期を入力し直さなければならないという手間を省くことができる。
または、サーバ100がメッセージM6にタスク104Bの実行周期を記載することで、タスク104Bの実行履歴と共にオーケストレータ110へ送信してもよい。その場合、オーケストレータ110は、一度で実行周期と実行履歴とを取得することができる。オーケストレータ110がタスク104Cの実行周期を取得する方法も、上記のいずれかの方法でよい。
次に、オーケストレータ110が仮想OS103B上のタスク104の実行周期と実行履歴とから仮想OS103Bに割り当てるリソース量を計算する方法を説明する。図7は、仮想OS103Bに割り当てるリソース量を算出する際のオーケストレータの動作を示すフローチャートである。以下、図7に示すオーケストレータ110の動作の説明において、タスク104はタスク104Bおよびタスク104Cを指す。
図7に示すように、まず、コントローラ111が、サーバ100から実行履歴を含むメッセージM6を受信し(ステップS101)、かつ、タスク104の実行周期を取得すると(ステップS102)、受信したメッセージM6に含まれる実行履歴と、取得したタスク104の実行周期とを、負荷計算部113へ入力する(ステップS103)。
タスク104の実行履歴と実行周期とを取得した負荷計算部113は、仮想OS103B上で動作する全てのタスク104のうち未選択のタスクを1つ選択する(ステップS104)。負荷計算部113が選択したタスクをタスクαと記す。タスクαについて実行履歴を解析することで、タスクαが必要とするCPUリソースの量を計算する(ステップS105)。次に、負荷計算部113は、仮想OS103B上で動作する全てのタスク104についてCPUリソースの量を計算したか否かを判定し(ステップS106)、全てのタスク104についてのリソース量の計算が完了していない場合(ステップS106;NO)、ステップS1024へリターンする。これにより、仮想OS103B上で動作する全てのタスク104について、各タスク104が必要とするリソースの量が計算される。
次に、リソース計算部112は、負荷計算部113によって計算された各タスク104が必要とするリソース量を用いて、仮想OS103Bに割り当てるリソース量を計算する(ステップS107)。そして、コントローラ111は、仮想OS103Bに割り当てるリソースの量を記憶部114に保存する(ステップS108)。
また、図7のステップS105おける負荷計算部113の動作例を、図8を用いて説明する。図8には、仮想OS103B上で動作するタスク104の数が2である場合を例示するが、仮想OS上で動作するタスクの数には制限がない。そこで、以下では仮想OS103上で動作するタスクの数をnで表す。また、仮想OS103B上で動作するタスク104をT(i)とする。変数iは0≦i<nを満たす整数である。さらに、実行履歴に含まれるタスクT(i)のうち最も早い開始時刻の直前のタスクT(i)のデッドラインの時刻をD(i,0)とし、実行履歴に含まれるタスクT(i)のうち最も遅い終了時刻の直後のタスクT(i)のデッドラインの時刻をD(i,m)とする。さらにまた、時刻D(i,0)から時刻D(i,m)の間のタスクT(i)のデッドラインの時刻をD(i,j)(但し、jは0≦j≦mを満たす整数)とし、時刻D(i,j)から時刻D(i,j+1)(但し、0≦j≦m−1)の間の期間をI(i,j)とする。
まず、負荷計算部113は、それぞれの期間I(i,j)に含まれるタスクT(i)の実行時間(分割されている場合はその総量)C(i,j)を求める。具体的には、負荷計算部113は、変数jに0をセットし(ステップS111)、実行期間が期間I(i,j)に含まれるタスクT(i)の実行時間C(i,j)を計算する(ステップS112)。つぎに、変数jを1つインクリメントし(ステップS113)、インクリメント後の変数jがmに達したか否かを判定する(ステップS114)。変数jがmに達していない場合(ステップS114;NO)、負荷計算部113は、ステップS112へリターンし、以降、変数jがmに達するまで、ステップS112〜S114を繰り返すことで、それぞれの期間I(i,j)に含まれるタスクT(i)の実行時間C(i,j)を求める。
なお、実行履歴に含まれるタスクT(i)のそれぞれの開始時間をS(i,k)、終了時刻をE(i,k)とすると、実行時間C(i,j)は以下の式(1)で計算することできる。
C(i,j)=Σ{E(i,k)−S(i,k)} …(1)
(ただし、E(i,k)およびS(i,k)は期間I(i,j)に含まれる)
次に、負荷計算部113は、タスクT(i)に対して必要最小限のリソースRを求める(ステップS115)。ここで、タスクT(i)に対する必要最小限のリソースR(i)は、割り当て周期Π(i)と1周期あたりの割当て時間Θ(i)とで定義することができる。たとえば、負荷計算部113は、割り当て周期Π(i)をタスクT(i)の実行周期とすることができる。
また、負荷計算部113は、割当て時間Θ(i)を実行時間C(i,j)の最小値(但し、0≦j≦m−1)としてもよいし、実行時間C(i,j)の最大値(但し、0≦j≦m−1)としてもよい。または、負荷計算部113は、割当て時間Θ(i)を実行時間C(i,j)の平均値(但し、0≦j≦m−1)としてもよい。もしくは、負荷計算部113は、実行時間C(i,j)のうち平均値に近いものから(m・X)個を選び、その最大値を割当て時間Θ(i)としてもよい。なお、Xは、0<X<1を満たす実数であれば如何なる値であってもよい。
次に、負荷計算部113は、タスクT(i)に対して求めた必要最小限のリソースR(i)に対し、余裕を付加することで、新たなリソースR1(i)を求める(ステップS116)。たとえば、負荷計算部113は、リソースR1(i)の割り当て周期Π1(i)を周期Π(i)と同じタスクT(i)の実行周期にする。リソースR1(i)は、タスクT(i)が必要とするリソースを表す。
負荷計算部113は、余裕を含むリソースR1(i)の割当て時間Θ1(i)を、以下の式(2)で計算してもよい。なお、式(2)において、ε(i)はリソースR(i)に対して設定する余裕である。式(2)において、余裕ε(i)は時間で定義される。
Θ1(i)=Θ(i)+ε(i) …(2)
また、負荷計算部113は、たとえば以下の式(3)に示されるルールで余裕ε(i)を設定してもよい。式(3)においても、余裕ε(i)は時間で定義される。
Π(a)≦Π(b)の場合、ε(a)≦ε(b) …(3)
実行周期が長いタスクほど、実行履歴に含まれる期間Iの数が少ないため、実行時間C(i,j)はばらつく。そこで、上記の式(3)のように、実行周期が長いタスクほど、大きな余裕ε(i)を加えることで、最終的に仮想OS103Bに割り当てたリソースが不足する事態を回避することができる。
また、負荷計算部113は、たとえば以下の式(4)に示されるルールで余裕ε(i)を設定してもよい。
Θ(a)≦Θ(b)の場合、ε(a)≦ε(b) …(4)
また、負荷計算部113は、たとえば余裕ε(i)を以下の式(5)で計算してもよい。
ε(i)=k×δ(i) …(5)
なお、式(5)において、δ(i)はタスクT(i)の実行時間のC(i,j)(0≦j≦m−1)の分散または標準偏差である。または、δ(i)は実行時間C(i,j)(0≦j≦m−1)の最大値から最小値を引いた値でもよい。また、式(5)におけるkはあらかじめ決められた0より大きい実数の定数である。
次に、図7のステップS107におけるリソース計算部112の動作例を説明する。リソース計算部112は、各タスクに必要なリソースR1(i)(0≦i<n)を入力として、たとえば非特許文献1に記載の方法を用いてリソースR2=(Π2,Θ2)を計算し、リソースR2を仮想OS103に割り当てても良い。
また、リソース計算部112は、仮想OS103Bに対して計算したリソースR2に余裕ψを加えて新たなリソースR3=(Π3、Θ3)を計算し、リソースR3を仮想OS103に割り当ててもよい。余裕ψは時間で定義される。たとえば、リソース計算部112はΠ3=Π2−ψにするか、Θ3=Θ2+ψとすることで仮想OS103Bに割り当てるリソースに余裕を加える。また、たとえば、リソース計算部112は、各タスク104の実行周期Π(i)の分散が小さいほど余裕ψを大きくしてもよい。
たとえば仮想OS103BがRate Monotonic Schedulingなどの静的優先度に基づくスケジューリングアルゴリズムを用いる場合、割り当て周期Π(i)の分散が小さいほど割り当て周期Π3に占める割当て時間Θ3の割合が大きいため、タスクT(i)のいずれかがリソース不足になる可能性が高くなる。そこで、割り当て周期Π(i)の分散が小さい場合に余裕ψを大きくすることで、タスクT(i)のいずれかがリソース不足になる可能性を小さくできる。
また、リソース計算部112は、たとえば仮想OS103B上で動作する各タスクT(i)のうち最大の実行周期Πから最小の実行周期Πを引いた値が小さいほど余裕ψを大きくしてもよい。これにより、分散を計算するより小さい計算量で余裕ψを計算できる。
さらに、リソース計算部112は、リソースR2に加える余裕ψを、以下の式(6)で計算することで、仮想OS103Bがリソースを使わない割合を必ず値Ωよりも大きくしてもよい。
Δ=1−Σ{Θ(i)/Π(i)}
ψ=Π2×(Ω―Δ) (Δ<Ωの場合)または0(Δ≧Ωの場合) …(6)
なお、式(6)において、Ωは、あらかじめ決められた値である。Δは、仮想OS103BにリソースR2を割り当てた場合における、仮想OS103Bがリソースを使わない割合の推定値を示す。
上記した余裕εおよびψの算出方法のいずれにおいても、リソース計算部112は、余裕εまたはψは、各タスクT(i)の実行周期または1周期あたりの実行時間に基づいて決定されればよい。
以上のように、実施形態1によれば、十分でかつ可能な限り少ないCPUリソースを、リアルタイムタスクを実行する仮想マシンに提供することが可能になる。
なお、実施形態1では、オーケストレータ110は、実際にサーバ100の仮想OS103B上で動作するタスク104の実行期間を計測させる機能を備えるため、精度よく1周期当たりの実行時間を取得可能である。
また、オーケストレータ110は、実行履歴を用いて計算した仮想OS103B上の各タスクT(i)に対する最小限のリソース量に余裕を加えるため、仮想OS103B上で動作するいずれかのタスクT(i)がリソース不足になることを防止可能である。
さらに、オーケストレータ110は、タスクT(i)に対する最小限のリソース量に加える余裕を、タスクT(i)の実行周期に基づいて決定するため、余裕を最小限にすることができる。
さらにまた、オーケストレータ110は、タスクT(i)の実行周期の分散が大きい仮想OSほど加える余裕を小さくすることで、加える余裕を最小限にすることができる。
さらにまた、オーケストレータ110は、サーバ100に実際にタスクT(i)の実行期間を計測するよう指示する機能を備える。これにより、たとえばサーバ100が異なるパフォーマンスを備えるサーバに置き換えられる場合であっても、管理者がタスクT(i)の1周期当たりの実行時間を入力する手間を省くことができる。
なお、実施形態1において、仮想OS103B上で動作する各タスクT(i)に対する必要最小限のリソースがあらかじめストレージシステム120またはオーケストレータ110の記憶部114に記憶されている場合、オーケストレータ110、ストレージシステム120およびサーバ100は、図6に示すステップS5〜S9およびステップS12〜S14を省略することができる。この場合、仮想OS103Bに余分なリソースを割り当てるための時間を短縮することができる。
また、サーバ100は、仮想OS103Bに複数のCPUコア101を割り当ててもよい。その場合、図6に示すステップS17において、オーケストレータ110は1以上のタスクを1以上のグループに分けてよい。そして、オーケストレータ110は、それぞれのグループに割り当てるリソース量を計算してよい。計算されたグループ毎のリソース量は、図6に示すメッセージM11に含められてよい。さらに、サーバ100は、同一グループに属すタスク104を同一のCPUコア101で実行してもよい。
さらに、実施形態1において、サーバ100がタスク104の実行時間を計測する計測期間は、あらかじめ決められた時間であってもよい。または、計測期間は、あらかじめ決められた回数であってもよい。または、計測期間は、1回の実行周期あたりの実行時間の分散があらかじめ決められた値以下になるまでの期間であってもよい。
(実施形態2)
次に、実施形態2にかかるスケジューリング装置、システム、装置、方法およびプログラムを、図面を参照して詳細に説明する。上述した実施形態1では、仮想OS103がテストモードを備える場合を例示した。これに対し、実施形態2では、仮想OS103がテストモードを備えていない場合を例示する。そこで、実施形態2では、仮想OS103が起動している任意のタイミングで、オーケストレータ110が自動的に仮想OS103に割り当てる必要最小限のリソースを計算する。
実施形態2にかかる情報処理システムの構成は、実施形態1において図1を用いて説明した情報処理システム1と同様であってよいため、ここでは重複する説明を省略する。
図9は、実施形態2にかかる情報処理システムの動作例を示すシーケンス図である。なお、実施形態2にかかる情報処理システムの動作を説明するにあたり、図1に示す仮想OS103Bのイメージファイルがストレージシステム120に保存されているとする。
図9に示すように、まず、管理者がストレージシステム120に保存された仮想OS103Bの起動指示を端末130に入力すると、端末130は、仮想OS103Bを起動する指示が記されたメッセージM31をオーケストレータ110へ送信する(ステップS31)。これに対し、オーケストレータ110は、仮想OS103Bの起動指示を含むメッセージM32をサーバ100へ送信する(ステップS32)。なお、メッセージM31およびM32には、少なくとも仮想OS103BのイメージファイルIF1を識別するための識別子が含まれる。また、メッセージM32には、仮想OS103Bに十分なリソース量を割り当てるための指示が含まれていてもよい。十分なリソース量とは、たとえばCPUコア1つ分のCPUリソースであってよい。この場合、仮想OS103Bに割り当てられるリソースの割り当て周期と割り当て時間が等しい。
次に、サーバ100は、受信したメッセージM32に基づいてイメージファイルIF1に含まれる仮想OS103Bを起動し(ステップS33)、その後、仮想OS103Bの起動が完了すると、起動完了を示すメッセージM34をオーケストレータ110へ送信する(ステップS34)。
具体的には、ステップS33において、サーバ100は、仮想OS103BのイメージファイルIF1を要求するメッセージM33をストレージシステム120に送信する。これに対し、ストレージシステム120は、要求されたイメージファイルIF1を読み出し、これをサーバ100へ送信する。
また、ステップS33では、サーバ100は、起動する仮想OS103BにCPUリソースを割り当てる。たとえば、サーバ100は、仮想OS103BにCPUコア1つ分のCPUリソースを割り当てる。その場合、仮想OS103BがCPUコア1つを占有することが可能になるため、仮想OS103Bまたは仮想OS103B上で動作するタスク104Bとタスク104CはいつでもCPUコアを利用することが可能である。このとき、仮想OS103Bに割り当てられたCPUリソースの割当て周期および1周期当たりの割当て時間は同一であってよい。その後、サーバ100は、イメージファイルIF1に含まれる仮想OS103Bのプログラムコードを実行して仮想OS103を起動する。
その後、仮想OS103Bの起動が完了したことを示すメッセージM34をサーバ100から受信したオーケストレータ110は、端末130へ仮想OS103Bの起動が完了したことを示すメッセージM35を送信する(ステップS35)。
仮想OS103Bが起動され、任意の時間が経過した後、オーケストレータ110は、実行履歴の要求を示すメッセージM36をサーバ100へ送信する(ステップS36)。これに対し、サーバ100は、仮想OS103B上で実行される全てのタスク104の実行履歴をあらかじめ決められた時間の間計測して記録し(ステップS37)、記録した実行履歴を記したメッセージM37をオーケストレータ110へ送信する(ステップS38)。実行履歴を取得したオーケストレータ110は、仮想OS103Bに割り当てるリソース量を計算する(ステップS39)。
なお、ステップS36〜S39におけるオーケストレータ110およびサーバ100の動作は、図6のステップS8〜S11に示した動作と同様である。
次に、オーケストレータ110は、仮想OS103Bのリソース量の縮小を示すメッセージM38をサーバ100へ送信する(ステップS40)。このメッセージM38には、仮想OS103BのCPUリソースの割当て周期および1周期当たりの時間が記載される。
次に、サーバ100は、メッセージM38に記載された割当て周期および1周期当たりの時間に従って、仮想OS103Bに割り当てるリソース量を縮小する(ステップS41)。その後、サーバ100は、リソースの縮小が完了したことを示すメッセージM39をオーケストレータ110へ送信する(ステップS42)。
以上のように、実施形態2によれば、実施形態1と同様に、十分でかつ可能な限り少ないリソースを、リアルタイムタスクを実行する仮想マシンに提供することが可能になる。
また、実施形態2では、仮想OS103Bが起動している任意のタイミングで、オーケストレータ110が自動的に仮想OS103Bに割り当てる必要最小限のリソースを計算する。そのため、管理者は、仮想OS103Bを起動する前に仮想OS103B上の全タスク104の実行履歴の計測完了を待つ必要なく、仮想OS103Bの作成指示を入力することができる。
なお、実施形態2において、仮想OS103B上で動作する各タスク104に対する必要最小限のリソースがあらかじめストレージシステム120またはオーケストレータ110の記憶部114に記憶されている場合、オーケストレータ110、ストレージシステム120およびサーバ100は、図9に示すステップS36〜S38を省略することができる。この場合、仮想OS103Bに余分なリソースを割り当てるための時間を短縮することができる。
また、サーバ100は、仮想OS103Bに複数のCPUコア101を割り当ててもよい。その場合、図9に示すステップS39において、オーケストレータ110は1以上のタスクを1以上のグループに分けてよい。そして、オーケストレータ110は、それぞれのグループに割り当てるリソース量を計算してよい。計算されたグループ毎のリソース量は、図9に示すメッセージM38に含められてよい。さらに、サーバ100は、同一グループに属すタスク104を同一のCPUコア101で実行してもよい。
さらに、実施形態2において、サーバ100がタスク104の実行時間を計測する計測期間は、あらかじめ決められた時間であってもよい。または、計測期間は、あらかじめ決められた回数であってもよい。または、計測期間は、1回の実行周期あたりの実行時間の分散があらかじめ決められた値以下になるまでの期間であってもよい。この場合、仮想OS103に割り当てるリソースに加える余裕εまたは余裕ψを小さくすることができる。
さらにまた、実施形態2において、オーケストレータ110は、ステップS36〜S42までの工程を2回以上実行してもよい。その際、繰返しの間に任意の時間間隔を設けるとよい。この場合、サーバ100は、ステップS37の前に仮想OS103に割当てるリソースを増やしてもよい。
(実施形態3)
つぎに、実施形態3にかかるスケジューリング装置、システム、装置、方法およびプログラムを、図面を参照して詳細に説明する。上述した実施形態1および2では、リソース量を計算する装置(オーケストレータ110)と実際にリソースを仮想OS103Bに割り当てる装置(サーバ100)とが異なっていた。これに対し、実施形態3では、仮想OS103Bを実行するサーバと同じサーバ100が、仮想OS103Bに割り当てるリソース量を計算する。
図10に、実施形態3にかかる情報処理システムの構成例を示す。図10に示すように、情報処理システム2は、1台以上のサーバ200と、ストレージシステム120と、端末130とがネットワーク140を介して相互に接続された構成を有する。ただし、図10において、サーバ200は、ネットワーク140に接続されていてもよいし、接続されなくてもよい。
図10において、サーバ200は、タスク104A〜104C、仮想OS103A〜103B、ハイパーバイザ102およびCPUコア101を備える。これらの構成および動作は、それぞれ実施形態1または2において例示したタスク104、仮想OS103、ハイパーバイザ102およびCPUコア101と同様であってよい。
また、サーバ200は、リソース割当て部210をさらに備える。リソース割当て部210は、たとえば上述したオーケストレータ110の機能を実現するプログラムであり、リソース計算部112、負荷計算部113、記憶部114、およびコントローラ211を備える。リソース計算部112、負荷計算部113および記憶部114の構成および動作は、それぞれ実施形態1または2において例示したリソース計算部112、負荷計算部113、記憶部114と同様であってよい。コントローラ211は、コントローラ111と異なり、同一サーバ200内で、直接ハイパーバイザ102と通信する。
次に、実施形態3にかかる情報処理システム2の動作例を、図11を用いて説明する。図11に示すように、まず、管理者がストレージシステム120に保存された仮想OS103Bの起動指示を端末130に入力すると、端末130は、仮想OS103Bを起動する指示が記されたメッセージM41をサーバ200へ送信する(ステップS41)。なお、メッセージM41には、少なくとも仮想OS103BのイメージファイルIF1を識別するための識別子が含まれる。
次に、サーバ200のコントローラ211は、受信したメッセージM41に基づいてイメージファイルIF1に含まれる仮想OS103Bを起動し(ステップS42)、その後、仮想OS103Bの起動が完了すると、起動完了を示すメッセージM43を端末130へ送信する(ステップS43)。
具体的には、ステップS42において、サーバ200は、仮想OS103BのイメージファイルIF1を要求するメッセージM42をストレージシステム120に送信する。これに対し、ストレージシステム120は、要求されたイメージファイルIF1を読み出し、これをサーバ200へ送信する。
また、ステップS42では、サーバ200は、起動する仮想OS103BにCPUリソースを割り当てる。たとえば、サーバ200は、仮想OS103BにCPUコア1つ分のCPUリソースを割り当てる。その場合、仮想OS103BがCPUコア1つを占有することが可能になるため、仮想OS103Bまたは仮想OS103B上で動作するタスク104はいつでもCPUコアを利用することが可能である。このとき、仮想OS103Bに割り当てられたCPUリソースの割当て周期および1周期当たりの割当て時間は同一であってよい。その後、サーバ200は、イメージファイルIF1に含まれる仮想OS103Bのプログラムコードを実行して仮想OS103Bを起動する。
次に、サーバ200は、仮想OS103B上で実行される各タスク104の実行履歴を計測する(ステップS44)。ステップS44では、サーバ200のコントローラ211は、ハイパーバイザ102に、実行履歴を要求するメッセージを渡す。これに対し、ハイパーバイザ102は、仮想OS103B上の各タスク104の開始時刻および終了時刻を計測する。そして、ハイパーバイザ102は、実行履歴をコントローラ211に渡す。なお、ステップS44において、ハイパーバイザ102の代わりに、仮想OS103Bまたは仮想OS103B上のタスク104が開始時刻および終了時刻を計測してもよい。
次に、サーバ200のリソース割当て部210は、仮想OS103Bに割り当てるリソース量を計算する(ステップS45)。ステップS45における負荷計算部113およびリソース計算部112の動作は、図6のステップS11における負荷計算部113およびリソース計算部112の動作と同様であってよい。
次に、サーバ200のコントローラ211は、仮想OS103Bに割り当てるリソース量を縮小する(ステップS46)。ステップS46の動作は、図9のステップS41と同様であってよい。
以上のように、実施形態3によれば、実施形態1または2と同様に、十分でかつ可能な限り少ないCPUリソースを、リアルタイムタスクを実行する仮想マシンに提供することが可能になる。
なお、実施形態1〜3では、サーバ100または200が仮想OS103Bに1つのCPUコア101のリソースを割り当てるが、仮想OS103Bに割り当てるべきリソース量が1つのCPUコア101のリソースより少ないリソース量で十分であることが判明している場合は、サーバ100または200は、1つのCPUコア101のリソースよりも少ないリソース量を仮想OS103Bに割り当ててもよい。
例えば、オーケストレータ110またはリソース割当て部210は、割当て周期よりも短い1周期当たりの割当て時間を仮想OS103Bに割り当ててもよい。これにより、CPUコア一つ分のリソースを確保する必要がないため、仮想OS103Bを起動するサーバ100または200の候補を多くすることができる。
また、実施形態1〜3において、ストレージシステム120は必須の構成ではない。ストレージシステム120を省略した場合、実施形態1における仮想OS103BのイメージファイルIF2または実施形態2〜3のイメージファイルIF1は、サーバ100または200に保存されていればよい。
また、実施形態1〜3において、サーバ100または200は、直接管理者が仮想OS103Bの起動を操作できるインタフェースを備えていてもよい。この場合、管理者が端末130Bを用いてサーバ100にリモートアクセスする必要がなくなるため、端末130Bを省略することができる。
上記実施形態およびその変形例は本発明を実施するための例にすぎず、本発明はこれらに限定されるものではなく、仕様等に応じて種々変形することは本発明の範囲内であり、更に本発明の範囲内において、他の様々な実施形態が可能であることは上記記載から自明である。例えば実施形態に対して適宜例示した変形例は、他の実施形態と組み合わせることも可能であることは言うまでもない。
1,2…情報処理システム、100,100A〜100C,200…サーバ、101…CPUコア、102…ハイパーバイザ、103,103A〜103B…仮想OS、104,104A〜104C…タスク、110…オーケストレータ、111,211…コントローラ、112…リソース計算部、113…負荷計算部、114…記憶部、120…ストレージシステム、130…端末、140…ネットワーク、210…リソース割当て部

Claims (12)

  1. 仮想OS上で動作する1つ以上のタスクであってそれぞれ予め決められた周期的なデッドラインまでに1回分の処理を完了する必要がある前記1つ以上のタスクが必要とする第1リソース量を取得する負荷計算部と、
    前記第1リソース量に基づいて前記仮想OSに割り当てる第2リソース量を計算するリソース計算部と、
    を備え、
    前記負荷計算部は、各タスクが必要とする最小限の第3リソース量に、各タスクの実行周期または1周期あたりの実行時間に基づく余裕を付加することで、前記第1リソース量を計算する
    スケジューリング装置。
  2. 前記負荷計算部は、前記実行周期の長さ、前記1周期あたりの実行時間の長さ、前記実行周期の分散、前記実行周期の標準偏差、および、前記1つ以上のタスクの前記1周期あたりの実行時間のうち最大値から最小値を引いた値のうち少なくとも1つを用いて前記余裕を計算する
    請求項に記載のスケジューリング装置。
  3. 前記負荷計算部は、前記実行周期が長いタスクほど大きな前記余裕前記第3リソース量に付加することで、前記第1リソース量を計算する
    請求項に記載のスケジューリング装置。
  4. 前記リソース計算部は、前記1つ以上のタスクの実行周期の分散が小さいほど大きな前記余裕前記第3リソース量に付加することで、前記第1リソース量を計算する
    請求項に記載のスケジューリング装置。
  5. 前記仮想OS上で動作する前記1つ以上のタスクの実行履歴を取得するコントローラをさらに備え、
    前記負荷計算部は、前記コントローラにより取得された前記実行履歴に基づいて各タスクが必要とする前記第1リソース量を計算する
    請求項1に記載のスケジューリング装置。
  6. 前記コントローラは、前記1つ以上のタスクの実行周期をさらに取得し、
    前記負荷計算部は、前記実行履歴から各タスクの前記1周期あたりの実行時間を計算し、前記1周期あたりの実行時間から各タスクが必要とする前記第1リソース量を計算する
    請求項5に記載のスケジューリング装置。
  7. 前記実行履歴は、前記1つ以上のタスクの開始時刻と終了時刻とを含み、
    前記負荷計算部は、各タスクの開始時刻と終了時刻とから前記1周期あたりの実行時間を計算する
    請求項5に記載のスケジューリング装置。
  8. 請求項に記載のスケジューリング装置と、
    所定のネットワークを介して前記スケジューリング装置に接続され、前記仮想OSを実行するサーバと、
    を備え、
    前記スケジューリング装置は、前記サーバへ前記仮想OS上で動作する1つ以上のタスクの実行履歴の送信を要求する第1メッセージを送信し、前記サーバから送信された前記実行履歴を含む第2メッセージを受信するとともに、前記リソース計算部で計算された前記第2リソース量を記述した第3メッセージを前記サーバへ送信し、
    前記サーバは、前記第1メッセージを受信すると、前記1つ以上のタスクを実測して前記実行履歴を取得し、取得した前記実行履歴を含む前記第2メッセージを前記スケジューリング装置へ送信するとともに、受信した前記第3メッセージに記述された前記第2リソース量に基づいて前記仮想OSに割り当てられているリソース量を縮小する
    情報処理システム。
  9. 前記スケジューリング装置は、前記第1メッセージを前記サーバへ送信する前に、前記仮想OSに十分なリソース量を割り当てるための第4リソース量を記述した第4メッセージを前記サーバへ送信し、
    前記サーバは、前記第4メッセージを受信すると、前記仮想OSを起動するとともに、前記仮想OSに前記第4リソース量を割り当て、
    前記第4リソース量は、少なくとも前記第2リソース量よりも大きいか等しい
    請求項に記載の情報処理システム。
  10. 請求項に記載のスケジューリング装置と、
    前記仮想OSを実行する1つ以上の演算装置と、
    を備え、
    前記スケジューリング装置は、前記リソース計算部によって計算された前記第2リソース量を前記仮想OSに割り当てる
    情報処理装置。
  11. 1つ以上のタスクを実行する仮想OSへ割り当てるリソースをスケジューリングするコンピュータが実行するスケジューリング方法であって、
    前記1つ以上のタスクそれぞれは、予め決められた周期的なデッドラインまでに1回分の処理を完了する必要があるタスクであり、
    前記コンピュータは、
    前記仮想OS上で動作する前記1つ以上のタスクが必要とする最小限の第1リソース量を計算し、
    各タスクの実行周期または1周期あたりの実行時間に基づく余裕を前記第1リソース量に付加することで、前記1つ以上のタスクが必要とする第2リソース量を計算し、
    前記第2リソース量に基づいて前記仮想OSに割り当てる第3リソース量を計算する
    スケジューリング方法。
  12. 1つ以上のタスクを実行する仮想OSへ割り当てるリソースをスケジューリングするコンピュータを動作させるためのプログラムであって、
    前記仮想OS上で動作する前記1つ以上のタスクであってそれぞれ予め決められた周期的なデッドラインまでに1回分の処理を完了する必要がある前記1つ以上のタスクが必要とする最小限の第1リソース量を計算し、
    各タスクの実行周期または1周期あたりの実行時間に基づく余裕を前記第1リソース量に付加することで、前記1つ以上のタスクが必要とする第2リソース量を計算し、
    前記第2リソース量に基づいて前記仮想OSに割り当てる第3リソース量を計算する
    ことを前記コンピュータに実行させるためのプログラム。
JP2013196961A 2013-09-24 2013-09-24 スケジューリング装置、システム、装置、方法およびプログラム Expired - Fee Related JP6180866B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013196961A JP6180866B2 (ja) 2013-09-24 2013-09-24 スケジューリング装置、システム、装置、方法およびプログラム
US14/482,025 US20150089510A1 (en) 2013-09-24 2014-09-10 Device, system, apparatus, method and program product for scheduling

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013196961A JP6180866B2 (ja) 2013-09-24 2013-09-24 スケジューリング装置、システム、装置、方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2015064657A JP2015064657A (ja) 2015-04-09
JP6180866B2 true JP6180866B2 (ja) 2017-08-16

Family

ID=52692246

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013196961A Expired - Fee Related JP6180866B2 (ja) 2013-09-24 2013-09-24 スケジューリング装置、システム、装置、方法およびプログラム

Country Status (2)

Country Link
US (1) US20150089510A1 (ja)
JP (1) JP6180866B2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150242312A1 (en) * 2013-04-19 2015-08-27 Hitachi, Ltd. Method of managing memory, computer, and recording medium
CN104869168B (zh) * 2015-05-29 2018-02-27 深圳市云舒网络技术有限公司 一种桌面虚拟应用的负载平衡方法
CN104869167B (zh) * 2015-05-29 2018-02-23 深圳市云舒网络技术有限公司 一种服务器和桌面虚拟应用的负载平衡***
CN105099782A (zh) * 2015-08-18 2015-11-25 北京京东世纪贸易有限公司 云环境集群大数据资源的控制方法及***
KR101787262B1 (ko) * 2016-06-01 2017-11-16 현대오트론 주식회사 차량용 전자 제어 유닛 및 차량용 전자 제어 유닛의 태스크 관리 방법
JP6493506B1 (ja) * 2017-12-15 2019-04-03 オムロン株式会社 産業用制御システムとその支援装置、制御支援方法およびプログラム
KR102562834B1 (ko) * 2018-03-19 2023-08-01 주식회사 케이티 스토리지 시스템의 qos 관리 장치 및 그 방법
US10999403B2 (en) 2019-09-27 2021-05-04 Red Hat, Inc. Composable infrastructure provisioning and balancing

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3413369B2 (ja) * 1999-05-07 2003-06-03 松下電器産業株式会社 情報処理装置
JP2002041305A (ja) * 2000-07-26 2002-02-08 Hitachi Ltd 仮想計算機システムにおける計算機資源の割当て方法および仮想計算機システム
US7194385B2 (en) * 2002-11-12 2007-03-20 Arm Limited Performance level setting of a data processing system
JP4580845B2 (ja) * 2005-08-24 2010-11-17 パナソニック株式会社 タスク実行装置
JP5000456B2 (ja) * 2007-10-31 2012-08-15 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. 資源管理システム、資源管理装置およびその方法
US8245234B2 (en) * 2009-08-10 2012-08-14 Avaya Inc. Credit scheduler for ordering the execution of tasks
JP5396339B2 (ja) * 2009-10-28 2014-01-22 株式会社日立製作所 リソース制御方法及びリソース制御システム
JP2013164750A (ja) * 2012-02-10 2013-08-22 Nomura Research Institute Ltd ジョブ実行管理システム
US9223623B2 (en) * 2012-03-28 2015-12-29 Bmc Software, Inc. Dynamic service resource control
US9189260B2 (en) * 2012-09-27 2015-11-17 International Business Machines Corporation Resource allocation for virtual machines and logical partitions
US10241838B2 (en) * 2013-12-09 2019-03-26 International Business Machines Corporation Domain based resource isolation in multi-core systems
US20150309828A1 (en) * 2014-04-24 2015-10-29 Unisys Corporation Hypervisor manager for virtual machine management

Also Published As

Publication number Publication date
JP2015064657A (ja) 2015-04-09
US20150089510A1 (en) 2015-03-26

Similar Documents

Publication Publication Date Title
JP6180866B2 (ja) スケジューリング装置、システム、装置、方法およびプログラム
US10831633B2 (en) Methods, apparatuses, and systems for workflow run-time prediction in a distributed computing system
Ghodsi et al. Choosy: Max-min fair sharing for datacenter jobs with constraints
JP6447120B2 (ja) ジョブスケジューリング方法、データアナライザ、データ解析装置、コンピュータシステム及びコンピュータ可読媒体
CA2900948C (en) Cost-minimizing task scheduler
US9430280B1 (en) Task timeouts based on input data characteristics
US9940162B2 (en) Realtime optimization of compute infrastructure in a virtualized environment
US20140245319A1 (en) Method for enabling an application to run on a cloud computing system
US9479382B1 (en) Execution plan generation and scheduling for network-accessible resources
US10977070B2 (en) Control system for microkernel architecture of industrial server and industrial server comprising the same
JP5687666B2 (ja) スケジューリング装置、システム、方法およびプログラム
US9423957B2 (en) Adaptive system provisioning
US9729610B2 (en) Method for intercepting an instruction produced by an application on a computer
He et al. Scheduling parallel tasks onto opportunistically available cloud resources
US20220261274A1 (en) Automated construction of software pipeline
Zhang et al. Online scheduling of heterogeneous distributed machine learning jobs
Antoniou Performance evaluation of cloud infrastructure using complex workloads
Cuomo et al. Performance prediction of cloud applications through benchmarking and simulation
JP2012181578A (ja) 更新制御装置及びプログラム
Li et al. Joint scheduling and source selection for background traffic in erasure-coded storage
WO2023179387A1 (zh) 云应用调度方法、装置、电子设备及存储介质
Batista et al. Scheduling grid tasks in face of uncertain communication demands
CN115061794A (zh) 调度任务及训练神经网络模型的方法、装置、终端和介质
JP5646560B2 (ja) 仮想os制御装置、システム、方法およびプログラム
Markande et al. Leveraging potential of cloud for software performance testing

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20151102

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160316

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161114

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161122

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170123

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170719

R151 Written notification of patent or utility model registration

Ref document number: 6180866

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees