(57)【特許請求の範囲】
【請求項１】
仮想プラットフォーム上でＩ／Ｏチャネルを調整する方法であって、
ホストＨＯＳＴが、前記ＨＯＳＴ上で動作している複数の仮想マシンＶＭの現在の平均Ｉ／Ｏスループットを計測するステップと、
前記現在の平均Ｉ／Ｏスループットが第１の閾値よりも大きい場合、ワーカースレッドが増加された後は前記複数のＶＭの前記平均Ｉ／Ｏスループットが前記第１の閾値よりも小さくなるように、前記ＨＯＳＴが、前記複数のＶＭのフロントデバイスとバックデバイスとの間のＶＭを処理するためのワーカースレッドを増加させるか、又は、前記現在の平均Ｉ／Ｏスループットが第２の閾値よりも小さい場合、前記ワーカースレッドが減少された後は前記複数のＶＭの前記平均Ｉ／Ｏスループットが前記第２の閾値よりも大きくなるように、前記ＨＯＳＴが、前記複数のＶＭの前記フロントデバイスと前記バックデバイスとの間のＶＭを処理するためのワーカースレッドを減少させるステップであって、前記第１の閾値は前記第２の閾値よりも大きい、ステップと、
前記ＨＯＳＴが、前記増加又は減少後のＶＭを処理するためのワーカースレッドに応じて、前記複数のＶＭの前記フロントデバイス内のキューとＶＭを処理するためのワーカースレッドとのマッピング関係、及び、前記複数のＶＭの前記バックデバイス内のキューとＶＭを処理するためのワーカースレッドとのマッピング関係を、前記複数のＶＭの前記フロントデバイスと前記バックデバイスとの間に複数のデータ送信チャネルが形成されるように、別々に調整するステップと、
を含む、方法。
【請求項２】
前記現在の平均Ｉ／Ｏスループットが前記第１の閾値よりも大きい場合、前記ＨＯＳＴが、前記複数のＶＭの前記フロントデバイスと前記バックデバイスとの間のＶＭを処理するためのワーカースレッドを増加させるステップの前に、前記方法は更に、
前記ＨＯＳＴが、前記複数のＶＭの前記フロントデバイスと前記バックデバイスとの間のＶＭを処理するためのワーカースレッドを増加させることによりもたらされる、ＣＰＵ使用率の増加とＩ／Ｏスループットの増加とを比較するステップと、
前記Ｉ／Ｏスループットの増加が前記ＣＰＵ使用率の増加よりも大きい場合、前記ＨＯＳＴが、前記複数のＶＭの前記フロントデバイスと前記バックデバイスとの間のＶＭを処理するためのワーカースレッドを増加させるステップを実行するステップと、
を含む、請求項１に記載の方法。
【請求項３】
前記現在の平均Ｉ／Ｏスループットが前記第２の閾値よりも小さい場合、前記ＨＯＳＴが、前記複数のＶＭの前記フロントデバイスと前記バックデバイスとの間のＶＭを処理するためのワーカースレッドを減少させるステップの前に、前記方法は更に、
前記ＨＯＳＴが、前記複数のＶＭの前記フロントデバイスと前記バックデバイスとの間のワーカースレッドを減少させることによりもたらされるＣＰＵ使用率の減少が、前記複数のＶＭの前記現在の平均Ｉ／Ｏスループットへの対応不能につながるかどうかを決定するステップと、
前記複数のＶＭの前記フロントデバイスと前記バックデバイスとの間のワーカースレッドを減少させることによりもたらされる前記ＣＰＵ使用率の減少が、前記複数のＶＭの前記現在の平均Ｉ／Ｏスループットへの対応不能につながらない場合、前記複数のＶＭの前記フロントデバイスと前記バックデバイスとの間のワーカースレッドを減少させるステップを実行するステップと、
を含む、請求項１に記載の方法。
【請求項４】
前記ＨＯＳＴが、前記増加又は減少後のＶＭを処理するためのワーカースレッドに応じて、前記複数のＶＭの前記フロントデバイス内のキューと前記ＶＭを処理するためのワーカースレッドとのマッピング関係、及び、前記複数のＶＭの前記バックデバイス内のキューと前記ＶＭを処理するためのワーカースレッドとのマッピング関係を、別々に調整するステップは、
前記増加又は減少後のＶＭを処理するためのワーカースレッドの数が、前記ＨＯＳＴ上で動作しているＶＭの数よりも少ない場合、前記ＨＯＳＴが、各ワーカースレッドを、各ＶＭのフロントデバイス内のキューと、各ＶＭのバックデバイス内のキューとにマッピングするステップか、又は、
前記増加又は減少後のＶＭを処理するためのワーカースレッドの数が、前記ＨＯＳＴ上で動作しているＶＭの数よりも多い又は等しい場合、前記ＨＯＳＴが、排他的ワーカースレッドを、１つのＶＭのフロントデバイス内のキューとバックデバイス内のキューとにマッピングし、共有ワーカースレッドを、少なくとも２つのＶＭのフロントデバイス及びバックデバイス内にあり、前記排他的ワーカースレッドに対応しないキューにマッピングするステップを含み、
前記ＶＭを処理するためのワーカースレッドは、前記排他的ワーカースレッドと前記共有ワーカースレッドとを含む、請求項１乃至３の何れか一項に記載の方法。
【請求項５】
前記ＨＯＳＴが、前記増加又は減少後のＶＭを処理するためのワーカースレッドに応じて、前記複数のＶＭの前記フロントデバイス内のキューと前記ＶＭを処理するためのワーカースレッドとのマッピング関係、及び、前記複数のＶＭの前記バックデバイス内のキューとＶＭを処理するためのワーカースレッドとのマッピング関係を、別々に調整した後、前記方法は更に、
前記ＨＯＳＴが、前記複数のＶＭの前記バックデバイス内のキューと、前記ＨＯＳＴのネイティブデバイスＮａｔｉｖｅ  Ｄｅｖｉｃｅ内のキューとのマッピング関係を、前記複数のＶＭのバックデバイスと前記Ｎａｔｉｖｅ  Ｄｅｖｉｃｅとの間に複数のデータ伝送チャネルが形成されるように調整するステップを含む、請求項１乃至４の何れか一項に記載の方法。
【請求項６】
仮想プラットフォーム上でＩ／Ｏチャネルを調整する装置であって、
ＨＯＳＴ上で動作している複数の仮想マシンＶＭの現在の平均Ｉ／Ｏスループットを計測するように構成された計測モジュールと、
前記計測モジュールに接続され、前記計測モジュールによって計測された前記現在の平均Ｉ／Ｏスループットが第１の閾値よりも大きい場合、ワーカースレッドが増加された後は前記複数のＶＭの前記平均Ｉ／Ｏスループットが前記第１の閾値よりも小さくなるように、前記複数のＶＭのフロントデバイスとバックデバイスとの間のＶＭを処理するためのワーカースレッドを増加させるか、又は、前記計測モジュールによって計測された前記現在の平均Ｉ／Ｏスループットが第２の閾値よりも小さい場合、前記ワーカースレッドが減少された後は前記複数のＶＭの前記平均Ｉ／Ｏスループットが前記第２の閾値よりも大きくなるように、前記複数のＶＭの前記フロントデバイスと前記バックデバイスとの間のＶＭを処理するためのワーカースレッドを減少させるように構成された処理モジュールであって、前記第１の閾値は前記第２の閾値よりも大きい、前記処理モジュールと、
前記処理モジュールに接続され、前記処理モジュールによる前記増加又は減少後のＶＭを処理するためのワーカースレッドに応じて、前記複数のＶＭの前記フロントデバイス内のキューとＶＭを処理するためのワーカースレッドとのマッピング関係、及び、前記複数のＶＭの前記バックデバイス内のキューとＶＭを処理するためのワーカースレッドとのマッピング関係を、前記複数のＶＭの前記フロントデバイスと前記バックデバイスとの間に複数のデータ送信チャネルが形成されるように、別々に調整するように構成された第１の調整モジュールと、
を含む、装置。
【請求項７】
前記計測モジュールによって計測された前記現在の平均Ｉ／Ｏスループットが前記第１の閾値よりも大きい場合に、前記複数のＶＭの前記フロントデバイスと前記バックデバイスとの間のＶＭを処理するためのワーカースレッドを増加させることによりもたらされる、ＣＰＵ使用率の増加とＩ／Ｏスループットの増加とを比較するように構成された決定モジュールを更に含み、
前記処理モジュールは更に、前記決定モジュールが、前記Ｉ／Ｏスループットの増加が前記ＣＰＵ使用率の増加よりも大きいと決定した場合、前記ワーカースレッドが増加された後は、前記複数のＶＭの前記平均Ｉ／Ｏスループットが前記第１の閾値よりも小さくなるように、前記複数のＶＭの前記フロントデバイスと前記バックデバイスとの間のＶＭを処理するためのワーカースレッドを増加させるように構成される、請求項６に記載の調整装置。
【請求項８】
前記計測モジュールによって計測された前記現在の平均Ｉ／Ｏスループットが前記第２の閾値よりも小さい場合に、前記複数のＶＭの前記フロントデバイスと前記バックデバイスとの間のワーカースレッドを減少させることによりもたらされるＣＰＵ使用率の減少が、前記複数のＶＭの前記現在の平均Ｉ／Ｏスループットへの対応不能につながるかどうかを決定するように構成された決定モジュールを更に含み、
前記処理モジュールは更に、前記決定モジュールが、前記複数のＶＭの前記フロントデバイスと前記バックデバイスとの間のワーカースレッドを減少させることによりもたらされる前記ＣＰＵ使用率の減少が、前記複数のＶＭの前記現在の平均Ｉ／Ｏスループットへの対応不能につながらないと決定した場合、前記ワーカースレッドが減少された後は、前記複数のＶＭの前記現在の平均Ｉ／Ｏスループットが前記第２の閾値よりも大きくなるように、前記複数のＶＭの前記フロントデバイスと前記バックデバイスとの間のワーカースレッドを減少させるように構成される、請求項６に記載の調整装置。
【請求項９】
前記第１の調整モジュールは、特に、
前記増加又は減少後のＶＭを処理するためのワーカースレッドの数が、前記ＨＯＳＴ上で動作しているＶＭの数よりも少ない場合、各ワーカースレッドを、各ＶＭのフロントデバイス内のキューと、各ＶＭのバックデバイス内のキューとにマッピングし、又は、
前記増加又は減少後のＶＭを処理するためのワーカースレッドの数が、前記ＨＯＳＴ上で動作しているＶＭの数よりも多い又は等しい場合、排他的ワーカースレッドを、１つのＶＭのフロントデバイス内のキュー及びバックデバイス内のキューにマッピングし、共有ワーカースレッドを、少なくとも２つのＶＭのフロントデバイス及びバックデバイス内にあり、前記排他的ワーカースレッドに対応しないキューにマッピングするように構成され、
前記ＶＭを処理するためのワーカースレッドは、前記排他的ワーカースレッドと前記共有ワーカースレッドとを含む、請求項６乃至８の何れか一項に記載の調整装置。
【請求項１０】
前記複数のＶＭの前記バックデバイス内のキューと、前記ＨＯＳＴのネイティブデバイスＮａｔｉｖｅ  Ｄｅｖｉｃｅ内のキューとのマッピング関係を、前記複数のＶＭの前記バックデバイスと前記Ｎａｔｉｖｅ  Ｄｅｖｉｃｅとの間に複数のデータ伝送チャネルが形成されるように調整するように構成された第２の調整モジュールを更に含む、請求項６乃至９の何れか一項に記載の調整装置。
【請求項１１】
ネイティブデバイスＮａｔｉｖｅ  Ｄｅｖｉｃｅと、前記Ｎａｔｉｖｅ  Ｄｅｖｉｃｅ上で動作している複数の仮想マシンＶＭ内のフロントデバイス及びバックデバイスと、前記複数のＶＭの前記フロントデバイスと前記バックデバイスとの間のデータ処理モジュールと、前記複数のＶＭの前記バックデバイスと前記Ｎａｔｉｖｅ  Ｄｅｖｉｃｅとの間のブリッジＢｒｉｅｄｇｅと、を含み、
前記データ処理モジュールは、
複数の仮想マシンＶＭの現在の平均Ｉ／Ｏスループットを計測し、
前記現在の平均Ｉ／Ｏスループットが第１の閾値よりも大きい場合、ワーカースレッドが増加された後は前記複数のＶＭの前記平均Ｉ／Ｏスループットが前記第１の閾値よりも小さくなるように、前記複数のＶＭの前記フロントデバイスと前記バックデバイスとの間のＶＭを処理するためのワーカースレッドを増加させるか、又は、前記現在の平均Ｉ／Ｏスループットが第２の閾値よりも小さい場合、前記ワーカースレッドが減少された後は前記複数のＶＭの前記平均Ｉ／Ｏスループットが前記第２の閾値より大きくなるように、前記複数のＶＭの前記フロントデバイスと前記バックデバイスとの間のワーカースレッドを減少させ、ただし、前記第１の閾値は前記第２の閾値より大きく、
前記増加又は減少後のＶＭを処理するためのワーカースレッドに応じて、前記複数のＶＭの前記フロントデバイス内のキューとＶＭを処理するためのワーカースレッドとのマッピング関係、及び、前記複数のＶＭの前記バックデバイス内のキューとＶＭを処理するためのワーカースレッドとのマッピング関係を、前記複数のＶＭの前記フロントデバイスと前記バックデバイスとの間に複数のデータ送信チャネルが形成されるように、別々に調整するように構成される、ホストＨＯＳＴ。
【請求項１２】
前記データ処理モジュールは更に、
前記複数のＶＭの前記フロントデバイスと前記バックデバイスとの間のＶＭを処理するためのワーカースレッドを増加させることによりもたらされる、ＣＰＵ使用率の増加とＩ／Ｏスループットの増加とを比較し、
前記Ｉ／Ｏスループットの増加が前記ＣＰＵ使用率の増加よりも大きい場合、前記ワーカースレッドが増加された後は、前記複数のＶＭの前記現在の平均Ｉ／Ｏスループットが前記第１の閾値よりも小さくなるように、前記複数のＶＭの前記フロントデバイスと前記バックデバイスとの間のＶＭを処理するためのワーカースレッドを増加させるように構成される、請求項１１に記載のＨＯＳＴ。
【請求項１３】
前記データ処理モジュールは更に、
前記複数のＶＭの前記フロントデバイスと前記バックデバイスとの間のワーカースレッドを減少させることによりもたらされるＣＰＵ使用率の減少が、前記複数のＶＭの前記現在の平均Ｉ／Ｏスループットへの対応不能につながるかどうかを決定し、
前記複数のＶＭの前記フロントデバイスと前記バックデバイスとの間のワーカースレッドを減少させることによりもたらされる前記ＣＰＵ使用率の減少が、前記複数のＶＭの前記現在の平均Ｉ／Ｏスループットへの対応不能につながらない場合、前記ワーカースレッドが減少された後は、前記複数のＶＭの前記現在の平均Ｉ／Ｏスループットが前記第２の閾値よりも大きくなるように、前記複数のＶＭの前記フロントデバイスと前記バックデバイスとの間のワーカースレッドを減少させるように構成される、請求項１１に記載のＨＯＳＴ。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、２０１３年１月２４日に、「METHOD  AND  APPARATUS  FOR  ADJUSTING  I/O  CHANNELS  ON  VIRTUAL  PLATFORM」なる名称で、中国専利局に出願された中国特許出願第２０１３１００２７３１２．７号の優先権を主張し、その全体を、参照することにより本明細書に組み込むものとする。
【０００２】
本発明は、仮想技術の分野、具体的には、仮想プラットフォーム上でＩ／Ｏチャネルを調整する方法及び装置に関する。
【背景技術】
【０００３】
仮想化は、サーバ、ネットワーク、メモリ及びストレージといったコンピュータの物理リソースを抽象化かつ変換し、ユーザがこれらのリソースを元のコンフィギュレーションよりもよりよく使用できるように、抽象化かつ変換された物理リソースを提示する。これらのリソースの新しい仮想部分は、元のリソースのアーキテクチャの種類、局所性、又は物理コンフィギュレーションによって制限されない。複数の仮想マシン（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ、略してＶＭ）が、物理的に存在するホストＨＯＳＴ上で動作する。ホストは、すべての物理ハードウェアデバイス及びリソースを管理し、排他的デバイスを、複数のユーザスレッドによる同時使用のために複数の仮想デバイスへと仮想化する。各ユーザが確認することのできるデバイスは、１つの仮想デバイスであり、物理ハードウェアデバイスは、ユーザにはトランスペアレントである。
【０００４】
仮想環境では、ＶＭは、ハードウェアデバイスに直接アクセスすることはできず、ＨＯＳＴが、ＶＭに、ハードウェアデバイスに接続するためのデータチャネル、すなわち、Ｉ／Ｏチャネルを提供する。本発明では、チャネルは、ＶＭフロントデバイスＦｒｏｎｔ  ＤｅｖｉｃｅとＶＭバックデバイスＢａｃｋ  Ｄｅｖｉｃｅとの間のデータチャネルと、ＶＭバックデバイスとＨＯＳＴネイティブデバイスＮａｔｉｖｅ  Ｄｅｖｉｃｅとの間のデータチャネルとを含み、ここで、ＶＭフロントデバイスは、仮想マシン内に見られるデバイスであり、実際に、ＨＯＳＴによってＶＭのためにシミュレートされているデバイスであり、ＶＭバックデバイスは、ＨＯＳＴオペレーティングシステム内のＶＭフロントデバイスに接続されるソフトウェア・シミュレーション・デバイスであり、ＨＯＳＴネイティブデバイスＮａｔｉｖｅ  Ｄｅｖｉｃｅは、ＨＯＳＴ物理デバイスである。
【０００５】
図１は、従来技術における仮想プラットフォーム上の単純なマルチＩ／Ｏチャネル技術を示し、２つの仮想マシンＶＭ１及びＶＭ２が例として使用され、１つのＶＭのフロントデバイスとバックデバイスとの間には、複数のＩ／Ｏチャネル（図１では、２つのＩ／Ｏチャネルが例として使用されている）がある。データ処理モジュールは、当該ＶＭのフロントデバイスとバックデバイスとの間のブリッジであり、データコピー、データフィルタリング、又は他のデータ処理サービスに使用され、多数のワーカースレッド（working  thread）図１では、２つのワーカースレッドが例として使用されている）を含む。ワーカースレッドの数は、ＶＭフロントデバイスとＶＭバックデバイスとの間のＩ／Ｏチャネルの数に等しく、各Ｉ／Ｏチャネルは、１つのワーカースレッドに対応する。単一のチャネルが、ＶＭバックデバイスとブリッジＢｒｉｄｇｅとの間に、また、ブリッジＢｒｉｄｇｅとネイティブデバイスＮａｔｉｖｅ  Ｄｅｖｉｃｅとの間に存在し、ＶＭバックデバイスは、当該単一のチャネルを介して、データをネイティブデバイスＮａｔｉｖｅ  Ｄｅｖｉｃｅに送信する。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述した従来技術は、少なくとも以下の技術的課題を有する。すなわち、ＶＭフロントデバイスとＶＭバックデバイスとの間のＩ／Ｏチャネルの数は、ＶＭが作成されたときに決定され、Ｉ／Ｏチャネルの数は、ＶＭのライフサイクルの間は変更できないため、ＶＭフロントデバイスとＶＭバックデバイスとの間のＩ／Ｏチャネルによって占有されるチャネルリソースを変更できない。ＶＭフロントデバイスとＶＭバックデバイスとの間のＩ／Ｏスループットが変化したときに、Ｉ／Ｏチャネルリソースを調整できない。Ｉ／Ｏスループットが減少したときに、アイドルＩ／Ｏチャネルリソースを解放することができず、結果として、Ｉ／Ｏチャネルリソースが無駄になる。Ｉ／Ｏスループットが増加したときに、Ｉ／Ｏチャネルリソースを増加することができず、結果として、Ｉ／Ｏチャネルのデータ送信能力を向上できず、システム性能が低下する。
【課題を解決するための手段】
【０００７】
本発明の実施形態は、仮想プラットフォーム上でＩ／Ｏチャネルを調整する方法と、複数のＶＭのフロントデバイスとバックデバイスとの間でのＩ／Ｏチャネルリソースの分配を動的に調整し、それによりシステム性能を向上させるＨＯＳＴ調整装置とを提供する。
【０００８】
第１の態様によれば、本発明は、仮想プラットフォーム上でＩ／Ｏチャネルを調整する方法を提供する。当該方法は、
ホストＨＯＳＴが、ＨＯＳＴ上で動作している複数の仮想マシンＶＭの現在の平均Ｉ／Ｏスループットを計測するステップと、
現在の平均Ｉ／Ｏスループットが第１の閾値よりも大きい場合、ワーカースレッドが増加された後は複数のＶＭの平均Ｉ／Ｏスループットが第１の閾値よりも小さくなるように、ＨＯＳＴが、複数のＶＭのフロントデバイスとバックデバイスとの間のＶＭを処理するためのワーカースレッドを増加させるか、又は、現在の平均Ｉ／Ｏスループットが第２の閾値よりも小さい場合、ワーカースレッドが減少された後は複数のＶＭの平均Ｉ／Ｏスループットが第２の閾値よりも大きくなるように、ＨＯＳＴが、複数のＶＭのフロントデバイスとバックデバイスとの間のＶＭを処理するためのワーカースレッドを減少させるステップであって、第１の閾値は第２の閾値よりも大きい、ステップと、
ＨＯＳＴが、増加又は減少後のＶＭを処理するためのワーカースレッドに応じて、複数のＶＭのフロントデバイス内のキューとＶＭを処理するためのワーカースレッドとのマッピング関係、及び、複数のＶＭのバックデバイス内のキューとＶＭを処理するためのワーカースレッドとのマッピング関係を、複数のＶＭのフロントデバイスとバックデバイスとの間に複数のデータ送信チャネルが形成されるように、別々に調整するステップと、
を含む。
【０００９】
第１の態様に準拠する第１の可能な実施様態では、現在の平均Ｉ／Ｏスループットが第１の閾値よりも大きい場合、ＨＯＳＴが、複数のＶＭのフロントデバイスとバックデバイスとの間のＶＭを処理するためのワーカースレッドを増加させるステップの前に、当該方法は更に、
ＨＯＳＴが、複数のＶＭのフロントデバイスとバックデバイスとの間のＶＭを処理するためのワーカースレッドを増加させることによりもたらされる、ＣＰＵ使用率の増加とＩ／Ｏスループットの増加とを比較するステップと、Ｉ／Ｏスループットの増加がＣＰＵ使用率の増加よりも大きい場合、ＨＯＳＴが、複数のＶＭのフロントデバイスとバックデバイスとの間のＶＭを処理するためのワーカースレッドを増加させるステップを実行するステップとを含む。
【００１０】
第１の態様に準拠する第２の可能な実施様態では、現在の平均Ｉ／Ｏスループットが第２の閾値よりも小さい場合、ＨＯＳＴが、複数のＶＭのフロントデバイスとバックデバイスとの間のワーカースレッドを減少させるステップの前に、当該方法は更に、
ＨＯＳＴが、複数のＶＭのフロントデバイスとバックデバイスとの間のワーカースレッドを減少させることによりもたらされるＣＰＵ使用率の減少が、複数のＶＭのスループットへの対応不能につながるかどうかを決定するステップと、複数のＶＭのフロントデバイスとバックデバイスとの間のワーカースレッドを減少させることによりもたらされるＣＰＵ使用率の減少が、複数のＶＭのスループットへの対応不能につながらない場合、ＨＯＳＴが、複数のＶＭのフロントデバイスとバックデバイスとの間のワーカースレッドを減少させるステップを実行するステップとを含む。
【００１１】
第１の態様に準拠する第３の可能な実施様態では、又は、第１の態様の第１若しくは第２の可能な実施様態では、ＨＯＳＴが、増加又は減少後のＶＭを処理するためのワーカースレッドに応じて、複数のＶＭのフロントデバイス内のキューとＶＭを処理するためのワーカースレッドとのマッピング関係、及び、複数のＶＭのバックデバイス内のキューとＶＭを処理するためのワーカースレッドとのマッピング関係を、別々に調整するステップは、
増加又は減少後のＶＭを処理するためのワーカースレッドの数が、ＨＯＳＴ上で動作しているＶＭの数よりも少ない場合、ＨＯＳＴが、各ワーカースレッドを、各ＶＭのフロントデバイス内のキューと、各ＶＭのバックデバイス内のキューとにマッピングするステップか、又は、増加又は減少後のＶＭを処理するためのワーカースレッドの数が、ＨＯＳＴ上で動作しているＶＭの数よりも多い又は等しい場合、ＨＯＳＴが、排他的ワーカースレッドを、１つのＶＭのフロントデバイス内のキューとバックデバイス内のキューとにマッピングし、共有ワーカースレッドを、少なくとも２つのＶＭのフロントデバイス及びバックデバイス内にあり、排他的ワーカースレッドに対応しないキューにマッピングするステップを含み、当該ＶＭを処理するためのワーカースレッドは、排他的ワーカースレッドと共有ワーカースレッドとを含む。
【００１２】
第１の態様に準拠する第４の可能な実施様態では、又は、第１の態様の第１、第２若しくは第３の可能な実施様態では、ＨＯＳＴが、増加又は減少後のＶＭを処理するためのワーカースレッドに応じて、複数のＶＭのフロントデバイス内のキューとＶＭを処理するためのワーカースレッドとのマッピング関係、及び、複数のＶＭのバックデバイス内のキューとＶＭを処理するためのワーカースレッドとのマッピング関係を、別々に調整した後、方法は更に、
ＨＯＳＴが、複数のＶＭのバックデバイス内のキューと、ＨＯＳＴのネイティブデバイスＮａｔｉｖｅ  Ｄｅｖｉｃｅ内のキューとのマッピング関係を、複数のＶＭのバックデバイスとＮａｔｉｖｅ  Ｄｅｖｉｃｅとの間に複数のデータ伝送チャネルが形成されるように調整するステップを含む。
【００１３】
第２の態様によれば、本発明は、仮想プラットフォーム上でＩ／Ｏチャネルを調整する装置ＨＯＳＴを提供する。当該ＨＯＳＴは、
ＨＯＳＴ上で動作している複数の仮想マシンＶＭの現在の平均Ｉ／Ｏスループットを計測するように構成された計測モジュールと、当該計測モジュールに接続され、当該計測モジュールによって計測された現在の平均Ｉ／Ｏスループットが第１の閾値よりも大きい場合、ワーカースレッドが増加された後は複数のＶＭの平均Ｉ／Ｏスループットが第１の閾値よりも小さくなるように、複数のＶＭのフロントデバイスとバックデバイスとの間のＶＭを処理するためのワーカースレッドを増加させるか、又は、当該計測モジュールによって計測された現在の平均Ｉ／Ｏスループットが第２の閾値よりも小さい場合、ワーカースレッドが減少された後は複数のＶＭの平均Ｉ／Ｏスループットが第２の閾値よりも大きくなるように、複数のＶＭのフロントデバイスとバックデバイスとの間のＶＭを処理するためのワーカースレッドを減少させるように構成された処理モジュールであって、第１の閾値は第２の閾値よりも大きい、処理モジュールと、当該処理モジュールに接続され、当該処理モジュールによる増加又は減少後のＶＭを処理するためのワーカースレッドに応じて、複数のＶＭのフロントデバイス内のキューとＶＭを処理するためのワーカースレッドとのマッピング関係、及び、複数のＶＭのバックデバイス内のキューとＶＭを処理するためのワーカースレッドとのマッピング関係を、複数のＶＭのフロントデバイスとバックデバイスとの間に複数のデータ送信チャネルが形成されるように、別々に調整するように構成された第１の調整モジュールと、を含む。
【００１４】
第１の態様に準拠する第１の可能な実施様態では、当該調整装置は更に、
当該計測モジュールによって計測された現在の平均Ｉ／Ｏスループットが第１の閾値よりも大きい場合に、複数のＶＭのフロントデバイスとバックデバイスとの間のＶＭを処理するためのワーカースレッドを増加させることによりもたらされる、ＣＰＵ使用率の増加とＩ／Ｏスループットの増加とを比較するように構成された決定モジュールを更に含み、当該処理モジュールは更に、Ｉ／Ｏスループットの増加がＣＰＵ使用率の増加よりも大きい場合、ワーカースレッドが増加された後は、複数のＶＭの平均Ｉ／Ｏスループットが第１の閾値よりも小さくなるように、複数のＶＭのフロントデバイスとバックデバイスとの間のＶＭを処理するためのワーカースレッドを増加させるように構成される。
【００１５】
第１の態様に準拠する第２の可能な実施様態では、当該調整装置は更に、
当該計測モジュールによって計測された現在の平均Ｉ／Ｏスループットが第２の閾値よりも小さい場合に、複数のＶＭのフロントデバイスとバックデバイスとの間のワーカースレッドを減少させることによりもたらされるＣＰＵ使用率の減少が、複数のＶＭのスループットへの対応不能につながるかどうかを決定するように構成された決定モジュールを更に含み、当該処理モジュールは更に、複数のＶＭのフロントデバイスとバックデバイスとの間のワーカースレッドを減少させることによりもたらされるＣＰＵ使用率の減少が、複数のＶＭのスループットへの対応不能につながらない場合、ワーカースレッドが減少された後は、複数のＶＭの平均Ｉ／Ｏスループットが第２の閾値よりも大きくなるように、複数のＶＭのフロントデバイスとバックデバイスとの間のワーカースレッドを減少させるように構成される。
【００１６】
第１の態様に準拠する第３の可能な実施様態では、又は、第１の態様の第１若しくは第２の可能な実施様態では、当該第１の調整モジュールは、特に、
増加又は減少後のＶＭを処理するためのワーカースレッドの数が、ＨＯＳＴ上で動作しているＶＭの数よりも少ない場合、各ワーカースレッドを、各ＶＭのフロントデバイス内のキューと、各ＶＭのバックデバイス内のキューとにマッピングし、又は、増加又は減少後のＶＭを処理するためのワーカースレッドの数が、ＨＯＳＴ上で動作しているＶＭの数よりも多い又は等しい場合、排他的ワーカースレッドを、１つのＶＭのフロントデバイス内のキュー及びバックデバイス内のキューにマッピングし、共有ワーカースレッドを、少なくとも２つのＶＭのフロントデバイス及びバックデバイス内にあり、排他的ワーカースレッドに対応しないキューにマッピングするように構成され、当該ＶＭを処理するためのワーカースレッドは、排他的ワーカースレッドと共有ワーカースレッドとを含む。
【００１７】
第１の態様に準拠する第４の実施様態では、又は、第１の態様の第１、第２若しくは第３の可能な実施様態では、当該調整装置は、
複数のＶＭのバックデバイス内のキューと、ＨＯＳＴのネイティブデバイスＮａｔｉｖｅ  Ｄｅｖｉｃｅ内のキューとのマッピング関係を、複数のＶＭのバックデバイスとＮａｔｉｖｅ  Ｄｅｖｉｃｅとの間に複数のデータ伝送チャネルが形成されるように調整するように構成された第２の調整モジュールを更に含む。
【００１８】
第３の態様によれば、本発明は、ホストＨＯＳＴを提供する。当該ＨＯＳＴは、ネイティブデバイスＮａｔｉｖｅ  Ｄｅｖｉｃｅと、Ｎａｔｉｖｅ  Ｄｅｖｉｃｅ上で動作している複数の仮想マシンＶＭ内のフロントデバイス及びバックデバイスと、複数のＶＭのフロントデバイスとバックデバイスとの間のデータ処理モジュールとを含み、
当該データ処理モジュールは、
複数の仮想マシンＶＭの現在の平均Ｉ／Ｏスループットを計測し、現在の平均Ｉ／Ｏスループットが第１の閾値よりも大きい場合、ワーカースレッドが増加された後は複数のＶＭの平均Ｉ／Ｏスループットが第１の閾値よりも小さくなるように、複数のＶＭのフロントデバイスとバックデバイスとの間のＶＭを処理するためのワーカースレッドを増加させるか、又は、現在の平均Ｉ／Ｏスループットが第２の閾値よりも小さい場合、ワーカースレッドが減少された後は複数のＶＭの平均Ｉ／Ｏスループットが第２の閾値より大きくなるように、複数のＶＭのフロントデバイスとバックデバイスとの間のワーカースレッドを減少させ、ただし、第１の閾値は第２の閾値より大きく、複数のＶＭのフロントデバイス内のキューとＶＭを処理するためのワーカースレッドとのマッピング関係、及び、複数のＶＭのバックデバイス内のキューとＶＭを処理するためのワーカースレッドとのマッピング関係を、複数のＶＭのフロントデバイスとバックデバイスとの間に複数のデータ送信チャネルが形成されるように、別々に調整するように構成される。
【００１９】
第３の態様に準拠する第１の可能な実施様態では、当該データ処理モジュールは更に、
複数のＶＭのフロントデバイスとバックデバイスとの間のＶＭを処理するためのワーカースレッドを増加させることによりもたらされる、ＣＰＵ使用率の増加とＩ／Ｏスループットの増加とを比較し、Ｉ／Ｏスループットの増加がＣＰＵ使用率の増加よりも大きい場合、ワーカースレッドが増加された後は、複数のＶＭの平均Ｉ／Ｏスループットが第１の閾値よりも小さくなるように、複数のＶＭのフロントデバイスとバックデバイスとの間のＶＭを処理するためのワーカースレッドを増加させるように構成される。
【００２０】
第３の態様に準拠する第２の可能な実施様態では、当該データ処理モジュールは更に、
複数のＶＭのフロントデバイスとバックデバイスとの間のワーカースレッドを減少させることによりもたらされるＣＰＵ使用率の減少が、複数のＶＭのスループットへの対応不能につながるかどうかを決定し、複数のＶＭのフロントデバイスとバックデバイスとの間のワーカースレッドを減少させることによりもたらされるＣＰＵ使用率の減少が、複数のＶＭのスループットへの対応不能につながらない場合、ワーカースレッドが減少された後は、複数のＶＭの平均Ｉ／Ｏスループットが第２の閾値よりも大きくなるように、複数のＶＭのフロントデバイスとバックデバイスとの間のワーカースレッドを減少させるように構成される。
【００２１】
本発明の実施形態では、複数のＶＭのフロントデバイスとバックデバイスとの間のＶＭを処理するためのワーカースレッドを増加させるか又は減少させるかは、複数のＶＭの現在の平均Ｉ／Ｏスループットに応じて決定することが理解できよう。複数のＶＭの現在の平均Ｉ／Ｏスループットが第１の閾値よりも大きい場合、Ｉ／Ｏチャネルのデータ送信能力を向上させるように、ＶＭを処理するためのワーカースレッドは増加される。つまり、Ｉ／Ｏチャネルリソースが増加される。また、複数のＶＭの現在の平均Ｉ／Ｏスループットが第２の閾値よりも小さい場合、Ｉ／Ｏチャネルリソースを無駄にしないように、ＶＭを処理するためのワーカースレッドは減少される。つまり、Ｉ／Ｏチャネルリソースが減少される。
【００２２】
また、ＨＯＳＴは、複数のＶＭのバックデバイス内のキューと、ＨＯＳＴのネイティブデバイスＮａｔｉｖｅ  Ｄｅｖｉｃｅ内のキューとのマッピング関係を調整することによって、複数のＶＭのバックデバイスとネイティブデバイスＮａｔｉｖｅ  Ｄｅｖｉｃｅとの間に、複数のデータ送信チャネルを形成する。これにより、複数のＶＭのフロントデバイスとＨＯＳＴのネイティブデバイスＮａｔｉｖｅ  Ｄｅｖｉｃｅとの間に複数のＩ／Ｏチャネルが得られ、複数のＶＭのフロントデバイスとＨＯＳＴのネイティブデバイスＮａｔｉｖｅ  Ｄｅｖｉｃｅとの間のデータ送信能力が向上される。
【図面の簡単な説明】
【００２３】
本発明の実施形態における又は従来技術における技術的解決策をより明確に説明するために、以下に、実施形態又は従来技術を説明するために必要な添付図面を簡単に紹介する。以下の説明における添付図面は、本発明の幾つかの実施形態を示すに過ぎず、当業者であれば、創造的な努力を必要とすることなく、これらの添付図面から他の図面を導出できよう。
【００２４】
【図１】図１は、従来技術における仮想プラットフォーム上の単純なマルチＩ／Ｏチャネル技術のアーキテクチャ図である。
【図２】図２は、本発明の一実施形態による仮想プラットフォーム上でＩ／Ｏチャネルを調整する方法のフローチャートである。
【図３】図３は、本発明による仮想プラットフォーム上の複数のＶＭのフロントデバイスとバックデバイスとの間のＩ／Ｏの作業モードが共有モードである場合のアーキテクチャ図である。
【図４】図４は、本発明による仮想プラットフォーム上の複数のＶＭのフロントデバイスとバックデバイスとの間のＩ／Ｏの作業モードがハイブリッドモードである場合のアーキテクチャ図である。
【図５】図５は、本発明の一実施形態による仮想プラットフォーム上でＩ／Ｏチャネルを調整する装置の概略構造図である。
【図６】図６は、本発明の別の実施形態による仮想プラットフォーム上でＩ／Ｏチャネルを調整する装置の概略構造図である。
【図７】図７は、本発明の一実施形態によるホストＨＯＳＴの概略構造図である。
【発明を実施するための形態】
【００２５】
本発明の目的、技術的解決策及び利点をより理解可能とするために、以下において、本発明の実施形態における添付図面を参照して本発明の実施形態における技術的解決が明確かつ十分に説明される。説明される実施形態は、本発明の実施形態のすべてではなくほんの一部である。創造的な努力を必要とすることなく、本発明の実施形態に基づき当業者によって得られる他の実施形態はすべて、本発明の保護範囲内である。
【００２６】
まず、本発明の実施形態の説明に記載される幾つかの要素を、本発明の実施形態を理解し易くするためにここに説明する。
【００２７】
ホストＨＯＳＴ：管理層として機能し、ハードウェアリソースを管理及び割り当てするために使用される。仮想マシン用の仮想ハードウェアプラットフォームを表し、当該仮想ハードウェアプラットフォームは、当該仮想ハードウェアプラットフォーム上で動作しているすべての仮想マシンに、様々なハードウェアリソースを提供する。例えば仮想プロセッサ（例えばＶＣＰＵ）、仮想メモリ、仮想磁気ディスク、仮想ネットワークアダプタ等を提供する。仮想磁気ディスクは、ＨＯＳＴのファイル又は論理ブロックデバイスに相当する。仮想マシンは、ＨＯＳＴによって準備される仮想ハードウェアプラットフォーム上で動作するが、その上では、１つ以上の仮想マシンが動作する。
【００２８】
仮想マシンＶＭ：仮想マシンソフトウェアを使用して物理コンピュータ上に１つ以上の仮想コンピュータをシミュレートする。これらの仮想マシンは、本物のコンピュータのように動作し、オペレーティングシステム及びアプリケーションプログラムが、仮想マシン上にインストールされ、仮想マシンは更に、ネットワークリソースにもアクセスしうる。仮想マシン上で動作するアプリケーションプログラムに対し、仮想マシンは本物のコンピュータのように動作する。
【００２９】
データ処理モジュール：本発明では、データ処理モジュールは、ＶＭのフロントデバイスとバックデバイスとの間に導入され、ＶＭのフロントデバイスとバックデバイスとの間のデータ送信を処理し、ワーカースレッドを使用して、ＶＭのフロントデバイス及びバックデバイス内のキューにあるデータを処理するように構成される。データ処理モジュールは、通常、ソフトウェアを使用して実装される。すなわち、プロセッサが、データ処理モジュールを実実装するために、特殊関数でソフトウェアコード命令を読み出す。
【００３０】
ネイティブデバイスＮａｔｉｖｅ  Ｄｅｖｉｃｅ：仮想環境がその上で動作しているハードウェアプラットフォームである。Ｎａｔｉｖｅ  Ｄｅｖｉｃｅは、複数種のハードウェアを含んでよく、例えば特定のコンピュータノードのＮａｔｉｖｅ  Ｄｅｖｉｃｅは、プロセッサ（例えばＣＰＵ）、メモリを含み、また更に、ネットワークアダプタ及びメモリといった高速／低速入出力（Ｉ／Ｏ、Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）デバイスを含んでもよい。
【００３１】
ブリッジＢｒｉｄｇｅ：ＶＭのバックデバイスとホストＨＯＳＴのネイティブデバイスＮａｔｉｖｅ  Ｄｅｖｉｃｅとの間のネットワークデバイス又はソフトウェアであって、ＶＭのバックデバイスとホストＨＯＳＴのネイティブデバイスＮａｔｉｖｅ  Ｄｅｖｉｃｅとの間にネットワーク接続を実施し、データフレームを転送する。
【００３２】
図２は、本発明の一実施形態による仮想プラットフォーム上でＩ／Ｏチャネルを調整する方法の一連の過程を説明する。当該一連の過程は、具体的に述べると、以下のステップを含む。
【００３３】
Ｓ２０１：ホストＨＯＳＴが、ＨＯＳＴ上で動作している複数の仮想マシンＶＭの現在の平均Ｉ／Ｏスループットを計測する。
【００３４】
具体的に述べると、ＨＯＳＴは、まず、ＨＯＳＴ上で動作している複数のＶＭの現在の総Ｉ／Ｏスループットを計測し、次に、当該総Ｉ／Ｏスループットを、ＨＯＳＴ上で動作しているＶＭの数で割ることによって、複数のＶＭの現在の平均Ｉ／Ｏスループットを得る。
【００３５】
Ｓ２０２：ＨＯＳＴは、現在の平均Ｉ／Ｏスループットが第１の閾値よりも大きい場合、複数のＶＭのフロントデバイスとバックデバイスとの間のＶＭを処理するためのワーカースレッドを増加させるか、又は、現在の平均Ｉ／Ｏスループットが第２の閾値よりも小さい場合、複数のＶＭのフロントデバイスとバックデバイスとの間のワーカースレッドを減少させる。
【００３６】
複数のＶＭのフロントデバイスとバックデバイスとの間のＶＭを処理するためのワーカースレッドは、ワーカースレッドが増加された後は、複数のＶＭの平均Ｉ／Ｏスループットが第１の閾値より大きくなるように増加される。又は、複数のＶＭのフロントデバイスとバックデバイスとの間のＶＭを処理するためのワーカースレッドは、ワーカースレッドが減少された後は、複数のＶＭの平均Ｉ／Ｏスループットが第２の閾値より大きくなるように減少される。第１の閾値は、第２の閾値より大きく、第１の閾値は、複数のＶＭの平均Ｉ／Ｏスループットの上限閾値を示すように使用され、第２の閾値は、複数のＶＭの平均Ｉ／Ｏスループットの下限閾値を示すように使用される。すなわち、第１の閾値は、１つのＶＭが負担するＩ／Ｏスループットの上限閾値を示し、第２の閾値は、１つのＶＭが負担するＩ／Ｏスループットの下限閾値を示す。
【００３７】
更に、複数のＶＭの現在の平均Ｉ／Ｏスループットが第１の閾値よりも大きい場合、ＨＯＳＴが、複数のＶＭのフロントデバイスとバックデバイスとの間のＶＭを処理するためのワーカースレッドを増加させるステップの前に、当該方法は更に以下を含む。
【００３８】
ＨＯＳＴが、複数のＶＭのフロントデバイスとバックデバイスとの間のＶＭを処理するためのワーカースレッドを増加させることによりもたらされる、ＣＰＵ使用率の増加とＩ／Ｏスループットの増加とを比較し、Ｉ／Ｏスループットの増加がＣＰＵ使用率の増加よりも大きい場合、ＨＯＳＴが、複数のＶＭのフロントデバイスとバックデバイスとの間のＶＭを処理するためのワーカースレッドを増加させるステップを実行する。
【００３９】
ＣＰＵ使用率の増加とは、ＶＭを処理するためのワーカースレッドを増加しない場合と比較されたＶＭを処理するためのワーカースレッドを増加させることによりもたらされるＣＰＵ使用率の増加であり、ＣＰＵ使用率の増加量及び／又はＣＰＵ使用率の増加率によって表現されうる。Ｉ／Ｏスループットの増加とは、ＶＭを処理するためのワーカースレッドを増加しない場合と比較されたＶＭを処理するためのワーカースレッドを増加させることによりもたらされるＩ／Ｏスループットの増加であり、Ｉ／Ｏスループットの増加量及び／又はＩ／Ｏスループットの増加率によって表現されうる。なお、本発明は、ＣＰＵ使用率の増加及びＩ／Ｏスループットの増加を比較する方法については限定されず、ここでは、例示のためだけに２つの測定方法が提供される。Ｉ／Ｏスループットの増加量が、ＣＰＵ使用率の増加量よりも大きい場合、又は、Ｉ／Ｏスループットの増加率が、ＣＰＵ使用率の増加率よりも大きい場合、ＶＭを処理するためのワーカースレッドは増加されなければならないと決定される。
【００４０】
更に、現在の平均Ｉ／Ｏスループットが第２の閾値よりも小さい場合、ＨＯＳＴが、複数のＶＭのフロントデバイスとバックデバイスとの間のＶＭを処理するためのワーカースレッドを減少させるステップの前に、当該方法は更に以下を含む。
【００４１】
ＨＯＳＴが、複数のＶＭのフロントデバイスとバックデバイスとの間のワーカースレッドを減少させることによりもたらされるＣＰＵ使用率の減少が、複数のＶＭのスループットへの対応不能につながるかどうかを決定する。複数のＶＭのフロントデバイスとバックデバイスとの間のワーカースレッドを減少させることによりもたらされるＣＰＵ使用率の減少が、複数のＶＭのスループットへの対応不能につながらない場合、ＨＯＳＴが、複数のＶＭのフロントデバイスとバックデバイスとの間のワーカースレッドを減少させるステップを実行する。つまり、ＣＰＵ使用率の結果として生じる減少が、複数のＶＭのスループットへの対応不能につながる場合、ワーカースレッドは減少されない。
【００４２】
任意選択的に、高い優先順位を有するＶＭがワーカースレッドの排他的な占有を維持し、専用Ｉ／Ｏチャネルを有するように、複数のＶＭに優先順位が設定されてもよい。高い優先順位を有するＶＭによって排他的に占有されたＩ／Ｏチャネルリソースは、ホストＨＯＳＴの総Ｉ／Ｏ負荷に関係なく、影響を受けない。同じ優先順位を有するＶＭについては、上述したワーカースレッドを増加又は減少させる方法が処理に採用されてよい。
【００４３】
なお、当該Ｉ／Ｏチャネルリソースは、１つのＶＭを処理するためのワーカースレッドと、１つのＶＭのフロントデバイス及びバックデバイス内のキューとを含む。
【００４４】
Ｓ２０３：増加又は減少後のＶＭを処理するためのワーカースレッドに応じて、ＨＯＳＴは、複数のＶＭのフロントデバイス及びバックデバイス内のキューと、ＶＭを処理するためのワーカースレッドとのマッピング関係を別々に調整する。
【００４５】
当該マッピング関係は、複数のＶＭのフロントデバイス内のキューとＶＭを処理するためのワーカースレッドとのマッピング関係、及び、複数のＶＭのバックデバイス内のキューとＶＭを処理するためのワーカースレッドとのマッピング関係を含む。ＨＯＳＴは、複数のＶＭのフロントデバイスと複数のＶＭのバックデバイスとの間に複数のデータ送信チャネルが形成されるように、マッピング関係を別々に調整する。
【００４６】
具体的には、ＨＯＳＴは、増加又は減少後のＶＭを処理するためのワーカースレッドに応じて、複数のＶＭのフロントデバイス内のキューとＶＭを処理するためのワーカースレッドとのマッピング関係と、複数のＶＭのバックデバイス内のキューとＶＭを処理するためのワーカースレッドとのマッピング関係とを、別々に調整する。
【００４７】
増加又は減少後のＶＭを処理するためのワーカースレッドの数が、ＨＯＳＴ上で動作しているＶＭの数よりも少ない場合、ＨＯＳＴは、各ワーカースレッドを、各ＶＭのフロントデバイス内のキューと、各ＶＭのバックデバイス内のキューとにマッピングする。又は、増加又は減少後のＶＭを処理するためのワーカースレッドの数が、ＨＯＳＴ上で動作しているＶＭの数よりも多い又は等しい場合、ＨＯＳＴは、排他的ワーカースレッドを、１つのＶＭのフロントデバイス内のキューとバックデバイス内のキューとにマッピングし、共有ワーカースレッドを、少なくとも２つのＶＭのフロントデバイス及びバックデバイス内にあり、当該排他的ワーカースレッドに対応しないキューにマッピングする。ここでは、ＶＭを処理するためのワーカースレッドは、排他的ワーカースレッドと共有ワーカースレッドとを含む。なお、上述した調整モードは、それぞれ、共有モード及びハイブリッドモードに対応する。当該共有及びハイブリッドモードは、図３及び図４に、具体的に説明される。
【００４８】
更に、ＨＯＳＴが、増加又は減少後のＶＭを処理するためのワーカースレッドに応じて、複数のＶＭのフロントデバイス及びバックデバイス内のキューとＶＭを処理するためのワーカースレッドとのマッピング関係を別々に調整した後、仮想プラットフォーム上でＩ／Ｏチャネルを調整する方法は更に、
ＨＯＳＴは、複数のＶＭのバックデバイスとＨＯＳＴのネイティブデバイスＮａｔｉｖｅ  Ｄｅｖｉｃｅとの間に複数のデータ送信チャネルが形成されるように、複数のＶＭのバックデバイス内のキューとＮａｔｉｖｅ  Ｄｅｖｉｃｅ内のキューとのマッピング関係を調整するステップを含む。
【００４９】
具体的に述べると、従来技術では、Ｎａｔｉｖｅ  Ｄｅｖｉｃｅは、複数のキューを有し、１つのＶＭのバックデバイス内のデータが、Ｎａｔｉｖｅ  Ｄｅｖｉｃｅにアクセスする際にキューを選択し、これにより様々なキューを使用してデータを送信できる。この技術は、Ｎａｔｉｖｅ  Ｄｅｖｉｃｅ内のハードウェアドライバによって実施されうる。本発明におけるＶＭのバックデバイスも複数のキューを有することを考えると、当該ＶＭのバックデバイス内の複数のキューも、Ｎａｔｉｖｅ  ＤｅｖｉｃｅがブリッジＢｒｉｄｇｅを介してＶＭのバックデバイスにデータを送信する際に選択され、これによりＶＭのバックデバイスとＮａｔｉｖｅ  Ｄｅｖｉｃｅとの間に複数のデータ伝送チャネルが形成される。したがって、複数のＶＭのバックデバイス内のキューと、ＨＯＳＴのネイティブデバイスＮａｔｉｖｅ  Ｄｅｖｉｃｅ内のキューとのマッピング関係の調整は、実際には、Ｎａｔｉｖｅ  Ｄｅｖｉｃｅが、ブリッジＢｒｉｄｇｅを介して、ＶＭのバックデバイスにデータを送信する際にＶＭのバックデバイス内のキューをどのように選択するかに関する。
【００５０】
ＶＭのバックデバイス内のキューをどのように選択するかに関しては、キュー間のマッピング関係に応じて、Ｎａｔｉｖｅ  Ｄｅｖｉｃｅ内のキューが、ＶＭのバックデバイス内のキューによって送信されたデータを受信する際、ＶＭのバックデバイス内のキューは、ＶＭのバックデバイス内のキューとＮａｔｉｖｅＤｅｖｉｃｅ内のキューとの間でデータを送信するためのチャネルが一貫しているように、逆に選択される。又は、Ｎａｔｉｖｅ  Ｄｅｖｉｃｅは、データフローの属性（例えば同じソースエンドから又は別の属性）に応じて、ＶＭのバックデバイス内の様々なキューを再選択する。本発明は、上述した選択方法を使用して、複数のＶＭのバックデバイス内のキューとＨＯＳＴのネイティブデバイスＮａｔｉｖｅ  Ｄｅｖｉｃｅ内のキューとのマッピング関係の調整を実施する。
【００５１】
複数のＶＭのバックデバイス内のキューとＨＯＳＴのネイティブデバイスＮａｔｉｖｅ  Ｄｅｖｉｃｅ内のキューとのマッピング関係を調整することによって、複数のＶＭのバックデバイスとネイティブデバイスＮａｔｉｖｅ  Ｄｅｖｉｃｅとの間に複数のデータ送信チャネルが形成されるため、複数のＶＭのバックデバイスとＨＯＳＴのネイティブデバイスＮａｔｉｖｅ  Ｄｅｖｉｃｅとの間に複数のＩ／Ｏチャネルが実装され、複数のＶＭとＨＯＳＴのネイティブデバイスＮａｔｉｖｅ  Ｄｅｖｉｃｅとの間のデータ送信能力が向上される。
【００５２】
上述した実施形態から、ＨＯＳＴは、複数のＶＭの現在の平均Ｉ／Ｏスループットに応じて、複数のＶＭのフロントデバイスとバックデバイスとの間のＶＭを処理するためのワーカースレッドを増加させるか又は減少させるかを決定することが分かる。すなわち、複数のＶＭの現在の平均Ｉ／Ｏスループットが第１の閾値よりも大きい場合、Ｉ／Ｏチャネルのデータ送信能力を向上させるように、ＶＭを処理するためのワーカースレッドは増加される。つまり、Ｉ／Ｏチャネルリソースが増加される。また、複数のＶＭの現在の平均Ｉ／Ｏスループットが第２の閾値よりも小さい場合、Ｉ／Ｏチャネルリソースを無駄にしないように、ＶＭを処理するためのワーカースレッドは減少される。つまり、Ｉ／Ｏチャネルリソースが減少される。
【００５３】
現在の平均Ｉ／Ｏスループットに応じた増加又は減少後のＩ／Ｏチャネルリソースの制限、特に、Ｉ／Ｏチャネルリソースにおけるワーカースレッドの制限を考慮して、本発明は、Ｉ／Ｏチャネルリソースにおけるワーカースレッドの数と、ホストＨＯＳＴ上で動作しているＶＭの数とに応じて、２つのＩ／Ｏ作業モード、すなわち、共有モードとハイブリッドモードとを設定し、これらの２つのモードは、互いにスイッチすることができる。１つの作業モードは、特定の条件が満たされると、もう１つの作業モードにスイッチされうる。
【００５４】
共有モードでは、ＶＭを処理するためのワーカースレッドの数が、ホストＨＯＳＴ上で動作しているＶＭの数よりも少ない場合、ＨＯＳＴは、複数のＶＭのフロントデバイスとバックデバイスとの間のＩ／Ｏ作業モードを、共有モードに調整し、すなわち、データ処理モジュール内のワーカースレッドが、共有モードを採用することによって、複数のＶＭのフロントデバイス及びバックデバイス内のキューにあるデータを処理する。具体的に述べると、データ処理モジュール内のワーカースレッドは、それぞれ、ＨＯＳＴ上で動作している各ＶＭのフロントデバイス内のキューと、各ＶＭのバックデバイス内のキューとに対応する。
【００５５】
図３は、ＶＭのフロントデバイスとバックデバイスとの間のＩ／Ｏ作業モードが共有モードである場合の概略図である。図３に示されるように、ホストＨＯＳＴ上で動作しているＶＭは、それぞれ、ＶＭ１、ＶＭ２及びＶＭ３であり、データ処理モジュール内のワーカースレッドは、それぞれ、ワーカースレッド１及びワーカースレッド２であり、ワーカースレッド１は、ＶＭ１、ＶＭ２及びＶＭ３のフロントデバイス及びバックデバイス内のキュー１を別々に処理し、ワーカースレッド２は、ＶＭ１、ＶＭ２及びＶＭ３のフロントデバイス及びバックデバイス内のキュー２を別々に処理する。
【００５６】
ハイブリッドモードでは、ＶＭを処理するためのワーカースレッドの数が、ホストＨＯＳＴ上で動作しているＶＭの数よりも多い又は等しい場合、ＨＯＳＴは、複数のＶＭのフロントデバイスとバックデバイスとの間のＩ／Ｏ作業モードを、ハイブリッドモードに調整し、すなわち、データ処理モジュール内のワーカースレッドが、ハイブリッドモードを採用することによって、複数のＶＭのフロントデバイス及びバックデバイス内のキューにあるデータを処理する。具体的に述べると、データ処理モジュール内のワーカースレッドは、２つのタイプ、すなわち、排他的ワーカースレッドと共有ワーカースレッドとに分類され、排他的ワーカースレッドは、１つのＶＭのフロントデバイス内のキュー及びバックデバイス内のキューにあるデータを別々に処理するように使用され、共有ワーカースレッドは、少なくとも２つのＶＭのフロントデバイス及びバックデバイスのキューにある、当該排他的ワーカースレッドによって処理されていないデータを処理するように使用される。
【００５７】
図４は、ＶＭのフロントデバイスとバックデバイスとの間のＩ／Ｏ作業モードがハイブリッドモードである場合の概略図である。図４に示されるように、ホストＨＯＳＴ上で動作しているＶＭは、それぞれ、ＶＭ１、ＶＭ２及びＶＭ３であり、データ処理モジュール内には、排他的ワーカースレッド１、排他的ワーカースレッド２、排他的ワーカースレッド３、及び共有ワーカースレッド１を含む４つのワーカースレッドがある。排他的ワーカースレッド１は、ＶＭ１のフロントデバイス及びバックデバイス内のキュー１にあるデータを別々に処理し、排他的ワーカースレッド２は、ＶＭ２のフロントデバイス及びバックデバイスのキュー１にあるデータを別々に処理し、排他的ワーカースレッド３は、ＶＭ３のフロントデバイス及びバックデバイスのキュー１にあるデータを別々に処理し、共有ワーカースレッドは、ＶＭ１、ＶＭ２及びＶＭ３の各ＶＭのフロントデバイス及びバックデバイスのキュー２にあるデータを処理する。図４は、共有ワーカースレッドが、少なくとも２つのＶＭの各ＶＭのフロントデバイス及びバックデバイス内のキューにあるデータを処理する１つのシナリオを示すに過ぎない。共有ワーカースレッドは更に、別のシナリオでは、複数のキューにあるデータを処理してもよく、このことは、本発明において限定されていない。
【００５８】
更に、図３及び図４から、複数のＶＭのフロントデバイスとバックデバイスとの間に複数のＩ／Ｏチャネルを形成することに加えて、ＨＯＳＴは更に、複数のＶＭのバックデバイス内のキューとＨＯＳＴのネイティブデバイスＮａｔｉｖｅ  Ｄｅｖｉｃｅ内のキューとのマッピング関係を調整することによって、複数のＶＭのバックデバイスとネイティブデバイスＮａｔｉｖｅ  Ｄｅｖｉｃｅとの間に、複数のデータ送信チャネルを形成しうることが分かる。これにより、複数のＶＭのフロントデバイスとＨＯＳＴのネイティブデバイスＮａｔｉｖｅ  Ｄｅｖｉｃｅとの間に複数のＩ／Ｏチャネルが得られ、複数のＶＭのフロントデバイスとＨＯＳＴのネイティブデバイスＮａｔｉｖｅ  Ｄｅｖｉｃｅとの間のデータ送信能力が向上される。
【００５９】
仮想プラットフォーム上でＩ／Ｏチャネルを調整する方法に関して、本発明の以下の実施形態は、仮想プラットフォーム上でＩ／Ｏチャネルを調整する装置の構造を提供する。
【００６０】
図５は、本発明の一実施形態による仮想プラットフォーム上でＩ／Ｏチャネルを調整する装置５００の構造を示す。調整装置５００は、具体的に述べると、
ＨＯＳＴ上で動作している複数の仮想マシンＶＭの現在の平均Ｉ／Ｏスループットを計測するように構成された計測モジュール５０１と、
計測モジュール５０１に接続され、計測モジュール５０１によって計測された現在の平均Ｉ／Ｏスループットが第１の閾値よりも大きい場合、ワーカースレッドが増加された後は複数のＶＭの平均Ｉ／Ｏスループットが第１の閾値よりも小さくなるように、複数のＶＭのフロントデバイスとバックデバイスとの間のＶＭを処理するためのワーカースレッドを増加させるか、又は、計測モジュール５０１によって計測された現在の平均Ｉ／Ｏスループットが第２の閾値よりも小さい場合、ワーカースレッドが減少された後は複数のＶＭの平均Ｉ／Ｏスループットが第２の閾値よりも大きくなるように、複数のＶＭのフロントデバイスとバックデバイスとの間のワーカースレッドを減少させるように構成され、第１の閾値は第２の閾値よりも大きい、処理モジュール５０２と、
処理モジュール５０２に接続され、処理モジュール５０２による増加又は減少後のＶＭを処理するためのワーカースレッドに応じて、複数のＶＭのフロントデバイス内のキューとＶＭを処理するためのワーカースレッドとのマッピング関係、及び、複数のＶＭのバックデバイス内のキューとＶＭを処理するためのワーカースレッドとのマッピング関係を、複数のＶＭのフロントデバイスとバックデバイスとの間に複数のデータ送信チャネルが形成されるように、別々に調整するように構成された第１の調整モジュール５０３と、を含む。
【００６１】
任意選択的に、調整装置５００は更に、
計測モジュール５０１によって計測された現在の平均Ｉ／Ｏスループットが第１の閾値よりも大きい場合に、複数のＶＭのフロントデバイスとバックデバイスとの間のＶＭを処理するためのワーカースレッドを増加させることによりもたらされる、ＣＰＵ使用率の増加とＩ／Ｏスループットの増加とを比較するように構成された決定モジュール５０４を含み、
処理モジュール５０２は更に、決定モジュール５０４が、Ｉ／Ｏスループットの増加がＣＰＵ使用率の増加よりも大きいと決定した場合、ワーカースレッドが増加された後は、複数のＶＭの平均Ｉ／Ｏスループットが第１の閾値よりも小さくなるように、複数のＶＭのフロントデバイスとバックデバイスとの間のＶＭを処理するためのワーカースレッドを増加させるように構成される。
【００６２】
任意選択的に、調整装置５００は更に、
計測モジュール５０１によって計測された現在の平均Ｉ／Ｏスループットが第２の閾値よりも小さい場合に、複数のＶＭのフロントデバイスとバックデバイスとの間のワーカースレッドを減少させることによりもたらされるＣＰＵ使用率の減少が、複数のＶＭのスループットへの対応不能につながるかどうかを決定するように構成された決定モジュール５０４を含み、
処理モジュール５０２は更に、決定モジュール５０４が、複数のＶＭのフロントデバイスとバックデバイスとの間のワーカースレッドを減少させることによりもたらされるＣＰＵ使用率の減少が、複数のＶＭのスループットへの対応不能につながらないと決定した場合、ワーカースレッドが減少された後は、複数のＶＭの平均Ｉ／Ｏスループットが第２の閾値よりも大きくなるように、複数のＶＭのフロントデバイスとバックデバイスとの間のワーカースレッドを減少させるように構成される。
【００６３】
更に、第１の調整モジュール５０３は、特に、
増加又は減少後のＶＭを処理するためのワーカースレッドの数が、ＨＯＳＴ上で動作しているＶＭの数よりも少ない場合、各ワーカースレッドを、各ＶＭのフロントデバイス内のキューと、各ＶＭのバックデバイス内のキューとにマッピングし、又は、増加又は減少後のＶＭを処理するためのワーカースレッドの数が、ＨＯＳＴ上で動作しているＶＭの数よりも多い又は等しい場合、排他的ワーカースレッドを、１つのＶＭのフロントデバイス内のキュー及びバックデバイス内のキューにマッピングし、共有ワーカースレッドを、少なくとも２つのＶＭのフロントデバイス及びバックデバイス内にあり、排他的ワーカースレッドに対応しないキューにマッピングするように構成される。ＶＭを処理するためのワーカースレッドは、排他的ワーカースレッドと共有ワーカースレッドとを含む。
【００６４】
また、調整装置５００は更に、複数のＶＭのバックデバイス内のキューと、ＨＯＳＴのネイティブデバイスＮａｔｉｖｅ  Ｄｅｖｉｃｅ内のキューとのマッピング関係を、複数のＶＭのバックデバイスとＮａｔｉｖｅ  Ｄｅｖｉｃｅとの間に複数のデータ伝送チャネルが形成されるように、調整するように構成された第２の調整モジュール５０５を含む。
【００６５】
第２の調整モジュール５０５は、複数のＶＭのバックデバイスとネイティブデバイスＮａｔｉｖｅ  Ｄｅｖｉｃｅとの間に複数のデータ伝送チャネルを形成するので、複数のＩ／Ｏチャネルが、複数のＶＭのフロントデバイスとＨＯＳＴのネイティブデバイスＮａｔｉｖｅ  Ｄｅｖｉｃｅとの間に形成され、複数のＶＭとＨＯＳＴのネイティブデバイスＮａｔｉｖｅ  Ｄｅｖｉｃｅとの間のデータ伝送能力が向上される。
【００６６】
上述した実施形態から、仮想プラットフォーム上でＩ／Ｏチャネルを調整する装置は、複数のＶＭの現在の平均Ｉ／Ｏスループットに応じて、複数のＶＭのフロントデバイスとバックデバイスとの間のＶＭを処理するためのワーカースレッドを増加させるか又は減少させるかを決定することが分かる。すなわち、複数のＶＭの現在の平均Ｉ／Ｏスループットが第１の閾値よりも大きい場合、Ｉ／Ｏチャネルのデータ伝送能力を向上させるように、ＶＭを処理するためのワーカースレッドは増加される。つまり、Ｉ／Ｏチャネルリソースが増加される。また、複数のＶＭの現在の平均Ｉ／Ｏスループットが第２の閾値よりも小さい場合、Ｉ／Ｏチャネルリソースを無駄にしないように、ＶＭを処理するためのワーカースレッドは減少される。つまり、Ｉ／Ｏチャネルリソースが減少される。
【００６７】
図６は、本発明の別の実施形態による仮想プラットフォーム上でＩ／Ｏチャネルを調整する装置６００の構造を示す。調整装置６００は、例えばＣＰＵである少なくとも１つのプロセッサ６０１と、少なくとも１つのネットワークインターフェース６０４又は別のユーザインターフェース６０３と、メモリ６０５と、少なくとも１つの通信バス６０２とを含む。通信バス６０２は、これらの構成要素間に接続及び通信を実施できるように構成される。調整装置６００に任意選択的に含まれるユーザインターフェース６０３は、ディスプレイ、キーボード、又はクリックデバイス（例えばマウス、トラックボール（トラックボール）、タッチパネル又はタッチディスプレイ画面）を含む。メモリ６０５は、高速ＲＡＭメモリを含んでよく、また、不揮発性メモリ（不揮発性メモリ）、例えば少なくとも１つの磁気ディスクメモリを更に含んでもよい。メモリ６０５は、任意選択的に、プロセッサ６０１から遠隔にある少なくとも１つのメモリ装置を含んでもよい。幾つかの実施様態では、メモリ６０５は更に、様々な基本サービスを実施し、ハードウェアに基づいてタスクを処理するように、オペレーティングシステム６０６と複数のプログラムとを含んでもよい。
【００６８】
プロセッサ６０１は特に、
ＨＯＳＴ上で動作している複数の仮想マシンＶＭの現在の平均Ｉ／Ｏスループットを計測し、
現在の平均Ｉ／Ｏスループットが第１の閾値よりも大きい場合、ワーカースレッドが増加された後は複数のＶＭの平均Ｉ／Ｏスループットが第１の閾値よりも小さくなるように、複数のＶＭのフロントデバイスとバックデバイスとの間のＶＭを処理するためのワーカースレッドを増加させるか、又は、現在の平均Ｉ／Ｏスループットが第２の閾値よりも小さい場合、ワーカースレッドが減少された後は複数のＶＭの平均Ｉ／Ｏスループットが第２の閾値よりも大きくなるように、複数のＶＭのフロントデバイスとバックデバイスとの間のワーカースレッドを減少させ、ただし、第１の閾値は第２の閾値よりも大きく、
増加又は減少後のＶＭを処理するためのワーカースレッドに応じて、複数のＶＭのフロントデバイス内のキューとＶＭを処理するためのワーカースレッドとのマッピング関係、及び、複数のＶＭのバックデバイス内のキューとＶＭを処理するためのワーカースレッドとのマッピング関係を、複数のＶＭのフロントデバイスとバックデバイスとの間に複数のデータ送信チャネルが形成されるように、別々に調整するように構成される。
【００６９】
更に、現在の平均Ｉ／Ｏスループットが第１の閾値よりも大きい場合、複数のＶＭのフロントデバイスとバックデバイスとの間のＶＭを処理するためのワーカースレッドを増加させるステップを実行する前に、プロセッサ６０１は更に、複数のＶＭのフロントデバイスとバックデバイスとの間のＶＭを処理するためのワーカースレッドを増加させることによりもたらされる、ＣＰＵ使用率の増加とＩ／Ｏスループットの増加とを比較し、Ｉ／Ｏスループットの増加がＣＰＵ使用率の増加よりも大きい場合、複数のＶＭのフロントデバイスとバックデバイスとの間のＶＭを処理するためのワーカースレッドを増加させるステップを実行するように構成される。
【００７０】
現在の平均Ｉ／Ｏスループットが、第２の閾値よりも小さい場合、複数のＶＭのフロントデバイスとバックデバイスとの間のワーカースレッドを減少させるステップを実行する前に、プロセッサ６０１は更に、複数のＶＭのフロントデバイスとバックデバイスとの間のワーカースレッドを減少させることによりもたらされるＣＰＵ使用率の減少が、複数のＶＭのスループットへの対応不能につながるかどうかを決定し、複数のＶＭのフロントデバイスとバックデバイスとの間のワーカースレッドを減少させることによりもたらされるＣＰＵ使用率の減少が、複数のＶＭのスループットへの対応不能につながらない場合、複数のＶＭのフロントデバイスとバックデバイスとの間のワーカースレッドを減少させるステップを実行するように構成される。
【００７１】
また、プロセッサ６０１は、増加又は減少後のＶＭを処理するためのワーカースレッドに応じて、複数のＶＭのフロントデバイス及びバックデバイス内のキューと、ＶＭを処理するためのワーカースレッドとのマッピング関係を別々に調整するように構成され、当該調整は、
増加又は減少後のＶＭを処理するためのワーカースレッドの数が、ＨＯＳＴ上で動作しているＶＭの数よりも少ない場合、各ワーカースレッドを、各ＶＭのフロントデバイス内のキューと、各ＶＭのバックデバイス内のキューとにマッピングするか、又は、増加又は減少後のＶＭを処理するためのワーカースレッドの数が、ＨＯＳＴ上で動作しているＶＭの数よりも多い又は等しい場合、排他的ワーカースレッドを、１つのＶＭのフロントデバイス内のキューとバックデバイス内のキューとにマッピングし、共有ワーカースレッドを、少なくとも２つのＶＭのフロントデバイス及びバックデバイス内にあり、当該排他的ワーカースレッドに対応しないキューにマッピングすることを含み、ＶＭを処理するためのワーカースレッドは、排他的ワーカースレッドと共有ワーカースレッドとを含む。
【００７２】
更に、プロセッサ６０１は、複数のＶＭのバックデバイス内のキューと、ＨＯＳＴのネイティブデバイスＮａｔｉｖｅ  Ｄｅｖｉｃｅ内のキューとのマッピング関係を、複数のＶＭのバックデバイスとＮａｔｉｖｅ  Ｄｅｖｉｃｅとの間に複数のデータ伝送チャネルが形成されるように、調整するように構成される。
【００７３】
上述した実施形態から、仮想プラットフォーム上でＩ／Ｏチャネルを調整する装置は、複数のＶＭの現在の平均Ｉ／Ｏスループットに応じて、複数のＶＭのフロントデバイスとバックデバイスとの間のＶＭを処理するためのワーカースレッドを増加させるか又は減少させるかを決定することが分かる。すなわち、複数のＶＭの現在の平均Ｉ／Ｏスループットが第１の閾値よりも大きい場合、Ｉ／Ｏチャネルのデータ伝送能力を向上させるように、ＶＭを処理するためのワーカースレッドは増加される。つまり、Ｉ／Ｏチャネルリソースが増加される。また、複数のＶＭの現在の平均Ｉ／Ｏスループットが第２の閾値よりも小さい場合、Ｉ／Ｏチャネルリソースを無駄にしないように、ＶＭを処理するためのワーカースレッドは減少される。つまり、Ｉ／Ｏチャネルリソースが減少される。
【００７４】
なお、本発明の実施形態により開示された方法は、プロセッサ６０１に適用される、つまり、プロセッサ６０１によって実施されてよい。プロセッサ６０１は、集積回路チップであってよく、また、命令並びにデータ実行能力、及び信号処理能力を有する。実施の一連の過程では、当該方法におけるステップは、プロセッサ６０１内のハードウェア集積論理回路、又は、ソフトウェアの形の命令を使用して実施されてよい。プロセッサは、中央処理装置（ＣＰＵ）、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、別のプログラマブル論理コンポーネント、ディスクリート・ゲート又はトランジスタ論理デバイス、及びディスクリート・ハードウェア・コンポーネントであってよく、また、本発明の実施形態によって開示されたあらゆる方法、ステップ、論理ブロック図を実施又は実行してよい。汎用プロセッサは、マイクロプロセッサ又は任意の従来型プロセッサ等であってよい。本発明の実施形態によって開示された方法におけるステップは、ハードウェアプロセッサによって直接実施されても、プロセッサ内でハードウェア及びソフトウェアモジュールを組み合わせることによって実施されてもよい。ソフトウェアモジュールは、ランダム・アクセス・メモリ、フラッシュメモリ、読出し専用メモリ、プログラマブル読出し専用メモリ、電気的消去可能プログラマブルメモリ、及びレジスタといった当技術分野におけるマチュア記憶媒体内にあってよい。記憶媒体は、プロセッサ６０５内にあり、当該プロセッサが、メモリ６０５内の情報を読出し、プロセッサのハードウェアを参照しながら上述したステップを実施する。
【００７５】
図７は、本発明の一実施形態に従い提供されるホストＨＯＳＴ７００の構造を示す。ＨＯＳＴは、ネイティブデバイスＮａｔｉｖｅ  Ｄｅｖｉｃｅ７０５と、Ｎａｔｉｖｅ  Ｄｅｖｉｃｅ７０５内で動作している複数の仮想マシンＶＭ内のフロントデバイス及びバックデバイスと、複数のＶＭのフロントデバイスとバックデバイスとの間にあるデータ処理モジュール７０２と、複数のＶＭのバックデバイスとＮａｔｉｖｅ  Ｄｅｖｉｃｅ７０５との間にあるブリッジＢｒｉｅｄｇｅ７０４とを含む。
【００７６】
複数のＶＭのフロントデバイスは、ＶＭ１のフロントデバイス７０１１と、ＶＭ２のフロントデバイス７０１２とを含み、複数のＶＭのバックデバイスは、ＶＭ１のバックデバイス７０３１と、ＶＭ２のバックデバイス７０３２とを含み、ブリッジＢｒｉｄｇｅ７０４は、ＶＭのバックデバイスと、ＨＯＳＴのネイティブデバイスＮａｔｉｖｅ  Ｄｅｖｉｃｅとの間にあるネットワークデバイス又はソフトウェアであり、ＶＭのバックデバイスとホストＨＯＳＴのネイティブデバイスＮａｔｉｖｅ  Ｄｅｖｉｃｅとの間にネットワーク接続を実施し、データフレームを転送する。ネイティブデバイスＮａｔｉｖｅ  Ｄｅｖｉｃｅ７０５は、仮想環境がその上で動作しているハードウェアプラットフォームであり、複数のハードウェアを含んでよく、例えばコンピュータノードのＮａｔｉｖｅ  Ｄｅｖｉｃｅは、プロセッサ（例えばＣＰＵ）とメモリとを含み、また更に、ネットワークアダプタ、メモリといった高速／低速入出力（Ｉ／Ｏ、Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）デバイスを含んでよい。
【００７７】
データ処理モジュール７０２は、
複数のＶＭの現在の平均Ｉ／Ｏスループットを計測し、
現在の平均Ｉ／Ｏスループットが第１の閾値よりも大きい場合、ワーカースレッドが増加された後は複数のＶＭの平均Ｉ／Ｏスループットが第１の閾値よりも大きくなるように、複数のＶＭのフロントデバイスとバックデバイスとの間のＶＭを処理するためのワーカースレッドを増加させるか、又は、現在の平均Ｉ／Ｏスループットが第２の閾値よりも小さい場合、ワーカースレッドが減少された後は複数のＶＭの平均Ｉ／Ｏスループットが第２の閾値より大きくなるように、複数のＶＭのフロントデバイスとバックデバイスとの間のワーカースレッドを減少させ、ただし、第１の閾値は第２の閾値より大きく、
増加又は減少後のＶＭを処理するためのワーカースレッドに応じて、複数のＶＭのフロントデバイス内のキューとＶＭを処理するためのワーカースレッドとのマッピング関係、及び、複数のＶＭのバックデバイス内のキューとＶＭを処理するためのワーカースレッドとのマッピング関係を、複数のＶＭのフロントデバイスとバックデバイスとの間に複数のデータ送信チャネルが形成されるように、別々に調整するように構成される。
【００７８】
任意選択的に、データ処理モジュール７０２は更に、
複数のＶＭのフロントデバイスとバックデバイスとの間のＶＭを処理するためのワーカースレッドを増加させることによりもたらされる、ＣＰＵ使用率の増加とＩ／Ｏスループットの増加とを比較し、Ｉ／Ｏスループットの増加がＣＰＵ使用率の増加よりも大きい場合、ワーカースレッドが増加された後は、複数のＶＭの平均Ｉ／Ｏスループットが第１の閾値よりも小さくなるように、複数のＶＭのフロントデバイスとバックデバイスとの間のＶＭを処理するためのワーカースレッドを増加させるように構成される。
【００７９】
任意選択的に、データ処理モジュール７０２は更に、
複数のＶＭのフロントデバイスとバックデバイスとの間のＶＭを処理するためのワーカースレッドを減少させることによりもたらされるＣＰＵ使用率の減少が、複数のＶＭのスループットへの対応不能につながるかどうかを決定し、複数のＶＭのフロントデバイスとバックデバイスとの間のワーカースレッドを減少させることによりもたらされるＣＰＵ使用率の減少が、複数のＶＭのスループットへの対応不能につながらない場合、ワーカースレッドが減少された後は、複数のＶＭの平均Ｉ／Ｏスループットが第２の閾値よりも大きくなるように、複数のＶＭのフロントデバイスとバックデバイスとの間のワーカースレッドを減少させるように構成される。
【００８０】
なお、データ処理モジュール７０２は、ここでは繰り返して説明されない第１の実施形態に開示される方法を実施してもよく、また、第１の実施形態に開示された方法の限定として解釈されるべきではない。データ処理モジュール７０２は、通常、ソフトウェアによって実施され、つまり、プロセッサが特殊関数を用いてソフトウェアコード命令を読み出すことによって実施される。ソフトウェアによって実施されるデータ処理モジュール７０２は、１つの好適な実施様態解決策に過ぎず、当業者であれば、データ処理モジュール７０２のソフトウェア方法を、プロセッサ（例えばＣＰＵ、ＤＳＰ）といったハードウェア論理を用いて実施できよう。このことは、本発明において限定されていない。
【００８１】
上述した実施形態から、ホストＨＯＳＴは、複数のＶＭの現在の平均Ｉ／Ｏスループットに応じて、複数のＶＭのフロントデバイスとバックデバイスとの間のＶＭを処理するためのワーカースレッドを増加させるか又は減少させるかを決定することが分かる。すなわち、複数のＶＭの現在の平均Ｉ／Ｏスループットが第１の閾値よりも大きい場合、Ｉ／Ｏチャネルのデータ伝送能力を向上させるように、ＶＭを処理するためのワーカースレッドは増加される。つまり、Ｉ／Ｏチャネルリソースが増加される。また、複数のＶＭの現在の平均Ｉ／Ｏスループットが第２の閾値よりも小さい場合、Ｉ／Ｏチャネルリソースを無駄にしないように、ＶＭを処理するためのワーカースレッドは減少される。つまり、Ｉ／Ｏチャネルリソースが減少される。
【００８２】
最後に、上述した実施形態は、本発明を限定するのではなく、本発明の技術的解決策を説明することを意図しているに過ぎないことに留意されたい。本発明は、上述した実施形態を参照して詳細に説明されているが、当業者であれば、本発明の実施形態の技術的解決策の精神及び範囲から逸脱することなく、上述した実施形態に説明された技術的解決策に変更を加えても、又は、その技術的特徴の一部又は全部に代わる等価物を作成してもよいことは理解できよう。
【図１】
0005923627.tif 000002
【図２】
0005923627.tif 000003
【図３】
0005923627.tif 000004
【図４】
0005923627.tif 000005
【図５】
0005923627.tif 000006
【図６】
0005923627.tif 000007
【図７】
0005923627.tif 000008