(57)【特許請求の範囲】
【請求項１】
管理対象の情報処理装置のプロセッサの使用量と、前記管理対象の情報処理装置が実行するハイパーバイザで生成された複数の仮想マシン毎の前記プロセッサの使用量とを含むプロセッサ使用情報を取得し、
前記仮想マシンが利用する仮想ネットワークインターフェース毎のデータ転送量を含むデータ転送情報を取得し、
前記プロセッサ使用情報と前記データ転送情報とに基づいて、前記複数の仮想ネットワークインターフェースのうち、前記ハイパーバイザを経由せずにデータ転送を行う第１の仮想ネットワークインターフェースを検出し、
前記検出した第１の仮想ネットワークインターフェースを前記仮想マシンが利用するか否かに基づいて、前記仮想マシンのデータ転送に伴うプロセッサ使用量を有する負荷情報を算出する、
処理をコンピュータが実行する負荷算出方法。
【請求項２】
前記第１の仮想ネットワークインターフェースを検出する処理では、
前記情報処理装置のプロセッサ使用量から前記仮想マシンのプロセッサ使用量の合計を減じたオーバーヘッド分のプロセッサ使用量と、前記仮想ネットワークインターフェースのデータ転送量との間に、第２の相関を有する仮想ネットワークインターフェースを、前記ハイパーバイザを経由するデータ転送を行う第２の仮想ネットワークインターフェースと判定し、
前記オーバーヘッド分のプロセッサ使用量と、前記仮想ネットワークインターフェースのデータ転送量との間に、前記第２の相関より小さい第１の相関を有する仮想ネットワークインターフェースを、前記第１の仮想ネットワークインターフェースと判定する、
請求項１に記載の負荷算出方法。
【請求項３】
前記処理は、さらに、
前記管理対象の情報処理装置のプロセッサ割込回数を有するプロセッサ割込回数情報を取得し、
前記プロセッサ割込回数情報と前記データ転送情報とに基づいて、前記複数の仮想ネットワークインターフェースのうち、前記ハイパーバイザを経由するデータ転送を行う第２の仮想ネットワークインターフェースであって、他の第２の仮想ネットワークインターフェースに優先してデータ転送制御される優先制御対象の第２の仮想ネットワークインターフェースを検出し、
前記負荷情報を算出する処理において、前記仮想マシンが前記検出した優先制御対象の第２の仮想ネットワークインターフェースを利用するか否かに基づいて、前記仮想マシンのデータ転送に伴うプロセッサ使用量を有する負荷情報を算出する、
請求項１に記載の負荷算出方法。
【請求項４】
前記優先制御対象の第２の仮想ネットワークインターフェースを検出する処理において、
前記プロセッサ割込回数と、前記仮想ネットワークインターフェースのデータ転送量との間に、第３の相関を有する仮想ネットワークインターフェースを、前記優先制御対象の第２の仮想ネットワークインターフェースと判定し、
前記プロセッサ割込回数と、前記仮想ネットワークインターフェースのデータ転送量との間に、前記第３の相関より小さい第４の相関を有する仮想ネットワークインターフェースを、非優先制御対象の第２の仮想ネットワークインターフェースと判定する、
請求項３に記載の負荷算出方法。
【請求項５】
前記負荷情報を算出する処理において、前記優先制御対象の第２の仮想ネットワークインターフェースを利用する仮想マシンの負荷を、非優先制御対象の第２の仮想ネットワークインターフェースを利用する仮想マシンのプロセッサ使用量よりも大きく算出する、
請求項３に記載の負荷算出方法。
【請求項６】
前記負荷情報を算出する処理において、前記情報処理装置のプロセッサ使用量から前記仮想マシンのプロセッサ使用量の合計を減じたオーバーヘッド分のプロセッサ使用量と、前記第２の仮想ネットワークインターフェースのデータ転送量との間の相関値の違いに基づいて、前記優先制御対象の第２の仮想ネットワークインターフェースを利用する仮想マシンのプロセッサ使用量と、前記非優先制御対象の第２の仮想ネットワークインターフェースを利用する仮想マシンのプロセッサ使用量との差を算出する、
請求項５に記載の負荷算出方法。
【請求項７】
管理対象の情報処理装置のプロセッサの使用量と、前記管理対象の情報処理装置が実行するハイパーバイザで生成された複数の仮想マシン毎の前記プロセッサの使用量とを含むプロセッサ使用情報を取得し、
前記仮想マシンが利用する仮想ネットワークインターフェース毎のデータ転送量を含むデータ転送情報を取得し、
前記プロセッサ使用情報と前記データ転送情報とに基づいて、前記複数の仮想ネットワークインターフェースのうち、前記ハイパーバイザを経由せずにデータ転送を行う第１の仮想ネットワークインターフェースを検出し、
前記検出した第１の仮想ネットワークインターフェースを前記仮想マシンが利用するか否かに基づいて、前記仮想マシンのデータ転送に伴うプロセッサ使用量を有する負荷情報を算出する、
処理をコンピュータに実行させるコンピュータ読み取り可能な負荷算出プログラム。
【請求項８】
管理対象の情報処理装置のプロセッサの使用量と、前記管理対象の情報処理装置が実行するハイパーバイザで生成された複数の仮想マシン毎の前記プロセッサの使用量とを含むプロセッサ使用情報を取得する第１の取得部と、
前記仮想マシンが利用する仮想ネットワークインターフェース毎のデータ転送量を含むデータ転送情報を取得する第２の取得部と、
前記プロセッサ使用情報と前記データ転送情報とに基づいて、前記複数の仮想ネットワークインターフェースのうち、前記ハイパーバイザを経由せずにデータ転送を行う第１の仮想ネットワークインターフェースを検出する検出部と、
前記検出した第１の仮想ネットワークインターフェースを前記仮想マシンが利用するか否かに基づいて、前記仮想マシンのデータ転送に伴うプロセッサ使用量を有する負荷情報を算出する算出部と、
を有する負荷算出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，負荷算出方法、負荷算出プログラム及び負荷算出装置に関する。
【背景技術】
【０００２】
仮想化プログラムであるハイパーバイザにより物理マシン上に複数の仮想マシンを生成することが行われる。物理マシン上に生成した複数の仮想マシンを複数の利用者が利用することで、物理マシンを効率的に利用する。
【０００３】
複数の仮想マシンを物理マシン上に生成する情報処理システムにおいて、物理マシンに仮想マシンを追加したり、ある物理マシン上に生成した仮想マシンを他の物理マシンに仮想マシンを再配置することが行われる。その場合、仮想マシンの動作による物理マシンの負荷、例えばＣＰＵ負荷（またはＣＰＵ使用量、プロセッサ負荷、プロセッサ使用量）を見積もることが必要になる。
【０００４】
仮想マシンのＣＰＵ負荷は、仮想マシンの処理に伴う負荷とI/Oデータ転送に伴う負荷とを有する。I/Oデータ転送に伴うＣＰＵ負荷は、仮想マシンの仮想ネットワークインターフェース（以下仮想ＮＩＣ：Network Interface Cardと称する。）と物理ネットワークインターフェース（以下物理ＮＩＣと称する。）との間のハイパーバイザによる仮想スイッチの処理に基づく負荷である。このI/Oデータ転送に伴うＣＰＵ負荷は、通常、仮想マシンの仮想ＮＩＣのI/Oデータ転送量に基づいて見積もることが行われる。
【０００５】
仮想マシンの負荷の見積もりについては、以下の特許文献に記載がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−１２３１７４号公報
【特許文献２】特開２０１１−２５８０９８号公報
【特許文献３】特開２００９−２３９３７４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
近年において、ハイパーバイザの仮想スイッチの処理能力が飛躍的に向上したことに伴い、仮想マシンのI/Oデータ転送量が増大しＣＰＵ負荷が増大した。そのため、仮想マシンのI/Oデータ転送に伴うＣＰＵ負荷を考慮して仮想マシンのＣＰＵ負荷を見積もることが必要になってきた。
【０００８】
しかしながら、仮想マシンは、ハイパーバイザを介することなく直接物理ＮＩＣを介してデータ転送を行うことができるようになった。すなわち、ハイパーバイザが実行していた仮想スイッチの機能を有する物理ＮＩＣであるＳＲ−ＩＯＶ（Single Root IO Virtualization）対応の物理ＮＩＣを利用することで、仮想マシンの仮想ＮＩＣは、ハイパーバイザの仮想スイッチを介することなく、ＳＲ−ＩＯＶ対応物理ＮＩＣと直接I/Oデータ転送を行う。このようなハイパーバイザを介さない仮想ＮＩＣのＣＰＵ負荷は、ハイパーバイザの仮想スイッチを利用する仮想ＮＩＣのＣＰＵ負荷とは区別して見積もらなければならない。
【０００９】
また、複数の物理マシンそれぞれに異なるハイパーバイザが搭載された場合、仮想マシンの仮想ＮＩＣのネットワーク設定を手動で管理することは多くの工数を必要とする。
【００１０】
したがって、仮想マシンの仮想ＮＩＣのネットワーク設定を低コストで取得して、ネットワーク設定に対応したＣＰＵ負荷を算出し、仮想マシンのＣＰＵ負荷を高精度に見積もることが必要になってきた。
【００１１】
そこで，実施の形態の第１の側面の目的は，仮想マシンのプロセッサ負荷を高精度に見積もることができる負荷算出方法、負荷算出プログラム及び負荷算出装置を提供することにある。
【課題を解決するための手段】
【００１２】
本実施の形態における第１の側面は，管理対象の情報処理装置のプロセッサの使用量と、前記管理対象の情報処理装置が実行するハイパーバイザで生成された複数の仮想マシン毎の前記プロセッサの使用量とを含むプロセッサ使用情報を取得し、
前記仮想マシンが利用する仮想ネットワークインターフェース毎のデータ転送量を含むデータ転送情報を取得し、
前記プロセッサ使用情報と前記データ転送情報とに基づいて、前記複数の仮想ネットワークインターフェースのうち、前記ハイパーバイザを経由せずにデータ転送を行う第１の仮想ネットワークインターフェースを検出し、
前記検出した第１の仮想ネットワークインターフェースを前記仮想マシンが利用するか否かに基づいて、前記仮想マシンのデータ転送に伴うプロセッサ使用量を有する負荷情報を算出する、
処理をコンピュータが実行する負荷算出方法である。
【発明の効果】
【００１３】
第１の側面によれば，仮想マシンのＣＰＵ負荷を高精度に見積もることができる。
【図面の簡単な説明】
【００１４】
【図１】本実施の形態における情報処理システムの構成を示す図である。
【図２】図１の各物理マシン１、２、３の概略構成を示す図である。
【図３】本実施の形態における物理マシンの仮想マシンVMの仮想NICと物理NICとの接続例を示す図である。
【図４】本実施の形態における物理マシンとハイパーバイザの関係を示す図である。
【図５】第１のネットワーク設定の仮想マシンが生成されている物理マシンPMに第２のネットワーク設定の仮想マシンが追加される例（例１）を示す図である。
【図６】図５の例における物理マシンのCPU負荷の見積もりを説明する図である。
【図７】第２のネットワーク設定の仮想マシンが生成されている物理マシンPMに第１のネットワーク設定の仮想マシンが追加される例（例２）を示す図である。
【図８】第２のネットワーク設定の仮想マシンが生成されている物理マシンPMに第１のネットワーク設定の仮想マシンが追加される例（例２）を示す図である。
【図９】非優先制御の第２のネットワーク設定の仮想マシンが生成されている物理マシンPMに優先処理の第２のネットワーク設定の仮想マシンが追加される例（例３）を示す図である。
【図１０】図９の例における物理マシンのCPU負荷の見積もりを説明する図である。
【図１１】例１、２、３における物理マシンのCPU負荷のオーバーヘッド分の変動を示す図である。
【図１２】本実施の形態における負荷算出プログラムの概略的な処理のフローチャート図である。
【図１３】ネットワーク設定の判定対象の仮想NICの検出処理S2のフローチャート図である。
【図１４】仮想NIC(V_NIC)のネットワーク設定の判定処理のフローチャート図である。
【図１５】第１のネットワーク設定の仮想NICを検出する処理の物理マシンと仮想マシンとの関係例を示す図である。
【図１６】第１のネットワーク設定の仮想NICを検出する処理のフローチャート図である。
【図１７】仮想NIC(V_NIC)の送信量の時系列データと、物理マシン及び仮想マシンのCPU負荷の時系列データの一例を示す図である。
【図１８】優先制御の第２のネットワーク設定と非優先制御の第２のネットワーク設定の仮想NICを検出する処理における物理マシンと仮想マシンとの関係例を示す図である。
【図１９】優先制御と非優先制御の第２のネットワーク設定の仮想NICを検出する処理のフローチャート図である。
【図２０】仮想NIC(V_NIC)の送信量の時系列データと、物理マシンのCPU割り込み回数の時系列データの一例を示す図である。
【図２１】優先制御と非優先制御の違いによる仮想NICのCPU負荷の違いを検出する処理での、物理マシンと仮想マシンとの関係例を示す図である。
【図２２】優先制御と非優先制御の違いによる仮想NICのCPU負荷の違いを検出する処理を示すフローチャート図である。
【図２３】構成情報データベース（DB）に含まれる物理マシン一覧テーブルの一例である。
【図２４】構成情報データベース（DB）に含まれる仮想マシンVM一覧テーブルの一例である。
【図２５】ネットワーク設定情報データベース（DB）に含まれるネットワーク設定テーブルの一例を示す図である。
【図２６】監視設定データベース（DB）に含まれるしきい値監視設定テーブルの一例を示す図である。
【図２７】構成情報データベース（DB）に含まれネットワークインターフェース（物理NICと仮想NIC（V_NIC））の一覧テーブルの一例である。
【図２８】性能情報データベース（DB）に含まれる仮想マシンの仮想NICの送信量（I/Oデータ転送量）テーブルと、物理マシン及び仮想マシンのCPU負荷（CPU使用量）テーブルの一例を示す図である。
【図２９】性能情報データベース（DB）に含まれる物理マシンのCPU割り込みのテーブルと、ネットワーク設定情報データベース（DB）の一例を示す図である。
【発明を実施するための形態】
【００１５】
図１は、本実施の形態における情報処理システムの構成を示す図である。情報システムは、複数の仮想マシンVMをハイパーバイザHV上で実行する複数の物理マシン（またはVMホスト）１、２、３と、物理マシン及び仮想マシンを管理する管理装置４と、共有ストレージ２０とを有する。情報システムは、多数の物理マシンが配備されたデータセンタ（またはサーバファシリティ）内に構築される。データセンタは、物理マシンなどのハードウエアリソースを利用者に提供することで、プライベートクラウドサービスまたはパブリッククラウドサービスを提供する。
【００１６】
各物理マシン（またはホストマシン）１、２、３は、ハイパーバイザHVを実行して、複数の仮想マシンVMを起動し実行する。別の表現をすると、ハイパーバイザHVが仮想マシンVMを起動し実行する。共有ストレージ２０は、仮想マシンVMのゲストOS(Operating System)やアプリケーションプログラムなどを有するイメージファイルを記憶する。仮想マシンVMは、共有ストレージ２０内に格納されたイメージファイルのゲストOSとアプリケーションプログラムを、物理マシン１，２，３のメモリに展開し、メモリに展開したゲストOSとアプリケーションプログラムを実行し、所望のサービスシステムを構築する。
【００１７】
管理装置４の管理プログラム４＿１は、ハイパーバイザHVにコンフィグレーション情報に基づく仮想マシンを起動させ、必要に応じて仮想マシンを一時停止（ポーズ）及び再開（リジューム）させ、遮断させる。コンフィグレーション情報は、仮想マシンVMに割り当てるCPUコア数とメモリ容量の情報などを有する。
【００１８】
また、管理装置４の管理プログラム４＿１は、物理マシンや仮想マシンの構成情報と動作情報を収集し、必要に応じてある物理マシン上で動作中の仮想マシンを別の物理マシンに移行（マイグレーション）させる。また、管理プログラム４＿１は、物理マシンに新たな仮想マシンを追加し、物理マシンから仮想マシンを削除する。すなわち、管理プログラム４＿１は、物理マシンや仮想マシンの動作状態などを収集する性能情報収集部と、仮想マシンを移行して異なる物理マシンに配置し、また物理マシンに新たな仮想マシンを配置し、仮想マシンを削除する仮想マシン配置部とを有する。
【００１９】
そして、本実施の形態では、管理プログラム４＿１は、仮想マシンVMのＣＰＵ負荷を見積もる負荷算出プログラム４＿３を有する。負荷算出プログラム４＿３は、性能情報収集部が収集した動作情報に基づいて仮想マシンの仮想ＮＩＣのネットワーク設定を判別し、判別したネットワーク設定に基づいて仮想マシンのＣＰＵ負荷を算出する。管理プログラム４＿１は、算出した仮想マシンのＣＰＵ負荷に基づいて、仮想マシンの配置先を決定する。
【００２０】
ここで、ＣＰＵ負荷とは、例えばＣＰＵの使用量である。ＣＰＵの使用量は、ＣＰＵを使用した単位時間当たりのクロック数である。なお、ＣＰＵ使用率は、単位時間あたりのＣＰＵのクロック数に対する単位時間当たりにＣＰＵを使用したクロック数の割合である。ＣＰＵの負荷を使用量で算出することで、様々なクロック数のＣＰＵを搭載する物理マシンに対し、仮想マシンVMのＣＰＵ負荷を見積もることができる。
【００２１】
さらに、管理装置４のVM管理プログラム４＿１は、仮想マシンで構築されたサービスシステムを運用する利用者端末６にポータルサイト４＿２を提供する。利用者端末６は外部のネットワークEX_NWを介してポータルサイト４＿２にアクセスし、サービスシステムの維持管理を行う。
【００２２】
各物理マシン１、２、３と管理装置４と共有ストレージ２０とは、管理ネットワークM_NWを介して通信可能にされる。情報処理システムの運用管理者端末７は、例えば管理ネットワークM_NWを介して管理装置４にアクセス可能である。また、利用者端末６は、ポータルサイト４＿２を介して管理装置４にアクセスし、仮想マシンの新たな起動や遮断などを要求する。さらに、各仮想マシンVMは、VMネットワークVM_NWを介して互いに通信可能にされている。そして、仮想マシンVMは、外部のネットワークEX_NW（例えばインターネットやイントラネット）を介して、仮想マシンで構築されたサービスシステムにアクセスするサービスシステム利用者（図示せず）からアクセスされる。
【００２３】
図１では、各仮想マシンVMに直接VMネットワークMV_NWが接続されるように記載されているが、実際には、仮想マシンVMは、物理マシン１、２、３のネットワークインターフェースを介してVMネットワークMV_NWに接続される。管理ネットワークM_NWも物理マシン１、２、３のネットワークインターフェースに接続される。
【００２４】
図２は、図１の各物理マシン１、２、３の概略構成を示す図である。例えば、物理マシン１、２、３は、演算処理装置であるCPU１０＿０、１０＿１と、メモリであるRAM１２と、ROM１３と、物理ネットワークインターフェース（物理ＮＩＣ）１４と、入出力部１５と、ハードディスクなどの大容量記憶装置１６とを有する。そして、それらはバス１８を介して接続される。演算処理装置である２つのCPU１０＿０，１０＿１は、例えば、それぞれ４個の演算処理部であるCPUコアCPU_COR#1−#3を有する。したがって、図２の物理マシンは、合計で８個の演算処理部であるCPUコアを有する。本実施の形態において、CPUとCPUコアの数は特にこの数に限定されない。
【００２５】
管理装置４は、図２に示した物理マシンの構成と同様の構成を有する。管理装置２は、管理プログラム４＿１を実行して、各物理マシンのハイパーバイザHVに仮想マシンVMの起動と遮断、一時中断と再開など実行させる。さらに、管理装置２は、管理プログラム４＿１を実行して、物理マシンや仮想マシンの動作状態を監視する性能情報収集部と、仮想マシンのＣＰＵ負荷を算出する負荷算出部と、必要に応じて、仮想マシンをある物理マシンから別の物理マシンに再配置し、または新たな仮想マシンを物理マシンに生成する仮想マシン配置部とを構築する。
【００２６】
物理マシン１、２、３の場合、大容量記憶装置１６は、例えばOSやハイパーバイザHVなどを格納する。管理装置４の場合、大容量記憶装置１６は、例えばOSと管理プログラム４＿１などを記憶する。そして、大容量記憶装置１６に格納されているOSやソフトウエアはメモリであるRAM１２内に展開され、各CPUコアにより実行される。
【００２７】
［仮想NICのネットワーク設定の違い］
図３は、本実施の形態における物理マシンの仮想マシンVMの仮想NICと物理NICとの接続例を示す図である。図３の例では、各仮想マシンVM_1〜VN_5がそれぞれ１個の仮想ネットワークインターフェース（仮想NIC）V_NICを有する。仮想マシンVM_1〜VM_3の仮想NIC（V_NIC1-V_NIC5）はいずれも、ハイパーバイザHVの仮想スイッチV_SWを介して物理NIC１４＿１とI/Oデータ転送を行う。一方、仮想マシンVM_4、VM_5の仮想NIC（V_NIC4,V_NIC5）は、ハイパーバイザHVの仮想スイッチV_SWを介することなく物理NIC１４＿２とI/Oデータ転送を行う。物理NIC１４＿２は、SR-IOV対応の物理NICであり、ハイパーバイザHVによる仮想スイッチの機能を内蔵する。
【００２８】
仮想マシンVMは、単一または複数の仮想NICを有することができる。仮想NICにはそれぞれIPアドレスが割り当てられ、それぞれのIPアドレスに基づいてI/Oデータ転送を実行する。物理NIC１４＿１は１つの内部端子を有し、ハイパーバイザHVの仮想スイッチV_SWを介して仮想マシンの仮想NICとI/Oデータ転送を行う。また、物理NIC１４＿１は１つの外部端子を有し、外部のネットワークと接続される。但し、ハイパーバイザHVの仮想スイッチV_SWを利用することで、物理NIC１４＿１は、複数の仮想NICとI/Oデータ転送を行うことができる。
【００２９】
ハイパーバイザHVの仮想スイッチV_SWは、通常、複数の仮想マシンの仮想NICから受信した送信パケットを通常制御用（非優先制御用）の送信キューに格納し、FIFOで送信パケットを物理NIC１４＿１に出力する。また、物理NIC１４＿１から受信した受信パケットを通常制御用の受信キューに格納し、FIFOで受信パケットを対応する仮想NICに出力する。
【００３０】
したがって、物理NIC１４＿１にネットワーク設定されている仮想NICがデータ転送を実行すると、ハイパーバイザの仮想スイッチV_SWの処理が発生し、その分CPU負荷が発生する。
【００３１】
一方、SR-IOV対応の物理NIC１４＿２は、複数の内部端子を有し、それぞれの内部端子が仮想NICとI/Oデータ転送を行う。SR-IOV対応の物理NIC１４＿２は、１つの外部端子を有し、それを介して外部のネットワークと接続される。物理NIC１４＿１とSR-IOV対応の物理NIC１４＿２と、仮想NICとを接続する線は、仮想的な信号線である。
【００３２】
SR-IOV対応の物理NIC１４＿２にネットワーク設定されている仮想NICがデータ転送を実行すると、ハイパーバイザの仮想スイッチの処理が発生せず、仮想スイッチの処理に対応するCPU負荷は発生しない。
【００３３】
さらに、ハイパーバイザHVの仮想スイッチV_SWは、通常制御用（非優先制御）の送信キューと優先制御用の送信キューとを有する。そして、仮想スイッチは、優先制御にネットワーク設定された仮想NICから受信した受信パケットを優先制御用の送信キューに格納し、その受信パケットを、通常制御用の送信キュー内の送信パケットに優先して物理NIC１４＿１に出力する。すなわち、通常制御用の送信キューにのみ送信パケットが格納されているときに優先制御用の送信キューに送信パケットが到着すると、仮想スイッチは、通常制御用の送信キューからの送信パケットの出力を停止し、優先制御用の送信キューの送信パケットを全て物理NIC１４＿１に出力する。このとき、CPU割込が発生し、OSはCPU割込処理を実行し、通常制御用の送信キューによる処理の状態をメモリに退避する。そして、OSは、優先制御用の送信キューの送信パケットの出力処理が完了後、通常制御用送信キューからの送信パケットの出力処理の状態をメモリから復帰し、通常制御用送信キューによる出力処理を再開する。
【００３４】
したがって、同じ物理マシンの仮想マシンに、通常制御（非優先制御）にネットワーク設定された仮想NICと優先制御にネットワーク設定された仮想NICが混在すると、優先制御の仮想NICからの送信パケットを処理するために、CPU割り込み処理と送信キューの切り替え処理が発生する。その分、物理マシンにはCPU割り込みに対応するCPU負荷と、送信キュー切り替えに対応するCPU負荷とが発生する。さらに、通常制御と優先制御にネットワーク設定された仮想マシンの仮想NICが混在すると、優先制御のデータ転送量の増加に伴ってCPU割り込み回数が増大する。また、優先制御に設定された仮想NICによるデータ転送処理によるCPU負荷は、通常制御に設定された仮想NICによるデータ転送処理よるCPU負荷より、若干大きくなる。
【００３５】
上記のように、仮想マシンの仮想NICのネットワーク設定は、ハイパーバイザを介さずにSR-IOV対応の物理NIC１４＿２とI/Oデータ転送をする第１のネットワーク設定と、ハイパーバイザを介して物理NIC１４＿１とI/Oデータ転送をする第２のネットワーク設定とがある。さらに、第２のネットワーク設定には、通常制御（非優先制御）のネットワーク設定と、優先制御のネットワーク設定とがある。本実施の形態では、負荷算出プログラムが、仮想NICについてこれらのネットワーク設定の違いを判別し、仮想マシンVMの仮想NICのネットワーク設定に基づくI/Oデータ転送に要するCPU負荷を算出し、仮想マシンVMのCPU負荷を算出する。
【００３６】
図４は、本実施の形態における物理マシンとハイパーバイザの関係を示す図である。例えば、プライベートクラウドコンピューティングでは、様々な種類の物理マシンとハイパーバイザとが組み合わされたリソースに仮想マシンVMを生成することがある。その場合、各ハイパーバイザの種類が多岐にわたるため、仮想マシンの仮想NICのネットワーク設定を取得することは容易ではない。したがって、それぞれのハイパーバイザに対応した方法で、手動により各仮想マシンの仮想NICのネットワーク設定の情報を収集するしかない。そのため、仮想マシンの数が増大すると、各仮想マシンの最新のネットワーク設定を収集して管理することは容易ではない。
【００３７】
そこで、本実施の形態では、負荷算出プログラムが、物理マシンのCPU負荷、仮想マシンのCPU負荷、物理マシンのCPU割り込み回数、仮想マシンの仮想NICのI/Oデータ転送量に基づいて、各仮想マシンの仮想NICのネットワーク設定を判定する。
【００３８】
［判定する仮想マシンの仮想NICのネットワーク設定］
仮想マシンの仮想NICのI/Oデータ転送量に比例して物理マシンのCPU負荷が線形的に増減すると仮定すると、以下に説明するネットワーク設定の仮想NICの場合、I/Oデータ転送によるCPU負荷の見積もりが不正確になる。以下、次の３つのネットワーク設定の仮想NICのI/Oデータ転送によるCPU負荷について説明する。
【００３９】
（１）ハイパーバイザを介さないでI/Oデータ転送をする第１のネットワーク設定。この設定の場合、仮想マシンの仮想NICは、SR_IOV物理NICと直接I/Oデータ転送する。
【００４０】
（２）ハイパーバイザを介してI/Oデータ転送をする第２のネットワーク設定。この設定の場合、仮想マシンの仮想NICは、ハイパーバイザの仮想スイッチを介して非SR_IOV物理NICとI/Oデータ転送をする。
【００４１】
（２−１）第２のネットワーク設定であって、仮想スイッチで優先制御されるネットワーク設定。仮想スイッチが優先制御を行うためにCPU割り込みが発生する。この設定を優先制御の第２のネットワーク設定と称する。
【００４２】
（２−２）第２のネットワーク設定であって、仮想スイッチで非優先制御（通常制御）されるネットワーク設定。仮想スイッチで非優先制御されるので、CPU割り込みは発生しない。この設定を非優先制御の第２のネットワーク設定と称する。
【００４３】
前述したとおり、仮想マシンは単数または複数の仮想NICを利用することができる。そして、ネットワーク設定は仮想NICに対して行われる。つまり、ネットワーク設定の判定は仮想NIC毎に行う必要がある。ただし、以下の例では、仮想マシンが単一の仮想NICを利用する場合に限定して説明する。したがって、以下の説明では、仮想マシンのネットワーク設定は、その仮想マシンが利用する単一の仮想NICのネットワーク設定を意味する。
【００４４】
［例１］
図５は、第１のネットワーク設定の仮想マシンが生成されている物理マシンPMに第２のネットワーク設定の仮想マシンが追加される例（例１）を示す図である。左側では、物理マシンPMが仮想マシンVM1,VM2を生成し、仮想マシンVM1は第２のネットワーク設定がされ、ハイパーバイザHVを介して物理NICとI/Oデータ転送を行う。また、仮想マシンVM2は第１のネットワーク設定がされ、ハイパーバイザHVを介さず物理NIC（SR_IOV対応物理NIC）とI/Oデータ転送を行う。それに対して、右側では、物理マシンPMに、第２のネットワーク設定がされた仮想マシンVM3が追加される。このような場合、仮想マシンVM3の追加による物理マシンPMのCPU負荷の増大をどのように見積もるべきかについて説明する。
【００４５】
図６は、図５の例における物理マシンのCPU負荷の見積もりを説明する図である。
【００４６】
図６（Ａ）は、I/Oデータ転送量に比例してCPU負荷が発生すると仮定した場合の物理マシンのCPU負荷の見積もりを示す。左側のグラフ図は図５の左側の物理マシンPMのCPU負荷の時系列データを、右側のグラフ図は図５の右側の物理マシンPMのCPU負荷の時系列データをそれぞれ示す。グラフ図では、横軸時刻t、縦軸CPU負荷であり、仮想マシンVM1, VM2のCPU負荷を重ねて示し、物理マシンのCPU負荷はそのまま示している。
【００４７】
左側のグラフ図において、まず、仮想マシンVM1,VM2それぞれの処理量に基づいてCPU負荷が発生する。そして、上記の仮定によれば、仮想マシンVM1,VM2のI/Oデータ転送に伴うハイパーバイザの仮想スイッチの処理量に基づいてCPU負荷が発生する。したがって、物理マシンのCPU負荷から仮想マシンVM1,VM2のCPU負荷の合計を減じたCPU負荷のオーバーヘッド分OH1が、仮想マシンVM1,VM2のI/Oデータ転送に伴うハイパーバイザの処理に対応する。
【００４８】
そのため、右側のグラフ図では、仮想マシンVM3の追加により、仮想マシンVM1,VM2,VM3それぞれの処理によるCPU負荷が発生し、さらに、上記の仮定によれば、仮想マシンVM1,VM2,VM3のI/Oデータ転送に伴うハイパーバイザの仮想スイッチの処理量に基づいてCPU負荷OH2が発生する。つまり、仮想マシンVM3を追加したことで、仮想マシンによるI/Oデータ転送によるCPU負荷のオーバーヘッド分OH2は、仮想マシンVM3を追加する前のCPU負荷OH1に対し、以下のように増加すると推定される。
OH2＝OH1*（VM1+VM2+VM3のデータ量）/(VM1+VM2のデータ量)      （１）
【００４９】
したがって、上記の仮定により、仮想マシンVM3追加後の物理マシンPMのCPU負荷の増加量は、仮想マシンVM3の処理によるCPU負荷と、OH1*（VM3のデータ量）/(VM1+VM2のデータ量)と見積もられる。
【００５０】
しかしながら、図５に示されるとおり、仮想マシンVM3が追加される前の物理マシンPMには、ハイパーバイザを介するI/Oデータ転送の第２のネットワーク設定の仮想マシンVM1と、ハイパーバイザを介さないI/Oデータ転送の第１のネットワーク転送の仮想マシンVM2とが生成されている。したがって、図６（Ａ）の左側のCPU負荷のオーバーヘッド分OH1には仮想マシンVM2のI/Oデータ転送によるCPU負荷は含まれていない。
【００５１】
図６（Ｂ）は、実際の物理マシンのCPU負荷の見積もりを示す。図６（Ｂ）の左側のグラフ図では、物理マシンPMのCPU負荷のオーバーヘッド分OH3は、仮想マシンVM1のI/Oデータ転送に伴うハイパーバイザの仮想スイッチ処理によるCPU負荷だけを含み、仮想マシンVM2のそれは含まない。そして、右側のグラフ図に示した仮想マシンVM3を追加した後の物理マシンPMのCPU負荷のオーバーヘッド分OH4は、仮想マシンVM1とVM3のI/Oデータ転送に伴う仮想スイッチ処理によるCPU負荷である。したがって、CPU負荷のオーバーヘッド分OH4は、以下のように増加すると推定される。
OH4＝OH3*（VM1+VM3のデータ量）/(VM1のデータ量)      （２）
【００５２】
つまり、物理マシンの実際のCPU負荷の増加分は、仮想マシンVM3の処理に対するCPU負荷と、OH1*（VM3のデータ量/VM1のデータ量）とになる。結局、図６（Ａ）の場合のCPU負荷の増加分は、図６（Ｂ）での実際のCPU負荷の増加分より少ない。物理マシンのCPU負荷の増加分の予測が少ないと、仮想マシンVM3追加後の物理マシンのCPU使用率が１００％を超えることがあり、仮想マシンVM1-VM3の処理に遅れが生じることがある。
【００５３】
［例２］
図７は、第２のネットワーク設定の仮想マシンが生成されている物理マシンPMに第１のネットワーク設定の仮想マシンが追加される例（例２）を示す図である。左側では、物理マシンPMが仮想マシンVM1,VM2を生成し、仮想マシンVM1, VM2は第２のネットワーク設定がされ、ハイパーバイザHVを介して物理NICとI/Oデータ転送を行う。それに対して、右側では、物理マシンPMに第1のネットワーク設定がされた仮想マシンVM3が追加される。このような場合、物理マシンPMのCPU負荷の増大をどのように見積もるべきかについて説明する。
【００５４】
図８は、図７の例における物理マシンのCPU負荷の見積もりを説明する図である。
【００５５】
図８（Ａ）は、I/Oデータ転送量に比例してCPU負荷が発生すると仮定した場合の物理マシンのCPU負荷の見積もりを示す。左側のグラフ図は図７の左側の物理マシンPMのCPU負荷の時系列データを、右側のグラフ図は図７の右側の物理マシンPMの時系列データをそれぞれ示す。これらのグラフ図でも、横軸時刻t、縦軸CPU負荷であり、仮想マシンVM1, VM2のCPU負荷を重ねて示し、物理マシンのCPU負荷はそのまま示している。
【００５６】
左側のグラフ図において、まず、仮想マシンVM1,VM2それぞれの処理量に基づいてCPU負荷が発生する。そして、物理マシンのCPU負荷から仮想マシンVM1,VM2のCPU負荷の合計を減じたCPU負荷のオーバーヘッド分OH21が、仮想マシンVM1,VM2のI/Oデータ転送に伴うハイパーバイザの処理に対応する。
【００５７】
右側のグラフ図では、仮想マシンVM3の追加により、仮想マシンVM1,VM2,VM3それぞれの処理によるCPU負荷が発生し、さらに、上記の仮定によれば、仮想マシンVM1,VM2,VM3のI/Oデータ転送に伴うハイパーバイザの仮想スイッチの処理量に基づいてCPU負荷のオーバーヘッド分OH22が発生する。つまり、仮想マシンVM3を追加したことで、仮想マシンによるI/Oデータ転送によるCPU負荷のオーバーヘッド分OH22は、仮想マシンVM3を追加する前のCPU負荷OH21に対し、以下のように増加すると推定される。
OH22＝OH21*（VM1+VM2+VM3のデータ量）/(VM1+VM2のデータ量)      （３）
【００５８】
したがって、上記の仮定により、仮想マシンVM3追加後の物理マシンPMのCPU負荷の増加量は、仮想マシンVM3の処理によるCPU負荷と、OH21*（VM3のデータ量）/(VM1+VM2のデータ量)と見積もられる。
【００５９】
しかしながら、図７に示されるとおり、仮想マシンVM3が追加される前の物理マシンPMには、ハイパーバイザを介するI/Oデータ転送の第２のネットワーク設定の仮想マシンVM1,VM2が生成されている。そして、仮想マシンVM3が追加された後の物理マシンPMには、ハイパーバイザを介さないI/Oデータ転送の第１のネットワーク転送の仮想マシンVM3が新たに生成されている。したがって、図８（Ａ）の右側のCPU負荷のオーバーヘッド分OH22には仮想マシンVM3のI/Oデータ転送によるCPU負荷は含まれていないはずである。
【００６０】
図８（Ｂ）は、実際の物理マシンのCPU負荷の見積もりを示す。図８（Ｂ）の左側のグラフ図では、物理マシンPMのCPU負荷のオーバーヘッド分OH23は、仮想マシンVM1,VM2のI/Oデータ転送に伴うハイパーバイザの仮想スイッチ処理によるCPU負荷を含む。そして、右側のグラフ図に示した仮想マシンVM3を追加した後の物理マシンPMのCPU負荷のオーバーヘッド分OH24は、仮想マシンVM1,VM2のI/Oデータ転送に伴う仮想スイッチ処理によるCPU負荷のままである。追加した仮想マシンVM3によるCPU負荷の増加は発生しない。したがって、CPU負荷のオーバーヘッド分OH24は、変動しないと推定される。
【００６１】
つまり、物理マシンの実際のCPU負荷の増加分は、仮想マシンVM3の処理に対するCPU負荷だけになり、仮想マシンVM3によるI/Oデータ転送によるCPU負荷は発生しない。結局、図８（Ａ）の場合のCPU負荷の増加分は、図８（Ｂ）での実際のCPU負荷の増加分より多い。そのため、図８（Ａ）によるCPU負荷の見積りでは、仮想マシンVM3を追加した後の物理マシンPMにはCPU処理能力に余裕が発生し、その分が余剰のハードウエア資源となる。余剰のハードウエア資源は、仮想マシンVMの集約率を低下させ、物理マシンの台数が不必要に増大させる。
【００６２】
［例３］
図９は、非優先制御の第２のネットワーク設定の仮想マシンが生成されている物理マシンPMに優先処理の第２のネットワーク設定の仮想マシンが追加される例（例３）を示す図である。左側では、物理マシンPMが仮想マシンVM1,VM2を生成し、仮想マシンVM1, VM2は非優先制御の第２のネットワーク設定がされ、ハイパーバイザHVを介して物理NICとI/Oデータ転送を行う。それに対して、右側では、物理マシンPMに優先制御の第２のネットワーク設定がされた仮想マシンVM3が追加される。このような場合、物理マシンPMのCPU負荷の増大をどのように見積もるべきかについて説明する。
【００６３】
図１０は、図９の例における物理マシンのCPU負荷の見積もりを説明する図である。
【００６４】
図１０（Ａ）は、I/Oデータ転送量に比例してCPU負荷が発生すると仮定した場合の物理マシンのCPU負荷の見積もりを示す。左側のグラフ図は図９の左側の物理マシンPMのCPU負荷の時系列データを、右側のグラフ図は図９の右側の物理マシンPMのCPU負荷の時系列データをそれぞれ示す。これらのグラフ図でも、横軸時刻t、縦軸CPU負荷であり、仮想マシンVM1, VM2のCPU負荷を重ねて示し、物理マシンのCPU負荷はそのまま示している。
【００６５】
左側のグラフ図において、まず、仮想マシンVM1,VM2それぞれの処理量に基づいてCPU負荷が発生する。そして、物理マシンのCPU負荷から仮想マシンVM1,VM2のCPU負荷の合計を減じたCPU負荷OH31が、仮想マシンVM1,VM2のI/Oデータ転送に伴うハイパーバイザの処理（非優先制御）に対応する。
【００６６】
右側のグラフ図では、仮想マシンVM3の追加により、仮想マシンVM1,VM2,VM3それぞれの処理によるCPU負荷が発生し、さらに、上記の仮定によれば、仮想マシンVM1,VM2,VM3のI/Oデータ転送に伴うハイパーバイザの仮想スイッチの処理量に基づいてCPU負荷OH32が発生する。つまり、仮想マシンVM3を追加したことで、仮想マシンによるI/Oデータ転送によるCPU負荷のオーバーヘッド分OH32は、仮想マシンVM3を追加する前のCPU負荷OH31に対し、以下のように増加すると推定される。
OH32＝OH31*（VM1+VM2+VM3のデータ量）/(VM1+VM2のデータ量)      （４）
【００６７】
したがって、上記の仮定により、仮想マシンVM3追加後の物理マシンPMのCPU負荷の増加量は、仮想マシンVM3の処理によるCPU負荷と、OH31*（VM3のデータ量）/(VM1+VM2のデータ量)と見積もられる。
【００６８】
しかしながら、図９に示されるとおり、仮想マシンVM3が追加される前の物理マシンPMには、ハイパーバイザを介するI/Oデータ転送の非優先制御の第２のネットワーク設定の仮想マシンVM1,VM2が生成されている。そして、仮想マシンVM3が追加された後の物理マシンPMには、ハイパーバイザを介するI/Oデータ転送の優先制御の第２のネットワーク転送の仮想マシンVM3が新たに生成されている。したがって、図１０（Ａ）の右側のCPU負荷のオーバーヘッド分OH32には、仮想マシンVM3のハイパーバイザの優先制御を介するI/Oデータ転送によるCPU負荷が含まれていなければならない。そして、優先制御の場合のCPU負荷は、通常制御（非優先制御）の場合のCPU負荷より、大きい。
【００６９】
図１０（Ｂ）は、実際の物理マシンのCPU負荷の見積もりを示す。図１０（Ｂ）の左側のグラフ図では、物理マシンPMのCPU負荷のオーバーヘッド分OH33は、仮想マシンVM1,VM2のI/Oデータ転送に伴うハイパーバイザの仮想スイッチ処理（非優先制御）によるCPU負荷を含む。そして、右側のグラフ図に示した仮想マシンVM3を追加した後の物理マシンPMのCPU負荷のオーバーヘッド分OH34は、仮想マシンVM1,VM2のI/Oデータ転送に伴う仮想スイッチ処理（非優先制御）によるCPU負荷と、仮想マシンVM3の仮想スイッチ処理（優先制御）によるCPU負荷が含まれる。そして、非優先制御の第２のネットワーク設定と優先制御の第２のネットワーク設定の仮想マシンが混在すると、優先制御に伴うCPU割り込みの処理と、通常制御用（非優先制御用）の送信キューと優先制御用の送信キューとを切替える処理とが追加的に発生する。したがって、仮想マシンVM3の追加によるCPU負荷のオーバーヘッド分は、仮想マシンVM1,VM2によるCPU負荷のオーバーヘッド分より大きい。
【００７０】
つまり、仮想マシンVM3を追加したことで、仮想マシンによるI/Oデータ転送によるCPU負荷のオーバーヘッド分OH34は、仮想マシンVM3を追加する前のCPU負荷OH32に対し、以下のように増加すると推定される。
OH34＝OH33*（VM1+VM2+VM3のデータ量+α）/(VM1+VM2のデータ量)      （５）
【００７１】
上記のとおり、物理マシンの実際のCPU負荷の増加分は、仮想マシンVM3の処理に対するCPU負荷と、仮想マシンVM3のI/Oデータ転送に伴う仮想スイッチの優先制御の処理に対するCPU負荷になる。結局、図１０（Ａ）の場合のCPU負荷の増加分は、図１０（Ｂ）での実際のCPU負荷の増加分より少ない。そのため、前述の仮定によりCPU負荷を見積もると、仮想マシンVM3を追加した後の物理マシンPMは、CPU負荷率が１００％を超える場合があり、仮想マシンの処理が遅くなる場合がある。
【００７２】
［例１、２、３のまとめ］
図１１は、例１、２、３における物理マシンのCPU負荷のオーバーヘッド分の変動を示す図である。図１１中のグラフ図は、横軸が物理マシンBの全ての仮想マシンVMのI/Oデータ転送量であり、縦軸が物理マシンのCPU負荷から仮想マシンVMの処理に要するCPU負荷を除いたCPU負荷のオーバーヘッド分OH(仮想マシンVMのI/Oデータ転送に要するCPU負荷)である。
【００７３】
図１１に示されるとおり、物理マシンＢに物理マシンＡで生成されていた仮想マシンVM3が再配置されているとする。つまり、例１、２、３と同様に、物理マシンＢに仮想マシンVM3が追加された場合の物理マシンのCPU負荷のオーバーヘッド分OHの変動を示す。
【００７４】
例１のように、追加される仮想マシンVM3が非優先制御の第２のネットワーク設定の場合、再配置後の物理マシンＢにおけるI/Oデータ転送に伴うCPU負荷のオーバーヘッド分OHの増加は、ほぼ仮想マシンVM3のI/Oデータ転送量に比例する増加分である。
【００７５】
また、例２のように、追加される仮想マシンVM３がハイパーバイザの仮想スイッチを介さない第１のネットワーク設定の場合、再配置後の物理マシンＢにおけるI/Oデータ転送に伴うCPU負荷のオーバーヘッド分OHの増加は、発生しない。
【００７６】
そして、例３のように、非優先制御の第２のネットワーク設定の仮想マシンが生成された物理マシンに対し、追加される仮想マシンVM3が優先制御の第２のネットワーク設定の場合、再配置後の物理マシンBにおけるI/Oデータ転送に伴うCPU負荷のオーバーヘッド分OHの増加は、仮想マシンVM3のI/Oデータ転送量に比例する増加分にプラスα追加される。優先制御の場合のCPU負荷は、非優先制御の場合よりも若干（プラスα）大きいからである。
【００７７】
［本実施の形態における負荷算出プログラム］
図１２は、本実施の形態における負荷算出プログラムの概略的な処理のフローチャート図である。負荷算出プログラム４＿３は、図１の管理装置４が実行する管理プログラム４＿１に含まれる。
【００７８】
［性能情報収集処理S1］
管理装置４は、負荷算出プログラム４＿３を実行することで、物理マシン及び仮想マシンの性能情報を収集する性能情報収集処理S1を実行する。性能情報収集処理S1では、管理装置４が、運用管理対象の物理マシンPMと仮想マシンVMについて時系列の性能情報を定期的に（例えば１０分毎に）収集する。また、性能情報収集処理S1では、管理装置４が、運用管理対象の物理マシンPMと仮想マシンVMについて定期的に構成情報を収集してもよい。管理装置４が、定期的に構成情報を収集せずに、物理マシンPMが配備されるたびに、及び物理マシンが仮想マシンVMを起動、生成するたびに、それぞれの構成情報をデータベース内に格納するようになっていてもよい。
【００７９】
構成情報の例は、以下のとおりである。
（１）物理マシンの物理NICとそのIPアドレス
（２）仮想マシンの仮想NICとそのIPアドレス
【００８０】
性能情報の例は、以下のとおりである。
（１）物理マシンのCPU負荷（例えばCPU使用量、使用率）と、CPU割り込み回数、物理NICごとの送信バイト数及び受信バイト数（I/Oデータ転送量）
（２）仮想マシンのCPU負荷（例えばCPU使用量、使用率）と、仮想NICごとの送信バイト数及び受信バイト数(I/Oデータ転送量)
【００８１】
ここで、上記の構成情報と性能情報について一例を示して説明する。また、構成情報と性能情報以外のデータベースのテーブルについても説明する。
【００８２】
図２３は、構成情報データベース（DB）に含まれる物理マシン一覧テーブルの一例である。図２３の例では、管理IDとそれに対応する物理マシンA,B,Cの物理マシン名(HostA- HostC)とが対応付けられている。
【００８３】
図２４は、構成情報データベース（DB）に含まれる仮想マシンVM一覧テーブルの一例である。図２４の例では、管理IDとそれに対応する仮想マシンVM1-VM12の仮想マシン名(VM1-VM12)と物理マシン名(HostA-HostC)とが対応付けられている。
【００８４】
図２５は、ネットワーク設定情報データベース（DB）に含まれるネットワーク設定テーブルの一例を示す図である。図２５では、仮想マシンVM1,VM2の仮想NICとネットワーク設定及びネットワーク設定判定日時とが対応付けられている。このテーブルを参照することで、どの仮想マシンの仮想NICがネットワーク設定を判別済みか未判別かを知ることができる。
【００８５】
図２６は、監視設定データベース（DB）に含まれるしきい値監視設定テーブルの一例を示す図である。図２６では、物理マシンHostA-HostC及び仮想マシンVM1-VM3とそれぞれのしきい値監視設定日時とが対応付けられている。このテーブルを参照することで、各物理マシン及び仮想マシンの状態を監視するためのしきい値設定日時を知ることができる。
【００８６】
図２７は、構成情報データベース（DB）に含まれネットワークインターフェース（物理NICと仮想NIC（V_NIC））の一覧テーブルの一例である。図２７の例では、物理マシンHostの物理NIC名とそのIPアドレス及び仮想マシンVMの仮想NIC名とそのIPアドレスとがそれぞれ対応付けられている。物理マシンの物理NICと仮想マシンの仮想NICとが同じ名前であっても、それぞれが属する物理マシン及び仮想マシンが異なれば、異なるNICとして認識される。
【００８７】
図２８は、性能情報データベース（DB）に含まれる仮想マシンの仮想NICの送信量（I/Oデータ転送量）テーブルと、物理マシン及び仮想マシンのCPU負荷（CPU使用量）テーブルの一例を示す図である。仮想NICの送信量テーブルには、仮想マシンVM1,VM2の仮想NICの単位時間当たりの送信量が１０分毎に時系列に格納されている。同様に、物理マシン及び仮想マシンのCPU負荷テーブルには、物理マシンHostA-HostC及び仮想マシンVM1-VM3それぞれの単位時間当たりのCPU負荷（CPU使用量）が時系列に格納されている。ただし、異なる時刻のCPU使用量は省略されている。
【００８８】
図２９は、性能情報データベース（DB）に含まれる物理マシンのCPU割り込みのテーブルと、ネットワーク設定情報データベース（DB）の一例を示す図である。物理マシンのCPU割り込みテーブルには、物理マシンHostA-HostCのある時刻における単位時間当たりのCPU割り込み回数が格納されている。ただし、異なる時刻のCPU割り込み回数は省略されている。また、ネットワーク設定情報DBには、物理マシンHostA-HostCにおいて、ハイパーバイザが優先制御する場合のCPU負荷の非優先制御する場合のCPU負荷に対する比率（優先制御のCPU負荷／非優先制御のCPU負荷）が示されている。
【００８９】
上記の図２３−図２９のデータベースのうち、図１２の性能情報収集処理S1に関係するデータベースは、図２３、図２４、図２７、図２８及び図２９の物理マシンのCPU割り込みのテーブルである。それ以外のデータベースについては、後述する処理で参照される。
【００９０】
図１２に戻り、性能情報収集処理S1では、物理マシンと仮想マシンそれぞれのCPU使用量と、物理マシンのCPU割り込み回数と、各仮想マシンが利用する仮想NIC(V_NIC)のI/Oデータ転送量を、時系列に収集する。物理マシンと仮想マシンそれぞれのCPU使用量は、OSを介して、CPUチップ内のカウンタ値から取得することができる。または、仮想マシンのCPU使用量は、例えばハイパーバイザからまたは仮想マシンが実行する監視プログラムから取得することができる。また、物理マシンのCPU割り込み回数も、OSを介して、CPUチップ内のカウンタ値から取得できる。さらに、仮想NICごとのI/Oデータ転送量は、例えばハイパーバイザからまたは仮想マシンが実行する監視プログラムから取得することができる。
【００９１】
図１２において、次に、負荷算出プログラム４＿３は、ネットワーク設定を判定する対象の仮想NIC（V_NIC）の検出処理を行う（S2）。仮想マシンが利用する仮想NICのネットワーク設定は、時々刻々と変更される場合がある。そのため、仮想NICのネットワーク設定が変更されたことを何らかの手段で検出し、ネットワーク設定が変更された仮想NICを新たに判定対象にする。詳細は後述する。
【００９２】
そして、負荷算出プログラム４＿３は、判定対象の仮想NIC(V_NIC)のネットワーク設定の判定処理を行う（S3）。この仮想NICのネットワーク設定の判定は、前述したとおり、ハイパーバイザを介さないで物理NIC(SR_IOV物理NIC)とI/Oデータ転送する第１のネットワーク設定と、ハイパーバイザを介して優先制御で物理NICとI/Oデータ転送する優先制御の第２のネットワーク設定と、ハイパーバイザを介して非優先制御で物理NICとI/Oデータ転送する非優先制御の第２ネットワーク設定とを区別して判定する。具体的には後述する。
【００９３】
最後に、判定した仮想NICのネットワーク設定に基づいて、各仮想NICを利用する仮想マシンVMのCPU負荷を算出し、その仮想マシンを起動、生成、または削除する物理マシンのCPU負荷を算出する（S4）。
【００９４】
以下、負荷算出プログラム４＿３のネットワーク設定判定対象の仮想NICの検出処理S2と仮想NICのネットワーク設定判定処理S3と仮想マシンの負荷算出処理S4について、それぞれ説明する。
【００９５】
［ネットワーク設定判定対象の仮想NICの検出処理S2］
図１３は、ネットワーク設定の判定対象の仮想NICの検出処理S2のフローチャート図である。図１３のフローチャート図によれば、まず、負荷算出プログラム４＿３は、構成情報DBから物理マシン一覧と、各物理マシン上の仮想マシンVM一覧を取得する（S21）。すなわち、図２３と図２４の物理マイン一覧テーブルとVM一覧テーブルを取得する。そして、各仮想マシンVMごとに以下の処理を繰り返し実行する（S22-S27）。
【００９６】
まず、負荷算出プログラムは、図２５のネットワーク設定テーブルを参照して、判定対象の仮想マシンの仮想NICについてネットワーク設定が存在するか否かをチェックする（S23）。存在しない場合は、その仮想NICは判定対象となる（S23のNO）。存在する場合（S23のYES）は、負荷算出プログラムは、その判定済みの仮想NICのネットワーク設定がその後変更されているか否かをチェックする（S24）。判定済みの仮想NICのネットワーク設定が変更されている可能性がある場合は（S24のYES）、その仮想NICは判定対象となる。
【００９７】
ここで、判定済みの仮想NICのネットワーク設定が変更されている可能性があるか否かの判定は、次のようにして行われる。データセンタの運用管理者端末７から仮想マシンVMの仮想NICのネットワーク設定が変更された場合、変更の事実が管理装置４に通知されていれば、そのネットワーク設定の変更日時が、ネットワーク設定テーブル（図２５）のネットワーク設定判定日時より後であれば、その仮想NICは判定対象となる。
【００９８】
ただし、仮想NICのネットワーク設定の変更の事実が管理装置４に通知されない場合がある。その場合は、通常、運用管理者は仮想NICのネットワーク設定を変更すると、その変更結果の状態を監視するために、仮想マシンVMまたは物理マシンのある監視対象のしきい値を変更する。このしきい値の設定日時を利用する。すなわち、負荷算出プログラムは、しきい値監視設定テーブル（図２６）のしきい値監視設定日時が、ネットワーク設定テーブル（図２５）のネットワーク設定判定日時より後であれば、その仮想NICを判定対象とする。
【００９９】
次に、負荷算出プログラムは、仮想NICのネットワーク設定を判定するために必要なデータが存在するか否かをチェックする（S25）。仮想NICのネットワーク設定を判定するために必要なデータが存在する条件は、次のとおりである。
【０１００】
（１）判定対象の仮想NICの仮想マシンを生成する同じ物理マシン上の仮想マシンの各仮想NICの送信量（I/Oデータ転送量）の時系列データ。ただし、各仮想NICの送信量（I/Oデータ転送量）の比率が互いに異なるサンプルが、必要なサンプル数存在すること。必要なサンプル数は仮想NICの数以上（少なくとも等しい数）である。後述する連立方程式を成立させるためである。
【０１０１】
（２）判定対象の仮想NICの仮想マシンを生成する同じ物理マシン上の全ての仮想マシンとその物理マシンのCPU負荷（CPU使用量）の時系列データ。
【０１０２】
（３）判定対象の仮想NICの仮想マシンの物理マシンのCPU割り込み回数の時系列データ。
【０１０３】
さらに、（１）について、サンプル間で、物理マシン上の全ての仮想マシンの仮想NICの送信量（I/Oデータ転送量）の合計が等しいことが、望ましい。その理由は、I/Oデータ転送量に応じて送信キューでパケットのあふれが発生すると、仮想マシンVMとハイパーバイザHV間で所定のやりとりが発生し、CPU負荷のオーバーヘッド分が発生するからである。送信キューのパケットあふれで要するCPUのオーバーヘッド負荷をサンプル間で同等にしておくことが、高精度の判定につながるからである。
【０１０４】
上記の仮想NICのネットワーク設定を判定するために必要なデータが存在する条件については、後で再度説明する。
【０１０５】
図１３に戻り、ネットワーク設定の判定に必要なデータが存在している場合（S25のYES）、負荷算出プログラムは、その仮想マシンVMの仮想NICをネットワーク設定の判定対象にする（S26）。上記の処理が、全仮想マシンVMについて繰り返される（S22-S27）。
【０１０６】
［仮想NICのネットワーク設定判定処理S3］
図１４は、仮想NIC(V_NIC)のネットワーク設定の判定処理のフローチャート図である。仮想NICのネットワーク設定の判定処理は、概略すると次の通りである。まず、負荷算出プログラムは、同じ物理マシン上に生成されている仮想マシンの仮想NICのうち、ハイパーバイザを介さないでI/Oデータ転送する設定（第１のネットワーク設定）の仮想NIC（V＿NIC）を検出する（S31）。この検出処理は、各仮想NICのI/Oデータ転送量と、物理マシンのCPU負荷（CPU使用量）から全仮想マシンのCPU負荷（CPU使用量）を減じた物理マシンのCPU負荷（CPU使用量）のオーバーヘッド分との相関性に基づいて行われる。相関性のない仮想NICが第１のネットワーク設定と判定される。相関性のある仮想NICが第２のネットワーク設定と判定される。
【０１０７】
次に、負荷算出プログラムは、同じ物理マシン上に生成されている仮想マシンの仮想NICのうち、ハイパーバイザを介して且つ優先制御でI/Oデータ転送する設定（優先制御の第２のネットワーク設定）の仮想NIC（V＿NIC）を検出する（S32）。この検出処理は、第１のネットワーク設定の仮想NICを除いて、第２のネットワーク設定の各仮想NICのI/Oデータ転送量と、物理マシンのCPU割り込み回数との相関性に基づいて行われる。相関性が大きい仮想NICが優先制御の第２のネットワーク設定と判定される。
【０１０８】
さらに、負荷算出プログラムは、上記の工程S32で、優先制御の第２のネットワーク設定の仮想NICの検出と同時に、非優先制御の第２のネットワーク設定の仮想NICを検出する（S33）。この検出処理は、上記の相関性が低い仮想NICが非優先制御の第２のネットワーク設定と判定される。
【０１０９】
最後に、負荷算出プログラムは、優先制御と非優先制御の違いによる仮想NICのCPU負荷（CPU使用量）の違いを検出する（S34）。この違いに基づいて、優先制御の第２のネットワーク設定の仮想NICのCPU負荷の、非優先制御の第２のネットワーク設定の仮想NICのCPU負荷のCPU負荷に対する比率を検出する。この比率が、優先制御のCPU負荷と非優先制御のCPU負荷の違いを示す。
【０１１０】
以下、上記の処理S31, S32/S33, S34について詳述する。
【０１１１】
［ハイパーバイザを介さないでI/Oデータ転送する設定（第１のネットワーク設定）の仮想NIC（V＿NIC）を検出する処理S31］
図１５は、第１のネットワーク設定の仮想NICを検出する処理の物理マシンと仮想マシンとの関係例を示す図である。図１５の物理マシンPM上には仮想マシンVM1, VM2, VM3が生成されている。そして、仮想マシンVM1は仮想NIC（V_NIC1）を利用し、仮想マシンVM2, VM3は仮想NIC（V_NIC2, V_NIC3）をそれぞれ利用する。そして、仮想マシンVM1の仮想NIC（V_NIC1）と仮想マシンVM2の仮想NIC（V_NIC2）は、ハイパーバイザを介してI/Oデータ転送を行う第２のネットワーク設定に設定されている。さらに、仮想マシンVM3の仮想NIC(V_NIC3)はハイパーバイザを介さないでI/Oデータ転送を行う第１のネットワーク設定に設定されている。
【０１１２】
それに伴い、仮想NIC（V_NIC1, V_NIC2）は物理NIC１４＿１とハイパーバイザを介してI/Oデータ転送を行い、仮想NIC(V_NIC3)はSR_IOV対応物理NIC１４＿２とハイパーバイザを介さずにI/Oデータ転送を行う。
【０１１３】
図１６は、第１のネットワーク設定の仮想NICを検出する処理のフローチャート図である。まず、負荷算出プログラムは、構成情報データベース（DB）から、判定対象の仮想マシンVMと同じ物理マシンPM上の全ての仮想マシンVMの仮想NIC（V_NIC）の一覧を取得する（S311）。具体的には、図２３，図２４，図２７のテーブルを取得する。
【０１１４】
次に、負荷算出プログラムは、性能情報DBから、判定対象の仮想マシンVMと同じ物理マシンPM上の全ての仮想マシンの仮想NIC(V_NIC)の送信量（I/Oデータ転送量）の時系列データを取得する（S312）。具体的には、図２８の上側のV_NICの送信量テーブルを取得する。
【０１１５】
そして、負荷算出プログラムは、仮想NIC(V_NIC)の送信量の時系列データから、物理マシンPM内の全ての仮想NIC(V_NIC)の送信量の総和が同じである複数の時刻を検出する。必ずしも総和が同じである必要はないが、同じであれば精度が上がる。さらに、負荷算出プログラムは、各仮想NIC（V_NIC）の送信量の割合の組合せが互いに異なる複数の時刻を検出する。そして、２つの条件を満たす時刻を、配列ｔに格納する（S313）。この配列データは、後述する連立方程式の各要素のデータとなる。
【０１１６】
図１７は、仮想NIC(V_NIC)の送信量の時系列データと、物理マシン及び仮想マシンのCPU負荷の時系列データの一例を示す図である。図１７の上のグラフ図は、横軸を時刻ｔ、縦軸をV_NICの送信量とし、図１５の物理マシンPM内の全ての仮想NIC(V_NIC1, V_NIC2, V_NIC3)の送信量（I/Oデータ転送量）を示す。このグラフ図は、３つの仮想NICの送信量を加算して示している。そして、上記の処理S313では、３つの仮想NICの送信量の合計がほぼ等しい時刻であり、各仮想NICの送信量の割合が異なる時刻ｔ１，ｔ２，ｔ３が選択され、その時刻が配列ｔに格納される。時刻の数はサンプル数に対応するので、時刻の数は少なくとも全仮想NICの数あればよい。
【０１１７】
上記のサンプルとなる時刻は、３つの仮想NICの送信量の総和が同じである時刻が望ましい。送信量が増大するにしたがって受信キューがあふれてCPU負荷が発生するので、そのCPU負荷を３つのサンプル時刻で同等にすることで、検出精度を高めるからである。また、サンプルとなる時刻は、サンプル間で３つの仮想NICの送信量の割合が異なることが必要になる。後述する連立方程式が解けることが必要だからである。
【０１１８】
次に、負荷算出プログラムは、性能情報DBから、時刻ｔ（ｔ１，ｔ２，ｔ３）の物理マシンPM及び物理マシンPM上の仮想マシンVM1、VM2、VM3のCPU負荷（CPU使用量）を取得する（S314）。具体的には図２８の下側のマシンのCPU負荷テーブルから、時刻ｔ１，ｔ２，ｔ３のCUP負荷を取得する。さらに、負荷算出プログラムは、取得した物理マシンPMのCPU負荷（CPU使用量）から全仮想マシンVM1,VM2,VM3のCPU負荷（CPU使用量）を減じたCPU負荷（CPU使用量）のオーバーヘッド分OHを、配列t_cpuに格納する（S314）。
【０１１９】
図１７の下のグラフ図は、横軸を時刻ｔ、縦軸を物理マシン及び仮想マシンのCPU負荷（CPU使用量）として、図１５の物理マシンPMとその中の全ての仮想マシンVM1,VM2,VM3それぞれのCPU負荷を示す。このグラフ図も、３つの仮想マシンVM1-VM3のCPU負荷を加算して示し、物理マシンPMのCPU負荷はそのまま示している。
【０１２０】
そして、物理マシンPMのCPU負荷から全仮想マシンVM1-VM3のCPU負荷を減じたオーバーヘッド分OHが示されている。この物理マシンのCPU負荷のオーバーヘッド分OHは、主に、第２のネットワーク設定されている仮想NIC(V_NIC)の通信（I/Oデータ転送）の際にハイパーバイザHVの仮想スイッチの処理に要したCPU負荷である。通信量（I/Oデータ転送量）が大規模になると、その通信に要するハイパーバイザの仮想スイッチの処理の負担が大きくなる。したがって、上記のオーバーヘッド分OHは、主にハイパーバイザの仮想スイッチの処理に要するCPU負荷とみなすことができる。
【０１２１】
次に、負荷算出プログラムは、配列ｔの各時刻ｔ１，ｔ２，ｔ３における、各仮想NIC(V_NIC１，V_NIC2, V_NIC3)の送信量を、配列NIC1,NIC2,NIC3に格納する。
【０１２２】
そして、負荷算出プログラムは、上記の３つのサンプル値から、各仮想NIC(V_NIC１，V_NIC2, V_NIC3)の送信量（NIC1_t1, NIC1_t2, NIC1_t3, NIC2_t1, NIC2_t2, NIC2_t3, NIC3_t1, NIC3_t2, NIC3_t3）と、物理マシンのCPU使用量（t1_cpu, t2_cpu, t3_cpu3）との相関を算出する（S316）。具体的な算出方法では、各仮想NICに対して相関係数ｘ、ｙ、ｚを割り当てて、図１７に示される以下の連立方程式を立てて、その連立方程式を解いて、相関係数ｘ、ｙ、ｚを求める。
t1_cpu = NIC1_t1 * x + NIC2_t1 * y + NIC3_t1 * z
t2_cpu = NIC1_t2 * x + NIC2_t2 * y + NIC3_t2 * z    （６）
t1_cpu = NIC3_t1 * x + NIC2_t3 * y + NIC3_t3 * z
【０１２３】
負荷算出プログラムは、各仮想NICについて、その送信量と物理マシンのCPU使用量のオーバーヘッド分OHとの間に相関がない、または相関が小さい、仮想NIC(V_NIC)を、ハイパーバイザを介さない第１のネットワーク設定と判定する。さらに、負荷算出プログラムは、上記の相関がある、または相関が大きい、仮想NIC(V_NIC)を、ハイパーバイザを介する第２のネットワーク設定と判定する。
【０１２４】
具体的には、上記式（６）の連立方程式を解いて取得した相関係数ｘ、ｙ、ｚが０またはほぼ０の場合は、相関がないまたは小さいので、第１のネットワーク設定と判定する。相関係数が０でないまたは０より大きい場合は、相関があるので、第２のネットワーク設定と判定する。また、相関係数ｘ、ｙ、ｚを比較して、相関係数が小さいグループの仮想NICを第１のネットワーク設定と判定し、相関係数が大きいグループの仮想NICを第２のネットワーク設定と判定しても良い。
【０１２５】
相関がない仮想NICは、ハイパーバイザを介する第２のネットワーク設定の場合に発生するCPU負荷と無関係であることを意味するので、第１のネットワーク設定に設定されていると判定できる。また、相関がある仮想NICは、ハイパーバイザを介する第２のネットワーク設定の場合に発生するCPU負荷と関係があることを意味するので、優先制御に設定されていると判定できる。
【０１２６】
上記の例では、仮想マシンVMが１つの仮想NICを利用する例で説明した。しかし、一つの物理マシンPM上のいずれかの仮想マシンVMが複数の仮想NICを利用する場合も、各仮想NICの送信量を監視して取得できるかぎり、前述の式（６）により各仮想NICの相関係数を解くことで、第１のネットワーク設定の仮想NICを検出することができる。各仮想NIC毎の送信量は前述したとおり一般的な方法で取得可能である。また、物理マシンのCPU負荷のオーバーヘッド分OHは、仮想マシンVMが複数の仮想NICを利用していても、物理マシンのCPU負荷と各仮想マシンVMのCPU負荷の合計から取得可能である。
【０１２７】
また、物理マシン上の仮想マシンVMの仮想NICが１個のみの場合は、その１個の仮想NICの送信量と物理マシンのCPU負荷のオーバーヘッド分OHとの相関を見れば、第１または第２のネットワーク設定のいずれかであると判定できる。この場合は、連立方程式を立てて解く必要はない。
【０１２８】
［ハイパーバイザを介して且つ優先制御でI/Oデータ転送する設定（優先制御の第２のネットワーク設定）の仮想NIC（V＿NIC）と、非優先制御でI/Oデータ転送する設定（非優先の第２のネットワーク設定）の仮想NICとを検出する処理S32、S33］
次に、第２のネットワーク設定されている仮想NICのうち、優先制御に設定されている仮想NICと非優先制御に設定されている仮想NICを検出する処理について説明する。
【０１２９】
図１８は、優先制御の第２のネットワーク設定と非優先制御の第２のネットワーク設定の仮想NICを検出する処理における物理マシンと仮想マシンとの関係例を示す図である。図１８の物理マシンPM上には仮想マシンVM1, VM2, VM3, VM4が生成されている。そして、仮想マシンVM1-VM4は仮想NIC（V_NIC1-V_NIC4）をそれぞれ利用する。そして、仮想マシンVM1の仮想NIC（V_NIC1）と仮想マシンVM2の仮想NIC（V_NIC2）は、非優先制御の第２のネットワーク設定に設定され、仮想マシンVM3の仮想NIC(V_NIC3)は、優先制御の第２のネットワーク設定に設定されている。さらに、仮想マシンVM4の仮想NIC(V_NIC4)はハイパーバイザを介さないでI/Oデータ転送を行う第１のネットワーク設定に設定されている。
【０１３０】
図１８に示すとおり、ある物理マシンPMにおいて、優先制御と非優先制御の第２のネットワーク設定されている仮想NICが混在していれば、以下に示す方法により優先制御と非優先制御の第２のネットワーク設定がされている仮想NICを区別して判定可能である。ただし、優先制御と非優先制御の第２のネットワーク設定されている仮想NICが混在してない場合は、送信キューの切り替え処理が発生せずCPU割込回数との相関が発生しないので、判定できない。
【０１３１】
図１９は、優先制御と非優先制御の第２のネットワーク設定の仮想NICを検出する処理のフローチャート図である。負荷算出プログラムは、図１６と同様に、構成情報DBから判定対象の仮想マシンの物理マシンPM上の仮想マシンVMの仮想NIC(V_NIC)の一覧を取得し（S321）、性能情報DBから、各仮想マシンVMの仮想NIC(V_NIC)の送信量（I/Oデータ転送量）の時系列データを取得する（S322）。処理S321,S322は、図１６の処理S311,S312と同様である。ただし、取得する仮想マシンVMの仮想NIC(V_NIC)の送信量の時系列データから、第１のネットワーク設定されている仮想NICのデータを除外するのが望ましい。ここでの判定は、優先制御と非優先制御の第２のネットワーク設定の仮想NICを区別することであるため、第２のネットワーク設定以外の仮想NICの送信量データを除外しておくのが望ましい。
【０１３２】
そして、負荷算出プログラムは、仮想NIC(V_NIC)の送信量の時系列データから、判定対象の仮想マシンVMの仮想NIC（V_NIC）が単独で通信している時刻の性能情報を除外する（S322_A）。単独で通信している時刻では、ハイパーバイザの仮想スイッチが優先制御のみ実施しているか、非優先制御のみ実施しているかのいずれかである。そのため、非優先制御用の送信キューと優先制御用の送信キューとを切り替える処理が発生せず、仮想NICの送信量と物理マシンPMのCPU割り込み回数の相関性を確認することができないからである。
【０１３３】
次に、負荷算出プログラムは、仮想NIC(V_NIC)の送信量の時系列データから、物理マシンPM内の全ての仮想NIC(V_NIC)の送信量の総和が同じである複数の時刻を検出する。さらに、負荷算出プログラムは、全仮想NIC(V_NIC)の送信量の割合が互いに異なる複数の時刻を検出する。そして、２つの条件を満たす時刻を、配列ｔに格納する（S323）。この配列データは、後述する連立方程式の各要素のデータとなる。時刻の数は、連立方程式の数に対応するので、仮想NICの数と少なくとも同じ数であることが必要になる。
【０１３４】
また、全ての仮想NICの送信量の総和が同じである複数の時刻を選択する理由は、図１６と同様に、送信量の増大に伴い物理マシンのCPU割り込み回数が増大するオーバーヘッド分を、連立方程式の各式（各時刻）で同等にするためである。したがって、精度を高めるためには、全ての仮想NICの送信量の総和が同じである時刻を選択するのが望ましい。全仮想NICの送信量の割合が互いに異なる複数の時刻を選択する理由は、連立方程式が解けるための条件だからである。
【０１３５】
次に、負荷算出プログラムは、性能情報DBから、時刻ｔの物理マシンのCPU割り込み回数を取得する（S324）。このCPU割り込み回数の例は、図２９の物理マシンのＣＰＵ割り込みテーブルである。そして、負荷算出プログラムは、取得した物理マシンのCPU割り込み回数を、配列t_cpuに格納する（S324）。
【０１３６】
図２０は、仮想NIC(V_NIC)の送信量の時系列データと、物理マシンのCPU割り込み回数の時系列データの一例を示す図である。図２０の上のグラフ図は、横軸を時刻ｔ、縦軸をV_NICの送信量とし、図１８の物理マシンPM内の第２のネットワーク設定されている仮想NIC(V_NIC1, V_NIC2, V_NIC3)の送信量（I/Oデータ転送量）を示す。図１７の上のグラフ図と同じである。
【０１３７】
さらに、図２０の下のグラフ図は、縦軸を物理マシンのCPU割り込み回数とし、図１９の物理マシンPMのCPU割り込み回数を示す。したがって、下のグラフ図から、時刻ｔ１、ｔ２，ｔ３での物理マシンのCPU割り込み回数が得られる。
【０１３８】
そして、負荷算出プログラムは、配列ｔの各時刻ｔ１，ｔ２，ｔ３における、各仮想NIC(V_NIC)の送信量（I/Oデータ転送量）を、配列NIC1〜NIC3に格納する。
【０１３９】
次に、負荷算出プログラムは、各仮想NIC（V_NIC1，V_NIC2, V_NIC3）の送信量と物理マシンのCPU割り込み回数との相関を算出する（S326）。具体的には、図２０に示される連立方程式を立てて、各仮想NICの相関係数ｘ、ｙ、ｚを解く。図２０に示された連立方程式は上記の式（６）と同じである。
【０１４０】
負荷算出プログラムは、各仮想NICについて、その送信量と物理マシンのCPU割り込み回数との間に相関がない、または相関が小さい、仮想NIC(V_NIC)を、非優先制御の第２のネットワーク設定と判定する（S327）。さらに、負荷算出プログラムは、上記の相関がある、または相関が大きい、仮想NIC(V_NIC)を、優先制御の第２のネットワーク設定と判定する（S327）。
【０１４１】
具体的には、上記式（６）の連立方程式を解いて取得した相関係数ｘ、ｙ、ｚが０またはほぼ０の場合は、相関がないまたは小さいので、非優先制御の第２のネットワーク設定と判定する。相関係数が０でないまたは０より大きい場合は、相関があるので、優先制御の第２のネットワーク設定と判定する。また、相関係数ｘ、ｙ、ｚを比較して、相関係数が小さいグループの仮想NICを非優先制御の第２のネットワーク設定と判定し、相関係数が大きいグループの仮想NICを優先制御の第２のネットワーク設定と判定しても良い。
【０１４２】
送信量がCPU割り込み回数と相関がない仮想NICは、優先制御した場合に発生するCPU割り込み回数と無関係であることを意味するので、非優先制御に設定されていると判定できる。また、相関がある仮想NICは、優先制御した場合に発生するCPU割り込み回数と関係があることを意味するので、優先制御に設定されていると判定できる。
【０１４３】
上記の処理S32,S34においても、仮想マシンVMが複数の仮想NICを利用する場合も、各仮想NICの送信量を監視して取得できるかぎり、仮想NICが優先制御か非優先制御かを判別できる。
【０１４４】
［優先制御と非優先制御の違いによる仮想NICのCPU負荷（CPU使用量）の違いを検出する処理S34］
上記までの処理で、物理マシンPM上の仮想マシンVMの全ての仮想NIC（V_NIC）のネットワーク設定が、第１のネットワーク設定と、優先制御の第２のネットワーク設定と、非優先制御の第２のネットワーク設定のいずれかであることが判明した。
【０１４５】
そこで、負荷算出プログラムは、優先制御の第２のネットワーク設定の仮想NICによるCPU負荷（CPU使用量）と、非優先制御の第２のネットワーク設定の仮想NICによるCUP負荷（CPU使用量）との比率を検出する。
【０１４６】
図２１は、優先制御と非優先制御の違いによる仮想NICのCPU負荷の違いを検出する処理での、物理マシンと仮想マシンとの関係例を示す図である。図２１の物理マシンPM上には仮想マシンVM1, VM2, VM3が生成されている。そして、仮想マシンVM1-VM3は仮想NIC（V_NIC1-V_NIC3）をそれぞれ利用する。そして、仮想マシンVM1の仮想NIC（V_NIC1）と仮想マシンVM2の仮想NIC（V_NIC2）は、非優先制御の第２のネットワーク設定に設定され、仮想マシンVM3の仮想NIC(V_NIC3)は、優先制御の第２のネットワーク設定に設定されている。
【０１４７】
図２１のような場合、仮想NIC(V_NIC3)は優先制御されるので、送信量が増大するにつれて、優先制御でのCPU割込処理と送信バッファの切り替え処理とが増える。その結果、優先制御の仮想NIC(V_NIC3)のI/Oデータ転送に伴うCPU負荷（CPU使用量）は、非優先制御の仮想NIC(V_NIC1, V_NIC2)のI/Oデータ転送に伴うCPU負荷（CPU使用量）よりも大きくなる。このCPU負荷の違い、つまり比率を、以下のようにして検出する。
【０１４８】
図２２は、優先制御と非優先制御の違いによる仮想NICのCPU負荷の違いを検出する処理を示すフローチャート図である。負荷算出プログラムは、設定情報DBから各仮想マシンVMの仮想NIC(V_NIC)のネットワーク設定を取得し（S341）、性能情報から各仮想マシンの仮想NIC（V_NIC）の送信量（I/Oデータ転送量）の時系列データを取得する（S342）。それぞれ、図２５のネットワーク設定テーブル、図２８のV_NICの送信量テーブルである。
【０１４９】
そして、負荷算出プログラムは、ハイパーバイザを介さないI/Oデータ転送を行う第１のネットワーク設定の仮想NIC（V_NIC）の性能情報（送信量）を除外する（S342_A）。除外することで、ハイパーバイザの仮想スイッチを介する第２のネットワーク設定の仮想NICだけに絞る。これにより、優先制御と非優先制御の仮想NICのCPU負荷の比率を高精度に求めることができる。
【０１５０】
次に、負荷算出プログラムは、仮想NICの送信量の時系列データから判定対象の物理マシンの仮想NIC(V_NIC)の送信量の総和が同じ時刻ｔを検出し、配列ｔに格納する（S343）。この処理は、図１６のS213と同じである。送信量の総和が同じ時刻を検出する理由も同様である。
【０１５１】
そして、負荷算出プログラムは、性能情報DBから、時刻ｔの判定対象の物理マシン及び物理マシンの仮想マシンのCPU負荷（CPU使用量）を取得する（S344）。そして、物理マシンのCPU負荷（CPU使用量）から全仮想マシンVMのCPU負荷（CPU使用量）の合計を減じた物理マシンのCPU負荷のオーバーヘッド分OHを、配列t_cpuに格納する（S344）。さらに、負荷算出プログラムは、配列ｔの各時刻における、各仮想NIC(V_NIC)の送信量(I/Oデータ転送量)を、配列NIC1-NIC3に格納する（S345）。
【０１５２】
図１７に示した２つのグラフ図は、上記の処理S342, S343, S344, S345の処理に対応する。
【０１５３】
次に、負荷算出プログラムは、各仮想NIC(V_NIC)の送信量と物理マシンのCPU使用量のオーバーヘッド分OHとの相関値を算出する（S346）。具体的には、図１７に示された式（６）の連立方程式を解いて、相関係数ｘ、ｙ、ｚを求める。図２１に示した構成例の場合は、非優先制御の仮想NIC(V_NIC1,V_NIC2)の相関係数ｘ、ｙは同じになるが、優先制御の仮想NIC(V_NIC3)の相関係数ｚは、ｘ、ｙよりも少し大きくなる。
【０１５４】
そして、負荷算出プログラムは、相関係数ｘ、ｙと相関係数ｚとの比率を、優先制御の仮想NIC（V_NIC3）のCPU負荷の、非優先制御の仮想NIC(V_NIC1またはV_NIC2)のCPU負荷に対する比率として算出する（S347）。つまり、以下の式のとおりである。
優先制御のCPU負荷の非優先制御のCPU負荷の比率＝ｚ／（ｘまたはｙ）
【０１５５】
負荷算出プログラムは、全物理マシンについて上記の処理を行い、各物理マシンの優先制御の第２のネットワーク設定の仮想NICについてのCPU負荷の比率を、図２９の優先制御のCPU負荷の倍率テーブルに格納する。
【０１５６】
［仮想マシンの負荷算出処理S4］
次に、負荷算出プログラムは、再配置または追加もしくは削除対象の仮想マシンVMのCPU負荷を算出処理を行う（S4）。具体的には、図１１に示したとおり、仮想マシンVM3が物理マシンBに再配置される場合、仮想マシンVM3の物理マシンAでのCPU負荷（CPU処理量）と送信量（I/Oデータ転送量）に基づいて、物理マシンBに再配置された場合に増加するCPU負荷を算出する。
【０１５７】
例えば、仮想マシンVM3がハイパーバイザを介して非優先制御で通信する非優先制御の第２のネットワーク設定の場合（例１）、負荷算出プログラムは、図６（Ｂ）で説明したように物理マシンＢで増加するCPU負荷（CPU使用量）を算出する。すなわち、増加するCPU負荷は、仮想マシンVM3の処理によるCPU負荷と、仮想マシンVM3の送信量に対応するCPU負荷のオーバーヘッド分OHとが増加する。
【０１５８】
例えば、仮想マシンVM3がハイパーバイザを介さずに通信する第１のネットワーク設定の場合（例２）、負荷算出プログラムは、図８（Ｂ）で説明したように物理マシンＢで増加するCPU負荷（CPU使用量）を算出する。すなわち、増加するCPU負荷は、仮想マシンVM3の処理によるCPU負荷が増加する。
【０１５９】
例えば、仮想マシンVM3がハイパーバイザを介して優先制御で通信する優先制御の第２のネットワーク設定の場合（例３）、負荷算出プログラムは、図１０（Ｂ）で説明したように物理マシンＢで増加するCPU負荷（CPU使用量）を算出する。すなわち、増加するCPU負荷は、仮想マシンVM3の処理によるCPU負荷と、仮想マシンVM3の送信量に対応するCPU負荷のオーバーヘッド分OH（優先制御故、非優先制御よりも割合が高い）とが増加する。
【０１６０】
以上のとおり、本実施の形態によれば、物理マシンに生成された仮想マシンの仮想NICのネットワーク設定を性能情報に基づいて検出することができる。したがって、検出した仮想NICのネットワーク設定に基づいて、各仮想マシンのCPU負荷を高精度に算出することができ、仮想マシンの再配置によるサイジングを適切に実行することができる。
【０１６１】
以上の実施の形態をまとめると，次の付記のとおりである。
【０１６２】
（付記１）
管理対象の情報処理装置のプロセッサの使用量と、前記管理対象の情報処理装置が実行するハイパーバイザで生成された複数の仮想マシン毎の前記プロセッサの使用量とを含むプロセッサ使用情報を取得し、
前記仮想マシンが利用する仮想ネットワークインターフェース毎のデータ転送量を含むデータ転送情報を取得し、
前記プロセッサ使用情報と前記データ転送情報とに基づいて、前記複数の仮想ネットワークインターフェースのうち、前記ハイパーバイザを経由せずにデータ転送を行う第１の仮想ネットワークインターフェースを検出し、
前記検出した第１の仮想ネットワークインターフェースを前記仮想マシンが利用するか否かに基づいて、前記仮想マシンのデータ転送に伴うプロセッサ使用量を有する負荷情報を算出する、
処理をコンピュータが実行する負荷算出方法。
【０１６３】
（付記２）
前記第１の仮想ネットワークインターフェースを検出する処理では、
前記情報処理装置のプロセッサ使用量から前記仮想マシンのプロセッサ使用量の合計を減じたオーバーヘッドプロセッサ使用量と、前記仮想ネットワークインターフェースのデータ転送量との間に、第２の相関を有する仮想ネットワークインターフェースを、前記ハイパーバイザを経由するデータ転送を行う第２の仮想ネットワークインターフェースと判定し、
前記オーバーヘッドプロセッサ使用量と、前記仮想ネットワークインターフェースのデータ転送量との間に、前記第２の相関より小さい第１の相関を有する仮想ネットワークインターフェースを、前記第１の仮想ネットワークインターフェースと判定する、
付記１に記載の負荷算出方法。
【０１６４】
（付記３）
前記処理は、さらに、
前記監視対象の情報処理装置のプロセッサ割込回数を有するプロセッサ割込回数情報を取得し、
前記プロセッサ割込回数情報と前記データ転送情報とに基づいて、前記複数の仮想ネットワークインターフェースのうち、前記ハイパーバイザを経由するデータ転送を行う第２の仮想ネットワークインターフェースであって、他の第２の仮想ネットワークインターフェースに優先してデータ転送制御される優先制御対象の第２の仮想ネットワークインターフェースを検出し、
前記負荷情報を算出する処理において、前記仮想マシンが前記検出した優先制御対象の第２の仮想ネットワークインターフェースを利用するか否かに基づいて、前記仮想マシンのデータ転送に伴うプロセッサ使用量を有する負荷情報を算出する、
付記１に記載の負荷算出方法。
【０１６５】
（付記４）
前記優先制御対象の第２の仮想ネットワークインターフェースを検出する処理において、
前記プロセッサ割込回数と、前記仮想ネットワークインターフェースのデータ転送量との間に、第３の相関を有する仮想ネットワークインターフェースを、前記優先制御対象の第２の仮想ネットワークインターフェースと判定し、
前記プロセッサ割込回数と、前記仮想ネットワークインターフェースのデータ転送量との間に、前記第３の相関より小さい第４の相関を有する仮想ネットワークインターフェースを、非優先制御対象の第２の仮想ネットワークインターフェースと判定する、
付記３に記載の負荷算出方法。
【０１６６】
（付記５）
前記負荷情報を算出する処理において、前記優先制御対象の第２の仮想ネットワークインターフェースを利用する仮想マシンの負荷を、非優先制御対象の第２の仮想ネットワークインターフェースを利用する仮想マシンのプロセッサ使用量よりも大きく算出する、
付記３に記載の負荷算出方法。
【０１６７】
（付記６）
前記負荷情報を算出する処理において、前記情報処理装置のプロセッサ使用量から前記仮想マシンのプロセッサ使用量の合計を減じたオーバーヘッドプロセッサ使用量と、前記第２の仮想ネットワークインターフェースのデータ転送量との間の相関値の違いに基づいて、前記優先制御対象の第２の仮想ネットワークインターフェースを利用する仮想マシンのプロセッサ使用量と、前記非優先制御対象の第２の仮想ネットワークインターフェースを利用する仮想マシンのプロセッサ使用量との差を算出する、
付記５に記載の負荷算出方法。
【０１６８】
（付記７）
前記処理は、さらに、
前記仮想ネットワークインターフェースのネットワーク設定の変更を、前記仮想マシンまたは前記情報処理装置の監視閾値の設定変更に基づいて検出する処理を有する、
負荷算出方法。
【０１６９】
（付記８）
管理対象の情報処理装置のプロセッサの使用量と、前記管理対象の情報処理装置が実行するハイパーバイザで生成された複数の仮想マシン毎の前記プロセッサの使用量とを含むプロセッサ使用情報を取得し、
前記仮想マシンが利用する仮想ネットワークインターフェース毎のデータ転送量を含むデータ転送情報を取得し、
前記プロセッサ使用情報と前記データ転送情報とに基づいて、前記複数の仮想ネットワークインターフェースのうち、前記ハイパーバイザを経由せずにデータ転送を行う第１の仮想ネットワークインターフェースを検出し、
前記検出した第１の仮想ネットワークインターフェースを前記仮想マシンが利用するか否かに基づいて、前記仮想マシンのデータ転送に伴うプロセッサ使用量を有する負荷情報を算出する、
処理をコンピュータに実行させるコンピュータ読み取り可能な負荷算出プログラム。
【０１７０】
（付記９）
管理対象の情報処理装置のプロセッサの使用量と、前記管理対象の情報処理装置が実行するハイパーバイザで生成された複数の仮想マシン毎の前記プロセッサの使用量とを含むプロセッサ使用情報を取得する第１の取得部と、
前記仮想マシンが利用する仮想ネットワークインターフェース毎のデータ転送量を含むデータ転送情報を取得する第２の取得部と、
前記プロセッサ使用情報と前記データ転送情報とに基づいて、前記複数の仮想ネットワークインターフェースのうち、前記ハイパーバイザを経由せずにデータ転送を行う第１の仮想ネットワークインターフェースを検出する検出部と、
前記検出した第１の仮想ネットワークインターフェースを前記仮想マシンが利用するか否かに基づいて、前記仮想マシンのデータ転送に伴うプロセッサ使用量を有する負荷情報を算出する算出部と、
を有する負荷算出装置。
【符号の説明】
【０１７１】
１、２、３：物理マシン
VM：仮想マシン
HV：ハイパーバイザ
４：管理装置
４＿１：管理プログラム（負荷算出プログラムを含む）
V_NIC：仮想NIC、仮想ネットワークインターフェース（カード）
NIC：物理NIC、SR_IOV物理NIC
【図１】
0006424632.tif 000002
【図２】
0006424632.tif 000003
【図３】
0006424632.tif 000004
【図４】
0006424632.tif 000005
【図５】
0006424632.tif 000006
【図６】
0006424632.tif 000007
【図７】
0006424632.tif 000008
【図８】
0006424632.tif 000009
【図９】
0006424632.tif 000010
【図１０】
0006424632.tif 000011
【図１１】
0006424632.tif 000012
【図１２】
0006424632.tif 000013
【図１３】
0006424632.tif 000014
【図１４】
0006424632.tif 000015
【図１５】
0006424632.tif 000016
【図１６】
0006424632.tif 000017
【図１７】
0006424632.tif 000018
【図１８】
0006424632.tif 000019
【図１９】
0006424632.tif 000020
【図２０】
0006424632.tif 000021
【図２１】
0006424632.tif 000022
【図２２】
0006424632.tif 000023
【図２３】
0006424632.tif 000024
【図２４】
0006424632.tif 000025
【図２５】
0006424632.tif 000026
【図２６】
0006424632.tif 000027
【図２７】
0006424632.tif 000028
【図２８】
0006424632.tif 000029
【図２９】
0006424632.tif 000030