IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ 日本電信電話株式会社の特許一覧

特許7151530サーバ基盤および物理CPU割当プログラム
<>
  • 特許-サーバ基盤および物理CPU割当プログラム 図1
  • 特許-サーバ基盤および物理CPU割当プログラム 図2
  • 特許-サーバ基盤および物理CPU割当プログラム 図3
  • 特許-サーバ基盤および物理CPU割当プログラム 図4
  • 特許-サーバ基盤および物理CPU割当プログラム 図5
  • 特許-サーバ基盤および物理CPU割当プログラム 図6
  • 特許-サーバ基盤および物理CPU割当プログラム 図7
  • 特許-サーバ基盤および物理CPU割当プログラム 図8
  • 特許-サーバ基盤および物理CPU割当プログラム 図9
  • 特許-サーバ基盤および物理CPU割当プログラム 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-10-03
(45)【発行日】2022-10-12
(54)【発明の名称】サーバ基盤および物理CPU割当プログラム
(51)【国際特許分類】
   G06F 9/50 20060101AFI20221004BHJP
   G06F 9/455 20060101ALI20221004BHJP
【FI】
G06F9/50 120A
G06F9/455 150
【請求項の数】 8
(21)【出願番号】P 2019023092
(22)【出願日】2019-02-13
(65)【公開番号】P2020134988
(43)【公開日】2020-08-31
【審査請求日】2021-06-01
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(74)【代理人】
【識別番号】110001807
【氏名又は名称】弁理士法人磯野国際特許商標事務所
(72)【発明者】
【氏名】栗生 敬子
【審査官】漆原 孝治
(56)【参考文献】
【文献】特開2009-205696(JP,A)
【文献】特開2013-3946(JP,A)
【文献】特開2009-140157(JP,A)
【文献】特開2013-250949(JP,A)
【文献】特開平2-238556(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/50
G06F 9/455
(57)【特許請求の範囲】
【請求項1】
コンピュートの物理CPU上に仮想CPUおよび仮想マシンを生成して、前記仮想マシンに前記仮想CPUを割り当てるサーバ基盤であって、
前記仮想マシンに割り当てた仮想CPUに物理CPUを共有させる指示、前記仮想CPUに物理CPUを占有させ、かつピニングさせる指示、前記仮想CPUに物理CPUを占有させ、かつピニングさせない指示のうち何れかを生成するリソース割当決定部と、
前記リソース割当決定部の指示に応じて、前記コンピュートの前記物理CPU上に新たな仮想マシンを生成する仮想マシン生成管理部と、
を含むことを特徴とするサーバ基盤。
【請求項2】
前記リソース割当決定部は、仮想マシン上で実行されるプロセスが受け持つ負荷量が所定値以下ならば、前記仮想マシンに割り当てた仮想CPUに物理CPUを共有させる指示を生成し、前記プロセスが受け持つ負荷量が所定値よりも高いならば、前記仮想マシンに割り当てた仮想CPUに、指定されたコンピュートの前記物理CPUを占有させる指示を生成し、かつ、前記プロセスのレイテンシ要件が前記所定値よりも厳しいならば、前記仮想CPUを前記物理CPUにピニングする指示を生成し、前記プロセスのレイテンシ要件が所定値よりも緩やかならば、前記仮想CPUを前記物理CPUにピニングさせない指示を生成する、
ことを特徴とする請求項1に記載のサーバ基盤。
【請求項3】
前記リソース割当決定部は、前記コンピュートに物理CPUの空きがなく、かつ、前記コンピュート上に何れかの仮想CPUによって占有された非ピニングの物理CPUが在るならば、当該物理CPU上を占有する仮想CPUに割り当てられた仮想マシンを他のコンピュートの物理CPU上に移行させる指示を生成し、
前記仮想マシン生成管理部は、前記リソース割当決定部の指示に応じて、前記仮想マシンを前記他のコンピュートの物理CPU上に移行させたのち、前記コンピュートの前記物理CPU上に新たな仮想マシンを生成する、
ことを特徴とする請求項1または2に記載のサーバ基盤。
【請求項4】
前記仮想マシン生成管理部は、前記コンピュートに物理CPUの空きがなく、かつ、前記コンピュート上に何れかの仮想CPUによって占有された非ピニングの物理CPUが在るならば、当該物理CPU上を占有する仮想CPUに割り当てられた仮想マシンを他のコンピュート上に移行させたのち、前記コンピュートの前記物理CPU上に新たな仮想マシンを生成する、
ことを特徴とする請求項1または2に記載のサーバ基盤。
【請求項5】
コンピュートの物理CPU上に仮想CPUおよび仮想マシンを生成して、前記仮想マシンに前記仮想CPUを割り当てるサーバ基盤による仮想CPUに対する物理CPUの割当プログラムであって、
コンピュータに、前記仮想マシンに割り当てた仮想CPUに物理CPUを共有させる指示、前記仮想CPUに物理CPUを占有させ、かつピニングさせる指示、前記仮想CPUに物理CPUを占有させ、かつピニングさせない指示のうち何れかを生成する工程、
前記コンピュートの前記物理CPU上に新たな仮想マシンを生成する工程、
を実行させるための物理CPU割当プログラム。
【請求項6】
仮想マシン上で実行されるプロセスが受け持つ負荷量が所定値以下ならば、前記仮想マシンに割り当てた仮想CPUに物理CPUを共有させる指示を生成し、前記プロセスが受け持つ負荷量が所定値よりも高いならば、前記仮想マシンに割り当てた仮想CPUに、指定されたコンピュートの前記物理CPUを占有させる指示を生成する工程、
前記プロセスのレイテンシ要件が前記所定値よりも厳しいならば、前記仮想CPUを前記物理CPUにピニングする指示を生成し、前記プロセスのレイテンシ要件が所定値よりも緩やかならば、前記仮想CPUを前記物理CPUにピニングさせない指示を生成する工程、
を実行させるための請求項5に記載の物理CPU割当プログラム。
【請求項7】
前記コンピュートに物理CPUの空きがなく、かつ、前記コンピュート上に何れかの仮想CPUによって占有された非ピニングの物理CPUが在るならば、当該物理CPU上を占有する仮想CPUに割り当てられた仮想マシンを他のコンピュートの物理CPU上に移行させる指示を生成する工程、
前記仮想マシンを前記他のコンピュートの物理CPU上に移行させたのち、前記コンピュートの前記物理CPU上に新たな仮想マシンを生成する工程、
を実行させるための請求項5または6に記載の物理CPU割当プログラム。
【請求項8】
前記コンピュートに物理CPUの空きがなく、かつ、前記コンピュート上に何れかの仮想CPUによって占有された非ピニングの物理CPUが在るならば、当該物理CPU上を占有する仮想CPUに割り当てられた仮想マシンを他のコンピュート上に移行させたのち、前記コンピュートの前記物理CPU上に新たな仮想マシンを生成するステップ、
を実行させるための請求項5または6に記載の物理CPU割当プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータシステムを構築して稼動させるためのサーバ基盤および物理CPU割当プログラムに関する。
【背景技術】
【0002】
図7は、ネットワークサービスを構築して稼働させるIaaS(Infrastructure as a Service)基盤の構成図である。
ネットワークサービスを構築して稼動させるIaaS基盤1は、サーバ基盤として実現されている。このIaaS基盤1は、複数のアプリケーション2a~2iがベアメタル11、仮想マシン12、コンテナ13、オブジェクトストレージ14、ファイルストレージ15、ブロックストレージ16などのリソースを共有する。
各アプリケーション2a~2iは、それぞれ外部にサービスを提供するとともに、必要な量のIaaS基盤1のリソースを利用できる。IaaS基盤1では、アプリケーション2a~2iにより複数のサービスを稼働できるメリットがある。その一方で、アプリケーション2a~2iは、IaaS基盤1を共有することで、利用できるリソースが制限される。
【先行技術文献】
【非特許文献】
【0003】
【文献】“CPU topologies”,[online],[平成31年1月31日検索],インターネット<URL:https://docs.openstack.org/nova/pike/admin/cpu-topologies.html>
【発明の概要】
【発明が解決しようとする課題】
【0004】
非特許文献1は、OpenStackにおけるCPUピニング(固定)機能について記載されている。CPUピニングとは、仮想マシンに割り当てた仮想CPUごとに、この仮想CPUが使用する物理CPUを制限することをいう。つまりその仮想CPUの処理に割り当てられる物理CPUを固定することである。
【0005】
CPUピニングにより、仮想CPUの処理が他の物理CPUで実行されることが無いため、キャッシュヒット率の低下を防ぎ、レイテンシ要件が厳しいプロセスを遅延なく実行させることができる。OpenStackは、仮想CPUを1つの物理CPUでピニングして占有するdedicated方式によりCPUピニングをサポートしている。
【0006】
レイテンシ要件が厳しいサービスの場合、その仮想CPUにdedicated方式を適用することで、キャッシュヒット率の低下を防ぎ、サービスの低レイテンシ化を実現することができる。
高い負荷量を受け持つなど、ある程度の性能要件を求めるサービスならば、dedicated方式がふさわしいが、レイテンシ要件が厳しいサービスでないと余剰なリソースが発生するおそれがある。
また、OpenStackには、複数の仮想CPUで物理CPUを共有するshared方式も存在する。このshared方式ではピニングすることはできず、他の仮想CPUのプロセスと混在することとなる。
【0007】
そこで、本発明は、仮想マシンのサービス要件を考慮した物理CPUの割り当てを可能とすることを課題とする。
【課題を解決するための手段】
【0008】
前記した課題を解決するため、請求項1に記載の発明では、コンピュートの物理CPU上に仮想CPUおよび仮想マシンを生成して、前記仮想マシンに前記仮想CPUを割り当てるサーバ基盤であって、前記仮想マシンに割り当てた仮想CPUに物理CPUを共有させる指示、前記仮想CPUに物理CPUを占有させ、かつピニングさせる指示、前記仮想CPUに物理CPUを占有させ、かつピニングさせない指示のうち何れかを生成するリソース割当決定部と、前記リソース割当決定部の指示に応じて、前記コンピュートの前記物理CPU上に新たな仮想マシンを生成する仮想マシン生成管理部と、を含むことを特徴とするサーバ基盤とした。
【0009】
このようにすることで、仮想マシンのサービス要件を考慮した物理CPUの割り当てができる。
【0010】
請求項2に記載の発明では、前記リソース割当決定部は、仮想マシン上で実行されるプロセスが受け持つ負荷量が所定値以下ならば、前記仮想マシンに割り当てた仮想CPUに物理CPUを共有させる指示を生成し、前記プロセスが受け持つ負荷量が所定値よりも高いならば、前記仮想マシンに割り当てた仮想CPUに、指定されたコンピュートの前記物理CPUを占有させる指示を生成し、かつ、前記プロセスのレイテンシ要件が前記所定値よりも厳しいならば、前記仮想CPUを前記物理CPUにピニングする指示を生成し、前記プロセスのレイテンシ要件が所定値よりも緩やかならば、前記仮想CPUを前記物理CPUにピニングさせない指示を生成する、ことを特徴とする請求項1に記載のサーバ基盤とした。
【0011】
このようにすることで、仮想マシン上で実行されるプロセスが受け持つ負荷量要件とレイテンシ要件を考慮した物理CPUの割り当てができる。
【0012】
請求項3に記載の発明では、前記リソース割当決定部は、前記コンピュートに物理CPUの空きがなく、かつ、前記コンピュート上に何れかの仮想CPUによって占有された非ピニングの物理CPUが在るならば、当該物理CPU上を占有する仮想CPUに割り当てられた仮想マシンを他のコンピュートの物理CPU上に移行させる指示を生成し、前記仮想マシン生成管理部は、前記リソース割当決定部の指示に応じて、前記仮想マシンを前記他のコンピュートの物理CPU上に移行させたのち、前記コンピュートの前記物理CPU上に新たな仮想マシンを生成する、ことを特徴とする請求項1または2に記載のサーバ基盤とした。
【0013】
このようにすることで、指定されたコンピュート上に物理CPUの空きがない場合であっても、仮想マシンを生成することができる。
【0014】
請求項4に記載の発明では、前記仮想マシン生成管理部は、前記コンピュートに物理CPUの空きがなく、かつ、前記コンピュート上に何れかの仮想CPUによって占有された非ピニングの物理CPUが在るならば、当該物理CPU上を占有する仮想CPUに割り当てられた仮想マシンを他のコンピュート上に移行させたのち、前記コンピュートの前記物理CPU上に新たな仮想マシンを生成する、ことを特徴とする請求項1または2に記載のサーバ基盤とした。
【0015】
このようにすることで、指定されたコンピュート上に物理CPUの空きがない場合であっても、仮想マシンを生成することができる。
【0016】
請求項5に記載の発明では、コンピュートの物理CPU上に仮想CPUおよび仮想マシンを生成して、前記仮想マシンに前記仮想CPUを割り当てるサーバ基盤による仮想CPUに対する物理CPUの割当プログラムであって、コンピュータに、前記仮想マシンに割り当てた仮想CPUに物理CPUを共有させる指示、前記仮想CPUに物理CPUを占有させ、かつピニングさせる指示、前記仮想CPUに物理CPUを占有させ、かつピニングさせない指示のうち何れかを生成する工程、前記コンピュートの前記物理CPU上に新たな仮想マシンを生成する工程、を実行させるための物理CPU割当プログラムとした。
【0017】
このようにすることで、仮想マシンのサービス要件を考慮した物理CPUの割り当てができる。
【0018】
請求項6に記載の発明では、仮想マシン上で実行されるプロセスが受け持つ負荷量が所定値以下ならば、前記仮想マシンに割り当てた仮想CPUに物理CPUを共有させる指示を生成し、前記プロセスが受け持つ負荷量が所定値よりも高いならば、前記仮想マシンに割り当てた仮想CPUに、指定されたコンピュートの前記物理CPUを占有させる指示を生成する工程、前記プロセスのレイテンシ要件が前記所定値よりも厳しいならば、前記仮想CPUを前記物理CPUにピニングする指示を生成し、前記プロセスのレイテンシ要件が所定値よりも緩やかならば、前記仮想CPUを前記物理CPUにピニングさせない指示を生成する工程、を実行させるための請求項5に記載の物理CPU割当プログラムとした。
【0019】
このようにすることで、仮想マシン上で実行されるプロセスが受け持つ負荷量の要件とレイテンシ要件を考慮した物理CPUの割り当てができる。
【0020】
請求項7に記載の発明では、前記コンピュートに物理CPUの空きがなく、かつ、前記コンピュート上に何れかの仮想CPUによって占有された非ピニングの物理CPUが在るならば、当該物理CPU上を占有する仮想CPUに割り当てられた仮想マシンを他のコンピュートの物理CPU上に移行させる指示を生成する工程、前記仮想マシンを前記他のコンピュートの物理CPU上に移行させたのち、前記コンピュートの前記物理CPU上に新たな仮想マシンを生成する工程、を実行させるための請求項5または6に記載の物理CPU割当プログラムとした。
【0021】
このようにすることで、指定されたコンピュート上に物理CPUの空きがない場合であっても、仮想マシンを生成することができる。
【0022】
請求項8に記載の発明では、前記コンピュートに物理CPUの空きがなく、かつ、前記コンピュート上に何れかの仮想CPUによって占有された非ピニングの物理CPUが在るならば、当該物理CPU上を占有する仮想CPUに割り当てられた仮想マシンを他のコンピュート上に移行させたのち、前記コンピュートの前記物理CPU上に新たな仮想マシンを生成するステップ、を実行させるための請求項5または6に記載の物理CPU割当プログラムとした。
【0023】
このようにすることで、指定されたコンピュート上に物理CPUの空きがない場合であっても、仮想マシンを生成することができる。
【発明の効果】
【0024】
、仮想マシンのサービス要件を考慮した物理CPUの割り当てが可能となる。
【図面の簡単な説明】
【0025】
図1】ユーザ端末から物理CPUを備えるNUMA上に仮想マシンのデプロイする場合のシーケンス図である。
図2】本実施形態において、アプリケーションの要件からピニングパターンを選択するフローチャートである。
図3】本実施形態において、ピニングパターンに基づき仮想マシンを稼働させる仮想CPUを構築するフローチャートである。
図4】本実施形態のピニング方式で構築されたシステムの初期状態を示す図である。
図5】本実施形態のピニング方式で構築されたシステムのマイグレーション後を示す図である。
図6】本実施形態のピニング方式で構築されたシステムのデプロイ後を示す図である。
図7】ネットワークサービスを構築して稼働させるIaaS基盤の構成図である。
図8】比較例において、アプリケーションの要件からピニングパターンを選択するフローチャートである。
図9】比較例において、ピニングパターンに基づき仮想マシンを稼働させる仮想CPUを構築するフローチャートである。
図10】比較例のピニング方式で構築されたシステムを示す図である。
【発明を実施するための形態】
【0026】
以降、比較例と本発明を実施するための形態とを、各図を参照して詳細に説明する。
図1は、ユーザ端末から物理CPUを備えるNUMA(Non-Uniform Memory Access)上に仮想マシンのデプロイする場合のシーケンス図である。このシーケンス図は、後記する比較例と実施形態に共通するものである。
各シーケンスを実行するリソース割当決定部32、リソース管理部33、仮想マシン生成管理部34は、IaaS基盤1に含まれる。このIaaS基盤1は、複数のサーバコンピュータである。このコンピュータが物理CPU割当プログラムを実行することによって、各シーケンスの実行主体が具現化される。
【0027】
ステップS10におけるVM(Virtual Machine)デプロイ指示において、ユーザ端末31は、仮想CPU毎のピニングパターンを指定する。なお、比較例の仮想CPUのピニングパターンは、物理CPUを占有させ、かつピニングさせるパターンと、物理CPUを共有させるパターンの2通りである。これに対して本実施形態の仮想CPUのピニングパターンは、物理CPUを占有させ、かつピニングさせるパターンと、物理CPUを占有させ、かつピニングさせないパターンと、物理CPUを共有させるパターンの3通りである。
【0028】
次にリソース割当決定部32は、リソース管理部33にリソース選定を指示する(S11)。リソース管理部33は、リソース割当決定部32にリソース候補を返却する(S12)。
ステップS13において、リソース割当決定部32は、スケジューリングを行うとともに、割当リソースを決定する。
【0029】
その後、リソース割当決定部32は、リソース管理部33に割当リソースを通知するとともに(S14)、仮想マシン生成管理部34に仮想マシンの生成を指示する(S15)。これにより仮想マシン生成管理部34は、ステップS13で決定されたスケジューリングに基づき、仮想マシンを生成してリソースを割り当てる。
ステップS16において、仮想マシン生成管理部34は、ユーザ端末31に仮想マシンの生成完了を通知し、図1の処理を終了する。
これによりIaaS基盤1は、コンピュートの物理CPU上に仮想CPUおよび仮想マシンを生成して、この仮想マシンに仮想CPUを割り当てることができる。
【0030】
《比較例の処理》
比較例のピニング方式は、物理CPUを占有させ、かつピニングさせるパターンと、物理CPUを共有させるパターンの2通りである。
物理CPUを占有させ、かつピニングさせるパターンの適用サービス例は、高い負荷量を受け持つサービス向けである。物理CPUを共有させるパターンの適用サービス例は、高い負荷量を受け持たないサービス向けである。
【0031】
図8は、比較例において、ユーザ端末31が、アプリケーションの要件からピニングパターンを選択するフローチャートである。
図1のステップS10を実行する前に、ユーザ端末31は、アプリケーションの要件からピニングパターンを選択する処理を実行する。
最初、ユーザ端末31は、アプリケーションが高い負荷量を受け持つか否かを判定する(S20)。
【0032】
ユーザ端末31は、アプリケーションが高い負荷量を受け持つならば(Yes)、このアプリケーションに係る仮想マシンに割り当てた仮想CPUに対して、物理CPUを占有かつピニングさせるパターンを選択し(S21)、図8の処理を終了する。
【0033】
ユーザ端末31は、アプリケーションが高い負荷量を受け持たないならば(No)、このアプリケーションに係る仮想マシンに割り当てた仮想CPUに対して、物理CPUを他の仮想CPUと共有させるパターンを選択し(S22)、図8の処理を終了する。
なお、ピニングパターンを選択する処理を実行するのは、ユーザ端末31に限定されず、IaaS基盤が実行してもよい。
【0034】
図9は、比較例において、仮想マシンを稼働させる仮想CPUを、パターンに基づいて構築する指示を生成するフローチャートである。この図9の処理は、図1のステップS13において実行される。
リソース割当決定部32は、物理CPUが占有されるパターンか否かを判定する(S30)。リソース割当決定部32は、物理CPUが占有されるパターンではないならば(No)、物理CPUの共有に係る処理を実行する。
【0035】
リソース割当決定部32は、物理CPUが占有されるパターンならば(Yes)、指定されたNUMAの物理CPUリソースの空きを判定する(S31)。リソース割当決定部32は、指定されたNUMAの物理CPUリソースの空きが有るならば(Yes)、指定NUMAの空き物理CPU上への指定された仮想CPUのデプロイを指示し(S33)、図9の処理を終了する。
【0036】
リソース割当決定部32は、指定されたNUMAの物理CPUリソースの空きが無いならば(No)、指定されたNUMAへの仮想マシンのデプロイができないため、図9の処理を異常終了する。
【0037】
図10は、比較例のピニング方式で構築されたシステムを示す図である。
NUMA4は、4個の物理CPU41a~41dを備える。物理CPU41aは、高い負荷量を受け持つ仮想マシンに割り当てた仮想CPU42aによって占有され、かつピニングされている。
【0038】
物理CPU41bには、高い負荷量を受け持ち、かつ低レイテンシを要件とする仮想マシンに割り当てた仮想CPU42bによって占有され、かつピニングされている。これを示すため、図10では仮想CPU42a,42bがdedicate方式として記載されている。
【0039】
物理CPU41c,41dには、仮想CPU42c,42dによって共有されている。つまり物理CPU41c,41dは、共有のパターンである。これを示すため、図10では仮想CPU42c,42dがshared方式として記載されている。
【0040】
このシステムに対して、高い負荷量を受け持ち、かつ低レイテンシを要件とする仮想マシンに割り当てた仮想CPUをデプロイしようとしても、物理CPUリソースの空きがないため、この仮想マシンや仮想CPUをデプロイできないという問題がある。
【0041】
《本実施形態の処理》
本実施形態は、比較例のピニング方式を拡張し、物理CPUを占有させ、かつピニングさせないパターンを加えるというものである。本パターンを加えることで、仮想マシンのサービス要件を考慮したCPUの割り当てが可能となる。
【0042】
物理CPUを占有させ、かつピニングさせるパターンは、最優先で処理したいサービスに割り当てられる。このパターンの適用サービス例は、高い負荷量を受け持ち、かつ低レイテンシを要件とするサービスである。ここで低レイテンシの要件とは、レイテンシ要件が厳しいことをいう。これに対して、高い負荷量を受け持つことのみを要件とするサービスとは、レイテンシ要件が緩いことをいう。
【0043】
物理CPUを占有させ、かつピニングさせないパターンは、優先度の高い他のサービスにより、割り当てられる物理CPUが変更される場合がある。このパターンの適用サービス例は、高い負荷量を受け持つことを要件とするサービスである。このパターンを加えることで、仮想マシンのサービス要件を、より考慮したCPUの割り当てが可能となる。
【0044】
図2は、本実施形態において、アプリケーションの要件からピニングパターンを選択するフローチャートである。
ユーザ端末31は、アプリケーションが高い負荷量を受け持つか否かを判定する(S40)。
ユーザ端末31は、アプリケーションが高い負荷量を受け持たないならば(No)、このアプリケーションに係る仮想マシンに割り当てた仮想CPUに対して、物理CPUを他の仮想CPUと共有させるパターンを選択し(S41)、図2の処理を終了する。
【0045】
ユーザ端末31は、アプリケーションが高い負荷量を受け持つならば(Yes)、アプリケーションの要件が低レイテンシであるか否かを判定する(S42)。ステップS42において、ユーザ端末31は、アプリケーションのレイテンシ要件が厳しいならば(Yes)、このアプリケーションに係る仮想マシンに割り当てた仮想CPUに対して、物理CPUを占有かつピニングさせるパターンを選択し(S44)、図2の処理を終了する。
【0046】
ステップS42において、ユーザ端末31は、アプリケーションのレイテンシ要件が厳しくないならば(No)、物理CPUを占有かつピニングさせないパターンを選択し(S43)、図2の処理を終了する。すなわちユーザ端末31は、アプリケーションのレイテンシ要件が緩いならば、物理CPUを占有かつピニングさせないパターンを選択する。
【0047】
図3は、本実施形態において、仮想マシンを稼働させる仮想CPUをピニングパターンに基づいて構築するフローチャートである。
この図3の処理は、図1のステップS13において実行される。
リソース割当決定部32は、物理CPUが占有されるパターンか否かを判定する(S50)。リソース割当決定部32は、物理CPUが占有されるパターンでないならば(No)、物理CPUの共有に係る処理を実行する。
【0048】
リソース割当決定部32は、物理CPUが占有されるパターンならば(Yes)、指定されたNUMAの物理CPUリソースの空きを判定する(S51)。
ステップS52において、リソース割当決定部32は、指定されたNUMAの物理CPUリソースの空きが有るならば(Yes)、指定NUMAの空き物理CPU上への指定された仮想CPUのデプロイを指示し(S53)、図3の処理を終了する。
【0049】
ステップS52において、リソース割当決定部32は、指定されたNUMAの物理CPUリソースの空きが無いならば(No)、物理CPUがピニングされるバターンであるか否かを判定する(S54)。
【0050】
リソース割当決定部32は、物理CPUがピニングされるバターンでないならば(No)、異常終了し、物理CPUがピニングされるバターンならば(Yes)、ステップS55の処理に進む。
【0051】
ステップS55において、リソース割当決定部32は、指定されたNUMAに、占有かつ非ピニングの物理CPUが有るか否かを判定する。リソース割当決定部32は、指定されたNUMAに、占有かつ非ピニングの物理CPUが無ければ(No)異常終了し、占有かつ非ピニングの物理CPUが有れば(Yes)、ステップS56の処理に進む。
【0052】
ステップS56において、リソース割当決定部32は、占有かつ非ピニングの物理CPUが処理する仮想CPUを、他のNUMAへマイグレーションするように指示する。更にリソース割当決定部32は、当該物理CPU上に仮想CPUのデプロイを指示し(S57)、図3の処理を終了する。
【0053】
図4は、本実施形態のピニング方式で構築されたシステムの初期状態を示す図である。
NUMA4bは、1個の物理CPU41eを備えている。この物理CPU41eは、空き状態である。
NUMA4aは、4個の物理CPU41a~41dを備える。物理CPU41aは、高い負荷量を受け持つ仮想マシンに割り当てた仮想CPU42aによって占有されているが、ピニングされていない。つまり物理CPU41aは、占有かつ非ピニングのパターンである。
【0054】
物理CPU41bは、高い負荷量を受け持ち、かつ低レイテンシを要件とする仮想マシンに割り当てた仮想CPU42bによって占有され、かつピニングされている。つまり物理CPU41bは、占有かつピニングのパターンである。これらを示すため、図4では仮想CPU42a,42bがdedicate方式として記載されている。
【0055】
物理CPU41c,41dは、仮想CPU42c,42dによって共有されている。つまり物理CPU41c,41dは、共有のパターンである。これを示すため、図4では仮想CPU42c,42dがshared方式として記載されている。
【0056】
図5は、本実施形態のピニング方式で構築されたシステムのマイグレーション後を示す図である。図5は、図3のステップS56の処理が終了した後の状態を示している。
図4において物理CPU41aを占有していた仮想CPU42aは、図5においてNUMA4bが備える物理CPU41eにマイグレーションされている。そして物理CPU41aは、空き状態である。それ以外の物理CPU41b~41dの状態は、図4に示した初期状態と同様である。
【0057】
図6は、本実施形態のピニング方式で構築されたシステムのデプロイ後を示す図である。図6は、図3のフローチャートが終了した後の状態を示している。
図5において空き状態であった物理CPU41aには、図6において仮想CPU42eがデプロイされている。物理CPU41aは、高い負荷量を受け持ち、かつ低レイテンシを要件とする仮想マシンに割り当てた仮想CPU42eによって占有され、かつピニングされている。
【0058】
(変形例)
本発明は、上記実施形態に限定されることなく、本発明の趣旨を逸脱しない範囲で、変更実施が可能であり、例えば、次の(a)~(c)のようなものがある。
【0059】
(a) NUMAが備える物理CPUの数は4個に限定されない。また、各物理CPU上にデプロイされる仮想CPUの個数は1個または2個に限定されない。
(b) アプリケーションが受け持つ負荷量とレイテンシに応じて、物理CPUの占有の有無およびピニングの有無を判定するのは、ユーザ端末に限定されない。IaaS基盤が、アプリケーションが受け持つ負荷量とレイテンシに応じて、物理CPUの占有の有無およびピニングの有無を判定してもよい。
(c) NUMA上の物理CPUを占有する仮想CPUをマイグレーションするように判断するのは、リソース割当決定部に限定されない。NUMA上に物理CPUの空きが無い場合、仮想マシン生成管理部が物理CPUを占有する仮想CPUをマイグレーションして、この物理CPUを空き状態にしてから仮想マシンをデプロイ(生成)する。
【符号の説明】
【0060】
1 IaaS基盤 (サーバ基盤)
11 ベアメタル
12 仮想マシン
13 コンテナ
14 オブジェクトストレージ
15 ファイルストレージ
16 ブロックストレージ
2a~2i アプリケーション
31 ユーザ端末
32 リソース割当決定部
33 リソース管理部
34 仮想マシン生成管理部
4,4a,4b NUMA
41a~41e 物理CPU
42a~42e 仮想CPU
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10