JP6126311B2 - 待ち時間の影響を受けやすい仮想マシンをサポートするように構成されるcpuスケジューラ - Google Patents

待ち時間の影響を受けやすい仮想マシンをサポートするように構成されるcpuスケジューラ Download PDF

Info

Publication number
JP6126311B2
JP6126311B2 JP2016531956A JP2016531956A JP6126311B2 JP 6126311 B2 JP6126311 B2 JP 6126311B2 JP 2016531956 A JP2016531956 A JP 2016531956A JP 2016531956 A JP2016531956 A JP 2016531956A JP 6126311 B2 JP6126311 B2 JP 6126311B2
Authority
JP
Japan
Prior art keywords
central processing
virtual machine
processing units
virtual
physical central
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
JP2016531956A
Other languages
English (en)
Other versions
JP2016529613A (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.)
VMware LLC
Original Assignee
VMware LLC
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 VMware LLC filed Critical VMware LLC
Publication of JP2016529613A publication Critical patent/JP2016529613A/ja
Application granted granted Critical
Publication of JP6126311B2 publication Critical patent/JP6126311B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using 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/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
    • 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/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • 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]
    • 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/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
    • G06F9/5033Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
    • 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/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • H04L43/0894Packet rate
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/16Threshold monitoring
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/56Queue scheduling implementing delay-aware scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/80Actions related to the user profile or the type of traffic
    • H04L47/801Real time traffic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Environmental & Geological Engineering (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Stored Programmes (AREA)

Description

「待ち時間の影響を受けやすい(latency sensitive:待ち時間感度)」ものとして特徴付けられたアプリケーションは通常、アプリケーションが実行されるコンピューティング環境によってもたらされる実行遅延及びジッタ(すなわち、予測不能性)の影響を非常に受けやすい。待ち時間の影響を受けやすいアプリケーションの例としては金融取引システムが挙げられ、金融取引システムは通常、証券価格設定又は取引の実行及び決済等の機能を実行する際、瞬時応答時間を必要とする。
実行遅延及びジッタが、多くの場合、コンピュータハードウェア構成要素によって導入される。例えば、アプリケーションは、望ましくない待ち時間を導入し得るデータ記憶デバイスからデータを読み出すか、又はデータを書き込む入/出力(I/O)要求を発行し得る。さらに、低速又は不確実なネットワーク接続が遅延及び/又はジッタを生じさせ得る。幾つかの場合、特に、アプリケーションを実行中の仮想マシンが他の仮想マシン及び他のシステムタスクと処理リソースを共有する仮想化システムにおいて、ホストで実行されるオペレーティングシステムソフトウェアがそれ自体、遅延又はジッタの遅延源であり得る。第1に、仮想マシンは、処理リソースが不十分である場合、実行前に待つことを強いられ得る。さらに、仮想マシンが即時実行にスケジュールされている場合であっても、前に実行されていたプロセスを中止し、後で実行するためにキューに再び入れる必要があり、遅延がもたらされる。仮想マシンが他の(優先度のより高い)システムタスク又はハードウェア割り込みによってプリエンプトされる(preempted)状況もあり得る。最後に、ハイパースレッド処理又は周波数スケーリング(システム負荷に基づいて物理的プロセッサの動作速度の調整を提供する)等の特定のシステム特徴は、更なる遅延源であり得る。
複数のコンテナの実行をサポートする1つ又は複数の物理的中央演算処理装置(CPU)を有するホストコンピュータにおいて、コンテナはそれぞれ1つ又は複数のプロセスを含み、対応する物理的CPUへの排他的アフィニティを有するようプロセスの少なくとも1つを割り当てる方法が提供される。本方法は、第1のコンテナが待ち時間の影響を受けやすいと判断するステップと、判断に応答して、1つ又は複数の対応する物理的CPUへの排他的アフィニティを有するように第1のコンテナのプロセスのそれぞれを割り当てるステップとを含む。割り当てるステップは、対応する物理的CPU上で実行中のタスクをホストシステムの1つ又は複数の他の物理的CPUに移行するステップと、対応する物理的CPUのキュータスク及び割り込み処理を1つ又は複数の他の物理的CPUに向けるステップと、プロセスが排他的アフィニティを有する1つ又は複数の対応するCPUで第1のコンテナのプロセスのそれぞれのタスクを実行するステップとを含む。
更なる実施形態は、実行されると、上記方法の1つ又は複数の態様をホストコンピュータに実施させる命令を含む非一時的コンピュータ可読媒体及び上記方法の1つ又は複数の態様を実施するようにプログラムされたコンピュータシステムを提供する。
1つ又は複数の実施形態を実施し得る仮想化コンピューティング環境を示す図である。 実施形態による、待ち時間感度情報を記憶するテーブルを示すブロック図である。 実施形態による、待ち時間高感度仮想マシンの仮想CPUに物理的CPUを割り振るカーネルスケジューラを示す図である。 実施形態による、待ち時間高感度仮想マシンの仮想CPUに物理的CPUを割り振るカーネルスケジューラを示す図である。 実施形態による、待ち時間高感度仮想マシンの仮想CPUに1つ又は複数の物理的CPUへの排他的アフィニティを認める方法を示す流れ図である。 実施形態による、カーネルスケジューラが1つ又は複数の待ち時間高感度仮想マシンを実行するコンピュータホストでのタスクの実行をスケジュールする方法を示す流れ図である。
図1は、1つ又は複数の実施形態を実施し得る仮想化コンピューティング環境を示す。示されるように、コンピューティング環境は、ホストコンピュータ100と、仮想マシン(VM)管理サーバ150とを含む。VM管理サーバ150は、ローカル接続を介して、又は代替的にはリモートネットワーク接続(図示せず)を介してホストコンピュータ100と通信する。
ホストコンピュータ100は、実施形態では、オペレーティングシステム及び1つ又は複数のアプリケーションプログラムの実行をサポートする汎用コンピュータである。仮想化計算プラットフォームを含む様々な構成要素を実行するために、ホストコンピュータ100は通常、サーバクラスのコンピュータである。しかし、ホストコンピュータ100は、デスクトップ又はラップトップコンピュータであってもよい。
図1に示されるように、ホストコンピュータ100は、3つの異なる構成要素に論理的に分割される。第1に、実行空間120は、ユーザレベル(すなわち、非カーネルレベル)プログラムの実行をサポートする。ユーザレベルプログラムは非特権であり、特権命令の実行又はシステムメモリの特定の保護領域へのアクセス等の特定の特権機能を実行することができないことを意味する。実行空間120がサポートするプログラムは、特に、仮想マシン及びユーザプログラムである。
仮想マシンは、物理的計算デバイスのソフトウェア実施であり、物理的コンピュータと略同じようにプログラムを実行する。実施形態では、仮想マシンは、ソフトウェアにおいて、ゲストオペレーティングシステム(OS)の制御下でソフトウェアアプリケーションの実行をサポートする計算プラットフォームを実施する。したがって、仮想マシンは通常、特定の計算アーキテクチャをエミュレートする(emulate)。図1では、実行空間120はVM110〜110を含む。示される各VM110は1つ又は複数のアプリケーション111の実行をサポートし、各アプリケーション111は特定のゲストOS112の制御下で実行される。アプリケーション111は、例えば、ワードプロセッサ又はスプレッドシートプログラム(spreadsheet programs)等のユーザレベル(非カーネル)プログラムである。示される各ゲストOS112は、マイクロソフト社(Microsoft Corp.)からの任意のバージョンのウィンドウズ(Windows)(登録商標)オペレーティングシステム、リナックス(Linux)(登録商標)オペレーティングシステム、又はアップル社(Apple, Inc.)からのMac OS(登録商標)X等のよく知られた市販のオペレーティングシステムの1つであり得る。アプリケーション及びゲストOSがVM毎に異なり得ることに留意されたい。したがって、VM110内のアプリケーション111は、ゲストOS112としてウィンドウズ(Windows)(登録商標)7の制御下で実行されるマイクロソフト(Microsoft)のワード(Word)(登録商標)及びエクセル(Excel)(登録商標)アプリケーションを含み得る。これとは対照的に、VM110内のアプリケーション111は、ゲストOS112としてMacOS(登録商標)Xの制御下で実行されるサファリ(Safari)(登録商標)ウェブブラウザを含み得る。
仮想マシン110〜110に加えて、実行空間120は1つ又は複数のユーザプログラム115を含む。実施形態では、ユーザプログラム115は、任意の仮想マシンから独立して実行されるソフトウェア構成要素である。ユーザプログラム115の例としては、カーネルとの通信の促進、ディレクトリサービスの提供等の様々なシステム指向機能(system-oriented functions)を実行するユーティリティが挙げられる。そのようなプログラムは、仮想マシンのように、ユーザレベルで実行され、これらのプログラムが特定の特権(カーネルレベル)機能を実行することができないことを意味する。図1に示されるように、各VM110〜110及びユーザプログラム115は、本明細書ではハイパーバイザ130と呼ばれるハイパーバイザ構成要素と通信する。
ハイパーバイザ130は、図1に示されるように、コンピュータホスト100でプロセスを実行するためのオペレーティングシステムプラットフォームを提供する。ハイパーバイザ130は、コンピュータホスト100内の全てのハードウェアデバイスを制御し、そこで実行される全てのアプリケーションのシステムリソースを管理する。ハイパーバイザ130が提供するコア機能は、特に、コンソールサービス、ファイルシステムサービス、デバイスドライバ、及びリソーススケジューリングである。さらに、ハイパーバイザ130は、ホストコンピュータでの1つ又は複数の仮想マシンのインスタンス化を提供するソフトウェア構成要素を実施する。
図1の実施形態に示されるように、ハイパーバイザ130は仮想マシンモニタ(VMM)131〜131を含む。各VMM131は実行中のVM110に対応する。したがって、VMM131はVM110に対応し、VMM131はVM110に対応し、以下同様である。各VMM131は、対応する仮想マシンのゲストOSに仮想ハードウェアプラットフォームを提供するソフトウェアレイヤである。対応するVMが、ハイパーバイザ130のカーネル構成要素(図1ではカーネル136として示される)によって提供されるサービスにアクセスするのは、特定のVMM131を通してである。カーネル136によって実行される機能は、特に、メモリ管理、ネットワーキング及び記憶スタックの提供、及びプロセススケジューリングである。
図1での各VMM131は、対応するVM110の仮想ハードウェアプラットフォームを実施する。実施される仮想ハードウェアプラットフォームの構成要素は、特に、1つ又は複数の仮想中央演算処理装置(又はVCPU)125である。したがって、VMM131は第1の組のVCPU125を実施し、VMM131は第2の組のVCPU125を実施し、以下同様である。各VCPU125は、対応するVM110で実行されるアプリケーション111及びゲストOS112の観点から、物理的CPUとして見える。このようにして、仮想マシン内で実行される仮想化ゲストオペレーティングシステムは、コンピュータホストで直接実行されるオペレーティングシステムが(すなわち、非仮想化的に)、物理的CPUでの実行に向けてプロセスをスケジュールしディスパッチするのと同じように、1つ又は複数の仮想CPUでの実行に向けてプロセスをスケジュールし、ディスパッチし得る。しかし、ハイパーバイザ130の観点から(典型的な実施形態では、コンピュータホスト100で直接実行される)、各VCPU125は、コンピュータホスト100の物理的CPUでスケジュールされディスパッチされるプロセスである。
1つ又は複数の実施形態では、カーネル136は、コンピュータホスト100のVM110と物理的ハードウェアとの連絡部として機能する。カーネル136は、中央オペレーティングシステム構成要素であり、ホスト100で直接実行される。実施形態では、カーネル136は、メモリを割り振り、物理的CPUへのアクセスをスケジュールし、コンピュータホスト100に接続された物理的ハードウェアデバイスへのアクセスを管理する。
図1に示されるように、カーネル136は1つ又は複数のカーネルスレッド132を実行する。カーネルスレッド132は、メモリ及びデバイスの管理等のオペレーティングシステム機能を実行し、(非特権モードで実行される、上述したユーザプログラム115とは対照的に)特権モードで実行されるプロセスである。カーネル136は割り込みモジュール133も含む。実施形態によれば、割り込みモジュール133(割り込みハンドラと呼ばれることもある)は、1つ又は複数のオペレーティングシステム機能を含み、その実行は、ハードウェアデバイスによって生成される等の割り込みの検出によってトリガーされる。割り込みモジュール133は、特定のハードウェアデバイス又はソフトウェアモジュールによって生成される割り込みに応答する幾つかのタイプの割り込みハンドラを含む。割り込みモジュール133内の各割り込みハンドラは、カーネルスレッド132と略同じように、カーネルレベルのプロセスとして実行される。
カーネル136はカーネルスケジューラ135も含む。カーネルスケジューラ135は、コンピュータホスト100の物理的CPUでの実行に向けてタスクをスケジュールすることを担う。コンピュータホスト100で実行される全てのタスクが、基本となるハードウェアリソースを共有しなければならないことに留意されたい。これは、ランダムアクセスメモリ、外部ストレージ、及び物理的CPUでの処理時間を含む。したがって、カーネルスケジューラ135が処理に向けてスケジュールするタスクは、VCPU125(VMを実行する仮想CPUである)と、ユーザプログラム115と、カーネルスレッド132と、割り込みモジュール133の一環として実行される割り込みハンドラとを含む。実際に、図1に示されるように、これらのプロセスタイプのそれぞれは、カーネルスケジューラ135に供給されるものとして示されている。実施形態では、カーネルスケジューラ135は、各物理的CPU(図示せず)に別個の実行キューを保持する。すなわち、カーネルスケジューラ135は、プロセスを特定の物理的CPUの実行キューに配置することにより、その特定の物理的CPUでの実行に向けてそのプロセスをスケジュールする。通常、物理的CPUは、それ自体のキューから実行するプロセスを選択するだけである。
しかし、他の物理的CPUが対応する実行キュー内で待機中のジョブを有する間、ある物理的CPUがアイドルにあることが生じ得る。したがって、周期的に、カーネルスケジューラ135はキューをリバランスする。すなわち、特定の物理的CPUの実行キューが長い場合、カーネルスケジューラ135は、その実行キュー内のタスクの幾つかを、あまり忙しくない物理的CPUの実行キューに移す。カーネルスケジューラ135が、個々の物理的CPUの実行キューを保持しリバランスするプロセスについて、より十分に以下に説明する。
図1は、コンピュータホスト100の別の構成要素であるハードウェアプラットフォーム140も示す。ハードウェアプラットフォーム140は、コンピュータホスト100の全ての物理的なデバイス、チャネル、及びアダプタを含む。ハードウェアプラットフォーム140は、ネットワーク通信用のネットワークアダプタ(図示せず)と、外部記憶デバイスへの通信を可能にするホストバスアダプタ(HBS:host bus adapter)(図示せず)とを含む。さらに、ハードウェアプラットフォーム140は、コンピュータホスト100の物理的CPU(本明細書ではPCPUと呼ばれる)を含む。図1に示されるように、コンピュータホスト100はM PCPU145〜145を有する。図に示されるように、カーネルスケジューラ135は、1つ又は複数のPCPU145での実行に向けてタスクをスケジュールしディスパッチする。
ハードウェアプラットフォーム140はランダムアクセスメモリ(RAM)141も含み、RAM141は、特に、現在実行中のプログラム及びそのようなプログラムに必要とされるデータを記憶する。さらに、カーネルスケジューラ135が各PCPUに保持する実行キューは通常、RAM141内に保持される。
待ち時間高感度仮想マシンの実行に必要な構成、識別、及びスケジューリングの変更をサポートするために、図1に示される実施形態はVM管理サーバ150を含む。VM管理サーバ150は、実施形態では、コンピュータホスト100内又はコンピュータホスト100からリモートに(図1に示されるように)実行されるサーバアプリケーションである。VM管理サーバ150の実施形態は、システム管理者が1つ又は複数のホストコンピュータでの実行に向けて仮想マシンを定義し、構成し、展開できるようにするインターフェース(グラフィカルユーザインターフェース(又はGUI)等)を提供する。
さらに、VM管理サーバ150は待ち時間高感度仮想マシンとしての仮想マシンの構成を提供する。1つ又は複数の実施形態によれば、VM管理サーバ150は待ち時間感度テーブル155を保持し、このテーブルは、仮想マシンの待ち時間感度特徴を定義する。待ち時間感度テーブル155については、更に詳細に以下に説明する。
図1に示されるように、VM管理サーバ150は、直接ローカル接続又はコンピュータネットワークを介してコンピュータホスト100と通信する。そのような通信を促進するために、VM管理エージェント134はコンピュータホスト100で実行される。VM管理エージェント134はカーネル136の一部分ではないが、VM管理エージェントの実施形態はハイパーバイザ130内でハイパーバイザレベルで実行される。しかし、他の実施形態では、VM管理エージェント134は、実行空間120内でユーザプログラムとして実行され得る。VM管理エージェント134のプロセスもカーネルスケジューラ135によって実行に向けてスケジュールされることに留意されたい。
VM管理エージェント134は、命令をVM管理サーバ150から受信し、VM管理サーバ150の代理としてタスクを実行する。VM管理エージェント134によって実行されるタスクとは、特に、仮想マシンの構成及びインスタント化である。仮想マシンの構成の一態様は、仮想マシンが待ち時間高感度であるか否かである。したがって、VM管理エージェント134は、待ち時間感度テーブル155のコピーを受信し、基本データを待ち時間感度データ143としてRAM141内に保存する。図1に示されるように、待ち時間感度データ143がRAMに保存されると、カーネルスケジューラ135はその情報にアクセスして、どの仮想マシンが待ち時間高感度であるかを判断する。1つ又は複数の仮想マシンが待ち時間高感度であると判断されると、カーネルスケジューラ135は特定のスケジュール変更を行い、これらの仮想マシンのニーズに応える。
図2は、待ち時間感度テーブル155の一実施形態を示すブロック図である。図に示されるように、待ち時間感度テーブル155は複数行(multiple rows)のデータを記憶し、各行はホスト100内の特定の仮想マシンに対応する。各仮想マシンは、一意のVM ID210によってホスト上で識別される。VM ID210は、仮想マシンに関連付けられた任意の一意の二進値又は英数値であり得る。図2に示されるように、待ち時間感度テーブル155は、図1に示されるN個の仮想マシンVM110〜110に対応するN個のエントリ(VM ID210〜210の)を有する。
VM ID210毎に、待ち時間感度テーブル155は2つの値を記憶する。第1の値は待ち時間感度インジケータである。このインジケータは2つの別個の値(Y又はN等)を有し、この値は、対応する仮想マシンが待ち時間高感度であるか否かを示す。他の実施形態では、待ち時間感度インジケータは3つ以上の値(例えば、高、中、低、又は普通)を有し、対応する仮想マシンの異なる程度の待ち時間感度の指定を提供する。図2では、VM ID210(VM110に対応する)は、待ち時間感度インジケータがYに設定されているため、待ち時間高感度の仮想マシンを識別する。他方、(VM110及び110にそれぞれ対応する)VM ID210及びVM ID210は、対応する待ち時間感度インジケータがNに設定されているため、待ち時間高感度仮想マシンではない仮想マシンを識別する。例えば、VM110は、リアルタイム金融取引アプリケーションを実行する仮想マシンであり、一方、VM110及び110は、通常、瞬時応答時間を必要とせず、一般に、仮想化コンピューティング環境で生じ得るジッタによる影響を受けないバッチ処理アプリケーション(課金システム等)を実行する仮想マシンであり得る。
待ち時間感度テーブル155が記憶する第2の値は、「エンタイトルメント(entitlement)」値である。仮想マシンのCPUリソースエンタイトルメントは、CPU確保値、CPU制限値、及びCPU共有値を指定することによって調整し得る。CPU確保値は、仮想マシンへのCPUリソースの保証された最小割り振りを表す。逆に、CPU制限値は、仮想マシンへのCPUリソースの最大割り振りを表す。最後に、CPU共有値は、他の仮想マシンに割り振られたCPUリソースの量に相対して仮想マシンに割り振られるCPUリソース量を表す。したがって、CPUが割り振りを共有する場合、仮想マシンのCPUエンタイトルメントは、他の仮想マシンが電源オン(powered-on)、電源オフ(powered-off)、又は各自のCPU共有値が構成される際、動的に変更され得る。
図2に示される実施形態では、エンタイトルメント値は割合である。この実施形態では、エンタイトルメント値は、所与のVMの仮想CPUのCPUリソースの確保割合(すなわち、CPU確保値)を表す。すなわち、エンタイトルメント値によって表される確保は、対応する仮想マシンに保証された最小割り振りを指定する。実施形態によれば、仮想マシンは、その仮想マシンの確保を満たすために十分な未確保CPUリソースが利用可能な場合のみ、電源オンされ得る。エンタイトルメント値が割合として表現されることに限定されないことに留意されたい。他の実施形態では、エンタイトルメント値は、確保されたCPUサイクル数(ギガヘルツ(GHz)単位でのプロセッサの速度の特定の部分等)として表現され得る。
図2では、(VM ID210によって識別されるように)VM110は、100パーセント(%)のエンタイトルメント値を有し、物理的CPUの100%がVM110に関連付けられたVCPU(すなわち、VCPU125)に確保されることを意味する。この例では、VM110が1つのみのVCP125を有すると仮定されることに留意されたい。しかし、VM110が2つ以上のVCPUを有する場合、それらのVCPUのそれぞれは、1つの物理的CPUの確保容量の100%を共有する。
図2を参照すると、(VM ID210によって識別されるように)VM110は、100%の対応するエンタイトルメント値を有する。したがって、(Nに設定された待ち時間感度インジケータによって示されるように)VM110は待ち時間高感度ではないが、ホストは、物理的CPUの容量の100%をVM110に確保する。さらに、(VM ID210によって識別されるように)VM110は、50%というエンタイトルメント値を有し、物理的CPUの容量の50%が、その仮想マシンの仮想CPU(すなわち、VCPU125)の実行に確保されることを意味する。
1つ又は複数の実施形態によれば、仮想マシンが待ち時間高感度であり、且つ最大エンタイトルメント値を有する場合、その仮想マシンには、1つ又は複数の物理的CPUへの排他的アフィニティ(exclusive affinity)が認められる。例えば、VM110が1つの仮想CPU VCPU125を有すると仮定すると、VM110(又は同等に、VCPU125)には、コンピュータホスト100内の1つの物理的CPU(すなわち、PCPU145〜145の1つ)への排他的アフィニティが付与される。他方、VM110が2つの仮想CPUを有する場合、両方の仮想CPUに物理的CPUへの排他的アフィニティが付与されるように、VM ID210の待ち時間感度テーブル155内のエンタイトルメント値は、200%に設定される(すなわち、VM110に対応する1組のVCPU125内の各仮想CPUに100%を確保)。
仮想マシンの仮想CPUが物理的CPUへの排他的アフィニティを有する場合、物理的CPUは、効率的に、その特定の仮想CPUの実行専用である。すなわち、カーネルスケジューラ(すなわち、カーネルスケジューラ135)は、物理的CPUがアイドル状態であっても、仮想CPUが排他的アフィニティを有する物理的CPUでのいかなるプロセスの実行のスケジュールも避ける。さらに、カーネルスケジューラ135は、物理的CPUでの大半の割り込み処理のスケジュールも割ける。その代わり、仮想CPUが他の物理的CPUへの排他的アフィニティを有さない場合、割り込み処理はそのような他の物理的CPUでスケジュールされディスパッチされる。
さらに、実行中の仮想マシンが、Yに動的に設定された待ち時間感度インジケータを有するとともに、最大割合値に動的に設定されたエンタイトルメントを有する場合、カーネルスケジューラ135はそれらの構成変更を検出する(又はそれらの構成変更が通知される)。さらに、カーネルスケジューラ135は、待ち時間感度インジケータが以前はYに設定され、エンタイトルメントが以前は最大割合に設定されていた仮想マシンが電源投入されたときを検出する(又はそのときが通知される)。何れの場合でも、カーネルスケジューラ135は、所要数の物理的CPUを仮想マシンの仮想CPUに割り振るステップをとる。したがって、仮想マシンの電源投入時(又は代替的には、仮想マシンの待ち時間感度インジケータ及びエンタイトルメントが変更されたとき)に、全ての物理的CPUがタスクを実行中である場合、カーネルスケジューラ135は、実行中のタスクをある物理的CPUから別の物理的CPUに移行する。カーネルスケジュールは、仮想マシンの仮想CPUの数と同じ数の物理的CPUに対してこの移行を実行する。したがって、仮想マシンの仮想CPUが、実行する必要があるタスクを有する場合、それらのタスクは、いかなるスケジューリングオーバーヘッド又はコンテキスト切り換えオーバーヘッドを発生させずに、割り振られた物理的CPUで直接実行される。さらに、実施形態によれば、カーネルスケジューラ135は、最小数の物理的CPUが非待ち時間高感度仮想マシンのタスクの処理に利用可能なことを保証する。これらの実施形態では、待ち時間高感度仮想マシンに電源が投入され、幾つかの物理的CPUが割り振られると、結果として、非待ち時間高感度タスクの処理に利用可能な物理的CPUの数はこの最小数未満になり、その場合、その仮想マシンは電源投入されない。
仮想マシンが、最大確保割合に設定されたエンタイトルメント値(すなわち、その仮想マシンの仮想CPUのそれぞれについて100%)を有し得るが、いかなる特定の物理的CPUにも排他的アフィニティをまだ有さないことを留意されたい。この事例の例は、待ち時間感度テーブル155内のVM ID210で図2に示されている。VM ID210は、100%のエンタイトルメント値を有する(これは、VM110が1つの仮想CPUを有すると仮定して、最大確保割合である)。しかし、図2に示されるように、VM ID210は、Nに設定された待ち時間感度インジケータを有し、VM110が待ち時間高感度ではないことを意味する。この場合、カーネルスケジューラ135は、VM110の仮想CPU(すなわち、VCPU125)に、所与の物理的CPUの全(すなわち、100%)割り振りが付与されることを保証する。しかし、この場合、VCPU125は、物理的CPUへの排他的アクセスを有さない。すなわち、VCPU125に割り振られた物理的CPUがアイドルになる場合、カーネルスケジューラ135は、他のタスクをこの物理的CPUにスケジュールする。VCPU125がアクティブになる場合、これらの他のタスクは(最終的に)プリエンプトされ、VCPU125のタスクは、その物理的CPUでの処理に向けてスケジュールされる。しかし、これは、VCPU125が所与の物理的CPUに対して有する排他的アフィニティとは異なり、その理由は、VCPU125の場合では、その物理的CPUがアイドルになったとき、スケジューリングオーバーヘッドが、その物理的CPUでの他のタスクのスケジューリング、実行、及びプリエンプトによって生じるためである。上述したように、物理的CPUに対して排他的アフィニティを有する仮想マシン(待ち時間高感度VM110等)の場合、このスケジューリングオーバーヘッドは効率的になくなる。
待ち時間高感度仮想マシンに、1つ又は複数の特定の物理的CPUへの排他的アフィニティが付与されるが、別のプロセス(仮想マシンの仮想CPUに関連しない)が、希であるが、1つ又は複数の特定の物理的CPUで実行されることが可能なことにも留意されたい。これらの例外的状況について、更に詳細に以下に説明する。
図3A及び図3Bは、1つ又は複数の実施形態による、待ち時間高感度仮想マシンの仮想CPUへの物理的CPUの割り振りを示す概念図である。図3Aでは、VM110は、(待ち時間感度テーブル155内のエントリによって前に定義されたように)待ち時間高感度仮想マシンであり、十分なエンタイトルメント値(すなわち、仮想CPUのそれぞれに100%の確保)を有する。図3AのVM110は1つのVCPU125を有し、(単に例示を目的として)これはVM110の部分であるものとして示されている。
図3Aでは、カーネルスケジューラ135は、まず、タスクをタスクプール310から受信することによってそれらのタスクをスケジュールし、タスクプール310は、物理的CPUでの実行時間を必要とするタスクを含む。図3Aでは、1つのみの未スケジューリングタスク(タスク300)がタスクプール310内にある。次に、カーネルスケジューラ135は、各タスクを実行キュー320に入れ、各実行キュー320は物理的CPU(PCPU)145に対応する。図3Aの実施形態が3つのPCPU145〜145を有することに留意されたい。したがって、実行キュー320はPCPU145のタスクを入れ、実行キュー320はPCPU145のタスクを入れ、実行キュー320はPCPU145のタスクを入れる。
図中、カーネルスケジューラ135は、VM110の電源投入又は代替として、VM110に対応する待ち時間感度インジケータの変更を検出する(又は通知される)。次に、カーネルスケジューラ135は、(待ち時間感度テーブル155内の対応するエントリを調べることを通して)VM110が待ち時間高感度であると判断するとともに、VM110(又はより正確にはVCPU125)が排他的アフィニティを有するべき1つの物理的CPUが割り振られるべきであると判断する。示される実施形態では、カーネルスケジューラ135は、VCPU125への割り振りにPCPU145を選択する。しかし、示されるように、PCPU145はタスク300を実行中である。さらに、実行キュー320(PCPU145の実行キュー)は、内部に入った3つのタスク(すなわち、タスク300、300、及び300)を有する。したがって、VCPU125にPCPU145への排他的アフィニティが認められる前に、カーネルスケジューラ135は、これらのタスクを他の物理的CPUに移行する。例えば、図3Aに示されるように、タスク300(現在、PCPU145で実行されている)は、PCPU145で実行されるように直接移行される。タスク300が、PCPU145に直接実行されるように移行されてもよく、又は代替的に、実行キュー320若しくは実行キュー320の何れのプロセッサのキューに入れてもよいことに留意されたい。
カーネルスケジューラ135は、実行キュー320内で実行待機中のタスクも移行する。したがって、図3Aに示されるように、タスク300は実行キュー320に移行され、タスク300及び300は実行キュー320から実行キュー320に移行される。このようにして、タスク移行が完了すると、PCPU145は、VCPU125のタスクの実行専用にし得る。
図3Bに示されるように、VCPU125がVM110のタスクを実行開始する場合、これらのタスクはPCPU145で直接実行される。すなわち、カーネルスケジューラ135は一般に、VCPU125に関連しない任意のタスクをPCPU145で実行することを控える。これは、PCPU145に対応する実行キューがないことによって示されている。しかし、カーネルスケジューラ135は、タスクプール310からタスクを引き続き受信し、これらのタスクを実行キュー310及び310でスケジュールする。さらに、カーネルスケジューラ135は、PCPU145と145との間で負荷バランシングを実行する。すなわち、これらのPCPUの何れかがアイドルになる場合、カーネルスケジューラ135は、他のPCPUの実行キューからタスクを除去し、アイドルPCPUの実行キューに移す。しかし、仮にPCPU145(VCPU125が排他的アフィニティを有する)がアイドルになる場合、カーネルスケジューラ135は、そのPCPUにスケジュールされるべきいかなるタスクも移行しない。
図4は、実施形態による、待ち時間高感度仮想マシンの仮想CPUに1つ又は複数の物理的CPUを割り振る方法400を示す流れ図である。実施形態では、方法400は、本明細書に記載されるカーネルスケジューラ135等のカーネルスケジューラによって実行される。
方法400はステップ405において開始され、カーネルスケジューラは、仮想マシンの状態変化を検出する(又は通知される)。1つ又は複数の実施形態では、カーネルスケジューラが検出する状態変化は、以前は電源オフ状態であった仮想マシンの電源投入である。他の実施形態では、カーネルスケジューラが検出する状態変化は、仮想マシンの待ち時間感度に関連する仮想マシンの構成設定の変化である。次に、ステップ410において、カーネルスケジューラは、仮想マシンが待ち時間高感度であるか否かを判断する。上述したように、カーネルスケジューラ135の1つ又は複数の実施形態は、待ち時間感度情報を記憶したRAM内のテーブル(又は同様のデータ構造)を調べて、仮想マシンが、(a)Y(又は仮想マシンの待ち時間感度を示す何らかの値)に設定された待ち時間感度インジケータを有するか否か、及び(b)(待ち時間感度テーブル155内のエンタイトルメント値によって図2に表されるように)仮想CPUに十分なCPUエンタイトルメントが設定されているか否かを判断する。本明細書に記載される実施形態では、十分なCPUエンタイトルメントは、100%で乗算された仮想CPU数として表され得る。すなわち、仮想マシンが1つの仮想CPUを有する場合、十分なCPUエンタイトルメントは100%である。仮想マシンが2つの仮想CPUを有する場合、十分なCPUエンタイトルメントは200%であり、以下同様である。図2に示される実施形態では、エンタイトルメント値が、上述したように、CPU確保(すなわち、保証された最小CPU割り振り量)を表すことに留意されたい。
ステップ405において、カーネルスケジューラ135が、仮想マシンが待ち時間高感度ではないと判断する場合、方法400は終了する。すなわち、仮想マシンの仮想CPUのプロセスは、非待ち時間高感度仮想マシンに対してカーネルスケジューラによって実施されるスケジューリングポリシーに従ってスケジュールされる。しかし、カーネルスケジューラが、仮想マシンが待ち時間高感度であると判断する場合、方法400はステップ415に進む。
ステップ415において、カーネルスケジューラ135は、コンピュータホストが、仮想マシンの全ての仮想CPUの排他的アフィニティをサポートするために十分な数の物理的CPUを有するか否かを判断する。例えば、コンピュータホスト100が6つの物理的CPUを有し、仮想マシンが5つの仮想CPUを有する場合、カーネルスケジューラ135は、仮想マシンの排他的アフィニティをサポートするために不十分な物理的CPUがあると判断する。これは、非待ち時間高感度タスクに少なくとも2つの物理的CPUを保持するというポリシーを仮定する。しかし、仮想マシンが4つ以下の仮想CPUを有する場合、カーネルスケジューラ135は、仮想マシンの全ての仮想CPUの排他的アフィニティをサポートするために十分な物理的CPUリソースがあると判断する。さらに、利用可能な物理的CPUのプールは、他の待ち時間高感度仮想マシンに既に割り振られた物理的CPUの任意の数だけ低減される。
ステップ415において、カーネルスケジューラ135が、仮想マシンの排他的アフィニティをサポートするために不十分な物理的CPUリソースがあると判断する場合、方法400は終了する。しかし、カーネルスケジューラ135が、仮想マシンに割り振る十分な物理的CPUがあると判断する場合、方法400はステップ420に進む。
ステップ420において、カーネルスケジューラ135は、次の仮想CPU(すなわち、仮想マシンの仮想CPUの1つ)及び(コンピュータホスト100上の物理的CPUの1つに対応する)次の物理的CPUの両方を設定する。カーネルスケジューラ135が、CPU速度、プロセッサがアイドルであるか否か、物理的CPUのキューに現在入っているタスク数、及び仮想マシンの非均一メモリアクセス(non-uniform memory access:NUMA)ホームノード割り当て等の様々な要因に基づいて物理的CPUの選択を行うことに留意されたい。次に、ステップ425において、カーネルスケジューラ135は、次の物理的CPUへの排他的アフィニティを有するように、次の仮想CPUを割り当てる。カーネルスケジューラ135は、仮想CPUと物理的CPUとを関連付けるメモリ(図示せず)内のデータ構造を更新することにより、この割り当てを行い得る。
ステップ430において、カーネルスケジューラ135は、次の物理的CPUで実行中の任意のタスクを中止し、このタスクを別の物理的CPUに移行する。ターゲット物理的CPUは、「非排他的」物理的CPUであり、任意の他の仮想マシンの仮想CPUは、ターゲット物理的CPUへの排他的アフィニティを有さない。移行は、カーネルスケジューラが移行されたタスクをそれ自体の実行キューに配置することによってターゲット物理的CPUのキューに入れることによって行うことができる。幾つかの実施形態では、カーネルスケジューラは、前に実行中であったタスクの優先度又は状態を特定し、優先度に応じて、ターゲット物理的CPUでの任意の実行中のタスクをプリエンプトし、移行されたタスクをターゲット物理的CPUで即座に実行開始し得る。
次に、ステップ435において、カーネルスケジューラ135は、次の物理的CPUのキューに入れられたタスクを1つ又は複数の他の物理的CPUに移行する。これらの他のターゲット物理的CPUは、任意の1つの特定の仮想CPUのタスク実行専用ではない。換言すれば、任意の他の仮想マシンの仮想CPUは、ターゲット物理的CPUのいずれにも排他的アフィニティを有さない。実施形態では、カーネルスケジューラ135は、移行されたタスクを次の物理的CPUの実行キューから除去し、1つ又は複数の実行キュー内に移行タスクを配置することにより、移行タスクをキューに入れ、1つ又は複数の実行キューのそれぞれは、ターゲット物理的CPUの1つに対応する。仮想マシンに次の物理的CPUへの排他的アフィニティが認められている場合であっても、次の物理的CPUから移行することができない幾つかのタスクがあることに留意されたい。これらの例外的タスクについて、更に十分に以下に説明する。次に、方法400はステップ435に進む。
ステップ440において、カーネルスケジューラ135は、略全てのマシン割り込み処理を次の物理的CPUからターゲット「非排他的」物理的CPUに移行する。したがって、次の物理的CPUが待ち時間高感度仮想マシンの仮想CPUに割り当てられると、ハードウェア割り込み(通常、対応するデバイスへの割り込みハンドラによってインターセプトされる)は、次の物理的CPU以外の物理的CPUで処理される。例えば、割り込みは、物理的ネットワークアダプタで行われ得る。次に、これに応答して、ハイパーバイザ130は、ネットワークアダプタの対応する割り込みハンドラを呼び出し得る。割り込みハンドラは、全てのタスクのように、CPU実行サイクルを必要とする。しかし、カーネルスケジューラ135は、そのような処理を次の物理的CPU(すなわち、待ち時間高感度仮想マシンに割り当てられた物理的CPU)から離れて、むしろ、1つ又は複数の「非排他的」物理的CPU(すなわち、仮想CPUが排他的アフィニティを有さない物理的CPU)に向ける。ハードウェア割り込み処理の大半は、次の物理的CPUにスケジュールされないが、移行されない幾つかのハードウェア割り込みがある。そのような割り込みは、ローカルアドバンスト割り込みプログラムコントローラ(APIC:advanced interrupt program controller)割り込み、プロセッサ間割り込み(IPI:inter−processor interrupt)、及び特定のボトムハーフ(BH:bottom−half)ハンドラを含み、これらは全て、次の物理的CPUでローカライズされ、それにより処理されなければならない。
カーネルスケジューラ135が次の物理的CPUから離れて割り込み処理を実施すると、方法400はステップ445に進む。ステップ445において、カーネルスケジューラ135は、次の物理的CPUの周波数スケーリングをオフにする。1つ又は複数の実施形態では、周波数スケーリングは、CPUの負荷要件に応じて、物理的CPUの周波数の動的切り換えを提供する。したがって、プロセッサが低負荷要件である場合、その周波数は下方調整されて、より低い電力を消費するようにCPUを動作させる。例えば、プロセッサは、2GHzから600メガヘルツ(MHz)に調整された動作周波数を有し得る。しかし、物理的CPUの動作周波数の調整は、システム負荷の常時モニタリングを必要とし、これは、実行待ち時間の一因となる処理サイクルを消費する。したがって、排他的アフィニティを有する仮想マシンに割り当てられた物理的CPUの場合、周波数スケーリングはディセーブルされる。ディセーブルは、実施形態によれば、P0等の特定の性能状態(「P状態」)でプロセッサにおいて実行されることにより、達成し得る。この状態は、待ち時間高感度仮想マシンが、周波数スケーリングがディセーブルされる物理的CPUに排他的アフィニティを有する限り、維持される。
ステップ450において、カーネルスケジューラ135は、仮想マシンが、1つ又は複数の他のプロセッサへの排他的アフィニティを要求する追加の仮想CPUを有するか否かを判断する。仮想マシンが更なる仮想CPUを有さない場合、方法400は終了する。しかし、仮想マシンが追加の仮想CPUを有する場合、方法400はステップ420に戻り、カーネルスケジューラ135は次の仮想CPU及び次の物理的CPUを設定する。次に、方法400は、仮想マシンが有する追加の仮想CPUの数と同じだけ、ステップ425〜450を繰り返す。仮想マシンの全ての仮想CPUに、物理的CPUへの排他的アフィニティが付与されると、方法は終了する。
図5は、1つ又は複数の実施形態による、1つ又は複数の待ち時間高感度仮想マシンの実行をサポートするコンピュータホストにおいてタスクをスケジュールする方法500を示す流れ図である。方法500は、上述したカーネルスケジューラ135等のコンピュータホストで実行されるカーネルスケジューラによって実行される。
方法500はステップ510において開始され、カーネルスケジューラ135は、コンピュータホストで実行されるべきタスクを受信する。図3A及び図3Bに示されるように、処理サイクルを必要とするタスクは、タスクプール310等のタスクプールから受信し得る。次に、ステップ520において、カーネルスケジューラは、実行されるべきタスクが待ち時間高感度仮想CPUに関連付けられているか否かを判断する。1つ又は複数の実施形態では、カーネルスケジューラ135は、タスクが仮想マシンの実行中の仮想CPUであると判断し、仮想マシンに特定の物理的CPUへの排他的アフィニティが認められているか否かを更に判断することにより、この判断を行う。カーネルスケジューラ135が、仮想マシンが待ち時間高感度であり、したがって、その仮想CPUが特定の仮想CPUに対して排他的アフィニティを有すると判断する場合、カーネルスケジューラ135は、ステップ530において、仮想CPUが排他的アフィニティを有する物理的CPUでタスクを即座に実行する。物理的CPUが既に、スケジュール中の同じ仮想CPUに対応するタスクを実行中である場合、カーネルスケジューラ135が、受信したタスクをその物理的CPUのキューに入れることに留意されたい。さらに、物理的CPUが別のタスクを実行中である(例えば、後述するように、「アダプションモード(adoption mode)」で実行中の仮想マシン)場合、カーネルスケジューラ135はそのタスクをプリエンプトして、現在受信タスクを実行する。タスクが物理的CPUに対して実行される(又は実行のためにキューに入れられる)と、方法500はステップ570に進み、カーネルスケジューラ135は、スケジュールすべきタスクがまだあるか否かを判断する。
ステップ520において、カーネルスケジューラ135が、受信タスクが待ち時間高感度仮想CPUに対応しないと判断する場合、方法500はステップ540に進む。ステップ540において、カーネルスケジューラ135は、受信タスクが、待ち時間高感度仮想マシンの仮想CPUが排他的アフィニティを既に有する物理的CPUに非排他的アフィニティを有する仮想マシンに対応するか否かを判断する。幾つかの実施形態では、マルチプロセッサホストコンピュータ内の1つ又は複数のCPUに対してアフィニティ(affinity)を有するように、仮想マシンを設定することが可能である。そのような実施形態では、そのような仮想マシンは、アフィニティを有すると指定されているプロセッサで実行されることに制限される。しかし、このアフィニティ設定は、排他的アフィニティと異なる。上述したように、排他的アフィニティは、他の(非待ち時間高感度)仮想マシン及びユーザプログラムのタスク及び割り込み処理を専用物理的CPUから移行させる。さらに、物理的CPUがアイドルになる場合、スケジューラは、そのCPUに他のタスクをスケジュールすることを避ける。逆に、仮想マシンが物理的CPUに対して非排他的アフィニティを有する場合、物理的CPUがアイドルになるとき、カーネルスケジューラはその物理的CPUに対してタスクをスケジュールする。さらに、特定の仮想CPUへの非排他的アフィニティが認められている仮想マシンは、その物理的CPUでのみ実行されなければならない。したがって、仮想マシンに、待ち時間高感度仮想マシンが排他的なアフィニティが認められている物理的CPUに対して非排他的アフィニティが認められている場合、仮想マシン間の競合が生じる。
この競合を解決するために、カーネルスケジューラ135は、物理的CPUでの実行に向けて、非排他的アフィニティを有する仮想マシンのタスクを「アダプション」モードでスケジュールする。タスクがアダプションモードで実行される場合、待ち時間高感度仮想マシンが排他的アフィニティを有する物理的CPUを共有することが可能である。しかし、待ち時間高感度仮想マシンの性能を最大化するために、カーネルスケジューラ135は、待ち時間高感度仮想マシンを非待ち時間感度仮想マシンよりも高い優先度で実行する。さらに、カーネルスケジューラ135は、待ち時間高感度仮想が長期アイドル状態になったときを検出することにより、物理的CPUで2つの仮想マシン間でのコンテキスト切り換え数を最小化するように動作し得る。それらのときのみ、物理的CPUで非待ち時間高感度仮想マシンがディスパッチされ実行される。
再び図5を参照すると、カーネルスケジューラが、ステップ540において、待ち時間高感度仮想マシンが排他的アフィニティを有する物理的CPUに、受信タスクが非排他的アフィニティを有すると判断する場合、方法500はステップ550に進み、タスクはその物理的CPUのキューに入れられ、アダプションモードで実行される。代替的には、幾つかの実施形態では、カーネルスケジューラ135は、(物理的CPUに対して排他的アフィニティを有する)待ち時間高感度仮想CPUが長期アイドル状態であることを検出し得る。そのような場合、受信タスクは、物理的CPUで即座に実行され得る。ステップ550の後、方法500はステップ570に進み、カーネルスケジューラ135は、スケジュールすべきタスクがまだあると判断する。
しかし、カーネルスケジューラ135が、ステップ540において、待ち時間高感度仮想マシンの仮想CPUが排他的アフィニティを有する物理的CPUに、受信タスクが非排他的アフィニティを有さないと判断する場合、方法500はステップ560に進む。ステップ560において、カーネルスケジューラ135は、仮想CPUが排他的アフィニティを有さない物理的CPUで受信タスクを実行する(又はキューに入れる)。ステップ560の後、方法500はステップ570に進み、カーネルスケジューラ135は、スケジュールすべきタスクがまだあるか否かを判断する。
ステップ570において、カーネルスケジューラ135が、スケジュールすべきタスクがまだあると判断する場合、方法500はステップ510に戻り、次のタスクが受信される。スケジュールすべきタスクが残っていない場合、方法500は終了する。
上述した特定の実施形態は、ホストコンピュータの上にハードウェア抽象化レイヤを含む。ハードウェア抽象化レイヤにより、複数のコンテナ(container)がハードウェアリソースを共有することが可能になる。これらのコンテナは、互いから分離され、少なくともユーザアプリケーションが実行される。したがって、ハードウェア抽象化レイヤは、コンテナ間でのリソース分離及び割り振りという利点を提供する。上記実施形態では、仮想マシンはコンテナの例として使用され、ハイパーバイザはハードウェア抽象化レイヤの例として使用される。上述したように、各仮想マシンは、少なくとも1つのアプリケーションが実行されるゲストオペレーティングシステムを含む。これらの実施形態が、本明細書では「OSレスコンテナ(OS−less container)」(例えば、www.docker.com参照)と呼ばれる、ゲストオペレーティングシステムを含まないコンテナ等のコンテナの他の例にも適用可能なことに留意されたい。OSレスコンテナは、オペレーティングシステムレベル仮想化を実施し、抽象化レイヤは、ホストコンピュータ上のオペレーティングシステムのカーネルの上に提供される。抽象化レイヤは複数のOSレスコンテナをサポートし、各OSレスコンテナはアプリケーション及び従属性を含む。各OSレスコンテナは、ホストオペレーティングシステムのユーザ空間で分離プロセスとして実行され、他のコンテナとカーネルを共有する。OSレスコンテナはカーネルの機能に頼り、リソース分離(CPU、メモリ、ブロックI/O、ネットワーク等)及び別個の名前空間を利用するとともに、動作環境のアプリケーションビューを完全に分離する。OSレスコンテナを使用することにより、リソースは分離することができ、サービスは制限することができ、プロセスは、各自のプロセスID空間、ファイルシステム構造、及びネットワークインターフェースを有するオペレーティングシステムのプライベートビューを有するようにプロビジョニングすることができる。複数のコンテナは、同じカーネルを共有することができるが、各コンテナは、CPU、メモリ、及びI/O等の定義された量のみのリソースを使用するように制限されることができる。
1つ又は複数の実施形態について、理解を明確にするために本明細書において幾らか詳細に説明したが、本開示の趣旨から逸脱せずに、特定の変更及び変形が行われ得ることを認識されたい。本明細書に記載される様々な実施形態は、コンピュータシステムに記憶されたデータを含む様々なコンピュータ実施動作を利用し得る。例えば、これらの動作は、物理的数量の物理的操作を必要とし得、必ずしもではないが通常、これらの数量は電気信号又は磁気信号の形態を取り得、電気信号又は磁気信号又はそれらの表現は、記憶、転送、結合、比較、又は他の様式での操作が可能である。さらに、そのような操作は、多くの場合、用語に関して、製造、生成、識別、特定、又は比較等と呼ばれる。本開示の1つ又は複数の実施形態の一部をなす本明細書に記載される任意の動作は、有用なマシン動作であり得る。さらに、本開示の1つ又は複数の実施形態は、これらの動作を実行するデバイス又は装置にも関する。装置は特に、特定の所要目的に向けて構築されてもよく、又はコンピュータに記憶されたコンピュータプログラムによって選択的にアクティブ化若しくは構成される汎用コンピュータであってもよい。特に、様々な汎用マシンが、本明細書での教示に従って書かれたコンピュータプログラムと併用され得、又は必要とされる動作を実行するより専用化された装置を構築することがより好都合であり得る。
本明細書に記載される様々な実施形態は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベース又はプログラマブル消費者電子装置、ミニコンピュータ、メインフレームコンピュータ等を含め、他のコンピュータシステム構成を用いて実施し得る。
本開示の1つ又は複数の実施形態は、1つ若しくは複数のコンピュータプログラムとして、又は1つ若しくは複数のコンピュータ可読媒体で実施される1つ若しくは複数のコンピュータプログラムモジュールとして実施され得る。コンピュータ可読媒体という用語は、データを記憶することができる任意のデータ記憶デバイスを指し、データは後にコンピュータシステムに入力することができ、コンピュータ可読媒体は、コンピュータにより読み出し可能にするようにコンピュータプログラムを実施する任意の既存又は後に開発される技術に基づき得る。コンピュータ可読媒体の例としては、ハードドライブ、ネットワーク接続ストレージ(NAS:network attached storage)、読み取り専用メモリ、ランダムアクセスメモリ(例えば、フラッシュメモリデバイス)、CD(コンパクトディスク)−−CD−ROM、CD−R、又はCD−RW、DVD(デジタル多用途ディスク)、磁気テープ、並びに他の光学及び非光学データ記憶デバイスが挙げられる。コンピュータ可読媒体は、ネットワーク結合されたコンピュータシステムに分散することもでき、それにより、コンピュータ可読コードは分散して記憶され実行される。
本開示の1つ又は複数の実施形態について、理解を明確にするために幾らか詳細に説明したが、特許請求の範囲内で特定の変更及び変形が行われ得ることが明らかであろう。したがって、記載される実施形態は、限定ではなく例示として見なされるべきであり、特許請求の範囲は、本明細書に付与される詳細に限定されるべきではなく、特許請求の範囲及び均等物内で変更が可能である。特許請求の範囲では、要素及び/又はステップは、特許請求の範囲において明示的に記載される場合を除き、いかなる特定の順序の動作も暗示しない。
多くの変形、変更、追加、及び改善が可能である。複数のインスタンスが、1つのインスタンスとして本明細書に記載される構成要素、動作、又は構造に提供され得る。様々な構成要素、動作、及びデータストア間の境界は幾らか任意のものであり、特定の動作は、特定の例示的な構成の文脈で示されている。機能の他の割り振りが考えられ、本開示の範囲内にあり得る。一般に、例示的な構成において別個の構成要素として提示される構造及び機能は、結合された構造又は構成要素として実施され得る。同様に、1つの構成要素として提示される構造及び機能は、別個の構成要素として実施され得る。これら及び他の変形、変更、追加、及び改善は、添付の特許請求の範囲内にあり得る。

Claims (20)

  1. 複数のコンテナの実行をサポートする1つ又は複数の物理的中央演算処理装置(CPU)を有するホストコンピュータにおいて、前記複数のコンテナの各々は、1つ又は複数のプロセスを含み、前記ホストコンピュータは、対応する物理的中央演算処理装置への排他的アフィニティを有するように、前記1つ又は複数のプロセスのうちの少なくとも1つを割り当てる方法を実行するようにプログラムされ、前記方法は、
    第1のコンテナが待ち時間の影響を受けやすいと判断するステップと、
    前記判断するステップに応答して、1つ又は複数の対応する物理的中央演算処理装置への排他的アフィニティを有するように前記第1のコンテナの1つ又は複数のプロセスの各々を割り当てるステップとを含み、
    前記割り当てるステップは、
    前記1つ又は複数の対応する物理的中央演算処理装置上で実行中のタスクをホストシステムの1つ又は複数の他の物理的中央演算処理装置に移行するステップと、
    前記1つ又は複数の対応する物理的中央演算処理装置のキュータスク及び割り込み処理を前記1つ又は複数の他の物理的中央演算処理装置に実行させるステップと、
    前記1つ又は複数のプロセスが排他的アフィニティを有する前記1つ又は複数の対応する物理的中央演算処理装置で前記第1のコンテナの1つ又は複数のプロセスの各々のタスクを実行するステップとを含む、方法。
  2. システムであって、
    メモリと、複数のコンテナの実行をサポートする1つ又は複数の物理的中央演算処理装置(CPU)とを有するホストコンピュータを備え、前記複数のコンテナの各々は、1つ又は複数のプロセスを含み、前記ホストコンピュータは、対応する物理的中央演算処理装置への排他的アフィニティを有するように、前記1つ又は複数のプロセスのうちの少なくとも1つを割り当てる方法を実行するようにプログラムされ、前記方法は、
    第1のコンテナが待ち時間の影響を受けやすいと判断するステップと、
    前記判断するステップに応答して、1つ又は複数の対応する物理的中央演算処理装置への排他的アフィニティを有するように前記第1のコンテナの1つ又は複数のプロセスの各々を割り当てるステップとを含み、
    前記割り当てるステップは、
    前記1つ又は複数の対応する物理的中央演算処理装置上で実行中のタスクをホストシステムの前記1つ又は複数の他の物理的中央演算処理装置に移行するステップと、
    前記1つ又は複数の対応する物理的中央演算処理装置のキュータスク及び割り込み処理を前記1つ又は複数の他の物理的中央演算処理装置に実行させるステップと、
    前記プロセスが排他的アフィニティを有する前記1つ又は複数の対応する物理的中央演算処理装置で前記第1のコンテナの1つ又は複数のプロセスの各々のタスクを実行するステップとを含む、システム。
  3. 前記第1のコンテナは、第1の仮想マシンであり、
    前記第1のコンテナに含まれる前記1つ又は複数のプロセスのそれぞれは、仮想中央演算処理装置であり、
    少なくとも1つの仮想中央演算処理装置は、対応する物理的中央演算処理装置への排他的アフィニティを有するように割り当てられる、請求項2に記載のシステム。
  4. 前記方法は、
    前記第1の仮想マシンの状態への変更を検出するステップを更に備え、
    前記第1の仮想マシンの状態への変更を検出するステップは、
    前記第1の仮想マシンの状態が電源オフから電源オンに変更されたことを検出するステップを含む、請求項3に記載のシステム。
  5. 前記第1の仮想マシンの状態への変更を検出するステップは、
    前記第1の仮想マシンの待ち時間感度インジケータが変更されたことを検出するステップを含む、請求項4に記載のシステム。
  6. 前記方法は、
    前記少なくとも1つの仮想中央演算処理装置への割り当てに先立ち、前記ホストコンピュータが、前記少なくとも1つの仮想中央演算処理装置が割り当てられる十分な数の物理的中央演算処理装置を有すると判断するステップを更に備える、請求項3に記載のシステム。
  7. 前記方法は、
    前記ホストコンピュータの所定数の物理的中央演算処理装置を、前記第1の仮想マシンに対応しないタスクを処理するために確保するステップを更に備える、請求項6に記載のシステム。
  8. 前記第1の仮想マシンが待ち時間の影響を受けやすいと判断するステップは、
    前記第1の仮想マシンの待ち時間感度インジケータを読み出すステップと、
    前記第1の仮想マシンの中央演算処理装置エンタイトルメント値を読み出すステップと、
    前記待ち時間感度インジケータが所定値を有すると判断するステップと、
    前記中央演算処理装置エンタイトルメント値が最大値であると判断するステップとを含む、請求項3に記載のシステム。
  9. 前記中央演算処理装置エンタイトルメント値の最大値は、前記第1の仮想マシンの各仮想中央演算処理装置が、前記1つ又は複数の物理的中央演算処理装置のうちの1つの全処理能力を消費する許可を有することを示す、請求項8に記載のシステム。
  10. 前記プロセスを前記1つ又は複数の対応する物理的中央演算処理装置から移行するステップは、
    前記1つ又は複数の対応する物理的中央演算処理装置のうちの1つによって現在実行中のタスクを中止するステップと、
    前記1つ又は複数の他の物理的中央演算処理装置のうちの1つの実行キューに、中止されたタスクを配置するステップとを含む、請求項3に記載のシステム。
  11. 前記プロセスを前記1つ又は複数の対応する物理的中央演算処理装置から移行するステップは、
    タスクを前記1つ又は複数の対応する物理的中央演算処理装置のうちの1つの実行キューから前記1つ又は複数の他の物理的中央演算処理装置のうちの1つの実行キューにコピーするステップと、
    前記対応する物理的中央演算処理装置の実行キューから前記タスクを削除するステップとを更に含む、請求項10に記載のシステム。
  12. 前記方法は、
    前記1つ又は複数の対応する物理的中央演算処理装置のそれぞれの周波数スケーリングをディセーブルするステップを更に備える、請求項3に記載のシステム。
  13. ホストコンピュータによって実行可能な命令を含む非一時的なコンピュータ可読媒体であって、前記ホストコンピュータは、複数のコンテナの実行をサポートする1つ又は複数の物理的中央演算処理装置(CPU)を有し、前記複数のコンテナの各々は1つ又は複数のプロセスを含み、前記命令は、実行されると、対応する物理的中央演算処理装置で排他的に実行されるようにプロセスを割り当てる方法を前記ホストコンピュータに実行させ、前記方法は、
    第1のコンテナが待ち時間の影響を受けやすいと判断するステップと、
    前記判断するステップに応答して、1つ又は複数の対応する物理的中央演算処理装置への排他的アフィニティを有するように前記第1のコンテナの前記1つ又は複数のプロセスのそれぞれを割り当てるステップとを含み、前記割り当てるステップは、
    前記1つ又は複数の対応する物理的中央演算処理装置上で実行中のタスクをホストシステムの前記1つ又は複数の他の物理的中央演算処理装置に移行するステップと、
    前記1つ又は複数の対応する物理的中央演算処理装置のキュータスク及び割り込み処理を前記1つ又は複数の他の物理的中央演算処理装置に実行させるステップと、
    前記プロセスが排他的アフィニティを有する前記1つ又は複数の対応する中央演算処理装置で前記第1のコンテナの前記1つ又は複数のプロセスのそれぞれのタスクを実行するステップとを含む、コンピュータ可読媒体。
  14. 前記第1のコンテナは、第1の仮想マシンであり、
    前記第1のコンテナに含まれる前記1つ又は複数のプロセスのそれぞれは、仮想中央演算処理装置であり、
    少なくとも1つの仮想中央演算処理装置は、対応する物理的中央演算処理装置への排他的アフィニティを有するように割り当てられる、請求項13に記載のコンピュータ可読媒体。
  15. 前記方法は、
    前記第1の仮想マシンの状態への変更を検出するステップを更に備え、
    前記第1の仮想マシンの状態への変更を検出するステップは、
    前記第1の仮想マシンの状態が電源オフから電源オンに変更されたことを検出するステップを含む、請求項14に記載のコンピュータ可読媒体。
  16. 前記第1の仮想マシンの状態への変更を検出するステップは、
    前記第1の仮想マシンの待ち時間感度インジケータが変更されたことを検出するステップを更に含む、請求項15に記載のコンピュータ可読媒体。
  17. 前記方法は、
    前記少なくとも1つの仮想中央演算処理装置への割り当てに先立ち、前記ホストコンピュータが、前記少なくとも1つの仮想中央演算処理装置が割り当てられる十分な数の物理的中央演算処理装置を有すると判断するステップを更に備える、請求項14に記載のコンピュータ可読媒体。
  18. 前記方法は、
    前記ホストコンピュータの所定数の物理的中央演算処理装置を、待ち時間の影響を受けやすい仮想マシンに対応しないタスクを処理するために確保するステップを更に備える、請求項17に記載のコンピュータ可読媒体。
  19. 前記第1の仮想マシンが待ち時間の影響を受けやすいと判断するステップは、
    前記第1の仮想マシンの待ち時間感度インジケータを読み出すステップと、
    前記第1の仮想マシンの中央演算処理装置エンタイトルメント値を読み出すステップと、
    前記待ち時間感度インジケータが所定値を有すると判断するステップと、
    前記中央演算処理装置エンタイトルメント値が最大値であると判断するステップとを含む、請求項14に記載のコンピュータ可読媒体。
  20. 前記中央演算処理装置エンタイトルメント値の最大値は、前記第1の仮想マシンの各仮想中央演算処理装置が、前記1つ又は複数の物理的中央演算処理装置のうちの1つの全処理能力を消費する許可を有することを示す、請求項19に記載のコンピュータ可読媒体。
JP2016531956A 2013-08-26 2014-08-25 待ち時間の影響を受けやすい仮想マシンをサポートするように構成されるcpuスケジューラ Active JP6126311B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361870143P 2013-08-26 2013-08-26
US61/870,143 2013-08-26
PCT/US2014/052555 WO2015031272A1 (en) 2013-08-26 2014-08-25 Cpu scheduler configured to support latency sensitive virtual machines

Publications (2)

Publication Number Publication Date
JP2016529613A JP2016529613A (ja) 2016-09-23
JP6126311B2 true JP6126311B2 (ja) 2017-05-10

Family

ID=51535540

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2016531956A Active JP6126311B2 (ja) 2013-08-26 2014-08-25 待ち時間の影響を受けやすい仮想マシンをサポートするように構成されるcpuスケジューラ
JP2016531957A Active JP6126312B2 (ja) 2013-08-26 2014-08-25 待ち時間の影響を受けやすい仮想マシンをサポートするように構成された仮想マシンモニタ

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2016531957A Active JP6126312B2 (ja) 2013-08-26 2014-08-25 待ち時間の影響を受けやすい仮想マシンをサポートするように構成された仮想マシンモニタ

Country Status (5)

Country Link
US (8) US9262198B2 (ja)
EP (2) EP3039539B1 (ja)
JP (2) JP6126311B2 (ja)
AU (2) AU2014311463B2 (ja)
WO (4) WO2015031274A1 (ja)

Families Citing this family (115)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9262198B2 (en) 2013-08-26 2016-02-16 Vmware, Inc. CPU scheduler configured to support latency sensitive virtual machines
CN103473136B (zh) * 2013-09-02 2017-06-13 华为技术有限公司 一种虚拟机的资源配置方法和通信设备
US9792152B2 (en) * 2013-12-20 2017-10-17 Red Hat Israel, Ltd. Hypervisor managed scheduling of virtual machines
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
US9495192B2 (en) 2014-09-30 2016-11-15 Vmware, Inc. NUMA I/O aware network queue assignments
US9971620B2 (en) * 2014-10-15 2018-05-15 Keysight Technologies Singapore (Holdings) Pte Ltd Methods and systems for network packet impairment within virtual machine host systems
US9971619B2 (en) 2014-10-15 2018-05-15 Keysight Technologies Singapore (Holdings) Pte Ltd Methods and systems for forwarding network packets within virtual machine host systems
US10387178B2 (en) * 2014-10-29 2019-08-20 Red Hat Israel, Ltd. Idle based latency reduction for coalesced interrupts
TWI574158B (zh) * 2014-12-01 2017-03-11 旺宏電子股份有限公司 具應用程式資訊感知的資料處理方法以及系統
US20160173600A1 (en) * 2014-12-15 2016-06-16 Cisco Technology, Inc. Programmable processing engine for a virtual interface controller
US9699060B2 (en) * 2014-12-17 2017-07-04 Vmware, Inc. Specializing virtual network device processing to avoid interrupt processing for high packet rate applications
US10320921B2 (en) 2014-12-17 2019-06-11 Vmware, Inc. Specializing virtual network device processing to bypass forwarding elements for high packet rate applications
US9778957B2 (en) * 2015-03-31 2017-10-03 Stitch Fix, Inc. Systems and methods for intelligently distributing tasks received from clients among a plurality of worker resources
JP6488910B2 (ja) * 2015-06-24 2019-03-27 富士通株式会社 制御方法、制御プログラム、及び情報処理装置
US9772792B1 (en) * 2015-06-26 2017-09-26 EMC IP Holding Company LLC Coordinated resource allocation between container groups and storage groups
US10002016B2 (en) * 2015-07-23 2018-06-19 Red Hat, Inc. Configuration of virtual machines in view of response time constraints
US9942131B2 (en) * 2015-07-29 2018-04-10 International Business Machines Corporation Multipathing using flow tunneling through bound overlay virtual machines
US9667725B1 (en) 2015-08-06 2017-05-30 EMC IP Holding Company LLC Provisioning isolated storage resource portions for respective containers in multi-tenant environments
US10356012B2 (en) 2015-08-20 2019-07-16 Intel Corporation Techniques for routing packets among virtual machines
US10146936B1 (en) 2015-11-12 2018-12-04 EMC IP Holding Company LLC Intrusion detection for storage resources provisioned to containers in multi-tenant environments
US10261782B2 (en) 2015-12-18 2019-04-16 Amazon Technologies, Inc. Software container registry service
US10032032B2 (en) 2015-12-18 2018-07-24 Amazon Technologies, Inc. Software container registry inspection
US10002247B2 (en) * 2015-12-18 2018-06-19 Amazon Technologies, Inc. Software container registry container image deployment
KR101809528B1 (ko) * 2015-12-30 2017-12-15 무진기공주식회사 바이오 디젤 제조용 반응기
US10713195B2 (en) * 2016-01-15 2020-07-14 Intel Corporation Interrupts between virtual machines
US9569277B1 (en) 2016-01-29 2017-02-14 International Business Machines Corporation Rebalancing virtual resources for virtual machines based on multiple resource capacities
US9983909B1 (en) 2016-03-15 2018-05-29 EMC IP Holding Company LLC Converged infrastructure platform comprising middleware preconfigured to support containerized workloads
US10326744B1 (en) 2016-03-21 2019-06-18 EMC IP Holding Company LLC Security layer for containers in multi-tenant environments
WO2017166207A1 (en) * 2016-03-31 2017-10-05 Intel Corporation Cooperative scheduling of virtual machines
US10552205B2 (en) * 2016-04-02 2020-02-04 Intel Corporation Work conserving, load balancing, and scheduling
US10013213B2 (en) 2016-04-22 2018-07-03 EMC IP Holding Company LLC Container migration utilizing state storage of partitioned storage volume
CN106027643B (zh) * 2016-05-18 2018-10-23 无锡华云数据技术服务有限公司 一种基于Kubernetes容器集群管理系统的资源调度方法
US20180004452A1 (en) * 2016-06-30 2018-01-04 Intel Corporation Technologies for providing dynamically managed quality of service in a distributed storage system
US10176007B2 (en) * 2016-08-30 2019-01-08 Red Hat Israel, Ltd. Guest code emulation by virtual machine function
JP6511025B2 (ja) * 2016-09-02 2019-05-08 日本電信電話株式会社 リソース割当装置、リソース割当方法およびリソース割当プログラム
US20180088977A1 (en) * 2016-09-28 2018-03-29 Mark Gray Techniques to determine and mitigate latency in virtual environments
US10452572B2 (en) 2016-10-06 2019-10-22 Vmware, Inc. Automatic system service resource management for virtualizing low-latency workloads that are input/output intensive
US10733591B2 (en) * 2016-10-11 2020-08-04 International Business Machines Corporation Tiered model for event-based serverless computing
CN108023837B (zh) * 2016-10-31 2020-11-20 鸿富锦精密电子(天津)有限公司 虚拟网络交换机系统及其建立方法
US10284557B1 (en) 2016-11-17 2019-05-07 EMC IP Holding Company LLC Secure data proxy for cloud computing environments
US10216540B2 (en) 2016-11-28 2019-02-26 Amazon Technologies, Inc. Localized device coordinator with on-demand code execution capabilities
US10783016B2 (en) 2016-11-28 2020-09-22 Amazon Technologies, Inc. Remote invocation of code execution in a localized device coordinator
US10608973B2 (en) 2016-11-28 2020-03-31 Amazon Technologies, Inc. Embedded codes in messaging protocol communications
US10637817B2 (en) 2016-11-28 2020-04-28 Amazon Technologies, Inc. Managing messaging protocol communications
US10372486B2 (en) 2016-11-28 2019-08-06 Amazon Technologies, Inc. Localized device coordinator
US10452439B2 (en) 2016-11-28 2019-10-22 Amazon Technologies, Inc. On-demand code execution in a localized device coordinator
WO2018098443A1 (en) * 2016-11-28 2018-05-31 Amazon Technologies, Inc. On-demand code execution in a localized device coordinator
US10417049B2 (en) 2016-11-28 2019-09-17 Amazon Technologies, Inc. Intra-code communication in a localized device coordinator
US10055248B1 (en) * 2017-02-22 2018-08-21 Red Hat, Inc. Virtual processor scheduling via memory monitoring
US10310887B2 (en) 2017-02-22 2019-06-04 Red Hat, Inc. CPU overcommit with guest idle polling
US11128437B1 (en) 2017-03-30 2021-09-21 EMC IP Holding Company LLC Distributed ledger for peer-to-peer cloud resource sharing
US10956193B2 (en) * 2017-03-31 2021-03-23 Microsoft Technology Licensing, Llc Hypervisor virtual processor execution with extra-hypervisor scheduling
US10402341B2 (en) 2017-05-10 2019-09-03 Red Hat Israel, Ltd. Kernel-assisted inter-process data transfer
US11055133B2 (en) 2017-05-26 2021-07-06 Red Hat, Inc. Node-local-unscheduler for scheduling remediation
US10437308B2 (en) 2017-06-05 2019-10-08 Red Hat, Inc. Predictive virtual machine halt
CN109144844B (zh) 2017-06-27 2023-01-31 阿里巴巴集团控股有限公司 追踪方法、装置、设备和机器可读介质
US10645093B2 (en) * 2017-07-11 2020-05-05 Nicira, Inc. Reduction in secure protocol overhead when transferring packets between hosts
US10394603B2 (en) 2017-07-28 2019-08-27 Genband Us Llc Virtual container processing on high performance computing processors
US11295382B2 (en) * 2017-09-12 2022-04-05 Mark Gimple System and method for global trading exchange
US10474392B2 (en) * 2017-09-19 2019-11-12 Microsoft Technology Licensing, Llc Dynamic scheduling for virtual storage devices
CN109522101B (zh) * 2017-09-20 2023-11-14 三星电子株式会社 用于调度多个操作系统任务的方法、系统和/或装置
US10810038B2 (en) * 2017-09-22 2020-10-20 International Business Machines Corporation Accounting and enforcing non-process execution by container-based software receiving data over a network
US10545786B2 (en) 2017-09-22 2020-01-28 International Business Machines Corporation Accounting and enforcing non-process execution by container-based software transmitting data over a network
US10397186B2 (en) 2017-10-06 2019-08-27 Stealthpath, Inc. Methods for internet communication security
US10367811B2 (en) 2017-10-06 2019-07-30 Stealthpath, Inc. Methods for internet communication security
US10630642B2 (en) 2017-10-06 2020-04-21 Stealthpath, Inc. Methods for internet communication security
US10375019B2 (en) 2017-10-06 2019-08-06 Stealthpath, Inc. Methods for internet communication security
US10374803B2 (en) 2017-10-06 2019-08-06 Stealthpath, Inc. Methods for internet communication security
US10361859B2 (en) 2017-10-06 2019-07-23 Stealthpath, Inc. Methods for internet communication security
US10581636B1 (en) * 2017-10-20 2020-03-03 Parallels International Gmbh Network tunneling for virtual machines across a wide-area network
US11159627B1 (en) 2017-10-20 2021-10-26 Parallels International Gmbh Seamless remote network redirection
US10966073B2 (en) 2017-11-22 2021-03-30 Charter Communications Operating, Llc Apparatus and methods for premises device existence and capability determination
CN108196958B (zh) * 2017-12-29 2020-09-29 北京泽塔云科技股份有限公司 资源调度分配方法、计算机系统及超融合架构系统
CN108279979B (zh) * 2018-01-19 2021-02-19 聚好看科技股份有限公司 一种为应用程序容器绑定cpu的方法及装置
US11063745B1 (en) 2018-02-13 2021-07-13 EMC IP Holding Company LLC Distributed ledger for multi-cloud service automation
CN108897622A (zh) * 2018-06-29 2018-11-27 郑州云海信息技术有限公司 一种任务运行的调度方法以及相关装置
CN109117265A (zh) * 2018-07-12 2019-01-01 北京百度网讯科技有限公司 在集群中调度作业的方法、装置、设备及存储介质
US11036555B2 (en) 2018-07-25 2021-06-15 Vmware, Inc. Virtual processor allocation with execution guarantee
US10691495B2 (en) * 2018-07-25 2020-06-23 Vmware, Inc. Virtual processor allocation with execution guarantee
US10708082B1 (en) * 2018-08-31 2020-07-07 Juniper Networks, Inc. Unified control plane for nested clusters in a virtualized computing infrastructure
CN109343947A (zh) * 2018-09-26 2019-02-15 郑州云海信息技术有限公司 一种资源调度方法及装置
US11200331B1 (en) 2018-11-21 2021-12-14 Amazon Technologies, Inc. Management of protected data in a localized device coordinator
GB2570991B (en) * 2018-12-14 2020-04-22 Lendinvest Ltd Instruction allocation and processing system and method
JP7151530B2 (ja) * 2019-02-13 2022-10-12 日本電信電話株式会社 サーバ基盤および物理cpu割当プログラム
US11129171B2 (en) 2019-02-27 2021-09-21 Charter Communications Operating, Llc Methods and apparatus for wireless signal maximization and management in a quasi-licensed wireless system
US11372654B1 (en) 2019-03-25 2022-06-28 Amazon Technologies, Inc. Remote filesystem permissions management for on-demand code execution
US10904167B2 (en) * 2019-04-25 2021-01-26 Red Hat, Inc. Incoming packet processing for a computer system
US11374779B2 (en) 2019-06-30 2022-06-28 Charter Communications Operating, Llc Wireless enabled distributed data apparatus and methods
US20220129589A1 (en) * 2019-07-10 2022-04-28 Hewlett-Packard Development Company, L.P. Executing containers during idle states
US11182222B2 (en) * 2019-07-26 2021-11-23 Charter Communications Operating, Llc Methods and apparatus for multi-processor device software development and operation
US11368552B2 (en) 2019-09-17 2022-06-21 Charter Communications Operating, Llc Methods and apparatus for supporting platform and application development and operation
CN112631744A (zh) * 2019-09-24 2021-04-09 阿里巴巴集团控股有限公司 进程处理方法、装置、电子设备及计算机可读存储介质
US11558423B2 (en) 2019-09-27 2023-01-17 Stealthpath, Inc. Methods for zero trust security with high quality of service
US11026205B2 (en) 2019-10-23 2021-06-01 Charter Communications Operating, Llc Methods and apparatus for device registration in a quasi-licensed wireless system
US11144419B2 (en) 2019-10-25 2021-10-12 Red Hat, Inc. Controlled use of a memory monitor instruction and memory wait instruction in a virtualized environment
US11457485B2 (en) 2019-11-06 2022-09-27 Charter Communications Operating, Llc Methods and apparatus for enhancing coverage in quasi-licensed wireless systems
US11347558B2 (en) 2019-12-09 2022-05-31 Nutanix, Inc. Security-aware scheduling of virtual machines in a multi-tenant infrastructure
CN111107100B (zh) * 2019-12-30 2022-03-01 杭州迪普科技股份有限公司 用于传输工业协议流量报文的设备
US11363466B2 (en) 2020-01-22 2022-06-14 Charter Communications Operating, Llc Methods and apparatus for antenna optimization in a quasi-licensed wireless system
US11074202B1 (en) 2020-02-26 2021-07-27 Red Hat, Inc. Efficient management of bus bandwidth for multiple drivers
CN111427669A (zh) * 2020-04-27 2020-07-17 安谋科技(中国)有限公司 计算机设备上的虚拟机的管理方法、装置、介质和系统
CN111769910B (zh) * 2020-06-28 2023-04-18 网宿科技股份有限公司 一种数据传输方法及装置
CN111831398A (zh) * 2020-07-20 2020-10-27 平安科技(深圳)有限公司 虚拟机创建及cpu资源分配方法、装置、设备
US20230195482A1 (en) * 2020-07-21 2023-06-22 Vmware, Inc. Offloading Packet Processing Programs from Virtual Machines to a Hypervisor and Efficiently Executing the Offloaded Packet Processing Programs
US11429424B2 (en) * 2020-07-22 2022-08-30 Vmware, Inc. Fine-grained application-aware latency optimization for virtual machines at runtime
US11656100B2 (en) 2020-10-08 2023-05-23 Pulse Innovation Labs, Inc. Angular displacement sensor
CN112667364B (zh) * 2021-01-05 2022-07-01 烽火通信科技股份有限公司 绑核与非绑核虚拟混合部署方法、装置、设备及存储介质
CN113282525B (zh) * 2021-05-27 2023-03-28 杭州迪普科技股份有限公司 一种报文分流的方法及装置
US11595321B2 (en) 2021-07-06 2023-02-28 Vmware, Inc. Cluster capacity management for hyper converged infrastructure updates
WO2023007618A1 (ja) * 2021-07-28 2023-02-02 三菱電機株式会社 情報処理装置
WO2023034221A1 (en) * 2021-09-03 2023-03-09 Groq, Inc. Scale computing in deterministic cloud environments
CN113553164B (zh) * 2021-09-17 2022-02-25 统信软件技术有限公司 一种进程迁移方法、计算设备及存储介质
US11716378B2 (en) 2021-09-28 2023-08-01 Red Hat, Inc. Optimized network device queue management for hybrid cloud networking workloads
CN114327814A (zh) * 2021-12-09 2022-04-12 阿里巴巴(中国)有限公司 任务调度方法、虚拟机、物理主机和存储介质

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7065762B1 (en) * 1999-03-22 2006-06-20 Cisco Technology, Inc. Method, apparatus and computer program product for borrowed-virtual-time scheduling
US7236459B1 (en) * 2002-05-06 2007-06-26 Packeteer, Inc. Method and apparatus for controlling data transmission volume using explicit rate control and queuing without data rate supervision
US7765543B1 (en) 2003-12-17 2010-07-27 Vmware, Inc. Selective descheduling of idling guests running on a host computer system
US7626988B2 (en) * 2004-06-09 2009-12-01 Futurewei Technologies, Inc. Latency-based scheduling and dropping
US8005022B2 (en) 2006-07-20 2011-08-23 Oracle America, Inc. Host operating system bypass for packets destined for a virtual machine
US7826468B2 (en) * 2006-08-04 2010-11-02 Fujitsu Limited System and method for bypassing an output queue structure of a switch
US8458366B2 (en) * 2007-09-27 2013-06-04 Oracle America, Inc. Method and system for onloading network services
US20100106874A1 (en) 2008-10-28 2010-04-29 Charles Dominguez Packet Filter Optimization For Network Interfaces
JP2010122805A (ja) 2008-11-18 2010-06-03 Hitachi Ltd 仮想サーバシステム並びに物理cpu及び物理メモリの割り当て方法
JP4871948B2 (ja) * 2008-12-02 2012-02-08 株式会社日立製作所 仮想計算機システム、仮想計算機システムにおけるハイパバイザ、及び仮想計算機システムにおけるスケジューリング方法
US8719823B2 (en) 2009-03-04 2014-05-06 Vmware, Inc. Managing latency introduced by virtualization
US8478924B2 (en) 2009-04-24 2013-07-02 Vmware, Inc. Interrupt coalescing for outstanding input/output completions
US8194670B2 (en) * 2009-06-30 2012-06-05 Oracle America, Inc. Upper layer based dynamic hardware transmit descriptor reclaiming
JP2011018136A (ja) * 2009-07-07 2011-01-27 Fuji Xerox Co Ltd 画像処理装置およびプログラム
US8245234B2 (en) 2009-08-10 2012-08-14 Avaya Inc. Credit scheduler for ordering the execution of tasks
US8364997B2 (en) * 2009-12-22 2013-01-29 Intel Corporation Virtual-CPU based frequency and voltage scaling
JP5875193B2 (ja) * 2010-01-13 2016-03-02 マーベル・イスラエル・(エム・アイ・エス・エル)・リミテッドMarvell Israel (M.I.S.L.) Ltd. メディア処理のためのハードウェア仮想化
US20110197004A1 (en) 2010-02-05 2011-08-11 Serebrin Benjamin C Processor Configured to Virtualize Guest Local Interrupt Controller
US8312463B2 (en) * 2010-03-30 2012-11-13 Microsoft Corporation Resource management in computing scenarios
CN102473118B (zh) * 2010-05-24 2016-10-12 松下电器(美国)知识产权公司 信息处理系统
US8533713B2 (en) * 2011-03-29 2013-09-10 Intel Corporation Efficent migration of virtual functions to enable high availability and resource rebalance
US9021475B2 (en) * 2011-05-04 2015-04-28 Citrix Systems, Inc. Systems and methods for SR-IOV pass-thru via an intermediary device
JP5624084B2 (ja) * 2012-06-04 2014-11-12 株式会社日立製作所 計算機、仮想化機構、及びスケジューリング方法
US8943252B2 (en) 2012-08-16 2015-01-27 Microsoft Corporation Latency sensitive software interrupt and thread scheduling
US9317310B2 (en) * 2013-01-31 2016-04-19 Broadcom Corporation Systems and methods for handling virtual machine packets
US9720717B2 (en) * 2013-03-14 2017-08-01 Sandisk Technologies Llc Virtualization support for storage devices
US9262198B2 (en) 2013-08-26 2016-02-16 Vmware, Inc. CPU scheduler configured to support latency sensitive virtual machines

Also Published As

Publication number Publication date
US9552216B2 (en) 2017-01-24
WO2015031279A1 (en) 2015-03-05
US10061610B2 (en) 2018-08-28
US20160162336A1 (en) 2016-06-09
AU2014311463B2 (en) 2017-02-16
US20150058846A1 (en) 2015-02-26
JP6126312B2 (ja) 2017-05-10
AU2014311461B2 (en) 2017-02-16
WO2015031272A1 (en) 2015-03-05
US20150058847A1 (en) 2015-02-26
US9317318B2 (en) 2016-04-19
WO2015031277A1 (en) 2015-03-05
AU2014311461A1 (en) 2016-02-18
US9703589B2 (en) 2017-07-11
US10073711B2 (en) 2018-09-11
EP3039540A1 (en) 2016-07-06
AU2014311463A1 (en) 2016-02-18
US20150058861A1 (en) 2015-02-26
JP2016529614A (ja) 2016-09-23
US20170249186A1 (en) 2017-08-31
EP3039539A1 (en) 2016-07-06
US20150055499A1 (en) 2015-02-26
US20160224370A1 (en) 2016-08-04
EP3039540B1 (en) 2021-08-11
US10860356B2 (en) 2020-12-08
JP2016529613A (ja) 2016-09-23
US20170308394A1 (en) 2017-10-26
EP3039539B1 (en) 2019-02-20
US9262198B2 (en) 2016-02-16
WO2015031274A1 (en) 2015-03-05
US9652280B2 (en) 2017-05-16

Similar Documents

Publication Publication Date Title
JP6126311B2 (ja) 待ち時間の影響を受けやすい仮想マシンをサポートするように構成されるcpuスケジューラ
US11797327B2 (en) Dynamic virtual machine sizing
US10452572B2 (en) Automatic system service resource management for virtualizing low-latency workloads that are input/output intensive
US20130007322A1 (en) Hardware Enabled Lock Mediation
US20130047152A1 (en) Preserving, From Resource Management Adjustment, Portions Of An Overcommitted Resource Managed By A Hypervisor
US11429424B2 (en) Fine-grained application-aware latency optimization for virtual machines at runtime
US11934890B2 (en) Opportunistic exclusive affinity for threads in a virtualized computing system
KR20130112180A (ko) 모바일 멀티코어 가상화 시스템에서 실시간 처리를 보장하기 위한 스케쥴링 방법
US20240028361A1 (en) Virtualized cache allocation in a virtualized computing system

Legal Events

Date Code Title Description
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: 20170314

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170406

R150 Certificate of patent or registration of utility model

Ref document number: 6126311

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

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250