(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-02-06
(45)【発行日】2023-02-14
(54)【発明の名称】情報処理装置、情報処理システム、情報処理装置制御方法及び情報処理装置制御プログラム
(51)【国際特許分類】
G06F 13/10 20060101AFI20230207BHJP
G06F 3/06 20060101ALI20230207BHJP
G06F 9/455 20180101ALI20230207BHJP
G06F 13/12 20060101ALI20230207BHJP
【FI】
G06F13/10 330C
G06F3/06 301E
G06F3/06 304R
G06F9/455 150
G06F13/12 330C
(21)【出願番号】P 2017140920
(22)【出願日】2017-07-20
【審査請求日】2020-04-09
【審判番号】
【審判請求日】2022-06-29
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】加藤 純
【合議体】
【審判長】篠原 功一
【審判官】山崎 慎一
【審判官】児玉 崇晶
(56)【参考文献】
【文献】特表2015-520876(JP,A)
【文献】特開2013-164822(JP,A)
【文献】特表2016-536714(JP,A)
【文献】加藤 純 ほか、All-Flash Hyper-Converged Infrastructureに向けたアーキテクチャーの提案、情報処理学会研究報告、システムソフトウェアとオペレーティング・システム(OS)、2017-OS-141[online]、日本、情報処理学会、2017年07月19日、p.1-7
(58)【調査した分野】(Int.Cl.,DB名)
G06F13/10
G06F3/06
G06F9/455
G06F13/12
(57)【特許請求の範囲】
【請求項1】
仮想的なストレージコントローラにより形成される第1共有ストレージを有し、前記第1共有ストレージを用いてアプリケーションを実行する複数のアプリケーション実行部を含む第1仮想環境を提供する第1仮想化部と、
物理的なストレージコントローラにより形成される第2共有ストレージを有する第2仮想環境を提供する第2仮想化部と、
データを格納する記憶部と、
前記記憶部に対する前記第1仮想化部からの第1処理要求及び前記第2仮想化部からの第2処理要求を処理する処理実行部と、
前記第1処理要求の1秒あたりの入出力操作数(IOPS)
、並びに、前記第1処理要求及び前記第2処理要求の発行数を収集する情報収集部と、
前記第1処理要求の発行数が少なくとも前記第1仮想化部のレイテンシが悪化する前記第1処理要求の発行数の境界にあたるVM閾値以上で且つ前記第2処理要求の発行数が少なくとも前記第2仮想化部のレイテンシが悪化する前記第2処理要求の発行数の境界にあたるコンテナ閾値以上の場合であって、前記情報収集部により収集された前記第1処理要求の前記IOPSが、
前記第1処理要求に対する処理が前記第2処理要求に対する処理を低下させると判定される基準となる対象判定閾値以上の場合に、前記第2仮想環境の性能の低下を抑制するための性能低下抑制処理について、前記第1仮想化部を
処理対象とすると判定し、
前記第1処理要求の前記IOPSが前記対象判定閾値未満の場合に、前記第2仮想化部を前記処理対象とすると判定し、前記アプリケーション実行部毎のスロットリング量の分担を決定して、前記分担にしたがって各前記アプリケーション
実行部から出力される第1処理要求の出力を抑制する判定部と
を備えたことを特徴とする情報処理装置。
【請求項2】
前記第1仮想化部は、仮想マシンが動作する前記第1仮想環境を提供し
前記第2仮想化部は、オペレーティングシステム(OS)における仮想的な動作環境である前記第2仮想環境を提供する
ことを特徴とする
請求項1に記載の情報処理装置。
【請求項3】
前記判定部は、決定した処理対象からの前記第1処理要求の前記処理実行部による処理数を抑制することを特徴とする請求項
1又は2に記載の情報処理装置。
【請求項4】
前記判定部は、前記第1仮想化部に対して前記第1処理要求の出力数を抑制する指示することで、前記処理実行部による前記第1処理要求の処理数を抑制することを特徴とする請求項
1~3のいずれか一つに記載の情報処理装置。
【請求項5】
前記判定部は、前記処理実行部に対して前記第2処理要求を処理する割合の低下を指示することで、前記処理実行部による前記第2処理要求の処理数を抑制することを特徴とする
請求項1に記載の情報処理装置。
【請求項6】
演算処理を行う演算処理装置及びデータを格納する記憶装置を有する情報処理システムであって、
前記演算処理装置は、
仮想的なストレージコントローラにより形成される第1共有ストレージを有し、前記第1共有ストレージを用いてアプリケーションを実行する複数のアプリケーション実行部を含む第1仮想環境を提供する第1仮想化部と、
物理的なストレージコントローラにより形成される第2共有ストレージを有する第2仮想化部と、
前記記憶装置に対する前記第1仮想化部からの第1処理要求及び前記第2仮想化部からの第2処理要求を処理する処理実行部と、
前記第1処理要求のIOPS
、並びに、前記第1処理要求及び前記第2処理要求の発行数を収集する情報収集部と、
前記第1処理要求の発行数が少なくとも前記第1仮想化部のレイテンシが悪化する前記第1処理要求の発行数の境界にあたるVM閾値以上で且つ前記第2処理要求の発行数が少なくとも前記第2仮想化部のレイテンシが悪化する前記第2処理要求の発行数の境界にあたるコンテナ閾値以上の場合であって、前記情報収集部により収集された前記第1処理要求の前記IOPSが、
前記第1処理要求に対する処理が前記第2処理要求に対する処理を低下させると判定される基準となる対象判定閾値以上の場合に、前記第2仮想
化部の性能の低下を抑制するための性能低下抑制処理について、前記第1仮想化部を
処理対象とすると判定し、
前記第1処理要求の前記IOPSが前記対象判定閾値未満の場合に、前記第2仮想化部を前記処理対象とすると判定し、前記アプリケーション実行部毎のスロットリング量の分担を決定して、前記分担にしたがって各前記アプリケーション
実行部から出力される第1処理要求の出力を抑制する判定部と
を備えたことを特徴とする情報処理システム。
【請求項7】
データを格納する記憶装置に対する、仮想的なストレージコントローラにより形成される第1共有ストレージを有し、前記第1共有ストレージを用いてアプリケーションを実行する複数のアプリケーション実行部を含む第1仮想環境からの第1処理要求及び物理的なストレージコントローラにより形成される第2共有ストレージを有する第2仮想環境からの第2処理要求を処理し、
前記第1処理要求のIOPS
、並びに、前記第1処理要求及び前記第2処理要求の発行数を収集し、
前記第1処理要求の発行数が少なくとも前記第1仮想環境のレイテンシが悪化する前記第1処理要求の発行数の境界にあたるVM閾値以上で且つ前記第2処理要求の発行数が少なくとも前記第2仮想環境のレイテンシが悪化する前記第2処理要求の発行数の境界にあたるコンテナ閾値以上の場合であって、収集された前記第1処理要求の前記IOPSが、
前記第1処理要求に対する処理が前記第2処理要求に対する処理を低下させると判定される基準となる対象判定閾値以上の場合に、前記第2仮想環境の性能の低下を抑制するための性能低下抑制処理について、前記第1仮想
環境を
処理対象とすると判定し、
前記第1処理要求の前記IOPSが前記対象判定閾値未満の場合に、前記第2仮想環境を前記処理対象とすると判定し、前記アプリケーション実行部毎のスロットリング量の分担を決定して、前記分担にしたがって各前記アプリケーション
実行部から出力される第1処理要求の出力を抑制する
ことを特徴とする情報処理装置制御方法。
【請求項8】
データを格納する記憶装置に対する、仮想的なストレージコントローラにより形成される第1共有ストレージを有し、前記第1共有ストレージを用いてアプリケーションを実行する複数のアプリケーション実行部を含む第1仮想環境からの第1処理要求及び物理的なストレージコントローラにより形成される第2共有ストレージを有する第2仮想環境からの第2処理要求を処理し、
前記第1処理要求のIOPS
、並びに、前記第1処理要求及び前記第2処理要求の発行数を収集し、
前記第1処理要求の発行数が少なくとも前記第1仮想環境のレイテンシが悪化する前記第1処理要求の発行数の境界にあたるVM閾値以上で且つ前記第2処理要求の発行数が少なくとも前記第2仮想環境のレイテンシが悪化する前記第2処理要求の発行数の境界にあたるコンテナ閾値以上の場合であって、収集された前記第1処理要求の前記IOPSが、
前記第1処理要求に対する処理が前記第2処理要求に対する処理を低下させると判定される基準となる対象判定閾値以上の場合に、前記第2仮想環境の性能の低下を抑制するための性能低下抑制処理について、前記第1仮想
環境を
処理対象とすると判定し、
前記第1処理要求の前記IOPSが前記対象判定閾値未満の場合に、前記第2仮想環境を前記処理対象とすると判定し、前記アプリケーション実行部毎のスロットリング量の分担を決定して、前記分担にしたがって各前記アプリケーション
実行部から出力される第1処理要求の出力を抑制する
処理をコンピュータに実行させることを特徴とする情報処理装置制御プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理システム、情報処理装置制御方法及び情報処理装置制御プログラムの制御方法に関する。
【背景技術】
【0002】
近年、仮想化技術は、目覚ましい発展を遂げている。仮想化技術とは、サーバやストレージなど物理的な構成を論理的に扱えるようにしてリソースプールを構成し、リソースプールの中の資源を自由に利用して情報処理システムを構築する技術である。例えば、サーバの仮想化では、1台の物理マシン上で複数の仮想マシン(VM:Virtual Machine)が稼働する。この仮想化技術を利用することで、リソースの効率的な活用、ハードウェアの初期投資コストの抑制、省電力及び省スペースなどが実現できる。
【0003】
このような仮想化技術として、ハイパーバイザー型仮想化やコンテナ型仮想化といった技術が提案されている。ハイパーバイザー型仮想化は、上述した仮想マシンを管理するハイパーバイザーが存在し、各仮想マシン上でそれぞれ異なるOS(Operating System)やアプリケーションが動作する。ハイパーバイザー型仮想化では、仮想マシンはハイパーバイザーを介して動作することになる。これに対して、コンテナ型仮想化は、1つのOS上でコンテナ管理ソフトウェアが動作し、そのコンテナ管理ソフトウェアが複数のアプリケーションをそれぞれ独立したプロセス空間や名前空間を有する異なる環境で動作させる。アプリケーション毎の異なる環境のそれぞれがコンテナと呼ばれる。
【0004】
また、最近では、情報処理システムに対して、用途に応じた柔軟且つ迅速な拡張が求められるようになってきている。この要望に応えるために、シンプルな構成をとり管理が容易なHCI(Hyper Converged Infrastructure)という技術が注目を集めている。HCIは、複数のサーバを有する情報処理システムにおいて、各サーバの内蔵ストレージをその情報処理システム内の全てのサーバからアクセスできる仮想的な共有ストレージとする技術である。HCIにより、サーバなどの情報処理装置上に、仮想化技術を用いて構成した仮想化基盤を用いて演算処理機能とストレージ機能とを統合した仮想化インフラが実現される。
【0005】
さらに、SSD(Solid State Drive)などのNAND型フラッシュメモリの低価格化により、ストレージデバイスのHDD(Hard Disk Drive)からNAND型フラッシュ型メモリへの移行が増加している。NAND型フラッシュメモリは、HDDと比較して動作速度が速く、NAND型フラッシュメモリへの移行により、情報処理システムにおける一層の性能向上が見込まれる。
【0006】
記憶装置に対するデータの読み出し及び書き込みの技術として、レイテンシの長さに応じてSSDに行わせる動作を第1タイプと第2タイプとに分け、第1タイプの動作を優先して行わせるようにスケジューリングする従来技術がある。また、各プログラムから出力されたデータを一時的に記憶域に格納し、プログラムの重要度に応じて優先的に記憶装置へデータを出力する従来技術がある。
【先行技術文献】
【特許文献】
【0007】
【文献】特表2013-541766号公報
【文献】特開2006-323539号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
コンテナ型仮想化には、各コンテナは異なるOS上で動作することは困難であるなどの制約が存在する。そのため、異なるOSで動作させたい場合など運用上の理由などによりハイパーバイザー型仮想化を利用することが望ましい場合が存在する。
【0009】
しかしながら、ハイパーバイザー型仮想化ではハイパーバイザーを介して記憶装置に対するデータの読み出し及び書き込みが行われる。ハイパーバイザーは、仮想マシンから送信された命令の物理的な記憶装置への書き込み命令への変換や物理的な記憶装置から読み出したデータを仮想マシンへ送信するための変換といった仮想化のための処理を行う。そのため、ハイパーバイザー型仮想化では、記憶装置に対するデータの読み出し及び書き込み時に、仮想化のためのオーバヘッドが発生し、NAND型フラッシュメモリの性能を生かし切れない。したがって、コンテナ型仮想化による環境とハイパーバイザー型仮想化による環境とを共存させる場合、記憶装置に対するデータの読み出し及び書き込みの性能を向上させることが困難である。
【0010】
また、レイテンシの長さに応じて動作を第1タイプと第2タイプとに分けて一方を優先的に処理する従来技術を用いても、コンテナ型仮想化による環境とハイパーバイザー型仮想化による環境のいずれからもそれぞれのタイプの動作は指示される。そのため、この従来技術を用いても、仮想化のオーバヘッドは発生するおそれがあり、記憶装置に対するデータの読み出し及び書き込みの性能を向上させることが困難である。
【0011】
また、プログラムの重要度に応じて記憶装置へ送信するデータの優先度を決定する従来技術を用いても、ハイパーバイザー型仮想化による環境のプログラムの重要度が高いことは考えられる。そのため、この従来技術を用いても、記憶装置に対するデータの読み出し及び書き込みの性能を向上させることが困難である。
【0012】
開示の技術は、上記に鑑みてなされたものであって、データの読み出し及び書き込みの性能を向上させる情報処理装置、情報処理システム、情報処理装置制御方法及び情報処理装置制御プログラムの制御方法を提供することを目的とする。
【課題を解決するための手段】
【0013】
本願の開示する情報処理装置、情報処理システム、情報処理装置制御方法及び情報処理装置制御プログラムの制御方法の一つの態様において、第1仮想化部は、仮想的なストレージコントローラにより形成される第1共有ストレージを有し、前記第1共有ストレージを用いてアプリケーションを実行する複数のアプリケーション実行部を含む第1仮想環境を提供する。第2仮想化部は、物理的なストレージコントローラにより形成される第2共有ストレージを有する第2仮想環境を提供する。記憶部は、データを格納する。処理実行部は、前記記憶部に対する前記第1仮想化部からの第1処理要求及び前記第2仮想化部からの第2処理要求を処理する。情報収集部は、前記第1処理要求のIOPS、並びに、前記第1処理要求及び前記第2処理要求の発行数を収集する。判定部は、前記第1処理要求の発行数が少なくとも前記第1仮想化部のレイテンシが悪化する前記第1処理要求の発行数の境界にあたるVM閾値以上で且つ前記第2処理要求の発行数が少なくとも前記第2仮想化部のレイテンシが悪化する前記第2処理要求の発行数の境界にあたるコンテナ閾値以上の場合であって、前記情報収集部により収集された前記第1処理要求の前記IOPSが、前記第1処理要求に対する処理が前記第2処理要求に対する処理を低下させると判定される基準となる対象判定閾値以上の場合に、前記第2仮想化部の性能の低下を抑制するための性能低下抑制処理について、前記第1仮想化部を処理対象とすると判定し、前記第1処理要求の前記IOPSが前記対象判定閾値未満の場合に、前記第2仮想化部を前記処理対象とすると判定し、前記アプリケーション実行部毎のスロットリング量の分担を決定して、前記分担にしたがって各前記アプリケーション実行部から出力される第1処理要求の出力を抑制する。
【発明の効果】
【0014】
1つの側面では、本発明は、記憶装置に対するデータの読み出し及び書き込みの性能を向上させることができる。
【図面の簡単な説明】
【0015】
【
図1】
図1は、サーバの仮想化環境を説明するための図である。
【
図4】
図4は、実施例1に係るI/OスケジューラによるI/O要求の出力の制御のフローチャートである。
【
図5】
図5は、IOPSとレイテンシとの関係の一例を表す図である。
【
図6】
図6は、仮想サーバからのI/O要求の処理性能がコンテナからのI/O要求の処理性能に比べて大きく悪化する場合のIOPSとレイテンシとの関係の一例を表す図である。
【
図7】
図7は、実施例2に係るI/OスケジューラによるI/O要求の出力の制御のフローチャートである。
【
図8】
図8は、サーバのハードウェア構成図である。
【発明を実施するための形態】
【0016】
以下に、本願の開示する情報処理装置、情報処理システム、情報処理装置制御方法及び情報処理装置制御プログラムの実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理装置、情報処理システム、情報処理装置制御方法及び情報処理装置制御プログラムの制御方法が限定されるものではない。
【実施例1】
【0017】
図1は、サーバの仮想化環境を説明するための図である。
図1に示すように、情報処理装置であるサーバ1は、仮想マシン11、ホスト12、SSD13を有する。
【0018】
ホスト12は、ハイパーバイザー121及びI/Oスケジューラ10を動作させる。また、ホスト12は、コンテナ122を動作させる。他にも、ホスト12は、図示しないがOS及びコンテナ管理ソフトウェアなどを動作させる。
【0019】
ハイパーバイザー121は、仮想マシン11を管理する。例えば、ハイパーバイザー121は、仮想マシン11を生成する。また、ハイパーバイザー121は、仮想マシン11から出力されたSSD13に対する読み出し要求及び書き込み要求に対する仮想化処理を行う。
【0020】
コンテナ122は、ホスト12により実行されるコンテナ管理ソフトウェアにより制御される。例えば、コンテナ122は、コンテナ管理ソフトウェアにより割り当てられたそれぞれ異なるプロセス空間や名前空間を用いて処理を行う。
【0021】
I/Oスケジューラ10は、仮想マシン11又はコンテナ122から出力されたSSD13に対する読み出し要求又は書き込み要求にしたがってSSD13に対してデータの読み出し又は書き込みの処理を行う。また、I/Oスケジューラ10は、仮想マシン11及びコンテナ122から出力されるSSD13に対するデータの読み出し要求及び書き込み要求に対してスロットリングを行う。
【0022】
仮想マシン11は、ハイパーバイザー121によって管理される。仮想マシン11は、それぞれ異なるOSが動作する。仮想マシン11は、SSD13に対するデータの読み出し処理及び書き込み処理をハイパーバイザー121へ出力する。その後、仮想マシン11は、出力された読み出し要求又は書き込み要求に応じたSSD13からの応答をハイパーバイザー121を介して取得する。
【0023】
次に、
図2を参照して、本実施例に係るI/Oスケジューラ10によるI/O処理について説明する。
図2は、サーバのブロック図である。
【0024】
図2に示すように、サーバ1は、I/Oスケジューラ10、仮想マシン動作部20、コンテナ動作部30及びSSD13を有する。仮想マシン動作部20は、
図1における仮想マシン11を動作させる。コンテナ動作部30は、
図1におけるコンテナ122を動作させる。
【0025】
仮想マシン動作部20は、アプリケーション実行部201、I/O受付部202、統計情報取得部203及びスロットリング部204を有する。この仮想マシン動作部20が、「第1仮想化部」の一例にあたる。
【0026】
アプリケーション実行部201は、仮想マシン11により実現される。アプリケーション実行部201は、アプリケーションを実行する。そして、アプリケーション実行部201は、アプリケーションの実行により発生したSSD13に対するデータの読み出し要求及び書き込み要求をI/O受付部202へ出力する。以下では、SSD13に対するデータの読み出し要求及び書き込み要求を、「I/O要求」という。その後、アプリケーション実行部201は、出力したI/O要求に対する応答をI/O受付部202から受信する。このアプリケーション実行部201を実現する仮想マシン11を含む仮想環境が、「第1仮想環境」の一例にあたる。
【0027】
統計情報取得部203は、I/O受付部202が出力したI/O要求に関する情報をI/O受付部202から取得する。例えば、統計情報取得部203は、I/O受付部202が出力したI/O要求のサイズ、出力の通知及び応答の受信の通知をI/O受付部202から取得する。そして、統計情報取得部203は、各I/O要求について、I/Oサイズの分布や、所定時間毎のI/O発行数及びIOPS(Input/output Operations Per Second)といったI/O要求のレイテンシに影響を与える情報を取得する。そして、統計情報取得部203は、取得した各I/O要求に関する情報をI/O要求の送信元の情報とともにI/Oスケジューラ10の統計情報管理部103へ出力する。
【0028】
スロットリング部204は、各アプリケーション実行部201が出力したI/O要求の入力をI/O受付部202から受ける。そして、スロットリング部204は、後述するI/Oスケジューラ10のスロットリング判定部104からスロットリングの実行指示の入力を受けていない場合、I/O受付部202から入力されたI/O要求を送信元判定部101へ出力する。
【0029】
一方、スロットリング判定部104からスロットリングの実行指示の入力を受けていた場合、スロットリング部204は、各アプリケーション実行部201の出力するI/O要求の数に応じて、アプリケーション実行部201毎のスロットリング量の分担を決定する。
【0030】
そして、スロットリング部204は、決定したスロットリング量の分担にしたがって、各アプリケーション実行部201から出力されたI/O要求の送信元判定部101への出力を制御する。例えば、スロットリング部204は、スロットリングを実行する前のI/O要求のIOPS、すなわち現在のIOPSに対するスロットリングを実行した後のI/O要求のIOPSの割合をスロットリングの設定としてスロットリング判定部104から受信する。そして、スロットリング部204は、各アプリケーション実行部201から出力されるI/O要求の数から、各アプリケーション実行部201のスロットリング後のIOPSの割合を算出する。その後、スロットリング部204は、各アプリケーション実行部201から出力されるI/O要求のIOPSが求めた割合となるようにI/O要求の送信元判定部101への出力を制御する。例えば、スロットリング部204は、I/O要求の送信元判定部101への出力を一定時間中断するもしくは一定量溜まるまで待機するなどしてI/O要求の送信元判定部101への出力を制御する。
【0031】
また、スロットリング部204は、スロットリングを実行中に、スロットリングの解除の指示をスロットリング判定部104から受けた場合、スロットリングを停止する。そして、スロットリング部204は、I/O受付部202から入力されたI/O要求を制限せずに送信元判定部101へ出力する。
【0032】
コンテナ動作部30は、アプリケーション実行部301を有する。このコンテナ動作部30が、「第2仮想化部」の一例にあたる。
【0033】
アプリケーション実行部301は、
図1におけるコンテナ122により実現される。アプリケーション実行部301は、アプリケーションを実行する。そして、アプリケーション実行部301は、アプリケーションの実行により発生したSSD13に対するI/O要求をI/Oスケジューラ10の送信元判定部101へ出力する。その後、アプリケーション実行部301は、出力したI/O要求に対する応答を送信元判定部101から受信する。このアプリケーション実行部301を実現するコンテナ122を含む仮想環境が、「第2仮想環境」の一例にあたる。
【0034】
I/Oスケジューラ10は、送信元判定部101、I/O処理部102、統計情報管理部103及びスロットリング判定部104を有する。
【0035】
送信元判定部101は、仮想マシン動作部20のスロットリング部204及びコンテナ動作部30のアプリケーション実行部301からI/O要求の入力を受ける。この仮想マシン動作部20のスロットリング部204から出力されたI/O要求が、「第1処理要求」の一例にあたる。また、コンテナ動作部30のアプリケーション実行部301から出力されたI/O要求が、「第2処理要求」の一例にあたる。
【0036】
送信元判定部101は、取得したI/O要求の送信元がいずれのアプリケーション実行部201又は301かを判定する。例えば、送信元判定部101は、I/O要求の処理対象のボリュームから送信元を判定する。そして、送信元判定部101は、送信元の情報を統計情報管理部103へ通知する。さらに、送信元判定部101は、取得したI/O要求をI/O処理部102へ出力する。
【0037】
I/O処理部102は、送信元判定部101からI/O要求の入力を受ける。そして、I/O処理部102は、I/O要求を入力された順番で処理する。すなわち、I/O処理部102は、I/O要求がデータの読み出し要求の場合、SSD13に対して読み出し要求で指定されたアドレスからのデータの読み出しを指示し、その後、SSD13からデータを取得する。また、I/O要求がデータの書き込み要求の場合、I/O処理部102は、SSD13に対して書き込み要求で指定されたアドレスに対するデータの書き込みを指示し、その後、SSD13から書き込みの完了応答を受信する。そして、I/O処理部102は、I/O要求に応じた応答をI/O受付部202又はアプリケーション実行部301へ出力する。
【0038】
さらに、I/O処理部102は、各I/O要求について、I/Oサイズの分布や、所定時間毎のI/O発行数及びIOPSといったI/O要求のレイテンシに影響を与える情報を取得する。I/O要求に関する情報を各I/O要求の送信元の情報とともに統計情報管理部103へ出力する。このI/O処理部102が、「処理実行部」の一例にあたる。
【0039】
統計情報管理部103は、各I/O要求に関する情報の入力を各I/O要求の送信元の情報とともに送信元判定部101及び統計情報取得部203から受ける。そして、統計情報管理部103は、送信元毎にI/O要求の統計情報を生成し記憶する。
【0040】
例えば、統計情報管理部103は、
図3に示すような統計情報を記憶する。
図3は、統計情報の一例を表す図である。ここでは、統計情報管理部103は、各アプリケーション実行部201及び301を実現する仮想マシン11及びコンテナ122の情報を送信元の情報として記憶する。
図3における仮想マシン#1及び#2は、仮想マシン11の識別情報の一例である。また、
図3におけるコンテナ##1及び##2は、コンテナ122の識別情報の一例である。
【0041】
統計情報管理部103は、
図3に示すように、送信元毎の予め決められた一定の時間におけるI/Oサイズ分布を算出し記憶する。また、統計情報管理部103は、送信元毎に所定期間毎のI/O発行数をまとめて記憶する。また、統計情報管理部103は、送信元毎に所定期間毎のIOPSをまとめて記憶する。ここで、統計情報管理部103は、各仮想マシン11に関しては、統計情報取得部203により収集された情報に基づく統計情報と、I/O処理部102から入力された情報に基づく統計情報の2種類の統計情報を収集する。この統計情報管理部103が、「情報収集部」の一例にあたる。そして、I/Oサイズ分布、I/O発行数及びIOPSなどの情報が、「第1処理要求及び第2処理要求に関する情報」の一例にあたる。
【0042】
スロットリング判定部104は、スロットリングを実行するか否かの判定を行う定期的なタイミングを予め記憶する。また、スロットリング判定部104は、スロットリングを実行するための条件を予め有する。スロットリングを実行するための条件は、仮想マシン動作部20を単位とする条件である。すなわち、スロットリングを実行するための条件は、全てのアプリケーション実行部201からのI/O要求に対する処理の性能に基づく条件である。例えば、スロットリング判定部104は、全ての仮想マシン11からの1秒間のI/O要求の発行数が所定の閾値以上の場合にスロットリングを実行するという条件を記憶する。このスロットリングを実行するための条件は、運用状態や求められる処理性能によって決定されることが好ましい。また、スロットリングを実行するための条件は、これまでのサーバ1におけるI/O要求の処理の統計情報を基に決定されてもよいし、スロットリングを仮に実行した結果のフィードバックを用いて決定されてもよい。
【0043】
スロットリング判定部104は、スロットリングを実行するか否かの判定を行うタイミングが到来すると、統計情報管理部103が有する統計情報を取得する。そして、スロットリング判定部104は、スロットリングを実行するための条件は、全てのアプリケーション実行部201からのI/O要求に対する処理の性能及び全てのアプリケーション実行部301からのI/O要求に対する処理性能を求める。ここで、処理性能とは、例えばI/O要求のレイテンシであり、具体的な情報としては一定時間における1秒間のI/O要求の発行数の平均値や、一定時間における所定サイズ以下のI/O要求の割合や、一定時間におけるIOPSの平均値である。
【0044】
そして、スロットリング判定部104は、求めた処理性能を用いてスロットリングを実行するための条件が満たされたか否かを判定する。スロットリングを実行するための条件が満たされない場合、スロットリング判定部104は、仮想マシン動作部20に対するスロットリングが実行中であるか否かを確認する。仮想マシン動作部20に対するスロットリングが実行中の場合、スロットリング判定部104は、スロットリングの解除をスロットリング部204に通知する。
【0045】
これに対して、スロットリングを実行するための条件が満たされた場合、スロットリング判定部104は、アプリケーション実行部201に対するスロットリングの設定を決定する。そして、スロットリング判定部104は、スロットリングの設定を含むスロットリングの実行指示をスロットリング部204に通知する。
【0046】
スロットリング判定部104によるスロットリングの設定の求め方の一例について説明する。例えば、スロットリング判定部104は、アプリケーション実行部201に対するI/O要求の削減率を求める。より具体的には、スロットリング判定部104は、統計情報管理部103が有する統計情報から、全てのアプリケーション実行部201のI/O要求と全てのアプリケーション実行部301のI/O要求との割合が1:2と判定する。次に、スロットリング判定部104は、I/O要求の割合を予め決められた値分ずらす。例えば、スロットリング判定部104は、I/O要求の割合を0.95:2.05とすると決定する。そして、スロットリング判定部104は、スロットリング部204に対して現在のI/O要求の出力数に対して0.95の割合でのI/O要求の出力を指示するスロットリングの設定をスロットリング部204に通知する。このように、スロットリング判定部104は、少しずつI/O要求の出力の割合を変化させることを繰り返すことで、徐々に最適値に近づけることができる。このスロットリング判定部104が、「判定部」の一例にあたる。
【0047】
次に、
図4を参照して、本実施例に係るI/Oスケジューラ10によるI/O要求の出力の制御の流れについて説明する。
図4は、実施例1に係るI/OスケジューラによるI/O要求の出力の制御のフローチャートである。
【0048】
スロットリング判定部104は、スロットリングポリシーの更新を実行するか否かを判定する(ステップS101)。ここで、スロットリングポリシーとは、スロットリングを実行するか否か、及び、スロットリングを実行する場合のスロットリングの設定を指す。例えば、スロットリング判定部104は、予め決められたスロットリングの変更タイミングの到来や管理者からのスロットリングポリシーの更新の指示の入力などを契機として、スロットリングポリシーの更新の実行を決定する。
【0049】
スロットリングポリシーの更新を行わない場合(ステップS101:否定)、I/O処理部102は、処理するI/O要求が存在するか否かを判定する(ステップS102)。処理するI/O要求が存在する場合(ステップS102:肯定)、I/O処理部102は、ステップS109へ進む。これに対して、処理するI/O要求が存在しない場合(ステップS102:否定)、I/O処理部102は、ステップS110へ進む。
【0050】
一方、スロットリングポリシーの更新を行う場合(ステップS101:肯定)、スロットリング判定部104は、統計情報管理部103が有する統計情報を用いてスロットリングを行うか否かを判定する(ステップS103)。スロットリング判定部104は、全アプリケーション実行部201及び全アプリケーション実行部301が出力するI/O要求に関する統計情報を用いる。
【0051】
スロットリングを行う場合(ステップS103:肯定)、スロットリング判定部104は、統計情報管理部103が有する統計情報を用いて、スロットリングの設定を決定する(ステップS104)。
【0052】
次に、スロットリング判定部104は、決定したスロットリングの設定をスロットリング部204に通知する(ステップS105)。
【0053】
スロットリング部204は、スロットリングの設定の通知をスロットリング判定部104から受ける。また、スロットリング部204は、I/O受付部202から入力されるI/O要求の送信元の情報を取得する。そして、スロットリング部204は、I/O要求の送信元の情報から各アプリケーション実行部201に対するスロットリングの分担を決定する。そして、スロットリング部204は、受信したスロットリングの設定を、各アプリケーション実行部201に決めた割合で分担させて、各アプリケーション実行部201から出力されたI/O要求に対するスロットリングを実行する(ステップS106)。その後、I/O処理部102は、ステップS109へ進む。
【0054】
これに対して、スロットリングを行わない場合(ステップS103:否定)、スロットリング判定部104は、スロットリング部204がスロットリングを実行中か否かを判定する(ステップS107)。スロットリングを実行中でない場合(ステップS107:否定)、I/O処理部102は、ステップS109へ進む。
【0055】
これに対して、スロットリングを実行中の場合(ステップS107:肯定)、スロットリング判定部104は、スロットリングの解除をスロットリング部204に通知する。スロットリング部204は、スロットリングの解除の通知をスロットリング判定部104から受ける。そして、スロットリング部204は、実行中のスロットリングを停止し、スロットリングを解除する(ステップS108)。
【0056】
その後、I/O処理部102は、入力順にI/O要求を処理する(ステップS109)。
【0057】
次に、アプリケーション実行部201及び301、並びに、I/Oスケジューラ10は、操作者から動作停止の命令の入力を受けているか否かなどにより、動作を終了するか否かを判定する(ステップS110)。動作を終了しない場合(ステップS110:否定)、スロットリング判定部104は、ステップS101に戻る。
【0058】
これに対して、動作を終了する場合(ステップS110:肯定)、アプリケーション実行部201及び301、並びに、I/Oスケジューラ10は、動作を停止してI/O要求の処理の実行を停止する。
【0059】
次に、
図5で示す場合を例にサーバ1におけるスロットリングの具体例について説明する。
図5は、IOPSとレイテンシとの関係の一例を表す図である。
図5の縦軸は4KiBのデータの読み出しにおけるレイテンシを表し、横軸は4KiBのデータの読み出しにおけるIOPSを表す。
【0060】
図5におけるグラフ401は、仮想マシン11をコンテナ122と混在させずに配置した場合のアプリケーション実行部201から出力されるIOPSとレイテンシとの関係を表す。グラフ402は、仮想マシン11とコンテナ122とを混在させた場合のアプリケーション実行部201から出力されるI/O要求のIOPSとレイテンシとの関係を表す。グラフ403は、コンテナ122を仮想マシン11と混在させずに配置した場合のアプリケーション実行部301から出力されるIOPSとレイテンシとの関係を表す。グラフ404は、仮想マシン11とコンテナ122とを混在させた場合のアプリケーション実行部301から出力されるIOPSとレイテンシとの関係を表す。
【0061】
グラフ401に示すように、仮想マシン11をコンテナ122と混在させずに配置した場合、IOPSが120Kを過ぎたあたりで頭打ちとなり、レイテンシが増加する。これに対して、グラフ403に示すように、コンテナ122を仮想マシン11と混在させずに配置した場合、IOPSが220Kを過ぎたあたりで頭打ちとなり、レイテンシが増加する。すなわち、仮想マシン11の方が低いIOPSで頭打ちとなる。
【0062】
また、混在させた場合、グラフ402及び404に示すように、仮想マシン11からのI/O要求とコンテナ122からのI/O要求とが競合により、双方のI/O要求の処理性能が同じように低下する。この場合、仮想マシン11はIOPSが130Kを超えたあたりで頭打ちとなる。また、コンテナ122は、IOPSが320を超えたあたりで頭打ちとなる。ここで、混在させた場合に、仮想マシン11とコンテナ122とのI/O要求を同じ割合で処理した場合、IOPSが120Kを超えると、仮想マシン11が出力するI/O要求の処理数を増加させてもIOPSは変わらずレイテンシが悪化する。これに対して、IOSPが120Kを超えても、コンテナ122が出力するI/O要求の処理数を増加させることでIOPSが増加し、レイテンシもそれほど悪化しない。そこで、IOPSが100を超えたあたりで仮想マシン11が出力するI/O要求の処理の割合を減らし、コンテナ122が出力するI/O要求の処理の割合を増やすことで、I/O要求の全体的な処理性能を向上させることができる。
【0063】
そこでこの場合、スロットリング判定部104は、仮想マシン11からの1秒間のI/Oの発行数が100K以上になった場合にスロットリングを行うという内容のスロットリングを実行するための条件を記憶する。そして、スロットリング判定部104は、統計情報管理部103に格納された統計情報から条件を満たしたと判定すると、仮想マシン11からのI/O要求とコンテナ122からのI/O要求とのその時点での割合を統計情報から取得する。例えば、スロットリング判定部104は、仮想マシン11からのI/O要求とコンテナ122からのI/O要求とのその時点での割合が1:2であると判定する。そして、スロットリング判定部104は、予め記憶する割合の削減値を用いて、I/O要求の割合を変更する。ここでは、スロットリング判定部104は、割合を0.05削減し、I/O要求の割合を0.95:2.05とすることを決定する。そして、スロットリング判定部104は、I/O要求の出力数を現在を1とした場合に0.95にするようにスロットリング部204に通知する。
【0064】
スロットリング部204は、I/O要求の出力数を現在を1とした場合に0.95にする通知をスロットリング判定部104から受ける。そして、スロットリング部204は、I/O受付部202から入力されるI/O要求の送信元を確認し、その時点での各アプリケーション実行部201からの発行数の割合を取得する。そして、スロットリング部204は、各アプリケーション実行部201が出力するI/O要求の割合に応じて、スロットリング量の各アプリケーション実行部201毎の分担を決定する。
【0065】
ここで、以上の説明では、スロットリング部204が各アプリケーション実行部201に対するスロットリング量の分担を決定したが、スロットリング判定部104が決定してスロットリング部204に通知してもよい。
【0066】
また、以上の説明では、スロットリング部204によりアプリケーション実行部201が出力したI/O要求に対するスロットリングが行われたが、I/O処理部102がスロットリングを行ってもよい。ただし、アプリケーション実行部201とI/O処理部102との間で仮想化処理が行われる。そのため、I/O処理部102がスロットリングを行う場合、仮想化処理による負荷が発生しI/O要求の処理を遅らせる要因になることが考えられる。そのため、スロットリング部204がスロットリングを行ったほうが、よりI/O要求の処理性能を向上させることができる。
【0067】
さらに、本実施例では、アプリケーション実行部201が出力するI/O要求に関する情報として、統計情報取得部203が取得する仮想マシン11側の統計情報とI/Oスケジューラ10側で取得される統計情報との双方を用いた。ただし、いずれか一方の統計情報を用いる構成でもよい。
【0068】
以上に説明したように、本実施例に係るサーバは、仮想マシンとコンテナとの双方が動作し、仮想マシンが出力するI/O要求の処理のレイテンシが大きくなった場合、仮想マシンからのI/O要求の出力に対してスロットリングを行う。これにより、本実施例に係るサーバは、仮想マシンから出力されるI/O要求の処理数を抑え、仮想化のオーバヘッドが発生しないコンテナから出力されるI/O要求の処理数を増加させる。仮想マシンから出力されるI/O要求は仮想化のオーバヘッドが生じるため、レイテンシが大きくなった場合、I/O要求の処理数を減らしても処理するI/O要求の数がそれほど変わらない。これに対して、コンテナから出力されるI/O要求は、仮想化のオーバヘッドが発生せず、仮想マシンから出力されるI/O要求のレイテンシが大きくなった状態でも、まだレイテンシは増えず、処理数を増加させることでI/O性能を向上させることができる。したがって、本実施例に係るサーバは 上述した制御を行うことで、データの読み出し及び書き込みの性能を向上させることができる。
【実施例2】
【0069】
次に、実施例2について説明する。本実施例に係るサーバは、仮想サーバからのI/O要求の処理性能の悪化がコンテナ122からのI/O要求の処理性能の悪化に比べて大きい場合、コンテナが出力するI/O要求をスロットリングすることが実施例1と異なる。本実施例に係るサーバ1のブロック図も、
図2で表される。以下の説明では、実施例1と同様の各部の動作については説明を省略する。
【0070】
図6は、仮想サーバからのI/O要求の処理性能がコンテナからのI/O要求の処理性能に比べて大きく悪化する場合のIOPSとレイテンシとの関係の一例を表す図である。グラフ411は、仮想マシン11をコンテナ122と混在させずに配置した場合のアプリケーション実行部201から出力されるIOPSとレイテンシとの関係を表す。グラフ412は、仮想マシン11とコンテナ122とを混在させた場合のアプリケーション実行部201から出力されるI/O要求のIOPSとレイテンシとの関係を表す。グラフ413は、コンテナ122を仮想マシン11と混在させずに配置した場合のアプリケーション実行部301から出力されるIOPSとレイテンシとの関係を表す。グラフ414は、仮想マシン11とコンテナ122とを混在させた場合のアプリケーション実行部301から出力されるIOPSとレイテンシとの関係を表す。
【0071】
サーバ1によるI/O要求の処理は、通常は
図5に示されるように、仮想マシン11及びコンテナ122の何れからのI/O要求も、IOPSが頭打ちになった場合、それ以降はIOPSはそれほど変わらずにレイテンシが悪化する。しかし、仮想マシン11及びコンテナ122から出力されるI/O要求の状態によっては、
図6のグラフ412のようにIOPSが遷移する場合がある。すなわち、仮想マシン11から出力されるI/O要求は、IOPSが頭打ちになった後に、仮想マシン11からの出力数が増えると、IOPSも低下する場合がある。そして、コンテナ122から出力されるI/O要求は、
図5の場合と比較してレイテンシの低下が少ない。すなわち、コンテナ122が出力するI/O要求の処理が、仮想マシン11が出力するI/O要求の処理の性能を低下させていると考えられる。このような場合、コンテナ122が出力するI/O要求に対してスロットリングを実行することで、仮想マシン11が出力するI/O要求の処理性能を向上させることができると考えられる。そこで、本実施例に係るI/Oスケジューラ10は、以下のような動作を行う。
【0072】
スロットリング判定部104は、仮想マシン動作部20及びコンテナ動作部30のそれぞれを単位とするスロットリングを実行するための条件を記憶する。すなわち、スロットリングを実行するための条件は、全てのアプリケーション実行部201からのI/O要求に対する処理の性能及び全てのアプリケーション実行部301からのI/O要求に対する処理の性能に基づく条件である。例えば、スロットリング判定部104は、全ての仮想マシン11からの1秒間のI/O要求の発行数がVM閾値以上で且つ全てのコンテナ122から1秒間のI/O要求の発行数がコンテナ閾値以上の場合にスロットリングを実行するという条件を記憶する。より具体的には、
図5及び6の場合のスロットリングを実行するための条件は以下のように設定できる。スロットリング判定部104は、全アプリケーション実行部201から1秒間に発行されたI/O要求の数が100K以上且つ全アプリケーション実行部301から1秒間に発行されたI/O要求の数が200K以上の場合を実行の条件として記憶する。
【0073】
さらに、本実施例では、スロットリング判定部104は、スロットリング対象を仮想マシン11又はコンテナ122のどちらにするかを判定するためのIOPSの対象判定閾値を記憶する。例えば、
図5と
図6の状態を切り分ける場合であれば、スロットリング判定部104は、アプリケーション実行部201が出力したI/O要求のIOPSが90以上であればアプリケーション実行部201が出力したI/O要求をスロットリング対象とする。また、アプリケーション実行部201が出力したI/O要求のIOPSが90未満であれば、スロットリング判定部104は、アプリケーション実行部301が出力したI/O要求をスロットリング対象とする。
【0074】
スロットリング判定部104は、スロットリングを実行するか否かの判定のタイミングが到来すると、統計情報を統計情報管理部103から取得する。そして、スロットリング判定部104は、スロットリングを実行するための条件が満たされたか否かを判定する。スロットリングを実行するための条件が満たされた場合、スロットリング判定部104は、アプリケーション実行部201が出力したI/O要求のIOPSが対象判定閾値以上か否かによりスロットリングの対象を決定する。
【0075】
そして、スロットリング判定部104は、スロットリングの対象のスロットリングの設定を決定する。その後、スロットリング判定部104は、アプリケーション実行部201が出力したI/O要求がスロットリング対象であれば、スロットリングの設定をスロットリング部204に通知する。これに対して、アプリケーション実行部301が出力したI/O要求がスロットリング対象であれば、スロットリング判定部104は、I/O処理部102にスロットリングの設定を通知する。
【0076】
スロットリング部204は、スロットリングの設定の通知をスロットリング判定部104から受けた場合、各アプリケーション実行部201におけるスロットリングの分担を求める。そして、スロットリング部204は、求めた分担にしたがってアプリケーション実行部201から出力されるI/O要求に対してスロットリングを実行する。その後、スロットリングの解除の通知をスロットリング判定部104から受けた場合、スロットリング部204は、スロットリングを停止する。
【0077】
I/O処理部102は、スロットリングの設定の通知をスロットリング判定部104から受けた場合、スロットリングの設定にしたがって、I/O要求のSSD13への出力を制御する。例えば、I/O処理部102は、スロットリングを実行する前のI/O要求のIOPS、すなわち現在のIOPSに対するスロットリングを実行した後のI/O要求のIOPSの割合をスロットリングの設定としてスロットリング判定部104から受信する。そして、I/O処理部102は、I/O要求のSSDへの出力を一定時間中断するもしくは一定量溜まるまで待機するなどして、I/O要求のIOPSが指定された割合となるようにI/O要求の送信元判定部101への出力を制御する。その後、スロットリングの解除の通知をスロットリング判定部104から受けた場合、I/O処理部102は、スロットリングを停止し、送信元判定部101から入力されたI/O要求を制限せずにSSD13へ出力する。
【0078】
次に、
図7を参照して、本実施例に係るI/Oスケジューラ10によるI/O要求の出力の制御の流れについて説明する。
図7は、実施例2に係るI/OスケジューラによるI/O要求の出力の制御のフローチャートである。
【0079】
スロットリング判定部104は、スロットリングポリシーの更新を実行するか否かを判定する(ステップS201)。
【0080】
スロットリングポリシーの更新を行わない場合(ステップS201:否定)、I/O処理部102は、処理するI/O要求が存在するか否かを判定する(ステップS202)。処理するI/O要求が存在する場合(ステップS202:肯定)、I/O処理部102は、ステップS210へ進む。これに対して、処理するI/O要求が存在しない場合(ステップS202:否定)、I/O処理部102は、ステップS213へ進む。
【0081】
一方、スロットリングポリシーの更新を行う場合(ステップS201:肯定)、スロットリング判定部104は、統計情報管理部103が有する統計情報を用いてスロットリングを行うか否かを判定する(ステップS203)。スロットリング判定部104は、全アプリケーション実行部201及び全アプリケーション実行部301が出力するI/O要求に関する統計情報を用いる。
【0082】
スロットリングを行う場合(ステップS203:肯定)、スロットリング判定部104は、統計情報管理部103が有する統計情報及び対象判定閾値を用いてスロットリングの対象を決定する。さらに、スロットリング判定部104は、統計情報管理部103が有する統計情報を用いてスロットリングの設定を決定する(ステップS204)。
【0083】
スロットリング判定部104は、仮想マシン11側のスロットリングを実行するか否か、すなわち、スロットリング対象がアプリケーション実行部201から出力されるI/O要求か否かを判定する(ステップS205)。仮想マシン11側のスロットリングを実行しない場合(ステップS205:否定)、I/O処理部102は、ステップS210へ進む。
【0084】
これに対して、仮想マシン11側のスロットリングを実行する場合(ステップS205:肯定)、スロットリング判定部104は、決定したスロットリングの設定をスロットリング部204に通知する(ステップS206)。
【0085】
スロットリング部204は、スロットリングの設定の通知をスロットリング判定部104から受ける。また、スロットリング部204は、I/O受付部202から入力されるI/O要求の送信元の情報を取得する。そして、スロットリング部204は、I/O要求の送信元の情報から各アプリケーション実行部201に対するスロットリングの分担を決定する。そして、スロットリング部204は、受信したスロットリングの設定を、各アプリケーション実行部201に決めた割合で分担させて、各アプリケーション実行部201から出力されたI/O要求に対するスロットリングを実行する(ステップS207)。その後、I/O処理部102は、ステップS210へ進む。
【0086】
これに対して、スロットリングを行わない場合(ステップS203:否定)、スロットリング判定部104は、スロットリング部204がスロットリングを実行中か否かを判定する(ステップS208)。スロットリングを実行中でない場合(ステップS208:否定)、I/O処理部102は、ステップS210へ進む。
【0087】
これに対して、スロットリングを実行中の場合(ステップS208:肯定)、スロットリング判定部104は、スロットリングの解除をスロットリング部204に通知する。スロットリング部204は、スロットリングの解除の通知をスロットリング判定部104から受ける。そして、スロットリング部204は、実行中のスロットリングを停止し、スロットリングを解除する(ステップS209)。
【0088】
その後、I/O処理部102は、コンテナ122側のスロットリングを実行するか否か、すなわち、スロットリング対象がアプリケーション実行部301から出力されるI/O要求か否かを判定する(ステップS210)。
【0089】
コンテナ122側のスロットリングを実行しない場合(ステップS210:否定)、I/O処理部102は、入力順にI/O要求を処理する(ステップS211)。
【0090】
これに対して、コンテナ側のスロットリングを実行する場合(ステップS210:肯定)、I/O処理部102は、スロットリングの設定で指定されたスロットリングの割合に応じてI/O要求を選択して処理する(ステップS212)。
【0091】
その後、アプリケーション実行部201及び301、並びに、I/Oスケジューラ10は、操作者から動作停止の命令の入力を受けているか否かなどにより、動作を終了するか否かを判定する(ステップS213)。動作を終了しない場合(ステップS213:否定)、スロットリング判定部104は、ステップS201に戻る。
【0092】
これに対して、動作を終了する場合(ステップS213:肯定)、アプリケーション実行部201及び301、並びに、I/Oスケジューラ10は、動作を停止してI/O要求の処理の実行を停止する。
【0093】
ここで、本実施例においても、アプリケーション実行部201が出力したI/O要求に対するスロットリングの実行をI/O処理部102に行わせることも可能である。
【0094】
以上に説明したように、本実施例に係るサーバは、I/O要求の処理状態に応じてスロットリングの対象を判定し、スロットリングを実行する。これにより、コンテナが出力するI/O要求の処理が、仮想マシンが出力するI/O要求の処理の性能を低下させている場合に、I/O要求の処理性能を向上させることができる。
【0095】
なお、以上の各実施例で説明したI/Oスケジューラによるスロットリングの機能は、仮想マシンが動作する仮想環境とコンテナが動作する仮想環境とを統合したシステムであれば適応可能であり、上述した効果を奏することができる。このようなシステムとしては、システムの管理を容易にするなどの理由から様々な機能が統合されるHCIがある。ただし、本実施例に係るI/Oスケジューラが動作可能なシステムは、HCIに限定されるものではなく、例えば、SAN(Storage Area Network)などのストレージシステムであってもよい。
【0096】
(ハードウェア構成)
次に、
図8を参照して、サーバ1のハードウェア構成について説明する。
図8は、サーバのハードウェア構成図である。
図8に示すように、サーバ1は、CPU(Central Processing Unit)91、メモリ92及びSSD13を有する。
【0097】
CPU91は、バスを介してメモリ92及びSSD13に接続する。メモリ92は、
図2に例示した仮想マシン動作部20、コンテナ動作部30及びI/Oスケジューラ10を実現するプログラムを含む各種プログラムを格納する。
【0098】
CPU91は、
図1に例示した仮想マシン11及びホスト12を実現する。また、CPU91は、
図2に例示した仮想マシン動作部20、コンテナ動作部30及びI/Oスケジューラ10の機能を実現する。具体的には、CPU91は、メモリ92から各種プログラムを読み出し展開して実行することで、
図2に例示した仮想マシン動作部20、コンテナ動作部30及びI/Oスケジューラ10を実現する。例えば、CPU91及びメモリ92は、送信元判定部101、I/O処理部102、統計情報管理部103及びスロットリング判定部104の機能を実現する。また、CPU91は、アプリケーション実行部201、I/O受付部202、統計情報取得部203及びスロットリング部204の機能を実現する。CPU91は、アプリケーション実行部301の機能を実現する。
【符号の説明】
【0099】
1 サーバ
10 I/Oスケジューラ
11 仮想マシン
12 ホスト
13 SSD
20 仮想マシン動作部
30 コンテナ動作部
101 送信元判定部
102 I/O処理部
103 統計情報管理部
104 スロットリング判定部
121 ハイパーバイザー
122 コンテナ
201 アプリケーション実行部
202 I/O受付部
203 統計情報取得部
204 スロットリング部
301 アプリケーション実行部