JP6778130B2 - 仮想計算機システムおよびそのリソース割当て方法 - Google Patents

仮想計算機システムおよびそのリソース割当て方法 Download PDF

Info

Publication number
JP6778130B2
JP6778130B2 JP2017033766A JP2017033766A JP6778130B2 JP 6778130 B2 JP6778130 B2 JP 6778130B2 JP 2017033766 A JP2017033766 A JP 2017033766A JP 2017033766 A JP2017033766 A JP 2017033766A JP 6778130 B2 JP6778130 B2 JP 6778130B2
Authority
JP
Japan
Prior art keywords
program
physical
cpu
performance improvement
improvement rate
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
JP2017033766A
Other languages
English (en)
Other versions
JP2018139064A (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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2017033766A priority Critical patent/JP6778130B2/ja
Publication of JP2018139064A publication Critical patent/JP2018139064A/ja
Application granted granted Critical
Publication of JP6778130B2 publication Critical patent/JP6778130B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

本発明は、仮想計算機システムのCPUリソースの割当てに関する。
複数の物理CPU(Central Processing Unit)やメモリや入出力装置を制御して複数のVM(Virtual Machine:仮想計算機)を構築する仮想計算機システムでは、アプリケーションを実行するVMのCPU割当てに関して、事前検証で得られたピーク性能データを基に、静的にCPU割当てしている(非特許文献1を参照)。
複数のサーバをVMとして一台のサーバに集約するサーバ仮想化においては、稼働率の高くない仮想サーバもある。この仮想サーバに割当てられた物理CPUでは実質的な処理を行っていないため、仮想計算機システムの電力消費が問題となることがある。
特許文献1では、VMの仮想CPUと物理CPUの対応付けを制御して、仮想CPUへの対応付けがなくなった物理CPUをスリープ状態にして消費電力を低減している。
特開2009−140157号公報
RYAN MANGAN’S IT BLOG"Deciding On How Many vCPU’s Should A Virtual Machine Be Allocated ?"、[online]、UPDATED: 2014-1-18、[2017/1/13検索]、インターネット<URL:https://ryanmangansitblog.com/2014/01/18/deciding-on-how-many-vcpus-should-a-virtual-machine-be-allocated/>
上記の先行技術によれば、複数のアプリケーションを同時実行する仮想計算機システムの消費電力を低減することが可能となる。しかし仮想計算機システムの物理CPUの使用効率については考慮されておらず、サーバ仮想化等の性能向上を最大化できない。
本発明の目的は、仮想サーバの負荷状態(CPU使用状況)が変動した際にも、最適な性能で動作する仮想計算機システムを提供することにある。
前記課題を解決するため、請求項1に記載の発明は、複数の仮想CPUが並列動作して処理されるプログラムを実行する仮想計算機システムであって、前記仮想CPUに対応付ける物理CPUの割当て数を変える物理CPU割当て制御部を有し、物理CPU割当て制御部は、前記プログラムの逐次処理と並列処理の実行時間を示す並列性情報を取得する並列性情報取得部と、前記プログラム毎に前記並列性情報に基づいて並列化可能な部分の実行時間の割合を示す並列率を算出する並列実行時間割合算出部と、前記並列率と物理CPU数とから、アムダールの法則に基づいて物理CPU数を増加または減少した際の前記プログラム毎の性能向上率を算出する性能向上率推定部と、前記プログラムの実行中に周期的に、前記プログラム毎の前記性能向上率の変化に基づいて、プログラム毎の物理CPU割当て数を増加または減少するCPU割当て判定部と、を備え、前記プログラムの逐次処理の実行時間と並列処理の実行時間から求まる並列性情報に基づいて、前記仮想CPUに対応付ける物理CPUの割当て数を変えるようにした。
このようにすることで、仮想計算機システムの全体のスループットを向上することができる。
請求項2に記載の発明は、複数の仮想CPUが並列動作して処理される複数のプログラムを実行する仮想計算機システムのリソース割当て方法であって、前記プログラムの逐次処理と並列処理の実行時間を示す並列性情報を前記プログラムの実行中に周期的に取得するステップと、前記プログラム毎に前記並列性情報に基づいて並列化可能な部分の実行時間の割合を示す並列率を算出するステップと、前記並列率と物理CPU数とから、アムダールの法則に基づいて物理CPU数を増加または減少した際の前記プログラム毎の性能向上率を算出するステップと、前記プログラム毎の前記性能向上率の変化に基づいて、プログラム毎の物理CPU割当て数を増加または減少するステップと、前記プログラムの実行中に周期的に、前記仮想CPUに対応付ける物理CPUの割当て数を変えるステップと、を含むようにした。
このようにすることで、簡易に性能評価を行い、仮想計算機システムの全体のスループットを向上することができる。
請求項3に記載の発明は、請求項2に記載の仮想計算機システムのリソース割当て方法において、前記プログラム毎の前記性能向上率の変化に基づいて、プログラム毎の物理CPU割当て数を増加または減少するステップは、各プログラムのそれぞれに物理CPUを1つ割当てるステップと、各プログラム中から、物理CPUを1増加した際の性能向上率の増分が最大となるプログラムを選択するステップと、前記選択されたプログラムの物理CPUの割当て数を1つ増加するステップと、を含むようにした。
このようにすることで、簡易に性能評価を行い、仮想計算機システムの全体のスループットを向上することができる。
請求項4に記載の発明は、請求項2に記載の仮想計算機システムのリソース割当て方法において、前記プログラム毎の前記性能向上率の変化に基づいて、プログラム毎の物理CPU割当て数を増加または減少するステップは、前記プログラム毎に全物理CPUを略均等数割当てるステップと、各プログラム中から、物理CPUを1増加した際の性能向上率の増分が最大となるプログラムを選択するとともに、物理CPUを1減少した際の性能向上率の差分が最小となるプログラムを選択するステップと、前記物理CPUを1増加した際の性能向上率の増分が、前記物理CPUを1減少した際の性能向上率の差分以上の場合に、前記物理CPUを1増加した際の性能向上率の増分が最大となるプログラムの物理CPUの割当て数を1つ増加し、物理CPUを1減少した際の性能向上率の差分が最小となるプログラムの物理CPUの割当て数を1つ減少するステップと、を含むようにした。
このようにすることで、短時間に物理CPUの割当て数を算出することができる。
請求項5に記載の発明は、請求項2に記載の仮想計算機システムのリソース割当て方法において、前記プログラム毎の前記性能向上率の変化に基づいて、プログラム毎の物理CPU割当て数を増加または減少するステップは、各プログラムのそれぞれに物理CPUの実装数を割当てるステップと、各プログラム中から、物理CPUを1減少した際の性能向上率の差分が最小となるプログラムを選択するステップと、前記選択されたプログラムの物理CPUの割当て数を1つ減少するステップと、を含むようにした。
このようにすることで、簡易に性能評価を行い、仮想計算機システムの全体のスループットを向上することができる。
本発明によれば、物理CPUの使用効率が上がるので、仮想計算機システムのスループット向上を図ることができる。
物理CPUとVMの仮想CPUとの対応関係を示す図である。 他のタイミングの物理CPUとVMの仮想CPUとの対応関係を示す図である。 物理プロセッサを並列化した際のアムダールの法則に基づく性能向上率を示す図である。 物理CPU割当て制御部の処理フロー図である。 物理CPU割当て制御部の機能ブロックを示す図である。 性能向上率推定情報の一例を示す図である。 積み上げ方式による評価を行う場合のCPU割当て判定部の処理フローである。 図6に処理フローによる各アプリの割当てる物理CPU数の変化を示した図である。 積み下げ方式による評価を行う場合のCPU割当て判定部の処理フローである。 図8に処理フローによる各アプリの割当てる物理CPU数の変化を示した図である。 積み上げと積み下げの中間方式による評価を行う場合のCPU割当て判定部の処理フローである。 図10に処理フローによる各アプリの割当てる物理CPU数の変化を示した図である。 アプリ並列性情報の収集方法を説明する図である。
以下、本発明の実施形態を説明する。
図1Aと図1Bは、それぞれ異なるタイミングにおける、物理CPUとVMの仮想CPUとの対応関係と、ゲストOS(Operating System)/アプリケーションプログラム(以下、アプリと記す)と仮想CPUとの対応関係を示し、仮想計算機システムの概要を示す図である。
実施形態の仮想計算機システムは、4つの物理CPU(CPU_1、CPU_2、CPU_3、CPU_4)を備え、2つのVM(VM0、VM1)が動作している。
VM(VM0、VM1)には、それぞれ、4つの仮想CPU(vCPU0_1、vCPU0_2、vCPU0_3、vCPU0_4とvCPU1_1、vCPU1_2、vCPU1_3、vCPU1_4)が設けられている。
そして、VM(VM0、VM1)のそれぞれでは、ゲストOS1/アプリ1とゲストOS2/アプリ2が動作している。
図1Aのタイミングでは、仮想化ソフトウェアにより、2つの物理CPU(CPU_1、CPU_2)がVM(VM0)の2つの仮想CPU(vCPU0_1、vCPU0_2)に割当てられている。このため、VM(VM0)のゲストOS1/アプリ1は、物理CPU(CPU_1、CPU_2)で実行されている。また、2つの物理CPU(CPU_3、CPU_4)がVM(VM1)の2つの仮想CPU(vCPU1_1、vCPU1_2)に割当てられ、VM(VM1)のゲストOS2/アプリ2は、物理CPU(CPU_3、CPU_4)で実行されている。
実施形態の仮想計算機システムには、物理CPU割当て制御部1が設けられている。
物理CPU割当て制御部1は、アプリ1とアプリ2のそれぞれのプログラムの逐次処理と並列処理の実行時間(アプリ並列性情報)を取得し、VM動作の並列性を評価し、仮想化ソフトウェアに指示して、物理CPUのVM割当てを制御する。
図1Bは、物理CPU割当て制御部1により物理CPUのVM割当てが変更され、VM(VM0)に3つの物理CPU(CPU_1、CPU_2、CPU_3)が割当てられ、VM(VM1)に1つの物理CPU(CPU_4)が割当てられている。
これにより、VM(VM0)のゲストOS1/アプリ1は、物理CPU(CPU_1、CPU_2、CPU_3)で実行され、VM(VM1)のゲストOS2/アプリ2は、物理CPU(CPU_4)で実行されるように変更される。
物理CPU割当て制御部1は、アプリ1とアプリ2の実行中に、周期的に、物理CPU(CPU_1、CPU_2、CPU_3、CPU_4)の使用効率が高くなるように、物理CPUのVM割当てを制御する。これにより、仮想計算機システムの効率向上を図ることができる。
つぎに、物理CPU割当て制御部1における、物理CPUのVM割当ての制御方法について説明する。
物理CPU割当て制御部1は、アムダールの法則に基づいて、VMに割当てる物理CPU数を変えたときの性能向上率を、仮想計算機システム全体で評価して、物理CPUの割当てを制御する。
アムダールの法則では、物理プロセッサを並列化した際の性能向上率が次式のように与えられる。
Figure 0006778130
S(N):並列化による性能向上率
N :物理プロセッサ数
P :並列化可能な部分の実行時間の割合
図2は、式(1)をグラフ化したものである。
図2からも明らかなように、アプリの並列化可能な部分の実行時間の割合P(以下、並列率Pと記す)が小さい場合には、割当てる物理プロセッサの数を増やしても、性能向上率が大きくならない。逆に、割当てる物理プロセッサの数を減らしても、性能の低下率は小さいともいえる。
物理CPU割当て制御部1は、仮想計算機システムで実行している全てアプリについて、周期的に逐次処理と並列処理の実行時間を示すアプリ並列性情報を取得し、並列率Pを算出する。そして、アムダールの法則に基づいて仮想計算機システムのスループットが最大となる物理CPU割当てを決める。
図3は、周期的に行われる物理CPU割当て制御部1の処理フロー図である。
ステップS31で、物理CPU割当て制御部1は、各アプリのプログラムを実行している物理CPUの特定情報を取得する。
例えば、ゲストOSからアプリのプロセスID毎に実行する仮想CPUの特定情報を取得し、仮想化ソフトウェアから物理CPUと仮想CPUの対応関係を示す割当て情報を取得する。これにより、アプリのプロセスID毎に実行する物理CPUを特定することができる。
つぎに、ステップS32で、物理CPU割当て制御部1は、各アプリの逐次処理と並列処理の実行時間を示すアプリ並列性情報を取得し、各アプリの並列率Pを算出する。
詳細は後述するが、VMの各アプリのOSやツールから取得することができる。
ステップS33で、ステップS32で算出した並列率Pと式(1)から、各アプリの物理プロセッサ数と性能向上率の関係を求め、VMに割当てる物理CPU数を変えたときの性能向上率を、仮想計算機システム全体で評価して、各アプリの物理CPU割当ての最適化を行う。
ステップS34で、ステップS33の最適化処理結果に基づいて、VMの物理CPUの割当てを変更制御する。
例えば、CPUピニングコマンドのCPUアフィニティーにより、VMに割当てる物理CPUを指定する。
図4は、物理CPU割当て制御部1の機能ブロックを示す図である。
図1Aまたは図1Bの構成を例に詳細に説明する。
CPU割当て情報収集部11は、ゲストOS1とVM(VM0)から、アプリ1に対応するプロセスIDを処理している仮想CPU(vCPU0_1とvCPU0_2)の識別情報を取得するとともに、仮想化ソフトウェアから、仮想CPU(vCPU0_1とvCPU0_2)に割当てられている物理CPU(CPU_1とCPU_2)の識別情報を取得する。
そして、取得した情報に基づいて、アプリ1を処理している物理CPU(CPU_1とCPU_2)を求め、CPU割当て情報記憶部17に記憶する。
CPU割当て情報収集部11は、アプリ2についても同様に、ゲストOS2とVM(VM1)と仮想化ソフトウェアから、アプリ2を処理している物理CPU(CPU_3とCPU_4)を求め、CPU割当て情報記憶部17に記憶する。
上記のように、CPU割当て情報収集部11は、ゲストOSとVMと仮想化ソフトウェアから、所定のアプリと処理している物理CPUの対応関係を求め、CPU割当て情報記憶部17に記憶する。
アプリ並列性情報取得部12は、ゲストOS1からアプリ1の逐次処理と並列処理の実行時間を示すアプリ並列性情報を取得し、逐次処理/並列処理の実行時間情報記憶部18に記憶する。
また、アプリ並列性情報取得部12は、アプリ2についても同様に、アプリ並列性情報を取得し、逐次処理/並列処理の実行時間情報記憶部18に記憶する。
上記のように、アプリ並列性情報取得部12は、実施形態の仮想計算機システムの全アプリについて、逐次処理と並列処理の実行時間を示すアプリ並列性情報を取得し、逐次処理/並列処理の実行時間情報記憶部18に記憶する。
並列実行時間割合算出部13は、逐次処理/並列処理の実行時間情報記憶部18を参照して、アプリ1の並列率Pを算出する。そして、並列実行時間割合算出部13は、算出したアプリ1の並列率Pを性能向上率推定情報記憶部19に記憶する。
また、並列実行時間割合算出部13は、アプリ2についても同様に、算出したアプリ2の並列率Pを性能向上率推定情報記憶部19に記憶する。
上記のように、並列実行時間割合算出部13は、逐次処理/並列処理の実行時間情報記憶部18を参照して、各アプリの並列率Pを算出し、性能向上率推定情報として性能向上率推定情報記憶部19に記憶する。
性能向上率推定部14は、性能向上率推定情報記憶部19を参照して、アプリ1の並列率Pを求める。そして、式(1)から、物理CPU数が1〜4のそれぞれの場合の性能向上率を算出し、性能向上率推定情報記憶部19に記憶する。
また、性能向上率推定部14は、同様に、アプリ2の並列率Pと式(1)から、物理CPU数が1〜4のそれぞれの場合の性能向上率を算出し、性能向上率推定情報記憶部19に記憶する。
上記のように、性能向上率推定部14は、アプリ毎に、並列率Pと式(1)から、物理CPU数が1〜4のそれぞれの場合の性能向上率を算出し、性能向上率推定情報記憶部19に記憶する。
CPU割当て判定部15は、性能向上率推定情報記憶部19を参照して、VMに割当てる物理CPU数を変えたときの性能向上率を、仮想計算機システム全体で評価して、各アプリの物理CPU割当ての最適化を行う。
評価方法の詳細は、後述するのでここでは説明を省略する。
CPU割当て判定部15は、最適と評価したアプリ1とアプリ2の物理CPUの数に基づいて、アプリ1を物理CPU(CPU_1とCPU_2とCPU_3)が処理するようにCPU割当て情報記憶部17を修正する。
CPU割当て判定部15は、また、アプリ2を物理CPU(CPU_4)が処理するようにCPU割当て情報記憶部17を修正する。
上記のように、CPU割当て判定部15は、全てアプリが最適化された数の物理CPUで処理されるように、CPU割当て情報記憶部17を修正する。
CPU割当て変更制御部16は、CPU割当て情報記憶部17を参照して、アプリ1を実行するVM(VM0)に、物理CPU(CPU_1とCPU_2とCPU_3)を割当てるように、仮想化ソフトウェアに指示する。
また、CPU割当て変更制御部16は、アプリ2を実行するVM(VM1)に、物理CPU(CPU_4)を割当てるように、仮想化ソフトウェアに指示する。
上記のように、CPU割当て変更制御部16は、CPU割当て情報記憶部17を参照して、アプリを実行するVMの物理CPUの割当てを仮想化ソフトウェアに指示する。
上記の物理CPU割当て制御部1は、構成の全てまたは一部が、仮想計算機システムのハイパーバイザの一部として、実装される。または、仮想計算機システムのホストOSの一つのプログラムとして実装してもよい。
つぎに、CPU割当て判定部15(図4参照)の評価方法を詳細に説明する。
図5は、性能向上率推定情報記憶部19(図4参照)に記憶されている性能向上率推定部14(図4参照)で算出した性能向上率推定情報の一例を示す図である。
図5の性能向上率推定情報は、3つのアプリが8つの物理CPUで実行する場合の、物理CPU数(191)に対するアムダールの法則に基づくアプリの性能向上率(192、194、196)を示している。ここで、アプリ1の並列率Pは0.2であり、アプリ2の並列率Pは0.5、アプリ3の並列率Pは0.8とする。
また、性能向上率推定情報には、一つの物理CPUの増加に対する性能向上率の増分を物理CPU数の増加毎に記録している(193、195、197)。
CPU割当て判定部15は、図5の性能向上率推定情報を参照して、積み上げ方式による評価、積み下げ方式による評価、または、積み上げと積み下げの中間方式による評価のいずれかの評価方法により、アプリ毎の物理CPU割当ての最適化を行う。
以下に、それぞれの評価方法を順に説明する。
図6は、積み上げ方式による評価を行う場合のCPU割当て判定部15の処理フローである。
ステップS61で、CPU割当て判定部15は、各アプリに割当てる物理CPU数を1に初期設定する。例えば、図5の性能向上率推定情報の例では、アプリ1とアプリ2とアプリ3のそれぞれの物理CPU数を1に初期設定する。
ステップS62で、CPU割当て判定部15は、アプリに追加割当てする物理CPU数分、ステップS63とステップS64の処理を繰り返す。
例えば、図5の性能向上率推定情報の例では、8つの物理CPUのうち、初期設定した残りの5つの物理CPUの追加を行うので、ステップS63とステップS64の処理を5回繰り返す。
ステップS63では、性能向上率推定情報を参照して、物理CPUを1増加する際の性能向上率の増分が最大のアプリを選択する。
例えば、初期設定(物理CPU数1)から物理CPU数2に増加する際のアプリの性能向上率の増分(193、195,197)は、それぞれ、0.111/0.333/0.667であるので、アプリ3が選択される。
ステップS64では、ステップS63で選択されたアプリに割当てる物理CPU数を1増加する。
例えば、初期設定(物理CPU数1)から物理CPU数2に増加する際には、アプリ3が選択されたので、アプリ3に割当てる物理CPU数を2にする。
以上の処理の繰り返しにより、CPU割当て判定部15は、システム性能が最大になるように、各アプリの物理CPU割当ての最適化を行う。
図7は、CPU割当て判定部15が、図6の処理フローにより、図5の性能向上率推定情報の例を処理した際の、各アプリの割当てる物理CPU数の変化を示した図である。
3つ目までの物理CPUの割当てにおいては、アプリ3の性能向上率の増分が最大となるため、物理CPUの増加分はアプリ3に割当てられる。しかし、4つ目の物理CPUの割当てでは、アプリの性能向上率の増分は、それぞれ、0.111/0.333/0.278となるため、アプリ2の性能向上率の増分が最大となり、4つ目の物理CPUはアプリ2に割当てられる。
図7の例においては、5つの物理CPUの割当て評価が行われ、アプリ1に1つ、アプリ2に2つ、アプリ3に5つの物理CPUが割当てられる。
つぎに、積み下げ方式による評価を行う場合のCPU割当て判定部15の処理フローを図8により説明する。
ステップS81で、CPU割当て判定部15は、各アプリに割当てる物理CPU数を実装数に初期設定する。例えば、図5の性能向上率推定情報の例では、アプリ1とアプリ2とアプリ3のそれぞれの物理CPU数を8に初期設定する。
ステップS82で、CPU割当て判定部15は、ステップS83とステップS84の処理を、物理CPU数が実装数になるまで繰り返す。
例えば、図5の性能向上率推定情報の例では、8つの物理CPUが実装されているので、アプリ1とアプリ2とアプリ3に割当てる物理CPU数の和が8になるまで、ステップS83とステップS84の処理を繰り返す。
ステップS83では、性能向上率推定情報を参照して、物理CPUを1減少する際の性能向上率の差分が最小のアプリを選択する。
例えば、初期設定(物理CPU数8)から物理CPUを一つ減らす際のアプリの性能向上率の差分は、0.005/0.028/0.152であるので、アプリ1が選択される。
ステップS84では、ステップS83で選択されたアプリに割当てる物理CPU数を一つ減少する。
例えば、初期設定(物理CPU数8)から物理CPUを一つ減らす際にはアプリ1が選択されたので、アプリ1に割当てる物理CPU数を7にする。
以上の処理の繰り返しにより、CPU割当て判定部15は、システム性能が最大になるように、各アプリの物理CPU割当ての最適化を行う。
図9は、CPU割当て判定部15が、図8の処理フローにより、図5の性能向上率推定情報の例を処理した際の、各アプリの割当てる物理CPU数の変化を示した図である。
5つ目までの物理CPUの減少においては、アプリ1の性能向上率の差分が最小となるため、アプリ1に割当てる物理CPUは、順に減少する。6つ目と7つ目の物理CPUの減少においては、アプリ2の性能向上率の差分が最小となり、アプリ2に割当てる物理CPUを減じる。
図9の例においては、16回の物理CPUの割当て削減が行われ、アプリ1に1つ、アプリ2に2つ、アプリ3に5つの物理CPUが割当てられる。
つぎに、積み上げと積み下げの中間方式による評価を行う場合のCPU割当て判定部15の処理フローを図10により説明する。
ステップS101で、CPU割当て判定部15は、初期設定として、各アプリに物理CPUを略均等数割当てる。例えば、図5の性能向上率推定情報の例では、8つの物理CPUがあるので、アプリ1に2つの物理CPUを、アプリ2とアプリ3にそれぞれ3つの物理CPUを割当てる。
ステップS102で、CPU割当て判定部15は、性能向上率推定情報を参照して、物理CPUを1増加する際の性能向上率の増分が最大のアプリを選択する。
つぎに、ステップS103で、CPU割当て判定部15は、性能向上率推定情報を参照して、物理CPUを1減少する際の性能向上率の差分が最小のアプリを選択する。
ステップS104で、CPU割当て判定部15は、ステップS102で選択したアプリの物理CPUの増加時の性能向上率の増分が、ステップS103で選択したアプリの物理CPUの減少時の性能向上率の差分以上であるか否かを判定する。
性能向上率の増分が差分以上であれば(S104のYes)、選択されたアプリの物理CPUの割当て数を1増1減する(S105)。つまり、ステップS102で選択されたアプリの物理CPUの割当て数を1増加し、ステップS103で選択されたアプリの物理CPUの割当て数を1減少する。
そして、ステップS102に戻り、物理CPUの割当て数の調整を継続する。
ステップS104で、性能向上率の増分が差分より小さければ(S104のNo)、物理CPUの割当て処理を終了する。
以上の処理により、CPU割当て判定部15は、システム性能が最大になるように、各アプリの物理CPU割当ての最適化を行う。
図11は、CPU割当て判定部15が、図10の処理フローにより、図5の性能向上率推定情報の例を処理した際の、各アプリに割当てる物理CPU数の変化を示した図である。
初期設定から物理CPU数を1増加する際のアプリの性能向上率の増分(193、195,197)は、それぞれ、0.043/0.100/0.357であるので、アプリ3が選択される(S102の処理)。初期設定から物理CPUを1つ減らす際のアプリの性能向上率の差分は、0.111/0.167/0.476であるので、アプリ1が選択される(S103の処理)。
アプリ3の性能向上率の増分はアプリ1の性能向上率の差分以上であるので(S104の処理)、各アプリの物理CPUの割当て数は、1/3/4に調整される(S105の処理)。
続けて、上記の割当て状態から物理CPU数を1増加する際のアプリの性能向上率の増分は、0.043/0.100/0.278であるので、アプリ3が選択される(S102の処理)。また、上記の割当て状態から物理CPUを1つ減らす際のアプリの性能向上率の差分は、−/0.167/0.357であるので、アプリ2が選択される(S103の処理)。このとき、アプリ1の物理CPUは1であり、減少できないので、評価から除外する。
アプリ3の性能向上率の増分はアプリ1の性能向上率の差分以上であるので(S104の処理)、各アプリの物理CPUの割当て数は、1/2/5に調整される(S105の処理)。
続けて、上記の割当て状態から物理CPU数を1増加する際のアプリの性能向上率の増分は、0.111/0.167/0.222であるので、アプリ3が選択される(S102の処理)。また、上記の割当て状態から物理CPUを1つ減らす際のアプリの性能向上率の差分は、−/0.333/0.278であるので、アプリ3が選択される(S103の処理)。このとき、アプリ1の物理CPUは1であり、減少できないので、評価から除外する。
アプリ3の性能向上率の増分はアプリ3の性能向上率の差分より小さいので(S104の処理)、物理CPUの割当て処理を終了する。
以上のより、図5の性能向上率推定情報の例において、アプリ1に1つ、アプリ2に2つ、アプリ3に5つの物理CPUが割当てられる。
上記の積み上げと積み下げの中間方式による評価において、初期設定として、各アプリに物理CPUを略均等数割当てる例を説明したが、各アプリの並列率Pに応じて、割当ててもよい。この場合には、アプリ1の並列率Pは0.2であり、アプリ2の並列率Pは0.5、アプリ3の並列率Pは0.8であるので、アプリ1に1つの物理CPUを、アプリ2に2つの物理CPUを、アプリ3に5つの物理CPUを割当てる。
図6の積み上げ方式による評価や図8の積み下げ方式による評価や図10の積み上げと積み下げの中間方式による評価のいずれにおいても同じ物理CPUの割当て結果を得ることができる。
CPU割当て判定部15は、図5の性能向上率推定情報を参照して、いずれかの評価方法により、アプリ毎の物理CPU割当ての処理を行えばよい。
つぎに、アプリの逐次処理と並列処理の実行時間を示すアプリ並列性情報の収集方法を、図12により説明する。
例えば、実施形態の仮想計算機システムで、リクエスト・パケットを受信し、内部処理した結果をレスポンス・パケットとして返信する通信ソフトウェアを実行する場合を説明する。
この通信ソフトウェアは、ロードバランサ等のリクエスト・パケットを受信する振り分け処理部121と、Webサーバ等の並列化が可能な内部処理群123と、リバースプロキシ・サーバ等のレスポンス・パケットを送信する集約処理部122と、から構成される。
この通信ソフトウェアでは、リクエスト・パケットの内容に応じて、内部処理群123の処理可能な並列数が変わる。
実施形態の仮想計算機システムにより、内部処理群123を並列処理する物理CPUの割当て数を求めて、リクエスト・パケットの処理を最適化する。
このために、並列化可能部分である内部処理群123の並列処理の実行時間と、並列化不可能部分である振り分け処理部121と集約処理部122の逐次処理の実行時間と、を求めて、並列率Pを算出する。
具体的には、通信ソフトウェアを、並列処理指向の関数型プログラミング言語「Erlang/OTP」により記述し、fprofツールにより関数毎の実行時間を測定する。
これにより、振り分け処理部121と集約処理部122の逐次処理部分、および、内部処理群123の並行処理部分、双方の実行時間の割合を得ることができる。
実施形態の仮想計算機システムは、アプリの負荷が動的に変動した際に、アプリ毎に並列性(逐次処理/並列処理の実行時間比)を考慮して物理CPUの割当てを行うので、物理CPUの使用効率を向上することができる。
特に、メニーコア化したシステムにおいては、有用となる。
1 物理CPU割当て制御部
11 CPU割当て情報収集部
12 アプリ並列性情報取得部
13 並列実行時間割合算出部
14 性能向上率推定部
15 CPU割当て判定部
16 CPU割当て変更制御部
17 CPU割当て情報記憶部
18 逐次処理/並列処理の実行時間情報記憶部
19 性能向上率推定情報記憶部

Claims (5)

  1. 複数の仮想CPUが並列動作して処理されるプログラムを実行する仮想計算機システムであって、
    前記仮想CPUに対応付ける物理CPUの割当て数を変える物理CPU割当て制御部を有し、
    物理CPU割当て制御部は、
    前記プログラムの逐次処理と並列処理の実行時間を示す並列性情報を取得する並列性情報取得部と、
    前記プログラム毎に前記並列性情報に基づいて並列化可能な部分の実行時間の割合を示す並列率を算出する並列実行時間割合算出部と、
    前記並列率と物理CPU数とから、アムダールの法則に基づいて物理CPU数を増加または減少した際の前記プログラム毎の性能向上率を算出する性能向上率推定部と、
    前記プログラムの実行中に周期的に、前記プログラム毎の前記性能向上率の変化に基づいて、プログラム毎の物理CPU割当て数を増加または減少するCPU割当て判定部と、
    を備え
    前記プログラムの逐次処理の実行時間と並列処理の実行時間から求まる並列性情報に基づいて、前記仮想CPUに対応付ける物理CPUの割当て数を変える
    ことを特徴とする仮想計算機システム。
  2. 複数の仮想CPUが並列動作して処理される複数のプログラムを実行する仮想計算機システムのリソース割当て方法であって、
    前記プログラムの逐次処理と並列処理の実行時間を示す並列性情報を前記プログラムの実行中に周期的に取得するステップと、
    前記プログラム毎に前記並列性情報に基づいて並列化可能な部分の実行時間の割合を示す並列率を算出するステップと、
    前記並列率と物理CPU数とから、アムダールの法則に基づいて物理CPU数を増加または減少した際の前記プログラム毎の性能向上率を算出するステップと、
    前記プログラム毎の前記性能向上率の変化に基づいて、プログラム毎の物理CPU割当て数を増加または減少するステップと、
    前記プログラムの実行中に周期的に、前記仮想CPUに対応付ける物理CPUの割当て数を変えるステップと、
    を含むことを特徴とする仮想計算機システムのリソース割当て方法。
  3. 請求項に記載の仮想計算機システムのリソース割当て方法において、
    前記プログラム毎の前記性能向上率の変化に基づいて、プログラム毎の物理CPU割当て数を増加または減少するステップは、
    各プログラムのそれぞれに物理CPUを1つ割当てるステップと、
    各プログラム中から、物理CPUを1増加した際の性能向上率の増分が最大となるプログラムを選択するステップと、
    前記選択されたプログラムの物理CPUの割当て数を1つ増加するステップと、
    を含むことを特徴とする仮想計算機システムのリソース割当て方法。
  4. 請求項に記載の仮想計算機システムのリソース割当て方法において、
    前記プログラム毎の前記性能向上率の変化に基づいて、プログラム毎の物理CPU割当て数を増加または減少するステップは、
    前記プログラム毎に全物理CPUを略均等数割当てるステップと、
    各プログラム中から、物理CPUを1増加した際の性能向上率の増分が最大となるプログラムを選択するとともに、物理CPUを1減少した際の性能向上率の差分が最小となるプログラムを選択するステップと、
    前記物理CPUを1増加した際の性能向上率の増分が、前記物理CPUを1減少した際の性能向上率の差分以上の場合に、前記物理CPUを1増加した際の性能向上率の増分が最大となるプログラムの物理CPUの割当て数を1つ増加し、物理CPUを1減少した際の性能向上率の差分が最小となるプログラムの物理CPUの割当て数を1つ減少するステップと、
    を含むことを特徴とする仮想計算機システムのリソース割当て方法。
  5. 請求項2に記載の仮想計算機システムのリソース割当て方法において、
    前記プログラム毎の前記性能向上率の変化に基づいて、プログラム毎の物理CPU割当て数を増加または減少するステップは、
    各プログラムのそれぞれに物理CPUの実装数を割当てるステップと、
    各プログラム中から、物理CPUを1減少した際の性能向上率の差分が最小となるプログラムを選択するステップと、
    前記選択されたプログラムの物理CPUの割当て数を1つ減少するステップと、
    を含むことを特徴とする仮想計算機システムのリソース割当て方法。
JP2017033766A 2017-02-24 2017-02-24 仮想計算機システムおよびそのリソース割当て方法 Active JP6778130B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017033766A JP6778130B2 (ja) 2017-02-24 2017-02-24 仮想計算機システムおよびそのリソース割当て方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017033766A JP6778130B2 (ja) 2017-02-24 2017-02-24 仮想計算機システムおよびそのリソース割当て方法

Publications (2)

Publication Number Publication Date
JP2018139064A JP2018139064A (ja) 2018-09-06
JP6778130B2 true JP6778130B2 (ja) 2020-10-28

Family

ID=63451398

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017033766A Active JP6778130B2 (ja) 2017-02-24 2017-02-24 仮想計算機システムおよびそのリソース割当て方法

Country Status (1)

Country Link
JP (1) JP6778130B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108959020B (zh) * 2018-05-08 2021-01-12 华为技术有限公司 一种计算机cpu利用率的计算方法和装置
US11687771B2 (en) * 2019-01-23 2023-06-27 Samsung Electronics Co., Ltd. Platform for concurrent execution of GPU operations
CN114281545B (zh) * 2021-12-20 2022-07-12 中南大学 基于cpu资源与图像模型时延关系的资源分配方法
CN117632521B (zh) * 2024-01-26 2024-05-03 中电云计算技术有限公司 后台任务的cpu利用率控制方法、装置、设备及存储介质
CN117687799A (zh) * 2024-02-02 2024-03-12 中国科学院空天信息创新研究院 一种面向遥感解译应用的分布流式加速方法及计算终端

Also Published As

Publication number Publication date
JP2018139064A (ja) 2018-09-06

Similar Documents

Publication Publication Date Title
JP6778130B2 (ja) 仮想計算機システムおよびそのリソース割当て方法
CN105988872B (zh) 一种cpu资源分配的方法、装置及电子设备
Zhang et al. Integrating resource consumption and allocation for infrastructure resources on-demand
Guo et al. Moving hadoop into the cloud with flexible slot management and speculative execution
US20160196157A1 (en) Information processing system, management device, and method of controlling information processing system
JP7081514B2 (ja) オートスケール型性能保証システム及びオートスケール型性能保証方法
Guo et al. Flexslot: Moving hadoop into the cloud with flexible slot management
JP2016042284A (ja) 並列計算機システム、管理装置、並列計算機システムの制御方法及び管理装置の制御プログラム
JP6428476B2 (ja) 並列化コンパイル方法、及び並列化コンパイラ
WO2016092856A1 (ja) 情報処理装置、情報処理システム、タスク処理方法、及び、プログラムを記憶する記憶媒体
Creech et al. Efficient multiprogramming for multicores with scaf
Nozal et al. Load balancing in a heterogeneous world: CPU-Xeon Phi co-execution of data-parallel kernels
Henry et al. Toward OpenCL automatic multi-device support
Sena et al. Autonomic malleability in iterative mpi applications
Sfakianakis et al. Skynet: Performance-driven resource management for dynamic workloads
US20120240111A1 (en) Storage medium storing program for controlling virtual machine, computing machine, and method for controlling virtual machine
US10846138B2 (en) Allocating resources of a memory fabric
Chiang et al. Kernel mechanisms with dynamic task-aware scheduling to reduce resource contention in NUMA multi-core systems
JP2012181578A (ja) 更新制御装置及びプログラム
Coutinho et al. HARNESS project: Managing heterogeneous computing resources for a cloud platform
Gouasmi et al. Cost-efficient distributed MapReduce job scheduling across cloud federation
Cores et al. An application-level solution for the dynamic reconfiguration of MPI applications
Cheng et al. A user-level numa-aware scheduler for optimizing virtual machine performance
Zhang et al. A scheduling method for multiple virtual machines migration in cloud
Simão et al. VM economics for Java cloud computing: An adaptive and resource-aware java runtime with quality-of-execution

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190308

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200122

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200225

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200424

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: 20201006

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201009

R150 Certificate of patent or registration of utility model

Ref document number: 6778130

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150