特許第6424632号(P6424632)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特許6424632負荷算出方法、負荷算出プログラム及び負荷算出装置
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6424632
(24)【登録日】2018年11月2日
(45)【発行日】2018年11月21日
(54)【発明の名称】負荷算出方法、負荷算出プログラム及び負荷算出装置
(51)【国際特許分類】
   G06F 11/34 20060101AFI20181112BHJP
   G06F 9/50 20060101ALI20181112BHJP
   G06F 9/455 20060101ALI20181112BHJP
【FI】
   G06F11/34 109
   G06F9/50 120Z
   G06F9/50 150D
   G06F9/455 150
【請求項の数】8
【全頁数】34
(21)【出願番号】特願2015-1955(P2015-1955)
(22)【出願日】2015年1月8日
(65)【公開番号】特開2016-126677(P2016-126677A)
(43)【公開日】2016年7月11日
【審査請求日】2017年11月13日
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100094525
【弁理士】
【氏名又は名称】土井 健二
(74)【代理人】
【識別番号】100094514
【弁理士】
【氏名又は名称】林 恒徳
(72)【発明者】
【氏名】立石 直樹
(72)【発明者】
【氏名】▲高▼下 清志
(72)【発明者】
【氏名】戸子田 健祐
(72)【発明者】
【氏名】小谷 伊智郎
(72)【発明者】
【氏名】太田 智
(72)【発明者】
【氏名】中澤 孝昭
(72)【発明者】
【氏名】松田 聡
(72)【発明者】
【氏名】李 暉
(72)【発明者】
【氏名】神谷 和典
(72)【発明者】
【氏名】中村 冴子
(72)【発明者】
【氏名】宮川 幸久
(72)【発明者】
【氏名】鳥居 有希
(72)【発明者】
【氏名】米本 洋子
【審査官】 三坂 敏夫
(56)【参考文献】
【文献】 特開2009−123174(JP,A)
【文献】 特開2012−073660(JP,A)
【文献】 特開2014−235578(JP,A)
【文献】 米国特許出願公開第2013/0151685(US,A1)
【文献】 米国特許出願公開第2014/0258446(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/07
11/28−11/34
11/36
9/455
9/50
(57)【特許請求の範囲】
【請求項1】
管理対象の情報処理装置のプロセッサの使用量と、前記管理対象の情報処理装置が実行するハイパーバイザで生成された複数の仮想マシン毎の前記プロセッサの使用量とを含むプロセッサ使用情報を取得し、
前記仮想マシンが利用する仮想ネットワークインターフェース毎のデータ転送量を含むデータ転送情報を取得し、
前記プロセッサ使用情報と前記データ転送情報とに基づいて、前記複数の仮想ネットワークインターフェースのうち、前記ハイパーバイザを経由せずにデータ転送を行う第1の仮想ネットワークインターフェースを検出し、
前記検出した第1の仮想ネットワークインターフェースを前記仮想マシンが利用するか否かに基づいて、前記仮想マシンのデータ転送に伴うプロセッサ使用量を有する負荷情報を算出する、
処理をコンピュータが実行する負荷算出方法。
【請求項2】
前記第1の仮想ネットワークインターフェースを検出する処理では、
前記情報処理装置のプロセッサ使用量から前記仮想マシンのプロセッサ使用量の合計を減じたオーバーヘッド分のプロセッサ使用量と、前記仮想ネットワークインターフェースのデータ転送量との間に、第2の相関を有する仮想ネットワークインターフェースを、前記ハイパーバイザを経由するデータ転送を行う第2の仮想ネットワークインターフェースと判定し、
前記オーバーヘッド分のプロセッサ使用量と、前記仮想ネットワークインターフェースのデータ転送量との間に、前記第2の相関より小さい第1の相関を有する仮想ネットワークインターフェースを、前記第1の仮想ネットワークインターフェースと判定する、
請求項1に記載の負荷算出方法。
【請求項3】
前記処理は、さらに、
前記管理対象の情報処理装置のプロセッサ割込回数を有するプロセッサ割込回数情報を取得し、
前記プロセッサ割込回数情報と前記データ転送情報とに基づいて、前記複数の仮想ネットワークインターフェースのうち、前記ハイパーバイザを経由するデータ転送を行う第2の仮想ネットワークインターフェースであって、他の第2の仮想ネットワークインターフェースに優先してデータ転送制御される優先制御対象の第2の仮想ネットワークインターフェースを検出し、
前記負荷情報を算出する処理において、前記仮想マシンが前記検出した優先制御対象の第2の仮想ネットワークインターフェースを利用するか否かに基づいて、前記仮想マシンのデータ転送に伴うプロセッサ使用量を有する負荷情報を算出する、
請求項1に記載の負荷算出方法。
【請求項4】
前記優先制御対象の第2の仮想ネットワークインターフェースを検出する処理において、
前記プロセッサ割込回数と、前記仮想ネットワークインターフェースのデータ転送量との間に、第3の相関を有する仮想ネットワークインターフェースを、前記優先制御対象の第2の仮想ネットワークインターフェースと判定し、
前記プロセッサ割込回数と、前記仮想ネットワークインターフェースのデータ転送量との間に、前記第3の相関より小さい第4の相関を有する仮想ネットワークインターフェースを、非優先制御対象の第2の仮想ネットワークインターフェースと判定する、
請求項3に記載の負荷算出方法。
【請求項5】
前記負荷情報を算出する処理において、前記優先制御対象の第2の仮想ネットワークインターフェースを利用する仮想マシンの負荷を、非優先制御対象の第2の仮想ネットワークインターフェースを利用する仮想マシンのプロセッサ使用量よりも大きく算出する、
請求項3に記載の負荷算出方法。
【請求項6】
前記負荷情報を算出する処理において、前記情報処理装置のプロセッサ使用量から前記仮想マシンのプロセッサ使用量の合計を減じたオーバーヘッド分のプロセッサ使用量と、前記第2の仮想ネットワークインターフェースのデータ転送量との間の相関値の違いに基づいて、前記優先制御対象の第2の仮想ネットワークインターフェースを利用する仮想マシンのプロセッサ使用量と、前記非優先制御対象の第2の仮想ネットワークインターフェースを利用する仮想マシンのプロセッサ使用量との差を算出する、
請求項5に記載の負荷算出方法。
【請求項7】
管理対象の情報処理装置のプロセッサの使用量と、前記管理対象の情報処理装置が実行するハイパーバイザで生成された複数の仮想マシン毎の前記プロセッサの使用量とを含むプロセッサ使用情報を取得し、
前記仮想マシンが利用する仮想ネットワークインターフェース毎のデータ転送量を含むデータ転送情報を取得し、
前記プロセッサ使用情報と前記データ転送情報とに基づいて、前記複数の仮想ネットワークインターフェースのうち、前記ハイパーバイザを経由せずにデータ転送を行う第1の仮想ネットワークインターフェースを検出し、
前記検出した第1の仮想ネットワークインターフェースを前記仮想マシンが利用するか否かに基づいて、前記仮想マシンのデータ転送に伴うプロセッサ使用量を有する負荷情報を算出する、
処理をコンピュータに実行させるコンピュータ読み取り可能な負荷算出プログラム。
【請求項8】
管理対象の情報処理装置のプロセッサの使用量と、前記管理対象の情報処理装置が実行するハイパーバイザで生成された複数の仮想マシン毎の前記プロセッサの使用量とを含むプロセッサ使用情報を取得する第1の取得部と、
前記仮想マシンが利用する仮想ネットワークインターフェース毎のデータ転送量を含むデータ転送情報を取得する第2の取得部と、
前記プロセッサ使用情報と前記データ転送情報とに基づいて、前記複数の仮想ネットワークインターフェースのうち、前記ハイパーバイザを経由せずにデータ転送を行う第1の仮想ネットワークインターフェースを検出する検出部と、
前記検出した第1の仮想ネットワークインターフェースを前記仮想マシンが利用するか否かに基づいて、前記仮想マシンのデータ転送に伴うプロセッサ使用量を有する負荷情報を算出する算出部と、
を有する負荷算出装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は,負荷算出方法、負荷算出プログラム及び負荷算出装置に関する。
【背景技術】
【0002】
仮想化プログラムであるハイパーバイザにより物理マシン上に複数の仮想マシンを生成することが行われる。物理マシン上に生成した複数の仮想マシンを複数の利用者が利用することで、物理マシンを効率的に利用する。
【0003】
複数の仮想マシンを物理マシン上に生成する情報処理システムにおいて、物理マシンに仮想マシンを追加したり、ある物理マシン上に生成した仮想マシンを他の物理マシンに仮想マシンを再配置することが行われる。その場合、仮想マシンの動作による物理マシンの負荷、例えばCPU負荷(またはCPU使用量、プロセッサ負荷、プロセッサ使用量)を見積もることが必要になる。
【0004】
仮想マシンのCPU負荷は、仮想マシンの処理に伴う負荷とI/Oデータ転送に伴う負荷とを有する。I/Oデータ転送に伴うCPU負荷は、仮想マシンの仮想ネットワークインターフェース(以下仮想NIC:Network Interface Cardと称する。)と物理ネットワークインターフェース(以下物理NICと称する。)との間のハイパーバイザによる仮想スイッチの処理に基づく負荷である。このI/Oデータ転送に伴うCPU負荷は、通常、仮想マシンの仮想NICのI/Oデータ転送量に基づいて見積もることが行われる。
【0005】
仮想マシンの負荷の見積もりについては、以下の特許文献に記載がある。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2009−123174号公報
【特許文献2】特開2011−258098号公報
【特許文献3】特開2009−239374号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
近年において、ハイパーバイザの仮想スイッチの処理能力が飛躍的に向上したことに伴い、仮想マシンのI/Oデータ転送量が増大しCPU負荷が増大した。そのため、仮想マシンのI/Oデータ転送に伴うCPU負荷を考慮して仮想マシンのCPU負荷を見積もることが必要になってきた。
【0008】
しかしながら、仮想マシンは、ハイパーバイザを介することなく直接物理NICを介してデータ転送を行うことができるようになった。すなわち、ハイパーバイザが実行していた仮想スイッチの機能を有する物理NICであるSR−IOV(Single Root IO Virtualization)対応の物理NICを利用することで、仮想マシンの仮想NICは、ハイパーバイザの仮想スイッチを介することなく、SR−IOV対応物理NICと直接I/Oデータ転送を行う。このようなハイパーバイザを介さない仮想NICのCPU負荷は、ハイパーバイザの仮想スイッチを利用する仮想NICのCPU負荷とは区別して見積もらなければならない。
【0009】
また、複数の物理マシンそれぞれに異なるハイパーバイザが搭載された場合、仮想マシンの仮想NICのネットワーク設定を手動で管理することは多くの工数を必要とする。
【0010】
したがって、仮想マシンの仮想NICのネットワーク設定を低コストで取得して、ネットワーク設定に対応したCPU負荷を算出し、仮想マシンのCPU負荷を高精度に見積もることが必要になってきた。
【0011】
そこで,実施の形態の第1の側面の目的は,仮想マシンのプロセッサ負荷を高精度に見積もることができる負荷算出方法、負荷算出プログラム及び負荷算出装置を提供することにある。
【課題を解決するための手段】
【0012】
本実施の形態における第1の側面は,管理対象の情報処理装置のプロセッサの使用量と、前記管理対象の情報処理装置が実行するハイパーバイザで生成された複数の仮想マシン毎の前記プロセッサの使用量とを含むプロセッサ使用情報を取得し、
前記仮想マシンが利用する仮想ネットワークインターフェース毎のデータ転送量を含むデータ転送情報を取得し、
前記プロセッサ使用情報と前記データ転送情報とに基づいて、前記複数の仮想ネットワークインターフェースのうち、前記ハイパーバイザを経由せずにデータ転送を行う第1の仮想ネットワークインターフェースを検出し、
前記検出した第1の仮想ネットワークインターフェースを前記仮想マシンが利用するか否かに基づいて、前記仮想マシンのデータ転送に伴うプロセッサ使用量を有する負荷情報を算出する、
処理をコンピュータが実行する負荷算出方法である。
【発明の効果】
【0013】
第1の側面によれば,仮想マシンのCPU負荷を高精度に見積もることができる。
【図面の簡単な説明】
【0014】
図1】本実施の形態における情報処理システムの構成を示す図である。
図2図1の各物理マシン1、2、3の概略構成を示す図である。
図3】本実施の形態における物理マシンの仮想マシンVMの仮想NICと物理NICとの接続例を示す図である。
図4】本実施の形態における物理マシンとハイパーバイザの関係を示す図である。
図5】第1のネットワーク設定の仮想マシンが生成されている物理マシンPMに第2のネットワーク設定の仮想マシンが追加される例(例1)を示す図である。
図6図5の例における物理マシンのCPU負荷の見積もりを説明する図である。
図7】第2のネットワーク設定の仮想マシンが生成されている物理マシンPMに第1のネットワーク設定の仮想マシンが追加される例(例2)を示す図である。
図8】第2のネットワーク設定の仮想マシンが生成されている物理マシンPMに第1のネットワーク設定の仮想マシンが追加される例(例2)を示す図である。
図9】非優先制御の第2のネットワーク設定の仮想マシンが生成されている物理マシンPMに優先処理の第2のネットワーク設定の仮想マシンが追加される例(例3)を示す図である。
図10図9の例における物理マシンのCPU負荷の見積もりを説明する図である。
図11】例1、2、3における物理マシンのCPU負荷のオーバーヘッド分の変動を示す図である。
図12】本実施の形態における負荷算出プログラムの概略的な処理のフローチャート図である。
図13】ネットワーク設定の判定対象の仮想NICの検出処理S2のフローチャート図である。
図14】仮想NIC(V_NIC)のネットワーク設定の判定処理のフローチャート図である。
図15】第1のネットワーク設定の仮想NICを検出する処理の物理マシンと仮想マシンとの関係例を示す図である。
図16】第1のネットワーク設定の仮想NICを検出する処理のフローチャート図である。
図17】仮想NIC(V_NIC)の送信量の時系列データと、物理マシン及び仮想マシンのCPU負荷の時系列データの一例を示す図である。
図18】優先制御の第2のネットワーク設定と非優先制御の第2のネットワーク設定の仮想NICを検出する処理における物理マシンと仮想マシンとの関係例を示す図である。
図19】優先制御と非優先制御の第2のネットワーク設定の仮想NICを検出する処理のフローチャート図である。
図20】仮想NIC(V_NIC)の送信量の時系列データと、物理マシンのCPU割り込み回数の時系列データの一例を示す図である。
図21】優先制御と非優先制御の違いによる仮想NICのCPU負荷の違いを検出する処理での、物理マシンと仮想マシンとの関係例を示す図である。
図22】優先制御と非優先制御の違いによる仮想NICのCPU負荷の違いを検出する処理を示すフローチャート図である。
図23】構成情報データベース(DB)に含まれる物理マシン一覧テーブルの一例である。
図24】構成情報データベース(DB)に含まれる仮想マシンVM一覧テーブルの一例である。
図25】ネットワーク設定情報データベース(DB)に含まれるネットワーク設定テーブルの一例を示す図である。
図26】監視設定データベース(DB)に含まれるしきい値監視設定テーブルの一例を示す図である。
図27】構成情報データベース(DB)に含まれネットワークインターフェース(物理NICと仮想NIC(V_NIC))の一覧テーブルの一例である。
図28】性能情報データベース(DB)に含まれる仮想マシンの仮想NICの送信量(I/Oデータ転送量)テーブルと、物理マシン及び仮想マシンのCPU負荷(CPU使用量)テーブルの一例を示す図である。
図29】性能情報データベース(DB)に含まれる物理マシンのCPU割り込みのテーブルと、ネットワーク設定情報データベース(DB)の一例を示す図である。
【発明を実施するための形態】
【0015】
図1は、本実施の形態における情報処理システムの構成を示す図である。情報システムは、複数の仮想マシンVMをハイパーバイザHV上で実行する複数の物理マシン(またはVMホスト)1、2、3と、物理マシン及び仮想マシンを管理する管理装置4と、共有ストレージ20とを有する。情報システムは、多数の物理マシンが配備されたデータセンタ(またはサーバファシリティ)内に構築される。データセンタは、物理マシンなどのハードウエアリソースを利用者に提供することで、プライベートクラウドサービスまたはパブリッククラウドサービスを提供する。
【0016】
各物理マシン(またはホストマシン)1、2、3は、ハイパーバイザHVを実行して、複数の仮想マシンVMを起動し実行する。別の表現をすると、ハイパーバイザHVが仮想マシンVMを起動し実行する。共有ストレージ20は、仮想マシンVMのゲストOS(Operating System)やアプリケーションプログラムなどを有するイメージファイルを記憶する。仮想マシンVMは、共有ストレージ20内に格納されたイメージファイルのゲストOSとアプリケーションプログラムを、物理マシン1,2,3のメモリに展開し、メモリに展開したゲストOSとアプリケーションプログラムを実行し、所望のサービスシステムを構築する。
【0017】
管理装置4の管理プログラム4_1は、ハイパーバイザHVにコンフィグレーション情報に基づく仮想マシンを起動させ、必要に応じて仮想マシンを一時停止(ポーズ)及び再開(リジューム)させ、遮断させる。コンフィグレーション情報は、仮想マシンVMに割り当てるCPUコア数とメモリ容量の情報などを有する。
【0018】
また、管理装置4の管理プログラム4_1は、物理マシンや仮想マシンの構成情報と動作情報を収集し、必要に応じてある物理マシン上で動作中の仮想マシンを別の物理マシンに移行(マイグレーション)させる。また、管理プログラム4_1は、物理マシンに新たな仮想マシンを追加し、物理マシンから仮想マシンを削除する。すなわち、管理プログラム4_1は、物理マシンや仮想マシンの動作状態などを収集する性能情報収集部と、仮想マシンを移行して異なる物理マシンに配置し、また物理マシンに新たな仮想マシンを配置し、仮想マシンを削除する仮想マシン配置部とを有する。
【0019】
そして、本実施の形態では、管理プログラム4_1は、仮想マシンVMのCPU負荷を見積もる負荷算出プログラム4_3を有する。負荷算出プログラム4_3は、性能情報収集部が収集した動作情報に基づいて仮想マシンの仮想NICのネットワーク設定を判別し、判別したネットワーク設定に基づいて仮想マシンのCPU負荷を算出する。管理プログラム4_1は、算出した仮想マシンのCPU負荷に基づいて、仮想マシンの配置先を決定する。
【0020】
ここで、CPU負荷とは、例えばCPUの使用量である。CPUの使用量は、CPUを使用した単位時間当たりのクロック数である。なお、CPU使用率は、単位時間あたりのCPUのクロック数に対する単位時間当たりにCPUを使用したクロック数の割合である。CPUの負荷を使用量で算出することで、様々なクロック数のCPUを搭載する物理マシンに対し、仮想マシンVMのCPU負荷を見積もることができる。
【0021】
さらに、管理装置4のVM管理プログラム4_1は、仮想マシンで構築されたサービスシステムを運用する利用者端末6にポータルサイト4_2を提供する。利用者端末6は外部のネットワークEX_NWを介してポータルサイト4_2にアクセスし、サービスシステムの維持管理を行う。
【0022】
各物理マシン1、2、3と管理装置4と共有ストレージ20とは、管理ネットワークM_NWを介して通信可能にされる。情報処理システムの運用管理者端末7は、例えば管理ネットワークM_NWを介して管理装置4にアクセス可能である。また、利用者端末6は、ポータルサイト4_2を介して管理装置4にアクセスし、仮想マシンの新たな起動や遮断などを要求する。さらに、各仮想マシンVMは、VMネットワークVM_NWを介して互いに通信可能にされている。そして、仮想マシンVMは、外部のネットワークEX_NW(例えばインターネットやイントラネット)を介して、仮想マシンで構築されたサービスシステムにアクセスするサービスシステム利用者(図示せず)からアクセスされる。
【0023】
図1では、各仮想マシンVMに直接VMネットワークMV_NWが接続されるように記載されているが、実際には、仮想マシンVMは、物理マシン1、2、3のネットワークインターフェースを介してVMネットワークMV_NWに接続される。管理ネットワークM_NWも物理マシン1、2、3のネットワークインターフェースに接続される。
【0024】
図2は、図1の各物理マシン1、2、3の概略構成を示す図である。例えば、物理マシン1、2、3は、演算処理装置であるCPU10_0、10_1と、メモリであるRAM12と、ROM13と、物理ネットワークインターフェース(物理NIC)14と、入出力部15と、ハードディスクなどの大容量記憶装置16とを有する。そして、それらはバス18を介して接続される。演算処理装置である2つのCPU10_0,10_1は、例えば、それぞれ4個の演算処理部であるCPUコアCPU_COR#1−#3を有する。したがって、図2の物理マシンは、合計で8個の演算処理部であるCPUコアを有する。本実施の形態において、CPUとCPUコアの数は特にこの数に限定されない。
【0025】
管理装置4は、図2に示した物理マシンの構成と同様の構成を有する。管理装置2は、管理プログラム4_1を実行して、各物理マシンのハイパーバイザHVに仮想マシンVMの起動と遮断、一時中断と再開など実行させる。さらに、管理装置2は、管理プログラム4_1を実行して、物理マシンや仮想マシンの動作状態を監視する性能情報収集部と、仮想マシンのCPU負荷を算出する負荷算出部と、必要に応じて、仮想マシンをある物理マシンから別の物理マシンに再配置し、または新たな仮想マシンを物理マシンに生成する仮想マシン配置部とを構築する。
【0026】
物理マシン1、2、3の場合、大容量記憶装置16は、例えばOSやハイパーバイザHVなどを格納する。管理装置4の場合、大容量記憶装置16は、例えばOSと管理プログラム4_1などを記憶する。そして、大容量記憶装置16に格納されているOSやソフトウエアはメモリであるRAM12内に展開され、各CPUコアにより実行される。
【0027】
[仮想NICのネットワーク設定の違い]
図3は、本実施の形態における物理マシンの仮想マシンVMの仮想NICと物理NICとの接続例を示す図である。図3の例では、各仮想マシンVM_1〜VN_5がそれぞれ1個の仮想ネットワークインターフェース(仮想NIC)V_NICを有する。仮想マシンVM_1〜VM_3の仮想NIC(V_NIC1-V_NIC5)はいずれも、ハイパーバイザHVの仮想スイッチV_SWを介して物理NIC14_1とI/Oデータ転送を行う。一方、仮想マシンVM_4、VM_5の仮想NIC(V_NIC4,V_NIC5)は、ハイパーバイザHVの仮想スイッチV_SWを介することなく物理NIC14_2とI/Oデータ転送を行う。物理NIC14_2は、SR-IOV対応の物理NICであり、ハイパーバイザHVによる仮想スイッチの機能を内蔵する。
【0028】
仮想マシンVMは、単一または複数の仮想NICを有することができる。仮想NICにはそれぞれIPアドレスが割り当てられ、それぞれのIPアドレスに基づいてI/Oデータ転送を実行する。物理NIC14_1は1つの内部端子を有し、ハイパーバイザHVの仮想スイッチV_SWを介して仮想マシンの仮想NICとI/Oデータ転送を行う。また、物理NIC14_1は1つの外部端子を有し、外部のネットワークと接続される。但し、ハイパーバイザHVの仮想スイッチV_SWを利用することで、物理NIC14_1は、複数の仮想NICとI/Oデータ転送を行うことができる。
【0029】
ハイパーバイザHVの仮想スイッチV_SWは、通常、複数の仮想マシンの仮想NICから受信した送信パケットを通常制御用(非優先制御用)の送信キューに格納し、FIFOで送信パケットを物理NIC14_1に出力する。また、物理NIC14_1から受信した受信パケットを通常制御用の受信キューに格納し、FIFOで受信パケットを対応する仮想NICに出力する。
【0030】
したがって、物理NIC14_1にネットワーク設定されている仮想NICがデータ転送を実行すると、ハイパーバイザの仮想スイッチV_SWの処理が発生し、その分CPU負荷が発生する。
【0031】
一方、SR-IOV対応の物理NIC14_2は、複数の内部端子を有し、それぞれの内部端子が仮想NICとI/Oデータ転送を行う。SR-IOV対応の物理NIC14_2は、1つの外部端子を有し、それを介して外部のネットワークと接続される。物理NIC14_1とSR-IOV対応の物理NIC14_2と、仮想NICとを接続する線は、仮想的な信号線である。
【0032】
SR-IOV対応の物理NIC14_2にネットワーク設定されている仮想NICがデータ転送を実行すると、ハイパーバイザの仮想スイッチの処理が発生せず、仮想スイッチの処理に対応するCPU負荷は発生しない。
【0033】
さらに、ハイパーバイザHVの仮想スイッチV_SWは、通常制御用(非優先制御)の送信キューと優先制御用の送信キューとを有する。そして、仮想スイッチは、優先制御にネットワーク設定された仮想NICから受信した受信パケットを優先制御用の送信キューに格納し、その受信パケットを、通常制御用の送信キュー内の送信パケットに優先して物理NIC14_1に出力する。すなわち、通常制御用の送信キューにのみ送信パケットが格納されているときに優先制御用の送信キューに送信パケットが到着すると、仮想スイッチは、通常制御用の送信キューからの送信パケットの出力を停止し、優先制御用の送信キューの送信パケットを全て物理NIC14_1に出力する。このとき、CPU割込が発生し、OSはCPU割込処理を実行し、通常制御用の送信キューによる処理の状態をメモリに退避する。そして、OSは、優先制御用の送信キューの送信パケットの出力処理が完了後、通常制御用送信キューからの送信パケットの出力処理の状態をメモリから復帰し、通常制御用送信キューによる出力処理を再開する。
【0034】
したがって、同じ物理マシンの仮想マシンに、通常制御(非優先制御)にネットワーク設定された仮想NICと優先制御にネットワーク設定された仮想NICが混在すると、優先制御の仮想NICからの送信パケットを処理するために、CPU割り込み処理と送信キューの切り替え処理が発生する。その分、物理マシンにはCPU割り込みに対応するCPU負荷と、送信キュー切り替えに対応するCPU負荷とが発生する。さらに、通常制御と優先制御にネットワーク設定された仮想マシンの仮想NICが混在すると、優先制御のデータ転送量の増加に伴ってCPU割り込み回数が増大する。また、優先制御に設定された仮想NICによるデータ転送処理によるCPU負荷は、通常制御に設定された仮想NICによるデータ転送処理よるCPU負荷より、若干大きくなる。
【0035】
上記のように、仮想マシンの仮想NICのネットワーク設定は、ハイパーバイザを介さずにSR-IOV対応の物理NIC14_2とI/Oデータ転送をする第1のネットワーク設定と、ハイパーバイザを介して物理NIC14_1とI/Oデータ転送をする第2のネットワーク設定とがある。さらに、第2のネットワーク設定には、通常制御(非優先制御)のネットワーク設定と、優先制御のネットワーク設定とがある。本実施の形態では、負荷算出プログラムが、仮想NICについてこれらのネットワーク設定の違いを判別し、仮想マシンVMの仮想NICのネットワーク設定に基づくI/Oデータ転送に要するCPU負荷を算出し、仮想マシンVMのCPU負荷を算出する。
【0036】
図4は、本実施の形態における物理マシンとハイパーバイザの関係を示す図である。例えば、プライベートクラウドコンピューティングでは、様々な種類の物理マシンとハイパーバイザとが組み合わされたリソースに仮想マシンVMを生成することがある。その場合、各ハイパーバイザの種類が多岐にわたるため、仮想マシンの仮想NICのネットワーク設定を取得することは容易ではない。したがって、それぞれのハイパーバイザに対応した方法で、手動により各仮想マシンの仮想NICのネットワーク設定の情報を収集するしかない。そのため、仮想マシンの数が増大すると、各仮想マシンの最新のネットワーク設定を収集して管理することは容易ではない。
【0037】
そこで、本実施の形態では、負荷算出プログラムが、物理マシンのCPU負荷、仮想マシンのCPU負荷、物理マシンのCPU割り込み回数、仮想マシンの仮想NICのI/Oデータ転送量に基づいて、各仮想マシンの仮想NICのネットワーク設定を判定する。
【0038】
[判定する仮想マシンの仮想NICのネットワーク設定]
仮想マシンの仮想NICのI/Oデータ転送量に比例して物理マシンのCPU負荷が線形的に増減すると仮定すると、以下に説明するネットワーク設定の仮想NICの場合、I/Oデータ転送によるCPU負荷の見積もりが不正確になる。以下、次の3つのネットワーク設定の仮想NICのI/Oデータ転送によるCPU負荷について説明する。
【0039】
(1)ハイパーバイザを介さないでI/Oデータ転送をする第1のネットワーク設定。この設定の場合、仮想マシンの仮想NICは、SR_IOV物理NICと直接I/Oデータ転送する。
【0040】
(2)ハイパーバイザを介してI/Oデータ転送をする第2のネットワーク設定。この設定の場合、仮想マシンの仮想NICは、ハイパーバイザの仮想スイッチを介して非SR_IOV物理NICとI/Oデータ転送をする。
【0041】
(2−1)第2のネットワーク設定であって、仮想スイッチで優先制御されるネットワーク設定。仮想スイッチが優先制御を行うためにCPU割り込みが発生する。この設定を優先制御の第2のネットワーク設定と称する。
【0042】
(2−2)第2のネットワーク設定であって、仮想スイッチで非優先制御(通常制御)されるネットワーク設定。仮想スイッチで非優先制御されるので、CPU割り込みは発生しない。この設定を非優先制御の第2のネットワーク設定と称する。
【0043】
前述したとおり、仮想マシンは単数または複数の仮想NICを利用することができる。そして、ネットワーク設定は仮想NICに対して行われる。つまり、ネットワーク設定の判定は仮想NIC毎に行う必要がある。ただし、以下の例では、仮想マシンが単一の仮想NICを利用する場合に限定して説明する。したがって、以下の説明では、仮想マシンのネットワーク設定は、その仮想マシンが利用する単一の仮想NICのネットワーク設定を意味する。
【0044】
[例1]
図5は、第1のネットワーク設定の仮想マシンが生成されている物理マシンPMに第2のネットワーク設定の仮想マシンが追加される例(例1)を示す図である。左側では、物理マシンPMが仮想マシンVM1,VM2を生成し、仮想マシンVM1は第2のネットワーク設定がされ、ハイパーバイザHVを介して物理NICとI/Oデータ転送を行う。また、仮想マシンVM2は第1のネットワーク設定がされ、ハイパーバイザHVを介さず物理NIC(SR_IOV対応物理NIC)とI/Oデータ転送を行う。それに対して、右側では、物理マシンPMに、第2のネットワーク設定がされた仮想マシンVM3が追加される。このような場合、仮想マシンVM3の追加による物理マシンPMのCPU負荷の増大をどのように見積もるべきかについて説明する。
【0045】
図6は、図5の例における物理マシンのCPU負荷の見積もりを説明する図である。
【0046】
図6(A)は、I/Oデータ転送量に比例してCPU負荷が発生すると仮定した場合の物理マシンのCPU負荷の見積もりを示す。左側のグラフ図は図5の左側の物理マシンPMのCPU負荷の時系列データを、右側のグラフ図は図5の右側の物理マシンPMのCPU負荷の時系列データをそれぞれ示す。グラフ図では、横軸時刻t、縦軸CPU負荷であり、仮想マシンVM1, VM2のCPU負荷を重ねて示し、物理マシンのCPU負荷はそのまま示している。
【0047】
左側のグラフ図において、まず、仮想マシンVM1,VM2それぞれの処理量に基づいてCPU負荷が発生する。そして、上記の仮定によれば、仮想マシンVM1,VM2のI/Oデータ転送に伴うハイパーバイザの仮想スイッチの処理量に基づいてCPU負荷が発生する。したがって、物理マシンのCPU負荷から仮想マシンVM1,VM2のCPU負荷の合計を減じたCPU負荷のオーバーヘッド分OH1が、仮想マシンVM1,VM2のI/Oデータ転送に伴うハイパーバイザの処理に対応する。
【0048】
そのため、右側のグラフ図では、仮想マシン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のデータ量) (1)
【0049】
したがって、上記の仮定により、仮想マシンVM3追加後の物理マシンPMのCPU負荷の増加量は、仮想マシンVM3の処理によるCPU負荷と、OH1*(VM3のデータ量)/(VM1+VM2のデータ量)と見積もられる。
【0050】
しかしながら、図5に示されるとおり、仮想マシンVM3が追加される前の物理マシンPMには、ハイパーバイザを介するI/Oデータ転送の第2のネットワーク設定の仮想マシンVM1と、ハイパーバイザを介さないI/Oデータ転送の第1のネットワーク転送の仮想マシンVM2とが生成されている。したがって、図6(A)の左側のCPU負荷のオーバーヘッド分OH1には仮想マシンVM2のI/Oデータ転送によるCPU負荷は含まれていない。
【0051】
図6(B)は、実際の物理マシンのCPU負荷の見積もりを示す。図6(B)の左側のグラフ図では、物理マシンPMのCPU負荷のオーバーヘッド分OH3は、仮想マシンVM1のI/Oデータ転送に伴うハイパーバイザの仮想スイッチ処理によるCPU負荷だけを含み、仮想マシンVM2のそれは含まない。そして、右側のグラフ図に示した仮想マシンVM3を追加した後の物理マシンPMのCPU負荷のオーバーヘッド分OH4は、仮想マシンVM1とVM3のI/Oデータ転送に伴う仮想スイッチ処理によるCPU負荷である。したがって、CPU負荷のオーバーヘッド分OH4は、以下のように増加すると推定される。
OH4=OH3*(VM1+VM3のデータ量)/(VM1のデータ量) (2)
【0052】
つまり、物理マシンの実際のCPU負荷の増加分は、仮想マシンVM3の処理に対するCPU負荷と、OH1*(VM3のデータ量/VM1のデータ量)とになる。結局、図6(A)の場合のCPU負荷の増加分は、図6(B)での実際のCPU負荷の増加分より少ない。物理マシンのCPU負荷の増加分の予測が少ないと、仮想マシンVM3追加後の物理マシンのCPU使用率が100%を超えることがあり、仮想マシンVM1-VM3の処理に遅れが生じることがある。
【0053】
[例2]
図7は、第2のネットワーク設定の仮想マシンが生成されている物理マシンPMに第1のネットワーク設定の仮想マシンが追加される例(例2)を示す図である。左側では、物理マシンPMが仮想マシンVM1,VM2を生成し、仮想マシンVM1, VM2は第2のネットワーク設定がされ、ハイパーバイザHVを介して物理NICとI/Oデータ転送を行う。それに対して、右側では、物理マシンPMに第1のネットワーク設定がされた仮想マシンVM3が追加される。このような場合、物理マシンPMのCPU負荷の増大をどのように見積もるべきかについて説明する。
【0054】
図8は、図7の例における物理マシンのCPU負荷の見積もりを説明する図である。
【0055】
図8(A)は、I/Oデータ転送量に比例してCPU負荷が発生すると仮定した場合の物理マシンのCPU負荷の見積もりを示す。左側のグラフ図は図7の左側の物理マシンPMのCPU負荷の時系列データを、右側のグラフ図は図7の右側の物理マシンPMの時系列データをそれぞれ示す。これらのグラフ図でも、横軸時刻t、縦軸CPU負荷であり、仮想マシンVM1, VM2のCPU負荷を重ねて示し、物理マシンのCPU負荷はそのまま示している。
【0056】
左側のグラフ図において、まず、仮想マシンVM1,VM2それぞれの処理量に基づいてCPU負荷が発生する。そして、物理マシンのCPU負荷から仮想マシンVM1,VM2のCPU負荷の合計を減じたCPU負荷のオーバーヘッド分OH21が、仮想マシンVM1,VM2のI/Oデータ転送に伴うハイパーバイザの処理に対応する。
【0057】
右側のグラフ図では、仮想マシン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のデータ量) (3)
【0058】
したがって、上記の仮定により、仮想マシンVM3追加後の物理マシンPMのCPU負荷の増加量は、仮想マシンVM3の処理によるCPU負荷と、OH21*(VM3のデータ量)/(VM1+VM2のデータ量)と見積もられる。
【0059】
しかしながら、図7に示されるとおり、仮想マシンVM3が追加される前の物理マシンPMには、ハイパーバイザを介するI/Oデータ転送の第2のネットワーク設定の仮想マシンVM1,VM2が生成されている。そして、仮想マシンVM3が追加された後の物理マシンPMには、ハイパーバイザを介さないI/Oデータ転送の第1のネットワーク転送の仮想マシンVM3が新たに生成されている。したがって、図8(A)の右側のCPU負荷のオーバーヘッド分OH22には仮想マシンVM3のI/Oデータ転送によるCPU負荷は含まれていないはずである。
【0060】
図8(B)は、実際の物理マシンのCPU負荷の見積もりを示す。図8(B)の左側のグラフ図では、物理マシンPMのCPU負荷のオーバーヘッド分OH23は、仮想マシンVM1,VM2のI/Oデータ転送に伴うハイパーバイザの仮想スイッチ処理によるCPU負荷を含む。そして、右側のグラフ図に示した仮想マシンVM3を追加した後の物理マシンPMのCPU負荷のオーバーヘッド分OH24は、仮想マシンVM1,VM2のI/Oデータ転送に伴う仮想スイッチ処理によるCPU負荷のままである。追加した仮想マシンVM3によるCPU負荷の増加は発生しない。したがって、CPU負荷のオーバーヘッド分OH24は、変動しないと推定される。
【0061】
つまり、物理マシンの実際のCPU負荷の増加分は、仮想マシンVM3の処理に対するCPU負荷だけになり、仮想マシンVM3によるI/Oデータ転送によるCPU負荷は発生しない。結局、図8(A)の場合のCPU負荷の増加分は、図8(B)での実際のCPU負荷の増加分より多い。そのため、図8(A)によるCPU負荷の見積りでは、仮想マシンVM3を追加した後の物理マシンPMにはCPU処理能力に余裕が発生し、その分が余剰のハードウエア資源となる。余剰のハードウエア資源は、仮想マシンVMの集約率を低下させ、物理マシンの台数が不必要に増大させる。
【0062】
[例3]
図9は、非優先制御の第2のネットワーク設定の仮想マシンが生成されている物理マシンPMに優先処理の第2のネットワーク設定の仮想マシンが追加される例(例3)を示す図である。左側では、物理マシンPMが仮想マシンVM1,VM2を生成し、仮想マシンVM1, VM2は非優先制御の第2のネットワーク設定がされ、ハイパーバイザHVを介して物理NICとI/Oデータ転送を行う。それに対して、右側では、物理マシンPMに優先制御の第2のネットワーク設定がされた仮想マシンVM3が追加される。このような場合、物理マシンPMのCPU負荷の増大をどのように見積もるべきかについて説明する。
【0063】
図10は、図9の例における物理マシンのCPU負荷の見積もりを説明する図である。
【0064】
図10(A)は、I/Oデータ転送量に比例してCPU負荷が発生すると仮定した場合の物理マシンのCPU負荷の見積もりを示す。左側のグラフ図は図9の左側の物理マシンPMのCPU負荷の時系列データを、右側のグラフ図は図9の右側の物理マシンPMのCPU負荷の時系列データをそれぞれ示す。これらのグラフ図でも、横軸時刻t、縦軸CPU負荷であり、仮想マシンVM1, VM2のCPU負荷を重ねて示し、物理マシンのCPU負荷はそのまま示している。
【0065】
左側のグラフ図において、まず、仮想マシンVM1,VM2それぞれの処理量に基づいてCPU負荷が発生する。そして、物理マシンのCPU負荷から仮想マシンVM1,VM2のCPU負荷の合計を減じたCPU負荷OH31が、仮想マシンVM1,VM2のI/Oデータ転送に伴うハイパーバイザの処理(非優先制御)に対応する。
【0066】
右側のグラフ図では、仮想マシン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のデータ量) (4)
【0067】
したがって、上記の仮定により、仮想マシンVM3追加後の物理マシンPMのCPU負荷の増加量は、仮想マシンVM3の処理によるCPU負荷と、OH31*(VM3のデータ量)/(VM1+VM2のデータ量)と見積もられる。
【0068】
しかしながら、図9に示されるとおり、仮想マシンVM3が追加される前の物理マシンPMには、ハイパーバイザを介するI/Oデータ転送の非優先制御の第2のネットワーク設定の仮想マシンVM1,VM2が生成されている。そして、仮想マシンVM3が追加された後の物理マシンPMには、ハイパーバイザを介するI/Oデータ転送の優先制御の第2のネットワーク転送の仮想マシンVM3が新たに生成されている。したがって、図10(A)の右側のCPU負荷のオーバーヘッド分OH32には、仮想マシンVM3のハイパーバイザの優先制御を介するI/Oデータ転送によるCPU負荷が含まれていなければならない。そして、優先制御の場合のCPU負荷は、通常制御(非優先制御)の場合のCPU負荷より、大きい。
【0069】
図10(B)は、実際の物理マシンのCPU負荷の見積もりを示す。図10(B)の左側のグラフ図では、物理マシンPMのCPU負荷のオーバーヘッド分OH33は、仮想マシンVM1,VM2のI/Oデータ転送に伴うハイパーバイザの仮想スイッチ処理(非優先制御)によるCPU負荷を含む。そして、右側のグラフ図に示した仮想マシンVM3を追加した後の物理マシンPMのCPU負荷のオーバーヘッド分OH34は、仮想マシンVM1,VM2のI/Oデータ転送に伴う仮想スイッチ処理(非優先制御)によるCPU負荷と、仮想マシンVM3の仮想スイッチ処理(優先制御)によるCPU負荷が含まれる。そして、非優先制御の第2のネットワーク設定と優先制御の第2のネットワーク設定の仮想マシンが混在すると、優先制御に伴うCPU割り込みの処理と、通常制御用(非優先制御用)の送信キューと優先制御用の送信キューとを切替える処理とが追加的に発生する。したがって、仮想マシンVM3の追加によるCPU負荷のオーバーヘッド分は、仮想マシンVM1,VM2によるCPU負荷のオーバーヘッド分より大きい。
【0070】
つまり、仮想マシンVM3を追加したことで、仮想マシンによるI/Oデータ転送によるCPU負荷のオーバーヘッド分OH34は、仮想マシンVM3を追加する前のCPU負荷OH32に対し、以下のように増加すると推定される。
OH34=OH33*(VM1+VM2+VM3のデータ量+α)/(VM1+VM2のデータ量) (5)
【0071】
上記のとおり、物理マシンの実際のCPU負荷の増加分は、仮想マシンVM3の処理に対するCPU負荷と、仮想マシンVM3のI/Oデータ転送に伴う仮想スイッチの優先制御の処理に対するCPU負荷になる。結局、図10(A)の場合のCPU負荷の増加分は、図10(B)での実際のCPU負荷の増加分より少ない。そのため、前述の仮定によりCPU負荷を見積もると、仮想マシンVM3を追加した後の物理マシンPMは、CPU負荷率が100%を超える場合があり、仮想マシンの処理が遅くなる場合がある。
【0072】
[例1、2、3のまとめ]
図11は、例1、2、3における物理マシンのCPU負荷のオーバーヘッド分の変動を示す図である。図11中のグラフ図は、横軸が物理マシンBの全ての仮想マシンVMのI/Oデータ転送量であり、縦軸が物理マシンのCPU負荷から仮想マシンVMの処理に要するCPU負荷を除いたCPU負荷のオーバーヘッド分OH(仮想マシンVMのI/Oデータ転送に要するCPU負荷)である。
【0073】
図11に示されるとおり、物理マシンBに物理マシンAで生成されていた仮想マシンVM3が再配置されているとする。つまり、例1、2、3と同様に、物理マシンBに仮想マシンVM3が追加された場合の物理マシンのCPU負荷のオーバーヘッド分OHの変動を示す。
【0074】
例1のように、追加される仮想マシンVM3が非優先制御の第2のネットワーク設定の場合、再配置後の物理マシンBにおけるI/Oデータ転送に伴うCPU負荷のオーバーヘッド分OHの増加は、ほぼ仮想マシンVM3のI/Oデータ転送量に比例する増加分である。
【0075】
また、例2のように、追加される仮想マシンVM3がハイパーバイザの仮想スイッチを介さない第1のネットワーク設定の場合、再配置後の物理マシンBにおけるI/Oデータ転送に伴うCPU負荷のオーバーヘッド分OHの増加は、発生しない。
【0076】
そして、例3のように、非優先制御の第2のネットワーク設定の仮想マシンが生成された物理マシンに対し、追加される仮想マシンVM3が優先制御の第2のネットワーク設定の場合、再配置後の物理マシンBにおけるI/Oデータ転送に伴うCPU負荷のオーバーヘッド分OHの増加は、仮想マシンVM3のI/Oデータ転送量に比例する増加分にプラスα追加される。優先制御の場合のCPU負荷は、非優先制御の場合よりも若干(プラスα)大きいからである。
【0077】
[本実施の形態における負荷算出プログラム]
図12は、本実施の形態における負荷算出プログラムの概略的な処理のフローチャート図である。負荷算出プログラム4_3は、図1の管理装置4が実行する管理プログラム4_1に含まれる。
【0078】
[性能情報収集処理S1]
管理装置4は、負荷算出プログラム4_3を実行することで、物理マシン及び仮想マシンの性能情報を収集する性能情報収集処理S1を実行する。性能情報収集処理S1では、管理装置4が、運用管理対象の物理マシンPMと仮想マシンVMについて時系列の性能情報を定期的に(例えば10分毎に)収集する。また、性能情報収集処理S1では、管理装置4が、運用管理対象の物理マシンPMと仮想マシンVMについて定期的に構成情報を収集してもよい。管理装置4が、定期的に構成情報を収集せずに、物理マシンPMが配備されるたびに、及び物理マシンが仮想マシンVMを起動、生成するたびに、それぞれの構成情報をデータベース内に格納するようになっていてもよい。
【0079】
構成情報の例は、以下のとおりである。
(1)物理マシンの物理NICとそのIPアドレス
(2)仮想マシンの仮想NICとそのIPアドレス
【0080】
性能情報の例は、以下のとおりである。
(1)物理マシンのCPU負荷(例えばCPU使用量、使用率)と、CPU割り込み回数、物理NICごとの送信バイト数及び受信バイト数(I/Oデータ転送量)
(2)仮想マシンのCPU負荷(例えばCPU使用量、使用率)と、仮想NICごとの送信バイト数及び受信バイト数(I/Oデータ転送量)
【0081】
ここで、上記の構成情報と性能情報について一例を示して説明する。また、構成情報と性能情報以外のデータベースのテーブルについても説明する。
【0082】
図23は、構成情報データベース(DB)に含まれる物理マシン一覧テーブルの一例である。図23の例では、管理IDとそれに対応する物理マシンA,B,Cの物理マシン名(HostA- HostC)とが対応付けられている。
【0083】
図24は、構成情報データベース(DB)に含まれる仮想マシンVM一覧テーブルの一例である。図24の例では、管理IDとそれに対応する仮想マシンVM1-VM12の仮想マシン名(VM1-VM12)と物理マシン名(HostA-HostC)とが対応付けられている。
【0084】
図25は、ネットワーク設定情報データベース(DB)に含まれるネットワーク設定テーブルの一例を示す図である。図25では、仮想マシンVM1,VM2の仮想NICとネットワーク設定及びネットワーク設定判定日時とが対応付けられている。このテーブルを参照することで、どの仮想マシンの仮想NICがネットワーク設定を判別済みか未判別かを知ることができる。
【0085】
図26は、監視設定データベース(DB)に含まれるしきい値監視設定テーブルの一例を示す図である。図26では、物理マシンHostA-HostC及び仮想マシンVM1-VM3とそれぞれのしきい値監視設定日時とが対応付けられている。このテーブルを参照することで、各物理マシン及び仮想マシンの状態を監視するためのしきい値設定日時を知ることができる。
【0086】
図27は、構成情報データベース(DB)に含まれネットワークインターフェース(物理NICと仮想NIC(V_NIC))の一覧テーブルの一例である。図27の例では、物理マシンHostの物理NIC名とそのIPアドレス及び仮想マシンVMの仮想NIC名とそのIPアドレスとがそれぞれ対応付けられている。物理マシンの物理NICと仮想マシンの仮想NICとが同じ名前であっても、それぞれが属する物理マシン及び仮想マシンが異なれば、異なるNICとして認識される。
【0087】
図28は、性能情報データベース(DB)に含まれる仮想マシンの仮想NICの送信量(I/Oデータ転送量)テーブルと、物理マシン及び仮想マシンのCPU負荷(CPU使用量)テーブルの一例を示す図である。仮想NICの送信量テーブルには、仮想マシンVM1,VM2の仮想NICの単位時間当たりの送信量が10分毎に時系列に格納されている。同様に、物理マシン及び仮想マシンのCPU負荷テーブルには、物理マシンHostA-HostC及び仮想マシンVM1-VM3それぞれの単位時間当たりのCPU負荷(CPU使用量)が時系列に格納されている。ただし、異なる時刻のCPU使用量は省略されている。
【0088】
図29は、性能情報データベース(DB)に含まれる物理マシンのCPU割り込みのテーブルと、ネットワーク設定情報データベース(DB)の一例を示す図である。物理マシンのCPU割り込みテーブルには、物理マシンHostA-HostCのある時刻における単位時間当たりのCPU割り込み回数が格納されている。ただし、異なる時刻のCPU割り込み回数は省略されている。また、ネットワーク設定情報DBには、物理マシンHostA-HostCにおいて、ハイパーバイザが優先制御する場合のCPU負荷の非優先制御する場合のCPU負荷に対する比率(優先制御のCPU負荷/非優先制御のCPU負荷)が示されている。
【0089】
上記の図23図29のデータベースのうち、図12の性能情報収集処理S1に関係するデータベースは、図23図24図27図28及び図29の物理マシンのCPU割り込みのテーブルである。それ以外のデータベースについては、後述する処理で参照される。
【0090】
図12に戻り、性能情報収集処理S1では、物理マシンと仮想マシンそれぞれのCPU使用量と、物理マシンのCPU割り込み回数と、各仮想マシンが利用する仮想NIC(V_NIC)のI/Oデータ転送量を、時系列に収集する。物理マシンと仮想マシンそれぞれのCPU使用量は、OSを介して、CPUチップ内のカウンタ値から取得することができる。または、仮想マシンのCPU使用量は、例えばハイパーバイザからまたは仮想マシンが実行する監視プログラムから取得することができる。また、物理マシンのCPU割り込み回数も、OSを介して、CPUチップ内のカウンタ値から取得できる。さらに、仮想NICごとのI/Oデータ転送量は、例えばハイパーバイザからまたは仮想マシンが実行する監視プログラムから取得することができる。
【0091】
図12において、次に、負荷算出プログラム4_3は、ネットワーク設定を判定する対象の仮想NIC(V_NIC)の検出処理を行う(S2)。仮想マシンが利用する仮想NICのネットワーク設定は、時々刻々と変更される場合がある。そのため、仮想NICのネットワーク設定が変更されたことを何らかの手段で検出し、ネットワーク設定が変更された仮想NICを新たに判定対象にする。詳細は後述する。
【0092】
そして、負荷算出プログラム4_3は、判定対象の仮想NIC(V_NIC)のネットワーク設定の判定処理を行う(S3)。この仮想NICのネットワーク設定の判定は、前述したとおり、ハイパーバイザを介さないで物理NIC(SR_IOV物理NIC)とI/Oデータ転送する第1のネットワーク設定と、ハイパーバイザを介して優先制御で物理NICとI/Oデータ転送する優先制御の第2のネットワーク設定と、ハイパーバイザを介して非優先制御で物理NICとI/Oデータ転送する非優先制御の第2ネットワーク設定とを区別して判定する。具体的には後述する。
【0093】
最後に、判定した仮想NICのネットワーク設定に基づいて、各仮想NICを利用する仮想マシンVMのCPU負荷を算出し、その仮想マシンを起動、生成、または削除する物理マシンのCPU負荷を算出する(S4)。
【0094】
以下、負荷算出プログラム4_3のネットワーク設定判定対象の仮想NICの検出処理S2と仮想NICのネットワーク設定判定処理S3と仮想マシンの負荷算出処理S4について、それぞれ説明する。
【0095】
[ネットワーク設定判定対象の仮想NICの検出処理S2]
図13は、ネットワーク設定の判定対象の仮想NICの検出処理S2のフローチャート図である。図13のフローチャート図によれば、まず、負荷算出プログラム4_3は、構成情報DBから物理マシン一覧と、各物理マシン上の仮想マシンVM一覧を取得する(S21)。すなわち、図23図24の物理マイン一覧テーブルとVM一覧テーブルを取得する。そして、各仮想マシンVMごとに以下の処理を繰り返し実行する(S22-S27)。
【0096】
まず、負荷算出プログラムは、図25のネットワーク設定テーブルを参照して、判定対象の仮想マシンの仮想NICについてネットワーク設定が存在するか否かをチェックする(S23)。存在しない場合は、その仮想NICは判定対象となる(S23のNO)。存在する場合(S23のYES)は、負荷算出プログラムは、その判定済みの仮想NICのネットワーク設定がその後変更されているか否かをチェックする(S24)。判定済みの仮想NICのネットワーク設定が変更されている可能性がある場合は(S24のYES)、その仮想NICは判定対象となる。
【0097】
ここで、判定済みの仮想NICのネットワーク設定が変更されている可能性があるか否かの判定は、次のようにして行われる。データセンタの運用管理者端末7から仮想マシンVMの仮想NICのネットワーク設定が変更された場合、変更の事実が管理装置4に通知されていれば、そのネットワーク設定の変更日時が、ネットワーク設定テーブル(図25)のネットワーク設定判定日時より後であれば、その仮想NICは判定対象となる。
【0098】
ただし、仮想NICのネットワーク設定の変更の事実が管理装置4に通知されない場合がある。その場合は、通常、運用管理者は仮想NICのネットワーク設定を変更すると、その変更結果の状態を監視するために、仮想マシンVMまたは物理マシンのある監視対象のしきい値を変更する。このしきい値の設定日時を利用する。すなわち、負荷算出プログラムは、しきい値監視設定テーブル(図26)のしきい値監視設定日時が、ネットワーク設定テーブル(図25)のネットワーク設定判定日時より後であれば、その仮想NICを判定対象とする。
【0099】
次に、負荷算出プログラムは、仮想NICのネットワーク設定を判定するために必要なデータが存在するか否かをチェックする(S25)。仮想NICのネットワーク設定を判定するために必要なデータが存在する条件は、次のとおりである。
【0100】
(1)判定対象の仮想NICの仮想マシンを生成する同じ物理マシン上の仮想マシンの各仮想NICの送信量(I/Oデータ転送量)の時系列データ。ただし、各仮想NICの送信量(I/Oデータ転送量)の比率が互いに異なるサンプルが、必要なサンプル数存在すること。必要なサンプル数は仮想NICの数以上(少なくとも等しい数)である。後述する連立方程式を成立させるためである。
【0101】
(2)判定対象の仮想NICの仮想マシンを生成する同じ物理マシン上の全ての仮想マシンとその物理マシンのCPU負荷(CPU使用量)の時系列データ。
【0102】
(3)判定対象の仮想NICの仮想マシンの物理マシンのCPU割り込み回数の時系列データ。
【0103】
さらに、(1)について、サンプル間で、物理マシン上の全ての仮想マシンの仮想NICの送信量(I/Oデータ転送量)の合計が等しいことが、望ましい。その理由は、I/Oデータ転送量に応じて送信キューでパケットのあふれが発生すると、仮想マシンVMとハイパーバイザHV間で所定のやりとりが発生し、CPU負荷のオーバーヘッド分が発生するからである。送信キューのパケットあふれで要するCPUのオーバーヘッド負荷をサンプル間で同等にしておくことが、高精度の判定につながるからである。
【0104】
上記の仮想NICのネットワーク設定を判定するために必要なデータが存在する条件については、後で再度説明する。
【0105】
図13に戻り、ネットワーク設定の判定に必要なデータが存在している場合(S25のYES)、負荷算出プログラムは、その仮想マシンVMの仮想NICをネットワーク設定の判定対象にする(S26)。上記の処理が、全仮想マシンVMについて繰り返される(S22-S27)。
【0106】
[仮想NICのネットワーク設定判定処理S3]
図14は、仮想NIC(V_NIC)のネットワーク設定の判定処理のフローチャート図である。仮想NICのネットワーク設定の判定処理は、概略すると次の通りである。まず、負荷算出プログラムは、同じ物理マシン上に生成されている仮想マシンの仮想NICのうち、ハイパーバイザを介さないでI/Oデータ転送する設定(第1のネットワーク設定)の仮想NIC(V_NIC)を検出する(S31)。この検出処理は、各仮想NICのI/Oデータ転送量と、物理マシンのCPU負荷(CPU使用量)から全仮想マシンのCPU負荷(CPU使用量)を減じた物理マシンのCPU負荷(CPU使用量)のオーバーヘッド分との相関性に基づいて行われる。相関性のない仮想NICが第1のネットワーク設定と判定される。相関性のある仮想NICが第2のネットワーク設定と判定される。
【0107】
次に、負荷算出プログラムは、同じ物理マシン上に生成されている仮想マシンの仮想NICのうち、ハイパーバイザを介して且つ優先制御でI/Oデータ転送する設定(優先制御の第2のネットワーク設定)の仮想NIC(V_NIC)を検出する(S32)。この検出処理は、第1のネットワーク設定の仮想NICを除いて、第2のネットワーク設定の各仮想NICのI/Oデータ転送量と、物理マシンのCPU割り込み回数との相関性に基づいて行われる。相関性が大きい仮想NICが優先制御の第2のネットワーク設定と判定される。
【0108】
さらに、負荷算出プログラムは、上記の工程S32で、優先制御の第2のネットワーク設定の仮想NICの検出と同時に、非優先制御の第2のネットワーク設定の仮想NICを検出する(S33)。この検出処理は、上記の相関性が低い仮想NICが非優先制御の第2のネットワーク設定と判定される。
【0109】
最後に、負荷算出プログラムは、優先制御と非優先制御の違いによる仮想NICのCPU負荷(CPU使用量)の違いを検出する(S34)。この違いに基づいて、優先制御の第2のネットワーク設定の仮想NICのCPU負荷の、非優先制御の第2のネットワーク設定の仮想NICのCPU負荷のCPU負荷に対する比率を検出する。この比率が、優先制御のCPU負荷と非優先制御のCPU負荷の違いを示す。
【0110】
以下、上記の処理S31, S32/S33, S34について詳述する。
【0111】
[ハイパーバイザを介さないでI/Oデータ転送する設定(第1のネットワーク設定)の仮想NIC(V_NIC)を検出する処理S31]
図15は、第1のネットワーク設定の仮想NICを検出する処理の物理マシンと仮想マシンとの関係例を示す図である。図15の物理マシン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データ転送を行う第2のネットワーク設定に設定されている。さらに、仮想マシンVM3の仮想NIC(V_NIC3)はハイパーバイザを介さないでI/Oデータ転送を行う第1のネットワーク設定に設定されている。
【0112】
それに伴い、仮想NIC(V_NIC1, V_NIC2)は物理NIC14_1とハイパーバイザを介してI/Oデータ転送を行い、仮想NIC(V_NIC3)はSR_IOV対応物理NIC14_2とハイパーバイザを介さずにI/Oデータ転送を行う。
【0113】
図16は、第1のネットワーク設定の仮想NICを検出する処理のフローチャート図である。まず、負荷算出プログラムは、構成情報データベース(DB)から、判定対象の仮想マシンVMと同じ物理マシンPM上の全ての仮想マシンVMの仮想NIC(V_NIC)の一覧を取得する(S311)。具体的には、図23図24図27のテーブルを取得する。
【0114】
次に、負荷算出プログラムは、性能情報DBから、判定対象の仮想マシンVMと同じ物理マシンPM上の全ての仮想マシンの仮想NIC(V_NIC)の送信量(I/Oデータ転送量)の時系列データを取得する(S312)。具体的には、図28の上側のV_NICの送信量テーブルを取得する。
【0115】
そして、負荷算出プログラムは、仮想NIC(V_NIC)の送信量の時系列データから、物理マシンPM内の全ての仮想NIC(V_NIC)の送信量の総和が同じである複数の時刻を検出する。必ずしも総和が同じである必要はないが、同じであれば精度が上がる。さらに、負荷算出プログラムは、各仮想NIC(V_NIC)の送信量の割合の組合せが互いに異なる複数の時刻を検出する。そして、2つの条件を満たす時刻を、配列tに格納する(S313)。この配列データは、後述する連立方程式の各要素のデータとなる。
【0116】
図17は、仮想NIC(V_NIC)の送信量の時系列データと、物理マシン及び仮想マシンのCPU負荷の時系列データの一例を示す図である。図17の上のグラフ図は、横軸を時刻t、縦軸をV_NICの送信量とし、図15の物理マシンPM内の全ての仮想NIC(V_NIC1, V_NIC2, V_NIC3)の送信量(I/Oデータ転送量)を示す。このグラフ図は、3つの仮想NICの送信量を加算して示している。そして、上記の処理S313では、3つの仮想NICの送信量の合計がほぼ等しい時刻であり、各仮想NICの送信量の割合が異なる時刻t1,t2,t3が選択され、その時刻が配列tに格納される。時刻の数はサンプル数に対応するので、時刻の数は少なくとも全仮想NICの数あればよい。
【0117】
上記のサンプルとなる時刻は、3つの仮想NICの送信量の総和が同じである時刻が望ましい。送信量が増大するにしたがって受信キューがあふれてCPU負荷が発生するので、そのCPU負荷を3つのサンプル時刻で同等にすることで、検出精度を高めるからである。また、サンプルとなる時刻は、サンプル間で3つの仮想NICの送信量の割合が異なることが必要になる。後述する連立方程式が解けることが必要だからである。
【0118】
次に、負荷算出プログラムは、性能情報DBから、時刻t(t1,t2,t3)の物理マシンPM及び物理マシンPM上の仮想マシンVM1、VM2、VM3のCPU負荷(CPU使用量)を取得する(S314)。具体的には図28の下側のマシンのCPU負荷テーブルから、時刻t1,t2,t3のCUP負荷を取得する。さらに、負荷算出プログラムは、取得した物理マシンPMのCPU負荷(CPU使用量)から全仮想マシンVM1,VM2,VM3のCPU負荷(CPU使用量)を減じたCPU負荷(CPU使用量)のオーバーヘッド分OHを、配列t_cpuに格納する(S314)。
【0119】
図17の下のグラフ図は、横軸を時刻t、縦軸を物理マシン及び仮想マシンのCPU負荷(CPU使用量)として、図15の物理マシンPMとその中の全ての仮想マシンVM1,VM2,VM3それぞれのCPU負荷を示す。このグラフ図も、3つの仮想マシンVM1-VM3のCPU負荷を加算して示し、物理マシンPMのCPU負荷はそのまま示している。
【0120】
そして、物理マシンPMのCPU負荷から全仮想マシンVM1-VM3のCPU負荷を減じたオーバーヘッド分OHが示されている。この物理マシンのCPU負荷のオーバーヘッド分OHは、主に、第2のネットワーク設定されている仮想NIC(V_NIC)の通信(I/Oデータ転送)の際にハイパーバイザHVの仮想スイッチの処理に要したCPU負荷である。通信量(I/Oデータ転送量)が大規模になると、その通信に要するハイパーバイザの仮想スイッチの処理の負担が大きくなる。したがって、上記のオーバーヘッド分OHは、主にハイパーバイザの仮想スイッチの処理に要するCPU負荷とみなすことができる。
【0121】
次に、負荷算出プログラムは、配列tの各時刻t1,t2,t3における、各仮想NIC(V_NIC1,V_NIC2, V_NIC3)の送信量を、配列NIC1,NIC2,NIC3に格納する。
【0122】
そして、負荷算出プログラムは、上記の3つのサンプル値から、各仮想NIC(V_NIC1,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に対して相関係数x、y、zを割り当てて、図17に示される以下の連立方程式を立てて、その連立方程式を解いて、相関係数x、y、zを求める。
t1_cpu = NIC1_t1 * x + NIC2_t1 * y + NIC3_t1 * z
t2_cpu = NIC1_t2 * x + NIC2_t2 * y + NIC3_t2 * z (6)
t1_cpu = NIC3_t1 * x + NIC2_t3 * y + NIC3_t3 * z
【0123】
負荷算出プログラムは、各仮想NICについて、その送信量と物理マシンのCPU使用量のオーバーヘッド分OHとの間に相関がない、または相関が小さい、仮想NIC(V_NIC)を、ハイパーバイザを介さない第1のネットワーク設定と判定する。さらに、負荷算出プログラムは、上記の相関がある、または相関が大きい、仮想NIC(V_NIC)を、ハイパーバイザを介する第2のネットワーク設定と判定する。
【0124】
具体的には、上記式(6)の連立方程式を解いて取得した相関係数x、y、zが0またはほぼ0の場合は、相関がないまたは小さいので、第1のネットワーク設定と判定する。相関係数が0でないまたは0より大きい場合は、相関があるので、第2のネットワーク設定と判定する。また、相関係数x、y、zを比較して、相関係数が小さいグループの仮想NICを第1のネットワーク設定と判定し、相関係数が大きいグループの仮想NICを第2のネットワーク設定と判定しても良い。
【0125】
相関がない仮想NICは、ハイパーバイザを介する第2のネットワーク設定の場合に発生するCPU負荷と無関係であることを意味するので、第1のネットワーク設定に設定されていると判定できる。また、相関がある仮想NICは、ハイパーバイザを介する第2のネットワーク設定の場合に発生するCPU負荷と関係があることを意味するので、優先制御に設定されていると判定できる。
【0126】
上記の例では、仮想マシンVMが1つの仮想NICを利用する例で説明した。しかし、一つの物理マシンPM上のいずれかの仮想マシンVMが複数の仮想NICを利用する場合も、各仮想NICの送信量を監視して取得できるかぎり、前述の式(6)により各仮想NICの相関係数を解くことで、第1のネットワーク設定の仮想NICを検出することができる。各仮想NIC毎の送信量は前述したとおり一般的な方法で取得可能である。また、物理マシンのCPU負荷のオーバーヘッド分OHは、仮想マシンVMが複数の仮想NICを利用していても、物理マシンのCPU負荷と各仮想マシンVMのCPU負荷の合計から取得可能である。
【0127】
また、物理マシン上の仮想マシンVMの仮想NICが1個のみの場合は、その1個の仮想NICの送信量と物理マシンのCPU負荷のオーバーヘッド分OHとの相関を見れば、第1または第2のネットワーク設定のいずれかであると判定できる。この場合は、連立方程式を立てて解く必要はない。
【0128】
[ハイパーバイザを介して且つ優先制御でI/Oデータ転送する設定(優先制御の第2のネットワーク設定)の仮想NIC(V_NIC)と、非優先制御でI/Oデータ転送する設定(非優先の第2のネットワーク設定)の仮想NICとを検出する処理S32、S33]
次に、第2のネットワーク設定されている仮想NICのうち、優先制御に設定されている仮想NICと非優先制御に設定されている仮想NICを検出する処理について説明する。
【0129】
図18は、優先制御の第2のネットワーク設定と非優先制御の第2のネットワーク設定の仮想NICを検出する処理における物理マシンと仮想マシンとの関係例を示す図である。図18の物理マシンPM上には仮想マシンVM1, VM2, VM3, VM4が生成されている。そして、仮想マシンVM1-VM4は仮想NIC(V_NIC1-V_NIC4)をそれぞれ利用する。そして、仮想マシンVM1の仮想NIC(V_NIC1)と仮想マシンVM2の仮想NIC(V_NIC2)は、非優先制御の第2のネットワーク設定に設定され、仮想マシンVM3の仮想NIC(V_NIC3)は、優先制御の第2のネットワーク設定に設定されている。さらに、仮想マシンVM4の仮想NIC(V_NIC4)はハイパーバイザを介さないでI/Oデータ転送を行う第1のネットワーク設定に設定されている。
【0130】
図18に示すとおり、ある物理マシンPMにおいて、優先制御と非優先制御の第2のネットワーク設定されている仮想NICが混在していれば、以下に示す方法により優先制御と非優先制御の第2のネットワーク設定がされている仮想NICを区別して判定可能である。ただし、優先制御と非優先制御の第2のネットワーク設定されている仮想NICが混在してない場合は、送信キューの切り替え処理が発生せずCPU割込回数との相関が発生しないので、判定できない。
【0131】
図19は、優先制御と非優先制御の第2のネットワーク設定の仮想NICを検出する処理のフローチャート図である。負荷算出プログラムは、図16と同様に、構成情報DBから判定対象の仮想マシンの物理マシンPM上の仮想マシンVMの仮想NIC(V_NIC)の一覧を取得し(S321)、性能情報DBから、各仮想マシンVMの仮想NIC(V_NIC)の送信量(I/Oデータ転送量)の時系列データを取得する(S322)。処理S321,S322は、図16の処理S311,S312と同様である。ただし、取得する仮想マシンVMの仮想NIC(V_NIC)の送信量の時系列データから、第1のネットワーク設定されている仮想NICのデータを除外するのが望ましい。ここでの判定は、優先制御と非優先制御の第2のネットワーク設定の仮想NICを区別することであるため、第2のネットワーク設定以外の仮想NICの送信量データを除外しておくのが望ましい。
【0132】
そして、負荷算出プログラムは、仮想NIC(V_NIC)の送信量の時系列データから、判定対象の仮想マシンVMの仮想NIC(V_NIC)が単独で通信している時刻の性能情報を除外する(S322_A)。単独で通信している時刻では、ハイパーバイザの仮想スイッチが優先制御のみ実施しているか、非優先制御のみ実施しているかのいずれかである。そのため、非優先制御用の送信キューと優先制御用の送信キューとを切り替える処理が発生せず、仮想NICの送信量と物理マシンPMのCPU割り込み回数の相関性を確認することができないからである。
【0133】
次に、負荷算出プログラムは、仮想NIC(V_NIC)の送信量の時系列データから、物理マシンPM内の全ての仮想NIC(V_NIC)の送信量の総和が同じである複数の時刻を検出する。さらに、負荷算出プログラムは、全仮想NIC(V_NIC)の送信量の割合が互いに異なる複数の時刻を検出する。そして、2つの条件を満たす時刻を、配列tに格納する(S323)。この配列データは、後述する連立方程式の各要素のデータとなる。時刻の数は、連立方程式の数に対応するので、仮想NICの数と少なくとも同じ数であることが必要になる。
【0134】
また、全ての仮想NICの送信量の総和が同じである複数の時刻を選択する理由は、図16と同様に、送信量の増大に伴い物理マシンのCPU割り込み回数が増大するオーバーヘッド分を、連立方程式の各式(各時刻)で同等にするためである。したがって、精度を高めるためには、全ての仮想NICの送信量の総和が同じである時刻を選択するのが望ましい。全仮想NICの送信量の割合が互いに異なる複数の時刻を選択する理由は、連立方程式が解けるための条件だからである。
【0135】
次に、負荷算出プログラムは、性能情報DBから、時刻tの物理マシンのCPU割り込み回数を取得する(S324)。このCPU割り込み回数の例は、図29の物理マシンのCPU割り込みテーブルである。そして、負荷算出プログラムは、取得した物理マシンのCPU割り込み回数を、配列t_cpuに格納する(S324)。
【0136】
図20は、仮想NIC(V_NIC)の送信量の時系列データと、物理マシンのCPU割り込み回数の時系列データの一例を示す図である。図20の上のグラフ図は、横軸を時刻t、縦軸をV_NICの送信量とし、図18の物理マシンPM内の第2のネットワーク設定されている仮想NIC(V_NIC1, V_NIC2, V_NIC3)の送信量(I/Oデータ転送量)を示す。図17の上のグラフ図と同じである。
【0137】
さらに、図20の下のグラフ図は、縦軸を物理マシンのCPU割り込み回数とし、図19の物理マシンPMのCPU割り込み回数を示す。したがって、下のグラフ図から、時刻t1、t2,t3での物理マシンのCPU割り込み回数が得られる。
【0138】
そして、負荷算出プログラムは、配列tの各時刻t1,t2,t3における、各仮想NIC(V_NIC)の送信量(I/Oデータ転送量)を、配列NIC1〜NIC3に格納する。
【0139】
次に、負荷算出プログラムは、各仮想NIC(V_NIC1,V_NIC2, V_NIC3)の送信量と物理マシンのCPU割り込み回数との相関を算出する(S326)。具体的には、図20に示される連立方程式を立てて、各仮想NICの相関係数x、y、zを解く。図20に示された連立方程式は上記の式(6)と同じである。
【0140】
負荷算出プログラムは、各仮想NICについて、その送信量と物理マシンのCPU割り込み回数との間に相関がない、または相関が小さい、仮想NIC(V_NIC)を、非優先制御の第2のネットワーク設定と判定する(S327)。さらに、負荷算出プログラムは、上記の相関がある、または相関が大きい、仮想NIC(V_NIC)を、優先制御の第2のネットワーク設定と判定する(S327)。
【0141】
具体的には、上記式(6)の連立方程式を解いて取得した相関係数x、y、zが0またはほぼ0の場合は、相関がないまたは小さいので、非優先制御の第2のネットワーク設定と判定する。相関係数が0でないまたは0より大きい場合は、相関があるので、優先制御の第2のネットワーク設定と判定する。また、相関係数x、y、zを比較して、相関係数が小さいグループの仮想NICを非優先制御の第2のネットワーク設定と判定し、相関係数が大きいグループの仮想NICを優先制御の第2のネットワーク設定と判定しても良い。
【0142】
送信量がCPU割り込み回数と相関がない仮想NICは、優先制御した場合に発生するCPU割り込み回数と無関係であることを意味するので、非優先制御に設定されていると判定できる。また、相関がある仮想NICは、優先制御した場合に発生するCPU割り込み回数と関係があることを意味するので、優先制御に設定されていると判定できる。
【0143】
上記の処理S32,S34においても、仮想マシンVMが複数の仮想NICを利用する場合も、各仮想NICの送信量を監視して取得できるかぎり、仮想NICが優先制御か非優先制御かを判別できる。
【0144】
[優先制御と非優先制御の違いによる仮想NICのCPU負荷(CPU使用量)の違いを検出する処理S34]
上記までの処理で、物理マシンPM上の仮想マシンVMの全ての仮想NIC(V_NIC)のネットワーク設定が、第1のネットワーク設定と、優先制御の第2のネットワーク設定と、非優先制御の第2のネットワーク設定のいずれかであることが判明した。
【0145】
そこで、負荷算出プログラムは、優先制御の第2のネットワーク設定の仮想NICによるCPU負荷(CPU使用量)と、非優先制御の第2のネットワーク設定の仮想NICによるCUP負荷(CPU使用量)との比率を検出する。
【0146】
図21は、優先制御と非優先制御の違いによる仮想NICのCPU負荷の違いを検出する処理での、物理マシンと仮想マシンとの関係例を示す図である。図21の物理マシンPM上には仮想マシンVM1, VM2, VM3が生成されている。そして、仮想マシンVM1-VM3は仮想NIC(V_NIC1-V_NIC3)をそれぞれ利用する。そして、仮想マシンVM1の仮想NIC(V_NIC1)と仮想マシンVM2の仮想NIC(V_NIC2)は、非優先制御の第2のネットワーク設定に設定され、仮想マシンVM3の仮想NIC(V_NIC3)は、優先制御の第2のネットワーク設定に設定されている。
【0147】
図21のような場合、仮想NIC(V_NIC3)は優先制御されるので、送信量が増大するにつれて、優先制御でのCPU割込処理と送信バッファの切り替え処理とが増える。その結果、優先制御の仮想NIC(V_NIC3)のI/Oデータ転送に伴うCPU負荷(CPU使用量)は、非優先制御の仮想NIC(V_NIC1, V_NIC2)のI/Oデータ転送に伴うCPU負荷(CPU使用量)よりも大きくなる。このCPU負荷の違い、つまり比率を、以下のようにして検出する。
【0148】
図22は、優先制御と非優先制御の違いによる仮想NICのCPU負荷の違いを検出する処理を示すフローチャート図である。負荷算出プログラムは、設定情報DBから各仮想マシンVMの仮想NIC(V_NIC)のネットワーク設定を取得し(S341)、性能情報から各仮想マシンの仮想NIC(V_NIC)の送信量(I/Oデータ転送量)の時系列データを取得する(S342)。それぞれ、図25のネットワーク設定テーブル、図28のV_NICの送信量テーブルである。
【0149】
そして、負荷算出プログラムは、ハイパーバイザを介さないI/Oデータ転送を行う第1のネットワーク設定の仮想NIC(V_NIC)の性能情報(送信量)を除外する(S342_A)。除外することで、ハイパーバイザの仮想スイッチを介する第2のネットワーク設定の仮想NICだけに絞る。これにより、優先制御と非優先制御の仮想NICのCPU負荷の比率を高精度に求めることができる。
【0150】
次に、負荷算出プログラムは、仮想NICの送信量の時系列データから判定対象の物理マシンの仮想NIC(V_NIC)の送信量の総和が同じ時刻tを検出し、配列tに格納する(S343)。この処理は、図16のS213と同じである。送信量の総和が同じ時刻を検出する理由も同様である。
【0151】
そして、負荷算出プログラムは、性能情報DBから、時刻tの判定対象の物理マシン及び物理マシンの仮想マシンのCPU負荷(CPU使用量)を取得する(S344)。そして、物理マシンのCPU負荷(CPU使用量)から全仮想マシンVMのCPU負荷(CPU使用量)の合計を減じた物理マシンのCPU負荷のオーバーヘッド分OHを、配列t_cpuに格納する(S344)。さらに、負荷算出プログラムは、配列tの各時刻における、各仮想NIC(V_NIC)の送信量(I/Oデータ転送量)を、配列NIC1-NIC3に格納する(S345)。
【0152】
図17に示した2つのグラフ図は、上記の処理S342, S343, S344, S345の処理に対応する。
【0153】
次に、負荷算出プログラムは、各仮想NIC(V_NIC)の送信量と物理マシンのCPU使用量のオーバーヘッド分OHとの相関値を算出する(S346)。具体的には、図17に示された式(6)の連立方程式を解いて、相関係数x、y、zを求める。図21に示した構成例の場合は、非優先制御の仮想NIC(V_NIC1,V_NIC2)の相関係数x、yは同じになるが、優先制御の仮想NIC(V_NIC3)の相関係数zは、x、yよりも少し大きくなる。
【0154】
そして、負荷算出プログラムは、相関係数x、yと相関係数zとの比率を、優先制御の仮想NIC(V_NIC3)のCPU負荷の、非優先制御の仮想NIC(V_NIC1またはV_NIC2)のCPU負荷に対する比率として算出する(S347)。つまり、以下の式のとおりである。
優先制御のCPU負荷の非優先制御のCPU負荷の比率=z/(xまたはy)
【0155】
負荷算出プログラムは、全物理マシンについて上記の処理を行い、各物理マシンの優先制御の第2のネットワーク設定の仮想NICについてのCPU負荷の比率を、図29の優先制御のCPU負荷の倍率テーブルに格納する。
【0156】
[仮想マシンの負荷算出処理S4]
次に、負荷算出プログラムは、再配置または追加もしくは削除対象の仮想マシンVMのCPU負荷を算出処理を行う(S4)。具体的には、図11に示したとおり、仮想マシンVM3が物理マシンBに再配置される場合、仮想マシンVM3の物理マシンAでのCPU負荷(CPU処理量)と送信量(I/Oデータ転送量)に基づいて、物理マシンBに再配置された場合に増加するCPU負荷を算出する。
【0157】
例えば、仮想マシンVM3がハイパーバイザを介して非優先制御で通信する非優先制御の第2のネットワーク設定の場合(例1)、負荷算出プログラムは、図6(B)で説明したように物理マシンBで増加するCPU負荷(CPU使用量)を算出する。すなわち、増加するCPU負荷は、仮想マシンVM3の処理によるCPU負荷と、仮想マシンVM3の送信量に対応するCPU負荷のオーバーヘッド分OHとが増加する。
【0158】
例えば、仮想マシンVM3がハイパーバイザを介さずに通信する第1のネットワーク設定の場合(例2)、負荷算出プログラムは、図8(B)で説明したように物理マシンBで増加するCPU負荷(CPU使用量)を算出する。すなわち、増加するCPU負荷は、仮想マシンVM3の処理によるCPU負荷が増加する。
【0159】
例えば、仮想マシンVM3がハイパーバイザを介して優先制御で通信する優先制御の第2のネットワーク設定の場合(例3)、負荷算出プログラムは、図10(B)で説明したように物理マシンBで増加するCPU負荷(CPU使用量)を算出する。すなわち、増加するCPU負荷は、仮想マシンVM3の処理によるCPU負荷と、仮想マシンVM3の送信量に対応するCPU負荷のオーバーヘッド分OH(優先制御故、非優先制御よりも割合が高い)とが増加する。
【0160】
以上のとおり、本実施の形態によれば、物理マシンに生成された仮想マシンの仮想NICのネットワーク設定を性能情報に基づいて検出することができる。したがって、検出した仮想NICのネットワーク設定に基づいて、各仮想マシンのCPU負荷を高精度に算出することができ、仮想マシンの再配置によるサイジングを適切に実行することができる。
【0161】
以上の実施の形態をまとめると,次の付記のとおりである。
【0162】
(付記1)
管理対象の情報処理装置のプロセッサの使用量と、前記管理対象の情報処理装置が実行するハイパーバイザで生成された複数の仮想マシン毎の前記プロセッサの使用量とを含むプロセッサ使用情報を取得し、
前記仮想マシンが利用する仮想ネットワークインターフェース毎のデータ転送量を含むデータ転送情報を取得し、
前記プロセッサ使用情報と前記データ転送情報とに基づいて、前記複数の仮想ネットワークインターフェースのうち、前記ハイパーバイザを経由せずにデータ転送を行う第1の仮想ネットワークインターフェースを検出し、
前記検出した第1の仮想ネットワークインターフェースを前記仮想マシンが利用するか否かに基づいて、前記仮想マシンのデータ転送に伴うプロセッサ使用量を有する負荷情報を算出する、
処理をコンピュータが実行する負荷算出方法。
【0163】
(付記2)
前記第1の仮想ネットワークインターフェースを検出する処理では、
前記情報処理装置のプロセッサ使用量から前記仮想マシンのプロセッサ使用量の合計を減じたオーバーヘッドプロセッサ使用量と、前記仮想ネットワークインターフェースのデータ転送量との間に、第2の相関を有する仮想ネットワークインターフェースを、前記ハイパーバイザを経由するデータ転送を行う第2の仮想ネットワークインターフェースと判定し、
前記オーバーヘッドプロセッサ使用量と、前記仮想ネットワークインターフェースのデータ転送量との間に、前記第2の相関より小さい第1の相関を有する仮想ネットワークインターフェースを、前記第1の仮想ネットワークインターフェースと判定する、
付記1に記載の負荷算出方法。
【0164】
(付記3)
前記処理は、さらに、
前記監視対象の情報処理装置のプロセッサ割込回数を有するプロセッサ割込回数情報を取得し、
前記プロセッサ割込回数情報と前記データ転送情報とに基づいて、前記複数の仮想ネットワークインターフェースのうち、前記ハイパーバイザを経由するデータ転送を行う第2の仮想ネットワークインターフェースであって、他の第2の仮想ネットワークインターフェースに優先してデータ転送制御される優先制御対象の第2の仮想ネットワークインターフェースを検出し、
前記負荷情報を算出する処理において、前記仮想マシンが前記検出した優先制御対象の第2の仮想ネットワークインターフェースを利用するか否かに基づいて、前記仮想マシンのデータ転送に伴うプロセッサ使用量を有する負荷情報を算出する、
付記1に記載の負荷算出方法。
【0165】
(付記4)
前記優先制御対象の第2の仮想ネットワークインターフェースを検出する処理において、
前記プロセッサ割込回数と、前記仮想ネットワークインターフェースのデータ転送量との間に、第3の相関を有する仮想ネットワークインターフェースを、前記優先制御対象の第2の仮想ネットワークインターフェースと判定し、
前記プロセッサ割込回数と、前記仮想ネットワークインターフェースのデータ転送量との間に、前記第3の相関より小さい第4の相関を有する仮想ネットワークインターフェースを、非優先制御対象の第2の仮想ネットワークインターフェースと判定する、
付記3に記載の負荷算出方法。
【0166】
(付記5)
前記負荷情報を算出する処理において、前記優先制御対象の第2の仮想ネットワークインターフェースを利用する仮想マシンの負荷を、非優先制御対象の第2の仮想ネットワークインターフェースを利用する仮想マシンのプロセッサ使用量よりも大きく算出する、
付記3に記載の負荷算出方法。
【0167】
(付記6)
前記負荷情報を算出する処理において、前記情報処理装置のプロセッサ使用量から前記仮想マシンのプロセッサ使用量の合計を減じたオーバーヘッドプロセッサ使用量と、前記第2の仮想ネットワークインターフェースのデータ転送量との間の相関値の違いに基づいて、前記優先制御対象の第2の仮想ネットワークインターフェースを利用する仮想マシンのプロセッサ使用量と、前記非優先制御対象の第2の仮想ネットワークインターフェースを利用する仮想マシンのプロセッサ使用量との差を算出する、
付記5に記載の負荷算出方法。
【0168】
(付記7)
前記処理は、さらに、
前記仮想ネットワークインターフェースのネットワーク設定の変更を、前記仮想マシンまたは前記情報処理装置の監視閾値の設定変更に基づいて検出する処理を有する、
負荷算出方法。
【0169】
(付記8)
管理対象の情報処理装置のプロセッサの使用量と、前記管理対象の情報処理装置が実行するハイパーバイザで生成された複数の仮想マシン毎の前記プロセッサの使用量とを含むプロセッサ使用情報を取得し、
前記仮想マシンが利用する仮想ネットワークインターフェース毎のデータ転送量を含むデータ転送情報を取得し、
前記プロセッサ使用情報と前記データ転送情報とに基づいて、前記複数の仮想ネットワークインターフェースのうち、前記ハイパーバイザを経由せずにデータ転送を行う第1の仮想ネットワークインターフェースを検出し、
前記検出した第1の仮想ネットワークインターフェースを前記仮想マシンが利用するか否かに基づいて、前記仮想マシンのデータ転送に伴うプロセッサ使用量を有する負荷情報を算出する、
処理をコンピュータに実行させるコンピュータ読み取り可能な負荷算出プログラム。
【0170】
(付記9)
管理対象の情報処理装置のプロセッサの使用量と、前記管理対象の情報処理装置が実行するハイパーバイザで生成された複数の仮想マシン毎の前記プロセッサの使用量とを含むプロセッサ使用情報を取得する第1の取得部と、
前記仮想マシンが利用する仮想ネットワークインターフェース毎のデータ転送量を含むデータ転送情報を取得する第2の取得部と、
前記プロセッサ使用情報と前記データ転送情報とに基づいて、前記複数の仮想ネットワークインターフェースのうち、前記ハイパーバイザを経由せずにデータ転送を行う第1の仮想ネットワークインターフェースを検出する検出部と、
前記検出した第1の仮想ネットワークインターフェースを前記仮想マシンが利用するか否かに基づいて、前記仮想マシンのデータ転送に伴うプロセッサ使用量を有する負荷情報を算出する算出部と、
を有する負荷算出装置。
【符号の説明】
【0171】
1、2、3:物理マシン
VM:仮想マシン
HV:ハイパーバイザ
4:管理装置
4_1:管理プログラム(負荷算出プログラムを含む)
V_NIC:仮想NIC、仮想ネットワークインターフェース(カード)
NIC:物理NIC、SR_IOV物理NIC
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28
図29