(57)【要約】【課題】データの読み出し及び書き込みの性能を向上させる情報処理装置、情報処理システム、情報処理装置制御方法及び情報処理装置制御プログラムの制御方法を提供する。【解決手段】仮想マシン動作部２０は、第１仮想環境を提供する。コンテナ動作部３０は、第１仮想環境とは異なる種類の第２仮想環境を提供する。Ｉ／Ｏ処理部１０２は、ＳＳＤ１３に対する仮想マシン動作部２０からの第１処理要求及びコンテナ動作部３０からの第２処理要求を処理する。統計情報管理部１０３は、第１処理要求及び第２処理要求に関する情報を収集する。スロットリング判定部１０４は、統計情報管理部１０３により収集された情報を基に、仮想マシン動作部２０又はコンテナ動作部３０のいずれを性能低下抑制処理の処理対象とするかを判定する。【選択図】図２
2019021185.tif 000002
【特許請求の範囲】
【請求項１】
第１仮想環境を提供する第１仮想化部と、
前記第１仮想環境とは異なる種類の第２仮想環境を提供する第２仮想化部と、
データを格納する記憶部と、
前記記憶部に対する前記第１仮想化部からの第１処理要求及び前記第２仮想化部からの第２処理要求を処理する処理実行部と、
前記第１処理要求及び前記第２処理要求に関する情報を収集する情報収集部と、
前記情報収集部により収集された前記情報を基に、前記第１仮想化部及び前記第２仮想化部のいずれを性能低下抑制処理の処理対象とするかを判定する判定部と
を備えたことを特徴とする情報処理装置。
【請求項２】
前記第１仮想化部は、仮想マシンが動作する前記第１仮想環境を提供し
前記第２仮想化部は、オペレーティングシステム（ＯＳ）における仮想的な動作環境である前記第２仮想環境を提供する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記判定部は、決定した処理対象からの前記第１処理要求又は前記第２処理要求の前記処理実行部による処理数を抑制することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記判定部は、前記第１仮想化部に対して前記第１処理要求の出力数を抑制する指示することで、前記処理実行部による前記第１処理要求の処理数を抑制することを特徴とする請求項１〜３のいずれか一つに記載の情報処理装置。
【請求項５】
前記判定部は、前記処理実行部に対して前記第２処理要求を処理する割合の低下を指示することで、前記処理実行部による前記第２処理要求の処理数を抑制することを特徴とする請求項１〜４のいずれか一つに記載の情報処理装置。
【請求項６】
演算処理を行う演算処理装置及びデータを格納する記憶装置を有する情報処理システムであって、
前記演算処理装置は、
第１仮想環境を提供する第１仮想化部と、
前記第１仮想環境とは異なる種類の第２仮想環境を提供する第２仮想化部と、
前記記憶装置に対する前記第１仮想化部からの第１処理要求及び前記第２仮想化部からの第２処理要求を処理する処理実行部と、
前記第１処理要求及び前記第２処理要求に関する情報を収集する情報収集部と、
前記情報収集部により収集された前記情報を基に、前記第１仮想化部及び前記第２仮想化部のいずれを性能低下抑制処理の処理対象とするかを判定する判定部と
を備えたことを特徴とする情報処理システム。
【請求項７】
データを格納する記憶装置に対する第１仮想環境からの第１処理要求及び前記第１仮想環境とは異なる種類の第２仮想環境からの第２処理要求を処理し、
前記第１処理要求及び前記第２処理要求に関する情報を収集し、
収集された前記情報を基に、前記第１仮想環境及び前記第２仮想環境のいずれを性能低下抑制処理の処理対象とするかを判定する
ことを特徴とする情報処理装置制御方法。
【請求項８】
データを格納する記憶装置に対する第１仮想環境からの第１処理要求及び前記第１仮想環境とは異なる種類の第２仮想環境からの第２処理要求を処理し、
前記第１処理要求及び前記第２処理要求に関する情報を収集し、
収集された前記情報を基に、前記第１仮想環境及び前記第２仮想環境のいずれを性能低下抑制処理の処理対象とするかを判定する
処理をコンピュータに実行させることを特徴とする情報処理装置制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理システム、情報処理装置制御方法及び情報処理装置制御プログラムの制御方法に関する。
【背景技術】
【０００２】
近年、仮想化技術は、目覚ましい発展を遂げている。仮想化技術とは、サーバやストレージなど物理的な構成を論理的に扱えるようにしてリソースプールを構成し、リソースプールの中の資源を自由に利用して情報処理システムを構築する技術である。例えば、サーバの仮想化では、１台の物理マシン上で複数の仮想マシン（ＶＭ：Virtual  Machine）が稼働する。この仮想化技術を利用することで、リソースの効率的な活用、ハードウェアの初期投資コストの抑制、省電力及び省スペースなどが実現できる。
【０００３】
このような仮想化技術として、ハイパーバイザー型仮想化やコンテナ型仮想化といった技術が提案されている。ハイパーバイザー型仮想化は、上述した仮想マシンを管理するハイパーバイザーが存在し、各仮想マシン上でそれぞれ異なるＯＳ（Operating  System）やアプリケーションが動作する。ハイパーバイザー型仮想化では、仮想マシンはハイパーバイザーを介して動作することになる。これに対して、コンテナ型仮想化は、１つのＯＳ上でコンテナ管理ソフトウェアが動作し、そのコンテナ管理ソフトウェアが複数のアプリケーションをそれぞれ独立したプロセス空間や名前空間を有する異なる環境で動作させる。アプリケーション毎の異なる環境のそれぞれがコンテナと呼ばれる。
【０００４】
また、最近では、情報処理システムに対して、用途に応じた柔軟且つ迅速な拡張が求められるようになってきている。この要望に応えるために、シンプルな構成をとり管理が容易なＨＣＩ（Hyper  Converged  Infrastructure）という技術が注目を集めている。ＨＣＩは、複数のサーバを有する情報処理システムにおいて、各サーバの内蔵ストレージをその情報処理システム内の全てのサーバからアクセスできる仮想的な共有ストレージとする技術である。ＨＣＩにより、サーバなどの情報処理装置上に、仮想化技術を用いて構成した仮想化基盤を用いて演算処理機能とストレージ機能とを統合した仮想化インフラが実現される。
【０００５】
さらに、ＳＳＤ（Solid  State  Drive）などのＮＡＮＤ型フラッシュメモリの低価格化により、ストレージデバイスのＨＤＤ（Hard  Disk  Drive）からＮＡＮＤ型フラッシュ型メモリへの移行が増加している。ＮＡＮＤ型フラッシュメモリは、ＨＤＤと比較して動作速度が速く、ＮＡＮＤ型フラッシュメモリへの移行により、情報処理システムにおける一層の性能向上が見込まれる。
【０００６】
記憶装置に対するデータの読み出し及び書き込みの技術として、レイテンシの長さに応じてＳＳＤに行わせる動作を第１タイプと第２タイプとに分け、第１タイプの動作を優先して行わせるようにスケジューリングする従来技術がある。また、各プログラムから出力されたデータを一時的に記憶域に格納し、プログラムの重要度に応じて優先的に記憶装置へデータを出力する従来技術がある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特表２０１３−５４１７６６号公報
【特許文献２】特開２００６−３２３５３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
コンテナ型仮想化には、各コンテナは異なるＯＳ上で動作することは困難であるなどの制約が存在する。そのため、異なるＯＳで動作させたい場合など運用上の理由などによりハイパーバイザー型仮想化を利用することが望ましい場合が存在する。
【０００９】
しかしながら、ハイパーバイザー型仮想化ではハイパーバイザーを介して記憶装置に対するデータの読み出し及び書き込みが行われる。ハイパーバイザーは、仮想マシンから送信された命令の物理的な記憶装置への書き込み命令への変換や物理的な記憶装置から読み出したデータを仮想マシンへ送信するための変換といった仮想化のための処理を行う。そのため、ハイパーバイザー型仮想化では、記憶装置に対するデータの読み出し及び書き込み時に、仮想化のためのオーバヘッドが発生し、ＮＡＮＤ型フラッシュメモリの性能を生かし切れない。したがって、コンテナ型仮想化による環境とハイパーバイザー型仮想化による環境とを共存させる場合、記憶装置に対するデータの読み出し及び書き込みの性能を向上させることが困難である。
【００１０】
また、レイテンシの長さに応じて動作を第１タイプと第２タイプとに分けて一方を優先的に処理する従来技術を用いても、コンテナ型仮想化による環境とハイパーバイザー型仮想化による環境のいずれからもそれぞれのタイプの動作は指示される。そのため、この従来技術を用いても、仮想化のオーバヘッドは発生するおそれがあり、記憶装置に対するデータの読み出し及び書き込みの性能を向上させることが困難である。
【００１１】
また、プログラムの重要度に応じて記憶装置へ送信するデータの優先度を決定する従来技術を用いても、ハイパーバイザー型仮想化による環境のプログラムの重要度が高いことは考えられる。そのため、この従来技術を用いても、記憶装置に対するデータの読み出し及び書き込みの性能を向上させることが困難である。
【００１２】
開示の技術は、上記に鑑みてなされたものであって、データの読み出し及び書き込みの性能を向上させる情報処理装置、情報処理システム、情報処理装置制御方法及び情報処理装置制御プログラムの制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
本願の開示する情報処理装置、情報処理システム、情報処理装置制御方法及び情報処理装置制御プログラムの制御方法の一つの態様において、第１仮想化部は、第１仮想環境を提供する。第２仮想化部は、前記第１仮想環境とは異なる種類の第２仮想環境を提供する。記憶部は、データを格納する。処理実行部は、前記記憶部に対する前記第１仮想化部からの第１処理要求及び前記第２仮想化部からの第２処理要求を処理する。情報収集部は、前記第１処理要求及び前記第２処理要求に関する情報を収集する。判定部は、前記情報収集部により収集された前記情報を基に、前記第１仮想化部及び前記第２仮想化部のいずれを性能低下抑制処理の処理対象とするかを判定する。
【発明の効果】
【００１４】
１つの側面では、本発明は、記憶装置に対するデータの読み出し及び書き込みの性能を向上させることができる。
【図面の簡単な説明】
【００１５】
【図１】図１は、サーバの仮想化環境を説明するための図である。
【図２】図２は、サーバのブロック図である。
【図３】図３は、統計情報の一例を表す図である。
【図４】図４は、実施例１に係るＩ／ＯスケジューラによるＩ／Ｏ要求の出力の制御のフローチャートである。
【図５】図５は、ＩＯＰＳとレイテンシとの関係の一例を表す図である。
【図６】図６は、仮想サーバからのＩ／Ｏ要求の処理性能がコンテナからのＩ／Ｏ要求の処理性能に比べて大きく悪化する場合のＩＯＰＳとレイテンシとの関係の一例を表す図である。
【図７】図７は、実施例２に係るＩ／ＯスケジューラによるＩ／Ｏ要求の出力の制御のフローチャートである。
【図８】図８は、サーバのハードウェア構成図である。
【発明を実施するための形態】
【００１６】
以下に、本願の開示する情報処理装置、情報処理システム、情報処理装置制御方法及び情報処理装置制御プログラムの実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理装置、情報処理システム、情報処理装置制御方法及び情報処理装置制御プログラムの制御方法が限定されるものではない。
【実施例１】
【００１７】
図１は、サーバの仮想化環境を説明するための図である。図１に示すように、情報処理装置であるサーバ１は、仮想マシン１１、ホスト１２、ＳＳＤ１３を有する。
【００１８】
ホスト１２は、ハイパーバイザー１２１及びＩ／Ｏスケジューラ１０を動作させる。また、ホスト１２は、コンテナ１２２を動作させる。他にも、ホスト１２は、図示しないがＯＳ及びコンテナ管理ソフトウェアなどを動作させる。
【００１９】
ハイパーバイザー１２１は、仮想マシン１１を管理する。例えば、ハイパーバイザー１２１は、仮想マシン１１を生成する。また、ハイパーバイザー１２１は、仮想マシン１１から出力されたＳＳＤ１３に対する読み出し要求及び書き込み要求に対する仮想化処理を行う。
【００２０】
コンテナ１２２は、ホスト１２により実行されるコンテナ管理ソフトウェアにより制御される。例えば、コンテナ１２２は、コンテナ管理ソフトウェアにより割り当てられたそれぞれ異なるプロセス空間や名前空間を用いて処理を行う。
【００２１】
Ｉ／Ｏスケジューラ１０は、仮想マシン１１又はコンテナ１２２から出力されたＳＳＤ１３に対する読み出し要求又は書き込み要求にしたがってＳＳＤ１３に対してデータの読み出し又は書き込みの処理を行う。また、Ｉ／Ｏスケジューラ１０は、仮想マシン１１及びコンテナ１２２から出力されるＳＳＤ１３に対するデータの読み出し要求及び書き込み要求に対してスロットリングを行う。
【００２２】
仮想マシン１１は、ハイパーバイザー１２１によって管理される。仮想マシン１１は、それぞれ異なるＯＳが動作する。仮想マシン１１は、ＳＳＤ１３に対するデータの読み出し処理及び書き込み処理をハイパーバイザー１２１へ出力する。その後、仮想マシン１１は、出力された読み出し要求又は書き込み要求に応じたＳＳＤ１３からの応答をハイパーバイザー１２１を介して取得する。
【００２３】
次に、図２を参照して、本実施例に係るＩ／Ｏスケジューラ１０によるＩ／Ｏ処理について説明する。図２は、サーバのブロック図である。
【００２４】
図２に示すように、サーバ１は、Ｉ／Ｏスケジューラ１０、仮想マシン動作部２０、コンテナ動作部３０及びＳＳＤ１３を有する。仮想マシン動作部２０は、図１における仮想マシン１１を動作させる。コンテナ動作部３０は、図１におけるコンテナ１２２を動作させる。
【００２５】
仮想マシン動作部２０は、アプリケーション実行部２０１、Ｉ／Ｏ受付部２０２、統計情報取得部２０３及びスロットリング部２０４を有する。この仮想マシン動作部２０が、「第１仮想化部」の一例にあたる。
【００２６】
アプリケーション実行部２０１は、仮想マシン１１により実現される。アプリケーション実行部２０１は、アプリケーションを実行する。そして、アプリケーション実行部２０１は、アプリケーションの実行により発生したＳＳＤ１３に対するデータの読み出し要求及び書き込み要求をＩ／Ｏ受付部２０２へ出力する。以下では、ＳＳＤ１３に対するデータの読み出し要求及び書き込み要求を、「Ｉ／Ｏ要求」という。その後、アプリケーション実行部２０１は、出力したＩ／Ｏ要求に対する応答をＩ／Ｏ受付部２０２から受信する。このアプリケーション実行部２０１を実現する仮想マシン１１を含む仮想環境が、「第１仮想環境」の一例にあたる。
【００２７】
統計情報取得部２０３は、Ｉ／Ｏ受付部２０２が出力したＩ／Ｏ要求に関する情報をＩ／Ｏ受付部２０２から取得する。例えば、統計情報取得部２０３は、Ｉ／Ｏ受付部２０２が出力したＩ／Ｏ要求のサイズ、出力の通知及び応答の受信の通知をＩ／Ｏ受付部２０２から取得する。そして、統計情報取得部２０３は、各Ｉ／Ｏ要求について、Ｉ／Ｏサイズの分布や、所定時間毎のＩ／Ｏ発行数及びＩＯＰＳ（Input/output  Operations  Per  Second）といったＩ／Ｏ要求のレイテンシに影響を与える情報を取得する。そして、統計情報取得部２０３は、取得した各Ｉ／Ｏ要求に関する情報をＩ／Ｏ要求の送信元の情報とともにＩ／Ｏスケジューラ１０の統計情報管理部１０３へ出力する。
【００２８】
スロットリング部２０４は、各アプリケーション実行部２０１が出力したＩ／Ｏ要求の入力をＩ／Ｏ受付部２０２から受ける。そして、スロットリング部２０４は、後述するＩ／Ｏスケジューラ１０のスロットリング判定部１０４からスロットリングの実行指示の入力を受けていない場合、Ｉ／Ｏ受付部２０２から入力されたＩ／Ｏ要求を送信元判定部１０１へ出力する。
【００２９】
一方、スロットリング判定部１０４からスロットリングの実行指示の入力を受けていた場合、スロットリング部２０４は、各アプリケーション実行部２０１の出力するＩ／Ｏ要求の数に応じて、アプリケーション実行部２０１毎のスロットリング量の分担を決定する。
【００３０】
そして、スロットリング部２０４は、決定したスロットリング量の分担にしたがって、各アプリケーション実行部２０１から出力されたＩ／Ｏ要求の送信元判定部１０１への出力を制御する。例えば、スロットリング部２０４は、スロットリングを実行する前のＩ／Ｏ要求のＩＯＰＳ、すなわち現在のＩＯＰＳに対するスロットリングを実行した後のＩ／Ｏ要求のＩＯＰＳの割合をスロットリングの設定としてスロットリング判定部１０４から受信する。そして、スロットリング部２０４は、各アプリケーション実行部２０１から出力されるＩ／Ｏ要求の数から、各アプリケーション実行部２０１のスロットリング後のＩＯＰＳの割合を算出する。その後、スロットリング部２０４は、各アプリケーション実行部２０１から出力されるＩ／Ｏ要求のＩＯＰＳが求めた割合となるようにＩ／Ｏ要求の送信元判定部１０１への出力を制御する。例えば、スロットリング部２０４は、Ｉ／Ｏ要求の送信元判定部１０１への出力を一定時間中断するもしくは一定量溜まるまで待機するなどしてＩ／Ｏ要求の送信元判定部１０１への出力を制御する。
【００３１】
また、スロットリング部２０４は、スロットリングを実行中に、スロットリングの解除の指示をスロットリング判定部１０４から受けた場合、スロットリングを停止する。そして、スロットリング部２０４は、Ｉ／Ｏ受付部２０２から入力されたＩ／Ｏ要求を制限せずに送信元判定部１０１へ出力する。
【００３２】
コンテナ動作部３０は、アプリケーション実行部３０１を有する。このコンテナ動作部３０が、「第２仮想化部」の一例にあたる。
【００３３】
アプリケーション実行部３０１は、図１におけるコンテナ１２２により実現される。アプリケーション実行部３０１は、アプリケーションを実行する。そして、アプリケーション実行部３０１は、アプリケーションの実行により発生したＳＳＤ１３に対するＩ／Ｏ要求をＩ／Ｏスケジューラ１０の送信元判定部１０１へ出力する。その後、アプリケーション実行部３０１は、出力したＩ／Ｏ要求に対する応答を送信元判定部１０１から受信する。このアプリケーション実行部３０１を実現するコンテナ１２２を含む仮想環境が、「第２仮想環境」の一例にあたる。
【００３４】
Ｉ／Ｏスケジューラ１０は、送信元判定部１０１、Ｉ／Ｏ処理部１０２、統計情報管理部１０３及びスロットリング判定部１０４を有する。
【００３５】
送信元判定部１０１は、仮想マシン動作部２０のスロットリング部２０４及びコンテナ動作部３０のアプリケーション実行部３０１からＩ／Ｏ要求の入力を受ける。この仮想マシン動作部２０のスロットリング部２０４から出力されたＩ／Ｏ要求が、「第１処理要求」の一例にあたる。また、コンテナ動作部３０のアプリケーション実行部３０１から出力されたＩ／Ｏ要求が、「第２処理要求」の一例にあたる。
【００３６】
送信元判定部１０１は、取得したＩ／Ｏ要求の送信元がいずれのアプリケーション実行部２０１又は３０１かを判定する。例えば、送信元判定部１０１は、Ｉ／Ｏ要求の処理対象のボリュームから送信元を判定する。そして、送信元判定部１０１は、送信元の情報を統計情報管理部１０３へ通知する。さらに、送信元判定部１０１は、取得したＩ／Ｏ要求をＩ／Ｏ処理部１０２へ出力する。
【００３７】
Ｉ／Ｏ処理部１０２は、送信元判定部１０１からＩ／Ｏ要求の入力を受ける。そして、Ｉ／Ｏ処理部１０２は、Ｉ／Ｏ要求を入力された順番で処理する。すなわち、Ｉ／Ｏ処理部１０２は、Ｉ／Ｏ要求がデータの読み出し要求の場合、ＳＳＤ１３に対して読み出し要求で指定されたアドレスからのデータの読み出しを指示し、その後、ＳＳＤ１３からデータを取得する。また、Ｉ／Ｏ要求がデータの書き込み要求の場合、Ｉ／Ｏ処理部１０２は、ＳＳＤ１３に対して書き込み要求で指定されたアドレスに対するデータの書き込みを指示し、その後、ＳＳＤ１３から書き込みの完了応答を受信する。そして、Ｉ／Ｏ処理部１０２は、Ｉ／Ｏ要求に応じた応答をＩ／Ｏ受付部２０２又はアプリケーション実行部３０１へ出力する。
【００３８】
さらに、Ｉ／Ｏ処理部１０２は、各Ｉ／Ｏ要求について、Ｉ／Ｏサイズの分布や、所定時間毎のＩ／Ｏ発行数及びＩＯＰＳといったＩ／Ｏ要求のレイテンシに影響を与える情報を取得する。Ｉ／Ｏ要求に関する情報を各Ｉ／Ｏ要求の送信元の情報とともに統計情報管理部１０３へ出力する。このＩ／Ｏ処理部１０２が、「処理実行部」の一例にあたる。
【００３９】
統計情報管理部１０３は、各Ｉ／Ｏ要求に関する情報の入力を各Ｉ／Ｏ要求の送信元の情報とともに送信元判定部１０１及び統計情報取得部２０３から受ける。そして、統計情報管理部１０３は、送信元毎にＩ／Ｏ要求の統計情報を生成し記憶する。
【００４０】
例えば、統計情報管理部１０３は、図３に示すような統計情報を記憶する。図３は、統計情報の一例を表す図である。ここでは、統計情報管理部１０３は、各アプリケーション実行部２０１及び３０１を実現する仮想マシン１１及びコンテナ１２２の情報を送信元の情報として記憶する。図３における仮想マシン＃１及び＃２は、仮想マシン１１の識別情報の一例である。また、図３におけるコンテナ＃＃１及び＃＃２は、コンテナ１２２の識別情報の一例である。
【００４１】
統計情報管理部１０３は、図３に示すように、送信元毎の予め決められた一定の時間におけるＩ／Ｏサイズ分布を算出し記憶する。また、統計情報管理部１０３は、送信元毎に所定期間毎のＩ／Ｏ発行数をまとめて記憶する。また、統計情報管理部１０３は、送信元毎に所定期間毎のＩＯＰＳをまとめて記憶する。ここで、統計情報管理部１０３は、各仮想マシン１１に関しては、統計情報取得部２０３により収集された情報に基づく統計情報と、Ｉ／Ｏ処理部１０２から入力された情報に基づく統計情報の２種類の統計情報を収集する。この統計情報管理部１０３が、「情報収集部」の一例にあたる。そして、Ｉ／Ｏサイズ分布、Ｉ／Ｏ発行数及びＩＯＰＳなどの情報が、「第１処理要求及び第２処理要求に関する情報」の一例にあたる。
【００４２】
スロットリング判定部１０４は、スロットリングを実行するか否かの判定を行う定期的なタイミングを予め記憶する。また、スロットリング判定部１０４は、スロットリングを実行するための条件を予め有する。スロットリングを実行するための条件は、仮想マシン動作部２０を単位とする条件である。すなわち、スロットリングを実行するための条件は、全てのアプリケーション実行部２０１からのＩ／Ｏ要求に対する処理の性能に基づく条件である。例えば、スロットリング判定部１０４は、全ての仮想マシン１１からの１秒間のＩ／Ｏ要求の発行数が所定の閾値以上の場合にスロットリングを実行するという条件を記憶する。このスロットリングを実行するための条件は、運用状態や求められる処理性能によって決定されることが好ましい。また、スロットリングを実行するための条件は、これまでのサーバ１におけるＩ／Ｏ要求の処理の統計情報を基に決定されてもよいし、スロットリングを仮に実行した結果のフィードバックを用いて決定されてもよい。
【００４３】
スロットリング判定部１０４は、スロットリングを実行するか否かの判定を行うタイミングが到来すると、統計情報管理部１０３が有する統計情報を取得する。そして、スロットリング判定部１０４は、スロットリングを実行するための条件は、全てのアプリケーション実行部２０１からのＩ／Ｏ要求に対する処理の性能及び全てのアプリケーション実行部３０１からのＩ／Ｏ要求に対する処理性能を求める。ここで、処理性能とは、例えばＩ／Ｏ要求のレイテンシであり、具体的な情報としては一定時間における１秒間のＩ／Ｏ要求の発行数の平均値や、一定時間における所定サイズ以下のＩ／Ｏ要求の割合や、一定時間におけるＩＯＰＳの平均値である。
【００４４】
そして、スロットリング判定部１０４は、求めた処理性能を用いてスロットリングを実行するための条件が満たされたか否かを判定する。スロットリングを実行するための条件が満たされない場合、スロットリング判定部１０４は、仮想マシン動作部２０に対するスロットリングが実行中であるか否かを確認する。仮想マシン動作部２０に対するスロットリングが実行中の場合、スロットリング判定部１０４は、スロットリングの解除をスロットリング部２０４に通知する。
【００４５】
これに対して、スロットリングを実行するための条件が満たされた場合、スロットリング判定部１０４は、アプリケーション実行部２０１に対するスロットリングの設定を決定する。そして、スロットリング判定部１０４は、スロットリングの設定を含むスロットリングの実行指示をスロットリング部２０４に通知する。
【００４６】
スロットリング判定部１０４によるスロットリングの設定の求め方の一例について説明する。例えば、スロットリング判定部１０４は、アプリケーション実行部２０１に対するＩ／Ｏ要求の削減率を求める。より具体的には、スロットリング判定部１０４は、統計情報管理部１０３が有する統計情報から、全てのアプリケーション実行部２０１のＩ／Ｏ要求と全てのアプリケーション実行部３０１のＩ／Ｏ要求との割合が１：２と判定する。次に、スロットリング判定部１０４は、Ｉ／Ｏ要求の割合を予め決められた値分ずらす。例えば、スロットリング判定部１０４は、Ｉ／Ｏ要求の割合を０．９５：２．０５とすると決定する。そして、スロットリング判定部１０４は、スロットリング部２０４に対して現在のＩ／Ｏ要求の出力数に対して０．９５の割合でのＩ／Ｏ要求の出力を指示するスロットリングの設定をスロットリング部２０４に通知する。このように、スロットリング判定部１０４は、少しずつＩ／Ｏ要求の出力の割合を変化させることを繰り返すことで、徐々に最適値に近づけることができる。このスロットリング判定部１０４が、「判定部」の一例にあたる。
【００４７】
次に、図４を参照して、本実施例に係るＩ／Ｏスケジューラ１０によるＩ／Ｏ要求の出力の制御の流れについて説明する。図４は、実施例１に係るＩ／ＯスケジューラによるＩ／Ｏ要求の出力の制御のフローチャートである。
【００４８】
スロットリング判定部１０４は、スロットリングポリシーの更新を実行するか否かを判定する（ステップＳ１０１）。ここで、スロットリングポリシーとは、スロットリングを実行するか否か、及び、スロットリングを実行する場合のスロットリングの設定を指す。例えば、スロットリング判定部１０４は、予め決められたスロットリングの変更タイミングの到来や管理者からのスロットリングポリシーの更新の指示の入力などを契機として、スロットリングポリシーの更新の実行を決定する。
【００４９】
スロットリングポリシーの更新を行わない場合（ステップＳ１０１：否定）、Ｉ／Ｏ処理部１０２は、処理するＩ／Ｏ要求が存在するか否かを判定する（ステップＳ１０２）。処理するＩ／Ｏ要求が存在する場合（ステップＳ１０２：肯定）、Ｉ／Ｏ処理部１０２は、ステップＳ１０９へ進む。これに対して、処理するＩ／Ｏ要求が存在しない場合（ステップＳ１０２：否定）、Ｉ／Ｏ処理部１０２は、ステップＳ１１０へ進む。
【００５０】
一方、スロットリングポリシーの更新を行う場合（ステップＳ１０１：肯定）、スロットリング判定部１０４は、統計情報管理部１０３が有する統計情報を用いてスロットリングを行うか否かを判定する（ステップＳ１０３）。スロットリング判定部１０４は、全アプリケーション実行部２０１及び全アプリケーション実行部３０１が出力するＩ／Ｏ要求に関する統計情報を用いる。
【００５１】
スロットリングを行う場合（ステップＳ１０３：肯定）、スロットリング判定部１０４は、統計情報管理部１０３が有する統計情報を用いて、スロットリングの設定を決定する（ステップＳ１０４）。
【００５２】
次に、スロットリング判定部１０４は、決定したスロットリングの設定をスロットリング部２０４に通知する（ステップＳ１０５）。
【００５３】
スロットリング部２０４は、スロットリングの設定の通知をスロットリング判定部１０４から受ける。また、スロットリング部２０４は、Ｉ／Ｏ受付部２０２から入力されるＩ／Ｏ要求の送信元の情報を取得する。そして、スロットリング部２０４は、Ｉ／Ｏ要求の送信元の情報から各アプリケーション実行部２０１に対するスロットリングの分担を決定する。そして、スロットリング部２０４は、受信したスロットリングの設定を、各アプリケーション実行部２０１に決めた割合で分担させて、各アプリケーション実行部２０１から出力されたＩ／Ｏ要求に対するスロットリングを実行する（ステップＳ１０６）。その後、Ｉ／Ｏ処理部１０２は、ステップＳ１０９へ進む。
【００５４】
これに対して、スロットリングを行わない場合（ステップＳ１０３：否定）、スロットリング判定部１０４は、スロットリング部２０４がスロットリングを実行中か否かを判定する（ステップＳ１０７）。スロットリングを実行中でない場合（ステップＳ１０７：否定）、Ｉ／Ｏ処理部１０２は、ステップＳ１０９へ進む。
【００５５】
これに対して、スロットリングを実行中の場合（ステップＳ１０７：肯定）、スロットリング判定部１０４は、スロットリングの解除をスロットリング部２０４に通知する。スロットリング部２０４は、スロットリングの解除の通知をスロットリング判定部１０４から受ける。そして、スロットリング部２０４は、実行中のスロットリングを停止し、スロットリングを解除する（ステップＳ１０８）。
【００５６】
その後、Ｉ／Ｏ処理部１０２は、入力順にＩ／Ｏ要求を処理する（ステップＳ１０９）。
【００５７】
次に、アプリケーション実行部２０１及び３０１、並びに、Ｉ／Ｏスケジューラ１０は、操作者から動作停止の命令の入力を受けているか否かなどにより、動作を終了するか否かを判定する（ステップＳ１１０）。動作を終了しない場合（ステップＳ１１０：否定）、スロットリング判定部１０４は、ステップＳ１０１に戻る。
【００５８】
これに対して、動作を終了する場合（ステップＳ１１０：肯定）、アプリケーション実行部２０１及び３０１、並びに、Ｉ／Ｏスケジューラ１０は、動作を停止してＩ／Ｏ要求の処理の実行を停止する。
【００５９】
次に、図５で示す場合を例にサーバ１におけるスロットリングの具体例について説明する。図５は、ＩＯＰＳとレイテンシとの関係の一例を表す図である。図５の縦軸は４ＫｉＢのデータの読み出しにおけるレイテンシを表し、横軸は４ＫｉＢのデータの読み出しにおけるＩＯＰＳを表す。
【００６０】
図５におけるグラフ４０１は、仮想マシン１１をコンテナ１２２と混在させずに配置した場合のアプリケーション実行部２０１から出力されるＩＯＰＳとレイテンシとの関係を表す。グラフ４０２は、仮想マシン１１とコンテナ１２２とを混在させた場合のアプリケーション実行部２０１から出力されるＩ／Ｏ要求のＩＯＰＳとレイテンシとの関係を表す。グラフ４０３は、コンテナ１２２を仮想マシン１１と混在させずに配置した場合のアプリケーション実行部３０１から出力されるＩＯＰＳとレイテンシとの関係を表す。グラフ４０４は、仮想マシン１１とコンテナ１２２とを混在させた場合のアプリケーション実行部３０１から出力されるＩＯＰＳとレイテンシとの関係を表す。
【００６１】
グラフ４０１に示すように、仮想マシン１１をコンテナ１２２と混在させずに配置した場合、ＩＯＰＳが１２０Ｋを過ぎたあたりで頭打ちとなり、レイテンシが増加する。これに対して、グラフ４０３に示すように、コンテナ１２２を仮想マシン１１と混在させずに配置した場合、ＩＯＰＳが２２０Ｋを過ぎたあたりで頭打ちとなり、レイテンシが増加する。すなわち、仮想マシン１１の方が低いＩＯＰＳで頭打ちとなる。
【００６２】
また、混在させた場合、グラフ４０２及び４０４に示すように、仮想マシン１１からのＩ／Ｏ要求とコンテナ１２２からのＩ／Ｏ要求とが競合により、双方のＩ／Ｏ要求の処理性能が同じように低下する。この場合、仮想マシン１１はＩＯＰＳが１３０Ｋを超えたあたりで頭打ちとなる。また、コンテナ１２２は、ＩＯＰＳが３２０を超えたあたりで頭打ちとなる。ここで、混在させた場合に、仮想マシン１１とコンテナ１２２とのＩ／Ｏ要求を同じ割合で処理した場合、ＩＯＰＳが１２０Ｋを超えると、仮想マシン１１が出力するＩ／Ｏ要求の処理数を増加させてもＩＯＰＳは変わらずレイテンシが悪化する。これに対して、ＩＯＳＰが１２０Ｋを超えても、コンテナ１２２が出力するＩ／Ｏ要求の処理数を増加させることでＩＯＰＳが増加し、レイテンシもそれほど悪化しない。そこで、ＩＯＰＳが１００を超えたあたりで仮想マシン１１が出力するＩ／Ｏ要求の処理の割合を減らし、コンテナ１２２が出力するＩ／Ｏ要求の処理の割合を増やすことで、Ｉ／Ｏ要求の全体的な処理性能を向上させることができる。
【００６３】
そこでこの場合、スロットリング判定部１０４は、仮想マシン１１からの１秒間のＩ／Ｏの発行数が１００Ｋ以上になった場合にスロットリングを行うという内容のスロットリングを実行するための条件を記憶する。そして、スロットリング判定部１０４は、統計情報管理部１０３に格納された統計情報から条件を満たしたと判定すると、仮想マシン１１からのＩ／Ｏ要求とコンテナ１２２からのＩ／Ｏ要求とのその時点での割合を統計情報から取得する。例えば、スロットリング判定部１０４は、仮想マシン１１からのＩ／Ｏ要求とコンテナ１２２からのＩ／Ｏ要求とのその時点での割合が１：２であると判定する。そして、スロットリング判定部１０４は、予め記憶する割合の削減値を用いて、Ｉ／Ｏ要求の割合を変更する。ここでは、スロットリング判定部１０４は、割合を０．０５削減し、Ｉ／Ｏ要求の割合を０．９５：２．０５とすることを決定する。そして、スロットリング判定部１０４は、Ｉ／Ｏ要求の出力数を現在を１とした場合に０．９５にするようにスロットリング部２０４に通知する。
【００６４】
スロットリング部２０４は、Ｉ／Ｏ要求の出力数を現在を１とした場合に０．９５にする通知をスロットリング判定部１０４から受ける。そして、スロットリング部２０４は、Ｉ／Ｏ受付部２０２から入力されるＩ／Ｏ要求の送信元を確認し、その時点での各アプリケーション実行部２０１からの発行数の割合を取得する。そして、スロットリング部２０４は、各アプリケーション実行部２０１が出力するＩ／Ｏ要求の割合に応じて、スロットリング量の各アプリケーション実行部２０１毎の分担を決定する。
【００６５】
ここで、以上の説明では、スロットリング部２０４が各アプリケーション実行部２０１に対するスロットリング量の分担を決定したが、スロットリング判定部１０４が決定してスロットリング部２０４に通知してもよい。
【００６６】
また、以上の説明では、スロットリング部２０４によりアプリケーション実行部２０１が出力したＩ／Ｏ要求に対するスロットリングが行われたが、Ｉ／Ｏ処理部１０２がスロットリングを行ってもよい。ただし、アプリケーション実行部２０１とＩ／Ｏ処理部１０２との間で仮想化処理が行われる。そのため、Ｉ／Ｏ処理部１０２がスロットリングを行う場合、仮想化処理による負荷が発生しＩ／Ｏ要求の処理を遅らせる要因になることが考えられる。そのため、スロットリング部２０４がスロットリングを行ったほうが、よりＩ／Ｏ要求の処理性能を向上させることができる。
【００６７】
さらに、本実施例では、アプリケーション実行部２０１が出力するＩ／Ｏ要求に関する情報として、統計情報取得部２０３が取得する仮想マシン１１側の統計情報とＩ／Ｏスケジューラ１０側で取得される統計情報との双方を用いた。ただし、いずれか一方の統計情報を用いる構成でもよい。
【００６８】
以上に説明したように、本実施例に係るサーバは、仮想マシンとコンテナとの双方が動作し、仮想マシンが出力するＩ／Ｏ要求の処理のレイテンシが大きくなった場合、仮想マシンからのＩ／Ｏ要求の出力に対してスロットリングを行う。これにより、本実施例に係るサーバは、仮想マシンから出力されるＩ／Ｏ要求の処理数を抑え、仮想化のオーバヘッドが発生しないコンテナから出力されるＩ／Ｏ要求の処理数を増加させる。仮想マシンから出力されるＩ／Ｏ要求は仮想化のオーバヘッドが生じるため、レイテンシが大きくなった場合、Ｉ／Ｏ要求の処理数を減らしても処理するＩ／Ｏ要求の数がそれほど変わらない。これに対して、コンテナから出力されるＩ／Ｏ要求は、仮想化のオーバヘッドが発生せず、仮想マシンから出力されるＩ／Ｏ要求のレイテンシが大きくなった状態でも、まだレイテンシは増えず、処理数を増加させることでＩ／Ｏ性能を向上させることができる。したがって、本実施例に係るサーバは  上述した制御を行うことで、データの読み出し及び書き込みの性能を向上させることができる。
【実施例２】
【００６９】
次に、実施例２について説明する。本実施例に係るサーバは、仮想サーバからのＩ／Ｏ要求の処理性能の悪化がコンテナ１２２からのＩ／Ｏ要求の処理性能の悪化に比べて大きい場合、コンテナが出力するＩ／Ｏ要求をスロットリングすることが実施例１と異なる。本実施例に係るサーバ１のブロック図も、図２で表される。以下の説明では、実施例１と同様の各部の動作については説明を省略する。
【００７０】
図６は、仮想サーバからのＩ／Ｏ要求の処理性能がコンテナからのＩ／Ｏ要求の処理性能に比べて大きく悪化する場合のＩＯＰＳとレイテンシとの関係の一例を表す図である。グラフ４１１は、仮想マシン１１をコンテナ１２２と混在させずに配置した場合のアプリケーション実行部２０１から出力されるＩＯＰＳとレイテンシとの関係を表す。グラフ４１２は、仮想マシン１１とコンテナ１２２とを混在させた場合のアプリケーション実行部２０１から出力されるＩ／Ｏ要求のＩＯＰＳとレイテンシとの関係を表す。グラフ４１３は、コンテナ１２２を仮想マシン１１と混在させずに配置した場合のアプリケーション実行部３０１から出力されるＩＯＰＳとレイテンシとの関係を表す。グラフ４１４は、仮想マシン１１とコンテナ１２２とを混在させた場合のアプリケーション実行部３０１から出力されるＩＯＰＳとレイテンシとの関係を表す。
【００７１】
サーバ１によるＩ／Ｏ要求の処理は、通常は図５に示されるように、仮想マシン１１及びコンテナ１２２の何れからのＩ／Ｏ要求も、ＩＯＰＳが頭打ちになった場合、それ以降はＩＯＰＳはそれほど変わらずにレイテンシが悪化する。しかし、仮想マシン１１及びコンテナ１２２から出力されるＩ／Ｏ要求の状態によっては、図６のグラフ４１２のようにＩＯＰＳが遷移する場合がある。すなわち、仮想マシン１１から出力されるＩ／Ｏ要求は、ＩＯＰＳが頭打ちになった後に、仮想マシン１１からの出力数が増えると、ＩＯＰＳも低下する場合がある。そして、コンテナ１２２から出力されるＩ／Ｏ要求は、図５の場合と比較してレイテンシの低下が少ない。すなわち、コンテナ１２２が出力するＩ／Ｏ要求の処理が、仮想マシン１１が出力するＩ／Ｏ要求の処理の性能を低下させていると考えられる。このような場合、コンテナ１２２が出力するＩ／Ｏ要求に対してスロットリングを実行することで、仮想マシン１１が出力するＩ／Ｏ要求の処理性能を向上させることができると考えられる。そこで、本実施例に係るＩ／Ｏスケジューラ１０は、以下のような動作を行う。
【００７２】
スロットリング判定部１０４は、仮想マシン動作部２０及びコンテナ動作部３０のそれぞれを単位とするスロットリングを実行するための条件を記憶する。すなわち、スロットリングを実行するための条件は、全てのアプリケーション実行部２０１からのＩ／Ｏ要求に対する処理の性能及び全てのアプリケーション実行部３０１からのＩ／Ｏ要求に対する処理の性能に基づく条件である。例えば、スロットリング判定部１０４は、全ての仮想マシン１１からの１秒間のＩ／Ｏ要求の発行数がＶＭ閾値以上で且つ全てのコンテナ１２２から１秒間のＩ／Ｏ要求の発行数がコンテナ閾値以上の場合にスロットリングを実行するという条件を記憶する。より具体的には、図５及び６の場合のスロットリングを実行するための条件は以下のように設定できる。スロットリング判定部１０４は、全アプリケーション実行部２０１から１秒間に発行されたＩ／Ｏ要求の数が１００Ｋ以上且つ全アプリケーション実行部３０１から１秒間に発行されたＩ／Ｏ要求の数が２００Ｋ以上の場合を実行の条件として記憶する。
【００７３】
さらに、本実施例では、スロットリング判定部１０４は、スロットリング対象を仮想マシン１１又はコンテナ１２２のどちらにするかを判定するためのＩＯＰＳの対象判定閾値を記憶する。例えば、図５と図６の状態を切り分ける場合であれば、スロットリング判定部１０４は、アプリケーション実行部２０１が出力したＩ／Ｏ要求のＩＯＰＳが９０以上であればアプリケーション実行部２０１が出力したＩ／Ｏ要求をスロットリング対象とする。また、アプリケーション実行部２０１が出力したＩ／Ｏ要求のＩＯＰＳが９０未満であれば、スロットリング判定部１０４は、アプリケーション実行部３０１が出力したＩ／Ｏ要求をスロットリング対象とする。
【００７４】
スロットリング判定部１０４は、スロットリングを実行するか否かの判定のタイミングが到来すると、統計情報を統計情報管理部１０３から取得する。そして、スロットリング判定部１０４は、スロットリングを実行するための条件が満たされたか否かを判定する。スロットリングを実行するための条件が満たされた場合、スロットリング判定部１０４は、アプリケーション実行部２０１が出力したＩ／Ｏ要求のＩＯＰＳが対象判定閾値以上か否かによりスロットリングの対象を決定する。
【００７５】
そして、スロットリング判定部１０４は、スロットリングの対象のスロットリングの設定を決定する。その後、スロットリング判定部１０４は、アプリケーション実行部２０１が出力したＩ／Ｏ要求がスロットリング対象であれば、スロットリングの設定をスロットリング部２０４に通知する。これに対して、アプリケーション実行部３０１が出力したＩ／Ｏ要求がスロットリング対象であれば、スロットリング判定部１０４は、Ｉ／Ｏ処理部１０２にスロットリングの設定を通知する。
【００７６】
スロットリング部２０４は、スロットリングの設定の通知をスロットリング判定部１０４から受けた場合、各アプリケーション実行部２０１におけるスロットリングの分担を求める。そして、スロットリング部２０４は、求めた分担にしたがってアプリケーション実行部２０１から出力されるＩ／Ｏ要求に対してスロットリングを実行する。その後、スロットリングの解除の通知をスロットリング判定部１０４から受けた場合、スロットリング部２０４は、スロットリングを停止する。
【００７７】
Ｉ／Ｏ処理部１０２は、スロットリングの設定の通知をスロットリング判定部１０４から受けた場合、スロットリングの設定にしたがって、Ｉ／Ｏ要求のＳＳＤ１３への出力を制御する。例えば、Ｉ／Ｏ処理部１０２は、スロットリングを実行する前のＩ／Ｏ要求のＩＯＰＳ、すなわち現在のＩＯＰＳに対するスロットリングを実行した後のＩ／Ｏ要求のＩＯＰＳの割合をスロットリングの設定としてスロットリング判定部１０４から受信する。そして、Ｉ／Ｏ処理部１０２は、Ｉ／Ｏ要求のＳＳＤへの出力を一定時間中断するもしくは一定量溜まるまで待機するなどして、Ｉ／Ｏ要求のＩＯＰＳが指定された割合となるようにＩ／Ｏ要求の送信元判定部１０１への出力を制御する。その後、スロットリングの解除の通知をスロットリング判定部１０４から受けた場合、Ｉ／Ｏ処理部１０２は、スロットリングを停止し、送信元判定部１０１から入力されたＩ／Ｏ要求を制限せずにＳＳＤ１３へ出力する。
【００７８】
次に、図７を参照して、本実施例に係るＩ／Ｏスケジューラ１０によるＩ／Ｏ要求の出力の制御の流れについて説明する。図７は、実施例２に係るＩ／ＯスケジューラによるＩ／Ｏ要求の出力の制御のフローチャートである。
【００７９】
スロットリング判定部１０４は、スロットリングポリシーの更新を実行するか否かを判定する（ステップＳ２０１）。
【００８０】
スロットリングポリシーの更新を行わない場合（ステップＳ２０１：否定）、Ｉ／Ｏ処理部１０２は、処理するＩ／Ｏ要求が存在するか否かを判定する（ステップＳ２０２）。処理するＩ／Ｏ要求が存在する場合（ステップＳ２０２：肯定）、Ｉ／Ｏ処理部１０２は、ステップＳ２１０へ進む。これに対して、処理するＩ／Ｏ要求が存在しない場合（ステップＳ２０２：否定）、Ｉ／Ｏ処理部１０２は、ステップＳ２１３へ進む。
【００８１】
一方、スロットリングポリシーの更新を行う場合（ステップＳ２０１：肯定）、スロットリング判定部１０４は、統計情報管理部１０３が有する統計情報を用いてスロットリングを行うか否かを判定する（ステップＳ２０３）。スロットリング判定部１０４は、全アプリケーション実行部２０１及び全アプリケーション実行部３０１が出力するＩ／Ｏ要求に関する統計情報を用いる。
【００８２】
スロットリングを行う場合（ステップＳ２０３：肯定）、スロットリング判定部１０４は、統計情報管理部１０３が有する統計情報及び対象判定閾値を用いてスロットリングの対象を決定する。さらに、スロットリング判定部１０４は、統計情報管理部１０３が有する統計情報を用いてスロットリングの設定を決定する（ステップＳ２０４）。
【００８３】
スロットリング判定部１０４は、仮想マシン１１側のスロットリングを実行するか否か、すなわち、スロットリング対象がアプリケーション実行部２０１から出力されるＩ／Ｏ要求か否かを判定する（ステップＳ２０５）。仮想マシン１１側のスロットリングを実行しない場合（ステップＳ２０５：否定）、Ｉ／Ｏ処理部１０２は、ステップＳ２１０へ進む。
【００８４】
これに対して、仮想マシン１１側のスロットリングを実行する場合（ステップＳ２０５：肯定）、スロットリング判定部１０４は、決定したスロットリングの設定をスロットリング部２０４に通知する（ステップＳ２０６）。
【００８５】
スロットリング部２０４は、スロットリングの設定の通知をスロットリング判定部１０４から受ける。また、スロットリング部２０４は、Ｉ／Ｏ受付部２０２から入力されるＩ／Ｏ要求の送信元の情報を取得する。そして、スロットリング部２０４は、Ｉ／Ｏ要求の送信元の情報から各アプリケーション実行部２０１に対するスロットリングの分担を決定する。そして、スロットリング部２０４は、受信したスロットリングの設定を、各アプリケーション実行部２０１に決めた割合で分担させて、各アプリケーション実行部２０１から出力されたＩ／Ｏ要求に対するスロットリングを実行する（ステップＳ２０７）。その後、Ｉ／Ｏ処理部１０２は、ステップＳ２１０へ進む。
【００８６】
これに対して、スロットリングを行わない場合（ステップＳ２０３：否定）、スロットリング判定部１０４は、スロットリング部２０４がスロットリングを実行中か否かを判定する（ステップＳ２０８）。スロットリングを実行中でない場合（ステップＳ２０８：否定）、Ｉ／Ｏ処理部１０２は、ステップＳ２１０へ進む。
【００８７】
これに対して、スロットリングを実行中の場合（ステップＳ２０８：肯定）、スロットリング判定部１０４は、スロットリングの解除をスロットリング部２０４に通知する。スロットリング部２０４は、スロットリングの解除の通知をスロットリング判定部１０４から受ける。そして、スロットリング部２０４は、実行中のスロットリングを停止し、スロットリングを解除する（ステップＳ２０９）。
【００８８】
その後、Ｉ／Ｏ処理部１０２は、コンテナ１２２側のスロットリングを実行するか否か、すなわち、スロットリング対象がアプリケーション実行部３０１から出力されるＩ／Ｏ要求か否かを判定する（ステップＳ２１０）。
【００８９】
コンテナ１２２側のスロットリングを実行しない場合（ステップＳ２１０：否定）、Ｉ／Ｏ処理部１０２は、入力順にＩ／Ｏ要求を処理する（ステップＳ２１１）。
【００９０】
これに対して、コンテナ側のスロットリングを実行する場合（ステップＳ２１０：肯定）、Ｉ／Ｏ処理部１０２は、スロットリングの設定で指定されたスロットリングの割合に応じてＩ／Ｏ要求を選択して処理する（ステップＳ２１２）。
【００９１】
その後、アプリケーション実行部２０１及び３０１、並びに、Ｉ／Ｏスケジューラ１０は、操作者から動作停止の命令の入力を受けているか否かなどにより、動作を終了するか否かを判定する（ステップＳ２１３）。動作を終了しない場合（ステップＳ２１３：否定）、スロットリング判定部１０４は、ステップＳ２０１に戻る。
【００９２】
これに対して、動作を終了する場合（ステップＳ２１３：肯定）、アプリケーション実行部２０１及び３０１、並びに、Ｉ／Ｏスケジューラ１０は、動作を停止してＩ／Ｏ要求の処理の実行を停止する。
【００９３】
ここで、本実施例においても、アプリケーション実行部２０１が出力したＩ／Ｏ要求に対するスロットリングの実行をＩ／Ｏ処理部１０２に行わせることも可能である。
【００９４】
以上に説明したように、本実施例に係るサーバは、Ｉ／Ｏ要求の処理状態に応じてスロットリングの対象を判定し、スロットリングを実行する。これにより、コンテナが出力するＩ／Ｏ要求の処理が、仮想マシンが出力するＩ／Ｏ要求の処理の性能を低下させている場合に、Ｉ／Ｏ要求の処理性能を向上させることができる。
【００９５】
なお、以上の各実施例で説明したＩ／Ｏスケジューラによるスロットリングの機能は、仮想マシンが動作する仮想環境とコンテナが動作する仮想環境とを統合したシステムであれば適応可能であり、上述した効果を奏することができる。このようなシステムとしては、システムの管理を容易にするなどの理由から様々な機能が統合されるＨＣＩがある。ただし、本実施例に係るＩ／Ｏスケジューラが動作可能なシステムは、ＨＣＩに限定されるものではなく、例えば、ＳＡＮ（Storage  Area  Network）などのストレージシステムであってもよい。
【００９６】
（ハードウェア構成）
次に、図８を参照して、サーバ１のハードウェア構成について説明する。図８は、サーバのハードウェア構成図である。図８に示すように、サーバ１は、ＣＰＵ（Central  Processing  Unit）９１、メモリ９２及びＳＳＤ１３を有する。
【００９７】
ＣＰＵ９１は、バスを介してメモリ９２及びＳＳＤ１３に接続する。メモリ９２は、図２に例示した仮想マシン動作部２０、コンテナ動作部３０及びＩ／Ｏスケジューラ１０を実現するプログラムを含む各種プログラムを格納する。
【００９８】
ＣＰＵ９１は、図１に例示した仮想マシン１１及びホスト１２を実現する。また、ＣＰＵ９１は、図２に例示した仮想マシン動作部２０、コンテナ動作部３０及びＩ／Ｏスケジューラ１０の機能を実現する。具体的には、ＣＰＵ９１は、メモリ９２から各種プログラムを読み出し展開して実行することで、図２に例示した仮想マシン動作部２０、コンテナ動作部３０及びＩ／Ｏスケジューラ１０を実現する。例えば、ＣＰＵ９１及びメモリ９２は、送信元判定部１０１、Ｉ／Ｏ処理部１０２、統計情報管理部１０３及びスロットリング判定部１０４の機能を実現する。また、ＣＰＵ９１は、アプリケーション実行部２０１、Ｉ／Ｏ受付部２０２、統計情報取得部２０３及びスロットリング部２０４の機能を実現する。ＣＰＵ９１は、アプリケーション実行部３０１の機能を実現する。
【符号の説明】
【００９９】
１  サーバ
１０  Ｉ／Ｏスケジューラ
１１  仮想マシン
１２  ホスト
１３  ＳＳＤ
２０  仮想マシン動作部
３０  コンテナ動作部
１０１  送信元判定部
１０２  Ｉ／Ｏ処理部
１０３  統計情報管理部
１０４  スロットリング判定部
１２１  ハイパーバイザー
１２２  コンテナ
２０１  アプリケーション実行部
２０２  Ｉ／Ｏ受付部
２０３  統計情報取得部
２０４  スロットリング部
３０１  アプリケーション実行部
【図１】
2019021185.tif 000003
【図２】
2019021185.tif 000004
【図３】
2019021185.tif 000005
【図４】
2019021185.tif 000006
【図５】
2019021185.tif 000007
【図６】
2019021185.tif 000008
【図７】
2019021185.tif 000009
【図８】
2019021185.tif 000010