JP6339240B2 - 仮想マシン電力管理 - Google Patents

仮想マシン電力管理 Download PDF

Info

Publication number
JP6339240B2
JP6339240B2 JP2016569380A JP2016569380A JP6339240B2 JP 6339240 B2 JP6339240 B2 JP 6339240B2 JP 2016569380 A JP2016569380 A JP 2016569380A JP 2016569380 A JP2016569380 A JP 2016569380A JP 6339240 B2 JP6339240 B2 JP 6339240B2
Authority
JP
Japan
Prior art keywords
virtual machine
operating system
computing device
smart
processor
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
JP2016569380A
Other languages
English (en)
Other versions
JP2017517812A (ja
Inventor
ズゥ ドーン,ヤオ
ズゥ ドーン,ヤオ
ジャーン,シエンタオ
Original Assignee
インテル コーポレイション
インテル コーポレイション
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 インテル コーポレイション, インテル コーポレイション filed Critical インテル コーポレイション
Publication of JP2017517812A publication Critical patent/JP2017517812A/ja
Application granted granted Critical
Publication of JP6339240B2 publication Critical patent/JP6339240B2/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
    • 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
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • 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
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • 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
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4893Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
    • 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
    • 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/45591Monitoring or debugging support
    • 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)
  • Telephone Function (AREA)
  • User Interface Of Digital Computer (AREA)

Description

本発明の実施形態は、データ処理の技術分野に概して関係があり、特に、スマート仮想マシン電力管理により仮想マシンを実行するよう動作するコンピュータデバイスに関係がある。
本願で与えられている背景説明は、本開示の背景を一般的に示すことを目的とする。現在示されている発明者の研究は、本背景欄で記載されている限りにおいて、さもなければ出願時に先行技術と見なされ得ない本明細書の態様とともに、本開示に対する先行技術として明示的にも暗示的にも認められない。本願で特段示されない限りは、本項目で記載されているアプローチは、本開示における特許請求の範囲に対する先行技術ではなく、それらが本項目に含まれることをもって先行技術であるものと認められない。
コンピュータデバイスは、現実のコンピュータデバイスをエミュレートする仮想マシンを実行するよう構成されてよい。仮想マシンによるエミュレーションは、現実のコンピュータデバイスのアーキテクチャ、モデル、及び同様のものに基づき動作し、従って、現実のコンピュータデバイスと同様である仮想マシン内でのアプリケーションの実行を可能にする。然るに、仮想マシンは、アプリケーションのためのプラットフォームを提供するゲストオペレーティングシステムの実行を容易にすることができる。
ゲストオペレーティングシステムは、アプリケーションが仮想マシン上でアクティブでない場合でさえ、機能を実行するようコンピューティング資源を依然として消費する。例えば、ゲストオペレーティングシステムは、命令を実行するためにプロセッササイクルを必要としてよい。命令の実行は、ファーストイン(first in)、ファーストアウト(first out)又はラウンドロビン(round robin)のような従来のポリシーに従ってよい。電力消費が懸案事項である現実世界のシナリオでは、そのようなポリシーは、仮想マシンを実行するコンピュータマシンのユーザにとってアクセス可能でないことある。
本発明の実施形態は、一例として、制限なしに、添付の図面の図において表されている。図面において、同じ参照符号は同様の要素を示す。本開示における“1つ”の実施形態への言及は、必ずしも同じ実施形態に対するものではなく、それらは少なくとも1つを意味し得る点が留意されるべきである。
様々な実施形態に従って、コンピュータデバイスで動作する仮想マシンの電力消費を管理する仮想マシン電力管理機能を含むコンピュータデバイスを表すブロック図である。 様々な実施形態に従って、仮想マシンがアイドル状態へ移行することを止めるデータを無線により受信及び送信する通信モジュールを表すブロック図である。 様々な実施形態に従って、ポータブル電子機器における仮想マシンによる電力消費を管理する仮想マシン電力管理機能を含むポータブル電子機器を表すブロック図である。 様々な実施形態に従って、スマート仮想マシン電力マネージャを含むシステムを表すブロック図である。 様々な実施形態に従って、スマート仮想マシン電力マネージャを含むシステムの他の実施形態を表すブロック図である。 様々な実施形態に従って、コンピュータデバイスにおける仮想マシンの電力消費を管理する方法を表すフロー図である。 様々な実施形態に従って、コンピュータデバイスにおける仮想マシンの電力消費を管理する方法の他の実施形態を表すフロー図である。
以下の詳細な説明では、本願の一部を形成する添付の図面が参照される。同じ参照符号は全体を通して同じ部分を示し、実施され得る実施形態が実例として示される。他の実施形態が利用可能であり、構造的又は論理的な変更は、本開示の適用範囲から逸脱することなしに行われ得る点が理解されるべきである。従って、以下の詳細な説明は、限定の意味で解釈されるべきではなく、実施形態の適用範囲は、添付の特許請求の範囲及びそれらの均等によって定義される。
様々な動作は、請求される対象を理解するのに最も有用である様態において、複数の別個のアクション又は動作として順に記載されてよい。なお、記載の順序は、それら動作が必然的に順序に依存することを暗示するように解釈されるべきではない。特に、それらの動作は、提示の順序において実行されなくてよい。記載されている動作は、記載されている実施形態とは異なる順序で実施されてよい。様々な付加的な動作が実行されてよく、且つ/あるいは、記載されている動作は、更なる実施形態では省略されてよい。
本開示のために、「A又はB」及び「A及び/又はB」との言い回しは、(A)、(B)、又は(A及びB)を意味する。本開示のために、「A、B、及び/又はC」との言い回しは、(A)、(B)、(C)、(A及びB)、(A及びC)、(B及びC)、又は(A、B、及びC)を意味する。
本明細書は、「(1つの)実施形態において」又は「(複数の)実施形態において」との表現を使用することがある。これらの表現は、同じ又は異なった実施形態の1つ以上に夫々言及してよい。更に、本開示の実施形態に対して使用される語「有する(comprising)」、「含む(including)」、「有する(having)」、及び同様の語は同義である。
本願で使用されるように、語「モジュール」及び/又は「ロジック」は、1つ以上のソフトウェア又はファームウェアを実行する特定用途向け集積回路(ASIC;Application Specific Integrated Circuit)、電子回路、プロセッサ(共有、専用、又はグループ)、及び/又はメモリ(共有、専用、又はグループ)、組み合わせ論理回路、且つ/あるいは、記載されている機能を提供する他の適切なハードウェアコンポーネントに言及し、又はその部分であり、又はそれを含んでよい。
本願で記載されるように、コンピュータデバイスは、仮想マシンを実行するよう構成されてよい。様々な実施形態において、コンピュータデバイスは、ポータブル電子機器のような、相当に制限された資源(例えば、画面サイズ、バッテリ電源、及び同様のもの)を含む種類のものであってよい。コンピュータデバイスは、仮想マシンモニタ又はハイパーバイザ(hypervisor)のような、仮想マシンを管理する1つ以上のコンポーネントを含んでよい。コンピュータデバイスの資源を節約するよう、コンピュータデバイスは仮想マシン電力管理機能を含んでよい。仮想マシン電力管理機能は、コンピュータデバイスが仮想マシンを“フリーズ(freeze)”すること、すなわち、仮想マシンによって消費されるプロセッササイクルの低減を引き起こすこと、を可能にしてよい。これに対して、仮想マシン電力管理機能は、コンピュータデバイスが仮想マシンを“アンフリーズ(unfreeze)”すること、すなわち、仮想マシンによって消費されるプロセッササイクルの増大を引き起こすこと、を可能にしてよい。
様々な実施形態において、仮想マシン電力管理機能は、仮想マシンの状態に作用する1つ以上のイベントを条件としてよい。一実施形態において、コンピュータデバイスは、仮想マシンがフォアグラウンド(foreground)状態にもはやない場合に、仮想マシンをフリーズしてよい。例えば、コンピュータデバイスは、ユーザからの入力、又はコンピュータデバイスのホストオペレーティングシステムからのイベントのような、仮想マシンをコンピュータデバイスでフォアグラウンド状態からバックグラウンド(background)状態へ移行させるイベントを検出してよい。仮想マシンがフォアグラウンド状態にもはやない場合に、仮想マシン電力管理機能は、コンピュータデバイスが仮想マシンをフリーズすることを可能にしてよい。他のイベントが仮想マシンをバックグラウンド状態からフォアグラウンド状態へ移行させるならば、仮想マシン電力管理機能は、コンピュータデバイスが仮想マシンをアンフリーズすることを可能にしてよい。
いくつかの実施形態に従って、コンピュータデバイスは、仮想マシンがアイドル状態にある場合に、仮想マシンをフリーズしてよい。例えば、コンピュータデバイスは、仮想マシンとの検出されるユーザインタラクションの欠如、仮想マシンのためのデータパケットの受信の欠如、又は仮想マシンのためのボイスコールの受信の欠如のような、1つ以上のイベントの欠如により、仮想マシンがアイドル状態にあると決定してよい。仮想マシンに関連する少なくとも1つのイベントに応答して、コンピュータデバイスは仮想マシンをアンフリーズしてよく、それにより、仮想マシンは、イベントを扱う1つ以上のプロセスを実行してよい。例えば、仮想マシンに向けられたネットワークパケット又はユーザインタラクションはコンピュータデバイスによって検出されてよく、これに対して、コンピュータデバイスは仮想マシンをアンフリーズしてよく、それにより、仮想マシンは、ネットワークパケットを処理すること、ユーザインタラクションに応答すること、又は同様のことを行ってよい。
最初に図1から始めると、ブロック図は、様々な実施形態に従って、コンピュータデバイスで動作する仮想マシンによる電力消費を管理する仮想マシン電力管理機能を含むコンピュータデバイス100を示す。様々な実施形態において、コンピュータデバイス100は、本開示の仮想マシン電力管理機能を除いて、ネットブック、タブレットコンピュータ、手持ち式コンピュータデバイス、手持ち式ウェブ対応機器、ゲーム機、携帯電話機、スマートフォン、電子ブックリーダー、パーソナルデジタルアシスタント、又は同様のもののような、仮想マシンを操作及び管理するよう構成された如何なるタイプのポータブルコンピュータデバイスであってもよい。
コンピュータデバイス100は、電源105、メインメモリ110、ストレージ120、プロセッサ118、ユーザインターフェイス122、ディスプレイ124、及び通信モジュール130を含んでよいが、それらに限られない。特に、メモリ110は、以下でより十分に記載されるように、仮想マシン115による電力消費を管理して、コンピュータデバイス100の電力消費を削減するよう構成されるスマート仮想マシン電力マネージャ111を含んでよい。それらのコンポーネントは、バス119を通じて通信上結合されてよい。バス119は、コンピュータデバイス100内でデータを転送するよう構成された如何なるサブシステムであってもよい。バス119は、複数のコンピュータバスとともに、コンピュータデバイス100内でデータを転送するよう構成された追加回路を含んでよい。
他のコンピュータデバイス(図示せず。)とデータをやり取りするよう、コンピュータデバイス100は通信モジュール130を含んでよい。通信モジュール130は、外部のコンピュータデバイスからネットワーク(図示せず。)にわたってデータを受け入れて、コンピュータデバイス100によって処理されるようにしてよい。通信モジュール130は、パブリック若しくはプライベートネットワーク、種々のタイプのネットワークの組み合わせ、ローカルエリアネットワーク(local area network)(“LAN”)、インターネットのようなワイドエリアネットワーク(wide area network)(“WAN”)、パーソナルエリアネットワーク(personal area network)(“PAN”)、ピア・ツー・ピアネットワーク、無線セルラーネットワーク(例えば、セルラーデータネットワーク)、公衆交換電話網(public switched telephone network)(“PSTN”)、又はそれらの組み合わせのような複数のネットワーク上で通信するよう構成されてよい。よって、通信モジュール130は、データ(例えば、ネットワークパケット)及び/又はボイスコール(例えば、アナログボイスデータ)を通信するよう構成されてよい。通信モジュール130は、ハードウェア、ソフトウェア、又は両者の組み合わせにおいて実装されてよく、例えば、ネットワークカード、ネットワークアクセスコントローラ、及び/又は他のネットワークインターフェイスコントローラのようなコンポーネントを含んでよい。通信モジュール130は、コンピュータデバイス100のための命令を実行するプロセッサ118と通信上結合されている。一実施形態において、プロセッサ118は、通信モジュール130のための命令のいくつか又は全てを実行する。
データを受信する追加手段として、コンピュータデバイス100は、ユーザからの入力を受けるユーザインターフェイス122を含んでよい。ユーザインターフェイス122は、種々の実施形態に従って、ユーザが様々な手段を通じてコンピュータデバイス100と対話することを可能にしてよい。例えば、ユーザインターフェイス122は、グラフィカルユーザインターフェイスとしてディスプレイ124上で又はコマンドラインインターフェイスを通じてユーザに提示されてよい。ユーザ入力を受けるよう、ユーザインターフェイス122は、ハードウェア、ソフトウェア、又は両者の組み合わせにおいて実装されてよく、ユーザ入力に適した1つ以上のハードウェアデバイス(例えば、キーボード、マウス、タッチスクリーン、又はジェスチャ認識)を含んでよく、あるいは、それと通信上結合されてよい。更に、プロセッサ118は、ユーザインターフェイス122のための命令のいくつか又は全てを実行してよい。
プロセッサ118は、メインメモリ110からの命令のような、命令を実行するのに適した如何なるプロセッサであってもよい。然るに、プロセッサ118は、例えば、中央演算処理装置(central processing unit)(“CPU”)、マイクロプロセッサ、又は他の同様のプロセッサであってよい。いくつかの実施形態において、プロセッサ118は、専用プロセッサ(例えば、グラフィクス処理ユニット)、ネットワークプロセッサ、又はコンピュータデバイス100の動作を実行するのに適したあらゆるプロセッサのような、複数のプロセッサを含む。様々な実施形態において、プロセッサ118は複数のプロセッサを含んでよい。一実施形態において、プロセッサ118は、複数のCPU(例えば、コア)を備えたマルチコアプロセッサであってよい。
プロセッサ118にはメインメモリ110が結合されている。メインメモリ110は、短期及び長期の両方の記憶を提供してよく、実際上、いくつかのユニット(プロセッサ118に位置するユニットを含む。)に分けられてよい。メインメモリ110は、静的ランダムアクセスメモリ(static random access memory)(“SRAM”)及び/又は動的ランダムアクセスメモリ(dynamic random access memory)(“DRAM”)のように揮発性であってよく、コンピュータにより読み出し可能な命令、データ構造、ソフトウェアアプリケーション、及びコンピュータデバイス100のための他のデータの記憶を(少なくとも一時的に)提供してよい。そのようなデータはストレージ120からロードされてよい。メインメモリ110は、プロセッサ118に位置するキャッシュのような、キャッシュメモリも含んでよい。メインメモリ110は、プロセッサ118によって実行されるべき要素111〜116に関連した命令、すなわち、仮想マシン電力管理機能を提供する上記のスマート仮想マシン電力マネージャ111、仮想マシン115を管理する仮想マシンモニタ(virtual machine monitor)(“VMM”)112、ホストオペレーティングシステム114、仮想マシン115、ゲストオペレーティングシステム116を含んでよいが、それらに限られない。
様々な実施形態において、ホストオペレーティングシステム114は、スマート仮想マシン電力マネージャ111、仮想マシンモニタ112、仮想マシン115、及び/又はゲストオペレーティングシステム116によって提供される命令のような、命令の実行を開始するよう構成されてよい。特に、ホストオペレーティングシステム114は、スマート仮想マシン電力マネージャ111,仮想マシンモニタ112、及び/又は仮想マシン115を実行するためのプラットフォームとなるよう構成されてよい。ホストオペレーティングシステム114は、スレッディング(threading)、資源管理、データ記憶制御、及び他の同様の機能性を含め、コンピュータデバイス100のコンポーネントにわたって他の動作を実行するよう構成されてよい。様々な実施形態において、ホストオペレーティングシステム114及び/又はVMM112は、コンピュータデバイス100に関連する様々な電力状態を管理する回路を含んでよいオペレーティングシステム電力管理(operating system power management)(“OSPM”)を含み、且つ/あるいは、それと通信上結合されてよい。
VMM112は、ハイパーバイザとして実装されてもよく、仮想マシンを生成、管理、実行、及び/又は終了するよう動作してよい。様々な実施形態において、VMM112は、ネイティブ(native)、アンホスト(unhosted)、及び/又はベアメタル(bare metal)としても知られるType1であってよい。そのような実施形態では、VMM112は、コンピュータデバイス100のハードウェア(例えば、メインメモリ110及びプロセッサ118)において直接に実行されてよい。然るに、VMM112は、仮想マシン115及び/又はゲストオペレーティングシステム116を管理しながらそのようなハードウェアを制御するよう動作してよい。一実施形態において、ホストオペレーティングシステム114は、サービスオペレーティングシステム、ドライバドメイン、又は特権(privileged)仮想マシンであってよい。例えば、このとき、ホストオペレーティングシステム114はVMM112で実行される。他の実施形態に従って、ホストオペレーティングシステム114の動作及び機能性は、コンピュータデバイス100のハードウェアにおいて直接に実行されるType1ハイパーバイザで見られるように、VMM112と一体化されてよい。他の実施形態では、VMM112は、ホスト(hosted)としても知られるType2であってよい。Type2の実施形態では、VMM112は、ホストオペレーティングシステム114によって実行されてよい(例えば、VMM112は、ホストオペレーティングシステム114に含まれるか、あるいは、それと通信上結合されてよい。)。図1で表されるように、VMM112は、プロセッサ118によって実行されるメインメモリ110内の命令であってよい。なお、VMM112は、他の実施形態ではファームウェア及び/又はハードウェアであってよい。
VMM112は、例えば、ゲストオペレーティングシステム116によって消費される資源のスケジューリング(例えば、プロセッサ118のサイクル)を制御することによって、仮想マシン115を管理してよい。実施形態に従って、VMM112は、仮想マシン115のために資源を割り当てるよう構成された1つ以上のコンポーネントを含んでよく、あるいは、それらと通信上結合されてよい。例えば、VMM112は、スケジューラ(図示せず。)及び/又はメモリマネージャ(図示せず。)を含むか、あるいは、それらと通信上結合されてよい。スケジューラは、例えば、スケジューリングポリシー及び/又は資源利用可能性に基づき、1つ以上のプロセス(例えば、スレッド)のための時間スロットを割り当ててよい。同様に、メモリマネージャは、メモリ(例えば、メインメモリ110)のためのリクエストを処理し、例えば、メモリ割り当てポリシー及び/又は資源利用可能性に基づき、メモリを割り当てる。
仮想マシン115は、物理コンピュータデバイスのエミュレーション(例えば、コンピュータデバイス100と同様のコンピュータデバイスのエミュレーション)であってよい。従って、仮想マシン115は、物理コンピュータデバイスと同様のアーキテクチャ及び機能性を備えてよい。仮想マシン115は、性能、安全性、電力及び/又は簡単さのような様々な目的のために準仮想化(paravirtualization)において見られるように、仮想化ソフトウェアコンポーネントを使用するよう拡張してよい。そのために、ゲストオペレーティングシステム116は仮想マシン115で実行されてよい。ゲストオペレーティングシステム116は、ホストオペレーティングシステム114と同様であって、且つ/あるいは、同様の機能を実行してよい。なお、ゲストオペレーティングシステム116は、ホストオペレーティングシステム114とは異なるタイプであってよい。例えば、ゲストオペレーティングシステム116は、ホストオペレーティングシステム114とは異なるスキームに従って、資源、メモリ割り当て、及び同様のことを管理してよい。様々な実施形態において、ゲストオペレーティングシステム116は、Cステート(すなわち、プロセッサ動作状態)、Pステート(すなわち、プロセッサ実行状態)、Dステート(すなわち、デバイス状態)、及び/又はTステート(すなわち、プロセッサスロットリング(throttling)状態)のような、1つ以上の仮想電力状態を要求するよう構成されてよい。一実施形態において、電力状態は、S0i1及び/又はS0i3のような、システム・オン・ア・チップ(system-on-a-chip)に関連してよい。S0i1ステートは、ディスプレイ124がオンであるがユーザがデバイスと積極的に対話しておらず、比較的微量の電力が消費される(例えば、ミリワット範囲)場合に使用されてよく、マイクロ秒で入退場され得る。S0i3ステートは、ディスプレイ124がオフであり、比較的少量の電力が消費される(例えば、マイクロワット範囲)場合に使用されてよく、ミリ秒で入退場され得る。ゲストオペレーティングシステム116のC、P、D、及び/又はTステートは、物理コンピュータデバイス100のC、P、D、及び/又はTステートと同じでなくてよい。例えば、ゲストオペレーティングシステム116はC0又はC1ステートでしか動作しなくてよく、物理コンピュータデバイス100は、C0又は、C1〜C9のような、より深いCステートで動作してよい。代替の実施形態では、ゲストオペレーティングシステム116は、物理コンピュータデバイス100によって実装されることから離れる異なった概念の電力状態を実装してよい。更に別の実施形態では、ゲストオペレーティングシステム116は、異なる電力状態の動作を要求するようVMM112と協働するために準仮想化を使用してよい。ゲストオペレーティングシステム116は仮想マシン115で動作するので、1つ以上の仮想電力状態のための1つ以上のリクエストはプロセッサ118に対するものであっても、VMM112によって管理されてよい。
様々な実施形態において、コンピュータデバイス100は複数の仮想マシンを含んでよい。追加の仮想マシンは、仮想マシン115と同様のアーキテクチャ及び機能性を備えてよい。更に、ゲストオペレーティングシステム116と同様である追加のゲストオペレーティングシステムは、追加の仮想マシンで実行されてよい。
オペレーティングシステムとして、ゲストオペレーティングシステム116は、例えば、アプリケーション、ユーザ入力、ネットワーク通信、及び同様のものに関連する命令の実行を引き起こしてよい。様々な実施形態に従って、ゲストオペレーティングシステム116は、ユーザインターフェイス122で受け取られたユーザ入力に応答して、命令を実行してよい。加えて、ゲストオペレーティングシステム116は、ネットワーク上で受信されて通信モジュール130で処理された1つ以上のデータパケットに応答して、命令を実行してよい。特に、コンピュータデバイス100がポータブル通信デバイス(例えば、スマートフォン)である実施形態では、ゲストオペレーティングシステム116は、ボイスコールに応答して、例えば、通信モジュール130で処理された受信されたアナログボイスデータに応答して、命令を実行するよう構成されてよい。様々な実施形態において、ゲストオペレーティングシステム116による命令の実行は、ゲストオペレーティングシステム116が、例えば、より低いCステート(例えば、C1ステート)を要求すること及び/又はアイドルとして仮想マシンモニタ112に現れることによって、アイドル状態に入ること、を阻止してよい。
様々な実施形態において、ゲストオペレーティングシステム116を備える仮想マシン115を含む、各自のゲストオペレーティングシステムを備える複数の仮想マシンは、メインメモリ110に含まれてよい。そのような実施形態において、VMM112は、複数の仮想マシンの夫々の生成及び実行を管理するよう構成されてよい。例えば、VMM112は、スケジューリングポリシーに従って複数の仮想マシンの夫々に物理資源(例えば、プロセッサ118のサイクル)を割り当ててよい。
実施形態において、コンピュータデバイス100はスマート仮想マシン電力マネージャ111を含んでよい。本願ではメインメモリ110において表されているが、スマート仮想マシン電力マネージャ111は、ハードウェア、ソフトウェア、ファームウェア、又は組み合わせにおいて実装されてよい。実施形態に従って、コンピュータデバイス100での仮想化動作は、電源105(例えば、バッテリ又は他のポータブル電源)のようなコンピュータデバイス100の1つ以上の資源にとって高価であり得る。スマート仮想マシン電力マネージャ111は、電源105のようなコンピュータデバイス100の1つ以上の資源を節約するよう試みるように構成されてよい。この節約を達成するよう、スマート仮想マシン電力マネージャ111は、仮想マシン115に関連する命令の実行に影響を及ぼしてよい。
スマート仮想マシン電力マネージャ111は、仮想マシン115及び/又はゲストオペレーティングシステム116と通信上結合されてよい。様々な実施形態において、スマート仮想マシン電力マネージャ111は、仮想マシン115をフリーズすることによって、コンピュータデバイス100の資源(例えば、電源105)を節約するよう構成されてよい。実施形態において、スマート仮想マシン電力マネージャ111によって仮想マシン115をフリーズすることは、仮想マシン115によって消費されるプロセッサ118のサイクルの低減を引き起こす。仮想マシン115によって消費されるプロセッサ118のサイクルのこの低減は、例えば、例えば、仮想マシン115のゲストオペレーティングシステム116によって実行される1つ以上のプロセスの一時停止若しくは終了による、及び/又は仮想マシン115に関連するインタラプトの周波数の低減によるような、仮想マシン115を通じてゲストオペレーティングシステム116によって消費されるプロセッサ118のサイクルの低減であってよい。仮想マシン115によって消費されるプロセッサ118のサイクルの低減は、低電力Cステート(例えば、C7ステート)の駐留を増やし、且つ/あるいは、より深いCステート(例えば、C9)へのプロセッサ118のエントリを助けることができる。これにより、プロセッサ118による電力消費は削減され得る。例えば、仮想マシン115によって消費されるプロセッサ118のサイクルの低減は、仮想マシン115に関連するインタラプトの周波数の低減を有してよく、これにより、低電力状態へ(C1からC7へ)のプロセッサ118のエントリを容易にすることができる。
相応に、スマート仮想マシン電力マネージャ111は、仮想マシン115をアンフリーズするよう構成されてよい。実施形態において、スマート仮想マシン電力マネージャ111によって仮想マシン115をアンフリーズすることは、仮想マシン115によって消費されるプロセッサ118のサイクルの増大を引き起こす。仮想マシン115によって消費されるプロセッサ118のサイクルのこの増大は、例えば、仮想マシン115のゲストオペレーティングシステム116によって実行されるべき1つ以上のプロセス(例えば、プロセッサ118のサイクルの低減に基づき一時停止若しくは終了されていた1つ以上のプロセス)の再開又は続行による、及び/又は仮想マシン115に関連するインタラプトの周波数の増大によるような、仮想マシン115を通じてゲストオペレーティングシステム116によって消費されるプロセッサ118のサイクルの増大であってよい。コンピュータデバイス100が複数の仮想マシンを含む実施形態では、スマート仮想マシン電力マネージャ111は、本願で記載されるのと同様にして、1つ以上の追加の仮想マシン及び/又はゲストオペレーティングシステムをフリーズ及び/又はアンフリーズするよう構成されてよい。
実施形態に従って、スマート仮想マシン電力マネージャ111はVMM112と通信上結合されてよい。VMM112は、物理資源の割り当てによることを含め、仮想マシン115を管理するよう構成され得るので、スマート仮想マシン電力マネージャ111は、仮想マシン115によって消費されるプロセッサ118のサイクルの低減を引き起こすようVMM112へリクエストを発してよい。一実施形態において、このリクエストは、VMM112に、スケジューラが物理資源を仮想マシン115に割り当てることを阻止させてよい。VMM112がハイパーバイザである実施形態では、スマート仮想マシン電力マネージャ111からハイパーバイザ112へのリクエストはハイパーコール(hypercall)であってよい。多くの実施形態では、仮想マシン115によって消費されるプロセッサ118のサイクルの低減を引き起こすためのスマート仮想マシン電力マネージャ111からのリクエストは、ホストオペレーティングシステム114による相応の動作なしでVMM112に向けられてよい。そのような実施形態では、VMM112はType1(例えば、ネイティブ、アンホスト、及び/又はベアメタル)であってよい。
一実施形態において、スマート仮想マシン電力マネージャ111は、ホストオペレーティングシステム114への1つ以上のリクエストに基づき、仮想マシン115によって消費されるプロセッサ118のサイクルの低減を引き起こしてよい。ホストオペレーティングシステム114は、例えば、仮想マシン115によって消費されるプロセッサ118のサイクルの低減を引き起こすためのスマート仮想マシン電力マネージャ111からの1つ以上のリクエストを受けるよう構成されたプロトコルを含み及び/又はインターフェイスを提示するアプリケーションプログラミングインターフェイス(application programming interface)(“API”)を含んでよい。様々な実施形態において、ホストオペレーティングシステム114は、VMM112を含むか、又はそれと通信上結合されてよく、それにより、ホストオペレーティングシステム114は、仮想マシン115の管理及び実行に関与してよい。そのような実施形態では、スマート仮想マシン電力マネージャ111は、ホストオペレーティングシステム114へ、例えば、ホストオペレーティングシステム114に含まれるか又はそれと通信上結合されるスケジューラへ、リクエストを発してよく、ホストオペレーティングシステム114は、仮想マシン115に関連する資源割り当て(例えば、プロセッサ118のサイクル)を低減(又は終了)してよい。スマート仮想マシン電力マネージャ111が、ホストオペレーティングシステム114へのリクエストを介して、仮想マシン115によって消費されるプロセッサ118のサイクルの低減を引き起こすよう構成される多くの実施形態では、VMM112はType2(例えば、ホスト)であってよい。
様々な実施形態において、VMM112は、仮想マシン115をコンピュータデバイス100においてフォアグラウンド状態からバックグラウンド状態へ移行させるよう構成されてよい。例えば、ホストオペレーティングシステム114及び/又はそれによって実行されるアプリケーションは、バックグラウンド状態からフォアグラウンド状態へ移行してよい。実施形態に従って、VMM112は、VMM112をフォアグラウンド状態からバックグラウンド状態へ移行させるユーザインターフェイス122を通じた入力を検出してよい。例えば、VMM112は、仮想マシン115をフォアグラウンド状態からバックグラウンド状態へ移行させることに関連するユーザインターフェイス122を通じたジェスチャの認識又はタクティルボタンの押下を検出してよい。これに応答して、スマート仮想マシン電力マネージャ111は、仮想マシン115がコンピュータデバイス100のフォアグラウンド状態にもはやないとの検出、例えば、仮想マシン115がバックグラウンド状態にあるか、又はフォアグラウンド状態からバックグラウンド状態へ移行しているとの検出に基づき、仮想マシン115によって消費されるプロセッサ118のサイクルの低減を引き起こすよう構成されてよい。
様々な実施形態において、スマート仮想マシン電力マネージャ111は、仮想マシン115がアイドル状態にあると決定するよう構成されてよい。実施形態に従って、スマート仮想マシン電力マネージャ111は、仮想マシン115のためのイベントの欠如を検出してよい。例えば、スマート仮想マシン電力マネージャ111は、ユーザインターフェイス122を通じて検出されるべきジェスチャの認識の欠如及び/又はタクティルボタンの押下の欠如のような、仮想マシン115のためにVMM112によって検出されるユーザ入力の欠如に基づき、仮想マシン115がアイドル状態にあると決定してよい。他の例では、スマート仮想マシン電力マネージャ111は、通信モジュール130を通じたデータパケット及び/又はアナログボイスデータの受信の欠如のような、仮想マシン115のためのVMM112によって検出される通信イベントの欠如に基づき、仮想マシン115がアイドル状態にあると決定してよい。他の実施形態では、スマート仮想マシン電力マネージャ111は、仮想マシン115がより不活発な電力状態を要求すること(例えば、ゲストオペレーティングシステム116は、より深いCステートを要求してよい。)及び/又は仮想マシン115が所定の量若しくは割合の時間(例えば、C1、すなわち、より不活発な電力状態について、少なくとも95パーセントの駐留比)の間より不活発な電力状態にあることを決定してよい。第3の実施形態では、スマート仮想マシン電力マネージャ111は、仮想マシン115がフォアグラウンド状態にもはやない場合に、仮想マシン115がアイドル状態にあると決定してよい。
相応に、スマート仮想マシン電力マネージャ111は、プロセッサ118のサイクルの増大を引き起こしてよい。一実施形態において、スマート仮想マシン電力マネージャ111は、仮想マシン115がバックグラウンド状態にもはやないとの検出に基づき、プロセッサ118のサイクルの増大を引き起こしてよい。他の実施形態では、スマート仮想マシン電力マネージャ111は、仮想マシン115がもはやアイドル状態でないとの検出に基づき、プロセッサ118のサイクルの増大を引き起こしてよい。例えば、VMM112は、ユーザ入力、通信イベント、及び/又はより活発な電力状態のためのリクエスト(例えば、C0ステートのリクエスト)を受け取ってよい。
仮想マシン115(及び/又は他の仮想マシン)に起因したプロセッサ118のサイクルの低減に伴って、ホストオペレーティングシステム114に関連するOSPM(図示せず。)は1つ以上の動作を変化させてよい。例えば、OSPMは、1つ以上の仮想マシン(仮想マシン115を含む。)がアイドル状態にあると決定される場合に、コンピュータデバイス100を、プロセッサ118のためのC9ステートのような、より深い電力状態へと移行させてよい。1つ以上の仮想マシン(仮想マシン115を含む。)がフリーズされる場合に、1つ以上の仮想マシン(仮想マシン115を含む。)によって消費される入力/出力(input/output)(“I/O”)資源(例えば、カメラデバイス、ブロックデバイス、など)は低減され、更には、OSPMによって低電力状態(例えば、D3)へ移行されてよい。
図2に関して、ブロック図は、様々な実施形態に従って、仮想マシンがアイドル状態へ移行することを阻止することができるコンピュータデバイス間のファイルの無線による受信及び送信のための通信モジュール200を表す。通信モジュール200は、図1の通信モジュール130であってよく、あるいは、それに含まれてよい。通信モジュール200は、図示されるように互いと結合されている送信器回路205、受信器回路210、通信回路215、及び/又は1つ以上のアンテナ220を含んでよいが、それらに限られない。
簡潔に、通信回路215は、通信モジュール200から/への信号の無線通信を助けるようアンテナ220と結合されてよい。通信回路215の動作は、フィルタリング、増幅、記憶、変調、復調、変換、等を含んでよいが、それらに限られない。
送信器回路205は、通信回路215と結合されてよく、アンテナ220による送信のために通信回路215へ信号を供給するよう構成されてよい。様々な実施形態において、送信器回路205は、様々な信号処理動作を信号に対して与えて、通信回路215への信号に適切な特性を与えるよう構成されてよい。いくつかの実施形態において、送信器回路205は、仮想マシンに関連する1つ以上のデータパケット及び/又はアナログボイスデータを無線により送信するよう構成されてよい。送信器回路205のそのような働きは、仮想マシンがアイドル状態にあると決定されないようにしてよい。
送信器回路205は、通信回路215による送信のための信号(例えば、通信モジュール200と通信上結合される仮想マシン(図示せず。)からの信号)を受信するよう構成されてよい。いくつかの実施形態において、送信器回路205は、信号を生成するよう構成されてよい。更に、送信器回路205は、通信回路215による送信の前に、様々な信号をスクランブル、多重化、及び/又は変調するよう構成されてよい。
受信器回路210は、通信回路215と結合されてよく、1つ以上のアンテナ220によって検出される信号のような、通信回路215のための及び/又はそれからの信号を受信するよう構成されてよい。いくつかの実施形態において、受信器回路210は、信号を、生成し、適応させ、又は別なふうに変更するよう構成されてよい。更に、受信器回路210は、受信された信号を、仮想マシンのような、通信モジュール200と通信上結合された他のモジュール又はコンポーネント(図示せず。)へ送出するよう構成されてよい。それにより、通信モジュール200を有するデバイスの外から受信されるデータは、そのデータを当該デバイスで利用してよい。いくつかの実施形態において、受信器回路210は、仮想マシンに関連する1つ以上のデータパケット及び/又はアナログボイスデータを受信してよい。受信器回路210のそのような働きは、仮想マシンがアイドル状態にあると決定されないようにしてよい。結果として、仮想マシンは電力を消費し続ける。これは、例えば、ポータブルコンピュータデバイスにとって、好ましくない。
通信回路215、送信器回路205、及び/又は受信器回路210のうちのいくつか又は全ては、例えば、通信チップに含まれ、且つ/あるいは、印刷回路基板と通信上結合されてよい。
図3は、様々な実施形態に従って、仮想マシンによる電力消費を管理する仮想マシン電力管理機能を含むポータブル電子機器300のブロック図を示す。ポータブル電子機器300は、図1のコンピュータデバイス100であってよく、あるいは、それに含まれてよい。然るに、仮想マシン305は仮想マシン115であってよく、ゲストオペレーティングシステム310はゲストオペレーティングシステム116であってよく、且つ/あるいは、ホストオペレーティングシステム315はホストオペレーティングシステム114であってよい。
ポータブル電子機器300は、ディスプレイ302での複数の要素の同時の提示を制限し得る1つ以上の特性を特色としてよい。例えば、ディスプレイ302のサイズは、相当に制限されたサイズであってよく、プロセッサ(図示せず。)は、相当に制限されたパワーを有してよく、メモリ(図示せず。)は、相当に制限されたサイズを有してよく、且つ/あるいは、電源は、相当に制限された容量を有してよい。それにより、ポータブル電子機器300の性能は、ただ1つの要素がフォアグラウンド状態にある場合に改善され得る。実施形態において、仮想マシン305又はホストオペレーティングシステム315の一方は、ポータブル電子機器300でのフォアグラウンド状態にあってよい。実施形態において、フォアグラウンド状態は、そのフォアグラウンドのオペレーティングシステム(すなわち、ホストオペレーティングシステム315又はゲストオペレーティングシステム310)によって発せられた命令がスケジューラ(図示せず。)における高い優先度、例えば、ディスプレイ302上での最も上のウインドウや、焦点を有するコンポーネント(例えば、ジェスチャ認識ディスプレイ302を通じて入力を受けるよう選択されたオペレーティングシステムのウインドウ)、に関連付けられることを示してよい。残りの要素(例えば、フォアグラウンド状態にないオペレーティングシステム310、315のうちの他方)はバックグラウンド状態にある。
表されている実施形態では、仮想マシン305はフォアグラウンド状態にあってよい。これにより、ゲストオペレーティングシステム310は、ディスプレイ302上で提示され及び/又は焦点を有してよい。よって、ホストオペレーティングシステム315はバックグラウンド状態にあってよい。様々な実施形態において、イベント又はその欠如は、仮想マシン305をフォアグラウンド状態からバックグラウンド状態へ移行させてよい(例えば、ホストオペレーティングシステム315をフォアグラウンド状態へ移行させるためであるユーザ入力(例えば、タクティルボタン320の選択)の検出、及び/又は仮想マシン305のためのネットワーク通信のような活動の欠如)。そのような実施形態では、ゲストオペレーティングシステム310は、ディスプレイ302においてもはや焦点を有さなくてよい。それに応答して、ポータブル電子機器300の仮想マシン電力管理機能は、仮想マシン305によって消費されるプロセッササイクルの低減を引き起こしてよい(例えば、ゲストオペレーティングシステム310によって発せられる命令に基づき消費されるプロセッササイクルは一時停止又は終了されてよく、且つ/あるいは、仮想マシン305に関連するインタラプトの周波数は低減又は完全に削除されてよい。)。相応に、ポータブル電子機器300の仮想マシン電力管理機能は、仮想マシン305がバックグラウンド状態からフォアグラウンド状態へ移行すべき場合に、仮想マシン305によって消費されるプロセッササイクル(ゲストオペレーティングシステム310によって発せられる命令に基づき消費されるプロセッササイクル)の増大を引き起こしてよい。
図4に関して、ブロック図は、様々な実施形態に従って、スマート仮想マシン電力マネージャ421を含むシステム400を示す。システム400は、図1のコンピュータデバイス100に含まれてよい。然るに、仮想マシン430は仮想マシン115であってよく、ゲストオペレーティングシステム432はゲストオペレーティングシステム116であってよく、ホストオペレーティングシステム410はホストオペレーティングシステム114であってよく、スマート仮想マシン電力マネージャ421はスマート仮想マシン電力マネージャ111であってよく、且つ/あるいは、VMM440はVMM112であってよい。様々な実施形態に従って、システム400は、仮想マシン430による完全仮想化、準仮想化、ハードウェア支援仮想化であってよい。
実施形態において、システム400のホストオペレーティングシステム410は、ホストオペレーティングシステムカーネル(“カーネル”)420を含んでよく、且つ/あるいは、それと通信上結合されてよい。カーネル420は、例えば、システム400のハードウェア(図示せず。)(例えば、プロセッサ、メモリ、及び同様のもの)のための1つ以上の命令へとリクエストを変換することによって、システム400のコンポーネントから受信される1つ以上のリクエストを管理するよう構成されてよい。
更に、システム400はスケジューラ441を含んでよい。スケジューラ441は、VMM440に含まれるか、又はそれへ通信上結合されてよい(なお、他の実施形態では、スケジューラ441はホストオペレーティングシステム410に含まれてよい。)。1つ以上のスレッド又はプロセスを実行する1つ以上の命令が受信される場合に、スケジューラ441は1つ以上のスレッド又はプロセスをキューに加えてよい。スケジューラ441は、ゲストオペレーティングシステム432に関連するスレッド又はプロセスのような、1つ以上のプロセスサイクルを消費すべきスレッド又はプロセスを選択してよい。スケジューラ441は、例えば、レイテンシー、公平性(例えば、スレッド若しくはプロセス優先度)、スループット、及び/又は待ち時間を考慮する所定のスケジューリングアルゴリズムに従って動作してよい。
実施形態に従って、ゲストオペレーティングシステム432は、システム400のハードウェアを要求する1つ以上のスレッド又はプロセスのための1つ以上の命令を発してよい。1つ以上の命令は、カーネル420で受け取られ、スケジューラによって、ハードウェアアクセスが一貫して管理され得るようにスケジューリングされてよい。スマート仮想マシン電力マネージャ421は、カーネル420に含まれてよく、あるいは、それと通信上結合されてよく、それら1つ以上の命令のインジケーションを受け取ってよい。加えて、スマート仮想マシン電力マネージャ421は、フォアグラウンド状態からバックグラウンド状態への仮想マシン430の移行の検出、ゲストオペレーティングシステム432のためのユーザ入力の検出、ゲストオペレーティングシステム432に関連する通信イベント(例えば、データパケットの受信及び/又はアナログボイスデータの通信)の検出、及び/又はゲストオペレーティングシステム432の電力状態の検出のような、ゲストオペレーティングシステム432に関連する1つ以上のイベントのインジケーションをVMM440から受け取ってよい。
様々な実施形態において、スマート仮想マシン電力マネージャ421は、イベントのインジケーションを受け取るか、あるいは、仮想マシン430がフリーズされるべきであるとスマート仮想マシン電力マネージャ421に決定させるイベントの欠如に基づき、仮想マシン430がアイドル状態にあると決定してよい。従って、スマート仮想マシン電力マネージャ421は、仮想マシン430に関連する1つ以上のスレッド又はプロセスをキューから除外するようスケジューラ441に伝えてよい。仮想マシン430に関連する1つ以上のスレッド又はプロセスはスケジューラ441によってもはや選択され得ないので、仮想マシン430によって消費されるプロセッササイクルの量は低減されてよく、実際上、完全に削除されてよい。いくつかの実施形態において、スマート仮想マシン電力マネージャ421は、ゲストオペレーティングシステム432に関連する1つ以上の命令がスケジューラ441に1つ以上のスレッド又はプロセスをキューに加えさせることを阻止してよい。
相応に、スマート仮想マシン電力マネージャ421は、イベントのインジケーションを受け取るか、あるいは、仮想マシン430がアンフリーズされるべきであるとスマート仮想マシン電力マネージャに決定させるイベントの検出に基づき、仮想マシン430がもはやアイドル状態にないと決定してよい。従って、スマート仮想マシン電力マネージャ421は、仮想マシン430に関連する1つ以上のスレッド又はプロセスをキューに加えることを開始又は再開するようスケジューラ441に伝えてよい。仮想マシン430に関連する1つ以上のスレッド又はプロセスはスケジューラ441によって選択され得るので、仮想マシン430によって消費されるプロセッササイクルの量は増大されてよい。いくつかの実施形態において、スマート仮想マシン電力マネージャ421は、ゲストオペレーティングシステム432に関連する1つ以上の命令がスケジューラ441に1つ以上のスレッド又はプロセスをキューに加えさせることを可能にしてよい。
実施形態に従って、スマート仮想マシン電力マネージャ421による仮想マシン430のフリーズは、ゲストオペレーティングシステム432に関連する1つ以上のタイマに作用してよい。仮想マシン430によって消費されるプロセッササイクルの低減に関連して、スマート仮想マシン電力マネージャ421は、ゲストオペレーティングシステム432に、プログラム可能インターバルタイマ、時間スタンプカウンタ、及び/又は高精度イベントタイマ、実時間クロック、及び/又は他のウォールクロックのような、1つ以上のタイマを作動又はインクリメントすることを中止又は一時停止させてよい。スマート仮想マシン電力マネージャ421がアンフリーズする場合、すなわち、仮想マシン430によって消費されるプロセッササイクルの増大を引き起こす場合に、スマート仮想マシン電力マネージャ421は、ゲストオペレーティングシステム432に1つ以上のタイマを調整及び/又は再開させてよい。例えば、実時間クロックは、ホストオペレーティングシステム410に関連する実時間クロックと一致するように調整されてよい。
図5に関して、ブロック図は、様々な実施形態に従って、スマート仮想マシン電力マネージャ521を含むシステム500を示す。システム500は、図4のシステム400の他の実施形態を含んでよい。然るに、仮想マシン530は仮想マシン430であってよく、ゲストオペレーティングシステム532はゲストオペレーティングシステム432であってよく、ホストオペレーティングシステム510はホストオペレーティングシステム410であってよく、スマート仮想マシン電力マネージャ521はスマート仮想マシン電力マネージャ421であってよく、且つ/あるいは、VMM540はVMM440であってよい。
様々な実施形態において、ゲストオペレーティングシステム532は、エミュレートされたネイティブデバイスドライバ536を含んでよい。エミュレートされたネイティブデバイスドライバ536は、ゲストオペレーティングシステム532から命令を受信、例えば、読み出し及び/又は書き込みしてよい。更に、ゲストオペレーティングシステム532は、ゲストオペレーティングシステム532に1つ以上の一般的な仮想デバイスへのアクセスを提供する1つ以上のフロントエンドドライバ535を含んでよい。実施形態において、ゲストオペレーティングシステム532からの命令は、1つ以上のフロントエンドドライバ535へ発せられてよく、ゲストオペレーティングシステム532からの命令のバイナリ変換及び/又はネイティブ実行を可能にし得るバックエンドサービス522及び/又はデバイスモデル511によって管理される。よって、たとえ仮想化(又は準仮想化)されたとしても、ゲストオペレーティングシステム532は、通信イベント及び/又はユーザ入力の検出のような1つ以上のイベントを受信し及び/又はそれらに応答するよう構成されてよい。バックエンドサービス522を通じて、フロントエンドドライバ535を通じてゲストオペレーティングシステム532によって発せられた1つ以上の命令は、スケジューラ541のキューに加えられてよい。従って、1つ以上のプロセッササイクルは、命令がネイティブデバイスドライバ536(例えば、システム500の物理ハードウェア)に対して実行されるようにすることができる。
スマート仮想マシン電力マネージャ521は、イベントの受信又はイベントへの応答のような、バックエンドサービス522によって管理される1つ以上の命令のインジケーションを受け取ってよい。様々な実施形態において、スマート仮想マシン電力マネージャ521は、イベントのインジケーションを受け取るか、あるいは、バックエンドサービス522によって示される信号に基づくイベントの欠如に基づき、仮想マシン530がアイドル状態にあると決定してよい。これに応答して、スマート仮想マシン電力マネージャ521は、仮想マシン530がフリーズされるべきであると決定してよい。従って、スマート仮想マシン電力マネージャ521は、仮想マシン530に関連する1つ以上のスレッド又はプロセスをキューから除外するようスケジューラ541に伝えてよい。仮想マシン530に関連する1つ以上のスレッド又はプロセスはスケジューラ541によってもはや選択され得ないので、仮想マシン530によって消費されるプロセッササイクルの量は低減されてよく、実際上、完全に削除されてよい。いくつかの実施形態において、スマート仮想マシン電力マネージャ521は、ゲストオペレーティングシステム532に関連する1つ以上の命令がスケジューラ541に1つ以上のスレッド又はプロセスをキューに加えさせることを阻止してよい。
相応に、スマート仮想マシン電力マネージャ521は、イベントのインジケーションを受け取るか、あるいは、バックエンドサービス522によって示される信号に基づき、仮想マシン530がもはやアイドル状態にないと決定してよい。これに応答して、スマート仮想マシン電力マネージャ521は、仮想マシン530がアンフリーズされるべきであると決定してよい。従って、スマート仮想マシン電力マネージャ521は、仮想マシン530に関連する1つ以上のスレッド又はプロセスをキューに加えることを開始又は再開するようスケジューラ541に伝えてよい。仮想マシン530に関連する1つ以上のスレッド又はプロセスはスケジューラ541によって選択され得るので、仮想マシン530によって消費されるプロセッササイクルの量は増大されてよい。いくつかの実施形態において、スマート仮想マシン電力マネージャ521は、ゲストオペレーティングシステム532に関連する1つ以上の命令がスケジューラ541に1つ以上のスレッド又はプロセスをキューに加えさせることを可能にしてよい。
図6に関して、フロー図は、様々な実施形態に従って、仮想マシンの電力消費を管理する方法600を表す。方法600は、図1のコンピュータデバイス100のような、コンピュータデバイスによって実施されてよい。図6は複数の順次的な動作を表すが、当業者に明らかなように、方法600の1つ以上の動作は、入れ換えられ、且つ/あるいは、同時に実施されてよい。
最初に、方法600は、仮想マシンをフォアグラウンドからバックグラウンドへ移動させる第1の予め定義されたイベントを検出する動作605を含んでよい。一実施形態において、この第1の予め定義されたイベントは、例えば、タクティルボタンの押下及び/又はジェスチャの認識のような、ユーザインタラクションの検出であってよい。第1の予め定義されたイベントの検出に基づき、方法600は、仮想マシンによって消費されるプロセッササイクルの低減を引き起こす動作610を含んでよい。然るに、仮想マシンによって消費されるプロセッササイクルは、仮想マシンがフォアグラウンドにもはやない場合に低減されてよい。実施形態において、動作610は、仮想マシンに関連するインタラプトの周波数を低減することを有してよい。これは、低電力状態へ(例えば、C1からC7へ)のプロセッサのエントリを容易にすることができる。
実施形態において、方法600は、仮想マシンをバックグラウンドからフォアグラウンドへ移動させる第2の予め定義されたイベントを検出する動作615を含んでよい。一実施形態において、この第2の予め定義されたイベントは、例えば、タクティルボタンの押下及び/又はジェスチャの認識のような、ユーザインタラクションの検出であってよい。第2の予め定義されたイベントの検出に基づき、方法600は、仮想マシンによって消費されるプロセッササイクルの増大を引き起こす動作620を含んでよい。然るに、仮想マシンによって消費されるプロセッササイクルは、仮想マシンがバックグラウンドにもはやない場合に増大されてよい。
図7を参照すると、フロー図は、様々な実施形態に従って、仮想マシンの電力消費を管理する方法700を表す。方法700は、図1のコンピュータデバイス100のような、コンピュータデバイスによって実施されてよい。図7は複数の順次的な動作を表すが、当業者に明らかなように、方法700の1つ以上の動作は、入れ換えられ、且つ/あるいは、同時に実施されてよい。
実施形態において、方法700は、仮想マシンを生成する動作705を含んでよい。それに対して更に、方法700は、仮想マシンにおいてゲストオペレーティングシステムを実行する動作710を含んでよい。動作715は、仮想マシンがアイドル状態にあると決定することを含んでよい。様々な実施形態に従って、動作715は、ユーザインタラクション、ネットワークアクティビティ、又はプロセッサアクティビティの所定時間の間の欠如(例えば、C1、すなわち、より不活発な電力状態について、少なくとも95%のゲストオペレーティングシステムに関連した駐留比)を決定することに関連した動作を含んでよい。他の実施形態では、動作715は、より不活発な電力状態のための1つ以上のリクエストをゲストオペレーティングシステムから受信することに関連した動作を含んでよい(例えば、ゲストオペレーティングシステムはC1ステートを要求してよい。)。一実施形態において、動作715は、仮想マシンがフォアグラウンド状態にもはやなく、従って、アイドル状態にあると決定することに関連した動作を含んでよい。仮想マシンがアイドル状態にあるとの決定に基づき、方法700は、仮想マシンによって消費されるプロセッササイクルの低減を引き起こす動作720を含んでよい。この動作720は、仮想マシンに関連するインタラプト周波数を低減(削除)すること及び/又は実行のためにスケジューリングされた1つ以上のスレッドを一時停止若しくは終了することに関連した動作を含んでよい。然るに、仮想マシンによって消費されるプロセッササイクルは、仮想マシンがアイドル状態にある場合に低減されてよい。実施形態において、動作720は、仮想マシンに関連するインタラプトの周波数を低減することを有してよい。これは、低電力状態へ(例えば、C1からC7へ)のプロセッサのエントリを容易にすることができる。
実施形態において、方法700は、仮想マシンで実行されるゲストオペレーティングシステムに少なくとも1つの命令を実行させる少なくとも1つの入力が受け取られたことを決定する動作725を含んでよい。一実施形態において、この少なくとも1つの入力は、例えば、ユーザインタラクション(タクティルボタンの押下及び/又はジェスチャの認識)、ネットワークイベント(ネットワークデータパケットの受信及び/又はアナログボイスデータの受信)、及び/又はより活発な電力状態の要求(例えば、C0電力状態の要求)であってよい。少なくとも1つの入力が受け取られたとの決定に基づき、方法700は、仮想マシンによって消費されるプロセッササイクルの増大を引き起こす動作730を含んでよい。然るに、仮想マシンによって消費されるプロセッササイクルは、例えば、仮想マシンに関連する1つ以上のスレッドを再開若しくは続行すること、及び/又は仮想マシンに関連するインタラプトを増やすこと(例えば、再開若しくは続行すること)によって、仮想マシンがアイドル状態にもはやない場合に増大されてよい。
様々な実施形態において、例1は、仮想マシン電力管理機能を含むコンピュータデバイスであって、当該コンピュータデバイスでの仮想マシンの実行を管理し、前記仮想マシンをフォアグラウンド状態からバックグラウンド状態へ移行させる仮想マシンモニタと、前記仮想マシンモニタと結合され、前記仮想マシンが前記フォアグラウンド状態にもはやないことを検出し、前記仮想マシンが前記フォアグラウンド状態にもはやないとの検出に応答して、前記仮想マシンによって消費されるプロセッササイクルの低減を引き起こすスマート仮想マシン電力マネージャとを有するコンピュータデバイスであってよい。例2は、例1のコンピュータデバイスであって、当該コンピュータデバイスはポータブル電子機器である、コンピュータデバイスを含んでよい。例3は、例1のコンピュータデバイスであって、前記スマート仮想マシン電力マネージャが、前記仮想マシンのゲストオペレーティングシステムによるプロセッササイクル消費の低減を引き起こすことを通じて、又は前記仮想マシンに関連するインタラプトの周波数の低減を通じて、前記仮想マシンによって引き起こされるプロセッササイクルの低減を引き起こす、コンピュータデバイスを含んでよい。例4は、例3のコンピュータデバイスであって、前記スマート仮想マシン電力マネージャが、前記ゲストオペレーティングシステムによるあらゆる命令の実行の阻止を通じて、前記仮想マシンの前記ゲストオペレーティングシステムによるプロセッササイクル消費の低減を引き起こす、コンピュータデバイスを含んでよい。例5は、例1乃至4のうちいずれかのコンピュータデバイスであって、前記スマート仮想マシン電力マネージャが、前記仮想マシンが前記バックグラウンド状態にもはやないと検出し、前記仮想マシンが前記バックグラウンド状態にもはやないとの検出に応答して、前記仮想マシンによって引き起こされるプロセッササイクルの増大を引き起こす、コンピュータデバイスを含んでよい。例6は、例5のコンピュータデバイスであって、前記スマート仮想マシン電力マネージャが、前記仮想マシンのゲストオペレーティングシステムによって実行される1つ以上のプロセスの一時停止又は終了によって、前記仮想マシンによって消費されるプロセッササイクルの低減を引き起こし、更に、前記スマート仮想マシン電力マネージャが、前記低減の前に前記仮想マシンの前記ゲストオペレーティングシステムによって実行されるべきであった前記1つ以上のプロセスの続行又は再開によって、前記仮想マシンによって消費されるプロセッササイクルの増大を引き起こす、コンピュータデバイスを含んでよい。例7は、例1乃至4のうちいずれかのコンピュータデバイスであって、前記仮想マシンモニタがハイパーバイザであり、前記スマート仮想マシン電力マネージャが、前記仮想マシンによって消費されるプロセッササイクルの低減を引き起こすために前記ハイパーバイザへのハイパーコールを使用する、コンピュータデバイスを含んでよい。例8は、例1乃至4のうちいずれかのコンピュータデバイスであって、前記スマート仮想マシン電力マネージャが、ユーザ入力の検出に基づき、前記仮想マシンが前記フォアグラウンド状態にもはやないと検出する、コンピュータデバイスを含んでよい。例9は、例8のコンピュータデバイスであって、前記仮想マシンモニタが、ユーザインターフェイスを通じて前記ユーザ入力を検出し、該ユーザ入力に応答して前記仮想マシンを前記フォアグラウンド状態から前記バックグラウンド状態へ移行させ、当該コンピュータデバイスが、前記仮想マシンと結合された、当該コンピュータデバイスへの前記ユーザ入力を検出する前記ユーザインターフェイスを更に有する、コンピュータデバイスを含んでよい。例10は、例9のコンピュータデバイスであって、前記ユーザインターフェイスがタッチスクリーン、タクティルボタン、又はジェスチャ認識デバイスである、コンピュータデバイスを含んでよい。
様々な実施形態において、例11は、仮想マシン電力管理機能を含むコンピュータデバイスであって、当該コンピュータデバイスでのゲストオペレーティングシステムを有する仮想マシンの実行を管理し、前記ゲストオペレーティングシステムに1つ以上の命令を実行させる少なくとも1つのイベントを検出する仮想マシンモニタと、前記仮想マシンモニタと結合され、前記仮想マシンがアイドル状態にあると決定し、前記仮想マシンが前記アイドル状態にあるとの決定に基づき、前記仮想マシンによって消費されるプロセッササイクルの低減を引き起こし、前記少なくとも1つのイベントの検出に応答して、前記仮想マシンによって消費されるプロセッササイクルの増大を引き起こすスマート仮想マシン電力マネージャとを有するコンピュータデバイスであってよい。例12は、例11のコンピュータデバイスであって、当該コンピュータデバイスがポータブル電子機器である、コンピュータデバイスを含んでよい。例13は、例11のコンピュータデバイスであって、前記スマート仮想マシン電力マネージャが、当該コンピュータデバイスのスケジューラへのリクエストに基づき、前記仮想マシンによって消費されるプロセッササイクルの低減を引き起こし、前記リクエストは、前記スケジューラに関連するキューから、前記仮想マシンに関連する少なくとも1つのプロセスを外すものである、コンピュータデバイスを含んでよい。例14は、例11のコンピュータデバイスであって、前記スマート仮想マシン電力マネージャが、前記仮想マシンが当該コンピュータデバイスでのフォアグラウンド状態にあるとき、前記仮想マシンが前記アイドル状態にあると決定する、コンピュータデバイスを含んでよい。例15は、例11乃至14のうちいずれかのコンピュータデバイスであって、前記スマート仮想マシン電力マネージャが、前記仮想マシンをバックグラウンド状態へ移行させる命令に基づき、前記仮想マシンが前記アイドル状態にあると決定する、コンピュータデバイスを含んでよい。例16は、例11乃至14のうちいずれかのコンピュータデバイスであって、前記スマート仮想マシン電力マネージャが、所定のインターバルの間のネットワークパケットの欠如に基づき、前記仮想マシンが前記アイドル状態にあると決定し、前記少なくとも1つのイベントは、ネットワーク上でのパケットの受信を含み、当該コンピュータデバイスは、前記仮想マシンモニタと結合された、前記ネットワーク上で受信される前記パケットを処理する受信器を更に有する、コンピュータデバイスを含んでよい。例17は、例16のコンピュータデバイスであって、前記スマート仮想マシン電力マネージャが、他の所定のインターバルの間のボイスコールの欠如に基づき、前記仮想マシンが前記アイドル状態にあると決定し、前記少なくとも1つのイベントは、前記ボイスコールの受信を含み、前記受信器は、前記受信されたボイスコールを処理する、コンピュータデバイスを含んでよい。例18は、例11乃至14のうちいずれかのコンピュータデバイスであって、前記スマート仮想マシン電力マネージャが、ユーザインタラクションの欠如に基づき、前記仮想マシンが前記アイドル状態にあると決定し、前記少なくとも1つのイベントは、前記ユーザインタラクションの受信を含み、当該コンピュータデバイスは、前記仮想マシンモニタと結合された、前記ユーザインタラクションの受信を検出するユーザインターフェイスを更に有する、コンピュータデバイスを含んでよい。例19は、例11乃至14のうちいずれかのコンピュータデバイスであって、前記スマート仮想マシン電力マネージャが、前記ゲストオペレーティングシステムによって示される仮想Cステートに基づき、前記仮想マシンが前記アイドル状態にあると決定する、コンピュータデバイスを含んでよい。
様々な実施形態において、例20は、コンピュータデバイスによって実行可能な命令を有する1つ以上の非一時的なコンピュータシステム可読媒体であって、前記命令は、コンピュータデバイスによる実行に応答して、該コンピュータデバイスに、当該コンピュータデバイスで動作する仮想マシンを当該コンピュータデバイスのフォアグラウンドから当該コンピュータデバイスのバックグラウンドへ移動させる第1の予め定義されたイベントを検出させ、前記第1の予め定義されたイベントの検出に基づき、前記仮想マシンによって消費されるプロセッササイクルの低減を引き起こさせ、前記仮想マシンを前記バックグラウンドから前記フォアグラウンドへ移動させる第2の予め定義されたイベントを検出させ、前記第2の予め定義されたイベントの検出に基づき、前記仮想マシンによって消費されるプロセッササイクルの増大を引き起こさせる、コンピュータシステム可読媒体であってよい。例21は、例20の1つ以上の非一時的なコンピュータシステム可読媒体であって、前記コンピュータデバイスがスマートフォン、タブレットコンピュータ、ポータブルメディアプレイヤー、又はラップトップコンピュータである、コンピュータシステム可読媒体を含んでよい。例22は、例20又は21の1つ以上の非一時的なコンピュータシステム可読媒体であって、前記第1の予め定義されたイベントが、ポータブル電子機器のユーザインターフェイスとの第1のユーザインタラクションの受信であり、前記第2の予め定義されたイベントが、前記ユーザインターフェイスとの第2のユーザインタラクションの受信である、コンピュータシステム可読媒体を含んでよい。
様々な実施形態において、例23は、コンピュータデバイスによって実行可能な命令を有する1つ以上の非一時的なコンピュータシステム可読媒体であって、前記命令は、ポータブル電子機器による実行に応答して、該ポータブル電子機器に、当該ポータブル電子機器で実行される仮想マシンがアイドル状態にあると決定させ、前記仮想マシンが前記アイドル状態にあるとの決定に基づき、前記仮想マシンによって消費されるプロセッササイクルの低減を引き起こさせ、前記仮想マシンに関連するゲストオペレーティングシステムに少なくとも1つの命令を実行させる少なくとも1つの入力を当該ポータブル電子機器が受け取ったことを決定させ、前記少なくとも1つの入力が受け取られたとの決定に応答して、前記仮想マシンによって消費されるプロセッササイクルの増大を引き起こさせる、コンピュータシステム可読媒体であってよい。例24は、例23の1つ以上の非一時的なコンピュータシステム可読媒体であって、前記命令は、前記ポータブル電子機器による実行に応答して、該ポータブル電子機器に、前記仮想マシンを生成させ、前記生成された仮想マシンにおいてゲストオペレーティングシステムを実行させる、コンピュータシステム可読媒体を含んでよい。例25は、例23又は24の1つ以上の非一時的なコンピュータシステム可読媒体であって、前記仮想マシンが前記アイドル状態にあるとの決定が、ユーザインタラクション、ネットワークアクティビティ、又はプロセッサアクティビティの所定期間の欠如の決定を含む、コンピュータシステム可読媒体を含んでよい。
様々な実施形態において、例26は、仮想マシン電力管理機能を実施するコンピュータ実装方法であって、コンピュータデバイスによって、該コンピュータデバイスで動作する仮想マシンを当該コンピュータデバイスのフォアグラウンドから当該コンピュータデバイスのバックグラウンドへ移動させる第1の予め定義されたイベントを検出するステップと、前記コンピュータデバイスによって、前記第1の予め定義されたイベントの検出に基づき、前記仮想マシンによって消費されるプロセッササイクルの低減を引き起こすステップと、前記コンピュータデバイスによって、前記仮想マシンを前記バックグラウンドから前記フォアグラウンドへ移動させる第2の予め定義されたイベントを検出するステップと、前記コンピュータデバイスによって、前記第2の予め定義されたイベントの検出に基づき、前記仮想マシンによって消費されるプロセッササイクルの増大を引き起こすステップとを有する方法であってよい。例27は、例26のコンピュータ実装方法であって、前記コンピュータデバイスがスマートフォン、タブレットコンピュータ、ポータブルメディアプレイヤー、又はラップトップコンピュータである、方法を含んでよい。例28は、例26のコンピュータ実装方法であって、前記第1の予め定義されたイベントが、ポータブル電子機器のユーザインターフェイスとの第1のユーザインタラクションの受信であり、前記第2の予め定義されたイベントが、前記ユーザインターフェイスとの第2のユーザインタラクションの受信である、方法を含んでよい。例29は、例26乃至28のうちいずれかのコンピュータ実装方法であって、前記プロセッササイクルの低減を引き起こすステップが、前記コンピュータデバイスによって、前記仮想マシンのゲストオペレーティングシステムによって実行される1つ以上のプロセスを一時停止することを有する、方法を含んでよい。例30は、例26乃至28のうちいずれかのコンピュータ実装方法であって、前記プロセッササイクルの増大を引き起こすステップが、前記コンピュータデバイスによって、前記プロセッササイクルの低減を引き起こすステップの前に前記仮想マシンのゲストオペレーティングシステムによって実行されるべきであった1つ以上のプロセスを再開することを有する、方法を含んでよい。例31は、例26乃至28のうちいずれかのコンピュータ実装方法であって、前記プロセッササイクルの低減を引き起こすステップが、前記コンピュータデバイスによって、前記仮想マシンによって消費されるプロセッササイクルの低減を引き起こすために当該コンピュータデバイスに関連するハイパーバイザへのハイパーコールを使用することを有する、方法を含んでよい。
様々な実施形態において、例32は、仮想マシン電力管理機能を実施するコンピュータ実装方法であって、ポータブル電子機器によって、仮想マシンがアイドル状態にあると決定するステップと、前記ポータブル電子機器によって、前記仮想マシンが前記アイドル状態にあるとの決定に基づき、前記仮想マシンによって消費されるプロセッササイクルの低減を引き起こすステップと、前記ポータブル電子機器によって、前記仮想マシンに関連するゲストオペレーティングシステムに少なくとも1つの命令を実行させる少なくとも1つの入力を受け取るステップと、前記ポータブル電子機器によって、前記少なくとも1つの入力が受け取られたとの決定に応答して、前記仮想マシンによって消費されるプロセッササイクルの増大を引き起こすステップとを有する方法であってよい。例33は、例32のコンピュータ実装方法であって、前記ポータブル電子機器によって前記仮想マシンを生成するステップと、前記ポータブル電子機器によって、前記生成された仮想マシンにおいてゲストオペレーティングシステムを実行するステップとを更に有する方法を含んでよい。例34は、例32又は33のコンピュータ実装方法であって、前記仮想マシンが前記アイドル状態にあると決定するステップが、前記ポータブル電子機器によって、ユーザインタラクション、ネットワークアクティビティ、又はプロセッサアクティビティの所定期間の欠如を決定すること有する、方法を含んでよい。例35は、例32又は33のコンピュータ実装方法であって、前記仮想マシンが前記アイドル状態にあると決定するステップが、前記ポータブル電子機器によって、前記仮想マシンがフォアグラウンドにもはやないと決定することを有する、方法を含んでよい。例36は、例32又は32のコンピュータ実装方法であって、前記プロセッササイクルの低減を引き起こすステップが、前記ポータブル電子機器によって、前記仮想マシンによって消費されるプロセッササイクルの低減を引き起こすために、当該ポータブル電子機器に関連するハイパーバイザへのハイパーコールを使用することを有する、方法を含んでよい。例37は、例32又は33のコンピュータ実装方法であって、前記プロセッササイクルの低減を引き起こすステップが、前記ポータブル電子機器によって、該ポータブル電子機器に関連するスケジューラへのリクエストを使用することを有し、前記リクエストは、前記スケジューラに関連するキューから、前記仮想マシンに関連する少なくとも1つのプロセスを外すものである、方法を含んでよい。例38は、例32又は33のコンピュータ実装方法であって、前記ポータブル電子機器がスマートフォン、タブレットコンピュータ、ポータブルメディアプレイヤー、又はラップトップコンピュータである、方法を含んでよい。
様々な実施形態において、例39は、コンピュータデバイスで動作する仮想マシンを前記コンピュータデバイスのフォアグラウンドから前記コンピュータデバイスのバックグラウンドへ移動させる第1の予め定義されたイベントを検出する手段と、前記第1の予め定義されたイベントの検出に基づき、前記仮想マシンによって消費されるプロセッササイクルの低減を引き起こす手段と、前記仮想マシンを前記バックグラウンドから前記フォアグラウンドへ移動させる第2の予め定義されたイベントを検出する手段と、前記第2の予め定義されたイベントの検出に基づき、前記仮想マシンによって消費されるプロセッササイクルの増大を引き起こす手段とを有する装置であってよい。
様々な実施形態において、例40は、ポータブル電子機器に関連する仮想マシンがアイドル状態にあると決定する手段と、前記仮想マシンが前記アイドル状態にあるとの決定に基づき、前記仮想マシンによって消費される前記ポータブル電子機器のプロセッササイクルの低減を引き起こす手段と、前記仮想マシンに関連するゲストオペレーティングシステムに少なくとも1つの命令を実行させる少なくとも1つの入力を受け取る手段と、前記少なくとも1つの入力が受け取られたとの決定に応答して、前記仮想マシンによって消費される前記ポータブル電子機器のプロセッササイクルの増大を引き起こす手段とを有する装置であってよい。
前述の詳細な説明のいくつかの部分は、コンピュータメモリ内のデータビットに対する動作の符号表現及びアルゴリズムに関して示されてきた。それらのアルゴリズム記述及び表現は、当業者によって自身の作業の実体を他の当業者に最も効果的に伝えるために使用される方法である。アルゴリズムは、ここでは、一般的に、所望の結果を生じさせる動作のセルフコンシステントシーケンスであると考えられる。動作は、物理量の物理的な操作を必要とするものである。
なお、それら及び同様の語の全ては、適切な物理量に関連付けられるべきであり、それらの量に適用される都合の良いラベルにすぎない点が留意されるべきである。特段具体的に述べられない限り、前述の開示から明らかなように、本明細書の全体を通して、以下特許請求の範囲で示されているような用語を用いた議論は、コンピュータシステムのレジスタ及びメモリ内の物理(電子)量として表されるデータを処理して、コンピュータシステムメモリ若しくはレジスタ又は他のそのような情報記憶、伝送若しくは表示デバイス内の物理量として同様に表される他のデータへと変換するコンピュータシステム又は同様の電子コンピュータデバイスのアクション及びプロセスを指すと認識される。
本発明の実施形態は、本願で記載される動作を実施する装置にも関係がある。そのようなコンピュータプログラムは非一時的なコンピュータ可読媒体に記憶される。機械可読媒体は、機械(例えば、コンピュータ)によって読み出し可能な形で情報を記憶する如何なるメカニズムも含む。例えば、機械可読(例えば、コンピュータ可読)媒体は、機械(例えば、コンピュータ)可読記憶媒体(例えば、リードオンリーメモリ(“ROM”)、ランダムアクセスメモリ(“RAM”)、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイス)を含む。
図面において表されているプロセス又は方法は、ハードウェア(例えば、回路、専用ロジック、など)、ソフトウェア(例えば、非一時的なコンピュータ可読媒体において具現される。)、又は両者の組み合わせを有する処理ロジックによって実施され得る。プロセス又は方法は、いくつかの順次的な動作に関して先に記載されているが、当然ながら、記載されている動作は、異なる順序で実施され得る。更に、いくつかの動作は、順次的にというよりも、むしろ並行して、実施され得る。
本発明の実施形態は、如何なる特定のプログラミング言語に関しても記載されない。様々なプログラミング言語が、本願で記載される本発明の実施形態の教示を実施するために使用され得ると認識されるだろう。
前述の明細書において、本発明の実施形態は、その具体的な例となる実施形態を参照して記載されてきた。様々な変更が、以下の特許請求の範囲で示されている本発明の広い主旨及び適用範囲から逸脱することなしに、それらの実施形態に対して行われてよいことは明らかである。明細書及び図面は、然るに、限定の意味というよりも、むしろ例示の意味で考えられるべきである。

Claims (9)

  1. 仮想マシン電力管理機能を含むコンピュータデバイスであって、
    当該コンピュータデバイスでのゲストオペレーティングシステムを有する仮想マシンの実行を管理し、前記ゲストオペレーティングシステムに1つ以上の命令を実行させる少なくとも1つのイベントを検出する仮想マシンモニタと、
    前記仮想マシンモニタと結合され、前記仮想マシンがアイドル状態にあると決定し、前記仮想マシンが前記アイドル状態にあるとの決定に基づき、前記仮想マシンによって消費されるプロセッササイクルの低減を引き起こし、前記少なくとも1つのイベントの検出に応答して、前記仮想マシンによって消費されるプロセッササイクルの増大を引き起こすスマート仮想マシン電力マネージャと
    を有し、
    前記スマート仮想マシン電力マネージャは、当該コンピュータデバイスのスケジューラへのリクエストに基づき、前記仮想マシンによって消費されるプロセッササイクルの低減を引き起こし、
    前記リクエストは、前記スケジューラに関連するキューから、前記仮想マシンに関連する少なくとも1つのプロセスを外すものであるコンピュータデバイス。
  2. 当該コンピュータデバイスは、ポータブル電子機器である、
    請求項に記載のコンピュータデバイス。
  3. 前記スマート仮想マシン電力マネージャは、所定のインターバルの間のネットワークパケットの欠如に基づき、前記仮想マシンが前記アイドル状態にあると決定し、
    前記少なくとも1つのイベントは、ネットワーク上でのパケットの受信を含み、
    当該コンピュータデバイスは、
    前記仮想マシンモニタと結合され、前記ネットワーク上で受信される前記パケットを処理する受信器
    を更に有する、請求項1又は2に記載のコンピュータデバイス。
  4. 前記スマート仮想マシン電力マネージャは、他の所定のインターバルの間のボイスコールの欠如に基づき、前記仮想マシンが前記アイドル状態にあると決定し、
    前記少なくとも1つのイベントは、前記ボイスコールの受信を含み、
    前記受信器は、前記受信されたボイスコールを処理する、
    請求項に記載のコンピュータデバイス。
  5. 前記スマート仮想マシン電力マネージャは、ユーザインタラクションの欠如に基づき、前記仮想マシンが前記アイドル状態にあると決定し、
    前記少なくとも1つのイベントは、前記ユーザインタラクションの受信を含み、
    当該コンピュータデバイスは、
    前記仮想マシンモニタと結合され、前記ユーザインタラクションの受信を検出するユーザインターフェイス
    を更に有する、請求項乃至のうちいずれか一項に記載のコンピュータデバイス。
  6. ポータブル電子機器に、
    前記ポータブル電子機器で実行される仮想マシンがアイドル状態にあると決定させ、
    前記仮想マシンが前記アイドル状態にあるとの決定に基づき、前記仮想マシンによって消費されるプロセッササイクルの低減を引き起こさせ、
    前記仮想マシンに関連するゲストオペレーティングシステムに少なくとも1つの命令を実行させる少なくとも1つの入力を当該ポータブル電子機器が受け取ったことを決定させ、
    前記少なくとも1つの入力が受け取られたとの決定に応答して、前記仮想マシンによって消費されるプロセッササイクルの増大を引き起こさせる、
    コンピュータプログラムであって、
    前記コンピュータプログラムは更に、前記ポータブル電子機器に、
    前記ポータブル電子機器のスケジューラへのリクエストに基づき、前記仮想マシンによって消費されるプロセッササイクルの低減を引き起こさせ、
    前記リクエストは、前記スケジューラに関連するキューから、前記仮想マシンに関連する少なくとも1つのプロセスを外すものであるコンピュータプログラム
  7. 記ポータブル電子機器に更に
    前記仮想マシンを生成させ、
    前記生成された仮想マシンにおいてゲストオペレーティングシステムを実行させる、
    請求項に記載のコンピュータプログラム。
  8. 前記仮想マシンが前記アイドル状態にあるとの決定は、ユーザインタラクション、ネットワークアクティビティ、又はプロセッサアクティビティの所定期間の欠如の決定を含む、
    請求項又はに記載のコンピュータプログラム。
  9. 請求項乃至のうちいずれか一項に記載のコンピュータプログラムを記憶しているコンピュータ可読記憶媒体。
JP2016569380A 2014-06-24 2014-06-24 仮想マシン電力管理 Active JP6339240B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/080571 WO2015196343A1 (en) 2014-06-24 2014-06-24 Virtual machine power management

Publications (2)

Publication Number Publication Date
JP2017517812A JP2017517812A (ja) 2017-06-29
JP6339240B2 true JP6339240B2 (ja) 2018-06-06

Family

ID=54936419

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016569380A Active JP6339240B2 (ja) 2014-06-24 2014-06-24 仮想マシン電力管理

Country Status (6)

Country Link
US (1) US9921862B2 (ja)
EP (1) EP3161629A4 (ja)
JP (1) JP6339240B2 (ja)
KR (1) KR101864980B1 (ja)
CN (1) CN106415498B (ja)
WO (1) WO2015196343A1 (ja)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013100783A1 (en) 2011-12-29 2013-07-04 Intel Corporation Method and system for control signalling in a data path module
US9678497B2 (en) * 2013-08-30 2017-06-13 Regents Of The University Of Minnesota Parallel processing with cooperative multitasking
US10331583B2 (en) 2013-09-26 2019-06-25 Intel Corporation Executing distributed memory operations using processing elements connected by distributed channels
US10289437B2 (en) 2014-01-07 2019-05-14 Red Hat Israel, Ltd. Idle processor management in virtualized systems via paravirtualization
US10365936B2 (en) 2014-02-27 2019-07-30 Red Hat Israel, Ltd. Idle processor management by guest in virtualized systems
US10613606B2 (en) 2016-03-17 2020-04-07 Intel Corporation Wireless component state based power management
CN107870800A (zh) * 2016-09-23 2018-04-03 超威半导体(上海)有限公司 虚拟机活跃性检测
WO2018119710A1 (zh) * 2016-12-27 2018-07-05 深圳前海达闼云端智能科技有限公司 电源管理方法、装置、电子设备和计算机程序产品
WO2018156153A1 (en) 2017-02-24 2018-08-30 Intel Corporation Configuration of base clock frequency of processor based on usage parameters
US11086816B2 (en) 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging a configurable spatial accelerator
US11533272B1 (en) * 2018-02-06 2022-12-20 Amesite Inc. Computer based education methods and apparatus
US11307873B2 (en) 2018-04-03 2022-04-19 Intel Corporation Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US10891240B2 (en) 2018-06-30 2021-01-12 Intel Corporation Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator
US10853073B2 (en) 2018-06-30 2020-12-01 Intel Corporation Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
KR102214191B1 (ko) * 2018-11-21 2021-02-09 한국전자기술연구원 가상머신의 어플리케이션 중요도 평가를 통한 bmc기반 서버 전원 임계치 설정 방법
US10915471B2 (en) 2019-03-30 2021-02-09 Intel Corporation Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US10817291B2 (en) 2019-03-30 2020-10-27 Intel Corporation Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
US11157289B2 (en) * 2019-05-13 2021-10-26 Intel Corporation Power management method and apparatus for virtualized I/O devices
US11037050B2 (en) 2019-06-29 2021-06-15 Intel Corporation Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator
US11550607B2 (en) * 2019-09-27 2023-01-10 Red Hat, Inc. Processor core power management in a virtualized environment
US11797328B2 (en) * 2019-10-14 2023-10-24 Microsoft Technology Licensing, Llc Virtualized background activations
EP4123969A1 (en) * 2021-07-19 2023-01-25 Ratier-Figeac SAS Rescheduling mechanism for asynchronous devices
CN116627240B (zh) * 2023-07-25 2024-01-26 腾讯科技(深圳)有限公司 功耗调节方法、装置、电子设备、存储介质及程序产品

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0942368A2 (en) * 1998-03-10 1999-09-15 Lucent Technologies Inc. Context controller having automatic entry to power saving mode and processor employing the same
KR101128251B1 (ko) * 2004-10-11 2012-03-26 엘지전자 주식회사 실행 프로그램의 장치별 절전모드 제어 장치 및 방법
JP2006113767A (ja) * 2004-10-14 2006-04-27 Sony Corp 情報処理システム、および、情報処理方法、並びに、プログラム
JP2007140996A (ja) * 2005-11-18 2007-06-07 Matsushita Electric Ind Co Ltd ダウンロードクライアント、ダウンロードサーバー、ダウンロードシステム、ダウンロードクライアントプログラム、及びダウンロードサーバープログラム
WO2008149412A1 (ja) 2007-06-04 2008-12-11 Fujitsu Limited 情報処理装置、情報処理装置の制御方法及びコンピュータプログラム
US9405347B2 (en) * 2009-02-26 2016-08-02 Microsoft Technology Licensing, Llc Power-saving operating system for virtual environment
US8364997B2 (en) * 2009-12-22 2013-01-29 Intel Corporation Virtual-CPU based frequency and voltage scaling
JP5345990B2 (ja) * 2010-08-27 2013-11-20 レノボ・シンガポール・プライベート・リミテッド 特定のプロセスを短時間で処理する方法およびコンピュータ
JP5703799B2 (ja) * 2011-02-03 2015-04-22 富士通株式会社 計算機、制御方法及びプログラム
JP2012243096A (ja) * 2011-05-19 2012-12-10 Nippon Telegr & Teleph Corp <Ntt> ゲストos管理装置、ゲストos管理方法及びゲストos管理プログラム
JP5729146B2 (ja) * 2011-06-03 2015-06-03 富士通株式会社 情報端末装置、情報端末装置の制御方法およびプログラム
JP5696603B2 (ja) * 2011-06-29 2015-04-08 富士通株式会社 計算機システム、計算機システムの電力制御方法およびプログラム
US9311209B2 (en) 2012-11-27 2016-04-12 International Business Machines Corporation Associating energy consumption with a virtual machine

Also Published As

Publication number Publication date
WO2015196343A1 (en) 2015-12-30
KR20160145783A (ko) 2016-12-20
KR101864980B1 (ko) 2018-06-05
CN106415498A (zh) 2017-02-15
CN106415498B (zh) 2020-09-29
JP2017517812A (ja) 2017-06-29
EP3161629A1 (en) 2017-05-03
EP3161629A4 (en) 2018-03-07
US20160203012A1 (en) 2016-07-14
US9921862B2 (en) 2018-03-20

Similar Documents

Publication Publication Date Title
JP6339240B2 (ja) 仮想マシン電力管理
US10345889B2 (en) Forcing a processor into a low power state
US11181970B2 (en) System and method for performing distributed power management without power cycling hosts
US8910169B2 (en) Methods and systems to perform a computer task in a reduced power consumption state
EP3428801B1 (en) Scheduling method and electronic device
KR20200139150A (ko) 프로세서의 최적화된 스로틀링을 위한 시스템, 장치 및 방법
US9489223B2 (en) Virtual machine wakeup using a memory monitoring instruction
US20130227554A1 (en) Hypervisor-driven hibernation
US20150378782A1 (en) Scheduling of tasks on idle processors without context switching
US10613606B2 (en) Wireless component state based power management
CN107624181B (zh) 包括虚拟处理器的闲置和调度的虚拟机管理方法和装备
WO2014142847A1 (en) Multi-core binary translation task processing
US9507641B1 (en) System and method for dynamic granularity control of parallelized work in a portable computing device (PCD)
US20160170474A1 (en) Power-saving control system, control device, control method, and control program for server equipped with non-volatile memory
US9323317B2 (en) System and methods for DIMM-targeted power saving for hypervisor systems
US9612907B2 (en) Power efficient distribution and execution of tasks upon hardware fault with multiple processors
WO2023160359A1 (zh) 资源调度方法以及装置
KR102143269B1 (ko) I/o 동작 특성에 기초한 soc 유휴 전력 상태 제어를 위한 시스템 및 방법
CN114546612A (zh) 一种系统模式切换方法及电子设备
US11175938B2 (en) Central processing unit support for efficient timers at low power states
WO2017102038A1 (en) Method and arrangement for utilization of a processing arrangement
US20240211297A1 (en) Method for a primary virtual machine to schedule a task of sibling virtual machines
Kim et al. Fast operating system switcher for mobile CE devices
KR20210022850A (ko) 반도체 장치의 성능 부스팅 제어 방법 및 이를 수행하는 반도체 장치

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171019

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171107

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180207

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180509

R150 Certificate of patent or registration of utility model

Ref document number: 6339240

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250