(57)【要約】      （修正有）【課題】仕掛中の入出力処理が多い仮想計算機の停止時間を短縮する仮想計算制御装置を提供する。【解決手段】仮想計算機を実行する管理ＯＳと、仮想計算機の要求を受け付けて入出力を開始し、入出力実行中、当該仮想計算機に関連付けて備える制御レジスタに残存入出力量を記録するＩＯ手段と、関連付けられた制御レジスタが記録する残存入出力量と同じ値を記録する制御データ記憶領域を仮想メモリ内に備える仮想計算機と、を備える。管理ＯＳは、仮想計算機の制御データ記憶領域から、残存入出力量を取得するＰＦドライバと、ＰＦドライバが得た記残存入出力量が最小である仮想計算機の終了を決定する仮想計算機スケジュール手段と、を備える。【選択図】図１
2018120417.tif 000002
【特許請求の範囲】
【請求項１】
仮想計算機を実行する管理ＯＳと、
前記仮想計算機の要求を受け付けて入出力を開始し、前記入出力実行中、当該仮想計算機に関連付けて備える制御レジスタに残存入出力量を記録するＩＯ手段と、
関連付けられた前記制御レジスタが記録する前記残存入出力量と同じ値を記録する制御データ記憶領域を仮想メモリ内に備える前記仮想計算機と、を備え、
前記管理ＯＳは、前記仮想計算機の前記制御データ記憶領域から、前記残存入出力量を取得するＰＦドライバと、前記ＰＦドライバが得た記残存入出力量が最小である前記仮想計算機の終了を決定する仮想計算機スケジュール手段と、を備える仮想計算機制御装置。
【請求項２】
前記管理ＯＳは、前記仮想計算機の仮想メモリのアドレスを、物理メモリのアドレスに変換するページアドレス変換表を作成する仮想計算機管理手段を備え、
前記ＰＦドライバは、前記ページアドレス変換表を検索して、前記制御データ記憶領域の前記物理メモリのアドレスを取得し、当該アドレスにアクセスして前記残存入出力量を取得する、請求項１の仮想計算機制御装置。
【請求項３】
前記仮想計算機は、前記制御データ記憶領域の仮想アドレスを前記ＩＯ手段に通知するＶＦドライバを備え、
前記ＩＯ手段は、前記制御レジスタと前記制御データ記憶領域間を、ＤＭＡデータ転送により同期させる、請求項２の仮想計算機制御装置。
【請求項４】
特定の物理アドレスへのアクセスを、前記制御レジスタのアクセスに変換するアドレス変換機構を備え、
前記ＶＦドライバは、前記ページアドレス変換表に、前記制御データ記憶領域に対応させて前記特定の物理アドレスを設定する、請求項２乃至３の何れか１項の仮想計算機制御装置。
【請求項５】
前記制御データ記憶領域は、前記入出力中の各バッファを指し示す要素からなる配列と、先頭の前記バッファを指し示す前記要素へのポインタである先頭ポインタと、最後尾の前記バッファを指し示す前記要素へのポインタである最後尾ポインタと、を包含し、
前記ＰＦドライバは、前記残存出力量を、前記先頭ポインタと前記最後尾ポインタとの差分から算出する、請求項１乃至４の何れか１項の仮想計算機制御装置。
【請求項６】
前記仮想計算機スケジュール手段は、前記ＰＦドライバが得た記残存入出力量が小さい順に、複数の前記仮想計算機の終了を決定する、請求項１乃至４の何れか１項の仮想計算機制御装置。
【請求項７】
仮想計算機の要求を受け付けて入出力を開始し、前記入出力実行中、当該仮想計算機に関連付けてＩＯ手段が備える制御レジスタに残存入出力量を記録し、
前記仮想計算機の仮想メモリ内の制御データ記憶領域に、当該仮想計算機に関連付けられた前記制御レジスタが記録する前記残存入出力量と同じ値を格納し、
前記仮想計算機の前記制御データ記憶領域から前記残存入出力量を取得し、前記残存入出力量が最小である前記仮想計算機の終了を決定する、仮想計算機制御方法。
【請求項８】
前記仮想計算機の仮想メモリのアドレスを、物理メモリのアドレスに変換するページアドレス変換表を作成し、
前記ページアドレス変換表を検索して、前記制御データ記憶領域の前記物理メモリのアドレスを取得し、当該アドレスにアクセスして前記残存入出力量を取得する、請求項６の仮想計算機制御方法。
【請求項９】
仮想計算機の要求を受け付けて入出力を開始し、前記入出力実行中、当該仮想計算機に関連付けて備える制御レジスタに残存入出力量を記録するＩＯ手段を備えたコンピュータに、
関連付けられた前記制御レジスタが記録する前記残存入出力量と同じ値を記録する制御データ記憶領域を仮想メモリ内に備える前記仮想計算機を実行する処理と、
前記仮想計算機の前記制御データ記憶領域から前記残存入出力量を取得し、取得した記残存入出力量が最小である前記仮想計算機の終了を決定する処理と、を実行させる仮想計算機制御プログラム。
【請求項１０】
前記仮想計算機の仮想メモリのアドレスを、物理メモリのアドレスに変換するページアドレス変換表を作成する処理と、
前記ページアドレス変換表を検索して、前記制御データ記憶領域の前記物理メモリのアドレスを取得し、当該アドレスにアクセスして前記残存入出力量を取得する処理を、コンピュータに実行させる請求項９の仮想計算機制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想計算機制御装置、仮想計算機制御方法、および、仮想計算機制御プログラム、特に、仮想計算機の停止時間を短縮する装置、方法、および、プログラムに関する。
【背景技術】
【０００２】
特許文献１は、複数の仮想計算機が入出力デバイスを共有しながら物理計算機上で稼働するシステムを開示する。このシステムは、仮想計算機が稼働する物理計算機が、仮想計算機の仕掛中入出力が滞留し続けることによりダウンすることを防止する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第５８４６８３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
複数の仮想計算機が入出力デバイスを共有しながら物理計算機上で稼働する仮想計算機システムが、仮想計算機を安全に停止させるためには、仮想計算機は入出力の完了を待ち合わせる必要がある。仮想計算機の入出力処理に必要な時間は、入出力の完了を待つ場合でも、入出力をキャンセルさせる場合でも、仮想計算機のＣＰＵ（Central Processing Unit）、メモリの解放に掛る時間と比較して長時間を必要とする。そのため、仕掛中の入出力処理が多い仮想計算機の停止を指示すると、仮想計算機の停止にかかる時間が長くなるという課題がある。
【０００５】
本発明は、上記課題を解決する仮想計算機制御装置、仮想計算機制御方法、および、仮想計算機制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の１実施の形態にかかる仮想計算機制御装置は、仮想計算機を実行する管理ＯＳと、前記仮想計算機の要求を受け付けて入出力を開始し、前記入出力実行中、当該仮想計算機に関連付けて備える制御レジスタに残存入出力量を記録するＩＯ手段と、関連付けられた前記制御レジスタが記録する前記残存入出力量と同じ値を記録する制御データ記憶領域を仮想メモリ内に備える前記仮想計算機と、を備え、前記管理ＯＳは、前記仮想計算機の前記制御データ記憶領域から、前記残存入出力量を取得するＰＦドライバと、前記ＰＦドライバが得た記残存入出力量が最小である前記仮想計算機の終了を決定する仮想計算機スケジュール手段と、を備える。
【０００７】
本発明の１実施の形態にかかる仮想計算機制御方法は、仮想計算機の要求を受け付けて入出力を開始し、前記入出力実行中、当該仮想計算機に関連付けてＩＯ手段が備える制御レジスタに残存入出力量を記録し、前記仮想計算機の仮想メモリ内の制御データ記憶領域に、当該仮想計算機に関連付けられた前記制御レジスタが記録する前記残存入出力量と同じ値を格納し、前記仮想計算機の前記制御データ記憶領域から前記残存入出力量を取得し、前記残存入出力量が最小である前記仮想計算機の終了を決定する。
【０００８】
本発明の１実施の形態にかかる仮想計算機制御プログラムは、仮想計算機の要求を受け付けて入出力を開始し、前記入出力実行中、当該仮想計算機に関連付けて備える制御レジスタに残存入出力量を記録するＩＯ手段を備えたコンピュータに、関連付けられた前記制御レジスタが記録する前記残存入出力量と同じ値を記録する制御データ記憶領域を仮想メモリ内に備える前記仮想計算機を実行する処理と、前記仮想計算機の前記制御データ記憶領域から前記残存入出力量を取得し、取得した記残存入出力量が最小である前記仮想計算機の終了を決定する処理と、を実行させる。
【発明の効果】
【０００９】
本発明にかかる仮想計算機制御装置は、仮想計算機の停止時間を短縮する。
【図面の簡単な説明】
【００１０】
【図１】図１は、第１の実施の形態にかかる仮想計算機制御装置１０の構成を示すブロック図である。
【図２】図２は、ＰＦドライバ３５が仮想計算機２０の仕掛中ＩＯリクエストの量を求める様子を示す図である。
【図３】図３は、ページアドレス変換表３４による、各仮想計算機２０の仮想メモリ２２の仮想アドレスとメモリ５０のブル地アドレスとの対応を示す図である。
【図４】図４は、仮想計算機制御装置１０が行う、仮想計算機停止処理のフローチャートである。
【図５】図５は、仕掛中のＩＯリクエストが少ない仮想計算機２００から順番で停止させる場合の効果を説明する図である。
【図６】図６は、第３の実施の形態にかかる仮想計算機制御装置１０の構成を示すブロック図である。
【発明を実施するための形態】
【００１１】
＜第１の実施の形態＞
＜概要＞
本実施の形態にかかる仮想計算機制御装置１０において、管理ＯＳ３０は仮想計算機２０を生成して実行する。仮想計算機制御装置１０は物理計算機を包含しており、管理ＯＳ３０はハイパーバイザを包含している。
【００１２】
仮想計算機制御装置１０において、ＩＯカード６０上のＶＦ部６１が仮想計算機２０に対し仮想的な周辺装置への入出力制御機能である仮想機能(ＶＦ)を提供する。仮想計算機２０上ではＶＦドライバ２３がＩＯカード６０のＶＦ部６１と通信してＶＦを制御する。ＶＦドライバ２３は、ＶＦ部６１を制御するため制御データ構造体２４を持つ。
【００１３】
管理ＯＳ３０上でＩＯカード６０の物理機能（ＰＦ）を制御するＰＦドライバ３５は、制御データ構造体２４をアクセスして、仮想計算機２０上で仕掛中のＩＯリクエスト量を把握する。仮想計算機２０を停止させる必要が有るとき、管理ＯＳ３０上の仮想計算機スケジューラ３２は、仕掛中のＩＯリクエスト量が少ない仮想計算機２０を停止対象として選択する。これにより、仮想計算機スケジューラ３２は、仮想計算機２０の停止時間を短縮し、仮想計算機制御装置１０が有するリソースの使用効率を改善する。
【００１４】
＜構成と各部の動作＞
図１は、本実施の形態にかかる仮想計算機制御装置１０の構成を示すブロック図である。仮想計算機制御装置１０は、ＣＰＵ４０、メモリ５０、ＩＯカード６０、および、ＣＰＵ４０がＩＯカード６０へアクセスするためのルートブリッジ７０を備える。
【００１５】
ＩＯカード６０は、いわゆるＰＣＩ（Peripheral Component Interconnect）ＳＲ-ＩＯＶ（Single Root I/O Virtualization）機能を持つ。ＩＯカード６０は、ＩＯカード６０全体を制御する物理機能（ＰＦ）を提供するＰＦ部６３、と仮想計算機２０からのＩＯ要求を実行する仮想機能（ＶＦ）を提供するＶＦ部６１を持つ。ＶＦ部６１は、仮想計算機２０対応に、制御レジスタ６２とリソースレジスタ６１１（図２参照）を有する。
【００１６】
仮想計算機制御装置１０は、さらに仮想計算機２０に割り当てられた仮想メモリ２２のアドレス（仮想アドレス）を、物理的なメモリ５０のアドレス（物理アドレス）に変換するアドレス変換機構４１を備える。このアドレス変換は、ＣＰＵ４０、または、ＩＯカード６０が仮想メモリ２２にアクセスするときに行われる。
【００１７】
仮想計算機制御装置１０は、さらに、管理ＯＳ３０を備える。管理ＯＳ３０は、仮想計算機２０の停止順序を調整する仮想計算機スケジューラ３２、仮想計算機２０を管理する仮想計算機管理部３３、仮想アドレスと物理アドレスの対応を示すページアドレス変換表３４、および、ＩＯカード６０のＰＦ部６３を制御するＰＦドライバ３５を有する。ページアドレス変換表３４は、アドレス変換機構４１および、後述する仮想計算機アドレス逆変換部３６による、仮想アドレスから物理アドレスへのアドレス変換に用いられる。
【００１８】
ＰＦドライバ３５は、仮想計算機アドレス逆変換部３６、ＶＦアクセス部３７、および、ＩＯカード６０のＶＦ部６１のリソース割り当てなどを管理するＶＦ管理部３８を有する。仮想計算機アドレス逆変換部３６は、管理ＯＳ３０から仮想計算機２０の仮想メモリ２２内のデータを参照できるように、ページアドレス変換表３４を参照して仮想メモリ２２の仮想アドレスからメモリ５０の物理アドレスへのアドレス変換を行う。ＶＦアクセス部３７は、仮想計算機アドレス逆変換部３６を用いて仮想計算機２０上のＶＦドライバ２３が管理する制御データ構造体２４をアクセスする。
【００１９】
仮想計算機２０は、仮想メモリ２２、および、ＩＯカード６０のＶＦ部６１が仮想計算機２０に提供するＶＦを制御してＩＯを処理するＶＦドライバ２３を有する。ＶＦドライバ２３は、仮想メモリ２２上にＩＯカード６０のＶＦの制御レジスタ６２の仕様に対応した制御データ構造体２４を作成する。
【００２０】
仮想メモリ２２上の制御データ構造体２４と、ＩＯカード６０のＶＦの制御レジスタ６２は、同じデータを保持するようにデータの同期がとられる。すなわち一方が変更されると、他方も同様に変更される。データの同期は、例えば、以下のように行われる。
【００２１】
ＶＦドライバ２３は、ＶＦ管理部３８がＶＦに割り当てた仮想アドレスをリソースレジスタ６１１から読み出し、制御データ構造体２４へのアクセスがＶＦの制御レジスタ６２へのアクセスになるようにページアドレス変換表３４のマッピングを設定する。すなわち、制御データ構造体２４の実体がＩＯカード６０上の制御レジスタ６２となるようにアドレスのマッピングが調整される。このため、アドレス変換機構４１は、アクセスされた制御データ構造体２４の仮想アドレスに対して、物理アドレスとして制御レジスタ６２を示すデータが得られると、当該アクセスを制御レジスタ６２へのアクセスに変換する。これにより、ＶＦドライバ２３から仮想計算機２０上の制御データ構造体２４へのアクセスは、ＶＦ部６１の制御レジスタ６２へのアクセスに変換され、ＶＦドライバ２３の制御データ構造体２４とＶＦの制御レジスタ６２の間でデータを同期する事ができる。
【００２２】
ＶＦ部６１は、ＤＭＡ（Direct Memory Access）転送を用いて仮想メモリ２２上の制御データ構造体２４とＩＯカード６０上の制御レジスタ６２を同期しても良い。このとき、ＶＦドライバ２３は、制御データ構造体２４のアドレスをリソースレジスタ６１１へ書き込むことで、制御データ構造体２４のアドレスをＶＦ部６１に通知する。同期は、ＶＦドライバ２３が制御データ構造体２４のデータ更新後、制御レジスタ６２へアクセスして、ＶＦ部６１へ同期の指示を行うイベント駆動、または、ＶＦ部６１が定期的に制御データ構造体２４のデータを読み出すポーリングのタイミングで行われる。
【００２３】
仮想計算機制御装置１０は、全ての仮想計算機２０に対して同じ同期方法を用いても良いし、仮想計算機２０の特性に合わせて、仮想計算機２０毎に異なる同期方法を用いても良い。
【００２４】
図２は、ＰＦドライバ３５が仮想計算機２０の仕掛中ＩＯリクエストの量を求める様子を示す図である。
【００２５】
仮想計算機２０上のＶＦドライバ２３は、仮想計算機２０に割り当てられた仮想メモリ２２上にＩＯカード６０のＶＦの制御レジスタ６２の仕様に対応する制御データ構造体２４を作成する。
【００２６】
仮想計算機２０がデータを送信する場合、ＶＦドライバ２３は、送信データをメモリバッファ２２１のサイズに分割して、仮想計算機２０上のメモリバッファ２２１に格納する。ＶＦドライバ２３は、分割後の送信データを格納したメモリバッファ２２１へのポインタを制御データ構造体２４の配列２４３の要素に格納し、配列２４３の先頭位置と最後尾位置を、制御データ構造体２４の先頭ポインタ２４１と最後尾ポインタ２４２に格納する。
【００２７】
ＶＦ部６１は、データ同期がとられた制御レジスタ６２の先頭ポインタ６２１と最後尾ポインタ６２２を読み出し、先頭ポインタ６２１が最後尾ポインタ６２２と等しいか大きいと、送信データが配列６２３に基づくリングバッファに格納されたことを知る。
【００２８】
ＶＦ部６１が、仮想計算機２０上のメモリバッファ２２１から外部へデータの送信を行う時、物理計算機のアドレス変換機構４１により、仮想計算機２０上のメモリバッファ２２１のアドレスはメモリ５０の物理アドレスに変換される。その後、メモリ５０からＶＦ部６１へＤＭＡ転送を用いた送信データの読み出しが行われる。読み出されたデータは、周辺インターフェース通して外部の周辺装置８０へ送信される。
【００２９】
メモリバッファ２２１の送信を終了したＶＦ部６１は、制御レジスタ６２の先頭ポインタ６２１を更新する。更新された値は、アドレスマッピングもしくはＤＭＡ転送により制御データ構造体２４にも反映される。ＶＦドライバ２３は、制御データ構造体２４の先頭ポインタ２４１と最後尾ポインタ２４２の差分から、制御データ構造体２４に対応する仮想計算機２０の為にＶＦ部６１が仕掛かっているＩＯリクエストの数を把握できる。
【００３０】
ＶＦドライバ２３の持つ制御データ構造体２４の形式は、ＶＦ部６１の制御レジスタ６２の仕様を反映したものである。ＰＦドライバ３５はＶＦの仕様を把握できる。従って、ＰＦドライバ３５は、仮想計算機２０の制御データ構造体２４のアドレスを知る事ができれば、制御データ構造体２４を読み出し、先頭ポインタ２４１と最後尾ポインタ２４２を比較し、ＶＦが仕掛中のＩＯリクエストの数を把握できる。
【００３１】
まず、ＰＦドライバ３５は、ＶＦアクセス部３７によりＶＦ部６１のリソースレジスタ６１１を参照して、ＶＦドライバ２３の制御データ構造体２４の仮想計算機２０の仮想アドレス空間上の先頭アドレスを取得する（図２のａ））。
【００３２】
次にＶＦアクセス部３７は、仮想計算機アドレス逆変換部３６を用いて、仮想計算機２０に割り当てているメモリ５０の物理アドレスを求める（図２のｂ））。
【００３３】
仮想計算機管理部３３は、メモリ５０のページを仮想メモリ２２のページに割り当て、その対応をページアドレス変換表３４で管理する。図３は、ページアドレス変換表３４による、各仮想計算機２０の仮想メモリ２２の仮想アドレスとメモリ５０の物理アドレスとの対応を示す図である。図３のａ）は、例えば、仮想計算機＿１の仮想アドレス0000に、メモリ５０の物理アドレス2000が割り当てられていることを示す。また、仮想計算機＿２の仮想アドレス1000に、メモリ５０の物理アドレス5000が割り当てられていることを示す。図３のｂ）は、この対応を管理するページアドレス変換表３４の例を示している。
【００３４】
仮想計算機アドレス逆変換部３６は、このページアドレス変換表３４を検索し、仮想計算機２０の制御データ構造体２４のアドレスから、この構造体が格納されているメモリ５０のページの物理アドレスを取得する。これによりＰＦドライバ３５は、仮想計算機２０のＶＦドライバ２３が持っている制御データ構造体２４をアクセスできるようになる（図２のｃ））。
【００３５】
ＰＦドライバ３５は、先頭ポインタ２４１と最後尾ポインタ２４２との差分を算出することで、ＶＦドライバ２３のキューの中で仕掛中のＩＯリクエストの数を把握する事ができる（図２のｄ））。
【００３６】
なお、制御データ構造体２４は、仕掛中のＩＯリクエストの数を示す他のデータ、例えば、ＩＯ未完のメモリバッファ２２１のページ数を格納していても良い。
【００３７】
図４は、仮想計算機制御装置１０が行う、仮想計算機２０の停止処理のフローチャートである。仮想計算機制御装置１０は、この処理により、仕掛中のＩＯが最少の仮想計算機２０を停止する。
【００３８】
管理ＯＳ３０が仮想計算機２０の停止要求を受信すると（Ｓ１）、仮想計算機スケジューラ３２は、実行中の仮想計算機２０の中から停止可能な仮想計算機２０を一つ選択する（Ｓ２）。
【００３９】
仮想計算機スケジューラ３２は、ＰＦドライバ３５を呼び出し、ＰＦドライバ３５は、前述した仮想計算機２０上の仕掛中ＩＯリクエストの量を求める手順に従い、選択中の仮想計算機２０が仕掛中のＩＯリクエストの数を求める（Ｓ３乃至Ｓ６）。仮想計算機スケジューラ３２は、このＩＯリクエストの数が、今までに確認した仮想計算機２０のＩＯリクエスト数より少なければ（Ｓ７でＹｅｓ）、選択中の仮想計算機２０を停止候補とする（Ｓ８）。
【００４０】
仮想計算機スケジューラ３２は、全ての仮想計算機２０に対してこの処理を繰り返し（Ｓ９でＮｏ）、仕掛中のＩＯリクエストが最少の仮想計算機２０を選び出す。仮想計算機管理部３３は、仮想計算機スケジューラ３２が選択した仕掛中のＩＯリクエストが最少の仮想計算機２０を停止させる（Ｓ１０）。
【００４１】
なお、仮想計算機制御装置１０の仮想計算機スケジューラ３２、仮想計算機管理部３３、ＰＦドライバ３５（仮想計算機アドレス逆変換部３６等の内部ユニットを含む）および、ＶＦドライバ２３は、論理回路で構成される。ＩＯカード６０内のＶＦ部６１、および、ＰＦ部６３も、論理回路で構成される。これらは、物理計算機に対する付加的な回路として実装される。
【００４２】
ページアドレス変換表３４は、メモリ５０上に配置される。
【００４３】
なお、仮想計算機制御装置１０の仮想計算機スケジューラ３２、仮想計算機管理部３３、ＰＦドライバ３５（仮想計算機アドレス逆変換部３６等の内部ユニットを含む）および、ＶＦドライバ２３は、メモリ５０上に格納され、ＣＰＵ４０によって実行されるプログラムによって実現されても良い。
【００４４】
＜効果＞
本実施の形態にかかる仮想計算機制御装置１０は、仮想計算機２０の停止時間を短縮する。その理由は、管理ＯＳ３０のＰＦドライバ３５が、実行されている仮想計算機２０上の仕掛中ＩＯリクエストの量を求め、仮想計算機スケジューラ３２が、仕掛中のＩＯが最少の仮想計算機２０を停止するように決定するからである。
【００４５】
ＩＯ系の処理時間は、通常のディスクへのアクセスに数ミリ秒、ディスクに異常がありキャンセルタイムアウト待ちが発生すると数秒乃至数十秒になる場合がある。ＣＰＵ４０やメモリ５０のリソース管理のような管理ＯＳ３０内部の処理に比較すると、この処理は桁違いの時間を必要とする。
【００４６】
仮想計算機制御装置１０は、緊急性の高い仮想計算機２０を開始するために必要なリソースが不足した場合、リソースを確保するため、実行中の仮想計算機２０を緊急停止する場合がある。停止する仮想計算機２０を選定する条件に仕掛中ＩＯの有無や仕掛中のリクエスト数を加えることで、仮想計算機制御装置１０は、ＩＯ終了待ちによる仮想計算機２０の終了待ち時間を減らすことが可能となる。これにより、仮想計算機制御装置１０は、緊急性の高い仮想計算機２０の起動までの時間を短縮できる。
【００４７】
＜第２の実施形態＞
第２の実施形態にかかる仮想計算機制御装置１０の仮想計算機スケジューラ３２は、実行中の全ての仮想計算機２０を停止する場合、仕掛中のＩＯリクエストの少ない仮想計算機２０から順番に停止させるよう決定する。その他の点で、本実施の形態の仮想計算機制御装置１０は、第１の実施形態にかかる仮想計算機制御装置１０と同じである。
【００４８】
＜効果＞
本実施形態にかかる仮想計算機制御装置１０は、複数の仮想計算機２０を停止させる場合、全体として停止時間を短くできる。その理由は、仕掛中IＯリクエストの多い仮想計算機２０の停止待ち時間が、仕掛中ＩＯリクエストの少ない仮想計算機２０の停止時間に隠されるからである。すなわち、仕掛中ＩＯリクエストの少ない仮想計算機２０の待ち時間の間に、仕掛中IＯリクエストの多い仮想計算機２０のＩＯが進行するからである（図６のａ））。
【００４９】
逆に、停止する仮想計算機２０の選定に仕掛中のＩＯリクエストの数を考慮しない場合（図６のｂ））、仕掛中ＩＯリクエストの多い仮想計算機２０の停止待ち時間が遮蔽されず、長い時間が必要となる場合がある。すなわち、仕掛中ＩＯ要求の多い仮想計算機２０の停止待ち時間の間に、仕掛中IＯ要求の少ない仮想計算機２０のＩＯが一旦完了しても、新たなＩＯが始まってしまうからである。
【００５０】
＜第３の実施形態＞
図６は、第３の実施の形態にかかる仮想計算機制御装置１０の構成を示すブロック図である。
【００５１】
本実施の形態の仮想計算機制御装置１０は、仮想計算機２０と、仮想計算機２０を実行する管理ＯＳ３０と、ＩＯカード６０と、を備える。
【００５２】
ＩＯカード６０は、仮想計算機２０の要求を受け付けて入出力を開始し、入出力実行中、当該仮想計算機２０に関連付けて備える制御レジスタ６２に残存入出力量を記録する。仮想計算機２０は、関連付けられた制御レジスタ６２が記録する残存入出力量と同じ値を記録する制御データ構造体２４を仮想メモリ２２内に備える。
【００５３】
管理ＯＳ３０は、仮想計算機２０の制御データ構造体２４から、残存入出力量を取得するＰＦドライバ３５と、ＰＦドライバ３５が得た記残存入出力量が最小である仮想計算機２０の終了を決定する仮想計算機スケジューラ３２と、を備える。
【００５４】
制御レジスタ６２と制御データ構造体２４の間のデータ同期は、第１の実施の形態で示されたアドレスマッピングもしくはＤＭＡ転送により実施される。
【００５５】
本実施の形態にかかる仮想計算機制御装置１０は、仮想計算機２０の停止時間を短縮する。その理由は、管理ＯＳ３０のＰＦドライバ３５が、実行されている仮想計算機２０上の仕掛中ＩＯリクエストの量を求め、仮想計算機スケジューラ３２が、仕掛中のＩＯが最少の仮想計算機２０を停止するように決定するからである。
【００５６】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【００５７】
１０    仮想計算機制御装置
２０    仮想計算機
２２    仮想メモリ
２３    ＶＦドライバ
２４    制御データ構造体
３０    管理ＯＳ
３２    仮想計算機スケジューラ
３３    仮想計算機管理部
３４    ページアドレス変換表
３５    ＰＦドライバ
３６    仮想計算機アドレス逆変換部
３７    ＶＦアクセス部
３８    ＶＦ管理部
４０    ＣＰＵ
４１    アドレス変換機構
５０    メモリ
６０    ＩＯカード
６１    ＶＦ部
６２    制御レジスタ
６３    ＰＦ部
７０    ルートブリッジ
８０    周辺装置
２２１    メモリバッファ
２４１    先頭ポインタ
２４２    最後尾ポインタ
２４３    配列
６１１    リソースレジスタ
６２１    先頭ポインタ
６２２    最後尾ポインタ
６２３    配列
【図１】
2018120417.tif 000003
【図２】
2018120417.tif 000004
【図３】
2018120417.tif 000005
【図４】
2018120417.tif 000006
【図５】
2018120417.tif 000007
【図６】
2018120417.tif 000008