JP6750368B2 - 仮想マシン制御プログラム、仮想マシン制御方法および仮想マシン制御装置 - Google Patents

仮想マシン制御プログラム、仮想マシン制御方法および仮想マシン制御装置 Download PDF

Info

Publication number
JP6750368B2
JP6750368B2 JP2016145792A JP2016145792A JP6750368B2 JP 6750368 B2 JP6750368 B2 JP 6750368B2 JP 2016145792 A JP2016145792 A JP 2016145792A JP 2016145792 A JP2016145792 A JP 2016145792A JP 6750368 B2 JP6750368 B2 JP 6750368B2
Authority
JP
Japan
Prior art keywords
information processing
virtual machine
information
processing devices
cpu utilization
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016145792A
Other languages
English (en)
Other versions
JP2018018175A (ja
Inventor
宏己 住田
宏己 住田
安男 吉本
安男 吉本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2016145792A priority Critical patent/JP6750368B2/ja
Priority to US15/652,697 priority patent/US10248450B2/en
Publication of JP2018018175A publication Critical patent/JP2018018175A/ja
Application granted granted Critical
Publication of JP6750368B2 publication Critical patent/JP6750368B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、仮想マシン制御プログラム、仮想マシン制御方法および仮想マシン制御装置に関する。
サーバの設備費用を削減するための仮想環境の導入が進められており、メモリ等のリソースを効率良く利用するためには、複数の物理サーバ間で負荷(リソース使用量)を均衡化する技術が重要である。例えば、物理サーバ毎の負荷を監視し、負荷の高い物理サーバから負荷の低い物理サーバに仮想マシン(VM:Virtual Machine)を移動させる技術が知られている。
関連する技術として、複数のVMのリソース消費量の時系列変化を予測し、複数の物理マシンの各々においてリソース消費量が判定基準値以下となる配置案を選択する技術が提案されている(例えば、特許文献1を参照)。また、物理資源の使用量が、該情報処理装置の物理資源の能力値を超える直近の時刻を予測し、予測された時刻までに、情報処理の分担の再配置を実行する技術が提案されている(例えば、特許文献2を参照)。
国際公開第2014/192132号 特開2012−198671号公報
上述のように、ある物理サーバの負荷が高いときには、その物理サーバ上で動作するVMを他の物理サーバへ移動させる負荷分散を行うことが好ましい。ところが、VMを移動する際にはサーバに負荷がかかるため、負荷を均衡化するための処理が一時的には負荷を高めてしまう。そのため、負荷が高い時間帯にVMを移動させると、VMの移動による負荷が加わり、さらに負荷が高い状態となってしまう。それにより、複数の物理サーバ間で負荷が均衡でなくなり、効率的にリソースを利用することができなく困難となる。
1つの側面として、本発明は、仮想マシンによるリソース使用を効率化することを目的とする。
1つの態様では、仮想マシン制御プログラムは、複数の情報処理装置のいずれかの情報処理装置で動作する複数の仮想マシンによる前記いずれかの情報処理装置のリソース使用量の実績情報として、前記いずれかの情報処理装置のCPU利用率の実績情報を記憶する記憶部を参照して、前記複数の仮想マシンによる過去の複数の期間それぞれのCPU利用率の実績値を取得し、前記いずれかの情報処理装置で動作する仮想マシンのうち、CPU利用率の実績値が前記実績情報に含まれない仮想マシンを検出した場合、取得した前記実績値と、検出した前記仮想マシンによる前記いずれかの情報処理装置のCPU利用率との合計値が前記いずれかの情報処理装置の基準を超える期間が存在するか否かを判定し、前記合計値が前記基準を超える期間が存在する場合、該期間前に、前記いずれかの情報処理装置で動作する仮想マシンのいずれかを、前記いずれかの情報処理装置以外の他の情報処理装置で動作させる指示を出力する処理をコンピュータに実行させ、前記指示の出力において、前記他の情報処理装置で動作させた場合に全ての前記情報処理装置においてCPU利用率が基準を超えないと予測される仮想マシンが複数存在する場合、最もCPU利用率が少ない前記仮想マシンを前記他の情報処理装置で動作させる指示を出力することを特徴とする。
1つの側面によれば、仮想マシンによるリソース使用を効率化することできる。
実施形態のシステムの全体構成の一例を示す図である。 仮想マシン制御装置の一例を示す図である。 実績情報および仮VM設定情報の一例を示す図である。 実施形態の処理の流れの一例を示すフローチャート(その1)である。 実施形態の処理の流れの一例を示すフローチャート(その2)である。 VM移動候補の選択処理の一例を示すフローチャート(その1)である。 VM移動候補の選択処理の一例を示すフローチャート(その2)である。 実施例における各時間帯のVM配置を示す図である。 実施例における実績情報および仮VM設定情報を示す図である。 実施例における8時時点のVM毎のメモリ使用量および予測情報を示す図である。 実施例における9時時点のVM毎のメモリ使用量および予測情報を示す図である。 実施例における10時時点のVM毎のメモリ使用量および予測情報を示す図である。 実施例における11時時点のVM毎のメモリ使用量および予測情報を示す図である。 実施例における12時時点のVM毎のメモリ使用量および予測情報を示す図である。 第2の実施形態のVM移動候補の選択処理の流れの一例を示すフローチャート(その1)である。 第2の実施形態のVM移動候補の選択処理の流れの一例を示すフローチャート(その2)である。 仮想マシン制御装置のハードウェア構成の一例を示す図である。
<第1の実施形態>
以下、図面を参照して、実施形態について説明する。図1は、実施形態のシステムの全体構成の一例を示す。図1に示すように、実施形態のシステムは、仮想マシン制御装置1と2以上のサーバ2a、2b、2c・・・と、管理サーバ3とを含み、それぞれが通信回線により接続されている。以下、サーバ2a、2b、2c・・・をサーバ2と総称することがある。
仮想マシン制御装置1は、サーバ2で動作する仮想マシン(以下、VM(virtual machine)と記載することがある。)を制御する。仮想マシン制御装置1は、リソース使用量に応じて、いずれかのサーバ2で動作する仮想マシンを、他のサーバ2で動作させる指示を管理サーバ3に出力する。仮想マシン制御装置1は、コンピュータの一例である。
サーバ2は、所定のメモリ量の範囲内において、仮想マシンを動作させることが可能である。サーバ2は、管理サーバ3の指示に応じて、動作中の仮想マシンを他のサーバ2に移動させることができる。サーバ2は、情報処理装置の一例である。
管理サーバ3は、サーバ2を管理するサーバである。管理サーバ3は、仮想マシン制御装置1からの指示に応じて、サーバ2で動作する仮想マシンを制御する。
図1に示す例では、管理サーバ3と仮想マシン制御装置1は、異なる装置であるが、同一の装置であってもよい。すなわち、システムは、図1に示す管理サーバ3および仮想マシン制御装置1の替わりに、管理サーバ3と仮想マシン制御装置1の両方の機能を有する一つの装置を含んでいてもよい。
図2は、仮想マシン制御装置の一例を示す図である。図2に示すように、仮想マシン制御装置1は、通信部11と、取得部12と、判定部13と、指示部14と、記憶部15とを含む。
通信部11は、サーバ2で動作する仮想マシンのリソース使用量を示す情報を受信する。通信部11は、指示部14から管理サーバ3に指示を送る場合に、指示内容を示す情報を送信する。
取得部12は、記憶部15に記憶されている各仮想マシンのリソース使用量の実績情報を参照して、複数の仮想マシンによる過去の複数の期間それぞれのリソース使用量の実績値を取得する。
判定部13は、いずれかのサーバ2で動作する仮想マシンのうち、リソース使用量が実績情報に含まれない仮想マシンを検出した場合、取得部12が取得した実績値と、検出した仮想マシンによるリソース使用量の合計値がいずれかの情報処理装置の基準を超える期間が存在するか否かを判定する。また、判定部13は、リソース使用量が実績情報に含まれない仮想マシンを検出していない場合でも、取得部12が作成する予測情報とは異なる状況が発生することを想定して、判定部13は適宜、予測情報を更新し、いずれかのサーバ2で動作する仮想マシンのリソース使用量と仮VMのリソース使用量の合計値がいずれかの情報処理装置の基準を超える期間が存在するか否かを判定する。実績情報に含まれない仮想マシンは、例えば、新たに配備された仮想マシンである。
指示部14は、合計値が基準を超える期間が存在する場合、その期間前に、いずれかのサーバ2で動作する仮想マシンのいずれかを、他のサーバ2で動作させる指示を管理サーバ3に出力する。
記憶部15は、各サーバ2における複数の期間の仮想マシンが使用するリソース使用量を示す実績情報を記憶する。実績情報は、各サーバ2で動作する仮想マシンの所定時間毎のリソース使用量を含む。リソース使用量は、サーバ2の物理資源の使用量である。後述の例で示すリソース使用量はメモリ使用量であるが、リソース使用量は、例えば、CPU使用率であってもよい。
また、記憶部15は、仮の仮想マシン(以下、仮VM(virtual machine)と記載することがある。)の設定情報を記憶する。仮VMは、実際には使用されていない仮想マシンであり、将来的な仮想マシンの増加に対応するための余裕分として設定される。仮VMの設定情報は、仮VMが設定されるサーバ名、およびリソース使用量を含む。
図3は、実績情報および仮VM設定情報の一例を示す図である。図3に示す実績情報には、サーバAおよびサーバBそれぞれで動作する仮想マシン(VM)に関する情報が記録されている。この例では、実績情報は、8時から14時までの1時間毎の各VMのメモリ使用量の実績値を含む。実績値が記録される時間単位は、1時間に限られない。また、記録される時間範囲は、図3では8時から14時まであるが24時間であってもよい。例えば、曜日によってメモリ使用量が大きく変化するシステムに仮想マシン制御装置1を適用する場合、実績値を記録する時間単位を1日(24時間)とし、記録する時間範囲を1週間としてもよい。
仮VM設定情報は、仮VMが設定されるサーバ名、メモリ使用量を含む。仮VMのメモリ使用量には、例えば、サーバ2で許可されている、1つのVMあたりの割り当て可能最大メモリ量が設定される。仮VMのメモリ使用量に、1つのVMあたりの割り当て可能最大メモリ量を設定することにより、将来新たなVMが追加された場合にメモリ使用量がサーバ2のメモリ容量を超えるリスクを低減することができる。
また、仮VMの個数は、図3に示す例では1つであるが、2以上であってもよい。また、複数のサーバ2に仮VMが設定されてもよい。仮VMの個数は、例えば、過去の所定期間の稼働実績における新規配備VM個数の平均値に基づいて決定されてもよいし、過去の所定期間の稼動実績における新規配備VM個数の最大値に基づいて決定されてもよい。サーバ2のメモリ容量を超えるリスクをより低減する場合、平均値に安全率(例えば、1.1倍)を乗算した値に基づいて仮VM個数を決定してもよい。
図4、5は、実施形態の処理の流れの一例を示すフローチャートである。図4、5に示す処理は、例えば、毎日、所定時刻に開始される。
取得部12は、記憶部15から、前日の各サーバ2の時間帯毎のリソース使用量を示す実績情報を取得する(ステップS101)。実施形態では、図3に示すように、実績情報に記録されるリソース使用量は、メモリ使用量である。
取得部12は、仮VMの設定情報を記憶部15から取得し、仮VMの設定情報を用いて実績情報を変更することにより、予測情報を作成する(ステップS102)。実施形態では、図3に示すように、取得部12は、仮VMの設定情報として、仮VMが設定されるサーバ名、メモリ使用量を取得する。取得部12は、例えば、少なくとも一つのサーバ2の実績情報の全ての時間帯に仮VMの設定情報におけるメモリ使用量を記録することにより、仮VMのメモリ量が追加された予測情報を作成する。
例えば、実績情報における各サーバのメモリ使用量に余裕がある場合、取得部12は、ステップS102における仮VMの設定情報を用いずに予測情報を作成してもよい。
判定部13は、VM移動を実施するための繰り返し処理を開始する(ステップS103)。
判定部13は、後述の繰り返し処理のために、変数Nに実績情報から得られたサーバ2の台数を設定し、変数Mに予測情報から得られるVM総数を設定する(ステップS104)。実施形態では、繰り返し処理は、1時間毎に行われる。繰り返し処理は、実績情報に記録されている時間帯に合わせて行われる。
判定部13は、iに0をセットする(ステップS105)。判定部13は、iにi+1をセットする(ステップS106)。判定部13は、iがM以下である場合(ステップS107でYES)、VMiが実績情報に掲載されているか(含まれているか)を判定する(ステップS108)。
判定部13は、VMiの現在のメモリ使用量を計測し、計測したメモリ使用量により対応する時間帯の予測値を更新する。判定部13は、実績情報に含まれない新規のVMiが追加される場合には、予測情報において仮VMが設定されているサーバ2に新規のVMiを配備することを決定する。指示部14は、新規のVMを、予測情報において仮VMが設定されているサーバ2に配備する指示を管理サーバ3に出力する。そして、判定部13は、予測情報内の現在以後の時間帯の仮VMのリソース使用量を新規のVMiのリソース使用量で置き換える(ステップ109)。
判定部13は、実績情報に含まれている既存のVMについては、現在の各VMのメモリ使用量が現在の値に対応する実績値より大きいか判定する(ステップS110)。判定部13は、例えば、現在が8時である場合、現在の各仮想マシンのメモリ使用量が前日の8時の実績値より大きいか判定する。いずれかのVMの現在のメモリ使用量が現在時刻より後の実績値より大きい場合(ステップS110でYES)、ステップS111−1に移行する。判定部13は、予測情報の現在以後の時間帯のVMiの情報を、予測情報がVMiの現在のメモリ使用量より小さい時間帯が続く限り、VMiの現在のメモリ使用量で置換する(ステップS111−1)。
ステップS111−1において、現在時刻の実績値だけでなく現在時刻以後の予測値を更新する理由は、現在のメモリ使用量がそのまま継続されると想定して、必要メモリ容量を確保するためである。
また、ステップS110においてNOである場合に、予測情報の現在の時間帯のVMiの情報を、VMiの現在のメモリ使用量で置換する(ステップS111−2)。ステップS111−2で、現在時刻の予測値は更新するものの、ステップS111−1のように現在時刻より後の予測値は更新しない理由は、メモリ使用量がサーバのメモリ容量を超えるリスクを少なくするためである。例えば、現在のメモリ使用量が実績値より小さい場合であっても、将来的に実績値に近い値に増加する可能性がある。そのため、判定部13は、現在時刻より後の予測値を実績値より小さい値(現在のメモリ使用量)には更新しないことが好ましい。
ステップS111−1において、例えば、図3に示す実績情報が前日の実績情報である場合、8時時点(現在)のVM3のメモリ使用量が2GBであれば、8時と9時の予測値のみ2GBに置換し、14時の予測値は2GBに置換しない。実績情報では、10時にVM3のメモリ使用量は4GBに増加するため、その手前までメモリ使用量が2GBで継続することが予測されるからである。
次に、判定部13は、変数nに0をセットする(ステップS112)。また、判定部13は、変数nにn+1をセットする(ステップS113)。変数nは、各サーバに割り当てられているシーケンス番号に対応する。
判定部13は、ステップS109、S111−1、S111−2で作成された予測情報において、シーケンス番号にnが割り当てられているサーバ(以下、サーバnと記載する)で動作するVMのメモリ使用量合計が現在より後の全時間帯で閾値以下か判定する(ステップS114)。閾値は、サーバ毎に設定されているメモリ使用量の閾値であり、例えば、サーバのメモリ容量の90%であるとする。
判定部13は、サーバnのメモリ使用量がサーバnの閾値を超える時間帯が一つでも存在する場合(ステップS114でNO)、サーバnのいずれかのVMを他のサーバに移動する必要があるため、VMの移動候補の選択処理を行う(ステップS115)。判定部13は、サーバnのメモリ使用量合計が現在より後の全時間帯で閾値以下である場合(ステップS114でYES)、nがN以上であるか判定する(ステップS116)。判定部13は、nがN以上である場合(ステップS116でYES)、繰り返し処理を終了する(ステップS117)。nがNより小さい場合(ステップS116でNO)、ステップS113に戻る。
図6〜図7は、VM移動候補の選択処理の一例を示すフローチャートである。図6〜図7に示す処理は、図5のステップS115の詳細な処理であり、移動するVMと、VMの移動先サーバを選択する処理である。
判定部13は、変数mに0をセットする(ステップS201)。また、判定部13は、変数mをインクリメントする(ステップS202)。変数mは、各VMに割り当てられているシーケンス番号に対応する。
判定部13は、mがM以下であるか判定する(ステップS203)ステップS203において、mがMより大きい場合(ステップS203でNO)、全てのVMについて判定処理が終了しているため、処理を終了する。
判定部13は、mがM以下である場合(ステップS203でYES)、シーケンス番号にmが割り当てられているVM(以下、VMmと記載する)がサーバnに実装されているか確認する(ステップS204)。
VMmがサーバnに実装されている場合(ステップS204でYES)、判定部13は、現在の時間帯でVMmをサーバnから他のサーバに移動したと仮定し、サーバnで動作するVMの各時間帯のメモリ使用量合計を算出する(ステップS205)。この計算では移動先は考慮しない。判定部13は、ステップS205で算出したサーバnのメモリ使用量合計が今後の全ての時間帯において閾値以下であるか判定する(ステップS206)。今後の全ての時間帯において閾値以下である場合(ステップS206でYES)、VMmが移動VMの候補となる。
サーバnのメモリ使用量合計が今後のいずれかの時間帯において閾値を超える場合(ステップS206でNO)、判定部13は、ステップS202の処理に戻る。すなわち、判定部13は、サーバnのメモリ使用量合計がすべての時間帯において閾値以下となるまで、変数mをインクリメントしながらステップS202〜S206を繰り返し実行する。
移動するVMを選択する処理において、移動コストがもっとも少ないVMが選択されることが好ましい。移動コストは、例えば、現在のメモリ使用量の大きさまたは移動回数に基づいて定められる。すなわち、移動コストが大きいほど、移動の際にサーバへ与える負荷が大きい。
図6〜図7に示す例では、判定部13は、シーケンス番号が小さいVMからステップS205、S206の処理を行い、ステップS206でYESであればそのVMを選択する。そのため、予め移動コストの小さいVMに小さいシーケンス番号を割り当てておく。これにより、複数のVMの移動候補が考えられる場合、最も移動コストが少ないVMが選択されることとなる。
また、例えば、ステップS206の処理でYESであった場合に、判定部13は、特定されたVMを移動候補として一時記憶しておき、全てのVMに対してステップS204〜S206の処理を行ってもよい。そして、判定部13は、ステップS206でYESとなった移動候補VMのうち最も移動コストの少ないVMを移動VM候補として選択してもよい。
ステップS206でYESである場合、判定部13は、移動先のサーバを選択する処理に移る。判定部13は、変数kに0をセットする(ステップS208)。そして、判定部13は、変数kをインクリメントする(ステップS209)。変数kは、各サーバに割り当てられているシーケンス番号に対応する。
判定部13は、kがN以下であるか判定する(ステップS210)。kがNより大きい場合(ステップS210でNO)、判定部13の処理はステップS202に戻る。VMmが後述のステップS213において全てのサーバについて閾値を超えたとしても、異なるVMmを移動候補とすることによりステップS213で閾値以下となる可能性があるためである。
kがN以下である場合(ステップS210でYES)、判定部13は、kがnと異なる値か判定する(ステップS211)。nは、VMmが現在動作しているサーバを示すシーケンス番号であるため、kがnと同じである場合(ステップS211でNO)、ステップS209に戻りkをインクリメントする。
kがnと異なる場合(ステップS211でYES)、判定部13は、現在の時間帯でVMmをサーバnからサーバkに移動したと仮定し、サーバkで動作するVMの各時間帯のメモリ使用量合計を算出する(ステップS212)。判定部13は、ステップS212の算出結果において、サーバkのメモリ使用量が今後の全ての時間帯において閾値以下であるか判定する(ステップS213)。
サーバkのメモリ使用量合計が閾値を上回る時間帯が存在する場合(ステップS213でYES)、判定部13は、ステップS209の処理に戻る。サーバkのメモリ使用量合計が今後の全ての時間帯において閾値以下である場合(ステップS213でYES)、判定部13は、移動VMとしてVMmを選択し、移動先サーバとしてサーバkを選択する(ステップS214)。指示部14は、VMmをサーバkに移動する指示を管理サーバ3に出力する(ステップS215)。
移動先のサーバを選択する場合に、移動可能なサーバが複数存在する可能性がある。例えば、判定部13は、各サーバについて、各時間帯におけるメモリの空き容量を予め算出する。そして、判定部13は、各時間帯の空き容量の最小値が大きいサーバに小さいシーケンス番号(kに対応するNo)を予め割り当てておく。そのようにすることで、ステップS208〜S214の処理において、各時間帯の空き容量の最小値が大きいサーバが移動先として優先的に選択されるようにしてもよい。
<実施例>
次に実施例を図面を参照して説明する。図8は、実施例における各時間帯のVM配置を示す図である。図9は、実施例における実績情報および仮VM設定情報を示す図である。図10〜図14は、実施例における予測情報の推移を示す図である。
取得部12は、前日の実績情報と仮VM設定情報を取得し、仮VM設定情報を用いて、予測情報を作成する(ステップS101、S102)。
図10は、8時時点のVM毎のメモリ使用量および予測情報を示す。図9に示す前日の実績情報の8時のメモリ使用量と図10に示す現在のVM毎のメモリ使用量(8時)を比較すると、VM1のメモリ使用量が1GBから4GBに変わっている。そのため、ステップS105の処理により、判定部13は、8時の予測情報を1GBから4GBに更新する。また、8時の時間帯において、現在のメモリ使用量が実績値より大きい(ステップS110でYES)。そのため、判定部13は、その仮想マシンの現在のメモリ使用量を用いて、現在時刻以後の予測値を置換する(ステップS111−1)。実施例において、判定部13は、予測情報のVM1の9時以降のメモリ使用量を全て4GBに変更する。
本実施例において、サーバAおよびサーバBのメモリ容量を10GBとし、閾値を10GBの90%の9GBとする。8時時点の予測情報において、仮VMが追加されていることにより、10時時点においてサーバBで動作するVMはVM3、VM4、仮VMの3つであり、合計メモリ使用量は、4+4+4=12GBとなる。すなわち10時時点において、サーバBのメモリ使用量が閾値を超える(ステップS114でNO)。そのため、いずれかのVMを移動する必要がある。
判定部13は、ステップS115の処理において、どのVMを移動させるか選択する。判定部13は、VM3を移動させたと仮定して、全時間帯でサーバBのメモリ使用量合計が閾値以下となるか判定する(ステップS206)。この例では、全時間帯でサーバBのメモリ使用量合計が閾値以下となるので、VM3が移動VM候補となる。また、判定部13は、VM3をサーバAに移動したと仮定してサーバAの各時間帯でメモリ使用量合計が閾値以下となるか判定する(ステップ212)。
サーバAにVM3を移動した場合、12時において、サーバAにVM1、VM2、VM3が動作することになり、合計12GBとなり、閾値を超える。そのため、移動先としてサーバAは選択されない(ステップS213でNO)。この場合、実施例ではサーバは2つであるため、ステップ213の処理後、ステップS210でNOとなり、ステップS202に戻る。
次に、判定部13は、VM4をサーバBから移動したと仮定して、サーバBの各時間帯のメモリ使用量合計を算出し、各時間帯で閾値以下となるか判定する(ステップS206)。閾値以下となるので、移動VM候補としてVM4が選択される。また、判定部13は、VM4をサーバAに移動したと仮定して、サーバAの各時間帯のメモリ使用量合計を算出し、サーバAの閾値以下となるか判定する(ステップS212、S213)。実施例では、ステップS213にてYESとなるので、VM4の移動先としてサーバAが選択される(ステップS214)。そして、指示部14がVM4をサーバAに移動させる指示を管理サーバ3に出力することにより、VM4がサーバBからサーバAに移動する。
図11は、9時時点のVM毎のメモリ使用量および予測情報を示す。この例では、8時にVM4がサーバBからサーバAに移動したため、VM4が動作するサーバ名がサーバAに変更されている。9時のメモリ使用量は、予測情報と同じであるため、予測情報の更新は行われない(ステップS110でNO)。また、各サーバのメモリ使用量合計が閾値以下となるため(ステップS114でYES)、VMの移動も行われない。
図12は、10時時点のVM毎のメモリ使用量および予測情報を示す。10時のメモリ使用量は、予測情報と同じであるため、予測情報の更新は行われない(ステップS110でNO)。また、各サーバのメモリ使用量合計が閾値以下となるため(ステップS114でYES)、VMの移動も行われない。
図13は、11時時点のVM毎のメモリ使用量および予測情報を示す。11時に、実績情報に含まれない新規VMとして、VM5が配備されたとする。予測情報においてサーバBに仮VMが設定されているので、判定部13は、サーバBにVM5を配備することを決定する(ステップS105)。そして、指示部14は、サーバBにVM5を配備することを管理サーバ3に指示する。なお、8時から10時までのVM5の予測情報にはnull値が設定される。
図14は、12時時点のVM毎のメモリ使用量および予測情報を示す。12時のメモリ使用量は、予測情報と同じであるため、予測情報の更新は行われない(ステップS110でNO)。また、各サーバのメモリ使用量合計が閾値以下となるため(ステップS114でYES)、VMの移動も行われない。
実施例では、13時以降のメモリ使用量も、予測情報と同じであったとする。すなわち、12時と同様に予測情報の更新、VMの移動が行われないので、図示および説明を省略する。
以上の処理により、仮想マシン制御装置は、仮想環境で物理サーバの負荷を分散することができる。物理サーバ間に負荷の偏りがあると、負荷が高い物理サーバ上のVMが資源を多用した場合に物理サーバの資源が枯渇し、物理サーバ上の全てのVMのスループットが低下するおそれがある。仮想マシン制御装置は、物理サーバ間の負荷の偏りをなくしておくことにより、いずれかの物理サーバ上のVMが資源を多用するようになっても、該当物理サーバの資源が枯渇する可能性を低く抑えることができる。
また、仮想化クラウド環境の進展に伴い、さらに設備費用を削減すべく、全物理サーバの資源の総量を、大きな余裕を持たずに運用できる技術が求められている。そのような環境では、負荷が偏った時点でVM移動を行うと資源が少ない状況でさらにVM移動のための資源を使用することになるので、好ましくない。そのため、過去の実績情報を用いて、将来を見越して予めメモリ負荷分散のためのVM移動を行っておくことにより、負荷が高い期間にVM移動によるメモリ負荷が発生することを抑止することができる。
また、実績情報に仮VMを設定し、実績情報に含まれない新たなVMが追加される場合に、仮VMが設定されているサーバに新たなVMが実装される。これにより、新たなVMが追加されても、サーバに設定されているリソース使用量の閾値を超える可能性を低減することができる。
<第2の実施形態>
第1の実施形態において、移動VM候補が見つからない場合(ステップS203でNOとなる場合)、そのまま処理を終了している。しかし、第1の実施形態では一つのVMを移動する処理しか行っていないため、2以上のVMを移動させることにより移動元のサーバのメモリ使用量が閾値以下となる可能性がある。第2の実施形態では、2以上のVMを移動させる例を示す。第2の実施形態のシステム構成は、図1に示した構成と同じである。また、第2の実施形態の仮想マシン制御装置1の構成は、図2に示した構成と同じである。
図15、15は、第2の実施形態のVM移動候補の選択処理の流れの一例を示すフローチャートである。図15、15に示す処理は、図6のステップS203においてNOと判定された場合に実行される。第2の実施形態の他の処理は、図4〜7に示す第1の実施形態の処理と同じである。
判定部13は、変数i、jに0をセットする(ステップS301)。また、判定部13は、変数iにi+1をセットする(ステップS302)。変数i、jは、各VMに割り当てられているシーケンス番号に対応する。
判定部13は、iがM以下であるか判定する(ステップS303)。ステップS303において、iがMより大きい場合(ステップS303でNO)、全てのVMについて判定処理が終了しているため、処理を終了する。
判定部13は、変数jにi+1をセットし(ステップS304)、jがM以下であるか確認する(ステップS305)。
jがM以下である場合(ステップS305でYES)、判定部13は、VMi、VMjをサーバnから他のサーバに移動したと仮定し、サーバnで動作するVMの各時間帯のメモリ使用量合計を算出する(ステップS306)。判定部13は、ステップS305で算出したサーバnのメモリ使用量合計が全ての時間帯において閾値以下であるか判定する(ステップS307)。
全ての時間帯において閾値以下である場合(ステップS307でYES)、VMi、VMjが移動VMの候補となる。サーバnのメモリ使用量合計がいずれかの時間帯において閾値を超える場合(ステップS307でNO)、判定部13は、ステップS304に戻る。
ステップS307でYESである場合、判定部13は、移動先のサーバを選択する処理に移る。判定部13は、変数h、kに0をセットする(ステップS308)。そして、判定部13は、変数hにh+1をセットする(ステップS309)。変数h、kは、各サーバに割り当てられているシーケンス番号に対応する。
判定部13は、hがN以下であるか判定する(ステップS310)。hがNより大きい場合(ステップS310でNO)、判定部13は、ステップS302に戻る。VMi、VMjを移動VM候補として、後述のステップS314を実施して全てのサーバについて閾値を超えたとしても、異なるVMi、VMjを移動候補とすることによりステップS314で閾値以下となる可能性があるためである。
hがN以下である場合(ステップS310でYES)、判定部13は、変数kにk+1をセットする(ステップS311)。判定部13は、kがN以下であるか判定する(ステップS312)。kがNより大きい場合(ステップS312でNO)、判定部13は、ステップS309に戻る。
kがN以下である場合(ステップS312でYES)、判定部13は、VMiをサーバhに移動し、VMjをサーバkに移動したと仮定し、サーバh、kで動作するVMの各時間帯のメモリ使用量合計を算出する(ステップS313)。
サーバh、kのそれぞれのメモリ使用量合計が閾値を上回る時間帯が存在する場合(ステップS314でNO)、判定部13は、ステップS311の処理に戻る。サーバh、kのメモリ使用量合計が全ての時間帯において閾値以下である場合(ステップS314でYES)、判定部13は、移動VMとしてVMi、VMjを選択し、移動先サーバとしてサーバh、kを選択する(ステップS315)。指示部14は、VMiをサーバhに移動し、VMjをサーバkに移動する指示を管理サーバ3に出力する(ステップS316)。
以上により、第2の実施形態における仮想マシン制御装置は、一つのVMを移動することにより移動元サーバのメモリ使用量合計が閾値以下にならない場合に、複数のVMを移動させる。それにより、仮想マシン制御装置は、全サーバのメモリ使用量合計が閾値以下となる可能性を向上させることができる。
なお、第2の実施形態では、2つのVMを移動させる例を示したが3つ以上のVMを移動させてもよい。また、第2の実施形態では、複数のVMを移動させる場合に、各VMを異なるサーバに移動させているが、2以上のVMを同じサーバに移動させてもよい。
<装置のハードウェア構成の一例>
次に、図17の例を参照して、仮想マシン制御装置のハードウェア構成の一例を説明する。図17の例に示すように、バス100に対して、プロセッサ111とRandom Access Memory(RAM)112とRead Only Memory(ROM)113とが接続される。また、該バス100に対して、補助記憶装置114と媒体接続部115と通信インタフェース116とが接続される。
プロセッサ111はRAM112に展開されたプログラムを実行する。実行されるプログラムとしては、実施形態における処理を行う仮想マシン制御プログラムが適用されてもよい。
ROM113はRAM112に展開されるプログラムを記憶する不揮発性の記憶装置である。補助記憶装置114は、種々の情報を記憶する記憶装置であり、例えばハードディスクドライブや半導体メモリ等を補助記憶装置114に適用してもよい。媒体接続部115は、可搬型記録媒体118と接続可能に設けられている。
可搬型記録媒体118としては、可搬型のメモリや光学式ディスク(例えば、Compact Disc(CD)やDigital Versatile Disc(DVD)、半導体メモリ等)を適用してもよい。この可搬型記録媒体118に実施形態の処理を行う仮想マシン制御プログラムが記録されていてもよい。
図2に示す記憶部15は、RAM112や補助記憶装置114等により実現されてもよい。図2に示す通信部11は、通信インタフェース116により実現されてもよい。図2に示す取得部12、判定部13、および指示部14は、与えられた仮想マシン制御プログラムをプロセッサ111が実行することにより実現されてもよい。
RAM112、ROM113、補助記憶装置114および可搬型記録媒体118は、何れもコンピュータ読み取り可能な有形の記憶媒体の一例である。これらの有形な記憶媒体は、信号搬送波のような一時的な媒体ではない。
<その他>
本実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
1 仮想マシン制御装置
2 サーバ
3 管理サーバ
11 通信部
12 取得部
13 判定部
14 指示部
15 記憶部
111 プロセッサ
112 RAM
113 ROM

Claims (5)

  1. 複数の情報処理装置のいずれかの情報処理装置で動作する複数の仮想マシンによる前記いずれかの情報処理装置のリソース使用量の実績情報として、前記いずれかの情報処理装置のCPU利用率の実績情報を記憶する記憶部を参照して、前記複数の仮想マシンによる過去の複数の期間のそれぞれのCPU利用率の実績値を取得し、
    前記いずれかの情報処理装置で動作する仮想マシンのうち、CPU利用率の実績値が前記実績情報に含まれない仮想マシンを検出した場合、取得した前記実績値と、検出した前記仮想マシンによる前記いずれかの情報処理装置のCPU利用率との合計値が前記いずれかの情報処理装置の基準を超える期間が存在するか否かを判定し、
    前記合計値が前記基準を超える期間が存在する場合、該期間前に、前記いずれかの情報処理装置で動作する仮想マシンのいずれかを、前記いずれかの情報処理装置以外の他の情報処理装置で動作させる指示を出力する
    処理をコンピュータに実行させ
    前記指示の出力において、前記他の情報処理装置で動作させた場合に全ての前記情報処理装置においてCPU利用率が基準を超えないと予測される仮想マシンが複数存在する場合、最もCPU利用率が少ない前記仮想マシンを前記他の情報処理装置で動作させる指示を出力す
    ことを特徴とする仮想マシン制御プログラム。
  2. 前記複数の情報処理装置のうちの少なくとも一つの情報処理装置の前記実績情報に、仮の仮想マシンのCPU利用率を追加した予測情報を作成し、
    前記予測情報に含まれない新たな仮想マシンが配備される場合、前記予測情報において前記仮の仮想マシンのCPU利用率を含む前記情報処理装置に前記新たな仮想マシンを配備し、前記予測情報内の前記仮の仮想マシンのCPU利用率を前記新たな仮想マシンのCPU利用率で置き換え、
    前記予測情報において、前記新たな仮想マシンが配備された情報処理装置のCPU利用率の合計値が前記基準を超える期間が存在するか否かを判定する
    処理を前記コンピュータに実行させることを特徴とする請求項1記載の仮想マシン制御プログラム。
  3. 前記実績情報に含まれる仮想マシンのCPU利用率の現在の値が、該現在の値に対応する前記実績値より大きい場合に、前記実績情報に対して現在以降の時間帯に対応する実績値の少なくとも一部のCPU利用率を現在の値に置き換えた予測情報を作成し、
    前記予測情報におけるCPU利用率の合計値が前記基準を超える期間が存在するか否かを判定する
    処理を前記コンピュータに実行させることを特徴とする請求項1記載の仮想マシン制御プログラム。
  4. 複数の情報処理装置のいずれかの情報処理装置で動作する複数の仮想マシンによる前記いずれかの情報処理装置のリソース使用量の実績情報として、前記いずれかの情報処理装置のCPU利用率の実績情報を記憶する記憶部を参照して、前記複数の仮想マシンによる過去の複数の期間のそれぞれのCPU利用率の実績値を取得し、
    前記いずれかの情報処理装置で動作する仮想マシンのうち、CPU利用率の実績値が前記実績情報に含まれない仮想マシンを検出した場合、取得した前記実績値と、検出した前記仮想マシンによる前記いずれかの情報処理装置のCPU利用率との合計値が前記いずれかの情報処理装置の基準を超える期間が存在するか否かを判定し、
    前記合計値が前記基準を超える期間が存在する場合、該期間前に、前記いずれかの情報処理装置で動作する仮想マシンのいずれかを、前記いずれかの情報処理装置以外の他の情報処理装置で動作させる指示を出力する
    処理をコンピュータが実行し、
    前記指示の出力において、前記他の情報処理装置で動作させた場合に全ての前記情報処理装置においてCPU利用率が基準を超えないと予測される仮想マシンが複数存在する場合、最もCPU利用率が少ない前記仮想マシンを前記他の情報処理装置で動作させる指示を出力する
    ことを特徴とする仮想マシン制御方法。
  5. 複数の情報処理装置のいずれかの情報処理装置で動作する複数の仮想マシンによる前記いずれかの情報処理装置のリソース使用量の実績情報として、前記いずれかの情報処理装置のCPU利用率の実績情報を記憶する記憶部を参照して、前記複数の仮想マシンによる過去の複数の期間のそれぞれのCPU利用率の実績値を取得する取得部と、
    前記いずれかの情報処理装置で動作する仮想マシンのうち、CPU利用率の実績値が前記実績情報に含まれない仮想マシンを検出した場合、取得した前記実績値と、検出した前記仮想マシンによる前記いずれかの情報処理装置のCPU利用率との合計値が前記いずれかの情報処理装置の基準を超える期間が存在するか否かを判定する判定部と、
    前記合計値が前記基準を超える期間が存在する場合、該期間前に、前記いずれかの情報処理装置で動作する仮想マシンのいずれかを、前記いずれかの情報処理装置以外の他の情報処理装置で動作させる指示を出力する指示部であって、前記他の情報処理装置で動作させた場合に全ての前記情報処理装置においてCPU利用率が基準を超えないと予測される仮想マシンが複数存在する場合、最もCPU利用率が少ない前記仮想マシンを前記他の情報処理装置で動作させる指示を出力する該指示部と、
    を備えることを特徴とする仮想マシン制御装置。
JP2016145792A 2016-07-25 2016-07-25 仮想マシン制御プログラム、仮想マシン制御方法および仮想マシン制御装置 Active JP6750368B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016145792A JP6750368B2 (ja) 2016-07-25 2016-07-25 仮想マシン制御プログラム、仮想マシン制御方法および仮想マシン制御装置
US15/652,697 US10248450B2 (en) 2016-07-25 2017-07-18 Virtual machine migration using a prediction algorithm

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016145792A JP6750368B2 (ja) 2016-07-25 2016-07-25 仮想マシン制御プログラム、仮想マシン制御方法および仮想マシン制御装置

Publications (2)

Publication Number Publication Date
JP2018018175A JP2018018175A (ja) 2018-02-01
JP6750368B2 true JP6750368B2 (ja) 2020-09-02

Family

ID=60988052

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016145792A Active JP6750368B2 (ja) 2016-07-25 2016-07-25 仮想マシン制御プログラム、仮想マシン制御方法および仮想マシン制御装置

Country Status (2)

Country Link
US (1) US10248450B2 (ja)
JP (1) JP6750368B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10203991B2 (en) * 2017-01-19 2019-02-12 International Business Machines Corporation Dynamic resource allocation with forecasting in virtualized environments
US10606493B1 (en) * 2017-04-14 2020-03-31 Parallels International Gmbh System and method for adjusting memory allocation for virtual machines
US10866825B2 (en) * 2017-11-10 2020-12-15 Microsoft Technology Licensing, Llc Deployment of partially provisioned virtual machines
CN117234742B (zh) * 2023-11-14 2024-02-09 苏州元脑智能科技有限公司 一种处理器核心分配方法、装置、设备及存储介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5664339B2 (ja) * 2011-03-01 2015-02-04 富士通株式会社 情報処理装置、仮想マシン管理方法および仮想マシン管理プログラム
JP5659054B2 (ja) * 2011-03-18 2015-01-28 株式会社富士通アドバンストエンジニアリング システム管理装置、システム管理方法及びシステム管理プログラム
DE102012217202B4 (de) * 2011-10-12 2020-06-18 International Business Machines Corporation Verfahren und System zum Optimieren des Platzierens virtueller Maschinen in Cloud-Computing-Umgebungen
US9762506B2 (en) * 2013-02-06 2017-09-12 Hitachi, Ltd. Virtual guest management system and virtual guest management method
US9590875B2 (en) * 2013-04-29 2017-03-07 International Business Machines Corporation Content delivery infrastructure with non-intentional feedback parameter provisioning
US9384059B2 (en) 2013-05-31 2016-07-05 Hitachi, Ltd. Comparing resource costs between allocation plans in a load balance apparatus
JP2015011569A (ja) 2013-06-28 2015-01-19 株式会社東芝 仮想マシン管理装置、仮想マシン管理方法、及び仮想マシン管理プログラム
WO2015099036A1 (ja) * 2013-12-27 2015-07-02 株式会社Nttドコモ 管理システム、全体管理ノード及び管理方法
JP2015216572A (ja) * 2014-05-13 2015-12-03 株式会社日立製作所 計算機システム、計算機システムの管理方法及び管理計算機
JP6455035B2 (ja) * 2014-09-10 2019-01-23 富士通株式会社 負荷分散管理装置、制御方法およびプログラム

Also Published As

Publication number Publication date
US20180024856A1 (en) 2018-01-25
JP2018018175A (ja) 2018-02-01
US10248450B2 (en) 2019-04-02

Similar Documents

Publication Publication Date Title
JP5756240B2 (ja) 管理システム及び管理方法
Nashaat et al. Smart elastic scheduling algorithm for virtual machine migration in cloud computing
JP6750368B2 (ja) 仮想マシン制御プログラム、仮想マシン制御方法および仮想マシン制御装置
CN108009016B (zh) 一种资源负载均衡控制方法及集群调度器
US10116568B2 (en) System and method for automatically optimizing capacity between server clusters
JP5218390B2 (ja) 自律制御サーバ、仮想サーバの制御方法及びプログラム
CN105988872B (zh) 一种cpu资源分配的方法、装置及电子设备
US9189273B2 (en) Performance-aware job scheduling under power constraints
US20160196157A1 (en) Information processing system, management device, and method of controlling information processing system
US20150007177A1 (en) Virtual machine management method and information processing apparatus
WO2014161391A1 (zh) 迁移虚拟机的方法和资源调度平台
CN106133693A (zh) 虚拟机的迁移方法、装置及设备
JP6741941B2 (ja) 仮想マシン管理プログラム、仮想マシン管理方法、及び、仮想マシン管理装置
JP6969282B2 (ja) 情報処理装置、情報処理システムおよび情報処理方法
JP7035858B2 (ja) マイグレーション管理プログラム、マイグレーション方法およびマイグレーションシステム
CN107506233B (zh) 一种虚拟资源调度方法、装置及服务器
Xue et al. Managing data center tickets: Prediction and active sizing
US20120054762A1 (en) Scheduling apparatus and method for a multicore device
CN104461673A (zh) 一种虚拟机迁移判定方法及装置
US9910709B2 (en) Allocation control method and apparatus
KR101896497B1 (ko) 성능 제어 방법 및 이를 위한 장치
KR20170139763A (ko) 네트워크 서비스 검출 방법 및 이를 위한 장치
JPWO2013171944A1 (ja) 仮想マシン管理システム、仮想マシン管理方法およびプログラム
JP2014206805A (ja) 制御装置
JP6331549B2 (ja) 仮想マシン管理装置、仮想マシン管理方法、及び仮想マシン管理システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190409

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200212

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200410

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20200410

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20200410

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200714

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200727

R150 Certificate of patent or registration of utility model

Ref document number: 6750368

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150