以下、実施形態について図面を用いて説明する。
[第1の実施形態]
図1は、本発明の第1の実施形態における仮想計算機システムの論理構成の一例を示す説明図である。
図1に示すように、第1の実施形態における仮想計算機システムは、物理サーバ100と、複数のI/Oアダプタ200A、200B及び管理用コンソール520から構成される。以下、I/Oアダプタ200A、200Bを区別しない場合、I/Oアダプタ200と記載する。
物理サーバ100と管理用コンソール520とは、管理ネットワーク530を介して接続される。
物理サーバ100上では、ハイパバイザ190が実行される。ハイパバイザ190は、物理サーバ100が備える計算機リソースを論理的に分割することによって複数の論理区画(LPAR)を生成し、また、生成されたLPARを管理する。
なお、ハイパバイザ190のソフトウェア構成については図2を用いて後述する。また、物理サーバ100が備えるハードウェア構成については図3を用いて後述する。
本実施形態におけるハイパバイザ190は、ゲストLPAR115A、115Bと、I/O LPAR150A、150Bと、管理用LPAR170とを生成する。
管理用LPAR170は、管理用コンソール520と通信するための論理区画である。
ゲストLPAR115A、115Bは、ユーザの業務を実行する論理区画である。以下、ゲストLPAR115A、115Bを区別しない場合、ゲストLPAR115と記載する。
I/O LPAR150A、150Bは、ゲストLPAR115と各I/Oアダプタ200A、200Bとの間のI/Oアクセスを処理する論理区画である。以下、I/O LPAR150A、150Bを区別しない場合、I/O LPAR150と記載する。
本実施形態におけるハイパバイザ190は、ゲストLPAR115Aと、I/O LPAR150Aを一つの仮想化部110Aとして管理する。また、ハイパバイザ190は、ゲストLPAR115BとI/O LPAR150Bとを一つの仮想化部110Bとして管理する。
I/O LPAR150Aは、ゲストLPAR115AとI/Oアダプタ200A、200Bとの間のI/Oアクセスを処理する。I/O LPAR150Bは、ゲストLPAR115BとI/Oアダプタ200A、200Bとの間のI/Oアクセスを処理する。
なお、本発明は前述したような構成に限定されない。例えば、複数のゲストLPAR115と一つのI/O LPAR150とを対応づけてもよい。また、I/O LPAR150は、一つのI/Oアダプタ200のアクセスのみを処理するように構成されてもよい。
管理用コンソール520は、管理者510が入力したQoSポリシ500及びリソース割当要求540を管理用LPAR170に送信する。QoSポリシ500は、ユーザが要求するQoSを設定するためのパラメータ等の情報を含む。リソース割当要求540は、ゲストLPAR115に割り当てる計算機リソースに関する情報を含む。
なお、QoSポリシ500の詳細については図19を用いて後述する。また、リソース割当要求540の詳細については図18を用いて後述する。
ゲストLPAR115とI/Oアダプタとの間のI/Oアクセスを仮想化する方法を説明する。
本実施形態のI/Oアダプタ200Aは、SR−IOVに対応したアダプタである。そのため、SR−IOVに対応したI/Oアダプタ200Aは、内部に物理アダプタ制御機能(PF)220Aと、複数の論理アダプタ(VF)210A−1〜210A−3を含む。
また、I/Oアダプタ200BもSR−IOVに対応したアダプタであり、物理アダプタ制御機能(PF)220Bと、複数の論理アダプタ(VF)210B−1〜210B−3を含む。
論理アダプタ(VF)210A−1〜210A−3、210B−1〜210B−3をI/O LPAR150と対応づけることによってI/Oアダプタ200を複数のゲストLPAR115が共有して使用することができる。
なお、図1に示す例では、I/Oアダプタ200A、200Bは、それぞれ、一つの物理アダプタ制御機能(PF)220A、220Bを含むが、複数の物理アダプタ制御機能(PF)を含んでもよい。
以下、物理アダプタ制御機能(PF)220A、220Bを区別しない場合、PF220と記載する。論理アダプタ(VF)210A−1〜210A−3を区別しない場合VF210Aと記載し、論理アダプタ(VF)210B−1〜210B−3を区別しない場合VF210Bと記載する。また、VF210A及びVF210Bを区別しない場合、VF210と記載する。
次に、各LPARの構成について説明する。
管理用LPAR170上では、管理用コンソール520及びハイパバイザ190との間の通信を制御するOS175が実行される。また、管理用LPAR170は、PF220A、220Bにアクセスするための物理アダプタドライバ(PFD)185−1、185−2を備える。
以下、物理アダプタドライバ(PFD)185−1、185−2を区別しない場合、PFD185と記載する。
ゲストLPAR115A上ではユーザの業務を実行するOS130Aが稼動する。また、OS130A上では各種アプリケーション125Aが実行される。
ゲストLPAR115Aには、仮想I/Oアダプタ145A−1、145A−2が割り当てられる。また、ゲストLPAR115Aは、仮想I/Oアダプタ145A−1、145A−2にアクセスするための汎用的な仮想アダプタドライバ135A−1、135A−2を備える。前述した構成によって、ゲストLPAR115Aに割り当てられるI/Oアダプタを仮想化することが可能となる。具体的な、仮想化方法については後述する。
ゲストLPAR115が含む仮想アダプタドライバ135A−1、135A−2は、汎用的なネットワークインタフェースカード(NIC)又はホストバスアダプタ(HBA)用のドライバである。
ゲストLPAR115Bも同様の構成であるため、説明を省略する。
以下、仮想アダプタドライバ135A−1、135A−2を区別しない場合、仮想アダプタドライバ135Aと記載し、仮想アダプタドライバ135B−1、135B−2を区別しない場合、仮想アダプタドライバ135Bと記載する。また、仮想アダプタドライバ135A、135Bを区別しない場合、仮想アダプタドライバ135と記載する。
また、以下、仮想I/Oアダプタ145A−1、145A−2を区別しない場合、仮想I/Oアダプタ145Aと記載し、仮想I/Oアダプタ145B−1、145B−2を区別しない場合、仮想I/Oアダプタ145Bと記載する。また、仮想I/Oアダプタ145A、145Bを区別しない場合、仮想I/Oアダプタ145と記載する。
I/O LPAR150A上では、ゲストLPAR115AとVF210A、210Bとの間のI/Oアクセスを処理するOS160Aが稼動する。また、OS160A上ではI/Oアクセスを処理するためのアプリケーション155Aが実行される。
I/O LPAR150Aは、VF210A、210Bにアクセスするための論理アダプタドライバ(VFD)165A−1、165A−2を備える。論理アダプタドライバ(VFD)165A−1、165A−2は、I/Oアダプタ200A、200B固有のデバイスドライバである。
I/O LPAR150Bも同様の構成であるため説明を省略する。
以下、論理アダプタドライバ(VFD)165A−1、165A−2を区別しない場合、VFD165Aと記載し、論理アダプタドライバ(VFD)165B−1、165B−2を区別しない場合、VFD165Bと記載する。また、VFD165A、165Bを区別しない場合、VFD165と記載する。
図1に示す例では、I/O LPAR150Aには、VF210A−1及びVF210B−2が割り当てられている。
I/O LPAR150Aは、VFD165A−1を介してVF210A−1へとアクセスし、また、VFD165A−2を介してVF210B−2へとアクセスする。
I/O LPAR150は、VFD165を介して入力されたI/Oアクセスを、仮想I/Oアダプタ145に対応するI/Oアクセスに変換し、変換されたI/OアクセスをゲストLPAR115に送信する。また、I/O LPAR150は、仮想I/Oアダプタ145を介して入力されたI/Oアクセスを、VFD165に対応したI/Oアクセスに変換し、変換されたI/Oアクセスを外部に送信する。
前述した処理によって、論理アダプタ210とゲストLPAR115との間のI/Oアクセスを転送することが可能となる。
前述したI/O仮想化によって、プラットフォームの変更に伴ってI/Oアダプタ200が異なるものとなった場合、VFD165のみを変更すればよい。すなわち、ゲストLPAR115の構成は変更する必要がないため、仮想アダプタドライバ135は同一のドライバを引き継ぐことができる。これによって、仮想化部110におけるプラットフォーム間移行を可能とする。
なお、1つのI/Oアダプタ200が内部に複数の物理アダプタ制御機能(PF)220を備えることもあり得る。例えば、NICとHBAのコンボカード(CNA)などである。CNAのようなI/Oアダプタ200では、複数の物理アダプタ制御機能(PF)220が存在する。
第1の実施形態では、一つのI/Oアダプタ200に一つのPF220が備わるI/Oアダプタ200について説明する。
図2は、本発明の第1の実施形態の物理サーバ100のハードウェア構成の一例を示す説明図である。
物理サーバ100は、ソケット400A、400B、プロセッサ405A、405B、メモリモジュール450A−1、450A−2、450B−1、450B−2、IOハブチップセット420、コントローラハブチップセット460、及び管理ポート470を備える。
ソケット400Aには、プロセッサ405Aが設置される。また、ソケット400Bには、プロセッサ405Bは設置される。プロセッサ405Aとプロセッサ405Bとは、相互接続パス425によって接続される。
プロセッサ405Aは、複数のプロセッサコア410A−1〜410A−4及びメモリコントローラ440Aを含む。なお、メモリコントローラ440Aは、プロセッサ405Aの外部にある構成でもよいし、別のチップセットに統合される構成も考えられる。
プロセッサコア410A−1〜410A−4は、演算ユニットであり、メモリモジュール450A−1、450B−2に格納されたプログラムを実行する。ソケット400Bも同一の構成であるため説明を省略する。
以下、ソケット400A、400Bを区別しない場合、ソケット400と記載する。プロセッサ405A、405Bを区別しない場合、プロセッサ405と記載する。また、プロセッサコア410A−1〜410A−4及びプロセッサコア410B−1〜410B−4を区別しない場合、プロセッサコア410と記載する。
メモリコントローラ440Aは、メモリチャネルを介してメモリモジュール450A−1、450A−2と接続され、メモリモジュール450A−1、450A−2に対するデータの読み出し、又は、データの書き込みを制御する。メモリモジュール450としてはDIMM(Dual Inline Memory Module)のようなものが考えられる。メモリコントローラ440Bも同一の構成であるため説明を省略する。
以下、メモリコントローラ440A、440Bを区別しない場合、メモリコントローラ440と記載する。
メモリモジュール450A−1、450A−2は、プロセッサコア410A−1〜410A−4が実行するプログラム及び当該プログラムを実行するために必要な情報を格納する。
メモリモジュール450B−1、450B−2も同一の構成であるため説明を省略する。
以下、メモリモジュール450A−1、450A−2、及びメモリモジュール450B−1、450B−2を区別しない場合、メモリモジュール450と記載する。
図2に示す例では、メモリモジュール450A−2には、ハイパバイザ実行イメージ455が格納される。また、メモリモジュール450B−1には、ゲストLPAR115の実行イメージ456が格納される。
また、メモリモジュール450は、I/Oアダプタ200を制御するための情報を格納するコンフィグレーション領域(図示省略)を格納する。当該コンフィグレーション領域には、Vendor ID(図11参照)、Device ID(図11参照)等の情報が含まれる。
IOハブチップセット420は、一以上のIOバス430A、430Bを介してI/Oアダプタ200と接続される。ここで、IOバス430は、例えば、PCI−Expressのようなものが考えられる。
I/Oアダプタ200には、当該I/Oアダプタ200の種類によってネットワーク480又はストレージ装置490が接続される。
ストレージ装置490には、ゲストLPAR115等のブートイメージ495が複数格納される。
物理サーバ100の処理実行時には、不揮発性メモリからロードされたハイパバイザブートイメージ465がメモリモジュール450A−2上に展開され、ハイパバイザ実行イメージ455として実行される。また、ゲストLPAR115のブートイメージ495はメモリモジュール450B−1上に展開され、実行イメージ456として実行される。
また、IOハブチップセット420は、コントローラハブチップセット460が接続される。
コントローラハブチップセット460は、管理ネットワーク530と接続する管理ポート470、ハイパバイザブートイメージ465を格納する不揮発性メモリと接続される。
図3は、本発明の第1の実施形態におけるハイパバイザ190のソフトウェア構成の一例を示す説明図である。
ハイパバイザ190は、リソース管理部300、QoS個別I/F設定部310、I/O LPARリソース算出部320、負荷分散個別I/F設定部330、及びQoS換算データベース340を備える。
リソース管理部300は、物理サーバ100が備える計算機リソース、並びに、ゲストLPAR115及びI/O LPAR150に割り当てる計算機リソースを管理する。リソース管理部300の詳細については、図4を用いて後述する。
QoS個別I/F設定部310は、QoSポリシ500に基づいて各VF210にQoSを設定する。
I/O LPARリソース算出部320は、仮想化部110を構成するI/O LPAR150に割り当てるリソースを算出する。
負荷分散個別I/F設定部330は、各VF210に対して、I/O LPAR150に割り当てられたプロセッサコアに対する割り込みを分散させるための負荷分散を設定する。
QoS換算データベース340は、QoSポリシ500に基づいて各VF210に設定するQoSの設定パラメータを算出するための情報を格納する。QoS換算データベース340の詳細については、図10を用いて後述する。
なお、QoS換算データベース340は、ハイパバイザ190が備えていなくてもよい。例えば、プラットフォーム又はI/Oアダプタの変更に合わせてデータの追加又は更新が必要となるため、物理サーバ100の外部の装置(図示省略)に保持されてもよい。この場合、ハイパバイザ190は、管理用コンソール520及び管理用LPAR170を介して、外部の装置(図示省略)に必要な情報を参照する。
図4は、本発明の第1の実施形態のリソース管理部300の構成例を示す説明図である。
リソース管理部300は、リソースプール管理表600、プロセッサ割当管理表610、メモリ割当管理表620、論理アダプタ割当管理表630、及びリソース割当管理表640を備える。
リソースプール管理表600は、物理サーバ100が備える計算機リソースの割当て状態を管理するための情報を格納する。リソースプール管理表600の詳細については、図5を用いて後述する。
プロセッサ割当管理表610は、プロセッサコア410の割当て状態を管理するための情報を格納する。プロセッサ割当管理表610の詳細については、図6を用いて後述する。
メモリ割当管理表620は、メモリモジュール450の記憶領域の割当て状態を管理するための情報を格納する。メモリ割当管理表620の詳細については、図7を用いて後述する。
論理アダプタ割当管理表630は、VF210の割当て状態を管理するための情報を格納する。論理アダプタ割当管理表630の詳細については、図8を用いて後述する。
リソース割当管理表640は、ゲストLPAR115及びI/O LPAR150に割り当てられる計算機リソースに関する情報を格納する。リソース割当管理表640の詳細については、図9を用いて後述する。
以下、リソース管理部300が備える各表について説明する。
図5は、本発明の第1の実施形態におけるリソースプール管理表600の一例を示す説明図である。
リソースプール管理表600は、リソース名601、未割当リソース602、及び割当済リソース603を含む。
リソース名601は、物理サーバ100が備える計算機リソースの名称を格納する。図5に示す例では、プロセッサコア605、メモリ606、及び論理アダプタ607のエントリが格納される。なお、論理アダプタ607については、物理アダプタ制御機能220毎にエントリが格納される。
未割当リソース602は、リソース名601に対応する計算機リソースのうち、ゲストLPAR115及びI/O LPAR150のいずれにも割り当てられていない計算機リソースのリソース量を格納する。つまり、リソースプールにおける未使用のリソース量が格納される。
割当済リソース603は、リソース名601に対応する計算機リソースのうち、ゲストLPAR115及びI/O LPAR150に割り当てられているリソース量を格納する。つまり、リソースプールにおける使用済みのリソース量が格納される。
未割当リソース602及び割当済リソース603の論理アダプタ607については、未割当てのVF210の数が格納される。
図6は、本発明の第1の実施形態におけるプロセッサ割当管理表610の一例を示す説明図である。
プロセッサ割当管理表610は、プロセッサ611、プロセッサコア612、割当先LPAR613、及びLPAR種別614を含む。
プロセッサ611は、プロセッサソケット400に設置されるプロセッサ405を一意に識別するための識別子を格納する。
プロセッサコア612は、プロセッサ405が備えるプロセッサコア410を一意に識別するための識別子を格納する。
割当先LPAR613は、プロセッサコア410が割り当てられるLPAR(ゲストLPAR115又はI/O LPAR150)を一意に識別するための識別子を格納する。なお、プロセッサコア410がいずれのLPARにも割り当てられていない場合、割当先LPAR613には割り当てられていないことを表す「未」が格納される。
LPAR種別614は、プロセッサコア410が割り当てられるLPARがゲストLPAR115又はI/O LPAR150の何れであるかを表す情報を格納する。図6に示す例では、LPAR種別614には、ゲストLPAR115を表す「ゲスト」、又は、I/O LPAR150を表す「I/O」が格納される。なお、割当先LPAR613が「未」である場合、LPAR種別614には「−」が格納される。
図7は、本発明の第1の実施形態における本発明の第1の実施形態におけるメモリ割当管理表620の一例を示す説明図である。
メモリ割当管理表620は、ホストアドレス621、割当先622及びLPAR種別623を含む。
ホストアドレス621は、割り当てられるメモリモジュール450の記憶領域に関する情報を格納する。具体的には、ホストアドレス621は、開始アドレス625及びサイズ626を含む。
開始アドレス625は、割り当てられる記憶領域のメモリモジュール450における開始アドレスを格納する。サイズ626は、割り当てられる記憶領域の容量を表す。
割当先622は、ホストアドレス621に対応する記憶領域が割り当てられる対象を識別するための情報を格納する。
図7に示す例では、メモリモジュール450の記憶領域がハイパバイザ190に割り当てられる場合には「ハイパバイザ」が格納され、管理用LPAR170に割り当てられる場合には「管理用LPAR」が格納される。また、メモリモジュール450の記憶領域がLPAR(ゲストLPAR115又はI/O LPAR150)に割り当てられる場合には、LPAR(ゲストLPAR115又はI/O LPAR150)を識別するための識別子が格納される。
以下、メモリモジュール450の記憶領域をメモリ領域と記載し、メモリモジュール450の記憶領域の容量をメモリ容量と記載する。
LPAR種別623は、メモリモジュール450の記憶領域が割り当てられるLPARの種別を格納する。LPAR種別623は、LPAR種別614と同一のものである。
図8は、本発明の第1の実施形態における本発明の第1の実施形態における論理アダプタ割当管理表630の一例を示す説明図である。
論理アダプタ割当管理表630は、物理I/Oアダプタ631、論理アダプタ632、及び割当先LPAR633を含む。
物理I/Oアダプタ631は、I/Oアダプタ200を識別するための情報が格納される。本実施形態では、物理I/Oアダプタ631には、PF220を識別するための識別子が格納される。
論理アダプタ632は、物理I/Oアダプタ631に対応するPF220によって生成されたVF210を識別するための識別子を格納する。
割当先LPAR633は、論理アダプタ632に対応するVF210が割り当てられたI/O LPAR150を識別するための情報が格納される。
図9は、本発明の第1の実施形態におけるリソース割当管理表640の一例を示す説明図である。
リソース割当管理表640は、ゲストLPAR情報642及びI/O LPAR情報643を含む。
ゲストLPAR情報642は、ゲストLPAR115に割り当てられた計算機リソースに関する情報を格納する。具体的には、ゲストLPAR情報642は、LPAR番号6421、プロセッサコア数6422、メモリ6423、及び仮想アダプタ6424を含む。
LPAR番号6421は、ゲストLPAR115を一意に識別するための識別子を格納する。
プロセッサコア数6422は、LPAR番号6421に対応するゲストLPAR115に割り当てられるプロセッサコア410の数を格納する。
メモリ6423は、LPAR番号6421に対応するゲストLPAR115に割り当てられるメモリ容量を格納する。
仮想アダプタ6424は、LPAR番号6421に対応するゲストLPAR115に割り当てられる仮想I/Oアダプタ145を一意に識別するための識別子を格納する。
I/O LPAR情報643は、I/O LPAR150に割り当てられた計算機リソースに関する情報を格納する。具体的には、I/O LPAR情報643は、LPAR番号6431、プロセッサコア数6432、メモリ6433、I/Oアダプタ6434、及び論理アダプタ6435を含む。
LPAR番号6431は、I/O LPAR150を一意に識別するための識別子を格納する。
プロセッサコア数6432は、LPAR番号6431に対応するI/O LPAR150に割り当てられるプロセッサコア410の数を格納する。
メモリ6433は、LPAR番号6431に対応するI/O LPAR150に割り当てられるメモリ容量を格納する。
I/Oアダプタ6434は、LPAR番号6431に対応するI/O LPAR150に割り当てられるVF210を生成したPF220を識別するための識別子を格納する。
論理アダプタ6435は、LPAR番号6431に対応するI/O LPAR150に割り当てられるVF210を識別するための識別子を格納する。
次に、QoS換算データベース340について説明する。
図10は、本発明の第1の実施形態におけるQoS換算データベース340の詳細を示す説明図である。
QoS換算データベース340は、I/F機能表700、プラットフォーム仕様表710、プロセッサ性能換算表720、リソース換算表730、QoS設定変換表740、及びI/F設定仕様表750を含む。
I/F機能表700は、物理サーバ100に接続可能なI/Oアダプタ200が備える機能に関する情報を格納する。I/F機能表700の詳細については、図11を用いて後述する。
プラットフォーム仕様表710は、物理サーバ100に対応する計算機のハードウェア構成に関する情報を格納する。プラットフォーム仕様表710の詳細については、図12を用いて後述する。
プロセッサ性能換算表720は、物理サーバ100が備えるプロセッサ405の性能に関する情報を格納する。プロセッサ性能換算表720の詳細については、図13を用いて後述する。
リソース換算表730は、I/O LPAR150に割り当てる計算機リソースを算出するための情報を格納する。リソース換算表730の詳細については、図14を用いて後述する。
QoS設定変換表740は、管理用コンソール520から送信されたQoSポリシ500をVF210に対して設定可能なQoSの情報に変換するための情報を格納する。QoS設定変換表740の詳細については、図15を用いて後述する。
I/F設定仕様表750は、VF210に対するQoSを設定するために必要な情報を格納する。I/F設定仕様表750の詳細については、図16を用いて後述する。
図11は、本発明の第1の実施形態のI/F機能表700の一例を示す説明図である。
I/F機能表700は、Vendor ID701、Device ID702、アダプタ種別703、総帯域704、最大論理アダプタ数705、及びCapability706を含む。
Vendor ID701は、I/Oアダプタ200の製造元を識別するための識別情報を格納する。例えば、Vendor ID701にはI/Oアダプタ200の製造会社等の名称が格納される。
Device ID702は、Vendor ID701に対応する製造会社が製造するI/Oアダプタを識別するための識別情報を格納する。例えば、Device ID702にはI/Oアダプタの型番等が格納される。
アダプタ種別703は、Device ID702に対応するI/Oアダプタの種別が格納される。アダプタ種別703には、例えば、「NIC」、「HBA」等の情報が格納される。
総帯域704は、Device ID702に対応するI/Oアダプタの総帯域幅の情報が格納される。
最大論理アダプタ数705は、Device ID702に対応するI/Oアダプタに生成可能なVF210の数を格納する。
Capability706は、Device ID702に対応するI/Oアダプタが備える機能に関する情報が格納される。本実施形態では、Capability706には、I/Oアダプタが備えるなQoS機能及び負荷分散機能の情報が格納される。
なお、アダプタ種別703が「NIC」であるエントリのCapability706には、ジャンボフレームに対応しているか否かを表す情報も含まれる。
図12は、本発明の第1の実施形態のプラットフォーム仕様表710の一例を示す説明図である。
プラットフォーム仕様表710は、Vendor ID711、プラットフォーム712、モデル/リビジョン713、I/Oバス仕様714、プロセッサ仕様715、及びメモリ仕様716を含む。
Vendor ID711は、物理サーバ100の製造元を識別するための識別情報を格納する。例えば、Vendor ID711には物理サーバ100の製造会社等の名称が格納される。
プラットフォーム712は、Vendor ID711に対応する製造会社が製造する物理サーバ100を識別するための識別情報を格納する。
モデル/リビジョン713は、プラットフォーム712に対応する物理サーバ100のモデル名と、リビジョンとを格納する。
I/Oバス仕様714は、プラットフォーム712に対応する物理サーバ100が備えるI/Oバスの規格情報を格納する。
プロセッサ仕様715は、プラットフォーム712に対応する物理サーバ100が備えるプロセッサ405に関する情報を格納する。具体的には、プロセッサ仕様715は、Vendor ID7151、プロセッサ7152、周波数7153、コア数7154、及びL3(7155)を含む。
Vendor ID7151は、物理サーバ100が備えるプロセッサ405の製造元を識別するための識別情報を格納する。例えば、Vendor ID7151にはプロセッサ405の製造会社等の名称が格納される。
プロセッサ7152は、Vendor ID7151に対応する製造会社が製造するプロセッサ405を識別するための識別情報を格納する。
周波数7153は、プロセッサ7152に対応するプロセッサ405の周波数を格納する。
コア数7154は、プロセッサ7152に対応するプロセッサ405が備えるプロセッサコア410の数を格納する。
L3(7155)は、プロセッサ7152に対応するプロセッサ405が備えるL3キャッシュの容量を格納する。
以上が、プロセッサ仕様715に格納される情報の説明である。
メモリ仕様716は、プラットフォーム712に対応する物理サーバ100が備えるメモリモジュール450に関する情報を格納する。具体的には、メモリ仕様716は、規格7161及び周波数7162を含む。
規格7161は、プラットフォーム712に対応する物理サーバ100が対応するメモリモジュールの規格を格納する。
周波数7162は、プラットフォーム712に対応する物理サーバ100が対応するメモリモジュールの周波数を格納する。
図13は、本発明の第1の実施形態のプロセッサ性能換算表720の一例を示す説明図である。
プロセッサ性能換算表720は、Vendor ID721、プロセッサ722、コア数723、L3(724)、及び性能比725を含む。
Vendor ID721は、プロセッサ405の製造元を識別するための識別情報を格納する。例えば、Vendor ID721にはプロセッサ405の製造会社等の名称が格納される。
プロセッサ722は、Vendor ID721に対応する製造会社が製造するプロセッサ405を識別するための識別情報を格納する。
コア数723は、プロセッサ722に対応するプロセッサ405が備えるプロセッサコア410の数を格納する。
L3(724)は、プロセッサ722に対応するプロセッサ405が備えるL3キャッシュの容量を格納する。
性能比725は、プロセッサ722に対応するプロセッサ405の周波数あたりの性能比を格納する。図13に示す例では、プロセッサ722が「Woodcrest」であるプロセッサ405の性能を基準にした値が性能比725に格納される。
図14は、本発明の第1の実施形態のリソース換算表730の一例を示す説明図である。
リソース換算表730は、I/O LPAR150に割り当てる帯域幅に必要な計算機リソースを算出するための情報が格納する。具体的には、リソース換算表730は、Vendor ID731、アダプタ種別732、総帯域733、オフロードエンジン734、ジャンボフレーム735、単位帯域736、プロセッサ世代737、プロセッサリソース738、及びメモリリソース739を含む。
Vendor ID731は、I/Oアダプタ200の製造元を識別するための識別情報を格納する。例えば、Vendor ID731にはI/Oアダプタ200の製造会社等の名称が格納される。
アダプタ種別732は、I/Oアダプタ200の種別に関する情報を格納する。
総帯域733は、I/Oアダプタ200の全帯域幅を格納する。
オフロードエンジン734は、I/Oアダプタ200がオフロードエンジンを備えるか否かの情報を格納する。図14に示す例では、I/Oアダプタ200がオフロードエンジン備えている場合、オフロードエンジン734には「Yes」が格納され、I/Oアダプタ200がオフロードエンジンを備えていない場合、オフロードエンジン734には「No」が格納される。
ジャンボフレーム735は、I/Oアダプタ200が備えるジャンボフレーム機能を有効にするか否かの情報が格納される。図14に示す例では、ジャンボフレーム機能を有効にする場合、ジャンボフレーム735には「Yes」が格納され、ジャンボフレーム機能を無効にする場合、ジャンボフレーム735には「No」が格納される。
単位帯域736は、I/O LPAR150に割り当てる計算機リソースの算出基準となる帯域幅を格納する。図14に示す例では、1Gbpsあたりに必要な計算機リソースに関する情報が格納される。
プロセッサ世代737は、I/O LPAR150に割り当てるプロセッサコア410の数を算出する基準となるプロセッサ405の種別に関する情報を格納する。
プロセッサリソース738は、単位帯域736に示された値に対して、I/O LPAR150が必要とするプロセッサリソースの情報を格納する。本実施形態では、プロセッサリソース738には、プロセッサコア410の数(個)と当該プロセッサコア410の周波数(Hz)とを乗算した値が格納される。
メモリリソース739は、単位帯域736に示された値に対して、I/O LPAR150が必要とするメモリ容量が格納される。
なお、Vendor ID731が「Generic」のエントリは、対応するI/Oアダプタ200の仕様が不明なI/Oアダプタ200を表すエントリである。
図15は、本発明の第1の実施形態のQoS設定変換表740の一例を示す説明図である。
QoS設定変換表740は、QoSポリシ500とI/Oアダプタ200が備えるQoS機能との対応関係を格納する。
QoS設定変換表740は、QoSポリシ741及びQoS機能742を含む。
QoSポリシ741は、管理用コンソール520から入力されたQoSポリシ500に対応する情報であり、要求されるQoSの種別が格納される。具体的には、QoSポリシ741は、優先度7411、帯域配分7412、最大帯域7413、最小帯域7414、及び遅延保証7415を含む。
QoS機能742は、I/Oアダプタ200が備えるQoS機能に関する情報である。具体的には、QoS機能742は、優先度7421、帯域配分7422、最大帯域7423、最小帯域7424、及び遅延保証7425を含む。
I/Oアダプタ200が備えるQoS機能が、QoSポリシ741によって要求されたQoSと一致する場合、入力されたQoSポリシ500に含まれる設定パラメータがそのままI/Oアダプタ200に設定される。
一方、I/Oアダプタ200が備えるQoS機能が、QoSポリシ741によって要求されるQoSと一致しない場合、入力されたQoSポリシ500に含まれる設定パラメータがI/Oアダプタ200が備える各QoS機能に対応する設定パラメータに変換される。
図15に示す例では、例えば、以下のような変換規則を用いてQoSポリシ500に含まれる設定パラメータが変換される。
換算1では、例えば以下の通りである。QoSポリシ500に含まれる優先度の設定パラメータが「高」である場合には、帯域配分の設定パラメータが「80%」となるように変換される。QoSポリシ500に含まれる優先度の設定パラメータが「中」である場合には、帯域配分の設定パラメータが「50%」となるように変換される。QoSポリシ500に含まれる優先度の設定パラメータが「低」である場合には、帯域配分の設定パラメータが「20%」になるように変換される。
換算2は、例えば以下の通りである。帯域配分の設定パラメータが「0%〜20%」である場合には優先度の設定パラメータが「低」になるように変換される。帯域配分の設定パラメータが「20%〜80%」である場合には優先度の設定パラメータが「中」になるように変換される。帯域配分の設定パラメータが「80%〜100%」である場合には優先度の設定パラメータが「高」になるように変換される。
換算3は、例えば以下の通りである。QoSポリシ500に遅延保証の設定パラメータが含まれる場合、遅延保証が設定されないゲストLPAR115の最大帯域の合計値が一定以下になるように制御し、遅延保証が設定されるゲストLPAR115の最小帯域を確保するような設定パラメータに変換される。
換算4は、例えば以下の通りである。QoSポリシ500に遅延保証の設定パラメータが含まれる場合、遅延保証が設定されるゲストLPAR115に予め設定された最小帯域を割り当てるような設定パラメータに変換される。
換算5は、例えば以下の通りである。まず、I/Oアダプタ200の全割当帯域に基づいた相対配分が算出される。このとき、算出された相対配分が「0%〜20%」である場合には、優先度の設定パラメータが「低」になるように変換される。また、算出された相対配分が「20%〜100%」である場合には、優先度の設定パラメータが「中」になるように変換される。
換算6は、例えば以下の通りである。I/Oアダプタ200の全割当帯域に基づいた相対配分が算出され、算出された相対配分を割り当てるための設定パラメータに変換される。
換算7は、例えば以下の通りである。まず、I/Oアダプタ200の全割当帯域に基づいた相対配分が算出される。このとき、算出された相対配分が「0%〜80%」である場合には、優先度が「中」になるように変換される。また、算出された相対配分が「80%〜100%」である場合には、優先度が「高」になるように変換される。
換算8は、例えば以下の通りである。I/Oアダプタ200の全割当帯域に基づいた相対配分が算出され、算出された相対配分を割り当てるための設定パラメータに変換される。
換算9は、例えば以下の通りである。QoSポリシ500に遅延保証の設定パラメータが含まれる場合、優先度の設定パラメータが「高」になるように変換される。
換算10は、例えば以下の通りである。QoSポリシ500に遅延保証の設定が含まれる場合、遅延保証が設定されていないゲストLPAR115の最大帯域の合計値が一定以下になるように制御し、遅延保証が設定されるゲストLPAR115の最小帯域を確保するように設定パラメータが変換される。
換算11は、例えば以下の通りである。QoSポリシ500に遅延保証の設定パラメータが含まれる場合、遅延保証が設定されるゲストLPAR115に最小帯域を割り当てるように設定パラメータが変換される。
なお、以上の変換規則は一例であり、他の変換規則を用いてもよい。本実施形態では、QoS設定変換表740に基づいて、QoSポリシ500に含まれるQoSの設定パラメータがI/Oアダプタ200に設定可能なQoSの設定パラメータに変換される。
図16は、本発明の第1の実施形態のI/F設定仕様表750の一例を示す説明図である。
I/F設定仕様表750は、Vendor ID751、Device ID752、設定項目753、機能名754、パラメータ仕様755、及びレジスタ仕様756を含む。
Vendor ID751は、I/Oアダプタ200の製造元を識別するための識別情報を格納する。例えば、Vendor ID751にはI/Oアダプタ200の製造会社等の名称が格納される。
Device ID752は、Vendor ID751に対応する製造会社が製造するI/Oアダプタを識別するための識別情報を格納する。例えば、Device ID752にはI/Oアダプタの型番等が格納される。
設定項目753は、Device ID752に対応するI/Oアダプタ200が備える機能の項目を格納する。
機能名754は、Device ID752に対応するI/Oアダプタ200における設定項目753に対応する機能の名称を格納する。
パラメータ仕様755は、設定項目753に対応する機能に設定するパラメータの内容を格納する。
レジスタ仕様756は、設定項目753に対応する各機能にパラメータを設定するレジスタに関する情報を格納する。具体的には、レジスタ仕様756は、offset7561、size7562、及びbitmask7563を含む。
offset7561は、設定項目753対応する機能にパラメータを設定するためのレジスタの位置を格納する。
size7562は、設定項目753対応する機能にパラメータを設定するためのレジスタのサイズを格納する。
bitmask7563は、設定項目753対応する機能にパラメータを設定するためのレジスタのビットマスクを格納する。
図11〜図16までが、QoS換算データベース340が備える情報の説明である。
次に、具体的な処理の説明をする。
図17は、本発明の第1の実施形態の物理サーバ100が実行する処理を説明するフローチャートである。
本実施形態の初期状態では、ハイパバイザ190及び管理用LPAR170のみが存在する。ハイパバイザ190は、I/Oアダプタ200を認識し、I/Oアダプタ200のPF220を管理用LPAR170に割り当て、管理用LPAR170は物理アダプタドライバ(PFD)185を介してI/Oアダプタ200の初期化処理を実行する。初期化処理によってI/Oアダプタ200にVF210が生成される。
物理サーバ100上で稼動する管理用LPAR170は、管理用コンソール520からリソース割当要求540及びQoSポリシ500を受信する(ステップ1701)。
ここで、リソース割当要求540及びQoSポリシ500の一例について説明する。
図18は、本発明の第1の実施形態のリソース割当要求540の一例を示す説明図である。
リソース割当要求540は、仮想化部541、プロセッサ数542、メモリ543、及び物理I/Oアダプタ544を含む。
仮想化部541は、新たに生成される仮想化部110を識別するための識別子を格納する。なお、仮想化部541の代わりにゲストLPAR115の識別子を用いてもよい。
プロセッサ数542は、新たに生成される仮想化部110を構成するゲストLPAR115に割り当てるプロセッサコア410の数を格納する。
メモリ543は、新たに生成される仮想化部110を構成するゲストLPAR115に割り当てるメモリ容量を格納する。
物理I/Oアダプタ544は、新たに生成される仮想化部110に割り当てるI/Oアダプタ200を識別するための識別子を格納する。本実施形態では、物理I/Oアダプタ544には、PF220を識別するための識別子が格納される。
図19は、本発明の第1の実施形態のQoSポリシ500の一例を示す説明図である。
QoSポリシ500は、仮想化部501、アダプタ種別502、優先度503、帯域配分504、最大帯域505、最小帯域506、遅延保証507、及び品質保証508を含む。
仮想化部501は、新たに生成される仮想化部110を識別するための識別子を格納する。
アダプタ種別502は、新たに生成される仮想化部110を構成するI/O LPAR150に割り当てられるVF210の種別を格納する。
優先度503、帯域配分504、最大帯域505、最小帯域506、及び遅延保証507は、VF210に設定するQoSの設定パラメータを格納する。なお、対応するQoS機能の設定を行わない場合には、「−」が格納される。
図17の説明に戻る。
管理用LPAR170は、受信したリソース割当要求350に基づいて、新たに生成される仮想化部110を構成するゲストLPAR115に割り当てる計算機リソース(プロセッサコア410の数及びメモリ容量)が存在するか否かをハイパバイザ190に問い合わせる(ステップ1702)。
当該問い合わせ受けたハイパバイザ190は、リソースプール管理表600を参照し、新たに生成される仮想化部110を構成するゲストLPAR115に割り当てる計算機リソースが物理サーバ100に存在するか否かを判定する。ハイパバイザ190は、当該判定結果を管理用LPAR170に送信する。
ゲストLPAR115に割り当てる計算機リソースが物理サーバ100に存在すると判定された場合、管理用LPAR170は、受信したリソース割当要求350に基づいて、新たに生成される仮想化部110を構成するI/O LPAR150に割り当てるVF210が存在するか否かをハイパバイザ190に問い合わせる(ステップ1703)。
当該問い合わせを受けたハイパバイザ190は、論理アダプタ割当管理表630を参照して、新たに生成される仮想化部110を構成するI/O LPAR150に割り当てるVF210があるか否かを判定する。
具体的には、ハイパバイザ190は、リソース割当要求350の物理I/Oアダプタ544に対応するI/Oアダプタ200のエントリを参照し、割当先LPAR633が「未」であるVF210が存在するか否かを判定する。要求されたI/Oアダプタ200に割当先LPAR633が「未」であるエントリが存在する場合に、新たに生成される仮想化部110に割り当て可能なVF210があると判定される。
ハイパバイザ190は、当該判定結果を管理用LPAR170に送信する。
新たに生成される仮想化部110を構成するI/O LPAR150に割り当てるVF210があると判定された場合、管理用LPAR170は、受信したQoSポリシ500に基づいて、ハイパバイザ190に、当該I/O LPAR150に割り当てられるVF210に対するQoSの設定を要求する(ステップ1704)。
QoSの設定要求を受信したハイパバイザ190は、QoSポリシ500に基づいて、要求されるQoSを実現するためにVF210に設定する情報を生成する。具体的な処理については、図21を用いて後述する。以下、要求されるQoSを実現するためにVF210に設定する情報をQoS設定情報とも記載する。
次に、管理用LPAR170は、ハイパバイザ190に、新たに生成される仮想化部110を構成するI/O LPAR150に割り当てる計算機リソースの算出を要求する(ステップ1705)。
当該要求を受信したハイパバイザ190は、I/O LPAR150に割り当てる計算機リソースを算出する。具体的な処理については図22を用いて後述する。このとき、算出された計算機リソースに基づいて、リソースプール管理表600が更新される。
次に、管理用LPAR170は、ハイパバイザ190に負荷分散設定処理の実行を要求する(ステップ1706)。
当該要求を受信したハイパバイザ190は、負荷分散設定処理を実行する。具体的な処理の内容については図24を用いて後述する。
管理用LPAR170は、VF210及び計算機リソースをI/O LPAR150に割り当てるようにハイパバイザ190に要求する(ステップ1707)。
当該要求を受信したハイパバイザ190は、VF210及び計算機リソースをI/O LPAR150に割り当てることによって、ゲストLPAR115のI/Oアクセスを処理するI/O LPAR150を生成する。
このとき、プロセッサ割当管理表610、メモリ割当管理表620、及び論理アダプタ割当管理表630、及びリソース割当管理表640が更新される。なお、ハイパバイザ190は、生成されたI/O LPAR150に関する情報をリソース割当管理表640のI/O LPAR情報643に格納する。
管理用LPAR170は、生成されたI/O LPAR150の起動をハイパバイザ190に要求する(ステップ1708)。
当該要求を受信したハイパバイザ190は、生成されたI/O LPAR150を起動させる。
管理用LPAR170は、物理サーバ100に接続されるI/Oアダプタ200のPF220に対してVF210の初期化を要求する(ステップ1709)。
当該要求を受信したPF220は、I/Oアダプタ200の初期化処理を実行する。
管理用LPAR170は、ハイパバイザ190に、ゲストLPAR115に割り当てる仮想I/Oアダプタ145に必要なリソースを確保するように要求する(ステップ1710)。
当該要求を受信したハイパバイザ190は、仮想I/Oアダプタ145を実現するために必要な、メモリ領域、I/O領域及びPCIコンフィグ領域等を確保する。
管理用LPAR170は、ハイパバイザ190に、仮想I/Oアダプタ145及びリソース割当要求540によって指定された計算機リソースをゲストLPAR115に割り当てるように要求する(ステップ1711)。
当該要求を受信したハイパバイザ190は、まず、ステップ1710において確保されたリソースに基づいて仮想I/Oアダプタ145を生成する。さらに、ハイパバイザ190は、生成された仮想I/Oアダプタ145と、リソース割当要求540によって指定された計算機リソースをゲストLPAR115に割り当てることによってゲストLPAR115を生成する。
このとき、リソースプール管理表600、プロセッサ割当管理表610、メモリ割当管理表620及びリソース割当管理表640が更新される。なお、ハイパバイザ190は、生成されたゲストLPAR115に関する情報を、リソース割当管理表640のゲストLPAR情報642に格納する。これによって、ゲストLPAR115とI/O LPAR150とが対応づけられる。
管理用LPAR170は、ハイパバイザ190に、生成されたゲストLPAR115の起動を要求し(ステップ1712)、処理を終了する。
当該要求を受信したハイパバイザ190は、生成されたゲストLPAR115を起動させる。
ステップ1702において新たに生成される仮想化部110を構成するゲストLPAR115に割り当てる計算機リソースが存在しないと判定された場合、又は、ステップ1703において新たに生成される仮想化部110を構成するI/O LPAR150に割り当てるVF210が存在しないと判定された場合、管理用LPAR170は、割当て失敗を管理用コンソール520に通知し(ステップ1713)、処理を終了する。
なお、図17に示す処理は、整合性を失わなければ処理順を変更してもよい。
図20は、本発明の第1の実施形態のハイパバイザ190が備える各構成間の入出力を示す説明図である。
QoS個別I/F設定部310は、QoSポリシ500及びリソース割当要求540が入力されると、QoS換算データベース340からI/F機能表700及びQoS設定変換表740を読み出して、図21において説明する処理を実行する。
QoS個別I/F設定部310は、I/O LPARリソース算出部320に処理結果として割当帯域を出力し、また、負荷分散個別I/F設定部330及び物理アダプタドライバ(PFD)185に処理結果としてQoS設定情報を出力する。
割当帯域が入力されたI/O LPARリソース算出部320は、QoS換算データベース340からプラットフォーム仕様表710、プロセッサ性能換算表720、及びリソース換算表730を読み出して、図22及び図23において説明する処理を実行する。
I/O LPARリソース算出部320は、リソース管理部300に、処理結果としてI/O LPAR150に割り当てる計算機リソースに関する情報を出力する。
当該計算機リソースに関する情報が入力されたリソース管理部300は、入力された計算機リソースに関する情報に基づいて、リソース割当管理表640を更新する。
また、リソース管理部300は、プロセッサ割当管理表610及びリソース割当管理表640を負荷分散個別I/F設定部330に出力する。
負荷分散個別I/F設定部330は、QoS設定情報、プロセッサ割当管理表610、リソース割当管理表640、及びI/F設定仕様表750を入力として図24において説明する処理を実行する。
負荷分散個別I/F設定部330は、物理アダプタドライバ185に処理結果として負荷分散設定情報を出力する。
物理アダプタドライバ185は、QoS個別I/F設定部310から入力されたQoS設定情報に基づいて、I/O LPAR150に割り当てるVF210の対するQoSを設定する。また、物理アダプタドライバ185は、入力された負荷分散設定情報に基づいて、I/O LPAR150における負荷分散処理に必要な情報を設定する。
図21は、本発明の第1の実施形態のQoS個別I/F設定部310が実行する処理を説明するフローチャートである。
QoS個別I/F設定部310は、管理用LPAR170からQoSポリシ500及びリソース割当要求540を受信する(ステップ2101)。
まず、QoS個別I/F設定部310は、リソース割当要求540を参照し、一つのPF220を選択する(ステップ2102)。例えば、リソース割当要求540における上位のエントリを選択する方法が考えられる。
以下、選択されたPF220を対象PF220とも記載する。
このとき、QoS個別I/F設定部310は、対象PF220のバス番号、デバイス番号及び機能番号に基づいて、I/Oアダプタ200のコンフィグレーション領域を参照して、対象PF220に対応するI/Oアダプタ200のVendor ID及びDevice IDを取得する。
QoS個別I/F設定部310は、ステップ2101からステップ2110において、対象PF220が生成するVF210に対するQoSの設定に必要な情報を生成するための処理を実行する。
図18に示す例では、PF220Aに対応するVF210Aに対するQoS設定情報が生成され、その次に、PF220Bに対応するVF210Bについて同様の処理が実行される。
QoS個別I/F設定部310は、対象PF220のVendor ID及びDevice IDに基づいてI/F機能表700を参照し、対象PF220(I/Oアダプタ200)が備えるQoS機能を取得する(ステップ2103)。
具体的には、QoS個別I/F設定部310は、対象PF220のVendor ID及びDevice IDを検索キーとして、I/F機能表700から対象PF220に対応するエントリを検索する。次に、QoS個別I/F設定部310は、対応するエントリのCapability706を参照して、対象PF220が備えるQoS機能を取得する。
まず、QoS個別I/F設定部310は、QoSポリシ500を参照して、対象PF220が生成したVF210が割り当てられる仮想化部110を一つ選択する(ステップ2104)。
選択方法としては、QoSポリシ500の品質保証508及び優先度503に基づいて選択する方法が考えられる。例えば、QoS個別I/F設定部310は、品質保証508が「guaranty」であるエントリを選択し、さらに、優先度503が「高」であるエントリを選択する。これは、QoSを確保する必要性の高い仮想化部110から順にQoS設定情報を生成するためである。
以下、選択された仮想化部110を対象仮想化部110とも記載する。
QoS個別I/F設定部310は、QoSポリシ500に基づいて、VF210に対するQoS設定情報を決定し、また、割当帯域を算出する(ステップ2105)。具体的には、以下のような処理が実行される。
QoS個別I/F設定部310は、QoSポリシ500から対象仮想化部110に割り当てられるVF210に対して要求されるQoSの設定パラメータを取得する。
QoS個別I/F設定部310は、ステップ1020において取得された対象PF220が備えるQoS機能、及び、取得されたQoSの設定パラメータに基づいてQoS設定変換表740を参照して、対象仮想化部110に割り当てられるVF210が対応可能なQoSを特定し、要求されたQoSを実現するための当該QoSの設定パラメータに変換する。当該設定パラメータが、VF210に対するQoS設定情報となる。
生成されたQoS設定情報は、PF220に送信される。
また、QoS個別I/F設定部310は、ステップ2103において取得された対象PF220が備えるQoS機能、及び、取得されたQoSポリシ500に含まれるQoSの設定パラメータに基づいてQoS設定変換表740を参照して、対象仮想化部110に割り当てられるVF210における帯域幅、すなわち、割当帯域を算出する。
具体的には、QoS個別I/F設定部310は、変換規則に基づいて、QoSポリシ500に含まれるQoSの設定パラメータから、割当帯域を算出する。
QoS個別I/F設定部310は、対象仮想化部110に割り当てられるVF210の識別子及び算出された割当帯域とを、I/O LPARリソース算出部320に出力する。
なお、I/Oアダプタ200の種別がNICである場合には、ジャンボフレームを有効にするか否かの情報も出力される。また、QoSポリシ500に含まれる情報も出力されてもよい。
QoS個別I/F設定部310は、生成されたQoS設定情報が要求されるQoSを満たすものであるか否かを判定する(ステップ2107)。
例えば、QoSポリシ500の帯域配分504に設定パラメータが格納され、品質保証508に「guaranty」が格納され、また、最大帯域505に設定パラメータが格納される場合に、割当帯域が式(1)を満たすか否かが判定される。
割当帯域 < 帯域配分504×総帯域704…(1)
また、QoSポリシ500の最小帯域506に設定パラメータが格納され、品質保証508に「guaranty」が格納され、また、最大帯域505に設定パラメータが格納される場合に、割当帯域が式(2)を満たすか否かが判定される。
割当帯域 < 最小帯域506…(2)
生成されたQoS設定情報が要求されるQoSを満たすものでないと判定された場合、QoS個別I/F設定部310は、割り当てる計算機リソースが不足している旨を管理用コンソール520に送信し、処理を終了する(ステップ2111)。
生成されたQoS設定が要求されるQoSを満たすものであると判定された場合、QoS個別I/F設定部310は、対象PF220が生成するVF210が割り当てられる全ての仮想化部110について処理が実行されたか否かを判定する(ステップ2108)。
全ての仮想化部110について処理が実行されていないと判定された場合、QoS個別I/F設定部310は、ステップ2105に戻り、他の仮想化部110について同様の処理(ステップ2105〜ステップ2108)を実行する。
全ての仮想化部110に割り当てるVF210ついて処理が実行されたと判定された場合、QoS個別I/F設定部310は、I/F設定仕様表750を読み出し、読み出されたI/F設定仕様表750に基づいて、決定されたQoS設定情報の設定依頼を物理アダプタドライバ(PFD)185に送信する(ステップ2109)。
物理アダプタドライバ(PFD)185は、受信した設定依頼に含まれるQoS設定情報に基づいて、対象PF220が生成するVF210に対してQoSを設定する。
次に、QoS個別I/F設定部310は、全ての対象PF220について処理が実行されたか否かを判定する(ステップ2110)。
全ての対象PF220について処理が実行されていないと判定された場合、QoS個別I/F設定部310は、ステップ2102に戻り同様の処理(ステップ2102〜ステップ2111)を実行する。
全ての対象PF220について処理が実行されたと判定された場合、QoS個別I/F設定部310は、処理を終了する。
図22は、本発明の第1の実施形態のI/O LPARリソース算出部320が実行する処理を説明するフローチャートである。
I/O LPARリソース算出部320は、QoS個別I/F設定部310から入力されたVF210の識別子及び割当帯域とを取得する(ステップ2201)。
I/O LPARリソース算出部320は、一つの仮想化部110を選択する(ステップ2202)。例えば、QoSポリシ500の仮想化部501を参照することによって一つの仮想化部110を選択できる。
ステップ2202〜ステップ2213の処理によって、仮想化部110を構成するI/O LPAR150に割り当てる計算機リソースが算出される。
I/O LPARリソース算出部320は、I/O LPAR150に割り当てる計算機リソースを初期化する(ステップ2203)。具体的には、I/O LPARリソース算出部320は、プロセッサコア数を「0」、メモリ容量を「0」に初期化する。
次に、I/O LPARリソース算出部320は、I/O LPAR150に割り当てられるVF210を一つ選択する(ステップ2204)。具体的には、VF210を生成するPF220が選択される。以下、選択されたPF220を対象PF220とも記載する。
まず、I/O LPARリソース算出部320は、対象PF220が生成したVF210に要求されるQoSを実現するために必要な計算機リソースを算出する。
I/O LPARリソース算出部320は、対象PF220のVendor ID、アダプタ種別を検索キーとして、リソース換算表730に対象PF220に対応するエントリが存在するか否かを判定する(ステップ2205)。
具体的には、I/O LPARリソース算出部320は、リソース換算表730を参照し、対象PF220のVendor ID及びDevive IDに対応するエントリが存在するか否かを判定する。なお、対象PF220のVendor ID及びDevice IDは、ステップ2102と同様の方法を用いることによって取得できる。
対象PF220に対応するエントリが存在しないと判定された場合、I/O LPARリソース算出部320は、Vendor ID731が「Generic」であるエントリの情報を取得し(ステップ2207)、ステップ2208に進む。
なお、オフロードエンジンの有無は対象PF220から取得できるため、対象PF220から取得された情報に基づいて対応するエントリの情報が取得される。
対象PF220に対応するエントリが存在すると判定された場合、I/O LPARリソース算出部320は、リソース換算表730から対象PF220に対応するエントリの情報を取得する(ステップ2206)。
I/O LPARリソース算出部320は、ステップ2206又はステップ2207において取得された情報に基づいて、I/O LPAR150に割り当てる計算機リソースを算出する(ステップ2208)。具体的な処理は図23を用いて後述する。
I/O LPARリソース算出部320は、I/O LPAR150に割り当てる計算機リソースを更新する(ステップ2209)。
具体的には、以下に示す式(3)、(4)を用いて算出される。
プロセッサコア数=前回処理で算出したプロセッサコア数+換算プロセッサコア数…(3)
メモリ容量=前回処理で算出したメモリ容量+換算メモリ容量…(4)
ここで、換算プロセッサコア数は新たに算出されたプロセッサコア数を表し、換算メモリ容量は新たに算出されたメモリ容量を表す。式(3)、(4)によって、I/O LPAR150に必要な計算機リソースを算出できる。
I/O LPARリソース算出部320は、選択された仮想化部110において、全ての対象PF220について計算機リソースが算出されたか否かを判定する(ステップ2210)。すなわち、I/O LPAR150に割り当てられる全てのVF210に対して必要となる計算機リソースが算出されたか否かが判定される。
選択された仮想化部110において、全ての対象PF220に対する計算機リソースが算出されていないと判定された場合、I/O LPARリソース算出部320は、ステップ2204に戻り、他の対象PF220を選択して同様の処理(ステップ2204〜ステップ2210)を実行する。
選択された仮想化部110において、全ての対象PF220に対する計算機リソースが算出されたと判定された場合、I/O LPARリソース算出部320は、算出された計算機リソースが割り当て可能であるか否かを判定する(ステップ2211)。
具体的には、I/O LPARリソース算出部320は、リソースプール管理表600を参照し、算出された計算機リソースが割り当て可能であるか否かを判定する。
算出された計算機リソースが割り当てできないと判定された場合、I/O LPARリソース算出部320は、計算機リソースが不足している旨を管理用コンソール520に送信し(ステップ2214)、処理を終了する。
算出された計算機リソースが割り当て可能であると判定された場合、I/O LPARリソース算出部320は、算出された計算機リソースを、I/O LPAR150に割り当てる計算機リソースとして決定する(ステップ2212)。
具体的には、I/O LPARリソース算出部320は、算出された計算機リソースを割り当て可能な値に変換した後に、当該値で指定された計算機リソースをI/O LPAR150に割り当てる。
変換方法は、例えば、プロセッサコア数及びメモリ容量の小数点以下の値を切り上げて、当該プロセッサコア数及びメモリ容量を整数値として算出する。当該整数値をI/O LPAR150に割り当てるプロセッサコア数及びメモリ容量とする方法が考えられる。
次に、I/O LPARリソース算出部320は、全ての仮想化部110について処理が終了したか否かを判定する(ステップ2213)。
全ての仮想化部110について処理が終了していないと判定された場合、I/O LPARリソース算出部320は、ステップ2202に戻り、他の仮想化部110を選択して同様の処理(ステップ2202〜ステップ2214)を実行する。
全ての仮想化部110について処理が終了したと判定された場合、I/O LPARリソース算出部320は、割当帯域と算出された計算機リソースに関する情報とをリソース管理部300に送信し、処理を終了する。
リソース管理部300は、割当帯域と算出された計算機リソースに関する情報とを受信すると、受信した情報に基づいて、リソースプール管理表600、プロセッサ割当管理表610、メモリ割当管理表620、論理アダプタ割当管理表630、及びリソース割当管理表640を更新する。
図23は、本発明の第1の実施形態のI/O LPARリソース算出部320が実行する計算機リソースの算出処理を説明するフローチャートである。
I/O LPARリソース算出部320は、ステップ2206又はステップ2207においてリソース換算表730から取得された情報に基づいて、基準プロセッサを決定する(ステップ2301)。
具体的には、I/O LPARリソース算出部320は、リソース換算表730から取得された情報のプロセッサ世代737を基準プロセッサとして決定する。
次に、I/O LPARリソース算出部320は、暫定プロセッサコア数及び換算メモリ容量を算出する(ステップ2302)。
暫定プロセッサ数は、プロセッサリソース738及び割当帯域を式(5)に代入して算出できる。
暫定プロセッサコア数=プロセッサリソース×(割当帯域÷単位帯域)…(5)
換算メモリ容量は、メモリリソース739、単位帯域736及び割当帯域を式(6)に代入して算出できる。
換算メモリ容量=メモリリソース×(割当帯域÷単位帯域)…(6)
次に、I/O LPARリソース算出部320は、物理サーバ100におけるプロセッサ性能に基づいて、I/O LPAR150が必要とする換算プロセッサコア数を算出し(ステップ2303)、処理を終了する。
具体的には、I/O LPARリソース算出部320は、物理サーバ100の情報(Vendor ID、プロットフォーム、モデル及びリビジョン等)を取得する。当該情報は、公知の後述を用いてハイパバイザ190又は管理用LPAR170が取得することができる。
次に、I/O LPARリソース算出部320は、取得された物理サーバ100の情報に基づいてプラットフォーム仕様表710を参照して、該当するエントリを検索する。
I/O LPARリソース算出部320は、該当するエントリのプロセッサ7152及び決定された基準プロセッサ世代に基づいて、プロセッサ性能換算表720を参照し、式(7)を用いて換算プロセッサコア数を算出する。
換算プロセッサコア数=暫定プロセッサコア数×(基準プロセッサの性能比÷物理サーバのプロセッサの性能比)…(7)
以上の処理によって、換算プロセッサと換算メモリとが算出される。
図24は、本発明の第1の実施形態の負荷分散個別I/F設定部330が実行する処理を説明するフローチャートである。
負荷分散個別I/F設定部330は、リソース管理部300からプロセッサ割当管理表610を取得し、取得されたプロセッサ割当管理表610を参照して、プロセッサコア410が割り当てられるI/O LPAR150を特定する(ステップ2401)。
具体的には、負荷分散個別I/F設定部330は、取得されたプロセッサ割当管理表610のLPAR種別614が「I/O」であるエントリを抽出し、当該エントリの割当先LPAR613を参照してI/O LPAR150を特定する。
さらに、負荷分散個別I/F設定部330は、特定されたI/O LPAR150の識別子に基づいて、論理アダプタ割当管理表630を参照して、I/O LPAR150に割り当てられるVF210を生成したPF220を特定する。
負荷分散個別I/F設定部330は、特定されたPF220を一つ選択する(ステップ2402)。以下、選択されたPF220を対象PF220とも記載する。
このとき、対象PF220のVendor ID及びDevice IDも取得される。PF220のVendor ID及びDevice IDの取得方法は、ステップ2102と同一である。
以下、対象PF220についてステップ2402〜ステップ2410の処理が実行される。
まず、負荷分散個別I/F設定部330は、対象PF220のVendor ID及びDevice IDに基づいてI/F機能表700を参照し、対象PF220に対応するI/Oアダプタ200が負荷分散機能を備えるか否かを判定する(ステップ2403)。
具体的には、対象PF220と一致するエントリのCapability706に「負荷分散」又は「割り込み負荷分散」等の負荷分散機能が格納されるか否かが判定される。
対象PF220に対応するI/Oアダプタ200が負荷分散機能を備えていないと判定された場合、負荷分散個別I/F設定部330は、ステップ2410に進む。
対象PF220に対応するI/Oアダプタ200が負荷分散機能を備えていると判定された場合、負荷分散個別I/F設定部330は、対象PF220が生成したVF210が割り当てられる仮想化部110を一つ選択する(ステップ2404)。
以下、選択された仮想化部110を対象仮想化部110とも記載する。また、選択された仮想化部110に含まれるI/O LPAR150を対象I/O LPAR150とも記載する。
まず、負荷分散個別I/F設定部330は、リソース割当管理表640を参照して、対象I/O LPAR150に割り当てられているプロセッサコア410の数が「1」より大きいか否かを判定する(ステップ2405)。
対象I/O LPAR150に割り当てられているプロセッサコア410の数が「1」以下であると判定された場合、対象I/O LPAR150に対して負荷分散設定はできないため、負荷分散個別I/F設定部330は、ステップ2408に進む。
対象I/O LPAR150に割り当てられているプロセッサコア410の数が「1」より大きいと判定された場合、負荷分散個別I/F設定部330は、QoS個別I/F設定部310から入力されたQoS設定情報を参照して、対象I/O LPAR150に割り当てられるVF210に割り当てられるキューの数が「1」より大きいか否かを判定する(ステップ2406)。
対象I/O LPAR150に割り当てられるVF210に割り当てられるキューの数が「1」以下であると判定された場合、負荷分散個別I/F設定部330は、ステップ2408に進む。
対象I/O LPAR150に割り当てられるVF210に割り当てられるキューの数が「1」より大きいと判定された場合、負荷分散個別I/F設定部330は、負荷分散設定情報を生成する(ステップ2407)。
負荷分散の方法は、例えば、特許文献5のような公知技術を用いてもよいし、又は、非特許文献3に記載のRSS(Receive Side Scaling)を用いてもよい。なお、RSSは、I/Oアダプタ200が受信したI/Oを複数のプロセッサコア410に分散する機能である。
負荷分散個別I/F設定部330は、全ての対象I/O LPAR150について処理が実行されたか否かを判定する(ステップ2408)。
全ての対象I/O LPAR150について処理が実行されていないと判定された場合、負荷分散個別I/F設定部330は、ステップ2404に戻り同様の処理(ステップ2404〜ステップ2408)を実行する。
全ての対象I/O LPAR150について処理が実行されていないと判定された場合、負荷分散個別I/F設定部330は、I/F設定仕様表750を読み出し、読み出されたI/F設定仕様表750に基づいて、生成された負荷分散設定情報の設定を管理用LPAR170に依頼する(ステップ2409)。
当該依頼を受信した管理用LPAR170は、PFD185を介して、対象となるI/O LPAR150に割り当てられるプロセッサコア410への割り込みが均等になるようにVF210のキューを配分する。
負荷分散個別I/F設定部330は、全てのPF220について処理が終了したか否かを判定する(ステップ2410)。
全てのPF220について処理が終了していないと判定された場合、負荷分散個別I/F設定部330は、ステップ2402に戻り同様の処理(ステップ2042〜ステップ2410)を実行する。
全てのPF220について処理が終了したと判定された場合、負荷分散個別I/F設定部330は、処理を終了する。
図25A及び図25Bは、本発明の第1の実施形態における負荷分散設定の効果を示す説明図である。
図25Aは、負荷分散が設定されていないI/O LPAR150へのアクセス状態を示す。図25Bは、負荷分散が設定されたI/O LPAR150へのアクセス状態を示す。
図25Aでは、VF210が受信した受信パケット830がハッシュフィルタ820を介して受信キュー810−1、810−2に分割される。図25Aでは、負荷分散の設定がされていないため、受信キュー810−1、810−2から送信される受信割り込み800−1及び800−2が一つのプロセッサコア410−1に集中する。
一方、図25Bでは、受信キュー810−1、810−2のそれぞれに割り込み先のプロセッサコア410を指定する割り込みベクタ設定840−1、840−2が設定されている。そのため、受信割り込み800−1、800−2は、それぞれ、プロセッサコア410−1、410−2に分散する。プロセッサコア410への割り込み設定は、例えば、MSX−Iを用いることができる。
本発明の第1の実施形態によれば、QoSポリシ500に基づいて、I/O LPAR150に必要な計算機リソースを適切に算出できる。また、本発明の第1の実施形態によれば、管理者が手動で操作することなく、QoSポリシ500に基づいて、要求されたQoSを実現するためのQoSの設定パラメータが自動的に生成される。したがって、I/O LPAR150に必要な設定を適切かつ容易に実現できる。
[第1の実施形態の変形例]
第1の実施形態では、I/Oアダプタ200は1つのPF220を備えていたが、I/Oアダプタ200は2以上のPF220を備えてもよい。例えば、CNA(Converged Network Adapter)等が考えられる。
図26は、本発明の第1の実施形態の変形例におけるI/Oアダプタの一例を示す説明図である。
I/Oアダプタ2600は、HBA機能に相当するPF2610Aと、NIC機能に相当するPF2610Bとを備える。
I/Oアダプタ2600は、PF2610A、及び仮想的なHBAであるVF2620A−1〜VF2620A−3から構成されるHBA機能2615Aと、PF2610B、及び仮想的なNICであるVF2620B−1〜VF2620B−3から構成されるNIC機能2615Bとを備える。
このとき、ハイパバイザ190は、HBA機能2615A、及びNIC機能2615BについてQoSを設定し、また、I/O LPAR150にリソースを割り当てることができる。
具体的な処理については、第1の実施形態と同一であるため省略する。
[第2の実施形態]
第2の実施形態は、I/O LPAR150における実効帯域を取得し、動的にI/O LPAR150に割り当てる計算機リソースを変更するため点が第1の実施形態と異なる。
以下、第1の実施形態との差異を中心に説明する。
図27は、本発明の第2の実施形態における仮想計算機システムの論理構成の一例を示す説明図である。
第1の実施形態と比較して、AP155がQoSモニタ270を備え、OS160がQoSモニタ271を備え、また、PF220及びVF210がモニタリングレジスタ273を備える点が異なる。
QoSモニタ270、271、及びモニタリングレジスタ273は、各I/O LPAR150が使用する帯域幅を測定する。
なお、QoSモニタ270、271、及びモニタリングレジスタ273は、少なくともいずれかが備わっていればよい。すなわち、AP155、OS160、VF210又はPF220のいずれかが、I/O LPAR150の帯域幅を測定できればよい。
以下、AP155がQoSモニタ270を備える場合の処理について説明する。
図28は、本発明の第2の実施形態のAP155が備えるQoSモニタ270が実行する処理を説明するフローチャートである。なお、OS160が備えるQoSモニタ271、PF220及びVF210がモニタリングレジスタ273についても同様の処理が実行される。
QoSモニタ270は、周期的に、I/O LPAR150の状態情報を取得する(ステップ2801)。
I/O LPAR150の状態情報には、実効帯域、レイテンシ、I/O LPAR150に割り当てられたプロセッサコア410の利用率、I/O LPAR150に割り当てられたメモリ容量、及び、I/O LPAR150に割り当てられたメモリ容量の使用量等が含まれる。ここで、実効帯域とは、I/O LPAR150上に実際に流れるI/Oの流量を表す。なお、遅延保証が必要でない場合には、レイテンシは取得されなくてもよい。
QoSモニタ270は、取得されたI/O LPAR150の状態情報を管理用LPAR170に送信し(ステップ2802)、処理を終了する。
具体的には、QoSモニタ270を備えるAP155が、仮想ネットワーク等を介して、取得されたI/O LPAR150の状態情報と、当該I/O LPAR150の識別子とを管理用LPAR170に送信する。
図29は、本発明の第2の実施形態の管理用LPAR170が実行する処理を説明するフローチャートである。
管理用LPAR170は、AP155からI/O LPAR150の状態情報と、当該I/O LPAR150の識別子とを受信する(ステップ2901)。
なお、管理用LPAR170は、QoSモニタ270から情報を受信するたびに処理を開始してもよいし、周期的に処理を開始してもよい。
管理用LPAR170は、受信したI/O LPAR150の識別子に基づいて、ハイパバイザ190からI/O LPAR150の割当帯域を取得する(ステップ2902)。
具体的には、管理用LPAR170は、ハイパバイザ190に、I/O LPAR150の識別子が含まれる割当帯域の取得要求を送信する。当該取得要求を受信したハイパバイザ190は、リソース管理部300を起動させ、リソース割当管理表640から割当帯域6436を取得する。ハイパバイザ190は、取得された割当帯域6436を管理用LPAR170に送信する。
管理用LPAR170は、I/O LPAR150の実効帯域と割当帯域とを比較して、当該I/O LPAR150の計算機リソースが不足しているか否かを判定する(ステップ2903)。
例えば、以下の式(8)を用いた判定方法が考えられる。
実効帯域 < 割当帯域 − 閾値…(8)
ここで、閾値は任意の値であり、管理者510によって設定されもよいし、管理用LPAR170が決定してもよい。
式(8)を満たす場合には、I/O LPAR150の計算機リソースが不足していると判定される。
I/O LPAR150の計算機リソースが不足していると判定された場合、管理用LPAR170は、ハイパバイザ190に計算機リソースの割当変更を要求し(ステップ2904)、処理を終了する。
具体的には、管理用LPAR170は、ハイパバイザ190にI/O LPAR150に割り当てる計算機リソースを増加させるように変更要求を送信する。なお、当該変更要求には、I/O LPAR150の識別子が含まれる。
変更要求を受信したハイパバイザ190は、I/O LPARリソース算出部320を起動させる。I/O LPARリソース算出部320は、計算機リソースの割当増加処理を実行する。計算機リソースの割当増加処理の詳細については、図30を用いて後述する。
I/O LPAR150の計算機リソースが不足していないと判定された場合、管理用LPAR170は、ハイパバイザ190に計算機リソースの割当変更を要求し(ステップ2905)、処理を終了する。
具体的には、管理用LPAR170は、ハイパバイザ190にI/O LPAR150に割り当てる計算機リソースを減少させるように変更要求を送信する。なお、当該変更要求には、I/O LPAR150の識別子が含まれる。
変更要求を受信したハイパバイザ190は、I/O LPARリソース算出部320を起動させる。I/O LPARリソース算出部320は、計算機リソースの割当減少処理を実行する。計算機リソースの割当減少処理の詳細については、図31を用いて後述する。
図30は、本発明の第2の実施形態のI/O LPARリソース算出部320が実行する計算機リソースの割当増加処理を説明するフローチャートである。
I/O LPARリソース算出部320は、管理用LPAR170から計算機リソースの割当変更要求を受信する(ステップ3001)。I/O LPARリソース算出部320は、受信した割当変更要求に含まれるI/O LPAR150の識別子を参照することによって処理対象となるI/O LPAR150を特定する。
以下、処理対象となるI/O LPAR150を対象I/O LPAR150とも記載する。
I/O LPARリソース算出部320は、対象I/O LPAR150に割り当てられるプロセッサコア410の使用率、及びメモリ容量の使用率を取得する(ステップ3002)。
なお、ハイパバイザ190が前述した各種計算機リソースの使用状況を取得する。
次に、I/O LPARリソース算出部320は、対象I/O LPAR150に割り当てられるプロセッサコア410が不足しているか否かを判定する(ステップ3003)。
具体的には、プロセッサコア410の使用率が所定の閾値以上であるか否かが判定される。ここで、所定の閾値は、管理者510によって設定された値である。なお、所定の閾値は、他の方法を用いて設定されてもよい。
プロセッサコア410の使用率が所定の閾値以上である場合、対象I/O LPAR150に割り当てられるプロセッサコア410が不足していると判定される。
対象I/O LPAR150に割り当てられるプロセッサコア410が不足していないと判定された場合、I/O LPARリソース算出部320は、ステップ3005に進む。
対象I/O LPAR150に割り当てられるプロセッサコア410が不足していると判定された場合、I/O LPARリソース算出部320は、対象I/O LPAR150に割り当てるプロセッサコア410の数を増加させる(ステップ3004)。
プロセッサコア410の増加方法としては、プロセッサコア410を一つ増加させる、又は複数増加させる方法が考えられる。なお、本発明はこれに限定されず、他の方法を用いてもよい。
次に、I/O LPARリソース算出部320は、対象I/O LPAR150に割り当てられるメモリ容量が不足しているか否かを判定する(ステップ3005)。
具体的には、メモリ容量の使用率が所定の閾値以上であるか否かが判定される。ここで、所定の閾値は、管理者510によって設定された値である。なお、本発明はこれに限定されず、他の方法を用いて設定されてもよい。
メモリ容量の使用率が所定の閾値以上である場合には、対象I/O LPAR150に割り当てられるメモリ容量が不足していると判定される。
対象I/O LPAR150に割り当てられるメモリ容量が不足していると判定された場合、I/O LPARリソース算出部320は、ステップ3007に進む。
対象I/O LPAR150に割り当てられるメモリ容量が不足していると判定された場合、I/O LPARリソース算出部320は、対象I/O LPAR150に割り当てるメモリ容量を増加させる(ステップ3006)。
メモリ容量の増加方法としては、予め設定されたメモリ容量を追加する方法、対象I/O LPAR150に割り当てられるメモリ容量の20%分のメモリ容量を追加する方法が考えられる。なお、本発明はこれに限定されず、他の方法を用いてもよい。
I/O LPARリソース算出部320は、変更された計算機リソースをI/O LPAR150に割り当てる計算機リソースとして決定する(ステップ3007)。ステップ3007は、ステップ2212と同一の処理であるため説明を省略する。
以上の処理によって、I/O LPAR150に割り当てる計算機リソースを増加することができる。
図31は、本発明の第2の実施形態のI/O LPARリソース算出部320が実行する計算機リソースの割当減少処理を説明するフローチャートである。
I/O LPARリソース算出部320は、管理用LPAR170から計算機リソースの割当変更要求を受信する(ステップ3101)。I/O LPARリソース算出部320は、受信した割当変更要求に含まれるI/O LPAR150の識別子を参照することによって処理対象となるI/O LPAR150を特定する。
以下、処理対象となるI/O LPAR150を対象I/O LPAR150とも記載する。
I/O LPARリソース算出部320は、対象I/O LPAR150に割り当てられるプロセッサコア410の数、プロセッサコア410の使用率、メモリ容量、及び割り当てられたメモリ容量の使用率を取得する(ステップ3102)。
なお、ハイパバイザ190が前述した各種情報を取得する。
I/O LPARリソース算出部320は、対象I/O LPAR150に過剰な数のプロセッサコア410が割り当てられているか否かを判定する(ステップ3103)。
具体的には、対象I/O LPAR150に割り当てられるプロセッサコア410の数が「1」より大きくであり、かつ、当該プロセッサコア410の使用率が所定の閾値以下であるか否かが判定される。ここで、所定の閾値は、管理者510によって設定された値である。なお、他の方法を用いて設定されてもよい。
前述した条件を満たす場合、対象I/O LPAR150に過剰な数のプロセッサコア410が割り当てられていると判定される。
対象I/O LPAR150に過剰な数のプロセッサコア410が割り当てられていないと判定された場合、I/O LPARリソース算出部320は、ステップ3105に進む。
対象I/O LPAR150に過剰な数のプロセッサコア410が割り当てられていると判定された場合、I/O LPARリソース算出部320は、対象I/O LPAR150に割り当てられているプロセッサコア410の数を減少させる(ステップ3104)。
プロセッサコア410の減少方法としては、プロセッサコア410を一つ減少させる、又は複数減少させる方法が考えられる。なお、本発明はこれに限定されず、他の方法を用いてもよい。
次に、I/O LPARリソース算出部320は、対象I/O LPAR150に過剰なメモリ容量が割り当てられているか否かを判定する(ステップ3105)。
具体的には、対象I/O LPAR150に割り当てられているメモリ容量が予め設定されたメモリ容量より大きく、かつ、当該メモリ容量の使用率が所定の閾値以下であるか否かを判定される。ここで、所定の閾値は、管理者510によって設定された値である。なお、他の方法を用いて設定されてもよい。
前述した条件を満たす場合、対象I/O LPAR150に過剰なメモリ容量が割り当てられていると判定される。
対象I/O LPAR150に過剰なメモリ容量が割り当てられていないと判定された場合、I/O LPARリソース算出部320は、ステップ3107に進む。
対象I/O LPAR150に過剰なメモリ領域が割り当てられていると判定された場合、I/O LPARリソース算出部320は、対象I/O LPAR150に割り当てるメモリ容量を減少させる(ステップ3106)。
メモリ容量の増加方法としては、予め設定されたメモリ容量を追加する方法、対象I/O LPAR150に割り当てられるメモリ容量の20%分のメモリ容量を追加する方法が考えられる。なお、本発明はこれに限定されず、他の方法を用いてもよい。
I/O LPARリソース算出部320は、変更された計算機リソースをI/O LPAR150に割り当てる計算機リソースとして決定する(ステップ3107)。ステップ3107は、ステップ2212と同一の処理であるため説明を省略する。
以上の処理によって、I/O LPAR150に割り当てる計算機リソースを減少することができる。
第2の実施形態によれば、I/O LPAR150の利用状況に応じて、当該I/O LPAR150に割り当てる計算機リソースを動的に変更できるため、計算機リソースの有効活用が可能となる。
[第3の実施形態]
第3の実施形態では、物理サーバ間で稼働中の仮想化部110を移動させる場合の処理について説明する。
図32は、本発明の第3の実施形態における仮想計算機システムの構成の一例を示す説明図である。
第3の実施形態の仮想計算機システムは、移行元の物理サーバ100A及び移行先の物理サーバ100Bを備える。なお、移行元の物理サーバ100A及び移行先の物理サーバ100Bは、第1の実施形態の物理サーバ100と同一のハードウェア構成及びソフトウェア構成であるため説明を省略する。
移行元の物理サーバ100Aは、管理ネットワーク530Aを介して、管理用コンソール520と接続される。また、移行先の物理サーバ100Bは、管理ネットワーク530Bを介して、管理用コンソール520と接続される。
移行元の物理サーバ100Aは、I/Oアダプタ200A−1、200A−2が接続される。また、移行先の物理サーバ100Bは、I/Oアダプタ200B−1、200B−2が接続される。
以下の説明では、移行元の物理サーバ100A上に複数の仮想化部110が稼動するものとする。
第3の実施形態では、移行元の物理サーバ100Aが、管理用コンソール520から物理サーバの移行要求を受信した場合に以下の処理を実行する。
仮想化部110を構成するI/O LPAR150に割り当てられた計算機リソースに基づいてリソース割当要求を決定し、またI/Oアダプタ200A−1、200A−2におけるQoS設定情報に基づいてQoSポリシ500を決定する。
決定されたQoSポリシ500及びリソース割当要求540は、管理用コンソール520から移行先の物理サーバ100Bに送信される。
決定されたQoSポリシ500及びリソース割当要求540を受信した移行先の物理サーバ100Bは、第1の実施形態と同様の処理を実行して、I/O LPAR150に割り当てる計算機リソースを算出し、また、I/Oアダプタ200B−1、200B−2に対するQoS設定情報を生成する。
以下、移行元の物理サーバ100Aが、移行先の物理サーバ100Bに対して送信するQoSポリシ500及びリソース割当要求540の決定方法を中心に説明する。
図33は、本発明の第3の実施形態の移行元の物理サーバ100Aのハイパバイザ190が備える各構成間の入出力を示す説明図である。
QoS個別I/F設定部310は、物理アダプタドライバ(PFD)185からQoS設定情報を取得し、I/O LPARリソース算出部320から割当帯域を取得する。さらに、QoS個別I/F設定部310は、QoS換算データベース340からI/F機能表700及びQoS設定変換表740を読み出す。
QoS個別I/F設定部310は、前述した情報に基づいて、図36において説明する処理を実行する。QoS個別I/F設定部310は、処理結果としてQoSポリシ3310を管理用コンソール520に出力する。
当該QoSポリシ3310が移行先の物理サーバ100Bに入力されるQoSポリシ500となる。
I/O LPARリソース算出部320は、リソース管理部300からリソース割当管理表640を読み出し、また、QoS換算データベース340からI/F設定仕様表750を読み出す。
I/O LPARリソース算出部320は、前述した情報に基づいて、図34において説明する処理を実行する。I/O LPARリソース算出部320は、処理結果としてリソース割当要求3320を管理用コンソール520に出力し、割当帯域をQoS個別I/F設定部310に出力する。
当該リソース割当要求3320が移行先の物理サーバ100Bに入力されるリソース割当要求540となる。
図34は、本発明の第3の実施形態の移行元の物理サーバのI/O LPARリソース算出部が実行する処理を説明するフローチャートである。
I/O LPARリソース算出部320は、リソース管理部300からリソース割当管理表640を取得する(ステップ3401)。
I/O LPARリソース算出部320は、リソース割当管理表640を参照して、一つの仮想化部110を選択する(ステップ3402)。
選択方法としては、リソース割当管理表640の上のエントリから順に選択する方法が考えられる。
I/O LPARリソース算出部320は、リソース割当管理表640を参照して、選択された仮想化部110を構成するI/O LPAR150に割り当てられるVF210を特定し、さらに、特定されたVF210を生成するPF220を一つ選択する(ステップ3403)。以下、選択されたPF220を対象PF220とも記載する。
I/O LPARリソース算出部320は、リソース割当管理表640のゲストLPAR情報642に基づいて、リソース割当要求3320に設定する情報を決定する(ステップ3404)。具体的には、以下のように決定される。
リソース割当管理表640の仮想化部641に格納される識別子がリソース割当要求540の仮想化部541に格納される情報となる。リソース割当管理表640のプロセッサコア数6422に格納される値がリソース割当要求540のプロセッサ数542に格納される情報となる。また、リソース割当管理表640のメモリ6423に格納される値がリソース割当要求540のメモリ543に格納される情報となる。
なお、リソース割当要求540の物理I/Oアダプタ544には、移行先の物理サーバ100BのI/Oアダプタ200が予め分かる場合には必要な情報が含まれる。また、リソース割当要求540を受信した管理用コンソール520が物理I/Oアダプタ544に対応する情報を決定してもよい。
リソース割当要求3320は、管理用コンソール520に送信される。
I/O LPARリソース算出部320は、対象PF220のVendor ID、アダプタ種別を検索キーとしてリソース換算表730を参照し、対象PF220に対応するエントリが存在するか否かを判定する(ステップ3405)。
リソース換算表730に対象PF220に対応するエントリが存在すると判定された場合、I/O LPARリソース算出部320は、対象PF220に対応するエントリの情報を取得してステップ3407に進む。
リソース換算表730に対象PF220に対応するエントリが存在すると判定された場合、I/O LPARリソース算出部320は、Vendor ID731が「Generic」であるエントリの情報を取得し(ステップ3406)、ステップ3507に進む。
I/O LPARリソース算出部320は、ステップ3405又はステップ3406において取得された情報に基づいて、I/O LPAR150に割り当てる計算機リソースを算出する(ステップ3407)。具体的な処理は、図35を用いて後述する。
I/O LPARリソース算出部320は、算出された計算機リソースに基づいて、対象PF220が生成するVF210が割り当てられるI/O LPAR150の割当帯域を算出する(ステップ3408)。
I/O LPARリソース算出部320は、I/O LPAR150に割り当てられるVF210を生成する全てのPF220について処理が実行されたか否かを判定する(ステップ3409)。
ステップ3403〜ステップ3409の処理によって、仮想化部110の割当帯域を把握することができる。
I/O LPAR150のVFD165と対応づけられる全てのVF210について処理が実行されていないと判定された場合、I/O LPARリソース算出部320は、ステップ3403に戻り、同様の処理(ステップ3403〜ステップ3409)を実行する。
I/O LPAR150に割り当てられるVF210を生成する全てのPF220について処理が実行されたと判定された場合、I/O LPARリソース算出部320は、移行元の物理サーバ100A上で稼動する全ての仮想化部110について処理が実行されたか否かを判定する(ステップ3410)。
移行元の物理サーバ100A上で稼動する全ての仮想化部110について処理が実行されていないと判定された場合、I/O LPARリソース算出部320は、ステップ3410に戻り同様の処理(ステップ3402〜ステップ3410)を実行する。
移行元の物理サーバ100A上で稼動する全ての仮想化部110について処理が実行されていないと判定された場合、I/O LPARリソース算出部320は、算出された割当帯域をQoS個別I/F設定部310に出力し(ステップ3411)、処理を終了する。
このとき、仮想化部110の識別子及び対象PF220の識別子も合わせて出力される。
図35は、本発明の第3の実施形態における計算機リソースの算出処理を説明するフローチャートである。
I/O LPARリソース算出部320は、対象PF220が割り当てられる仮想化部110を構成するI/O LPAR150の計算機リソースを正規化する(ステップ3501)。これは、I/O LPAR150の計算機リソースがどのPF220によってどのぐらい必要かを正確に算出できないためである。
正規化の方法は、例えば、I/O LPAR150の計算機リソースをI/O LPAR150と対応づけられるPF220の数で除算して算出する方法が考えられる。また、PF220を備えるI/Oアダプタ200の性能に基づいて、I/O LPAR150の計算機リソースの割当比率を算出し、当該割当比率に基づいてI/O LPAR150の計算機リソースを正規化する方法であってもよい。
以下、正規化された計算機リソースにおけるプロセッサコア数を割当プロセッサコア数、メモリ容量を割当メモリ容量と記載する。
次に、I/O LPARリソース算出部320は、リソース換算表730から取得された情報、並びに、プラットフォーム仕様表710及びプロセッサ性能換算表720を参照し、式(9)を用いて基準プロセッサコア数を算出する(ステップ3502)。
基準プロセッサコア数 =(割当プロセッサコア数÷プロセッサ世代737に対応する性能比725)×物理サーバ100のプロセッサの性能比725…(9)
I/O LPARリソース算出部320は、リソース換算表730から取得された情報、基準プロセッサコア数及び割当メモリ容量に基づいて、式(10)を用いて割当帯域係数を算出し(ステップ3503)、処理を終了する。
割当帯域係数=MAX(基準プロセッサコア数÷プロセッサリソース738×単位帯域736,割当メモリ÷メモリリソース739×単位帯域736)…(10)
図36は、本発明の第3の実施形態の移行元の物理サーバ100AのQoS個別I/F設定部310が実行する処理を説明するフローチャートである。
QoS個別I/F設定部310は、I/O LPARリソース算出部320から移行元の物理サーバ100A上で稼動する全仮想化部110における割当帯域を取得する(ステップ3601)。
具体的には、仮想化部110に割り当てられる各PF220における割当帯域が取得される。なお、取得される情報には、仮想化部110の識別子、PF220の識別子及び割当帯域が含まれる。
QoS個別I/F設定部310は、一つのPF220を選択する(ステップ3602)。以下、選択されたPFを対象PF220とも記載する。
このとき、QoS個別I/F設定部310は、対象PF220に対応するI/Oアダプタ200のバス番号、デバイス番号及び機能番号に基づいてコンフィグレーション領域を参照することによって、対象PF220に対応するI/Oアダプタ200のVendor ID及びDevice IDを取得する。
QoS個別I/F設定部310は、対象PF220に対応するI/Oアダプタ200のVendor ID及びDevice IDに基づいてI/F機能表700を参照し、対象PF220のアダプタ種別を取得する(ステップ3603)。
これによって、QoSポリシ500のアダプタ種別502に対応する情報が取得される。
次に、QoS個別I/F設定部310は、リソース割当管理表対象PFによって生成されたVF210が割り当てられる仮想化部110を一つ選択する(ステップ3604)。以下、選択された仮想化部110を対象仮想化部110とも記載する。
QoS個別I/F設定部310は、対象PF220から対象仮想化部110に割り当てられるVF210に対するQoS設定情報を取得する(ステップ3605)。
QoS設定情報の取得方法は、QoS個別I/F設定部310が、対象仮想化部110を構成するI/O LPAR150に割り当てられたVF210を管理するPF220に問い合わせる方法、又は、I/F設定仕様表750のレジスタ仕様756から取得する方法が考えられる。
QoS個別I/F設定部310は、対象仮想化部110の割当帯域及び取得されたQoS設定情報に基づいて、QoSポリシ3310に設定する情報を決定する(ステップ3606)。
具体的にはQoSポリシ500の優先度503、帯域配分504、最大帯域505、最小帯域506、遅延保証507、及び品質保証508に対応する情報が決定される。なお、品質保証508は、取得されたQoS設定情報からは直接決定できないため、例えば、優先度503が「高」の場合には「guaranty」とし、優先度503が「低」の場合には「best effort」に決定する方法が考えられる。
QoS個別I/F設定部310は、対象PF220によって生成されたVF210が割り当てられる全ての仮想化部110について処理が実行されたか否かを判定する(ステップ3607)。
全ての仮想化部110について処理が実行されていないと判定された場合、QoS個別I/F設定部310は、ステップ3604に戻り同様の処理(ステップ3604〜ステップ3607)を実行する。
全ての仮想化部110について処理が実行されたと判定された場合、QoS個別I/F設定部310は、移行元の物理サーバ100Aに接続される全てのPF220について処理が実行されたか否かを判定する(ステップ3608)。
移行元の物理サーバ100Aに接続される全てのI/Oアダプタ200について処理が実行されていないと判定された場合、QoS個別I/F設定部310は、ステップ3601に戻り同様の処理(ステップ3601〜ステップ3608)を実行する。
移行元の物理サーバ100Aに接続される全てのI/Oアダプタ200について処理が実行されたと判定された場合、QoS個別I/F設定部310は、処理を終了する。
以上の処理によって、移行元の物理サーバ100Aに接続される全ての仮想化部110に設定されたQoS設定情報が取得され、取得されたQoS設定情報から移行先の物理サーバ100Bに送信するQoSポリシ3310が生成される。
図34〜図36で説明した処理によって生成されたQoSポリシ3310及びリソース割当要求3320が、ハイパバイザ190を介して管理用LPAR170に送信される。管理用LPAR170は、QoSポリシ3310及びリソース割当要求3320を管理用コンソール520に送信する。
さらに、管理用コンソール520が、移行先の物理サーバ100Bに、QoSポリシ3310及びリソース割当要求3320を送信する。移行先の物理サーバ100Bは、第1の実施形態と同様の処理を実行する。
第3の実施形態によれば、移行元の物理サーバ100上のゲストLPAR115のI/Oを処理するI/O LPAR150に対するQoS設定情報からQoSポリシを生成することできる。これによって、ゲストLPAR115に対して要求されるQoSを移行先の物理サーバ100上でも実現することが可能となる。
また、移行先の物理サーバ100が備えるI/Oアダプタ200が移行元の物理サーバ100が備えるI/Oアダプタと異なる場合であっても、ゲストLAPR115の構成は変更されないため、プラットフォーム間の移行が容易にできる。
[第3の実施形態の変形例1]
図37は、本発明の第3の実施形態における仮想計算機システムの構成の変形例を示す説明図である。
変形例1における仮想計算機システムは、移行元の物理サーバ100AがNIC及びHBAを備え、移行先の物理サーバ100BがCNAを備える点が異なる。
この場合、CNAが備える各PFについて移行元の物理サーバ100A上のNIC及びHBAの設定が反映される。具体的な処理については第3の実施形態と同一であるため説明を省略する。
なお、移行元の物理サーバ100AがCNAを備え、移行先の物理サーバ100BがNIC及びHBAを備える場合であっても同様の処理を適用できる。
[第3の実施形態の変形例2]
変形例2では、移行元のサーバAの負荷設定情報を移行先のサーバ100Bに入力する情報として用いる。
仮想計算機システムの構成は同一であるため説明を省略する。また、移行元の物理サーバ100A及び移行先の物理サーバ100Bの構成も同一であるため説明を省略する。
以下、第3の実施形態との差異を中心に説明する。
図38は、本発明の第3の実施形態の変形例における移行元の物理サーバ100Aのハイパバイザ190が備える各構成間の入出力を示す説明図である。
負荷分散個別I/F設定部330は、物理アダプタドライバ(PFD)185から負荷分散設定情報を取得し、リソース管理部300からプロセッサ割当管理表610及びリソース割当管理表640を参照する。
負荷分散個別I/F設定部330は、前述した情報に基づいて、図39において説明する処理を実行する。負荷分散個別I/F設定部330は、処理結果として負荷分散ポリシ3800を管理用コンソール520に出力する。
図39は、本発明の第3の実施形態の変形例における負荷分散個別I/F設定部330によって実行される処理を説明するフローチャートである。
負荷分散個別I/F設定部330は、I/O LPAR150に割り当てられるプロセッサコア410を特定する(ステップ3901)。
具体的には、負荷分散個別I/F設定部330は、プロセッサ割当管理表610を参照して、各I/O LPAR150に割り当てられるプロセッサコア410を特定する。
次に、負荷分散個別I/F設定部330は、一つのPF220を選択する(ステップ3902)。以下、選択されたPF220を対象PF220とも記載する。
このとき、負荷分散個別I/F設定部330は、対象PF220のVendor ID、アダプタ種別を検索キーとしてI/F機能表700を参照し、対象PF220に対応するI/Oアダプタ200が負荷分散機能を備えるか否かを判定する(ステップ3903)。
対象PF220に対応するI/Oアダプタ200が負荷分散機能を備えていないと判定された場合、負荷分散個別I/F設定部330は、ステップ3909に進む。
対象PF220に対応するI/Oアダプタ200が負荷分散機能を備えていると判定された場合、負荷分散個別I/F設定部330は、対象PF220が生成したVF210が割り当てられるI/O LPAR150を選択する(ステップ3904)。以下、選択されたI/O LPAR150を対象I/O LPAR150とも記載する。
負荷分散個別I/F設定部330は、対象I/O LPAR150の識別子に基づいてリソース割当管理表640を参照し、対象I/O LPAR150に割り当てられているプロセッサコア410の数が「1」より大きいか否かを判定する(ステップ3905)。
対象I/O LPAR150に割り当てられているプロセッサコア410の数が「1」以下であると判定された場合、負荷分散個別I/F設定部330は、ステップ3908に進む。
対象I/O LPAR150に割り当てられているプロセッサコア410の数が「1」より大きいと判定された場合、負荷分散個別I/F設定部330は、対象I/O LPAR150に割り当てられるVF210のキューの数が「1」より大きいか否かを判定する(ステップ3906)。
対象I/O LPAR150に割り当てられるVF210のキューの数が「1」以下であると判定された場合、負荷分散個別I/F設定部330は、ステップ3908に進む。
対象I/O LPAR150に割り当てられるVF210のキューの数が「1」より大きいと判定された場合、負荷分散個別I/F設定部330は、対象I/O LPAR150に割り当てられたVF210に対する負荷分散設定情報を取得する(ステップ3907)。
負荷分散設定情報の取得方法は、対象PF220に問い合わせる方法、I/F設定仕様表750のレジスタ仕様756を参照して取得する方法が考えられる。
次に、負荷分散個別I/F設定部330は、全ての仮想化部110について処理が実行されたか否かを判定する(ステップ3908)。
全ての仮想化部110について処理が実行されていないと判定された場合、負荷分散個別I/F設定部330は、ステップ3904に戻り同様の処理(ステップ3904〜ステップ3908)を実行する。
全ての仮想化部110について処理が実行されたと判定された場合、負荷分散個別I/F設定部330は、全てのPF220について処理が実行されたか否かを判定する(ステップ3909)。
全てのPF220について処理が実行されていないと判定された場合、負荷分散個別I/F設定部330は、ステップ3902に戻り同様の処理(ステップ3902〜ステップ3909)を実行する。
全てのPF220について処理が実行されたと判定された場合、負荷分散個別I/F設定部330は、取得された負荷分散設定情報に基づいて負荷分散ポリシ3410を生成し(ステップ3910)、処理を終了する。
具体的には、PF220ごとに負荷分散設定情報をリスト化した情報が生成される。
生成された負荷分散ポリシ3410は、管理用コンソール520に送信される。
管理用コンソール520から負荷分散ポリシ3410を受信した移行先の物理サーバ100Bは、I/O LPAR150に割り当てる計算機リソースを算出するときに、負荷分散ポリシ3410に基づいて、I/O LPAR150に割り当てるプロセッサコア410の数を決定する。
例えば、負荷分散設定がされているI/O LPAR150については、ステップ1120において、プロセッサコア数を「1」に初期化する等が考えられる。
移行前の物理サーバ100Aに設定された負荷分散の設定情報を用いて、移行先の物理サーバ100Bに設定すべき情報をより詳細かつ適切に決定することができる。
本発明の一形態によれば、論理分割方式の仮想化における、性能安定性、堅牢性、QoS保証という特長は残しながら、プラットフォーム移行性の高い仮想計算機システムが実現可能となる。性能安定性に関しては、ソフトウェアベースのVM方式では、実効流量をサンプリングしてタイマ割り込みにより帯域調整を行うため、仮想サーバ間の切り替えの最小単位は約10msのオーダーとなる。これに対して、I/Oアダプタのハードウェア機能を使って仮想サーバ間の切り替えを行う場合、フレーム単位での切り替えが可能となる。例えば、10GbE NICの場合、フレームの大きさは1.5KB〜9.5KB(ジャンボフレームの場合)となる。これを10Gbで除算すると1μsから8μsとなり、VM方式と比べて約1000倍〜10000倍の高精度なQoS制御が可能となる。