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

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

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

特許6795536VM性能保証システムおよびVM性能保証方法
<>
  • 特許6795536-VM性能保証システムおよびVM性能保証方法 図000002
  • 特許6795536-VM性能保証システムおよびVM性能保証方法 図000003
  • 特許6795536-VM性能保証システムおよびVM性能保証方法 図000004
  • 特許6795536-VM性能保証システムおよびVM性能保証方法 図000005
  • 特許6795536-VM性能保証システムおよびVM性能保証方法 図000006
  • 特許6795536-VM性能保証システムおよびVM性能保証方法 図000007
  • 特許6795536-VM性能保証システムおよびVM性能保証方法 図000008
  • 特許6795536-VM性能保証システムおよびVM性能保証方法 図000009
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6795536
(24)【登録日】2020年11月16日
(45)【発行日】2020年12月2日
(54)【発明の名称】VM性能保証システムおよびVM性能保証方法
(51)【国際特許分類】
   G06F 9/50 20060101AFI20201119BHJP
   G06F 9/455 20060101ALI20201119BHJP
   G06F 11/34 20060101ALI20201119BHJP
【FI】
   G06F9/50 150A
   G06F9/455 150
   G06F11/34 195
   G06F11/34 142
【請求項の数】4
【全頁数】16
(21)【出願番号】特願2018-44010(P2018-44010)
(22)【出願日】2018年3月12日
(65)【公開番号】特開2019-159646(P2019-159646A)
(43)【公開日】2019年9月19日
【審査請求日】2020年2月28日
【新規性喪失の例外の表示】特許法第30条第2項適用 (1)平成30年1月12日に電子情報通信学会 第15回ネットワークソフトウェア研究会のウェブサイト(http://www.ieice.org/cs/ns/nws/20180118_nwspaper.zip)で講演原稿を公開 (2)平成30年1月18日・19日に開催された電子情報通信学会 第15回ネットワークソフトウェア研究会において18日に発表
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(74)【代理人】
【識別番号】110001807
【氏名又は名称】特許業務法人磯野国際特許商標事務所
(72)【発明者】
【氏名】伊藤 義人
(72)【発明者】
【氏名】浜田 信
【審査官】 桜井 茂行
(56)【参考文献】
【文献】 特開2010−282420(JP,A)
【文献】 米国特許出願公開第2010/0312893(US,A1)
【文献】 特開2016−151889(JP,A)
【文献】 特表2015−524976(JP,A)
【文献】 米国特許出願公開第2015/0040131(US,A1)
【文献】 宮田 康志,仮想化環境におけるクラスタ構成の動的変更制御による省電力化方式の提案,電子情報通信学会技術研究報告,日本,社団法人電子情報通信学会,2010年 7月,Vol.110 No.167,pp. 49-54
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/50
G06F 9/455
G06F 11/34
(57)【特許請求の範囲】
【請求項1】
複数のVM(Virtual Machine)を稼働させる物理サーバと、前記物理サーバに接続され、前記VMの稼働状態を管理するコントローラとを備えるVM性能保証システムであって、
前記物理サーバは、
当該物理サーバが有する物理リソースを複数のグループに分割し、当該分割したグループそれぞれに共有できるVM数を異なるように設定して、前記共有できるVM数が少ないほど優先度が高い優先度グループとし、前記優先度グループそれぞれとその優先度グループの物理リソース上で稼働させるVMとの対応関係を格納する優先度グループ設定情報が記憶される記憶部と、
前記VMそれぞれが稼働する際のリソース利用量を収集し、前記コントローラに送信するリソース利用量収集部と、
前記VMそれぞれに対する前記優先度グループの変更指示を示す優先度グループ変更情報を前記コントローラから受信すると、前記優先度グループ設定情報を参照し、当該VMが属する優先度グループを変更する優先度グループ変更部と、を備え、
前記コントローラは、
前記物理サーバから前記VMそれぞれのリソース利用量を取得するデータ取得部と、
取得した前記リソース利用量に基づき算出された性能値が当該VMの性能不足を判定する第1の条件を満たすか否か、および、前記性能値が当該VMの性能過多を判定する第2の条件を満たすか否か、を判定し、前記第1の条件を満たす場合に、より優先度の高い優先度グループへの変更指示を示す第1の前記優先度グループ変更情報を前記物理サーバに送信し、前記第2の条件を満たす場合に、より優先度の低い優先度グループへの変更指示を示す第2の前記優先度グループ変更情報を前記物理サーバに送信する優先度変更判定部と、を備え、
前記物理サーバの優先度グループ変更部は、
第1の前記優先度グループ変更情報を受信した場合に、当該VMが属する優先度グループをより優先度の高い優先度グループに変更し、第2の前記優先度グループ変更情報を受信した場合に、当該VMが属する優先度グループをより優先度の低い優先度グループに変更すること
を特徴とするVM性能保証システム。
【請求項2】
前記コントローラは、
前記優先度グループに属するVMそれぞれに対して、負荷を所定のパターンで変動させて稼働するテストツールの実行を指示するテストツール機能部と、
前記物理サーバから、前記テストツールによる稼働で得られたリソース利用量および性能値をテスト結果情報として受信し、前記テスト結果情報に基づき、前記リソース利用量に応じた性能値の推定に用いる学習結果データを機械学習により生成する学習機能部と、
前記物理サーバから取得した現時点での前記VMそれぞれのリソース利用量に基づき、前記学習結果データを用いて前記VMそれぞれの性能推定値を計算する性能値推定部と、をさらに備え、
前記優先度変更判定部は、前記算出された性能値の替わりに、計算された前記性能推定値を用いて、前記第1の条件および前記第2の条件を満たすか否かを判定することにより、前記VMそれぞれの前記優先度グループの変更を判定すること
を特徴とする請求項1に記載のVM性能保証システム。
【請求項3】
前記コントローラの前記データ取得部は、前記物理サーバから、前記優先度グループに属するVMそれぞれのリソース利用量および性能値を、所定期間の稼働において実データとして取得し、
前記コントローラは、
前記実データに基づき、前記リソース利用量に応じた性能値の推定に用いる学習結果データを機械学習により生成する学習機能部と、
前記物理サーバから取得した現時点での前記VMそれぞれのリソース利用量に基づき、前記学習結果データを用いて前記VMそれぞれの性能推定値を計算する性能値推定部と、をさらに備え、
前記優先度変更判定部は、前記算出された性能値の替わりに、計算された前記性能推定値を用いて、前記第1の条件および前記第2の条件を満たすか否かを判定することにより、前記VMそれぞれの前記優先度グループの変更を判定すること
を特徴とする請求項1に記載のVM性能保証システム。
【請求項4】
複数のVMを稼働させる物理サーバと、前記物理サーバに接続され、前記VMの稼働状態を管理するコントローラとを備えるVM性能保証システムのVM性能保証方法であって、
前記物理サーバは、
当該物理サーバが有する物理リソースを複数のグループに分割し、当該分割したグループそれぞれに共有できるVM数を異なるように設定して、前記共有できるVM数が少ないほど優先度が高い優先度グループとし、前記優先度グループそれぞれとその優先度グループの物理リソース上で稼働させるVMとの対応関係を格納する優先度グループ設定情報が記憶される記憶部を備えており、
前記VMそれぞれが稼働する際のリソース利用量を収集し、前記コントローラに送信するステップを実行し、
前記コントローラは、
前記物理サーバから前記VMそれぞれのリソース利用量を取得するステップと、
取得した前記リソース利用量に基づき算出された性能値が当該VMの性能不足を判定する第1の条件を満たすか否か、および、前記性能値が当該VMの性能過多を判定する第2の条件を満たすか否か、を判定し、前記第1の条件を満たす場合に、より優先度の高い優先度グループへの変更指示を示す第1の優先度グループ変更情報を前記物理サーバに送信し、前記第2の条件を満たす場合に、より優先度の低い優先度グループへの変更指示を示す第2の優先度グループ変更情報を前記物理サーバに送信するステップと、を実行し、
前記物理サーバは、
前記第1の優先度グループ変更情報を受信した場合に、前記優先度グループ設定情報を参照し、当該VMが属する優先度グループをより優先度の高い優先度グループに変更し、前記第2の優先度グループ変更情報を受信した場合に、前記優先度グループ設定情報を参照し、当該VMが属する優先度グループをより優先度の低い優先度グループに変更するステップを実行すること
を特徴とするVM性能保証方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ネットワーク仮想化技術を用いて、物理マシン上で共有されるVM(Virtual Machine:仮想マシン)の性能を保証する、VM性能保証システムおよびVM性能保証方法に関する。
【背景技術】
【0002】
物理サーバ上で複数のVMを稼働させる一般的な仮想化環境では、サーバリソースは全VMで共有される。そして、その共有の仕方は、ハイパーバイザおよびホストOS(Operating System)のスケジューラに一任され、制御することができない。仮想化環境として広く用いられているOpenStackでも、例えば物理CPU(pCPU)は物理サーバ上の全VMに共有される。
【0003】
一方、VMを専用の物理CPU(CPUコア)に固定化(ピニング)する技術が開示されている(非特許文献1)。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】「Red Hat OpenStack Platform インスタンス&イメージガイド 第4章 NUMAノードを使用するCPUピニングの設定」、[online]、Red Hat、[平成30年3月1日検索]、インターネット<URL:https://access.redhat.com/documentation/ja-jp/red_hat_openstack_platform/9/html/instances_and_images_guide/ch-cpu_pinning>
【発明の概要】
【発明が解決しようとする課題】
【0005】
上記のような従来技術では、物理サーバ上の複数のVMを、どの物理CPUで稼働させるかに関し、共有の程度を制御することはできない。このため、ネットワーク機能としてサービスの性能保証が求められる場合において、OpenStackをはじめとする仮想化環境では特に制御を行わないと、リソースが制御できない形で共有されてしまいVMの性能保証を行うことができなかった。
また、リソースを占有して固定的にVMを割り当てる手法を用いてしまうと、仮想化本来のメリットである柔軟な構成を用いることや、リソースの有効活用ができないという結果となる。
【0006】
このような点に鑑みて本発明がなされたのであり、本発明は、リソースの利用効率を高めつつ、VMの性能保証を実現することができるVM性能保証システムおよびVM性能保証方法を提供することを課題とする。
【課題を解決するための手段】
【0007】
前記した課題を解決するため、請求項1に記載の発明は、複数のVMを稼働させる物理サーバと、前記物理サーバに接続され、前記VMの稼働状態を管理するコントローラとを備えるVM性能保証システムであって、前記物理サーバが、当該物理サーバが有する物理リソースを複数のグループに分割し、当該分割したグループそれぞれに共有できるVM数を異なるように設定して、前記共有できるVM数が少ないほど優先度が高い優先度グループとし、前記優先度グループそれぞれとその優先度グループの物理リソース上で稼働させるVMとの対応関係を格納する優先度グループ設定情報が記憶される記憶部と、前記VMそれぞれが稼働する際のリソース利用量を収集し、前記コントローラに送信するリソース利用量収集部と、前記VMそれぞれに対する前記優先度グループの変更指示を示す優先度グループ変更情報を前記コントローラから受信すると、前記優先度グループ設定情報を参照し、当該VMが属する優先度グループを変更する優先度グループ変更部と、を備え、前記コントローラが、前記物理サーバから前記VMそれぞれのリソース利用量を取得するデータ取得部と、取得した前記リソース利用量に基づき算出された性能値が当該VMの性能不足を判定する第1の条件を満たすか否か、および、前記性能値が当該VMの性能過多を判定する第2の条件を満たすか否か、を判定し、前記第1の条件を満たす場合に、より優先度の高い優先度グループへの変更指示を示す第1の前記優先度グループ変更情報を前記物理サーバに送信し、前記第2の条件を満たす場合に、より優先度の低い優先度グループへの変更指示を示す第2の前記優先度グループ変更情報を前記物理サーバに送信する優先度変更判定部と、を備え、前記物理サーバの優先度グループ変更部が、第1の前記優先度グループ変更情報を受信した場合に、当該VMが属する優先度グループをより優先度の高い優先度グループに変更し、第2の前記優先度グループ変更情報を受信した場合に、当該VMが属する優先度グループをより優先度の低い優先度グループに変更することを特徴とするVM性能保証システムとした。
【0008】
また、請求項4に記載の発明は、複数のVMを稼働させる物理サーバと、前記物理サーバに接続され、前記VMの稼働状態を管理するコントローラとを備えるVM性能保証システムのVM性能保証方法であって、前記物理サーバが、当該物理サーバが有する物理リソースを複数のグループに分割し、当該分割したグループそれぞれに共有できるVM数を異なるように設定して、前記共有できるVM数が少ないほど優先度が高い優先度グループとし、前記優先度グループそれぞれとその優先度グループの物理リソース上で稼働させるVMとの対応関係を格納する優先度グループ設定情報が記憶される記憶部を備えており、前記VMそれぞれが稼働する際のリソース利用量を収集し、前記コントローラに送信するステップを実行し、前記コントローラが、前記物理サーバから前記VMそれぞれのリソース利用量を取得するステップと、取得した前記リソース利用量に基づき算出された性能値が当該VMの性能不足を判定する第1の条件を満たすか否か、および、前記性能値が当該VMの性能過多を判定する第2の条件を満たすか否か、を判定し、前記第1の条件を満たす場合に、より優先度の高い優先度グループへの変更指示を示す第1の優先度グループ変更情報を前記物理サーバに送信し、前記第2の条件を満たす場合に、より優先度の低い優先度グループへの変更指示を示す第2の優先度グループ変更情報を前記物理サーバに送信するステップと、を実行し、前記物理サーバが、前記第1の優先度グループ変更情報を受信した場合に、前記優先度グループ設定情報を参照し、当該VMが属する優先度グループをより優先度の高い優先度グループに変更し、前記第2の優先度グループ変更情報を受信した場合に、前記優先度グループ設定情報を参照し、当該VMが属する優先度グループをより優先度の低い優先度グループに変更するステップを実行することを特徴とするVM性能保証方法とした。
【0009】
このように、VM性能保証システムでは、物理リソースを複数のグループに分割し、共有できるVM数の異なる優先度グループを定義しておく。そして、コントローラが、VMのリソース利用量に基づき、性能不足もしくは性能過多と判定した場合に、物理サーバにおいて、そのVMの優先度グループを変更することができる。よって、物理サーバの物理リソースを有効活用した上で、VMの性能保証を実現することができる。
【0010】
請求項2に記載の発明は、前記コントローラが、前記優先度グループに属するVMそれぞれに対して、負荷を所定のパターンで変動させて稼働するテストツールの実行を指示するテストツール機能部と、前記物理サーバから、前記テストツールによる稼働で得られたリソース利用量および性能値をテスト結果情報として受信し、前記テスト結果情報に基づき、前記リソース利用量に応じた性能値の推定に用いる学習結果データを機械学習により生成する学習機能部と、前記物理サーバから取得した現時点での前記VMそれぞれのリソース利用量に基づき、前記学習結果データを用いて前記VMそれぞれの性能推定値を計算する性能値推定部と、をさらに備え、前記優先度変更判定部が、前記算出された性能値の替わりに、計算された前記性能推定値を用いて、前記第1の条件および前記第2の条件を満たすか否かを判定することにより、前記VMそれぞれの前記優先度グループの変更を判定することを特徴とする請求項1に記載のVM性能保証システムとした。
【0011】
このように、コントローラが、テストツール機能部、学習機能部および性能値推定部を備えることにより、VMのリアルタイムのリソース利用量から性能値が算出できない場合であっても、テストツールで稼働させたテスト結果情報に基づき、当該VMの性能推定値を計算することができる。この性能推定値を用いて、コントローラが、性能不足もしくは性能過多を判定することにより、物理サーバにおいて、動的にVMの優先度グループを変更することができる。よって、物理サーバの物理リソースを有効活用した上で、VMの性能保証を実現することができる。
【0012】
請求項3に記載の発明は、前記コントローラの前記データ取得部は、前記物理サーバから、前記優先度グループに属するVMそれぞれのリソース利用量および性能値を、所定期間の稼働において実データとして取得し、前記コントローラが、前記実データに基づき、前記リソース利用量に応じた性能値の推定に用いる学習結果データを機械学習により生成する学習機能部と、前記物理サーバから取得した現時点での前記VMそれぞれのリソース利用量に基づき、前記学習結果データを用いて前記VMそれぞれの性能推定値を計算する性能値推定部と、をさらに備え、前記優先度変更判定部が、前記算出された性能値の替わりに、計算された前記性能推定値を用いて、前記第1の条件および前記第2の条件を満たすか否かを判定することにより、前記VMそれぞれの前記優先度グループの変更を判定することを特徴とする請求項1に記載のVM性能保証システムとした。
【0013】
このように、コントローラが、学習機能部および性能値推定部を備えることにより、VMの所定期間の稼働における実データに基づき、当該VMの性能推定値を計算することができる。この性能推定値を用いて、コントローラが、性能不足もしくは性能過多を判定することにより、物理サーバにおいて、動的にVMの優先度グループを変更することができる。よって、物理サーバの物理リソースを有効活用した上で、VMの性能保証を実現することができる。
【発明の効果】
【0014】
本発明によれば、リソースの利用効率を高めつつ、VMの性能保証を実現するVM性能保証システムおよびVM性能保証方法を提供することができる。
【図面の簡単な説明】
【0015】
図1】VMの負荷が増大した場合にリソース割当を増やす従来の手法を説明するための図である。
図2】本実施形態に係るVM性能保証システムでの、共有するVM数を変更する処理を説明するための図である。
図3】本実施形態に係る物理サーバにおいて、リソースを優先度の異なるグループに分割することを説明するための図である。
図4】本実施形態に係る優先度グループの変更処理を説明するための図である。
図5】優先度グループの変更により、VMの性能保証が実現することを説明するための図である。
図6】本実施形態に係るVM性能保証システムを構成する物理サーバおよびコントローラの構成例を示す図である。
図7】本実施形態に係るVM性能保証システムが実行する学習結果データ生成処理の流れを示すフローチャートである。
図8】本実施形態に係るVM性能保証システムが実行する優先度グループ変更処理の流れを示すフローチャートである。
【発明を実施するための形態】
【0016】
次に、本発明を実施するための形態(以下、「本実施形態」という。)について説明する。まず、本実施形態に係るVM性能保証システムSの特徴となる構成について、その概要を説明する。
【0017】
<概要>
VM性能保証システムSは、後記する図6で示すように、複数のVM1を備える物理サーバ10(コンピュート)と、コントローラ20とを備えて構成される。そして、VM性能保証システムSは、物理サーバ10の利用効率を高めつつ、VM1の性能保証を実現するため、以下に示す技術的特徴を備える。
【0018】
従来、図1に示すように、例えば、1つの物理リソース(CPUコア:図1の●印)に1つのVM1(図1では1つのVM1に2つの仮想CPU(図1の〇印)を備える。)が稼働する状況において、VM1の負荷が増大した場合、物理リソースの割り当てを増やす、つまり、CPUコアを追加しVM1へのリソース割当量を変更することにより、VM1の性能低下を防いでいた。具体的には、図1の左図のVM1の負荷が増大した場合、図1の右図に示すように、例えば、CPUコアを増加し、1つの仮想CPUに1つの物理リソース(CPUコア)を割り当てる制御を行っていた。
【0019】
これに対し、本実施形態に係るVM性能保証システムSでは、図2に示すように、2つの物理リソース(CPUコア)を2つのVM1が共有する状況において、VM1の負荷が増大した場合に、物理リソースに割り当てるVMの数を変更することにより、VM1の性能低下を防ぐようにする。図2では、物理リソースに共有するVM1の数を「2」から「1」に変更する制御を行う(図2の右図参照)。
つまり、VM1のリソース割当量を変更するのではなく、有限な物理リソース(CPUコア)に対して、割り当てるVM数を制御することを特徴とする。
【0020】
また、VM性能保証システムSの物理サーバ10では、有限の物理リソース(CPUコア)を優先度の異なるグループに分割しておく(図3参照)。そして、各VM1のリソース利用量から計算されるVM1の性能推定値に基づき、性能不足のVM1は、高優先のグループに所属させるように優先度グループの所属先を変更する。また、性能過多のVM1は、低優先のグループに所属させるように、優先度グループの所属先を変更する。このように、VM性能保証システムSでは、各VM1について計算される性能推定値に基づき、どの優先度のグループに所属させるかを判断して所属先の優先度グループを変更する。
【0021】
本実施形態において、この優先度グループは、物理リソースに対するVM1の共有数(VM数)が異なるグループとして定義する。具体的には、オーバーコミット率の異なるCPUピニングパターンのグループに、物理リソースを分割しておく。そして、VM1の負荷に応じて、オーバーコミット率の異なる優先度グループ(CPUピニングパターン)を動的に変更する。高負荷時はオーバーコミット率の小さい(高優先)パターンでCPUを占有(固定化)し、低負荷時はオーバーコミット率の大きい(低優先)パターンでCPUを占有する。これにより、所定値以上の性能を保証しながら、物理リソースの利用効率を高めることができる。
【0022】
例えば、図4に示すように、優先度の最も高いグループとして「優先度Aのグループ」を設定する。この「優先度Aのグループ」は、分割した有限の物理リソース(ここでは、2つのCPUコア)に、VM数が「2」、つまり2つのVM1まで共有できる設定のオーバーコミット率の小さい(高優先)のパターンである。次の「優先度Bのグループ」は、分割した有限の物理リソース(2つのCPUコア)に、VM数が「4」まで共有できるグループである。次の「優先度Cのグループ」は、分割した有限の物理リソース(2つのCPUコア)に、VM数が「8」まで共有できるグループである。そして、「優先度Dのグループ」は、分割した有限の物理リソース(2つのCPUコア)に、VM数が「16」まで共有できる設定のオーバーコミット率の大きい(低優先)のパターンである。
【0023】
本実施形態に係るVM性能保証システムSでは、例えば、図5に示すように、最初は、VM数「16」の「優先度Dのグループ」に所属していたVM1が、その性能が低下し、予めユーザとの間で取り決めがなされたSLA(Service Level Agreement:サービス品質保証)で示される性能値に所定値以上近づいた場合(性能不足に至る状況の場合)に、所属グループをより高優先でオーバーコミット率の小さい「優先度Cのグループ」(共有できるVM数「8」)に変更する。そのVM1について、その後さらに性能が低下し、SLAで示される性能値に所定値以上近づいた場合には、同様に、所属グループを「優先度Bのグループ」(共有できるVM数「4」)、「優先度Aのグループ」(共有できるVM数「2」)のように、より高優先でオーバーコミット率の小さいグループに変更する。このようにすることにより、VM1の性能保証を実現することができる。
また、VM性能保証システムSでは、性能に余裕がある場合には(性能過多の場合)には、そのVM1の所属グループをより低優先でオーバーコミット率の大きいグループに変更する。このようにすることで、物理リソース(CPUコア)の利用効率を高めることができる。
【0024】
<本実施形態の構成>
次に、本実施形態に係るVM性能保証システムSについて説明する。
図6は、本実施形態に係るVM性能保証システムSを構成する物理サーバ10およびコントローラ20の機能ブロック図である。
物理サーバ10とコントローラ20は、通信ネットワークを介して接続される。本実施形態では、1台の物理サーバ10上に、仮想ルータとして機能するVM1が複数配置されるものとして説明する。なお、物理サーバ10は1台に限定されるものではなく、複数台の物理サーバ10がコントローラ20に接続されていてもよい。また、仮想ルータもVM1の機能の一例であり、他の機能をVM1で実現するようにしてもよい。
【0025】
≪物理サーバ≫
物理サーバ10は、自身の物理サーバ上に複数のVM1(仮想マシン)を設定する機能(コンピュートとしての機能)を有する。ここでは、具体例として、各VM1に対してSLA等で規定される性能を、VM1(仮想ルータ)のパケット転送の遅延(レイテンシ)とする。なお、SLA等で規定される性能は、遅延(レイテンシ)以外でも、例えばスループット等であってもよい。また、VM1(仮想ルータ)のCPU使用量、メモリ使用量、パケット送受信数等をリソース利用量とする。
【0026】
この物理サーバ10は、自身が備える物理リソース(例えば、CPUコア)を優先度の異なる複数のグループに分割しておき、その分割された物理リソース毎に、VM1の共有数(VM数)が異なるグループを定義しておく。そして、物理サーバ10は、VM1の負荷に応じて、そのVM1の優先度グループをオーバーコミット率の異なる他の優先度グループを変更する。
【0027】
この物理サーバ10は、VM1を生成する機能(図示省略)を備えるとともに、リソース利用量収集部11、優先度グループ定義部12、優先度グループ変更部13を備える。また、物理サーバ10は、入出力部および記憶部(いずれも図示省略)を備える。
入出力部は、情報の送受信を行うための通信インタフェース、および、タッチパネルやキーボード等の入力装置や、モニタ等の出力装置との間で情報の送受信を行うための入出力インタフェースからなる。
また、記憶部は、フラッシュメモリやハードディスク、RAM(Random Access Memory)等により構成される。この物理サーバ10の記憶部には、図6に示すように、優先度グループ設定情報14が記憶される(詳細は後記)。
【0028】
リソース利用量収集部11は、各VM1のリソース利用量(CPU使用量、メモリ使用量、パケット送受信数等)を収集する。そして、リソース利用量収集部11は、収集した各VM1のリソース利用量の情報を、コントローラ20に送信する。
なお、リソース利用量収集部11は、コントローラ20の指示により、後記するテストツールが実行された場合には、そのテストツールのテスト結果である各VM1のリソース利用量をコントローラ20に送信する。
【0029】
優先度グループ定義部12は、物理サーバ10の物理リソースであるCPUコアを、複数のグループに分割する。そして、各グループを、オーバーコミット率の異なるCPUピニングパターンに分けて設定する。
具体的には、優先度グループ定義部12は、図4で示したように、優先度が最も高いグループとして、共有できるVM数を「2」とする「優先度Aのグループ」を設定する。次に優先度が高いグループとして、共有できるVM数を「4」とする「優先度Bのグループ」を設定する。さらにその次に優先度が高いグループとして、共有できるVM数を「8」とする「優先度Cのグループ」を設定する。さらにその次に優先度が高いグループ(優先度が最も低いグループ)として、共有できるVM数を「16」とする「優先度Dのグループ」を設定する。
なお、この優先度グループは、優先度A〜Dの4つのグループに限定されることなく、CPUコアを分割できる範囲で、2つ以上の任意の数のグループに設定可能である。
また、VM1を専用のCPUコアに固定化(ピニング)する技術は、例えば非特許文献1の技術により実現することができる。
【0030】
優先度グループ定義部12は、各優先度グループに対応する物理リソース(CPUコア)の情報と、その優先度グループの物理リソース(CPUコア)において共有するVM数(オーバーコミット率)と、VM1それぞれがどの優先度グループ(優先度A〜Dのグループ)に所属するかを示す情報とを、優先度グループ設定情報14として記憶部に記憶する。
【0031】
優先度グループ変更部13は、コントローラ20から、そのVM1についての優先度グループの変更指示を示す優先度グループ変更情報を受信し、その優先度グループ変更情報で示される、より優先度の高いグループまたはより優先度の低いグループに、そのVM1が所属する優先度グループを変更する。
【0032】
≪コントローラ≫
コントローラ20は、物理サーバ10から各VM1のリソース利用量の情報を取得し、VM1(仮想ルータ)の性能推定値を計算する。そして、コントローラ20は、計算したVM1の性能推定値が、性能不足領域、無変更領域、性能過多領域のうちのどの領域に属するのかを判定する。コントローラ20は、VM1の性能推定値が、性能不足領域に属すると判定した場合には、よりオーバーコミット率の小さいCPUピニングパターンの優先度グループに変更する指示(優先度グループ変更情報)を物理サーバ10に送信する。また、コントローラ20は、VM1の性能推定値が、性能過多領域に属すると判定した場合には、よりオーバーコミット率の大きいCPUピニングパターンの優先度グループに変更する指示(優先度グループ変更情報)を物理サーバ10に送信する。
【0033】
このコントローラ20は、データ取得部21と、テストツール機能部22と、学習機能部23と、性能値推定部24と、優先度変更判定部25とを備える。また、コントローラ20は、入出力部および記憶部(いずれも図示省略)を備える。
入出力部は、情報の送受信を行うための通信インタフェース、および、タッチパネルやキーボード等の入力装置や、モニタ等の出力装置との間で情報の送受信を行うための入出力インタフェースからなる。
また、記憶部は、フラッシュメモリやハードディスク、RAM等により構成される。このコントローラ20の記憶部は、図6に示すように、データ保存DB26を備える。このデータ保存DB26は、物理サーバ10から取得した各VM1のリソース利用量(CPU使用量、メモリ使用量、パケット送受信数等)の情報が記憶される。また、このデータ保存DB26には、テストツール機能部22の指示により、物理サーバ10から取得したVM1ごとのテスト結果の情報が記憶される。
【0034】
データ取得部21は、物理サーバ10が収集した各VM1についてのリソース利用量を取得し、データ保存DB26に記憶する。また、データ取得部21は、物理サーバ10が実行したテストツールの結果として収集した、リソース利用量等のテスト結果情報を取得し、データ保存DB26に記憶する。
【0035】
テストツール機能部22は、テストツールを起動し、物理サーバ10にデータ取得開始指示を送信することにより、各VM1のリソース利用量のデータとそれに対応する性能値(遅延)のデータを物理サーバ10から取得する。
テストツール機能部22は、例えば、異なるオーバーコミット率で設定された優先度グループに属するVM1それぞれについて、負荷を所定パターンで変動させ、それにより得られるリソース利用量と、そのときの性能値とをテスト結果情報として取得する。
なお、テストツールを用いる理由は、実性能のデータは、実際のサービス提供時には取得できないことが多いためである。
【0036】
学習機能部23は、テストツール機能部22が取得したテストツールの結果データ(テスト結果情報)を用いて、機械学習による分析(例えば、回帰分析学習)を行い、学習結果データを生成する。この学習結果データは、各オーバーコミット率(優先度グループ)に所属するVM1毎に、リソース利用量から性能値を推定するための情報である。
【0037】
性能値推定部24は、物理サーバ10から取得した(現時点での)各VM1のリソース利用量に基づき、学習機能部23が保持する学習結果データを用いて、VM1それぞれの性能推定値を計算する。
【0038】
優先度変更判定部25は、性能値推定部24が計算したVM1それぞれの性能推定値を用いて、計算したVM1の性能推定値が、性能不足領域、無変更領域、性能過多領域のうちのどの領域に属するのかを判定する。
例えば、優先度変更判定部25は、VM1の性能推定値が、性能不足領域に属すると判定した場合には、よりオーバーコミット率の小さいCPUピニングパターンの優先度グループに変更する指示(優先度グループ変更情報)を物理サーバ10に送信する。また、優先度変更判定部25は、VM1の性能推定値が、性能過多領域に属すると判定した場合には、よりオーバーコミット率の大きいCPUピニングパターンの優先度グループに変更する指示(優先度グループ変更情報)を物理サーバ10に送信する。なお、優先度変更判定部25は、VM1の性能推定値が、無変更領域に属すると判定した場合には、優先度グループを変更する指示を物理サーバ10に送信しない。これにより、そのVM1のその時点での優先度グループへの所属を維持させるようにする。
【0039】
<処理の流れ>
次に、VM性能保証システムSが実行する処理の流れについて図7および図8を参照して説明する。図7では、VM1(仮想ルータ)の推定遅延値を算出するために必要となる学習結果データを生成する処理(学習結果データ生成処理)について説明する。また、図8では、VM1の優先度グループの変更処理について説明する。
【0040】
図7は、本実施形態に係るVM性能保証システムSが実行する学習結果データ生成処理の流れを示すフローチャートである。
【0041】
まず、物理サーバ10の優先度グループ定義部12は、各優先度グループに対応する物理リソース(CPUコア)において共有するVM数(オーバーコミット率)の情報と、VM1それぞれがどの優先度グループ(優先度A〜Dのグループ)に所属するかを示す情報とを、優先度グループ設定情報14として記憶部に記憶する(ステップS10)。
【0042】
この優先度グループ設定情報14では、例えば、図4に示すように、共有できるVM数を「2」とする優先度が最も高い「優先度Aのグループ」、次に優先度が高く共有できるVM数を「4」とする「優先度Bのグループ」、さらにその次に優先度が高く共有できるVM数を「8」とする「優先度Cのグループ」、優先度が最も低く共有できるVM数を「16」とする「優先度Dのグループ」が設定される。また、優先度グループ設定情報14には、物理サーバ10上のVM1それぞれをどの優先度グループに所属させるかの初期設定の情報が格納させる。
なお、優先度グループ定義部12は、この優先度グループ設定情報14を、外部装置(例えば、コントローラ20やネットワークの管理装置等)から受信することにより取得してもよいし、入出力部(図示省略)を介して情報の入力を受け付けてもよい。
【0043】
次に、コントローラ20のテストツール機能部22が、テストツールを起動し(ステップS11)、物理サーバ10にデータ取得開始指示を送信する(ステップS12)。
【0044】
このデータ取得開始指示を受信すると、物理サーバ10は、負荷を所定パターンで変更させ、リソース利用量収集部11が、各VM1についてのリソース利用量およびそのときの性能値の情報をテスト結果として収集する(ステップS13)。そして、リソース利用量収集部11は、収集したテスト結果をコントローラ20に送信する。
【0045】
コントローラ20のデータ取得部21は、テスト結果を受信しテスト結果情報としてデータ保存DB26に記憶する(ステップS14)。
続いて、コントローラ20の学習機能部23が、各VM1についてのテスト結果情報を用いて、機械学習による分析(例えば、回帰分析学習)を行い、学習結果データを生成する(ステップS15)。
【0046】
このように、VM性能保証システムSでは、テストツールを用いて、各優先度グループでのVM1についてリソース利用量に応じた性能値を事前に計測しておくことにより、学習結果データを生成する。この学習結果データを用いて、VM性能保証システムSは、リアルタイムに更新される各VM1のリソース利用量のデータに基づき、性能推定値を計算することができる。
【0047】
次に、VM性能保証システムSが実行するVM1の優先度グループの変更処理について説明する。
図8は、本実施形態に係るVM性能保証システムSが実行する優先度グループ変更処理の流れを示すフローチャートである。
ここでは、物理サーバ10のリソース利用量収集部11が、所定の時間間隔で各VM1のリソース利用量を収集し、コントローラ20に送信する。そして、コントローラ20の性能値推定部24が、学習結果データを用いてVM1の性能推定値を計算する。計算された性能推定値について、優先度変更判定部25が、性能不足領域、性能過多領域に属するかを判定する。以下、詳細に説明する。
なお、図8の処理以前に、図7で行った物理サーバ10による優先度グループ設定情報14の記憶と、コントローラ20による学習結果データの生成が終わっているものとする。
【0048】
まず、物理サーバ10のリソース利用量収集部11は、所定時間が経過したか否かを判定する(ステップS20)。所定時間が経過していない場合には(ステップS20→No)、ステップS20に戻り、所定時間が経過するまで待機する。一方、所定時間が経過した場合には(ステップS20→Yes)、次のステップS21へ進む。つまり、以降の処理は、所定の時間間隔で繰り返し実行されるものである。
【0049】
ステップS21において、物理サーバ10のリソース利用量収集部11が、各VM1についてのリソース利用量の情報を収集し、コントローラ20に送信する。
コントローラ20のデータ取得部21は、取得した各VM1についてのリソース利用量の情報をデータ保存DB26に記憶する(ステップS22)。このステップS22以降の処理は、VM1毎に行われる。
【0050】
次に、コントローラ20の性能値推定部24は、データ保存DB26に記憶された各VM1のリソース利用量に基づき、学習機能部23が保持する学習結果データを用いて、VM1それぞれの性能推定値xを計算する(ステップS23)。
【0051】
そして、コントローラ20の優先度変更判定部25は、性能値推定部24が計算したVM1の性能推定値が、性能不足領域、無変更領域、性能過多領域のうちのどの領域に属するのかを判定する。ここで、VM1(仮想ルータ)の性能(遅延)に対する性能推定値xを、性能不足領域(x>8ms:第1の条件)、無変更領域(4ms≦x≦8ms)、性能過多領域(x<4ms:第2の条件)と設定しておき、以下の処理により、そのVM1の性能推定値が、性能不足領域に属するのか、または、性能過多領域に属するのかを判定する。具体的には、以下の処理を実行する。
【0052】
優先度変更判定部25は、VM1の性能推定値xが、x>8ms(第1の条件)に該当するか否かを判定する(ステップS24)。そして、優先度変更判定部25は、第1の条件に該当する場合には(ステップS24→Yes)、性能推定値xが性能不足領域にあると判定する。そして、優先度変更判定部25は、よりオーバーコミット率の小さいCPUピニングパターンの優先度グループに変更する指示(第1の優先度グループ変更情報)を物理サーバ10に送信する(ステップS25)。
【0053】
物理サーバ10の優先度グループ変更部13は、この優先度グループ変更情報を受信すると、当該VM1の所属する優先度グループを、優先度グループ設定情報14を参照して確認し、よりオーバーコミット率の小さいCPUピニングパターンの優先度グループに変更する(ステップS26)。この際、優先度グループ変更部13は、当該VM1について新たに所属する優先度グループに基づき、優先度グループ設定情報14を更新する。
【0054】
一方、ステップS24において、第1の条件に該当しない場合には(ステップS24→No)、ステップS27に進む。
ステップS27において、優先度変更判定部25は、VM1の性能推定値xが、x<4ms(第2の条件)に該当するか否かを判定する。そして、優先度変更判定部25は、第2の条件に該当する場合には(ステップS27→Yes)、性能推定値xが性能過多領域にあると判定する。そして、優先度変更判定部25は、よりオーバーコミット率の大きいCPUピニングパターンの優先度グループに変更する指示(第2の優先度グループ変更情報)を物理サーバ10に送信する(ステップS28)。
【0055】
物理サーバ10の優先度グループ変更部13は、この優先度グループ変更情報を受信すると、当該VM1の所属する優先度グループを、優先度グループ設定情報14を参照して確認し、よりオーバーコミット率の大きいCPUピニングパターンの優先度グループに変更する(ステップS29)。この際、優先度グループ変更部13は、当該VM1について新たに所属する優先度グループに基づき、優先度グループ設定情報14を更新する。
【0056】
一方、ステップS27において、第2の条件に該当しない場合には(ステップS27→No)、処理を終える。
優先度変更判定部25は、ステップS24〜S29の処理を、物理サーバ10(優先度グループ変更部13)とともに、各VM1について実行する。
【0057】
以上説明したように、本実施形態に係るVM性能保証システムSによれば、負荷が小さいVM1が過剰となった物理リソースを確保し続けることがないため、物理サーバ10のリソース利用効率を高めることができる。また、共有できるVM数の異なる優先度グループを定義し、性能不足もしくは性能過多の場合に動的に優先度グループを変更することで、物理リソースを効率的に活用した上で、VM1の性能保証を実現することができる。
【0058】
(変形例)
本発明は、上記した実施形態に限定されることなく、本発明の趣旨を逸脱しない範囲で変更実施が可能である。例えば、以下のような変形例として実施することもできる。
【0059】
<変形例1>
本実施形態では、上記のように、実性能のデータが実際のサービス提供時には取得できないことが多いため、コントローラ20にテストツール機能部22(図6参照)を備え、異なる優先度グループに属するVM1の負荷を所定パターンで変動させてテスト結果情報を取得し、性能推定値を計算できるようにした。
これに対し、SLA等で規定される性能の種別やシステム構成、アプリケーションの設定等により、各VM1のリソース利用量からコントローラ20が性能値をリアルタイムで取得(算出)できる場合には、テストツール機能部22、学習機能部23、性能値推定部24(図6参照)を設けない構成とする。このとき、コントローラ20の優先度変更判定部25は、リアルタイムに取得した性能値を用いて、各VMの性能不足、性能過多を判定することにより、優先度グループの変更処理を実行する。
【0060】
<変形例2>
また、本実施形態では、コントローラ20にテストツール機能部22(図6参照)を設け、テストツールを起動させてテスト結果情報を物理サーバ10から取得するようにした。このテスト結果情報を用いて、学習機能部23が学習結果データを生成する替わりに、コントローラ20が、所定期間の実運用(稼働)での各VMのリソース利用量と性能値のデータを蓄積し、その蓄積データ(過去の実データ)を用いて、学習機能部23が学習結果データを生成するようにしてもよい。
【0061】
このような本実施形態の変形例1,2によっても、本実施形態と同様に、物理リソースの利用効率を高めつつ、VM1の性能保証を実現することが可能となる。
【符号の説明】
【0062】
1 VM(仮想ルータ)
10 物理サーバ(コンピュート)
11 リソース利用量収集部
12 優先度グループ定義部
13 優先度グループ変更部
14 優先度グループ設定情報
20 コントローラ
21 データ取得部
22 テストツール機能部
23 学習機能部
24 性能値推定部
25 優先度変更判定部
26 データ保存DB
図1
図2
図3
図4
図5
図6
図7
図8