JP5433837B2 - 仮想計算機システム、仮想計算機の制御方法及びプログラム - Google Patents

仮想計算機システム、仮想計算機の制御方法及びプログラム Download PDF

Info

Publication number
JP5433837B2
JP5433837B2 JP2007314761A JP2007314761A JP5433837B2 JP 5433837 B2 JP5433837 B2 JP 5433837B2 JP 2007314761 A JP2007314761 A JP 2007314761A JP 2007314761 A JP2007314761 A JP 2007314761A JP 5433837 B2 JP5433837 B2 JP 5433837B2
Authority
JP
Japan
Prior art keywords
cpu
virtual
physical
physical cpu
allocation
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.)
Expired - Fee Related
Application number
JP2007314761A
Other languages
English (en)
Other versions
JP2009140157A (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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2007314761A priority Critical patent/JP5433837B2/ja
Priority to US12/328,121 priority patent/US8307369B2/en
Priority to DE602008003655T priority patent/DE602008003655D1/de
Priority to EP08021082A priority patent/EP2071458B1/en
Publication of JP2009140157A publication Critical patent/JP2009140157A/ja
Application granted granted Critical
Publication of JP5433837B2 publication Critical patent/JP5433837B2/ja
Expired - Fee Related 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/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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • 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/45541Bare-metal, i.e. hypervisor runs directly on hardware
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • 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/45575Starting, stopping, suspending or resuming virtual machine instances
    • 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/45579I/O management, e.g. providing access to device drivers or storage
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Power Sources (AREA)

Description

本発明は、複数の物理計算機上でゲストOSを稼動させる仮想計算機システムの改良に関するものである。
近年、プロセッサ(CPU)の高性能化に伴って計算機で消費される電力も増加してきた。特にサーバ用途で用いられるCPUでは大容量のキャッシュメモリを搭載しているため性能も高いが消費電力も大きい。さらに、サーバでは複数のCPUを搭載しているため、消費電力がさらに大きくなる。このため、多数のサーバを運用するデータセンタ等では、サーバの消費電力が大きいとサーバの設置条件や冷却等への影響が大きくなる。
また、サーバを用いたITシステムでは、一般に、CPUのピーク性能に応じたシステム設計を行う。このため、多数のサーバを運用するデータセンタ等では、CPUの稼働率が高くないサーバが多数存在している。ここで、近年のCPUでは、動作クロックを変更したりCPUの駆動電圧を変更して消費電力を低減する技術が採用されているが、負荷が低い状態(アイドル状態や待機状態など)であっても電力消費はゼロにはならない。このため、複数のサーバを1台のサーバに集約してCPUの稼働率を向上させるサーバ仮想化(仮想計算機)の技術に注目が集まっている。
サーバ仮想化の技術としては、ホストOS上で複数のゲストOSを稼動させるVMware(登録商標)のESX Server(非特許文献1)や特許文献1に開示される技術が知られており、ハイパバイザを用いる仮想化技術としては、XenSource社のXen(非特許文献2)等が知られている。
非特許文献1では、仮想CPUを物理CPUへ割り付ける処理は、ホストOS(VM Kernel)のスケジューラに依存している。また、特許文献1では、管理OS上でゲストOSを稼動させ、ゲストOSからの指示に基づき、管理OSが物理CPUの電源制御やクロック制御を実施して仮想計算機の低消費電力を抑制しようとするものである。
また、非特許文献2では、ハイパバイザがSEDF(Simple Early Deadline First)/BVT(Borrowed Virtual Timer Scheduler)のようなリアルタイムスケジュール方法によって仮想CPUを物理CPUに割り当てるものである。
特開2006−113767号公報 「VMware ESX Server」、[online]、VMware corp. 発行、[平成19年11月1日検索]、インターネット<URL:http://www.vmware.com/files/jp/pdf/esx_datasheet.pdf> 「Xen 3.0 Datasheet」、[online]、XenSource Inc. 発行、[平成19年11月1日検索]、インターネット<URL:http://www.vmware.com/files/jp/pdf/esx_datasheet.pdf>
上記非特許文献1の従来例では、仮想CPUと物理CPUの管理がホストOS側で実施されるため、ホストOS上の仮想化ソフトウェアによって消費電力を考慮した物理CPUの制御が行えない。さらに、仮想サーバが利用する仮想CPUが、どの物理CPUに割り当てられるかについても、ホストOSのスケジューラに依存することになる。このため、仮想化ソフトウェアによる、仮想CPUと物理CPUの割当て制御による消費電力の低減は困難であるという問題があった。
また、上記非特許文献2の従来例では、ハイパバイザは物理CPUに対する仮想サーバが利用する仮想CPUの割当を制御しているため、消費電力を意識した割当の実施は可能である。しかし、非特許文献2の技術で利用されているリアルタイムスケジュール方法では、仮想サーバからの要求に応じて何時でも物理CPUに仮想CPUを割り当てることを可能にしている。このため、物理CPUは常に稼動状態となっており、実行する命令がない、つまり、仮想CPUが割り当てられていなくても電力を消費しているという問題があった。
さらに、上記特許文献1の従来例では、管理OSによって物理CPUの消費電力を低減する処理を行っているが、本処理の動作の契機はゲストOSからの指示に基づき管理OSが物理CPUの電源およびクロックの制御を行っている。このため、ゲストOSからの指示があるまでは、管理OSは物理CPUに対して消費電力を低減する処理を実行しない。このため、仮想計算機システム全体で消費電力を低減することができないという問題があった。
そこで本発明は、上記問題点に鑑みてなされたもので、仮想計算機システムにおいて、仮想CPUと物理CPUの対応付けを制御することにより、仮想CPUが割り当てられていない物理CPUを計算機システム全体で最適化することで消費電力の低減を図ることを目的とする。
本発明は、スリープ状態と通常の動作状態とを切り替え可能な物理CPUを複数備えた物理計算機と、前記物理計算機を複数の論理区画に分割し、各論理区画上でそれぞれゲストOSを動作させて、各論理区画に対する物理計算機の資源の割当を制御する仮想化制御部と、を備えた仮想計算機システムであって、前記仮想化制御部は、前記論理区画に対する操作指令を受け付ける論理区画制御部と、前記操作指令に基づいて前記論理区画に前記ゲストOSを実行する仮想CPUを割り当てる仮想CPU制御部と、前記操作指令に基づいて前記仮想CPUを前記物理CPUに割り当て、前記物理CPUの動作状態を制御する仮想−物理CPU割当制御部と、前記仮想−物理CPU割当制御部からの操作指令に基づいて前記物理CPUの動作状態を制御する物理CPU制御部と、を含み、前記物理CPUは、動作クロックの周波数を変更するクロック制御部を有し、前記操作指令は、前記論理区画に割り当てられた当該仮想CPUが前記物理CPUを使用する比率としての割り当て率を含み、前記仮想−物理CPU割当制御部は、前記論理区画制御部から仮想CPUを生成する操作指令を受け付けると、前記複数の物理CPUのうち、前記通常動作状態の物理CPUに前記仮想CPUを割り当て可能か否かを判定し、割り当て可能な場合には当該仮想CPUを前記通常動作状態の物理CPUに割り当て、割り当て不能な場合にはスリープ状態の物理CPUを起動する指令を前記物理CPU制御部に発行して、前記仮想CPUを当該起動した物理CPUに割り当て、仮想CPUと物理CPUの割り当て状態と物理CPUの動作状態を管理するテーブルに前記割り当てた仮想CPUを追加して更新し、前記論理区画制御部から仮想CPUを削除する操作指令を受け付けると、当該仮想CPUを前記テーブルから削除し、当該仮想CPUを削除した物理CPUに割り当てられている仮想CPUがなくなった場合には、当該物理CPUをスリープ状態に移行するよう前記物理CPU制御部に指令し、前記物理CPUに対する仮想CPUの割り当てを変更したときには、当該物理CPUに割り当てられている仮想CPUの割り当て率の和に基づいて前記物理CPUの動作クロックの周波数を決定し、当該動作クロックの周波数を前記物理CPU制御部へ指令し、前記物理CPU制御部は前記動作クロックの周波数を前記クロック制御部へ指令する。
また、前記仮想−物理CPU割当制御部は、前記論理区画制御部から仮想CPUを削除する操作指令を受け付けると、当該仮想CPUを前記テーブルから削除した後に、当該テーブルを参照して当該仮想CPUを削除した第1の物理CPUに割り当てられた第2の仮想CPUが存在し、かつ、通常動作状態にある第2の物理CPUに前記第2の仮想CPUを割り当て可能な場合には、前記第2の仮想CPUを前記第2の物理CPUに再割り当てを行い、前記第1の物理CPUに割り当てられている仮想CPUがなくなると、当該第1の物理CPUをスリープ状態に移行させる。
また、前記仮想−物理CPU割当制御部は、前記論理区画制御部から仮想CPUを削除する操作指令を受け付けると、当該仮想CPUを前記テーブルから削除した後に、当該テーブルを参照して当該仮想CPUを削除した第1の物理CPUに割り当てられた第2の仮想CPUが存在するときには、前記稼動状態検出部からの稼働率を取得して、通常動作状態にある第2の物理CPUに割り当てられている仮想CPUの稼働率の和に、前記第2の仮想CPUの稼働率を加算した値が所定の閾値未満であれば、前記第2の仮想CPUを前記第2の物理CPUに再割り当てを行い、前記第1の物理CPUに割り当てられている仮想CPUがなくなると、当該第1の物理CPUをスリープ状態に移行させる。さらに、前記第2の物理CPUに割り当てられている仮想CPUの稼働率の和に、前記第2の仮想CPUの稼働率を加算した値が所定の閾値未満であれば、前記第2の物理CPUに割り当てられている仮想CPUの割り当て率の和に前記第2の仮想CPUの割り当て率を加算した値が100%を超えることを許容する。
したがって、本発明は、論理区画に仮想CPUを割り当てた後に、仮想CPUを削除する際には、仮想CPUを削除した物理CPUに他の仮想CPUが割り当てられていない場合にはこの物理CPUをスリープ状態にして、物理計算機の消費電力を積極的に抑制することが可能となる。
また、仮想CPUを削除した第1の物理CPUに割り当てられている第2の仮想CPUが存在し、かつ、通常動作状態にある第2の物理CPUに前記第2の仮想CPUを割り当て可能な場合には、前記第2の仮想CPUを前記第2の物理CPUに再割り当てを行い、前記第1の物理CPUに割り当てられている仮想CPUがなくなると、当該第1の物理CPUをスリープ状態に移行させることで、積極的にスリープ状態の物理CPUを生成することで、仮想CPUを割り当て最適化して物理計算機の消費電力を低減することができる。
さらに、仮想CPUの稼働率を取得して、前記第2の仮想CPUを前記第2の物理CPUに再割り当てを行う際には、第2の物理CPUに割り当てる仮想CPUの稼働率が閾値未満であれば仮想CPUの割り当て率が100%を超えることを許容するので、さらに効率よく仮想CPUの再配置を行い、スリープ状態の物理CPUの数を最大にして物理計算機の消費電力を低減することができる。
以下、本発明の一実施形態を添付図面に基づいて説明する。
図1は、第1の実施形態を示し、本発明を適用する仮想計算機システムの一例を示すブロック図である。
仮想計算機システムは、ゲストOS(またはアプリケーション:AP)100、110を実行する仮想CPU201、202、211,212が割り当てられた論理区画(Logical PARtition)200,210と、これら複数の論理区画200,210及び仮想CPU201、202、211,212を提供する仮想化ソフトウェア300と、仮想化ソフトウェア300を実行する物理計算機400と、物理計算機400に接続されて仮想化ソフトウェア300に操作指令を送信する管理コンソール500と、を備える。なお、論理区画200,210で稼動するゲストOS100,110が仮想サーバを提供する。
<物理計算機の構成>
物理計算機400は、演算処理を行う物理CPU410、411、412と、データやプログラムを格納するメモリ420と、物理CPU410〜412及びメモリ420へ電力を供給する電源供給部430と、物理CPU410〜412及びメモリ420へクロックを供給するクロック供給部を備える。また、物理計算機400は、図示しないインターフェースを介して接続された管理コンソール500を有し、この管理コンソール500は、表示装置と入力装置を備える。メモリ420には仮想化ソフトウェア300がロードされ、物理CPU410〜412により実行される。
なお、物理計算機400は、図示はしないがストレージ装置やネットワークインターフェースなどのI/O装置を備えることができる。
ここで、物理CPU410〜412は、仮想化ソフトウェア300からの操作指令に応じてクロックと電力を変更可能な省電力機構を備える。例えば、物理CPU410は、図2で示すように、複数のプロセッサコア4101,4102と、データや命令を一時的に格納するキャッシュ4103と、電源供給部430から入力された電力と、クロック供給部440から入力されたクロックをプロセッサコア4101,4102及びキャッシュに供給するクロック・電力制御部4104を備え、このクロック・電力制御部4104が後述するように省電力機構を含む。なお、物理CPU411、412も図2の物理CPU410と同一の構成である。
クロック・電力制御部4104は、仮想化ソフトウェア300から受け付けた指令に基づいて、プロセッサコア4101,4102に供給する電圧とクロックを変更し、プロセッサコア4101,4102の動作モードを動的に変更する。クロック・電力制御部4104の電圧とクロックの変更は、プロセッサコア4101,4102のみに電力とクロックを遮断し、その他の部分に電源供給を継続して再起動可能な状態を維持する動作状態を含む。また、クロック・電力制御部4104は、プロセッサコア4101,4102が通常の稼動状態のときに、プロセッサコア4101,4102の処理能力が最大となる定格クロック及び定格電圧から、プロセッサコア4101,4102の処理能力が最小となる最低クロック及び最低電圧の間で電圧及びクロックを変更し、物理CPU410の処理能力を優先させる動作状態から消費電力を低減させる動作状態の間で動作状態を変更させることができる。 なお、クロック・電力制御部4104は、プロセッサ動作状態コア4101,4102毎にクロック周波数と電圧を変更可能である。
次に、仮想化ソフトウェア300は、物理CPU410〜412のクロック・電力制御部4104に動作モードを設定することで、物理CPU410〜412の動作モードを変更する。ここで、物理CPU410〜412の動作モードは、ACPI(Advanced Configuration and Power Interface Specification)で規定されるプロセッサの動作モードC0〜C3を用いることができる。なお、プロセッサの動作モードC0〜C3は、ACPIのRev3.0で規定されるものである(http://www.acpi.info/spec30a.htm、ADVANCED CONFIGURATION AND POWER INTERFACE SPECIFICATION、Revision 3.0a, December 30, 2005)。プロセッサ(物理CPU410〜412)の動作モードC0〜C3は、次のとおりである。
・C0:動作状態(通常稼動状態)
・C1:アイドル状態(スリープ状態):物理CPUの待機状態で、動作クロックの停止や、HLT命令などによる命令実行の停止状態を示す
・C2:C1よりも低消費電力の状態
・C3:スタンバイ状態(プロセッサコア4101,4102への電源遮断状態。再起動に必要な電力は継続して供給される)
なお、物理CPU410〜412の動作モードは、上記ACPIのC0〜C3に代わって、システムの動作状態を示すS0〜S3を用いても良い。S0〜S3の動作モードは、次のとおりである。
・S0: 動作状態(通常稼動状態)
・S1:スリープ状態。VGA信号はオフ、物理CPUはパワーダウン。
・S2:物理CPUの電源遮断(再起動に必要な電力は継続して供給される)。
・S3 スタンバイ状態。作業内容をメモリに書き込み、メモリへの通電と再起動に必要な電流のみ流れる。
仮想化ソフトウェア300は、物理CPU410〜412のクロック・電力制御部4104に指令を送ることで、物理CPU410〜412の動作モードを、定格の動作クロックの周波数で処理を行う通常モードと、処理の実行を停止するスリープ状態のスリープモードと、処理を実行するが動作クロックの周波数を低下させる低消費電力モードの何れかに変更することができる。
<仮想化ソフトウェアの構成>
図1において、仮想化ソフトウェア300は、例えば、ハイパバイザなどホストOSを利用しないソフトウェアで構成されており、物理計算機400の計算機資源を複数の論理区画200(LPAR#1)、210(LPAR#2)に分割するLPAR制御部310と、論理区画200,210に物理CPU410〜412を仮想化した仮想CPU201,202,211,212を割り当てる仮想CPU制御部320と、物理CPU410〜412を制御する物理CPU制御部330と、仮想CPUと物理CPUの割り当て状況を管理する仮想−物理CPU割当制御部340とを含む。この仮想化ソフトウェア300は、メモリ420にロードされて物理CPU410〜412により実行される。また、仮想化ソフトウェア300は、図示しないストレージ装置や不揮発性メモリ等の記憶媒体に格納される。
LPAR制御部310は、システム管理者等が操作する管理コンソール500からの操作指令に応じて論理区画200,210の生成や不要になった論理区画の削除を行う。LPAR制御部310は、管理コンソール500からの操作指令に応じて論理区画に対して物理計算機400の計算機資源を割り当てる。管理コンソール500から設定する計算機資源としては、メモリ420の割当量(アドレス範囲など)と仮想CPU及びI/O装置を各論理区画200、210毎に設定する。なお、LPAR制御部310が、物理計算機400の計算機資源を割り当てる手法については、公知の手法を用いることができる。
LPAR制御部310では、生成した論理区画200,210に仮想CPUを割り当てて、論理区画200,210のそれぞれでゲストOS100、110を動作させ、各ゲストOS100,110上でそれぞれアプリケーション(AP)を動作させる。
仮想CPU制御部320は、LPAR制御部310から要求された仮想CPUの生成と削除(論理区画の生成と削除に対応)と、仮想CPUの稼動状態の管理を行う。このため、仮想CPU制御部320は、論理区画200,210と仮想CPU201〜212の対応関係を保持する論理区画対応表342を備えている。
仮想CPU制御部320では、LPAR制御部310から仮想CPUの生成を受け付けた場合は、当該仮想CPUの割り当て先となる物理CPUの決定を仮想−物理CPU割当制御部340に仮想CPUの生成を指令し、仮想CPUの生成が完了した通知を受けると論理区画対応表342に仮想CPUを割り当てた論理区画の情報を更新する。
また、仮想CPU制御部320がLPAR制御部310から仮想CPUの削除を受け付けた場合は、当該仮想OPUの割り当て先である物理CPUと、当該消滅対象の仮想CPUの対応関係を削除するよう仮想−物理CPU割当制御部340に指令し、このとき、仮想−物理CPU割当制御部340は、当該物理CPUに割り当てられている仮想CPUがなくなる場合には、物理CPU制御部330へ当該物理CPUの動作モードを省電力モードへ移行するように指令する。さらに、仮想CPU制御部は、削除した仮想CPUを論理区画対応表342から削除する。なお、物理CPUの動作モード及び省電力モードについては後述する。
さらに、仮想CPU制御部320は、各論理区画200,210に割り当てられた仮想CPU201,202,211,212の稼動状態(割当状態)を監視して論理区画対応表342を更新し、取得した稼動状態を仮想−物理CPU割当制御部340へ通知する。
物理CPU制御部330は、物理CPU410〜412の稼動状態(動作モード)を監視して、仮想−物理CPU割当制御部340からの要求に応じて物理CPU410〜412の動作モードを制御する。物理CPU制御部330は、物理CPU410〜412に対して仮想CPUが割り当てられていない場合には、該当する物理CPUの動作モードを省電力モードに変更する。また、仮想−物理CPU割当制御部340から物理CPU410〜412に新たに仮想CPUを割り当てる場合、該当する物理CPU410〜412が省電力モードの場合には、当該物理CPUの動作モードを稼動状態へ移行させる。
仮想−物理CPU割当制御部340は、仮想CPU制御部320からの要求に応じて物理CPU410〜412に対する仮想CPUの割当状況を動的に管理する。このため、仮想−物理CPU割当制御部340は、仮想CPU201,202,211,212と物理CPU410〜412の対応関係を設定した仮想−物理CPU割当表431を保持する。
仮想−物理CPU割当制御部340は、仮想CPU制御部320から仮想CPUの稼動状態を取得し、物理CPU制御部330から物理CPU410〜412の稼動状態を取得し、仮想CPU制御部320からの要求と、仮想CPUの稼動状態の変化に応じて、物理CPU410〜412に対する仮想CPUの割り当てを動的に変更する。このため、仮想−物理CPU割当制御部340は、物理CPU410〜412に割り当てた仮想CPUを管理する仮想−物理CPU割当表341を備える。
本第1の実施形態においては、仮想−物理CPU割当制御部340は、仮想CPU制御部320からの要求と、仮想CPU201,202,211,212の割当率に基づいて物理CPU410〜412に対する仮想CPUの割り当てを動的に変更し、物理CPU410〜412の動作モードを動的に変更する例を示す。
<仮想CPUの割り当て>
次に、仮想化ソフトウェア300が行う仮想CPUの割り当てについて説明する。仮想化ソフトウェア300が物理計算機400の計算機資源を各論理区画200,210に割当てる方法は、専用割当と共用割当の二種類ある。
専用割当は、特定の計算機資源を特定の論理区画に専用的に割当てる方法である。計算機資源のうち、メモリ420(主記憶)とI/O装置は共用割当される。
なお、物理CPU410〜412を専用割当にすることもできる。物理CPU410〜412の専用割当の場合、ある論理区画に対して専用割当する物理CPU410〜412の数をそのLPARに対するCPUの割当量と呼ぶ。
一方、共用割当は、計算機資源を各論理区画に少しづつ時分割によって割り当てる。共有割当では、ある論理区画の仮想CPUに対して物理CPU410〜412を割当てている時間の、全LPARにCPUを割当てている時間に対する割合を、仮想CPUの割当率と呼ぶ(%で表す。値は0〜100の間)。
仮想化ソフトウェア300の仮想−物理CPU割当制御部340が管理する仮想−物理CPU割当表341は、図3で示すように、物理CPU410〜412のそれぞれについて割り当てられている仮想CPUの識別子と割り当て率が格納される。
図3において、仮想−物理CPU割当表341は、物理CPU410〜412の識別子を格納する物理CPU番号3410と、物理CPU番号3410で特定される物理CPUの動作状態を格納する動作状態3411と、複数の仮想CPUの情報を格納する仮想CPUリストから1つのエントリが構成される。仮想CPUリストは、物理CPU番号3410で特定される物理CPUに割り当てられている仮想CPUの識別子を格納する仮想CPU番号3412と、仮想CPU番号3412で特定される仮想CPUの割り当て率を格納する割り当て率3413で構成され、仮想CPUの数に応じて仮想CPU番号3412と割り当て率3413が繰り返して格納される。
例えば、図3の物理CPU番号3410=1のエントリには、物理CPUの動作状態3411が通常の稼動状態(例えば、クロック周波数及び供給電圧が定格)であることが示されており、この物理CPUには、仮想CPU番号が1の仮想CPUが割り当て率40%で割り当てられ、さらに、仮想CPU番号が3の仮想CPUが割り当て率20%で割り当てられていることを示す。この物理CPU番号=1の物理CPUは、残りの40%の割り当て率で仮想CPUを割り当てることが可能であることを示している。仮想CPUリストには、当該物理CPU番号3410に割り当てられた仮想CPUの数に応じた仮想CPU番号3412と割り当て率3413がペアで格納される。
なお、図3と図1との対応関係は、物理CPU410〜412が物理CPU番号=1〜3に対応し、仮想CPU201,202,211,212が、仮想CPU番号=1〜4に対応する。
また、本第1実施形態では、物理CPUの動作状態3411は、定格で動作する「通常」と、低消費電力状態である「スリープ」の何れかに設定され、「スリープ」は上記ACPIで定義されるC1以上(C1〜C3)またはS1以上(S1〜S3)の状態であればよい。なお、以下の説明においても、スリープ状態は上記ACPIのプロセッサの動作モードC1〜C3(またはS1〜S3)を指すものである。
仮想CPU制御部320が管理する論理区画対応表342は、図4で示すように構成される。図4において、論理区画対応表342は、論理区画の識別子を格納する論理区画番号3420と、論理区画番号3420で特定される論理区画に割り当てられている仮想CPUの識別子を格納する仮想CPUリストから構成される。仮想CPUリストは、論理区画番号3420で特定され論理区画に割り当てられている仮想CPUの識別子を格納する仮想CPU番号3421で構成され、ひとつの論理区画に複数の仮想CPUが割り当てられている場合には、仮想CPU番号3421も複数設定される。図示の例では、論理区画番号3402=1の論理区画201には、2つの仮想CPU#1と#2が割り当てられ、論理区画番号3402=2の論理区画210には、2つの仮想CPU#3と#4が割り当てられている状態を示している。
<仮想化ソフトウェアの動作>
次に、仮想化ソフトウェア300で行われる処理の一例について、以下に説明する。図5は、仮想化ソフトウェア300で行われる仮想サーバ(または仮想CPU)を生成する処理の一例を示すフローチャートである。このフローチャートは、仮想化ソフトウェア300が管理コンソール500から指定された論理区画200,210に仮想サーバ(または仮想CPU)を生成する操作指令を受け付けたときに実行される処理である。なお、この処理を実行する以前に、管理コンソール500からの操作指令によって既に仮想化ソフトウェア300が論理区画201,202を設定したものとする。
仮想化ソフトウェア300は、管理コンソール500から仮想サーバ(または仮想CPU)を生成する論理区画と仮想CPUの数と割り当て率を受け付けると、ステップS1で仮想−物理CPU割当表341を参照し、仮想CPUを実行可能な動作状態の物理CPU410〜412を参照する。ステップS2では、上記ステップS1で取得した動作状態3411が「通常」となっている物理CPU410〜412が存在するか否かを判定する。動作状態3411が「通常」の物理CPUが存在すればステップS3へ進み、存在しなければステップS6に進む。
次に、ステップS3では、動作状態3411が「通常」の物理CPUの中から、管理コンソール500から要求された仮想CPUを割り当て可能であるか否かを判定する。この判定は、動作状態3411が「通常」となっている物理CPUのうち、ひとつの物理CPUに割り当てられている仮想CPUの割り当て率の総和を100%から差し引いた値が、生成する仮想CPUの割り当て率以上であれば、管理コンソール500から要求された仮想CPUを当該物理CPUで割り当て可能と判定してステップS4に進む。一方、当該物理CPUに割り当てられている仮想CPUの割り当て率の総和を100%から差し引いた値が、生成する仮想CPUの割り当て率未満であれば、管理コンソール500から要求された仮想CPUを当該物理CPUに割り当て不能と判定してステップS5に進む。ステップS5では、要求された仮想CPUを割り当てる対象の物理CPUを他の物理CPUに切り替えてからステップS2に戻り、再度仮想CPUを割り当て可能な物理CPUを判定する。なお、ステップS5〜S2のループは、仮想−物理CPU割当表341のエントリ毎に順次判定を行うようにすればよい。
ステップS4では、ステップS3で選択した物理CPUに管理コンソール500から要求された仮想CPUを割指定された論理区画に割り当てて、論理区画対応表342の該当する論理区画に仮想CPUの識別子を書き込む。そして、仮想化ソフトウェア300は、仮想−物理CPU割当表341の該当物理CPUのエントリに、新たに割り当てる仮想CPUの番号と割り当て率を書き込んで更新してから、新たな仮想CPUを起動する。
一方、上記ステップS2の判定で、動作状態3411が「通常」で、かつ新たな仮想CPUを割り当て可能な物理CPUがない場合のステップS6では、仮想−物理CPU割当表341を参照して動作状態3411が「スリープ」となっている物理CPUがあるか否かを判定する。動作状態3411が「スリープ」の物理CPUがある場合には、ステップS7へ進んで、当該物理CPUの動作状態3411を「通常」に変更して起動する。そして、当該起動した物理CPUを仮想CPUを割り当てる対象としてステップS4に進み、上記と同様に割り当てを実施する。
上記ステップS6の判定で、動作状態3411が「スリープ」の物理CPUがない場合には、仮想CPUを割り当てる物理CPUが存在しないため、仮想化ソフトウェア300は管理コンソール500に対して新たな仮想CPUを割り当てる計算機資源が不足したことを示す警告を通知する。
以上の処理により、管理コンソール500から新たな仮想CPUの生成要求があると、仮想化ソフトウェア300は、まず、動作状態3411が「通常」の稼動中の物理CPUから割当先を探索し、稼動中の物理CPUに仮想CPUを割り当てることができないときにのみ動作状態3411が「スリープ」の物理CPUを起動して新たな仮想CPUを割り当てる。これにより、仮想CPUを割り当てるのに必要最小限の物理CPUのみを「通常」の動作状態3411で稼動させて、動作状態3411が「スリープ」の物理CPUを再起動させるのを極力抑制することで、物理計算機400の消費電力が増大するのを抑制できる。
図6は、仮想化ソフトウェア300が管理コンソール500から、指定された仮想サーバ(または仮想CPU)を削除する操作指令を受け付けたときに実行される処理の一例を示すフローチャートである。
仮想化ソフトウェア300は、管理コンソール500から仮想サーバ(または仮想CPU)を削除する仮想CPUの識別子を受け付けると、ステップS11で仮想−物理CPU割当表341を参照し、指定された仮想CPUを実行している物理CPUのエントリから該当する仮想CPUの識別子と割当率を削除する。また、仮想化ソフトウェア300は、論理区画対応表342を参照し、管理コンソール500から指定された仮想CPUの識別子があれば当該識別子を削除する。
ステップS12では、上記ステップS11で仮想CPUの識別子と割当率を削除した物理CPUのエントリで、割り当てられている仮想CPUがあるか否かを判定する。仮想CPUが存在する場合には処理を終了し、割り当てられている仮想CPUが存在しなければステップS13に進む。
ステップS13では、ステップS11で仮想CPUの識別子を削除した物理CPUの動作状態をスリープ状態とするよう物理CPU制御部330に指令してから処理を終了する。
以上の処理により、仮想CPUの削除時には、仮想CPUの割り当てがなくなった物理CPUをスリープ状態にして物理計算機400の消費電力を低減することができる。
このように、本発明の第1の実施形態によれば、サーバの仮想化を行う仮想計算機システムにおいて、仮想CPUと物理CPUの対応付けを制御して、仮想CPUが割り当てられていない物理CPUをスリープ状態へ移行させることで、仮想計算機システム全体の消費電力の低減を図ることができる。
なお、上記第1実施形態では、マルチコアの物理CPU410〜412に仮想CPUを割り当てる際に、物理CPU毎に仮想CPUを割り当てる例を示したが、プロセッサコア毎に仮想CPUを割り当ててもよい。
<第2実施形態>
図7〜図9は第2の実施形態を示し、前記第1実施形態に示した物理CPU制御部330が物理CPU410〜412の動作クロックを制御し、さらに、仮想−物理CPU割当制御部340が、仮想CPUを削除する際に、スリープ状態の物理CPUの数を最大にするよう仮想CPUの割り当てを制御するものである。物理計算機400の構成は前記第1実施形態と同様であり、仮想化ソフトウェア300は、仮想−物理CPU割当制御部340と物理CPU制御部330の機能の一部が前記第1実施形態と異なり、仮想−物理CPU割当表341Aの構成の一部が前記第1実施形態と異なる。
図7は、仮想−物理CPU割当制御部340が管理する仮想−物理CPU割当表341Aの構成を示す説明図である。本第2実施形態の仮想−物理CPU割当表341Aは、前記第1実施形態の図3に示した仮想−物理CPU割当表341に物理CPU410〜412の動作クロックの周波数を格納する動作周波数3414を加えたもので、その他は前記第1実施形態と同様である。動作周波数3414は、物理CPU410〜412の定格動作時のクロック周波数に対する実際に設定された動作クロックの周波数の比率を百分率で表した値である。
物理CPU410〜412は、前記第1実施形態の図2で示したように、クロック供給部440から供給されたクロックを制御するクロック・電力制御部4104を備えて、動作クロックの周波数を変更可能に構成される。物理CPU410〜412の動作クロック周波数の変更は、物理CPU割当制御部340が物理CPU410〜412のクロック・電力制御部4104に指示する周波数の値を変更することで実現される。
また、図2において、プロセッサコア4101,4102毎に動作クロックの周波数を独立して制御する場合には、仮想−物理CPU割当表341Aのエントリを物理CPU410〜412のプロセッサコア毎に設けてもよい。
次に、仮想−物理CPU割当制御部340は、物理CPU410〜412に仮想−物理CPUを割り当てる際に、仮想CPUの割り当て率に応じて動作クロックの周波数を設定し、物理CPU制御部330に動作クロックの周波数を指令する。この動作クロックの周波数の設定は、例えば、物理CPU410〜412に割り当てられている仮想CPUの割り当て率の合計値を動作周波数3414として設定することができる。つまり、図7において、物理CPU番号3410が「1」のエントリでは、仮想CPU#1の割り当て率3413が40%で、仮想CPU#3の割り当て率3413が20%の場合、割り当て率3413の合計値である60%を物理CPU#1の動作周波数3414とすればよい。さらに、物理CPU410〜412の動作クロックの周波数を変更する条件として、当該物理CPUに割り当てられている仮想CPUの割り当て率3413の合計値が所定の第1の閾値(例えば、90%)未満であれば、動作クロックの周波数を変更することができる。なお、第1の閾値の値は、ゲストOS100,110や、アプリケーションの特性などに応じて適宜設定すればよい。
また、仮想−物理CPU割当制御部340は、後述するように、仮想CPUを削除する際には、スリープ状態となる物理CPU410〜412の数が最大となるよう、仮想CPUの割り当てを変更し、物理計算機400の消費電力が最小となるよう仮想CPUの割り当てを最適化する。
図8は、仮想化ソフトウェア300で行われる仮想サーバ(または仮想CPU)を生成する処理の一例を示すフローチャートである。このフローチャートは、前記第1実施形態の図5と同様に、仮想化ソフトウェア300が管理コンソール500から指定された論理区画200,210に仮想サーバ(または仮想CPU)を生成する操作指令を受け付けたときに実行される処理である。なお、この処理を実行する以前に、管理コンソール500からの操作指令によって既に仮想化ソフトウェア300が論理区画201,202を設定したものとする。なお、前記第1実施形態の図5と同様の処理については、同一の符号を付した。
本第2実施形態の図8は、前記第1実施形態の図5に示したステップS3とS4の間に、物理CPU410〜412の動作クロックの周波数を変更するステップS21とステップS22を加えたものであり、その他の構成は前記図5と同様である。
管理コンソール500から新たな仮想CPUの生成要求があると、仮想化ソフトウェア300は、まず、ステップS1〜S3で、仮想−物理CPU割当表341Aを参照して動作状態3411が「通常」の稼動中の物理CPUから割当先を探索し、稼動中の物理CPUに仮想CPUを割り当てることができないときにのみステップS6、S7で動作状態3411が「スリープ」の物理CPUを起動して新たな仮想CPUを割り当てる。また、スリープ状態の物理CPUがない場合にはステップS8で警告を通知する。
ステップS3またはステップS7で指定された仮想CPUを割り当てる物理CPU410〜412が決定すると、ステップS21に進んで当該物理CPU410〜412の動作クロックの周波数を変更するか否かを判定する。すなわち、仮想化ソフトウェア300は、仮想−物理CPU割当表341Aを参照し、選択した物理CPUに既に割り当てられている仮想CPUの割り当て率3413の合計と、管理コンソール500から指令された新たな仮想CPUの割り当て率との和が所定の第1の閾値(例えば、90%)未満であるか否かを判定する。前記和の値が第1の閾値未満であれば物理CPU410〜412の動作クロックの周波数の変更を実施すると判定してステップS22へ進む。一方、前記和の値が第1の閾値以上であれば物理CPU410〜412の動作クロックの周波数を変更しないと判定してステップS4へ進む。
ステップS22では、上述したように、対象の物理CPUに割り当てる仮想CPUの割り当て率の合計値を当該物理CPUの動作クロックの周波数の定格時に対する比率として設定する。そして、仮想化ソフトウェア300は、この周波数の比率に対応する周波数となるよう物理CPUに動作クロックの周波数を変更するよう指令する。これにより、物理CPUへ新たに仮想CPUを割り当てると、割り当て率の和の増加に応じて動作クロックの周波数を増加させることができ、仮想CPUの実行に必要な最小限の消費電力で物理CPUを動作させることが可能となって、物理計算機400の消費電力を抑制することができる。
そして、ステップS4では、上記ステップS3またはS7で選択した物理CPUに対応する仮想−物理CPU割当表341Aのエントリに、新たに割り当てた仮想CPUの識別子と割り当て率を仮想CPU番号3412と割り当て率3413に書き込み、ステップS22で設定した動作クロックの周波数の比率を動作周波数3414に格納して処理を終了する。
以上の処理により、仮想CPUの生成時には、物理CPU410〜412にそれぞれ割り当てられている仮想CPUの割り当て率等に応じて物理CPU410〜412の動作クロックの周波数を変更することができ、物理計算機400の消費電力をさらに抑制することが可能となる。
次に、図9は、仮想化ソフトウェア300が管理コンソール500から、指定された仮想サーバ(または仮想CPU)を削除する操作指令を受け付けたときに実行される処理の一例を示すフローチャートである。この処理は、前記第1実施形態の図6に示したフローチャートにステップS31〜S33の処理を追加したもので、ステップS11〜S13は前記第1実施形態の図6と同様である。
ステップS11〜S13の処理では、前記第1実施形態の図6と同様にして、仮想CPUの削除時には、仮想CPUの割り当てがなくなった物理CPUをスリープ状態にして物理計算機400の消費電力を低減する。
さらに、ステップS12の判定で管理コンソール500から指令された仮想CPUを削除した物理CPUに、他の仮想CPUが割り当てられている場合にはステップS31へ進む。
ステップS31では、仮想−物理CPU割当表341Aを参照して、動作状態3411が「通常」となっている稼動中の物理CPUが他にあるか否かを判定する。他の物理CPUが通常の動作状態で稼働中であればステップS32へ進み、他に通常の動作状態の物理CPU410〜412がなければそのまま処理を終了する。なお、動作状態3411が「通常」とは、前記第1実施形態では物理CPU410〜412が定格で動作している状態を示したが、本第2実施形態では、動作クロックの周波数を変更して仮想CPUを実行している状態も「通常」に含む。
次に、ステップS32では、仮想CPUを削除した現在の物理CPUに割り当てられている残りの全ての仮想CPUを割り当て可能な物理CPUがあるか否かを、仮想−物理CPU割当表341を参照して判定する。つまり、仮想CPUを削除した物理CPUに残っている全ての仮想CPUの割り当て率の和と、他の物理CPUに割り当てられている仮想CPUの割り当て率の和を加算した値が100%以下である物理CPUがあれば、この物理CPUを、仮想CPUの移動対象として選択し、ステップS33の処理へ進む。一方、前記加算した値が100%を超えた場合には仮想CPUの移動ができないので、そのまま処理を終了する。
ステップS33では、仮想CPUを削除した物理CPUの仮想CPUを、ステップS32で選択した物理CPUに割り当て先を移動して、仮想−物理CPU割当表341を更新する。さらに、仮想CPUの移動によって、割り当てられていた仮想CPUがなくなった物理CPUをスリープ状態に設定し、仮想−物理CPU割当表341を更新してから処理を終了する。
以上の処理により、仮想CPUの削除によって割り当てられている仮想CPUがなくなった物理CPUがスリープ状態に移行するのに加え、仮想CPUを削除した物理CPUに割り当てられている残りの仮想CPUを他の物理CPUで割り当て可能な場合には、これらの残っている仮想CPUを、他の物理CPUへ移動させて割り当て先を変更する。そして、仮想CPUの移動によって割り当てられている仮想CPUがなくなった物理CPUをスリープ状態に移行させることで、物理計算機400で全体の仮想CPUを実行するのに必要な最小限の物理CPUのみを通常の動作状態で稼動させ、他の物理CPUをスリープ状態に移行させることで、スリープ状態の物理CPUの数を最大にして物理計算機400の消費電力を大幅に低減できるように仮想CPUの割り当て状態を最適化することができるのである。
例えば、図7に示した仮想−物理CPU割当表341を、物理CPUと仮想CPUの割り当て率で表現すると図10のようになる。図10では、物理CPU#3(412)に割り当てられている仮想CPU#4(212)を削除する場合を示しており、図中上段が削除前を示し、下段が削除後の状態を示す。
物理CPU#1に割り当てられている仮想CPU#1、#3の割り当て率はそれぞれ40%、20%であり、物理CPU#3に割り当てられている仮想CPU#4、#2の割り当て率はそれぞれ20%、40%である。また、物理CPU#2は、スリープ状態となっている。
ここで、物理CPU#3の仮想CPU#2を削除すると、物理CPU#3に残った仮想CPUは割り当て率が20%の仮想CPU#4のみとなる。ここで、割り当て率=20%の仮想CPU#4を割り当て可能な物理CPUを仮想−物理CPU割当表341から検索すると、全仮想CPUの割り当て率=60%の物理CPU#1に、仮想CPU#3の割り当て率=20%を加算した値は80%となり、所定の閾値未満である90%以下であるので、仮想CPU#3を物理CPU#1へ移動することができる。なお、本実施形態では、動作クロックの周波数を変更する閾値を、仮想CPUの割り当て率3413の合計値を判定する閾値として代用したが、これらの閾値を独立して設定してもよい。
仮想化ソフトウェア300は、物理CPU#3の仮想CPU#3を物理CPU#1に移動して割り当て先を変更する。そして、割り当てられている仮想CPUのなくなった物理CPU#3をスリープ状態にする。
以上のように、仮想CPUの削除時には、仮想CPUを削除した物理CPU上に残った仮想CPUの割り当て率の和と、通常の動作状態の他の物理CPUの割り当て率の和とを加算した値が、所定の閾値未満となる物理CPUを順次検索し、2つの物理CPU上の仮想CPUの割り当て率の和が所定の閾値未満であれば、ひとつの物理CPUに仮想CPUを再配置することで、仮想CPUを割り当てない物理CPUを生成してスリープ状態に移行させ、物理計算機400の消費電力を低減させることができる。
さらに、物理CPUに割り当てる仮想CPUの割り当て状態が変更されたときには、物理CPUに割り当てられている仮想CPUの割り当て率の和に応じて動作クロックの周波数を増減するので、物理計算機400の消費電力を最小限に抑制することが可能となる。
なお、上記第2実施形態において、仮想化ソフトウェア300は仮想CPUの削除の指示を受け付けたときに、物理CPUに対する仮想CPUの割り当てを変更する例を示したが、仮想CPUの作成時や所定の周期で物理CPU毎の割り当て状態を監視して、上記図9のステップS12〜S33を実行するようにしてもよい。
なお、上記では物理CPU410〜412の動作クロックの周波数を変更する例を示したが、物理CPU410〜412のクロック・電力制御部4104に電圧を変更するように指令しても良く、例えば、動作クロックの周波数を低下させる場合には、プロセッサコア4101,4102に供給する電圧も低下するように指令することができる。なお、動作クロックの周波数と供給電圧を変更する手法は、公知または周知の手法を用いればよい。
<第3実施形態>
図11は第3の実施形態を示し、前記第2実施形態の図9に示した仮想化ソフトウェア300が行う仮想CPUの削除処理フローチャートの一部を変更したもので、その他の構成は、前記第2実施形態と同様である。
図11のフローチャートは、図9のフローチャートに示したステップS32とステップS33の間に、物理CPU410〜412の動作クロックの周波数を変更するステップS40を加えたものである。
ステップS40では、前記第2実施形態の図8のステップS21及びS22で示したように、現在着目している物理CPU410〜412の動作クロックを変更できるか否かを判定し、変更可能な場合には新たな割り当て時に応じて動作クロックの周波数を変更するものである。
すなわち、図10において、物理CPU#3に割り当てられている仮想CPU#4を削除し、この物理CPU#3に割り当てられている仮想CPU#3を物理CPU#1へ移動した場合、物理CPU#1の動作クロックの周波数を、新たな割り当て率の和に応じて変更するものである。そして、前記第2実施形態と同様に、仮想CPUの割り当て率の和と閾値(例えば、90%)を比較して、割り当て率の和が閾値未満であれば和の値に応じた動作クロックの周波数に設定することができる。
これにより、仮想CPUを纏めた物理CPUの動作クロックの周波数を割り当て率の和に応じて低減することで、物理計算機400の処理能力を確保しながら消費電力の増大を抑制することができる。
また、上記物理CPU410〜412の動作クロックの周波数の変更は、前記第1実施形態の図6に示した仮想CPUの削除時に適用しても良い。この場合、図12のように、ステップS12の判定処理がYesの場合にステップS41を実行させる。
ステップS41では、上記図11のステップS40と同様に、現在着目している物理CPU410〜412の動作クロックを変更できるか否かを判定し、変更可能な場合には新たな割り当て時に応じて動作クロックの周波数を変更するものである。すなわち、仮想CPUを削除した物理CPUに残っている仮想CPUの割り当て率の和に応じて動作クロックの周波数を変更する。このとき、仮想CPUの割り当て率の和と所定の閾値を比較し、割り当て率の和が閾値未満のときに動作クロックの周波数の変更を行うようにしても良い。
これにより、仮想CPUを実行するのに必要な動作クロックの周波数を設定でき、物理計算機400の消費電力をさらに低減できるのである。
<第4実施形態>
図13は、第4の実施形態を示し、前記第1実施形態のゲストOS100、110上で、ゲストOS毎の仮想CPUの使用率(以下、稼働率とする)を監視して仮想化ソフトウェア300へ通知する稼働率監視ミドルウェア500,510を実行し、仮想化ソフトウェア300の仮想−物理CPU割当制御部340では、仮想CPUの稼働率に応じて物理CPUに対する仮想CPUの割り当てを制御する。
仮想−物理CPU割当制御部340は、図14で示すように、前記第1実施形態の図3に示した仮想−物理CPU割当表に稼働率3415と実使用率3416を加えた仮想−物理CPU割当表341Bを管理する。
ここで、仮想−物理CPU割当制御部340は、仮想−物理CPU割当表341Bの稼働率3415に、各ゲストOS100,110が利用している各仮想CPUの稼働率を格納する。また、仮想−物理CPU割当制御部340は、仮想−物理CPU割当表341Bの実使用率3416には、各仮想CPUの割り当て率に稼働率を乗じた値を、各仮想CPUが実際に利用している物理CPUの利用率を格納する。
仮想CPUを割り当てる際には、前記第1実施形態と同様に、管理コンソール500からの操作指令に応じた論理区画200,210に仮想CPUを割り当てる。仮想CPUを割り当てた論理区画200、210ではゲストOS100,110がそれぞれ起動し、さらに、稼働率監視ミドルウェア500、510が起動して所定の周期などでゲストOS100,110が使用する各仮想CPUの稼働率を仮想化ソフトウェア300へ通知する。
仮想化ソフトウェア300は、管理コンソール500から指定された仮想CPUを削除の操作指令を受け付けると、図15に示すフローチャートを実行し、不要な物理CPU410〜412をスリープ状態に移行させ、さらに、各仮想CPUの稼働率に応じて仮想CPUを再配置する。
図15のフローチャートは、前記第2実施形態の図9に示した処理のうち、ステップS32の処理を新たなステップS50,S51に置き換えたものであり、その他の構成は前記第2実施形態と同様である。ステップS11、S12では、上述のとおり指定された仮想CPUを削除し、仮想−物理CPU割当表341Bを更新する。そして、仮想CPUを削除した物理CPUに他の仮想CPUが残っていれば、ステップS31で当該物理CPUの他に通常の動作状態の物理CPUがあるかを判定する。他の物理CPUが通常の動作状態であれば、ステップS50に進んで、物理計算機400で稼動中の仮想CPUの稼働率を取得する。
ステップS50では、稼働率監視ミドルウェア500、510が通知した仮想CPUの稼働率のうち最新の値を取得するか、または各仮想CPU毎の稼働率の平均値を演算する。そして、仮想化ソフトウェア300は、取得した各仮想CPUの割り当て率を仮想−物理CPU割当表341Bの稼働率3415に書き込んで更新する。さらに、仮想化ソフトウェア300は、仮想−物理CPU割当表341Bの割り当て率3413に稼働率3415を乗じた値を各仮想CPUが実際に利用している物理CPUの使用率3416として求め、この値を実使用率3416に書き込んで更新する。
次に、ステップS51では、仮想CPUを削除した現在の物理CPUに割り当てられている残りの全ての仮想CPUを割り当て可能な物理CPUがあるか否かを、仮想−物理CPU割当表341Bを参照して判定する。つまり、仮想CPUを削除した物理CPUに残っている全ての仮想CPUの実使用率3416の和と、他の物理CPUに割り当てられている仮想CPUの実使用率3416の和を加算した値が所定の第2の閾値(例えば、100%)以下である物理CPUがあれば、この物理CPUを、仮想CPUの移動対象として選択し、ステップS33の処理へ進む。一方、前記加算した値が第2の閾値を超えた場合には仮想CPUの移動ができないので、そのまま処理を終了する。
ステップS33では、仮想CPUを削除した物理CPUの仮想CPUを、ステップS51で選択した物理CPUに割り当て先を移動して、仮想−物理CPU割当表341Bを更新する。さらに、仮想CPUの移動によって、割り当てられていた仮想CPUがなくなった物理CPUをスリープ状態に設定し、仮想−物理CPU割当表341Bを更新してから処理を終了する。
以上の処理を図14の仮想−物理CPU割当表341Bに示した仮想CPU#4を削除する例を、図16に示す。
図16は、図14の仮想−物理CPU割当表341Bから仮想CPU#2を削除した状態を図中上部の割当変更前に示し、仮想CPUの割り当て変更後の状態を図中下部に示し、図中斜線の部分が仮想CPUの実使用率3416を示す。
物理CPU#1には、仮想CPU#1,#3がそれぞれ50%と30%の割り当て率で割り当てられており、物理CPU#3には仮想CPU#4が40%の割り当て率で割り当てられている。なお、物理CPU#2はスリープ状態である。
仮想化ソフトウェア300は、各仮想CPUの稼働率3415を稼働率監視ミドルウェア500から取得し、仮想−物理CPU割当表341Bの割り当て率3413に稼働率3415を乗じた値の百分立を物理CPUの実使用率3416として求める。この結果、実使用率3416は、仮想CPU#1が25%、仮想CPU#3が9%、仮想CPU#4が8%となる。仮想化ソフトウェア300は、今回、仮想CPUを削除した物理CPU#3の仮想CPUの実使用率3416の合計値と、他の物理CPUのうち通常の動作状態のものをひとつ選択して、この物理CPU(この例では、物理CPU#1)の実使用率3416の合計値を求める。ここで、物理CPU#1を選択すると、仮想CPU#1と仮想CPU#3の実使用率3416の和=34%に、仮想CPUを削除した物理CPU#3の実使用率3416の和=8%を加算した値=42%が第2の閾値(例えば、100%)未満であるか否かを判定する。
この例では、選択した物理CPU#1と物理CPU#3の実使用率3416の和は、42%となって第2の閾値未満であるので、仮想化ソフトウェア300は物理CPU#3の仮想CPU#4を物理CPU#1へ移動可能と判定する。そして、仮想化ソフトウェア300は、仮想−物理CPU割当表341Bを図17で示すように更新し、物理CPU#3のエントリを仮想CPUの割り当てなしに更新し、物理CPU#1のエントリに仮想CPU#4の識別子と割り当て率3413、稼働率3415、実使用率3416を書き込んで更新する。この後、仮想化ソフトウェア300は、物理CPU#3をスリープ状態に移行させて処理を終了する。
上記仮想CPUの再配置の結果、図16の下部に示すように、物理CPU#1には3つの仮想CPU#1,#3、#4が割り当てられて、割り当て率3413の和は120%となって、物理CPU#1のリソースの最大値を示す100%を超えているが、各仮想CPUの実使用率3416の和は100%未満の42%であるので、物理CPU#1は各仮想CPUを円滑に実行できる。
このように、仮想CPUを削除して仮想CPUの再配置を行う際に、仮想CPUが実際に利用している物理CPUの実使用率3416を、稼働率監視ミドルウェア500から取得した値に基づいて求め、2つの物理CPU上の仮想CPUの実使用率3416の和が第2の閾値未満であれば、ひとつの物理CPUに仮想CPUを再配置することで、仮想CPUを割り当てない物理CPUを生成してスリープ状態に移行させ、物理計算機400の消費電力を低減させることができる。
さらに、論理区画200,210では各ゲストOS100,110上で稼働率監視ミドルウェア500,510を稼動させて仮想化ソフトウェア300へ各ゲストOS100,110の仮想CPUの使用率を通知するようにしたので、既存のOSをそのままゲストOS100,110として利用しながら仮想化ソフトウェア300では仮想CPUの稼働率に応じた割り当て制御が可能となる。
なお、上記では第2の閾値を100%とした例を示したが、各ゲストOS100,110の負荷変動を考慮した場合、第2の閾値を80%などの100%未満の値に設定することで、負荷変動による実使用率の急増に対応することができる。
また、通常の動作状態の物理CPUが複数ある場合に、仮想化ソフトウェア300は、上記ステップS51の処理で、仮想CPUを削除した物理CPUの実使用率を、他の物理CPUの実使用率と順次比較し、第2の閾値未満となる物理CPUを検索すればよい。
なお、上記各実施形態では、物理CPU410〜412として複数のプロセッサコアを備えたホモジニアスのマルチコア・マルチプロセッサに本発明を適用した例を示したが、異種のプロセッサコアを備えたヘテロジニアスのマルチコア・マルチプロセッサに本発明を適用することができる。
以上のように、本発明では、複数の物理CPUを備えて複数の仮想CPUを実行する仮想計算機システム及び仮想化ソフトウェアに適用することができる。
第1の実施形態を示し、本発明を適用する仮想計算機システムの構成を示すブロック図。 第1の実施形態を示し、物理CPUの構成を示すブロック図。 第1の実施形態を示し、仮想化ソフトウェアが管理する仮想−物理CPU割当表の一例を示す説明図。 第1の実施形態を示し、仮想化ソフトウェアが管理する論理区画対応表の一例を示す説明図。 第1の実施形態を示し、仮想化ソフトウェアが行う仮想CPUの生成処理の一例を示すフローチャート。 第1の実施形態を示し、仮想化ソフトウェアが行う仮想CPUの削除処理の一例を示すフローチャート。 第2の実施形態を示し、仮想化ソフトウェアが管理する仮想−物理CPU割当表の一例を示す説明図。 第2の実施形態を示し、仮想化ソフトウェアが行う仮想CPUの生成処理の一例を示すフローチャート。 第2の実施形態を示し、仮想化ソフトウェアが行う仮想CPUの削除処理の一例を示すフローチャート。 第2の実施形態を示し、仮想CPUの削除処理による仮想CPUの再配置の様子を示す説明図で、図中上部が割り当て変更前の状態を示し、図中下部が割り当て変更後の状態を示す。 第3の実施形態を示し、仮想化ソフトウェアが行う仮想CPUの削除処理の一例を示すフローチャート。 第3の実施形態を示し、仮想化ソフトウェアが行う仮想CPUの削除処理の他の例を示すフローチャート。 第4の実施形態を示し、仮想計算機システムの構成を示すブロック図。 第4の実施形態を示し、仮想化ソフトウェアが管理する仮想−物理CPU割当表の一例を示す説明図。 第4の実施形態を示し、仮想化ソフトウェアが行う仮想CPUの削除処理の一例を示すフローチャート。 第4の実施形態を示し、仮想CPUの削除処理による仮想CPUの再配置の様子を示す説明図で、図中上部が割り当て変更前の状態を示し、図中下部が割り当て変更後の状態を示す。 第4の実施形態を示し、仮想化ソフトウェアが管理する仮想−物理CPU割当表で、仮想CPUの削除処理後の一例を示す説明図。
符号の説明
100、110 ゲストOS
200,210 論理区画
201,202、211,212 仮想CPU
300 仮想化ソフトウェア
310 LPAR制御部
320 仮想CPU制御部
330 物理CPU制御部
340 仮想−物理CPU割当制御部
400 物理計算機
410 物理CPU

Claims (15)

  1. スリープ状態と通常の動作状態とを切り替え可能な物理CPUを複数備えた物理計算機と、
    前記物理計算機を複数の論理区画に分割し、各論理区画上でそれぞれゲストOSを動作させて、各論理区画に対する物理計算機の資源の割当を制御する仮想化制御部と、を備えた仮想計算機システムであって、
    前記仮想化制御部は、
    前記論理区画に対する操作指令を受け付ける論理区画制御部と、
    前記操作指令に基づいて前記論理区画に前記ゲストOSを実行する仮想CPUを割り当てる仮想CPU制御部と、
    前記操作指令に基づいて前記仮想CPUを前記物理CPUに割り当て、前記物理CPUの動作状態を制御する仮想−物理CPU割当制御部と、
    前記仮想−物理CPU割当制御部からの操作指令に基づいて前記物理CPUの動作状態を制御する物理CPU制御部と、を含み、
    前記物理CPUは、動作クロックの周波数を変更するクロック制御部を有し、
    前記操作指令は、前記論理区画に割り当てられた当該仮想CPUが前記物理CPUを使用する比率としての割り当て率を含み、
    前記仮想−物理CPU割当制御部は、
    前記論理区画制御部から仮想CPUを生成する操作指令を受け付けると、前記複数の物理CPUのうち、前記通常動作状態の物理CPUに前記仮想CPUを割り当て可能か否かを判定し、割り当て可能な場合には当該仮想CPUを前記通常動作状態の物理CPUに割り当て、割り当て不能な場合にはスリープ状態の物理CPUを起動する指令を前記物理CPU制御部に発行して、前記仮想CPUを当該起動した物理CPUに割り当て、仮想CPUと物理CPUの割り当て状態と物理CPUの動作状態を管理するテーブルに前記割り当てた仮想CPUを追加して更新し、
    前記論理区画制御部から仮想CPUを削除する操作指令を受け付けると、当該仮想CPUを前記テーブルから削除し、当該仮想CPUを削除した物理CPUに割り当てられている仮想CPUがなくなった場合には、当該物理CPUをスリープ状態に移行するよう前記物理CPU制御部に指令し、
    前記物理CPUに対する仮想CPUの割り当てを変更したときには、当該物理CPUに割り当てられている仮想CPUの割り当て率の和に基づいて前記物理CPUの動作クロックの周波数を決定し、当該動作クロックの周波数を前記物理CPU制御部へ指令し、
    前記物理CPU制御部は前記動作クロックの周波数を前記クロック制御部へ指令することを特徴とする仮想計算機システム。
  2. 前記仮想−物理CPU割当制御部は、
    前記論理区画制御部から仮想CPUを削除する操作指令を受け付けると、当該仮想CPUを前記テーブルから削除した後に、当該テーブルを参照して当該仮想CPUを削除した第1の物理CPUに割り当てられた第2の仮想CPUが存在し、かつ、通常動作状態にある第2の物理CPUに前記第2の仮想CPUを割り当て可能な場合には、前記第2の仮想CPUを前記第2の物理CPUに再割り当てを行い、前記第1の物理CPUに割り当てられている仮想CPUがなくなると、当該第1の物理CPUをスリープ状態に移行させることを特徴とする請求項1に記載の仮想計算機システム。
  3. 前記論理区画は、ゲストOSが利用する仮想CPUの実使用率を検知して前記仮想化制御部へ通知する稼動状態検出部を含み、
    前記仮想−物理CPU割当制御部は、
    前記物理CPUに対する仮想CPUの割り当てを変更したときには、当該物理CPUに割り当てられている仮想CPUの実使用率の和に基づいて物理CPUに対する仮想CPUの割り当てを変更することを特徴とする請求項1に記載の仮想計算機システム。
  4. 前記仮想−物理CPU割当制御部は、
    前記論理区画制御部から仮想CPUを削除する操作指令を受け付けると、当該仮想CPUを前記テーブルから削除した後に、当該テーブルを参照して当該仮想CPUを削除した第1の物理CPUに割り当てられた第2の仮想CPUが存在するときには、前記稼動状態検出部からの実使用率を取得して、通常動作状態にある第2の物理CPUに割り当てられている仮想CPUの実使用率の和に、前記第2の仮想CPUの実使用率を加算した値が所定の閾値未満であれば、前記第2の仮想CPUを前記第2の物理CPUに再割り当てを行い、前記第1の物理CPUに割り当てられている仮想CPUがなくなると、当該第1の物理CPUをスリープ状態に移行させることを特徴とする請求項3に記載の仮想計算機システム。
  5. 前記仮想−物理CPU割当制御部は、
    前記第2の物理CPUに割り当てられている仮想CPUの実使用率の和に、前記第2の仮想CPUの実使用率を加算した値が所定の閾値未満であれば、前記第2の物理CPUに割り当てられている仮想CPUの割り当て率の和に前記第2の仮想CPUの割り当て率を加算した値が100%を超えることを許容することを特徴とする請求項4に記載の仮想計算機システム。
  6. スリープ状態と通常の動作状態とを切り替え可能な物理CPUを複数備えた物理計算機を複数の論理区画に分割し、各論理区画上でそれぞれゲストOSを動作させて、各論理区画に対する物理計算機の資源の割当を制御する仮想化制御部を備えた仮想計算機システムの制御方法であって、
    前記物理CPUは、動作クロックの周波数を変更するクロック制御部を有し、
    前記仮想化制御部が前記論理区画に対する操作指令を受け付けるステップと、
    前記仮想化制御部は、前記受け付けた操作指令が前記論理区画に前記ゲストOSを実行する仮想CPUを生成する操作指令のときには、前記複数の物理CPUのうち、前記通常動作状態の物理CPUに前記仮想CPUを割り当て可能か否かを判定し、割り当て可能な場合には当該仮想CPUを前記通常動作状態の物理CPUに割り当て、前記判定結果が割り当て不能な場合にはスリープ状態の物理CPUを起動して、前記仮想CPUを当該起動した物理CPUに割り当てるステップと、
    前記仮想化制御部が、仮想CPUと物理CPUの割り当て状態と物理CPUの動作状態を管理するテーブルに前記割り当てた仮想CPUを追加して更新するステップと、
    前記仮想化制御部は、前記受け付けた操作指令が前記論理区画制御部から仮想CPUを削除する操作指令のときには、当該仮想CPUを前記テーブルから削除し、当該仮想CPUを削除した物理CPUに割り当てられている仮想CPUがなくなった場合には、当該物理CPUをスリープ状態に移行させるステップと、
    を含み、
    前記操作指令は、前記論理区画に割り当てられた当該仮想CPUが前記物理CPUを使用する比率としての割り当て率を含み、
    前記仮想CPUを当該起動した物理CPUに割り当てるステップは、
    新たに仮想CPUを割り当てた前記物理CPUに割り当てられている仮想CPUの割り当て率の和に基づいて前記物理CPUの動作クロックの周波数を変更し、
    前記仮想CPUを前記テーブルから削除し、当該仮想CPUを削除した物理CPUに割り当てられている仮想CPUがなくなった場合には、当該物理CPUをスリープ状態に移行させるステップは、
    当該物理CPUに他の仮想CPUが割り当てられているときには、割り当てられている仮想CPUの割り当て率の和に基づいて前記物理CPUの動作クロックの周波数を変更することを特徴とする仮想計算機の制御方法
  7. 前記仮想CPUを前記テーブルから削除し、当該仮想CPUを削除した物理CPUに割り当てられている仮想CPUがなくなった場合には、当該物理CPUをスリープ状態に移行させるステップは、
    当該仮想CPUを前記テーブルから削除するステップと、
    前記テーブルを参照して当該仮想CPUを削除した第1の物理CPUに割り当てられた第2の仮想CPUが存在し、かつ、通常動作状態にある第2の物理CPUに前記第2の仮想CPUを割り当て可能か否かを判定するステップと、
    前記判定結果が割り当て可能な場合には、前記第2の仮想CPUを前記第2の物理CPUに再割り当てを行い、前記第1の物理CPUに割り当てられている仮想CPUがなくなると、当該第1の物理CPUをスリープ状態に移行させるステップと、
    を含むことを特徴とする請求項6に記載の仮想計算機の制御方法。
  8. 前記ゲストOSが利用する仮想CPUの実使用率を検知して前記仮想化制御部へ通知するステップをさらに含み、
    前記仮想CPUを前記テーブルから削除し、当該仮想CPUを削除した物理CPUに割り当てられている仮想CPUがなくなった場合には、当該物理CPUをスリープ状態に移行させるステップは、
    当該物理CPUに他の仮想CPUが割り当てられているときには、割り当てられている仮想CPUの前記実使用率の和に基づいて当該物理CPUに対する仮想CPUの割り当てを変更することを特徴とする請求項6に記載の仮想計算機の制御方法。
  9. 前記仮想CPUを前記テーブルから削除し、当該仮想CPUを削除した物理CPUに割り当てられている仮想CPUがなくなった場合には、当該物理CPUをスリープ状態に移行させるステップは、
    当該仮想CPUを前記テーブルから削除した後に、当該テーブルを参照して当該仮想CPUを削除した第1の物理CPUに割り当てられた第2の仮想CPUが存在するときには、前記実使用率を取得して、通常動作状態にある第2の物理CPUに割り当てられている仮想CPUの実使用率の和に、前記第2の仮想CPUの実使用率を加算した値が所定の閾値未満であれば、前記第2の仮想CPUを前記第2の物理CPUに再割り当てを行い、前記第1の物理CPUに割り当てられている仮想CPUがなくなると、当該第1の物理CPUをスリープ状態に移行させることを特徴とする請求項8に記載の仮想計算機の制御方法。
  10. 前記仮想CPUを前記テーブルから削除し、当該仮想CPUを削除した物理CPUに割り当てられている仮想CPUがなくなった場合には、当該物理CPUをスリープ状態に移行させるステップは、
    前記第2の物理CPUに割り当てられている仮想CPUの実使用率の和に、前記第2の仮想CPUの実使用率を加算した値が所定の閾値未満であれば、前記第2の物理CPUに割り当てられている仮想CPUの割り当て率の和に前記第2の仮想CPUの割り当て率を加算した値が100%を超えることを許容することを特徴とする請求項9に記載の仮想計算機の制御方法。
  11. スリープ状態と通常の動作状態とを切り替え可能な物理CPUを複数備えた物理計算機を複数の論理区画に分割し、各論理区画上でそれぞれゲストOSを動作させて、各論理区画に対する物理計算機の資源の割当を制御するプログラムであって、
    前記物理CPUは、動作クロックの周波数を変更するクロック制御部を有し、
    前記論理区画に対する操作指令を受け付けるステップと、
    前記受け付けた操作指令が前記論理区画に前記ゲストOSを実行する仮想CPUを生成する操作指令のときには、前記複数の物理CPUのうち、前記通常動作状態の物理CPUに前記仮想CPUを割り当て可能か否かを判定し、割り当て可能な場合には当該仮想CPUを前記通常動作状態の物理CPUに割り当て、前記判定結果が割り当て不能な場合にはスリープ状態の物理CPUを起動して、前記仮想CPUを当該起動した物理CPUに割り当てるステップと、
    前記仮想CPUと物理CPUの割り当て状態と物理CPUの動作状態を管理するテーブルに前記割り当てた仮想CPUを追加して更新するステップと、
    前記受け付けた操作指令が前記論理区画制御部から仮想CPUを削除する操作指令のときには、当該仮想CPUを前記テーブルから削除し、当該仮想CPUを削除した物理CPUに割り当てられている仮想CPUがなくなった場合には、当該物理CPUをスリープ状態に移行させるステップと、を前記物理計算機に実行させ、
    前記操作指令は、前記論理区画に割り当てられた当該仮想CPUが前記物理CPUを使用する比率としての割り当て率を含み、
    前記仮想CPUを当該起動した物理CPUに割り当てるステップは、
    新たに仮想CPUを割り当てた前記物理CPUに割り当てられている仮想CPUの割り当て率の和に基づいて前記物理CPUの動作クロックの周波数を変更し、
    前記仮想CPUを前記テーブルから削除し、当該仮想CPUを削除した物理CPUに割り当てられている仮想CPUがなくなった場合には、当該物理CPUをスリープ状態に移行させるステップは、
    当該物理CPUに他の仮想CPUが割り当てられているときには、割り当てられている仮想CPUの割り当て率の和に基づいて前記物理CPUの動作クロックの周波数を変更することを特徴とするプログラム。
  12. 前記仮想CPUを前記テーブルから削除し、当該仮想CPUを削除した物理CPUに割り当てられている仮想CPUがなくなった場合には、当該物理CPUをスリープ状態に移行させるステップは、
    当該仮想CPUを前記テーブルから削除するステップと、
    前記テーブルを参照して当該仮想CPUを削除した第1の物理CPUに割り当てられた第2の仮想CPUが存在し、かつ、通常動作状態にある第2の物理CPUに前記第2の仮想CPUを割り当て可能か否かを判定するステップと、
    前記判定結果が割り当て可能な場合には、前記第2の仮想CPUを前記第2の物理CPUに再割り当てを行い、前記第1の物理CPUに割り当てられている仮想CPUがなくなると、当該第1の物理CPUをスリープ状態に移行させるステップと、
    を含むことを特徴とする請求項11に記載のプログラム。
  13. 前記ゲストOSが利用する仮想CPUの実使用率を検知して前記仮想化制御部へ通知するステップをさらに含み、
    前記仮想CPUを前記テーブルから削除し、当該仮想CPUを削除した物理CPUに割り当てられている仮想CPUがなくなった場合には、当該物理CPUをスリープ状態に移行させるステップは、
    当該物理CPUに他の仮想CPUが割り当てられているときには、割り当てられている仮想CPUの前記実使用率の和に基づいて当該物理CPUに対する仮想CPUの割り当てを変更することを特徴とする請求項11に記載のプログラム。
  14. 前記仮想CPUを前記テーブルから削除し、当該仮想CPUを削除した物理CPUに割り当てられている仮想CPUがなくなった場合には、当該物理CPUをスリープ状態に移行させるステップは、
    当該仮想CPUを前記テーブルから削除した後に、当該テーブルを参照して当該仮想CPUを削除した第1の物理CPUに割り当てられた第2の仮想CPUが存在するときには、前記実使用率を取得して、通常動作状態にある第2の物理CPUに割り当てられている仮想CPUの実使用率の和に、前記第2の仮想CPUの実使用率を加算した値が所定の閾値未満であれば、前記第2の仮想CPUを前記第2の物理CPUに再割り当てを行い、前記第1の物理CPUに割り当てられている仮想CPUがなくなると、当該第1の物理CPUをスリープ状態に移行させることを特徴とする請求項13に記載のプログラム。
  15. 前記仮想CPUを前記テーブルから削除し、当該仮想CPUを削除した物理CPUに割り当てられている仮想CPUがなくなった場合には、当該物理CPUをスリープ状態に移行させるステップは、
    前記第2の物理CPUに割り当てられている仮想CPUの実使用率の和に、前記第2の仮想CPUの実使用率を加算した値が所定の閾値未満であれば、前記第2の物理CPUに割り当てられている仮想CPUの割り当て率の和に前記第2の仮想CPUの割り当て率を加算した値が100%を超えることを許容することを特徴とする請求項14に記載のプログラム。
JP2007314761A 2007-12-05 2007-12-05 仮想計算機システム、仮想計算機の制御方法及びプログラム Expired - Fee Related JP5433837B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2007314761A JP5433837B2 (ja) 2007-12-05 2007-12-05 仮想計算機システム、仮想計算機の制御方法及びプログラム
US12/328,121 US8307369B2 (en) 2007-12-05 2008-12-04 Power control method for virtual machine and virtual computer system
DE602008003655T DE602008003655D1 (de) 2007-12-05 2008-12-04 Leistungssteuerungsverfahren für virtuelle Maschinen und virtuelles Computersystem
EP08021082A EP2071458B1 (en) 2007-12-05 2008-12-04 Power control method for virtual machine and virtual computer system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007314761A JP5433837B2 (ja) 2007-12-05 2007-12-05 仮想計算機システム、仮想計算機の制御方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2009140157A JP2009140157A (ja) 2009-06-25
JP5433837B2 true JP5433837B2 (ja) 2014-03-05

Family

ID=40427255

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007314761A Expired - Fee Related JP5433837B2 (ja) 2007-12-05 2007-12-05 仮想計算機システム、仮想計算機の制御方法及びプログラム

Country Status (4)

Country Link
US (1) US8307369B2 (ja)
EP (1) EP2071458B1 (ja)
JP (1) JP5433837B2 (ja)
DE (1) DE602008003655D1 (ja)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8452991B2 (en) * 2009-08-20 2013-05-28 International Business Machines Corporation Partition level power management using fully asynchronous cores with software that has limited asynchronous support
US9563250B2 (en) 2009-12-16 2017-02-07 Qualcomm Incorporated System and method for controlling central processing unit power based on inferred workload parallelism
US8775830B2 (en) 2009-12-16 2014-07-08 Qualcomm Incorporated System and method for dynamically controlling a plurality of cores in a multicore central processing unit based on temperature
US8650426B2 (en) * 2009-12-16 2014-02-11 Qualcomm Incorporated System and method for controlling central processing unit power in a virtualized system
US9104411B2 (en) 2009-12-16 2015-08-11 Qualcomm Incorporated System and method for controlling central processing unit power with guaranteed transient deadlines
US9128705B2 (en) 2009-12-16 2015-09-08 Qualcomm Incorporated System and method for controlling central processing unit power with reduced frequency oscillations
US9176572B2 (en) 2009-12-16 2015-11-03 Qualcomm Incorporated System and method for controlling central processing unit power with guaranteed transient deadlines
US8689037B2 (en) 2009-12-16 2014-04-01 Qualcomm Incorporated System and method for asynchronously and independently controlling core clocks in a multicore central processing unit
US8909962B2 (en) 2009-12-16 2014-12-09 Qualcomm Incorporated System and method for controlling central processing unit power with guaranteed transient deadlines
US8595721B2 (en) * 2009-12-22 2013-11-26 International Business Machines Corporation Preserving a dedicated temporary allocation virtualization function in a power management environment
KR20110072922A (ko) * 2009-12-23 2011-06-29 삼성전자주식회사 화상형성장치의 추가 확장기능을 실행하는 방법 및 이를 수행하는 화상형성장치
US8370836B2 (en) * 2010-01-28 2013-02-05 Dell Products, Lp System and method to enable power related decisions in a virtualization environment
JP2011170647A (ja) * 2010-02-19 2011-09-01 Nec Corp 信号処理装置、信号処理方法およびプログラム
JP5388909B2 (ja) 2010-03-09 2014-01-15 株式会社日立製作所 ハイパバイザ、計算機システム、及び、仮想プロセッサのスケジューリング方法
WO2011134716A1 (en) * 2010-04-26 2011-11-03 International Business Machines Corporation Managing a multiprocessing computer system
CN102934086B (zh) 2010-06-10 2017-08-25 富士通株式会社 多核处理器系统、电力控制方法及电力控制程序
US8381002B2 (en) 2010-06-23 2013-02-19 International Business Machines Corporation Transparently increasing power savings in a power management environment
CN102971710B (zh) * 2010-07-06 2016-06-29 松下电器(美国)知识产权公司 虚拟计算机系统、虚拟计算机控制方法、及集成电路
JP2012018515A (ja) * 2010-07-07 2012-01-26 Fujitsu Ltd 情報処理装置,制御方法,制御プログラム
JP5435133B2 (ja) * 2010-07-13 2014-03-05 富士通株式会社 情報処理装置、情報処理装置の制御方法及びプログラム
US8448006B2 (en) 2010-10-19 2013-05-21 International Business Machines Corporation Performing virtual and/or physical resource management for power management
EP2458501A1 (en) * 2010-11-30 2012-05-30 France Telecom Method of operating a communication device and related communication device
JP5708013B2 (ja) 2011-02-22 2015-04-30 富士通株式会社 仮想マシンの配置変更方法、仮想マシンの配置変更装置、及び、仮想マシンの配置変更プログラム
JP5633440B2 (ja) * 2011-03-17 2014-12-03 富士通株式会社 情報処理装置、電力制御方法及び電力制御プログラム
WO2012103728A1 (zh) * 2011-06-30 2012-08-09 华为技术有限公司 热点域虚拟机cpu调度方法及虚拟机系统
WO2012109870A1 (zh) * 2011-08-01 2012-08-23 华为技术有限公司 虚拟资源管理方法、系统及装置
CN102955549B (zh) * 2011-08-29 2016-06-29 华为技术有限公司 一种多核cpu的电源管理方法、系统及cpu
EP2568353A1 (en) 2011-09-06 2013-03-13 Basque Center for Applied Mathematics Method for scaling the speed of operation of at least one processor unit in a virtualized resource-sharing system
CN102364455B (zh) * 2011-10-31 2013-10-23 杭州华三通信技术有限公司 一种级联多核cpu间vcpu均衡分担控制方法及其装置
KR20130101693A (ko) * 2012-03-06 2013-09-16 삼성전자주식회사 이종의 운영체제를 사용하는 가상화 시스템의 전력 관리 방법 및 장치
US9003218B2 (en) 2012-05-21 2015-04-07 International Business Machines Corporation Power shifting in multicore platforms by varying SMT levels
JP5725303B2 (ja) * 2012-08-10 2015-05-27 コニカミノルタ株式会社 画像形成装置
KR101433030B1 (ko) * 2012-12-18 2014-08-22 서강대학교산학협력단 가상환경 내 중앙처리장치의 전력 스케줄링 방법 및 시스템
US9933832B2 (en) * 2013-03-14 2018-04-03 Vmware, Inc. Systems and methods for modifying power states in a virtual environment
US20150081400A1 (en) * 2013-09-19 2015-03-19 Infosys Limited Watching ARM
JP6263995B2 (ja) * 2013-11-29 2018-01-24 富士通株式会社 情報処理システム、管理装置、情報処理システムの制御方法及び管理装置の制御プログラム
US9367345B1 (en) * 2015-02-26 2016-06-14 Red Hat Israel, Ltd. Power efficient cross-VCPU notification by VM function
US10572667B2 (en) * 2016-03-31 2020-02-25 Intel Corporation Coordinating power management between virtual machines
CN106383747A (zh) * 2016-08-31 2017-02-08 华为技术有限公司 一种计算资源调度方法及装置
JP2018116462A (ja) * 2017-01-18 2018-07-26 株式会社東芝 仮想環境実行装置及びプログラム
US11080097B1 (en) * 2017-05-30 2021-08-03 Amazon Technologies, Inc. User defined logical spread placement groups for computing resources within a computing environment
JP6958414B2 (ja) * 2018-02-19 2021-11-02 日本電信電話株式会社 仮想リソース管理装置、仮想リソース割り当て方法、仮想リソース割り当てプログラム、および、仮想リソース管理システム
JP7151530B2 (ja) * 2019-02-13 2022-10-12 日本電信電話株式会社 サーバ基盤および物理cpu割当プログラム
US11347558B2 (en) * 2019-12-09 2022-05-31 Nutanix, Inc. Security-aware scheduling of virtual machines in a multi-tenant infrastructure

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3265540B2 (ja) * 1994-04-05 2002-03-11 株式会社日立製作所 電子計算機システムの運転制御方式
JPH09179667A (ja) * 1995-12-21 1997-07-11 Hitachi Ltd 情報処理装置
US7007183B2 (en) * 2002-12-09 2006-02-28 International Business Machines Corporation Power conservation by turning off power supply to unallocated resources in partitioned data processing systems
US20050060590A1 (en) * 2003-09-16 2005-03-17 International Business Machines Corporation Power-aware workload balancing usig virtual machines
US20050108711A1 (en) * 2003-11-13 2005-05-19 Infineon Technologies North America Corporation Machine instruction for enhanced control of multiple virtual processor systems
US7194641B2 (en) * 2004-01-22 2007-03-20 International Business Machines Corporation Method and apparatus for managing power and thermal alerts transparently to an operating system in a data processing system with increased granularity in reducing power usage and thermal generation
JP4982971B2 (ja) * 2004-09-29 2012-07-25 ソニー株式会社 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム
JP2006099332A (ja) * 2004-09-29 2006-04-13 Sony Corp 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム
JP2006113767A (ja) 2004-10-14 2006-04-27 Sony Corp 情報処理システム、および、情報処理方法、並びに、プログラム
JP4322232B2 (ja) * 2005-06-14 2009-08-26 株式会社ソニー・コンピュータエンタテインメント 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム
US20060294401A1 (en) * 2005-06-24 2006-12-28 Dell Products L.P. Power management of multiple processors
US7680643B2 (en) * 2005-11-17 2010-03-16 International Business Machines Corporation Method for carrying multiple suspended runtime images
US8201165B2 (en) * 2007-01-02 2012-06-12 International Business Machines Corporation Virtualizing the execution of homogeneous parallel systems on heterogeneous multiprocessor platforms
JP4705051B2 (ja) * 2007-01-29 2011-06-22 株式会社日立製作所 計算機システム

Also Published As

Publication number Publication date
JP2009140157A (ja) 2009-06-25
EP2071458A1 (en) 2009-06-17
EP2071458B1 (en) 2010-11-24
US8307369B2 (en) 2012-11-06
DE602008003655D1 (de) 2011-01-05
US20090150896A1 (en) 2009-06-11

Similar Documents

Publication Publication Date Title
JP5433837B2 (ja) 仮想計算機システム、仮想計算機の制御方法及びプログラム
JP6646114B2 (ja) 動的仮想マシンサイジング
JP6359069B2 (ja) オペレーティングシステムと切り離される異種計算
JP4370336B2 (ja) 低消費電力ジョブ管理方法及び計算機システム
US10579132B2 (en) System and method for performing distributed power management without power cycling hosts
US7694158B2 (en) Parallel processing method and system, for instance for supporting embedded cluster platforms, computer program product therefor
JP5075274B2 (ja) 電力認識スレッドスケジューリングおよびプロセッサーの動的使用
US8489744B2 (en) Selecting a host from a host cluster for live migration of a virtual machine
US9304803B2 (en) Cooperative application workload scheduling for a consolidated virtual environment
EP2430538B1 (en) Allocating computing system power levels responsive to service level agreements
KR101680109B1 (ko) 복수 코어 장치 및 그의 로드 조정 방법
JP5681527B2 (ja) 電力制御装置及び電力制御方法
JP5345990B2 (ja) 特定のプロセスを短時間で処理する方法およびコンピュータ
US20120239952A1 (en) Information processing apparatus, power control method, and recording medium
US9311142B2 (en) Controlling memory access conflict of threads on multi-core processor with set of highest priority processor cores based on a threshold value of issued-instruction efficiency
US20130080809A1 (en) Server system and power managing method thereof
EP3295276B1 (en) Reducing power by vacating subsets of cpus and memory
JP2010211644A (ja) メモリ消費電力削減システム、方法及びプログラム
JP2010160565A (ja) タスクスケジューリング装置、タスクスケジューリング制御方法、及びタスクスケジューリング制御プログラム
JP2010191567A (ja) 情報管理装置及び情報管理方法等
Shelar et al. Autonomic and energy-aware resource allocation for efficient management of cloud data centre

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101006

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120110

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120309

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120814

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131112

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees