(57)【要約】【課題】IaaS基盤を利用して仮想マシンを運用・管理しつつ、仮想マシンの資源の利用効率を上げる。【解決手段】仮想リソース割り当てプログラムは、コンピュータに、サーバ上に具現化される仮想マシンに対して、起動用CPU５１を割り当てて起動させる手順、この仮想マシンの起動後に、ユーザの要求条件を満たすサービス用CPU５２を選定する手順、この仮想マシンの各仮想CPUに対して、ユーザの要求条件を満たすサービス用CPU５２を固定割り付けする手順を実行させるためのものである。【選択図】図１
2019144727.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
サーバ上に具現化される仮想マシンの仮想CPUに対して、IaaS基盤により第１の物理CPUを割り当てて起動させる手順、
前記仮想マシンの起動後に、ユーザの要求条件を満たす第２の物理CPUを選定する手順、
前記仮想マシンの各仮想CPUに対して前記第２の物理CPUを固定割り付けする手順、
を実行させるための仮想リソース割り当てプログラム。
【請求項２】
前記サーバが備える複数の物理CPUの使用状況に応じて、前記仮想マシンを起動させるために割り当てる前記第１の物理CPUを選定する手順、
をコンピュータに実行させるための請求項１に記載の仮想リソース割り当てプログラム。
【請求項３】
サービスを実行していない物理CPUと、複数のサービスを同時に実行している物理CPUとを前記第１の物理CPUの選定対象とし、特定のサービスを実行する占有の物理CPUを前記第１の物理CPUの選定対象から除外する手順、
をコンピュータに実行させるための請求項２に記載の仮想リソース割り当てプログラム。
【請求項４】
複数のサービスを実行可能な非占有の物理CPUを抽出し、抽出された前記非占有の物理CPUから前記第２の物理CPUを選定する手順、
をコンピュータに実行させるための請求項１に記載の仮想リソース割り当てプログラム。
【請求項５】
サーバ上に具現化される仮想マシンの仮想CPUに対して、IaaS基盤により第１の物理CPUを割り当てて起動させ、
前記仮想マシンの起動後に、ユーザの要求条件を満たす第２の物理CPUを選定し、
前記仮想マシンの各仮想CPUに対して前記第２の物理CPUを固定割り付けする、
ことを特徴とする仮想リソース割り当て方法。
【請求項６】
サーバ上に具現化される仮想マシンの初回の起動に対して、IaaS基盤により当該仮想マシンの仮想CPUとして割り当てる第１の物理CPUを選定すると共に、前記仮想マシンの起動後にユーザの要求条件を満たす第２の物理CPUを選定するリソース選定部と、
前記仮想マシンの各仮想CPUに対して前記第２の物理CPUを固定割り付けさせる仮想マシン設定ファイル操作部と、
を備えることを特徴とする仮想リソース管理装置。
【請求項７】
複数のサービスを実行可能な非占有の物理CPUを、第１の物理CPUの候補として抽出するリソース抽出部、
を更に備えることを特徴とする請求項６に記載の仮想リソース管理装置。
【請求項８】
前記リソース抽出部は、特定のサービスを実行する占有の物理CPUを前記第１の物理CPUの選定対象から除外する、
ことを特徴とする請求項７に記載の仮想リソース管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、煩雑な仮想マシン設定ファイルの生成では市中のIaaS(Infrastructure as a Service)基盤を活用しつつ、市中のIaaS基盤では制限される設定項目、例えば仮想CPU(Central Processing Unit)と物理CPUをN:1で固定割り付けするように仮想マシンの設定ファイルを所望の条件に書き換えて再起動をすることで設定を反映させるための、仮想リソース管理装置、仮想リソース割り当て方法および仮想リソース割り当てプログラムに関する。
【背景技術】
【０００２】
近年では仮想化技術を適用したネットワーク機能の仮想化（NFV:Network Functions Virtualization）の採用が進展している。ネットワークの仮想化は、従来専用のハードウェアを用いて実現されていたネットワーク機能をソフトウェア化して汎用サーバ上で動作させるように構成するものである。仮想化技術をキャリア網に適用することで、スケーラビリティと信頼性を両立させることや、迅速なサービス提供、サービス毎の需要に応じた柔軟なリソースの割り当てと、ハードウェアの寿命に縛られないサービス展開が実現できると期待されている。
【０００３】
性能要件が高いネットワーク機器へネットワーク仮想化技術を適用することを考えると、リアルタイム性を追求すると共に性能のゆらぎを抑えることが求められる。仮想化において、このような性能要件を満たすための1つの方法として、仮想CPUを物理的なCPU(CPUコア)に対応付けるCPU固定割り付け（CPU Pinning）がある。CPU固定割り付けにより、仮想マシンの仮想CPUは、物理CPUコアを占有してリアルタイム性を高め、かつ性能のゆらぎを抑えることができる。
【０００４】
OpenStackでは、仮想マシン単位でCPU固定割り付けの有無を指定することが可能である。OpenStackでは、flavorのExtra Specsに hw_cpu_policy=dedicated という形式でCPUの固定割り付けポリシを記述することができる（非特許文献１）。CPUの固定割り付けポリシが設定されたflavorを用いることで、CPUの固定割り付けが実現できる。ただし、flavorは仮想マシン毎の指定となる。
【０００５】
またKVM(Kernel-based Virtual Machine)では仮想CPU単位でCPU固定割り付けの有無の指定や、CPU固定割り付け時の多重度など、詳細項目を指定することが可能である。KVMにおいて、仮想マシンの設定ファイル(XMLファイル)内のvcpupinの設定項目にて、仮想CPUに割り付ける物理的なCPUを指定することができる（非特許文献２）。
【０００６】
仮想マシンを生成する際に必要となる設定ファイルの中身は設定項目が多岐に亘り非常に煩雑であるが、OpenStack等のIaaS基盤では、グラフィカルユーザインタフェースを利用して割り当てるCPUやメモリ等の基本情報を入力することで、このXMLファイルを起動直前に自動生成することが可能である。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】“Ｆｌａｖｏｒｓ”、[online]、OpenStack Docs、[２０１８年１月２２日検索]、インターネット<URL:https://docs.openstack.org/nova/pike/admin/flavors.html>
【非特許文献２】“ｌｉｂｖｉｒｔ”、[online]、Domain XML format、[２０１８年１月２２日検索]、インターネット<URL:https://libvirt.org/formatdomain.html#elementsCPUTuning/>
【発明の概要】
【発明が解決しようとする課題】
【０００８】
IaaS基盤で可能な設定項目は粒度が荒い場合があり、仮想化のメリットを活かす設定が困難なケースがある。
例えば、通信ソフトウェアは1つのアプリケーション内に性能要件の高いプロセスと性能要件の低いプロセスが混在していることがある。性能要件の高いプロセスとは、例えばデータプレーン処理を行うプロセスである。性能要件の低いプロセスとは、例えば保守系の処理を行うプロセスである。
【０００９】
OpenStackのような市中IaaS基盤を利用して性能要件の高いプロセスを考慮して仮想マシン単位でCPUの固定割り付けを選択すると、性能要件の低いプロセスに対してもCPUコアが占有で割り当てられる。そのため、OpenStackのCPU固定割り付けでは、資源の利用効率が上がらない。
【００１０】
また、仮想化基盤上に複数の仮想マシンを搭載して運用すると、リソースの使用状況や仮想マシンの同時起動数等の変化により、仮想マシン起動時の負荷は変化する。しかし、市中IaaS基盤ではこのような起動時の影響については考慮されていない。
【００１１】
一方で、IaaS基盤を用いずに複数の仮想マシンを含むシステムを運用・管理するためには、煩雑な定義ファイルを全て手作業で設定する必要があり、非現実的である。
【００１２】
そこで、本発明は、IaaS基盤を利用して仮想マシンを運用・管理しつつ、仮想マシンの資源の利用効率を上げることを課題とする。
【課題を解決するための手段】
【００１３】
この課題を解決するため、請求項１に記載の発明では、コンピュータに、サーバ上に具現化される仮想マシンの仮想CPUに対して、IaaS基盤により第１の物理CPUを割り当てて起動させる手順、前記仮想マシンの起動後に、ユーザの要求条件を満たす第２の物理CPUを選定する手順、前記仮想マシンの各仮想CPUに対して前記第２の物理CPUを固定割り付けする手順、を実行させるための仮想リソース割り当てプログラムとした。
【００１４】
このようにすることで、IaaS基盤を利用して仮想マシンを運用・管理しつつ、仮想マシンの資源の利用効率を上げることができる。
【００１５】
請求項２に記載の発明では、前記サーバが備える複数の物理CPUの使用状況に応じて、前記仮想マシンを起動させるために割り当てる前記第１の物理CPUを選定する手順、をコンピュータに実行させるための請求項１に記載の仮想リソース割り当てプログラムとした。
【００１６】
このようにすることで、負荷や同時起動台数に応じて起動用リソースを柔軟に選ぶことができ、よって仮想マシンの起動を安定に実行させることができる。
【００１７】
請求項３に記載の発明では、サービスを実行していない物理CPUと、複数のサービスを同時に実行している物理CPUとを前記第１の物理CPUの選定対象とし、特定のサービスを実行する占有の物理CPUを前記第１の物理CPUの選定対象から除外する手順、をコンピュータに実行させるための請求項２に記載の仮想リソース割り当てプログラムとした。
【００１８】
このようにすることで、この特定のサービスに影響を与えることなく、仮想マシンの起動を安定に実行させることができる。
【００１９】
請求項４に記載の発明では、複数のサービスを実行可能な非占有の物理CPUを抽出し、抽出された前記非占有の物理CPUから前記第２の物理CPUを選定する手順、をコンピュータに実行させるための請求項１に記載の仮想リソース割り当てプログラムとした。
【００２０】
このようにすることで、仮想マシンの資源の利用効率を上げることができる。
【００２１】
請求項５に記載の発明では、サーバ上に具現化される仮想マシンの仮想CPUに対して、IaaS基盤により第１の物理CPUを割り当てて起動させ、前記仮想マシンの起動後に、ユーザの要求条件を満たす第２の物理CPUを選定し、前記仮想マシンの各仮想CPUに対して前記第２の物理CPUを固定割り付けして再起動させる、ことを特徴とする仮想リソース割り当て方法とした。
【００２２】
このようにすることで、IaaS基盤を利用して仮想マシンを運用・管理しつつ、仮想マシンの資源の利用効率を上げることができる。
【００２３】
請求項６に記載の発明では、サーバ上に具現化される仮想マシンの初回の起動に対して、IaaS基盤により当該仮想マシンの仮想CPUとして割り当てる第１の物理CPUを選定すると共に、前記仮想マシンの起動後にユーザの要求条件を満たす第２の物理CPUを選定するリソース選定部と、前記仮想マシンの各仮想CPUに対して前記第２の物理CPUを固定割り付けさせる仮想マシン設定ファイル操作部と、を備えることを特徴とする仮想リソース管理装置とした。
【００２４】
このようにすることで、IaaS基盤を利用して仮想マシンを運用・管理しつつ、仮想マシンの資源の利用効率を上げることができる。
【００２５】
請求項７に記載の発明では、複数のサービスを実行可能な非占有の物理CPUを、第１の物理CPUの候補として抽出するリソース抽出部、を更に備えることを特徴とする請求項６に記載の仮想リソース管理装置とした。
【００２６】
このようにすることで、負荷や同時起動台数に応じて起動用リソースを柔軟に選ぶことができ、よって仮想マシンの起動を安定に実行させることができる。
【００２７】
請求項８に記載の発明では、前記リソース抽出部は、特定のサービスを実行する占有の物理CPUを前記第１の物理CPUの選定対象から除外する、ことを特徴とする請求項７に記載の仮想リソース管理装置とした。
【００２８】
このようにすることで、この特定のサービスに影響を与えることなく、仮想マシンの起動を実行させることができる。
【発明の効果】
【００２９】
本発明によれば、IaaS基盤を利用して仮想マシンを運用・管理しつつ、仮想マシンの資源の利用効率を上げることが可能となる。
【図面の簡単な説明】
【００３０】
【図１】本実施形態の仮想リソース管理システムを示す図である。
【図２】仮想リソース管理装置とIaaS基盤装置による処理を示すフローチャートである。
【図３】IaaS基盤装置による第１の処理を示すフローチャートである。
【図４】IaaS基盤装置による第２の処理を示すフローチャートである。
【図５】リソース管理テーブルを示す図である。
【図６】起動用CPU選択用のリソース選定テーブルを示す図である。
【図７】仮想リソース管理装置による起動用CPUリソースの選択処理を示すフローチャートである。
【図８】リソース選定テーブルを示す図である。
【図９】割り当て可能リソースの抽出処理を示すフローチャートである。
【図１０】IaaS基盤ツールが作成した仮想マシン設定ファイルを示す図である。
【図１１】仮想リソース管理装置が修正した仮想マシン設定ファイルを示す図である。
【発明を実施するための形態】
【００３１】
仮想マシンを生成するためには、リソースの割当設定等が記載された設定ファイルが必要であるが、設定項目が多岐に亘り非常に煩雑である。OpenStack等のIaaS基盤では、グラフィカルユーザインタフェースを利用して、仮想マシンに割り当てるCPUやメモリ等の基本情報をユーザに入力させる。これにより、この設定ファイルを仮想マシンの起動直前に生成することが可能である。
【００３２】
一方で、OpenStack等のIaaS基盤から設定できる項目には制限がある。例えば、高い性能要件を持つアプリケーション向けに、仮想CPUを物理CPUに対し固定的に割り付けるCPU Pinningという方法がある。しかしOpenStackでは仮想CPUと物理CPUを1:1で固定的に割り付けることしかできない。またCPUの固定割り付けポリシは仮想マシン単位で設定する必要がある。
【００３３】
本発明は、市中IaaS基盤を経由してインスタンスを生成した後に、IaaS基盤からの設定では制限のある項目については、仮想マシンの設定ファイルを所望の条件、例えば仮想CPUと物理CPUをN:1で固定割り付けするように書き換えて、再起動させることで設定を反映させている。
以降、本発明を実施するための形態を、各図を参照して詳細に説明する。
【００３４】
図１は、本実施形態の仮想リソース管理システム１を示す図である。
仮想リソース管理システム１は、クライアント端末２と、これによって制御される仮想リソース管理装置３と、IaaS基盤装置４とを含んで構成され、物理リソースとして機能する複数のサーバ５が通信可能に接続されている。
【００３５】
複数のサーバ５は、仮想マシンを具現化するための物理リソースであり、互いに独立して動作する複数の物理CPUコアを内蔵している。各サーバ５は、１個の起動用CPU５１と、複数のサービス用CPU５２と、仮想マシンの設定情報が格納された仮想マシン設定ファイル５３を含んで構成される。これら起動用CPU５１と、複数のサービス用CPU５２とは、仮想マシンの仮想CPUに割り付けられる物理CPUリソースである。なお、これら起動用CPU51と複数のサービス用CPU52とは、状況に応じて共有されてもよい。また、起動用CPU51として利用していた物理CPUコアを、サービス用CPU52として利用してもよく、限定されない。
仮想マシン設定ファイル５３は、構築した各仮想マシンの設定状態を表す情報を保持するために利用される。IaaS基盤装置４や仮想リソース管理装置３が各仮想マシンに物理CPUリソースを割り当てると、その結果が仮想マシン設定ファイル５３の内容に反映される。
【００３６】
クライアント端末２は、表示部として機能するディスプレイ（不図示）や、入力部として機能するマウスやキーボード（不図示）を備える。
【００３７】
仮想リソース管理装置３は、ユーザインタフェース３１と、リソース要求部３２と、リソース払出制御部３３を含んで構成される。この仮想リソース管理装置３は、不図示のCPUとRAMやROMなどを含んで構成されるコンピュータであり、仮想リソース割り当てプログラムを実行する。これにより仮想リソース管理装置３は、IaaS基盤装置４によるCPU固定割り付けよりも微細な粒度のCPU固定割り付けを実現する。
【００３８】
ユーザインタフェース３１は、クライアント端末２のディスプレイ（不図示）に、仮想リソース管理装置３の制御情報を表示させ、マウスやキーボード（不図示）により各種情報を入力させる。
【００３９】
リソース要求部３２は、IaaS基盤装置４で管理している物理CPUリソースを起動用CPU51として要求し、仮想リソース管理装置３が管理している物理CPUリソースをサービス用CPU52として要求する。
リソース払出制御部３３は、IaaS基盤装置４で管理している物理CPUリソースを払い出させ、更に仮想リソース管理装置３が管理している物理CPUリソースをサービス用CPU52として払い出す。このリソース払出制御部３３は、リソース管理部３３１、リソース抽出部３３２、リソース選定部３３３、仮想マシン設定ファイル操作部３３４、リソース情報リポジトリ３３５を含んで構成される。リソース管理テーブル３３９は、リソース情報リポジトリ３３５で管理されるテーブルである。
【００４０】
リソース管理部３３１は、リソース管理テーブル３３９により、利用可能な各物理リソースを管理する。更にリソース管理部３３１は、IaaS基盤装置４で管理している物理CPUリソースの情報を収集し、この情報をリソース情報リポジトリ３３５に登録して管理する。リソース管理テーブル３３９の構成は、後記する図５で説明する。
リソース抽出部３３２は、リソース情報リポジトリ３３５のリソース管理テーブル３３９から候補となる物理CPUリソースを抽出し、図６に示すリソース選定テーブル３３７ａや図８に示すリソース選定テーブル３３７ｂを生成する。リソース選定部３３３は、リソース抽出部３３２が抽出した物理CPUリソースを選定する。リソース選定テーブル３３７の構成は、後記する図６と図８で説明する。
仮想マシン設定ファイル操作部３３４は、IaaS基盤装置４が生成した仮想マシン設定ファイル５３を操作する。
リソース情報リポジトリ３３５は、物理リソースとして機能するサーバ５のリソース利用状況を一元的に管理するデータベースである。
【００４１】
IaaS基盤装置４は、リソース要求部４２と、リソース払出制御部４３を含んで構成される。このIaaS基盤装置４は、OpenStack等の市中のIaaS基盤であり、仮想マシンを構成する仮想CPUを物理CPUに固定割り付けさせる機能等、仮想マシンに対して物理リソースを割り付ける機能を有している。
【００４２】
リソース要求部４２は、複数のサーバ５の物理CPUリソースを要求する。
リソース払出制御部４３は、複数のサーバ５に対して物理CPUリソースを払い出させる。このリソース払出制御部４３は、リソース管理部４３１、リソース抽出部４３２、リソース選定部４３３、仮想マシン制御部４３６、リソース情報リポジトリ４３５、仮想マシンイメージリポジトリ４３７を含んで構成される。リソース管理テーブル４３９は、リソース情報リポジトリ３３５で管理されるテーブルである。
【００４３】
リソース管理部４３１は、リソース管理テーブル４３９により、各物理CPUリソースの利用状況を管理する。リソース管理部４３１は、複数のサーバ５から物理CPUリソースの情報を収集し、この情報をリソース情報リポジトリ４３５に登録して管理する。
【００４４】
リソース抽出部４３２は、リソース情報リポジトリ４３５から候補となる物理CPUリソースを抽出する。リソース選定部４３３は、リソース抽出部４３２が抽出した物理CPUリソースを選定する。仮想マシン制御部４３６は、仮想マシンイメージリポジトリ４３７に基づいてサーバ５上に仮想マシンを具現化し、この仮想マシンの起動や終了などの制御を行う。
仮想マシンイメージリポジトリ４３７は、各仮想マシンイメージを一元的に管理するためのデータベースである。
なお、IaaS基盤側のリソース管理方法は、上記記載に限定されず、他の方法でリソースを管理していてもよい。
【００４５】
図２は、仮想リソース管理装置３とIaaS基盤装置４による処理の概略を示すフローチャートである。
最初、仮想リソース管理装置３は、ユーザインタフェース３１により、クライアント端末２のディスプレイに操作画面（不図示）を表示し、ユーザから仮想リソースの払い出し要求に関する情報を受け付ける（ステップＳ１０）。
【００４６】
仮想リソース管理装置３は、リソース選定部３３３により、仮想マシンの起動に利用する物理CPUリソース（第１の物理CPU）を選択する（ステップＳ１１）。具体的にいうと、リソース選定部３３３は、仮想マシンの起動に利用する物理CPUリソースとして、いずれかのサーバ５から起動用CPU５１を選択する。このステップＳ１１の処理について、図７で詳細に説明する。
【００４７】
リソース要求部３２は、選択したリソースの割り当てをIaaS基盤装置４に要求する（ステップＳ１２）。その後、IaaS基盤装置４は、リソースを払い出して仮想マシンを起動させる第１の処理を実行する（ステップＳ１３）。第１の処理については、後記する図３で説明する。ステップＳ１１〜Ｓ１３の処理は、サーバ５上に具現化される仮想マシンの仮想CPUに対して、第１の物理CPUを割り当てて起動させる手順に相当する。
【００４８】
その後、仮想リソース管理装置３は、リソース抽出部３３２により割り当て可能な物理CPUリソースを抽出し（ステップＳ１４）、リソース選定部３３３により仮想マシンに割り当てる物理CPUリソース（第２の物理CPU）を選定する（ステップＳ１５）。これらステップＳ１４〜Ｓ１５の処理について、図９で詳細に説明する。ステップＳ１４〜１５の処理は、仮想マシンの起動後に、ユーザの要求条件を満たす第２の物理CPUを選定する手順に相当する。
【００４９】
リソース管理部３３１は、図５に示すリソース管理テーブル３３９を更新する（ステップＳ１６）。仮想マシン設定ファイル操作部３３４は、仮想マシン設定ファイル５３を更新し（ステップＳ１７）、IaaS基盤装置４に対して、仮想マシンの再起動処理を要求する（ステップＳ１８）。その後、IaaS基盤装置４は、仮想マシンを再起動させる第２の処理を実行する（ステップＳ１９）。第２の処理については、後記する図４で説明する。ステップＳ１７〜Ｓ１９の処理は、仮想マシンの各仮想CPUに対して第２の物理CPUを固定割り付けする手順に相当する。
その後、リソース払出制御部３３は、IaaS基盤装置４からリソースの払い出し応答を受信し（ステップＳ２０）、図２の処理を終了する。
【００５０】
図３は、IaaS基盤装置４による第１の処理を示すフローチャートである。
IaaS基盤装置４が、仮想リソース管理装置３からリソース要求情報を受け付ける（ステップＳ３０）。
リソース抽出部４３２は、割り当て可能な物理CPUリソースを、リソース情報リポジトリ４３５から抽出する（ステップＳ３１）。リソース選定部４３３は、抽出した物理CPUリソースから、この仮想マシンに割り当てる物理CPUリソースを選定する（ステップＳ３２）。
【００５１】
リソース管理部４３１は、選定結果に基づき、リソース管理テーブル４３９を更新する（ステップＳ３３）。仮想マシン制御部４３６は、仮想マシンを起動させる（ステップＳ３４）。IaaS基盤装置４は、仮想リソース管理装置３に対してリソース払い出しを応答して（ステップＳ３５）、図３の処理を終了する。
【００５２】
図４は、IaaS基盤装置４による第２の処理を示すフローチャートである。
IaaS基盤装置４が、仮想リソース管理装置３から再起動要求を受け付ける（ステップＳ４０）。仮想マシン制御部４３６は、この要求に応じて仮想マシンを再起動させる（ステップＳ４１）。IaaS基盤装置４は、仮想リソース管理装置３に対して再起動完了を応答して（ステップＳ４２）、図４の処理を終了する。
【００５３】
図５は、リソース管理テーブル３３９を示す図である。
リソース管理テーブル３３９は、各サーバ５を識別子で示したHW Id（HardWare IDentifier）欄と、各CPUコアを番号で示したコア欄と、多重率欄、使用率欄、状態欄、割当先欄を含んでいる。このリソース管理テーブル３３９の各行は、各CPUコアに対応している。
【００５４】
多重率とは、或るサーバ５が備えるCPUコアの性能を基準として、各CPUコアの演算能力を示す指標である。ここでは、HW Idが#0、コア番号が0のCPUコアが基準として選択されている。
【００５５】
使用率とは、多重率で示されるCPUコアの性能のうち、どれだけが使用されているかを示す指標である。
状態とは、各CPUコアが、いずれかの仮想マシンによって占有されているか否かを示すものである。
【００５６】
割当先とは、各CPUコアが、どのように割り当てられているかを示すものである。ここでは、“起動用”と、“Host OS”と、各仮想マシンの各仮想CPUとが記載されている。図５の例では、各サーバ５のCPUコアのうち１つが、起動用の専用CPUコアとして選択されている。
【００５７】
図６は、起動用CPUを選択するためのリソース選定テーブル３３７ａを示す図である。
リソース選定テーブル３３７ａは、各サーバ５を識別子で示したHW Id（HardWare IDentifier）欄と、各CPUコアを番号で示したコア欄と、多重率欄、使用率欄、状態欄、割当先欄に加えて、起動用欄を含んでいる。このリソース選定テーブル３３７ａは、リソース抽出部３３２によって生成される。
【００５８】
HW Id欄と、コア欄と、多重率欄、使用率欄、状態欄は、それぞれ図５のリソース管理テーブル３３９の各欄と同様である。
起動用欄は、各CPUコアが起動用として選択できるか否かを示す欄である。
【００５９】
図７は、仮想リソース管理装置３による起動用CPUリソースの選択処理を示すフローチャートである。この処理は、図２のステップＳ１１の処理であり、サーバが備える複数の物理CPUの使用状況に応じて、仮想マシンを起動させるために割り当てる第１の物理CPUを選定する手順に相当する。
【００６０】
リソース選定部３３３は、リソース選定テーブル３３７を作成し、多重率欄と使用率欄に値を書き込む（ステップＳ５０）。
リソース選定部３３３は、変数Ｘを１で初期化して（ステップＳ５１）、リソース管理テーブル３３９で管理されている全てのCPUコアについて、ステップＳ５２〜Ｓ５７の処理を繰り返す。
【００６１】
リソース選定部３３３は、リソース管理テーブル３３９のＸ行目のリソースを選択する（ステップＳ５２）。
ステップＳ５３において、リソース選定部３３３は、この物理CPUリソースの状態が“占有”ならば（Ｙｅｓ）、リソース選定テーブル３３７において、この物理CPUリソースに割り当て不可を設定する（ステップＳ５５）。
【００６２】
リソース選定部３３３は、この物理CPUリソースの状態が“非占有”ならば（Ｎｏ）、リソース選定テーブル３３７において、この物理CPUリソースに割り当て可を設定する（ステップＳ５４）。なお非占有とは、この物理CPUリソースに対して何も割り当てられていない場合と、この物理CPUリソースが複数の仮想マシンによって共有されている場合の両方を含んでいる。
【００６３】
ステップＳ５６において、リソース選定部３３３は、リソース管理テーブル３３９の最後ならば（Ｙｅｓ）、ステップＳ５８の処理に進む。リソース選定部３３３は、リソース管理テーブル３３９の最後でないならば（Ｎｏ）、変数Ｘに１を加算し（ステップＳ５７）、ステップＳ５２の処理に戻る。
【００６４】
ステップＳ５８において、リソース選定部３３３は、このCPUコアがハードウェア条件を満たしていないならば（Ｎｏ）、リソース選定テーブル３３７において、この物理CPUリソースに割り当て不可を設定し（ステップＳ５９）、ステップＳ６０の処理に進む。リソース選定部３３３は、このCPUコアがハードウェア条件を満たすならば（Ｙｅｓ）、ステップＳ６０の処理に進む。ここでハードウェア条件とは、例えばOpenStackのanti-affinity属性などのことをいう。anti-affinity属性は、特定の仮想マシンが常に違う物理サーバで実行される必要があることを指定するものである。
【００６５】
リソース選定部３３３は、このリソース選定テーブル３３７において、多重率から使用率を減算した値を算出し、この値で物理CPUリソースを降順ソートする（ステップＳ６０）。
リソース選定部３３３は、ソートしたリソース選定テーブル３３７の上から同時起動数にα個を乗算した数の物理CPUリソースを、起動用として選択する（ステップＳ６１）。ここでαとは、ユーザが予め設定した定数である。
リソース管理部３３１は、リソース管理テーブル３３９の割当先欄に起動用を書き込んで更新する（ステップＳ６２）。
リソース払出制御部３３は、IaaS基盤装置４の物理CPUリソース設定を依頼する。IaaS基盤装置４は、リソース情報リポジトリ４３５を変更することにより、物理CPUリソース設定を変更させて（ステップＳ６３）、図７の処理を終了する。これにより、選択された起動用の物理CPUリソースがIaaS基盤装置４から見えるようになる。
このように、仮想リソース管理装置３は、仮想マシンの起動時に物理CPUリソースの使用状況を見て、この仮想マシンの起動用の物理CPUリソースを選択している。これにより仮想リソース管理装置３は、この仮想マシンを安定して起動させることができる。
【００６６】
図８は、リソース選定テーブル３３７ｂを示す図である。
リソース選定テーブル３３７ｂは、各サーバ５を識別子で示したHW Id（HardWare IDentifier）欄と、各CPUコアを番号で示したコア欄を含んでいる。リソース選定テーブル３３７ｂは更に、多重率欄、使用率欄、状態欄、割当先欄に加えて、vCPU0欄、vCPU1欄、vCPU2欄、vCPU3欄を含んでいる。このリソース選定テーブル３３７ｂは、リソース抽出部３３２によって生成される。
【００６７】
HW Id欄と、コア欄と、多重率欄、使用率欄、状態欄、割当先欄は、それぞれ図５のリソース管理テーブル３３９の各欄と同様である。
vCPU0欄は、このCPUコアが仮想CPU#0としてとして選択されたか否かを示す欄である。vCPU1欄は、このCPUコアが仮想CPU#1としてとして選択されたか否かを示す欄である。vCPU2欄は、このCPUコアが仮想CPU#2としてとして選択されたか否かを示す欄である。vCPU3欄は、このCPUコアが仮想CPU#3としてとして選択されたか否かを示す欄である。
【００６８】
図９は、割り当て可能リソースの抽出処理と選定処理とを示すフローチャートである。この処理は、図２のステップＳ１４〜Ｓ１５の処理に相当し、複数のサービスを実行可能な非占有の物理CPUを抽出し、抽出された非占有の物理CPUから第２の物理CPUを選定する手順にも相当する。
リソース抽出部３３２は、リソース選定テーブル３３７ｂを作成し、多重率欄と使用率欄に値を書き込む（ステップＳ７０）。
リソース抽出部３３２は、変数Ｘを１で初期化して（ステップＳ７１）、リソース管理テーブル３３９で管理されている全てのCPUコアについて、ステップＳ７２〜Ｓ８０の処理を繰り返す。
【００６９】
リソース抽出部３３２は、リソース管理テーブル３３９のＸ行目のリソースを選択する（ステップＳ７２）。以下、各仮想マシンが備える仮想CPUの数だけ、ステップＳ７３〜Ｓ７８の処理を繰り返す。
ステップＳ７４において、リソース選定部３３３は、この物理CPUリソースの状態が“占有” でないならば（Ｎｏ）、ステップＳ７５の処理に進む。リソース選定部３３３は、この物理CPUリソースの状態が“占有”ならば（Ｙｅｓ）、リソース選定テーブル３３７ｂにおいて、この物理CPUリソースに割り当て不可を設定し（ステップＳ７７）、ステップＳ７８に進む。
ステップＳ７５において、リソース選定部３３３は、この物理CPUリソースの多重率から使用率を減算した値が要求使用率（閾値）以上ならば（Ｙｅｓ）、リソース選定テーブル３３７において、この物理CPUリソースに割り当て可を設定し（ステップＳ７６）、ステップＳ７８に進む。リソース選定部３３３は、多重率から使用率を減算した値が要求使用率未満ならば（Ｎｏ）、リソース選定テーブル３３７ｂにおいて、この物理CPUリソースに割り当て不可を設定し（ステップＳ７７）、ステップＳ７８に進む。
ステップＳ７８において、リソース選定部３３３は、各仮想マシンが備える仮想CPUの数だけ処理を繰り返していなかったならば、ステップＳ７３に戻って処理を繰り返す。
【００７０】
ステップＳ７９において、リソース選定部３３３は、リソース管理テーブル３３９の最後ならば（Ｙｅｓ）、ステップＳ８１の処理に進む。リソース選定部３３３は、リソース管理テーブル３３９の最後でないならば（Ｎｏ）、変数Ｘに１を加算し（ステップＳ８０）、ステップＳ７２の処理に戻る。
【００７１】
ステップＳ８１において、リソース選定部３３３は、このCPUコアがハードウェア条件を満たしていないならば（Ｎｏ）、リソース選定テーブル３３７ｂにおいて、この物理CPUリソースに割り当て不可を設定し（ステップＳ８２）、図９の処理を終了する。リソース選定部３３３は、このCPUコアがハードウェア条件を満たすならば（Ｙｅｓ）、図９の処理を終了する。
【００７２】
図１０は、IaaS基盤ツールが作成した仮想マシン設定ファイル５３ａを示す図である。
“num_vCPU:4,”は、仮想マシンが備える仮想CPUの総数が４個であることを示している。“vCPU0:{… core:0},”は、仮想CPU0が、物理CPUコア0に固定割り付けされていることを示している。“vCPU3:{… core:0},”は、仮想CPU3が、物理CPUコア0に固定割り付けされていることを示している。このように、全ての仮想CPU0から仮想CPU3には、起動用として物理CPUコア0が固定割り付けされている。
【００７３】
図１１は、仮想リソース管理装置３が修正した仮想マシン設定ファイル５３ｂを示す図である。
“num_vCPU:4,”は、仮想マシンが備える仮想CPUの総数が４個であることを示している。“vCPU0:{… core:10-11},”は、仮想CPU0が、物理CPUコアの第10番と第11番に固定割り付けされていることを示している。“vCPU3:{… core:25-30},”は、仮想CPU3が、物理CPUコアの第25番から第30番までに固定割り付けされていることを示している。このように、仮想リソース管理装置３は、各仮想CPUに、ユーザ要求に従った物理CPUを割り当てている。
【００７４】
“anti-affinity:[vCPU0-vCPU3]”は、仮想CPU0から仮想CPU3までに、anti-affinity属性を付与することを示している。
このように、本実施形態では、IaaS基盤を利用して仮想マシンを運用・管理しつつ、仮想マシンの資源の利用効率を上げることができる。
【００７５】
（本実施形態の効果）
物理CPUリソースについて起動用コアをそれ以外のCPUコアと分けて、IaaS基盤装置４で起動用コアを使って仮想マシンを起動する。その後、仮想リソース管理装置３が、仮想マシンの設定ファイルを、ユーザの要求条件を満たす割り当て条件に書き換え、その設定を反映させる。これにより、仮想CPU毎にCPUコアの割り当てポリシを設定することが可能となり、IaaS基盤を利用して仮想マシンを運用・管理しつつ、仮想マシンの資源の利用効率を上げることができる。
【００７６】
また、リソースの使用状況や仮想マシンの同時起動に応じて、仮想マシンの起動前に起動用のリソースを柔軟に選択可能となる。これにより、特に仮想マシンが多数同時に起動されるシステムにおける影響の局所化や効率化が可能となる。
【００７７】
（変形例）
本発明は、上記実施形態に限定されることなく、本発明の趣旨を逸脱しない範囲で、変更実施が可能であり、例えば、次の（ａ）〜（ｃ）のようなものがある。
（ａ）  図７のステップＳ５８の処理や、図９のステップＳ８１の処理におけるハードウェア条件とは、anti-affinity属性に限られず、任意の属性に基づく条件であってもよい。
（ｂ）  図２のステップＳ１５の処理において、仮想マシンに割り当てる物理CPUリソースの選定基準は、上記実施形態に記載したものに限定されず、ユーザの要求条件を満たす任意の基準であってもよい。
（ｃ）  仮想マシンの仮想CPUに割り当てられて、この仮想マシンを起動させる物理CPUコアは１個に限定されず、複数個であってもよい。また、仮想マシンを起動させる物理CPUコアは、性能要件が低い他のサービス用の物理CPUコアと共有させてもよい。
【符号の説明】
【００７８】
１  仮想リソース管理システム
２  クライアント端末
３  仮想リソース管理装置
３１  ユーザインタフェース
３２  リソース要求部
３３  リソース払出制御部
３３１  リソース管理部
３３２  リソース抽出部
３３３  リソース選定部
３３４  仮想マシン設定ファイル操作部
３３５  リソース情報リポジトリ
３３７，３３７ａ，３３７ｂ  リソース選定テーブル
３３９  リソース管理テーブル
４  IaaS基盤装置
４２  リソース要求部
４３  リソース払出制御部
４３１  リソース管理部
４３２  リソース抽出部
４３３  リソース選定部
４３５  リソース情報リポジトリ
４３６  仮想マシン制御部
４３７  仮想マシンイメージリポジトリ
４３９  リソース管理テーブル
５  サーバ
５１  起動用CPU
５２  サービス用CPU
５３  仮想マシン設定ファイル
【図１】
2019144727.tif 000003
【図２】
2019144727.tif 000004
【図３】
2019144727.tif 000005
【図４】
2019144727.tif 000006
【図５】
2019144727.tif 000007
【図６】
2019144727.tif 000008
【図７】
2019144727.tif 000009
【図８】
2019144727.tif 000010
【図９】
2019144727.tif 000011
【図１０】
2019144727.tif 000012
【図１１】
2019144727.tif 000013