(57)【要約】  競合意識型クラウド計算スケジューリングの技術は、クラウドコンピューティングクラスタの複数の計算ノードと、クラウドコントローラとを含む。各計算ノードは、計算ノードのキャッシュの競合を示す性能データ、例えば、千命令当たりのキャッシュミスを収集する。各計算ノードは、性能データの関数として競合スコアを決定し、競合スコアをクラウド状態データベースに記憶する。新たな仮想マシンの要求に応じて、クラウドコントローラは、計算ノードの競合スコアを受信し、競合スコアに基づいて計算ノードを選択する。クラウドコントローラは、選択された計算ノードにおいて新たな仮想マシンをスケジューリングする。競合スコアは、競合メトリックと、競合メトリックを示す競合スコアレベルとを含んでもよい。競合スコアレベルは、競合メトリックを複数の閾値と比較することにより決定されてもよい。他の実施例も記載され、特許請求の範囲に記載される。
2017500666.tif 000002
【特許請求の範囲】
【請求項１】
クラウドコンピューティングクラスタのクラウドコントローラであって、
新たな仮想マシンの要求を受信する計算サービスモジュールと、
前記クラウドコンピューティングクラスタの複数の計算ノードの各計算ノードの競合スコアを受信する通信モジュールであり、前記競合スコアは、前記計算ノードのキャッシュメモリの競合を示す通信モジュールと、
前記競合スコアに基づいて計算ノードを選択するスケジューラモジュールと
を有し、
前記計算サービスモジュールは、前記選択された計算ノードにおいて前記新たな仮想マシンを更にスケジューリングするクラウドコントローラ。
【請求項２】
前記競合スコアは、競合メトリックを有し、前記競合メトリックは、前記計算ノードのキャッシュミスの数の関数である、請求項１に記載のクラウドコントローラ。
【請求項３】
前記競合メトリックは、前記計算ノードの基準数の命令当たりのキャッシュミスの率を有する、請求項２に記載のクラウドコントローラ。
【請求項４】
前記計算ノードを選択することは、最低の競合メトリックを有する計算ノードを選択するために、前記競合メトリックに基づいて前記複数の計算ノードをソートすることを有する、請求項２に記載のクラウドコントローラ。
【請求項５】
前記競合スコアは、前記計算ノードの競合メトリックを示す競合スコアレベルを有する、請求項１ないし４のうちいずれか１項に記載のクラウドコントローラ。
【請求項６】
前記競合スコアレベルは、前記計算ノードの基準数の命令当たりの前記計算ノードのキャッシュミスの率と、１つ以上の閾値との比較により決定された競合スコアレベルを有する、請求項５に記載のクラウドコントローラ。
【請求項７】
前記競合スコアレベルは、前記基準数の命令当たりのキャッシュミスの率が低競合閾値未満であることを示す低競合レベル、前記基準数の命令当たりのキャッシュミスの率が前記低競合閾値以上且つ高競合閾値未満であることを示す中程度競合レベル、又は前記基準数の命令当たりのキャッシュミスの率が前記高競合閾値以上であることを示す高競合レベルを有する、請求項６に記載のクラウドコントローラ。
【請求項８】
前記スケジューラモジュールは、前記競合スコアの受信前に前記新たな仮想マシンのキャパシティのないいずれかの計算ノードを除去するために、前記複数の計算ノードを更にフィルタリングする、請求項１ないし４のうちいずれか１項に記載のクラウドコントローラ。
【請求項９】
クラウドコンピューティングクラスタの計算ノードであって、
前記計算ノードのキャッシュメモリの競合を示す性能データを収集するデータ収集モジュールと、
前記性能データの関数として競合スコアを決定する競合スコア決定モジュールであり、前記競合スコアは、競合メトリックと、前記競合メトリックを示す競合スコアレベルとを含む競合スコア決定モジュールと、
前記競合スコアをクラウド状態データベースに記憶する通信モジュールであり、前記クラウド状態データベースは、前記クラウドコンピューティングクラスタのクラウドコントローラによりアクセス可能である通信モジュールと
を有する計算ノード。
【請求項１０】
性能監視ユニットを含むプロセッサコアを更に有し、
前記性能データを収集することは、前記プロセッサコアの前記性能監視ユニットを読み取ることを有する、請求項９に記載の計算ノード。
【請求項１１】
非コアを含むプロセッサを更に有し、前記非コアは、性能監視ユニットを含み、
前記性能データを収集することは、前記プロセッサの前記非コアの前記性能監視ユニットを読み取ることを有する、請求項９に記載の計算ノード。
【請求項１２】
前記性能データを収集することは、前記性能データを、前記計算ノードにより実行された１つ以上の仮想マシンに関連付けることを有する、請求項９ないし１１のうちいずれか１項に記載の計算ノード。
【請求項１３】
前記競合スコアを決定することは、前記計算ノードのキャッシュミスの数の関数として前記競合メトリックを決定することを有する、請求項９ないし１１のうちいずれか１項に記載の計算ノード。
【請求項１４】
クラウド計算スケジューリングの方法であって、
クラウドコンピューティングクラスタのクラウドコントローラにより、新たな仮想マシンの要求を受信するステップと、
前記クラウドコントローラにより、前記クラウドコンピューティングクラスタの複数の計算ノードの各計算ノードの競合スコアを受信するステップであり、前記競合スコアは、前記計算ノードのキャッシュメモリの競合を示すステップと、
前記クラウドコントローラにより、前記競合スコアに基づいて計算ノードを選択するステップと、
前記クラウドコントローラにより、前記選択された計算ノードにおいて前記新たな仮想マシンをスケジューリングするステップと
を有する方法。
【請求項１５】
前記競合スコアを受信するステップは、競合メトリックを受信するステップであり、前記競合メトリックは、前記計算ノードのキャッシュミスの数の関数であるステップを有する、請求項１４に記載の方法。
【請求項１６】
前記競合メトリックを受信するステップは、前記計算ノードの基準数の命令当たりのキャッシュミスの率を受信するステップを有する、請求項１５に記載の方法。
【請求項１７】
前記競合スコアを受信するステップは、前記計算ノードの競合メトリックを示す競合スコアレベルを受信するステップを有する、請求項１４に記載の方法。
【請求項１８】
前記競合スコアレベルを受信するステップは、前記計算ノードの基準数の命令当たりの前記計算ノードのキャッシュミスの率と、１つ以上の閾値とを比較することにより決定された競合スコアレベルを受信するステップを有する、請求項１７に記載の方法。
【請求項１９】
前記クラウドコントローラにより、前記競合スコアの受信前に前記新たな仮想マシンのキャパシティのないいずれかの計算ノードを除去するために、前記複数の計算ノードをフィルタリングするステップを更に有する、請求項１４に記載の方法。
【請求項２０】
クラウドコンピューティングの競合監視の方法であって、
クラウドコンピューティングクラスタの計算ノードにより、前記計算ノードのキャッシュメモリの競合を示す性能データを収集するステップと、
前記計算ノードにより、前記性能データの関数として競合スコアを決定するステップであり、前記競合スコアは、競合メトリックと、前記競合メトリックを示す競合スコアレベルとを含むステップと、
前記計算ノードにより、前記競合スコアをクラウド状態データベースに記憶するステップであり、前記クラウド状態データベースは、前記クラウドコンピューティングクラスタのクラウドコントローラによりアクセス可能であるステップと
を有する方法。
【請求項２１】
前記性能データを収集するステップは、前記性能データを、前記計算ノードにより実行された１つ以上の仮想マシンに関連付けるステップを有する、請求項２０に記載の方法。
【請求項２２】
前記競合スコアを決定するステップは、前記計算ノードのキャッシュミスの数の関数として競合メトリックを決定するステップを有する、請求項２０に記載の方法。
【請求項２３】
プロセッサと、
前記プロセッサにより実行された場合、コンピューティングデバイスに対して請求項１４ないし２２のうちいずれか１項に記載の方法を実行させる複数の命令を記憶したメモリと
を有するコンピューティングデバイス。
【請求項２４】
実行されたことに応じてコンピューティングデバイスが請求項１４ないし２２のうちいずれか１項に記載の方法を実行することを生じるコンピュータプログラム。
【請求項２５】
請求項２４に記載のコンピュータプログラムを記憶した１つ以上の機械読み取り可能記憶媒体。
【請求項２６】
請求項１４ないし２２のうちいずれか１項に記載の方法を実行する手段を有するコンピューティングデバイス。
【発明の詳細な説明】
【背景技術】
【０００１】
クラウドコンピューティングは、融通性のあるコンピューティング性能を複数のユーザに与えることができる非常にスケーラブルなネットワーク接続されたコンピューティングシステムを示す。典型的には、クラウドコンピューティングは、ノードと呼ばれる高密度に束ねられたコンピューティングサーバのクラスタを含み、各ノードは、多数の仮想マシンを潜在的に実行する。典型的には、各ノードは、ハイパーバイザ（hypervisor）又は他の仮想化フレームワークを含み、全体のクラウドコンピューティングクラスタは、特定の計算ノードにおける仮想マシンのインスタンス化（instantiation）を管理する１つ以上のクラウドコントローラを含む。OpenStackは、このようなクラウドコンピューティングフレームワークの一例である。
【０００２】
マルチテナントのクラウドコンピューティング環境では、特定のノードの仮想マシンは、異なる顧客により制御されることがある。従って、プロセッサ、ネットワーク及び記憶リソースのようなノードのリソースは、仮想マシンの間で共有されなければならず、従って、異なる顧客の間で共有されなければならない。典型的には、クラウドコンピューティングの顧客は、クラウドコンピューティングクラスタの仮想マシン毎に予測可能な性能レベルを期待し、販売されることがある。しかし、仮想マシンの性能は、同じノードにおける他の仮想マシンの動作により影響を受ける可能性がある。これは、場合によっては“迷惑な隣人（noisy  neighbor）”の問題と呼ばれる。すなわち、いくつかの仮想マシンの作業負荷は、同じノードで実行する他の仮想マシンの性能に影響を与える副作用を有する。性能における明白な低減に加えて、迷惑な隣人の問題は、仮想マシンの性能を予測不可能にさせる可能性があり、このことは、クラウドの顧客及びプロバイダにとって特に望ましくない可能性がある。
【図面の簡単な説明】
【０００３】
ここで説明する概念は、添付図面において限定ではなく、例により示される。図示の簡潔性及び明瞭性のため、図面に示す要素は、必ずしも縮尺通りに描かれているとは限らない。適切と考えられる場合には、参照ラベルは、対応する要素又は同様の要素を示すために図面の間で繰り返されている。
【図１】クラウド計算スケジューリングのシステムの少なくとも１つの実施例の簡略化ブロック図
【図２】クラウド計算ノードにおける様々な作業負荷について時間上のスループット及びキャッシュ競合を測定した組み合わせのグラフ
【図３】図１のシステムにより確立され得る様々な環境の少なくとも１つの実施例の簡略化ブロック図
【図４】図１及び３のシステムの計算ノードにより実行され得る性能データ収集の方法の少なくとも１つの実施例の簡略化フローチャート
【図５】図１及び３のシステムの計算ノードにより実行され得る競合スコアレベルを決定する方法の少なくとも１つの実施例の簡略化フローチャート
【図６】図１及び３のシステムのクラウドコントローラにより実行され得る競合意識型（contention-aware）計算スケジューリングの方法の少なくとも１つの実施例の簡略化フローチャート
【発明を実施するための形態】
【０００４】
この開示の概念は、様々な変更及び代替の形式を受けることができるが、この特定の実施例が図面において例として示されており、ここに詳細に説明する。しかし、この開示の概念を開示された特定の形式に限定する意図はなく、これに反して、意図は、この開示及び特許請求の範囲に従った全ての変更、等価物及び代替物をカバーすることが分かる。
【０００５】
明細書において“一実施例”、“実施例”、“例示的な実施例”等の言及は、記載する実施例が特定の特徴、構成又は特性を含んでもよいが、全ての実施例がその特定の特徴、構成又は特性を含んでもよく、必ずしも含まなくてもよいことを示す。更に、このような語句は、必ずしも同じ実施例を示しているとは限らない。更に、特定の特徴、構成又は特性が実施例に関して記載されている場合、明示的に記載されていても記載されていなくても、他の実施例に関してこのような特徴、構成又は特性が作用することが、当業者の認識の範囲内にあることが提示される。更に、“A、B及びCのうち少なくとも１つ”の形式のリストに含まれる項目は、(A)、(B)、(C)、(A及びB)、(A及びC)、(B及びC)又は(A、B及びC)を意味し得ることを認識するべきである。同様に、“A、B又はCのうち少なくとも１つ”の形式のリストの項目は、(A)、(B)、(C)、(A及びB)、(A及びC)、(B及びC)又は(A、B及びC)を意味し得る。
【０００６】
或る場合には、開示された実施例は、ハードウェア、ファームウェア、ソフトウェア又はこれらのいずれかの組み合わせで実現されてもよい。開示された実施例はまた、１つ以上の過渡的な或いは過渡的でない機械読み取り可能（例えば、コンピュータ読み取り可能）記憶媒体により搬送される命令又は記憶される命令として実現されてもよい。１つ以上の過渡的な或いは過渡的でない機械読み取り可能記憶媒体は、１つ以上のプロセッサにより読み取られて実行されてもよい。機械読み取り可能記憶媒体は、機械により読み取り可能な形式で情報を記憶又は送信するいずれかの記憶デバイス、機構又は他の物理的構成（例えば、揮発性若しくは不揮発性メモリ、メディアディスク又は他のメディアデバイス）として具現されてもよい。
【０００７】
図面において、或る構成又は方法の特徴は、特定の配置及び／又は順序で示されることがある。しかし、このような特定の配置及び／又は順序は必要なくてもよいことを認識するべきである。むしろ、或る実施例では、このような特徴は、例示的な図面に示すものとは異なる方式及び／又は順序で配置されてもよい。更に、特定の図面に構成上又は方法の特徴が含まれることは、このような特徴が全ての実施例で必要であることを示すことを意味するのではなく、或る実施例では、含まれなくてもよく、他の特徴と組み合わされてもよい。
【０００８】
次に図１を参照すると、例示的な実施例では、競合意識型（contention-aware）クラウド計算スケジューリングのシステム100は、全てネットワーク108で通信する複数の計算ノード102と、クラウドコントローラ104と、クラウド状態データベース106とを含む。
使用中に、以下に更に詳細に説明するように、各計算ノード102は、計算タスクを実行するために１つ以上の仮想マシンをインスタンス化する。各計算ノード102は、キャッシュ競合（cache  contention）を含むその性能を監視し、競合スコアを生成する。各計算ノード102の競合スコアは、クラウド状態データベース106に記憶される。クラウドコントローラ104は、計算ノード102のそれぞれの報告された競合スコアに基づいて新たな仮想マシンをスケジューリングする。競合意識型クラウドスケジューリングは、同じ物理ノードにおいて共存できる作業負荷をスケジューリングすることにより、改善したスループットを可能にし得る。更に、競合意識型クラウドスケジューリングは、クラウド作業負荷の性能の予測可能性及び／又は安定性を改善し得る。例示的な実施例は、ソケットレベルのキャッシュ競合を監視することを含むが、この開示の技術は、ソケット競合、コア競合、ディスク競合、又はネットワーク競合のような計算ノード102の他の競合領域にも適用されてもよいことが認識されるべきである。
【０００９】
次に図２を参照すると、典型的なクラウド計算システムは、いわゆる“迷惑な隣人”の問題から影響を受ける可能性がある。特に、仮想マシンの性能は、同じ計算ノードで実行する他の仮想マシンからの、計算ノードの区別できないリソースの競合により低減される可能性がある。グラフ200は、同じ計算ノードで実行する複数の仮想マシンのために生じ得る性能劣化を示している。曲線202は、計算ノードで実行する仮想マシンについてのサイクル当たりの命令を示し、これは、スループットの指標である。曲線204は、計算ノードについての千命令当たりのキャッシュミス（MPKI：cache  misses  per  thousand instructions）を示し、これは、キャッシュ競合の指標である。図面では、同一の計算ベンチマークをそれぞれ実行する８個の仮想マシンが順にインスタンス化され、各仮想マシンは、特定のプロセッサコアに固定される。（少なくとも仮想マシンの数が計算ノードの物理コアの数を超えるまで）各仮想マシンのスループットは変更しないままであることが想定される。しかし、例示的な例では、各仮想マシンがインスタンス化されると、スループットが低下する。例示的な曲線202により示すように、各仮想マシンがインスタンス化されるとスループットが段階的に減少する。曲線204は、各仮想マシンがインスタンス化されるとキャッシュ競合も段階的に増加することを示している。全ての８個の仮想マシンがインスタンス化された後に、計算ノードは安定状態に到達し、曲線202、204は横ばいになる。各仮想マシンのスループットは、単一の仮想マシン自体の実行に比べてかなり低減している点に留意すべきである。次に、８この仮想マシンが順次に停止され、各仮想マシンが停止されると、曲線202に示すようにスループットが段階的に増加し、曲線204に示すように競合が段階的に減少する。従って、従来のクラウド計算システムでは、仮想マシンにより達成されるスループットは、同じ計算ノードの異なる物理コアにおいて異なる仮想マシンで実行する作業負荷により影響され得る。
【００１０】
図１に戻り、各計算ノード102は、非限定的に、コンピュータ、マイクロプロセッサシステム、サーバ、ラックマウント方式サーバ、ブレードサーバ、ラップトップコンピュータ、ノートブックコンピュータ、ネットワーク機器、ウェブ機器、分散コンピューティングシステム、プロセッサに基づくシステム及び／又は顧客電子デバイスを含み、ここに記載の機能を実行することができるいずれかの種類の計算又はコンピュータデバイスとして具現されてもよい。図１に示すように、各計算ノード102は、２つのプロセッサ120と、入出力サブシステム132と、メモリ134と、データ記憶デバイス136と、通信回路138とを例示的に含む。当然に、他の実施例では、計算ノード102は、サーバデバイスに一般的にあるもののような他のコンポーネント又は更なるコンポーネント（例えば、様々な入出力デバイス）を含んでもよい。更に、或る実施例では、例示的なコンポーネントのうち１つ以上は、他のコンポーネントに組み込まれてもよく、或いは他のコンポーネントの一部を形成してもよい。例えば、或る実施例では、メモリ132又はその一部は、１つ以上のプロセッサ120に組み込まれてもよい。
【００１１】
各プロセッサ120は、ここに記載の機能を実行することができるいずれかの種類のプロセッサとして具現されてもよい。それぞれの例示的なプロセッサ120は、マルチコアプロセッサであるが、他の実施例では、各プロセッサ120は、シングル又はマルチコアプロセッサ、デジタルシグナルプロセッサ、マイクロコントローラ、又は他のプロセッサ若しくは処理／制御回路として具現されてもよい。各プロセッサ120は、４つのプロセッサコア122及び非コア（uncore）126を例示的に含む。プロセッサコア122のそれぞれは、プログラムされた命令を実行することができる独立した処理ユニットである。各プロセッサコア122は、性能監視ユニット（“PMU：performance  monitoring  unit”）124を含む。各PMU124は、各プロセッサコア122を通じた命令の流れを記録及び監視することができる複数の性能カウンタとして具現されてもよい。例えば、各PMUは、クロックサイクル、発行された命令、リトライされた命令、キャッシュミス又は同様のイベントをカウントすることができてもよい。PMU124は、プロセッサコア122のモデル特有のレジスタを使用して特定の性能統計を監視するようにプログラムされてもよい。一実施例では、各PMU124は、４つの完全にプログラム可能なハードウェアカウンタと、３つの固定機能のハードウェアカウンタとを含んでもよい。ソフトウェアは、Linux（登録商標）カーネルの“perf”サブシステムのようなカーネルインタフェースを使用して、PMU124にアクセスしてもよい。例示的な計算ノード102のそれぞれは４つのプロセッサコア122を有する２つのプロセッサ120を含むが、他の実施例では、各計算ノード102は、１つ、２つ又はそれ以上のプロセッサコア122をそれぞれ有する１つ、２つ又はそれ以上のプロセッサ120を含んでもよい。特に、この開示はまた、単一プロセッサ又は単一コアの計算ノード102にも適用可能である。
【００１２】
各プロセッサ120はまた、非コア126を含む。例示的な実施例では、各非コア126は、プロセッサコア122に含まれない特定のプロセッサ120のいずれかの部分（例えば、プロセッサコア122自体を除く特定のプロセッサ120の全てのコンポーネント）を含む。例えば、それぞれの例示的なプロセッサ122の非コア126は、PMU128と、キャッシュメモリ130とを含む。プロセッサコア122のPMU124と同様に、PMU128は、非コア126の性能統計を監視し、複数のプログラム可能又は固定機能のハードウェア性能カウンタを含んでもよい。キャッシュメモリ130は、プロセッサコア122により共有されるラストレベルキャッシュでもよい。或る実施例では、PMU128は、キャッシュミス、伝送されたデータ量及び他のキャッシュ情報を記録することを含み、キャッシュメモリ130へのアクセスを監視してもよい。図示しないが、非コア126は、プロセッサ又はシステムオンチップの典型的なコンポーネントを更に含んでもよい。例えば、各非コア126は、メモリコントローラ、プロセッサグラフィクス、入出力コントローラ、電力管理回路、又はプロセッサ120の他のコンポーネントを含んでもよい。
【００１３】
メモリ134は、ここに記載の機能を実行することができるいずれかの種類の揮発性若しくは不揮発性メモリ又はデータ記憶装置として具現されてもよい。動作中に、メモリ134は、オペレーティングシステム、アプリケーション、プログラム、ライブラリ、及びドライバのように、計算ノードの動作中に使用される様々なデータ及びソフトウェアを記憶してもよい。メモリ134は、I/Oサブシステム132を介してプロセッサ120に通信可能に結合され、I/Oサブシステム132は、プロセッサ120、メモリ134及び計算ノード102の他のコンポーネントとの入出力動作を実現する回路及び／又はコンポーネントとして具現されてもよい。例えば、I/Oサブシステム132は、メモリコントローラハブ、入出力制御ハブ、ファームウェアデバイス、通信リンク（例えば、ポイントツーポイントリンク、バスリンク、ワイヤ、ケーブル、光ガイド、プリント回路基板トレース等）、及び／又は入出力動作を実現する他のコンポーネント及びサブシステムとして具現されてもよく、或いはこれらを含んでもよい。或る実施例では、I/Oサブシステム132は、システムオンチップ（SoC：system-on-a-chip）の一部を形成してもよく、プロセッサ120、メモリ134、及び計算ノード102の他のコンポーネントと共に、単一の集積回路チップに組み込まれてもよい。
【００１４】
データ記憶装置136は、例えば、メモリデバイス及び回路、メモリカード、ハードディスクドライブ、ソリッドステートドライブ、又は他のデータ記憶デバイスのように、データの短期又は長期の記憶のために構成されたいずれかの種類のデバイス又は複数のデバイスとして具現されてもよい。データ記憶デバイス136は、計算ノード102により監視される性能統計を記憶してもよい。
【００１５】
計算ノード102の通信回路138は、ネットワーク108で計算ノード102、クラウドコントローラ104、クラウド状態データベース106、及び／又は他の遠隔デバイスの間の通信を可能にすることができるいずれかの通信回路、デバイス、又はこれらの集合として具現されてもよい。通信回路138は、このような通信を行うために、いずれか１つ以上の通信技術（例えば、有線又は無線通信）及び関連するプロトコル（例えば、Ethernet（登録商標）、Bluetooth（登録商標）、Wi-Fi（登録商標）、WiMAX等）を使用するように構成されてもよい。
【００１６】
クラウドコントローラ104は、システム100の計算ノード102の間に分散された仮想マシン又は他の計算インスタンスを管理するように構成される。クラウドコントローラ104は、ここに記載の機能を実行することができるいずれかの種類のサーバコンピューティングデバイス又はデバイスの集合として具現されてよい。従って、クラウドコントローラ104は、単一のサーバコンピューティングデバイス又はサーバ及び関連するデバイスの集合として具現されてもよい。例えば、或る実施例では、クラウドコントローラ104は、パブリック又はプライベートクラウドで動作し、ネットワーク108の間に分散された複数のコンピューティングデバイスから形成された“仮想サーバ”として具現されてもよい。従って、クラウドコントローラ104は、単一のサーバコンピューティングデバイスとして具現されたものとして図１に示されているが、クラウドコントローラ104は、以下に説明する機能を実現するために一緒に協力する複数のデバイスとして具現されてもよいことが認識されるべきである。例示的に、クラウドコントローラ104は、プロセッサ140、I/Oサブシステム142、メモリ144、データ記憶デバイス146、通信回路148、及び／又はサーバ又は同様のコンピューティングデバイスに一般的にある他のコンポーネント及びデバイスを含む。クラウドコントローラ104のこれらの個々のコンポーネントは、計算ノード102の対応するコンポーネントと同様でもよく、これらの説明は、クラウドコントローラ104の対応するコンポーネントに適用可能であり、この開示を曖昧にしないためここでは繰り返されない。
【００１７】
クラウド状態データベース106は、性能統計を含み、システム100の間で同期した情報を記憶する。クラウド状態データベース106は、システム100の一貫した状態を維持管理することができる専用のデータベースサーバ、分散データ記憶装置、又は他のデータ記憶システムとして具現されてもよい。従って、クラウド状態データベース106のコピー又は一部は、各計算ノード102のデータ記憶装置136及び／又はクラウドコントローラ104のデータ記憶装置146に記憶されてもよい。更新されたクラウド状態情報は、いずれかの通信プロトコルを使用して、計算ノード102、クラウドコントローラ104、及び／クラウド状態データベース106の間で伝送されてもよい。或る実施例では、クラウド状態情報は、メッセージバス、例えば、rabbitmqのようなAMQP（advanced  message  queuing  protocol）を実現するメッセージバスを使用して、非同期的に伝送されてもよい。
【００１８】
以下に更に詳細に説明するように、計算ノード102、クラウドコントローラ104、及びクラウド状態データベース106は、ネットワーク108で相互に及び／又はシステムの他のデバイスとデータを送信及び受信するように構成されてもよい。ネットワーク108は、いずれかの数の様々な有線及び／又は無線ネットワークとして具現されてもよい。例えば、ネットワーク108は、有線又は無線ローカルエリアネットワーク（LAN：local  area  network）、有線又は無線広域ネットワーク（WAN：wide  area  network）、セルラネットワーク、及び／又はインターネットのような公衆アクセス可能なグローバルネットワークとして具現されてもよく、或いはこれらを含んでもよい。従って、ネットワーク108は、システム100のデバイスの間の通信を実現するために、更なるコンピュータ、ルータ、及びスイッチのようないずれかの数の更なるデバイスを含んでもよい。
【００１９】
次に図３を参照すると、例示的な実施例では、各計算ノード102は、動作中に環境300を確立する。例示的な環境300は、複数の仮想マシン302と、データ収集モジュール304と、競合スコア決定モジュール306と、通信モジュール308とを含む。環境300の様々なモジュールは、ハードウェア、ソフトウェア、又はこれらの組み合わせとして具現されてもよい。
【００２０】
各仮想マシン302は、計算ノード102におけるクラウドコンピューティング作業負荷を実行するように構成される。各仮想マシン302は、プロセッサコア122のうち１つ以上に固定、割り当て又は割り振りされてもよい。或る実施例では、各仮想マシン302は、複数の所望の仮想CPUを指定してもよく、仮想マシン302は、その数のプロセッサコア122に割り当てられてもよい。マルチテナントのクラウドコンピューティング環境では、各仮想マシン302は、異なるエンティティにより制御されてもよく、従って、異なる性能特性を有する作業負荷を更に実行してもよい。特に、各仮想マシン302は、計算ノード102のキャッシュメモリ130に異なる圧力を及ぼしてもよい。以下に説明するように、仮想マシン302は、クラウドコントローラ104によりインスタンス化され、或いは管理される。
【００２１】
データ収集モジュール304は、計算ノード102の性能データを収集するように構成される。データ収集モジュール304は、計算ノード102でのキャッシュ競合を示すデータ、例えば、キャッシュメモリ130内のキャッシュミスを測定するデータを収集してもよい。データ収集モジュール304は、計算ノード120のプロセッサ120及び／又はプロセッサコア122毎の、又は仮想マシン302毎の個々のデータ収集器を含んでもよい。データ収集モジュール304は、ノイズを除去するために収集されたデータをフィルタリングしてもよい。データ収集モジュール304のデータ収集器は、例えば、zeromqメッセージバスのようなメッセージバスを使用して、相互に非同期で通信してもよい。
【００２２】
競合スコア決定モジュール306は、データ収集モジュール304により収集された性能データの関数として、競合スコアを計算するように構成される。競合スコアは、競合メトリックと、競合スコアレベルとの双方を含んでもよい。競合メトリックは、計算ノード102の全てのプロセッサ120のキャッシュミスを記述する集約データを含んでもよい。競合スコアレベルは、ヒューリスティックアルゴリズムにより生成されてもよく、（例えば、量子化の形式を介して）低競合、中程度競合、及び高競合のレベルから選択されてもよい。競合メトリック及び競合スコアレベルの計算については、以下に更に説明する。
【００２３】
通信モジュール308は、計算された競合スコアをクラウド状態データベース106に送信するように構成される。以下に説明するように、競合スコアは、クラウド状態データベース106を通じてクラウドコントローラ104にアクセス可能になる。通信モジュール308は、競合メトリック及び競合スコアレベルを含むタプルとして、競合スコアを送信してもよい。通信モジュール308は、システム100の他のメンバとインタフェースするためにいずれかの通信方法を使用してもよい。例えば、通信モジュール308は、メッセージバスとして具現されてもよい。
【００２４】
依然として図３を参照すると、各計算ノード102は、動作中に環境320をそれぞれ確立してもよいクラウドコントローラ104と通信する。例示的な環境320は、計算サービスモジュール322と、スケジューラモジュール324と、通信モジュール326とを含む。環境320の様々なモジュールは、ハードウェア、ファームウェア、ソフトウェア、又はこれらの組み合わせとして具現されてもよい。
【００２５】
計算サービスモジュール322は、新たな仮想マシンをインスタンス化するための要求を受信し、スケジューラモジュール324により選択された計算ノードでの実行のために新たな仮想マシン302をスケジューリングするように構成される。計算サービスモジュール322は、いずれか適切なソースからコマンドを受信してもよい。例えば、計算サービスモジュール322は、ウェブに基づく制御インタフェースを通じてクラウドシステム管理者又はクラウドコンピューティング顧客からコマンドを受信してもよい。他の例として、或る実施例では、計算サービスモジュール322は、コンピューティングサービスのための需要に基づいて、例えば、アプリケーション需要に対応するためにスケーリングするために、新たな仮想マシン302のためのコマンドを受信してもよい。
【００２６】
スケジューラモジュール324は、競合スコアデータに基づいて適切な計算ノード102を選択するように構成される。或る実施例では、スケジューラモジュール324は、最低の報告された競合スコアレベルを有する計算ノード102を選択するフィルタスケジューラとして具現されてもよい。２つ以上の計算ノード102が最低の報告された競合スコアレベルを有する場合、スケジューラモジュール324は、ランダムに１つを選択してもよく、他の利用可能な選択基準を使用することにより１つを選択してもよい。例えば、或る実施例では、スケジューラモジュール324は、計算ノード102を更にソートし、最低の競合メトリックを有する計算ノード102を選択してもよい。
【００２７】
通信モジュール326は、システム100内の全ての計算ノード102についてクラウド状態データベース106から競合スコアデータを受信するように構成される。通信モジュール326は、競合メトリック及び競合スコアレベルを含む各計算ノード102についてクラウド状態データベース106からタプルを受信してもよい。通信モジュール326は、システム100の他のメンバとインタフェースするためにいずれかの通信方法を使用してもよい。例えば、通信モジュール326は、メッセージバスとして具現されてもよい。
【００２８】
次に図４を参照すると、使用中に、各計算ノード102は、性能データを収集する方法400を実行してもよい。方法400は、ブロック402で始まり、計算ノード102は、性能データ収集を初期化する。計算ノード102は、プロセッサ120内の命令フロー及びキャッシュ競合を監視することを可能にするデータ構造、カウンタ、タイマ、又は他の機構を用意してもよい。或る実施例では、ブロック404において、計算ノード102は、性能データを監視し始めるために、PMU124、128を初期化してもよい。例えば、或る実施例では、性能データ収集は、仮想マシン302毎に初期化されてもよい。すなわち、PMU124、128及び／又は他の性能データ収集システムは、計算ノード102にインスタンス化された仮想マシン302毎に初期化されてもよい。性能カウンタを初期化するために、計算ノード102は、Linux（登録商標）性能監視システム“perf”のようなソフトウェアインタフェースを使用してもよい。
【００２９】
ブロック406において、計算ノード102は、性能データを収集する。計算ノード102は、発行及び／又はリトライされた命令の数及びクロックサイクルの数を含み、プロセッサ120及びプロセッサコア122内の命令フローについての情報を収集してもよい。計算ノード102はまた、キャッシュメモリ130内のキャッシュミスの数を含み、キャッシュ競合についての情報を収集してもよい。或る実施例では、ブロック408において、計算ノード102は、コア毎のPMU124及び／又はプロセッサ毎のPMU128を読み取ることにより、性能を監視してもよい。更に、或る実施例では、ブロック410において、計算ノード102は、収集された性能データを計算ノード012で実行する適切な仮想マシン302に関連付けてもよい。前述のように、典型的なPMU124、128は、４つのプログラム可能なカウンタ及び３つの固定機能のカウンタのような限られた数のハードウェアカウンタを含んでもよい。従って、計算ノード102は、例えば、離散的なタイムスライスで処理毎に性能データをサンプリングし、監視していないときにハードウェアカウントをメモリ134及び／又はデータ記憶装置136に記憶することにより、複数のプロセッサの間で利用可能なハードウェアカウンタを多重してもよい。性能データを仮想マシン302に関連付けることは、例えば、計算ノード102が仮想マシン302を実行していないプロセッサコア122の性能データを無視することを可能にしてもよい。計算ノード102は、仮想マシンのライフサイクル（すなわち、いつ仮想マシン302が開始されたか、停止されたか、一時停止されたか等）をトラッキングすることにより、性能データを適切な仮想マシン302に関連付けてもよい。或る実施例では、計算ノード102は、libvirtのような仮想化ライブラリを使用して仮想マシンのライフサイクルをトラッキングしてもよい。
【００３０】
或る実施例では、ブロック412において、計算ノード102は、ノイズを除去するために、収集された性能データをフィルタリングしてもよい。例えば、前述のように、計算ノード102は、比較的小さいタイムスライスでPMU124、128をサンプリングすることにより、性能データを収集してもよい。従って、サンプリングエラーが性能データに取り込まれる可能性がある。典型的には、サンプリングエラーは、１つ又は２つのサンプリング期間に生じる。計算ノード102は、誤ったサンプルを除去するために、四分位（quartile）に基づく外れ値検出アルゴリズム又は他のフィルタリングアルゴリズムを適用し、これにより、収集された性能データを明瞭にしてもよい。更に、プロセッサコア122で実行する仮想マシン302以外のランダムなタスクからデータ破損を回避するために、計算ノード102は、仮想マシン302を割り当てていない全てのプロセッサコア122について性能データ（メモリキャッシュミス等）をゼロに設定してもよい。
【００３１】
ブロック414において、計算ノード102は、収集された性能データに基づいて計算ノード102の競合スコアを決定する。競合スコアは、計算ノード102で受けたキャッシュメモリ130の競合を測定する。競合スコアは、或る基準数の命令当たり（例えば、千命令当たり）のキャッシュミスと、競合スコアレベル（例えば、高、中程度、又は低競合）とを含むタプルとして具現されてもよい。ブロック416において、計算ノード102は、千命令当たりのキャッシュミス（MPKI）を決定する。計算ノード102は、PMU124から読み取られたラストレベルキャッシュ130へのミスの数を、同様にPMU124から読み取られたリトライされた命令の数で除算し、その結果を1000で乗算することにより、MPKIを決定してもよい。計算ノード102は、PMU124、128から利用可能な性能データに応じて、コア122毎又はプロセッサ120毎にMPKIを計算してもよい。ブロック418において、計算ノード102は、全ての物理ソケットのMPKIを集約する。すなわち、計算ノード102は、計算ノード102の集約MPKI値を決定するために、全てのプロセッサ120及び／又はプロセッサコア122のMPKI値を結合する。或る実施例では、MPKI値の集約は、perfサブシステムのような性能監視サブシステムにより実行されてもよい。例示的な実施例はMPKIを計算するが、他の実施例では、計算ノード102は、他の基準数の命令当たりのキャッシュミス（例えば、一命令当たりのキャッシュミス、百命令当たりのキャッシュミス等）を計算してもよい。ブロック420において、計算ノード102は、一式の閾値に基づいて集約されたMPKI値の競合スコアレベル（例えば、高、中程度、又は低）を決定する。換言すると、計算ノード102は、MPKI値を複数の予め設定された競合スコアレベルのうち１つに量子化する。閾値は、例えば、計算ノード102のヒューリスティック競合モデル、履歴性能データ、又は他の基準に基づいて決定されてもよい。競合スコアレベルを決定する方法の一実施例について、図５に関して以下に説明する。
【００３２】
ブロック422において、計算ノード102は、競合スコアをクラウド状態データベース106に記憶する。計算ノード102は、競合スコアを更新するために、いずれかのデータ接続又はデータプロトコルを使用してもよい。或る実施例では、ブロック424において、計算ノード102は、MPKI値及び競合スコアレベルを含むタプルをクラウド状態データベース106に送信する。計算ノード102は、メッセージバスで、例えば、或る実施例ではrabbitmqメッセージバスでタプルを送信してもよい。競合スコアを記憶した後に、方法400は、計算ノード102の性能データを収集し続けるために、ブロック406にループバックする。
【００３３】
次に図５を参照すると、使用中に、各計算ノード102は、競合スコアレベルを決定する方法500を実行してもよい。方法500は、図４のブロック420に関して前述した競合スコアレベルを決定する方法として使用されてもよい。方法500はブロック502で始まり、計算ノード102は、測定された千命令当たり（又は他の基準数の命令当たり）のキャッシュミス（MPKI）値が低閾値未満であるか否かを決定する。低閾値は、例えば、計算ノード102における仮想マシン302の動作の経験的なモデリングを通じて決定されてもよい。或る実施例では、低閾値は、3MPKIでもよい。MPKI値が低閾値以上である場合、方法500は、以下に説明するブロック506に分岐する。MPKI値が低閾値未満である場合、方法500はブロック504に分岐し、競合スコアレベルが低競合レベルに設定される。競合レベルを割り当てた後に、方法500が完了する。
【００３４】
前述のように、MPKI値が低閾値以上である場合、方法500はブロック506に分岐する。ブロック506において、計算ノード102は、測定されたMPKI値が高閾値以上であるか否かを決定する。低閾値と同様に、高閾値は、例えば、計算ノード102における仮想マシンの動作の経験的なモデリングを通じて決定されてもよい。或る実施例では、高閾値は、50MPKIでもよい。MPKI値が高閾値以上である場合、方法500は、以下に説明するブロック510に分岐する。MPKI値が高閾値未満である場合、方法500はブロック508に分岐し、競合スコアレベルは、中程度競合レベルに設定される。競合レベルを割り当てた後に、方法500が完了する。
【００３５】
ブロック506に戻り、MPKI値が高閾値以上である場合、方法500はブロック510に分岐する。ブロック510において、競合スコアレベルは、高競合レベルに設定される。競合レベルを割り当てた後に、方法500が完了する。方法500は、３つの競合スコアレベル（すなわち、高、中程度、及び低競合）の間を選択することを示しているが、他の実施例では、競合スコアレベルを量子化又は設定するために異なる粒度が使用されてもよいことが認識されるべきである。例えば、或る実施例は、２つの競合スコアレベル（例えば、低及び高競合）の間を選択してもよく、或る実施例は、５つの競合スコアレベルの間を選択してもよく、以下同様である。
【００３６】
次に図６を参照すると、使用中に、クラウドコントローラ104は、競合意識型計算スケジューリングの方法600を実行してもよい。方法600はブロック602で始まり、クラウドコントローラ104は、新たな仮想マシン302インスタンスの要求を監視する。仮想マシン302インスタンスの要求は、クラウド計算アプリケーションプログラミングインタフェースを通じて受信されてもよく、ユーザ要求により生成されてもよく、自動的な要求により生成されてもよい。例えば、新たな仮想マシン302インスタンスは、アプリケーションサービスへの増加する需要を満たすために、クラウド顧客又はクラウド管理者により要求されてもよい。ブロック604において、クラウドコントローラ104は、新たな仮想マシン302が要求されたか否かを決定する。そうでない場合、方法600は、仮想マシン302要求を監視し続けるために、ブロック602にループバックする。新たな仮想マシン302が要求された場合、方法600は、新たな仮想マシン302をスケジューリングするために、ブロック606に進む。
【００３７】
ブロック606において、クラウドコントローラ104は、クラウドシステム100内の全ての利用可能な計算ノードを識別する。クラウドコントローラ104は、利用可能なノードを識別するために利用可能ないずれかの技術を使用してもよい。例えば、クラウドコントローラ104は、利用可能なノードについての情報についてクラウド状態データベース106に問い合わせてもよい。
【００３８】
或る実施例では、ブロック608において、クラウドコントローラ104は、新たな仮想マシン302のキャパシティのないいずれかの計算ノード102をフィルタ除去してもよい。例えば、クラウドコントローラ104は、閾値数の仮想マシン302及び／又は仮想CPUが既にインスタンス化されている計算ノード102をフィルタ除去してもよい。閾値数の仮想マシン302及び／又は仮想CPUは、計算ノード102に含まれるプロセッサコア122の数に設定されてもよく、プロセッサコア122の数に所定の過大割り当て係数を加えたものに設定されてもよい。或る実施例では、クラウドコントローラ104は、新たな仮想マシン302により要求された仮想CPUの数より少ない利用可能なプロセッサコア122を有する計算ノード102をフィルタ除去してもよい。フィルタリングは、novaのようなクラウド計算フレームワークのフィルタスケジューラにより実行されてもよい。
【００３９】
ブロック610において、クラウドコントローラ104は、クラウド状態データベース106からそれぞれの残りの計算ノード102の競合スコアを取得する。前述のように、競合スコアは、千（又は他の基準数）命令当たりのキャッシュミス（MPKI）値及び競合スコアレベルを含むタプルとして具現されてもよい。クラウドコントローラ104は、クラウド状態データベース106に問い合わせるためにいずれかの利用可能な技術を使用してもよい。例えば、クラウドコントローラ104は、rabbitmqメッセージバスのようなメッセージバスでクラウド状態データベース106と通信してもよい。
【００４０】
ブロック612において、クラウドコントローラ104は、競合スコアレベルに基づいて計算ノード102を選択する。或る実施例では、ブロック614において、クラウドコントローラ104は、最低の報告された競合スコアレベルを有する計算ノード102を選択してもよい。例えば、クラウドコントローラ104は、低競合レベルを有するいずれかの計算ノード102を選択してもよい。低競合レベルを有する計算ノード102が利用可能でない場合、クラウドコントローラ104は、中程度競合レベルを有するいずれかの計算ノード102を選択してもよく、以下同様である。クラウドコントローラ104は、ランダムな選択、ラウンドロビンの選択、又は他の選択基準のように、最低の利用可能な競合スコアレベルを有する計算ノード102から選択するためにいずれかの基準を使用してもよい。或る実施例では、ブロック616において、クラウドコントローラ104は、最低のMPKI値、すなわち、最低の測定されたキャッシュ競合を有する計算ノード102を選択するために、計算ノード102をソートしてもよい。
【００４１】
ブロック618において、クラウドコントローラ104は、選択された計算ノード102で新たな仮想マシン302をスケジューリングする。クラウドコントローラ104は、新たな仮想マシン302をスケジューリングするためにいずれかのプロトコル又は技術を使用してもよい。例えば、クラウドコントローラ104は、novaのようなクラウドコンピューティングフレームワークを使用して仮想マシンをスケジューリングしてもよい。或る実施例では、クラウドコントローラ104は、例えば、アプリケーションプログラミングインタフェースを通じて、新たな仮想マシン302をインスタンス化するために、選択された計算ノード102のハイパーバイザ又は他の仮想化フレームワークと通信してもよい。新たな仮想マシン302をスケジューリングした後に、方法600は、仮想マシン302をスケジューリングするための更なる要求を監視するために、ブロック602にループバックする。
【００４２】
＜例＞
ここに開示された技術の例示的な例が以下に提供される。この技術の実施例は、以下に記載する例のうちいずれか１つ以上及びいずれかの組み合わせを含んでもよい。
【００４３】
例１は、クラウドコンピューティングクラスタのクラウドコントローラを含み、クラウドコントローラは、新たな仮想マシンの要求を受信する計算サービスモジュールと、クラウドコンピューティングクラスタの複数の計算ノードの各計算ノードの競合スコアを受信する通信モジュールであり、競合スコアは、計算ノードのキャッシュメモリの競合を示す通信モジュールと、競合スコアに基づいて計算ノードを選択するスケジューラモジュールとを有し、計算サービスモジュールは、選択された計算ノードにおいて新たな仮想マシンを更にスケジューリングする。
【００４４】
例２は、例１の対象物を含み、競合スコアは、競合メトリックを有し、競合メトリックは、計算ノードのキャッシュミスの数の関数である。
【００４５】
例３は、例１及び２のいずれかの対象物を含み、競合メトリックは、計算ノードの基準数の命令当たりのキャッシュミスの率を有する。
【００４６】
例４は、例１〜３のいずれかの対象物を含み、基準数の命令当たりのキャッシュミスの率は、計算ノードの全てのプロセッサコアについて集約された率を有する。
【００４７】
例５は、例１〜４のいずれかの対象物を含み、計算ノードを選択することは、最低の競合メトリックを有する計算ノードを選択するために、競合メトリックに基づいて複数の計算ノードをソートすることを有する。
【００４８】
例６は、例１〜５のいずれかの対象物を含み、競合スコアは、計算ノードの競合メトリックを示す競合スコアレベルを有する。
【００４９】
例７は、例１〜６のいずれかの対象物を含み、競合スコアレベルは、競合メトリックの量子化である競合スコアレベルを有する。
【００５０】
例８は、例１〜７のいずれかの対象物を含み、競合スコアレベルは、計算ノードの基準数の命令当たりの計算ノードのキャッシュミスの率と、１つ以上の閾値との比較により決定された競合スコアレベルを有する。
【００５１】
例９は、例１〜８のいずれかの対象物を含み、競合スコアレベルは、基準数の命令当たりのキャッシュミスの率が低競合閾値未満であることを示す低競合レベル、基準数の命令当たりのキャッシュミスの率が低競合閾値以上且つ高競合閾値未満であることを示す中程度競合レベル、又は基準数の命令当たりのキャッシュミスの率が高競合閾値以上であることを示す高競合レベルを有する。
【００５２】
例１０は、例１〜９のいずれかの対象物を含み、低競合閾値は、千命令当たり３個のキャッシュミスを有し、高競合閾値は、千命令当たり５０個のキャッシュミスを有する。
【００５３】
例１１は、例１〜１０のいずれかの対象物を含み、計算ノードを選択することは、複数の計算ノードのうち最低の競合スコアレベルを有する計算ノードを選択することを有する。
【００５４】
例１２は、例１〜１１のいずれかの対象物を含み、スケジューラモジュールは、競合スコアの受信前に新たな仮想マシンのキャパシティのないいずれかの計算ノードを除去するために、複数の計算ノードを更にフィルタリングする。
【００５５】
例１３は、クラウドコンピューティングクラスタの計算ノードを含み、計算ノードは、計算ノードのキャッシュメモリの競合を示す性能データを収集するデータ収集モジュールと、性能データの関数として競合スコアを決定する競合スコア決定モジュールであり、競合スコアは、競合メトリックと、競合メトリックを示す競合スコアレベルとを含む競合スコア決定モジュールと、競合スコアをクラウド状態データベースに記憶する通信モジュールであり、クラウド状態データベースは、クラウドコンピューティングクラスタのクラウドコントローラによりアクセス可能である通信モジュールとを有する。
【００５６】
例１４は、例１３の対象物を含み、性能監視ユニットを含むプロセッサコアを更に有し、性能データを収集することは、プロセッサコアの性能監視ユニットを読み取ることを有する。
【００５７】
例１５は、例１３及び１４のいずれかの対象物を含み、非コアを含むプロセッサを更に含み、非コアは、性能監視ユニットを含み、性能データを収集することは、プロセッサの非コアの性能監視ユニットを読み取ることを有する。
【００５８】
例１６は、例１３〜１５のいずれかの対象物を含み、性能データを収集することは、性能データを、計算ノードにより実行された１つ以上の仮想マシンに関連付けることを有する。
【００５９】
例１７は、例１３〜１６のいずれかの対象物を含み、データ収集モジュールは、競合スコアの決定の前に、ノイズを除去するために性能データを更にフィルタリングする。
【００６０】
例１８は、例１３〜１７のいずれかの対象物を含み、競合スコアを決定することは、計算ノードのキャッシュミスの数の関数として競合メトリックを決定することを有する。
【００６１】
例１９は、例１３〜１８のいずれかの対象物を含み、競合メトリックを決定することは、基準数の命令当たりのキャッシュミスの率を決定することを有する。
【００６２】
例２０は、例１３〜１９のいずれかの対象物を含み、競合メトリックを決定することは、計算ノードの全てのプロセッサコアについて基準数の命令当たりのキャッシュミスの率を集約することを有する。
【００６３】
例２１は、例１３〜２０のいずれかの対象物を含み、競合スコアを決定することは、競合メトリックの量子化により競合スコアレベルを決定することを有する。
【００６４】
例２２は、例１３〜２１のいずれかの対象物を含み、競合スコアを決定することは、基準数の命令当たりの計算ノードのキャッシュミスの率と、１つ以上の閾値との比較により競合スコアレベルを決定することを有する。
【００６５】
例２３は、例１３〜２２のいずれかの対象物を含み、競合スコアレベルを決定することは、基準数の命令当たりのキャッシュミスの率と低競合閾値とを比較し、率が低競合閾値未満であるという決定に応じて競合スコアレベルを低競合レベルに設定し、基準数の命令当たりのキャッシュミスの率と高競合閾値とを比較し、率が低競合閾値以上且つ高競合閾値未満であるという決定に応じて競合スコアレベルを中程度競合レベルに設定し、率が高競合閾値以上であるという決定に応じて競合スコアレベルを高競合レベルに設定することを更に有する。
【００６６】
例２４は、例１３〜２３のいずれかの対象物を含み、低競合閾値は、千命令当たり３個のキャッシュミスを有し、高競合閾値は、千命令当たり５０個のキャッシュミスを有する。
【００６７】
例２５は、クラウド計算スケジューリングの方法を含み、この方法は、クラウドコンピューティングクラスタのクラウドコントローラにより、新たな仮想マシンの要求を受信するステップと、クラウドコントローラにより、クラウドコンピューティングクラスタの複数の計算ノードの各計算ノードの競合スコアを受信するステップであり、競合スコアは、計算ノードのキャッシュメモリの競合を示すステップと、クラウドコントローラにより、競合スコアに基づいて計算ノードを選択するステップと、クラウドコントローラにより、選択された計算ノードにおいて新たな仮想マシンをスケジューリングするステップとを有する。
【００６８】
例２６は、例２５の対象物を含み、競合スコアを受信するステップは、競合メトリックを受信するステップであり、競合メトリックは、計算ノードのキャッシュミスの数の関数であるステップを有する。
【００６９】
例２７は、例２５及び２６のいずれかの対象物を含み、競合メトリックを受信するステップは、計算ノードの基準数の命令当たりのキャッシュミスの率を受信するステップを有する。
【００７０】
例２８は、例２５〜２７のいずれかの対象物を含み、計算ノードの基準数の命令当たりのキャッシュミスの率を受信するステップは、計算ノードの全てのプロセッサコアについて集約された率を受信するステップを有する。
【００７１】
例２９は、例２５〜２８のいずれかの対象物を含み、計算ノードを選択するステップは、クラウドコントローラにより、最低の競合メトリックを有する計算ノードを選択するために、競合メトリックに基づいて複数の計算ノードをソートするステップを有する。
【００７２】
例３０は、例２５〜２９のいずれかの対象物を含み、競合スコアを受信するステップは、計算ノードの競合メトリックを示す競合スコアレベルを受信するステップを有する。
【００７３】
例３１は、例２５〜３０のいずれかの対象物を含み、競合スコアレベルを受信するステップは、競合メトリックの量子化である競合スコアレベルを受信するステップを有する。
【００７４】
例３２は、例２５〜３１のいずれかの対象物を含み、競合スコアレベルを受信するステップは、計算ノードの基準数の命令当たりの計算ノードのキャッシュミスの率と、１つ以上の閾値とを比較することにより決定された競合スコアレベルを受信するステップを有する。
【００７５】
例３３は、例２５〜３２のいずれかの対象物を含み、競合スコアレベルを受信するステップは、基準数の命令当たりのキャッシュミスの率が低競合閾値未満であることを示す低競合レベルを受信するステップ、基準数の命令当たりのキャッシュミスの率が低競合閾値以上且つ高競合閾値未満であることを示す中程度競合レベルを受信するステップ、又は基準数の命令当たりのキャッシュミスの率が高競合閾値以上であることを示す高競合レベルを受信するステップを有する。
【００７６】
例３４は、例２５〜３３のいずれかの対象物を含み、低競合閾値は、千命令当たり３個のキャッシュミスを有し、高競合閾値は、千命令当たり５０個のキャッシュミスを有する。
【００７７】
例３５は、例２５〜３４のいずれかの対象物を含み、計算ノードを選択するステップは、複数の計算ノードのうち最低の競合スコアレベルを有する計算ノードを選択するステップを有する。
【００７８】
例３６は、例２５〜３５のいずれかの対象物を含み、クラウドコントローラにより、競合スコアの受信前に新たな仮想マシンのキャパシティのないいずれかの計算ノードを除去するために、複数の計算ノードをフィルタリングするステップを更に含む。
【００７９】
例３７は、クラウドコンピューティングの競合監視の方法を含み、この方法は、クラウドコンピューティングクラスタの計算ノードにより、計算ノードのキャッシュメモリの競合を示す性能データを収集するステップと、計算ノードにより、性能データの関数として競合スコアを決定するステップであり、競合スコアは、競合メトリックと、競合メトリックを示す競合スコアレベルとを含むステップと、計算ノードにより、競合スコアをクラウド状態データベースに記憶するステップであり、クラウド状態データベースは、クラウドコンピューティングクラスタのクラウドコントローラによりアクセス可能であるステップとを有する。
【００８０】
例３８は、例３７の対象物を含み、性能データを収集するステップは、計算ノードのプロセッサコアの性能監視ユニットを読み取るステップを有する。
【００８１】
例３９は、例３７及び３８のいずれかの対象物を含み、性能データを収集するステップは、計算ノードのプロセッサの非コアの性能監視ユニットを読み取るステップを有する。
【００８２】
例４０は、例３７〜３９のいずれかの対象物を含み、車両構成管理モジュールは、車両の車両識別子を決定し、データ記憶装置からユーザ車両構成設定を取得し、性能データを収集するステップは、性能データを、計算ノードにより実行された１つ以上の仮想マシンに関連付けるステップを有する。
【００８３】
例４１は、例３７〜４０のいずれかの対象物を含み、計算ノードにより、競合スコアの決定の前に、ノイズを除去するために性能データをフィルタリングするステップを更に含む。
【００８４】
例４２は、例３７〜４１のいずれかの対象物を含み、競合スコアを決定するステップは、計算ノードのキャッシュミスの数の関数として競合メトリックを決定するステップを有する。
【００８５】
例４３は、例３７〜４２のいずれかの対象物を含み、競合メトリックを決定するステップは、基準数の命令当たりのキャッシュミスの率を決定するステップを有する。
【００８６】
例４４は、例３７〜４３のいずれかの対象物を含み、競合メトリックを決定するステップは、計算ノードの全てのプロセッサコアについて基準数の命令当たりのキャッシュミスの率を集約するステップを有する。
【００８７】
例４５は、例３７〜４４のいずれかの対象物を含み、競合スコアを決定するステップは、競合メトリックを量子化することにより競合スコアレベルを決定するステップを有する。
【００８８】
例４６は、例３７〜４５のいずれかの対象物を含み、競合スコアを決定するステップは、基準数の命令当たりの計算ノードのキャッシュミスの率と、１つ以上の閾値とを比較することにより競合スコアレベルを決定するステップを有する。
【００８９】
例４７は、例３７〜４６のいずれかの対象物を含み、競合スコアレベルを決定するステップは、基準数の命令当たりのキャッシュミスの率と低競合閾値とを比較するステップと、率が低競合閾値未満であるという決定に応じて競合スコアレベルを低競合レベルに設定するステップと、基準数の命令当たりのキャッシュミスの率と高競合閾値とを比較するステップと、率が低競合閾値以上且つ高競合閾値未満であるという決定に応じて競合スコアレベルを中程度競合レベルに設定するステップと、率が高競合閾値以上であるという決定に応じて競合スコアレベルを高競合レベルに設定するステップとを更に有する。
【００９０】
例４８は、例３７〜４７のいずれかの対象物を含み、低競合閾値は、千命令当たり３個のキャッシュミスを有し、高競合閾値は、千命令当たり５０個のキャッシュミスを有する。
【００９１】
例４９は、プロセッサと、プロセッサにより実行された場合、コンピューティングデバイスに対して例２５〜４８のいずれかの方法を実行させる複数の命令を記憶したメモリとを有するコンピューティングデバイスを含む。
【００９２】
例５０は、実行されたことに応じてコンピューティングデバイスが例２５〜４８のいずれかの方法を実行することを生じる、記憶された複数の命令を有する１つ以上の機械読み取り可能記憶媒体を含む。
【００９３】
例５１は、例２５〜４８のいずれかの方法を実行する手段を有するコンピューティングデバイスを含む。
【００９４】
例５２は、クラウドコンピューティングクラスタのクラウドコントローラを含み、クラウドコントローラは、新たな仮想マシンの要求を受信する手段と、クラウドコンピューティングクラスタの複数の計算ノードの各計算ノードの競合スコアを受信する手段であり、競合スコアは、計算ノードのキャッシュメモリの競合を示す手段と、競合スコアに基づいて計算ノードを選択する手段と、選択された計算ノードにおいて新たな仮想マシンをスケジューリングする手段とを含む。
【００９５】
例５３は、例５２の対象物を含み、競合スコアを受信する手段は、競合メトリックを受信する手段であり、競合メトリックは、計算ノードのキャッシュミスの数の関数である手段を有する。
【００９６】
例５４は、例５２及び５３のいずれかの対象物を含み、競合メトリックを受信する手段は、計算ノードの基準数の命令当たりのキャッシュミスの率を受信する手段を有する。
【００９７】
例５５は、例５２〜５４のいずれかの対象物を含み、計算ノードの基準数の命令当たりのキャッシュミスの率を受信する手段は、計算ノードの全てのプロセッサコアについて集約された率を受信する手段を有する。
【００９８】
例５６は、例５２〜５５のいずれかの対象物を含み、計算ノードを選択する手段は、最低の競合メトリックを有する計算ノードを選択するために、競合メトリックに基づいて複数の計算ノードをソートする手段を有する。
【００９９】
例５７は、例５２〜５６のいずれかの対象物を含み、競合スコアを受信する手段は、計算ノードの競合メトリックを示す競合スコアレベルを受信する手段を有する。
【０１００】
例５８は、例５２〜５７のいずれかの対象物を含み、競合スコアレベルを受信する手段は、競合メトリックの量子化である競合スコアレベルを受信する手段を有する。
【０１０１】
例５９は、例５２〜５８のいずれかの対象物を含み、競合スコアレベルを受信する手段は、計算ノードの基準数の命令当たりの計算ノードのキャッシュミスの率と、１つ以上の閾値とを比較することにより決定された競合スコアレベルを受信する手段を有する。
【０１０２】
例６０は、例５２〜５９のいずれかの対象物を含み、競合スコアレベルを受信する手段は、基準数の命令当たりのキャッシュミスの率が低競合閾値未満であることを示す低競合レベルを受信する手段、基準数の命令当たりのキャッシュミスの率が低競合閾値以上且つ高競合閾値未満であることを示す中程度競合レベルを受信する手段、又は基準数の命令当たりのキャッシュミスの率が高競合閾値以上であることを示す高競合レベルを受信する手段を有する。
【０１０３】
例６１は、例５２〜６０のいずれかの対象物を含み、低競合閾値は、千命令当たり３個のキャッシュミスを有し、高競合閾値は、千命令当たり５０個のキャッシュミスを有する。
【０１０４】
例６２は、例５２〜６１のいずれかの対象物を含み、計算ノードを選択する手段は、複数の計算ノードのうち最低の競合スコアレベルを有する計算ノードを選択する手段を有する。
【０１０５】
例６３は、例５２〜６２のいずれかの対象物を含み、競合スコアの受信前に新たな仮想マシンのキャパシティのないいずれかの計算ノードを除去するために、複数の計算ノードをフィルタリングする手段を更に有する。
【０１０６】
例６４は、クラウドコンピューティングクラスタの計算ノードを含み、計算ノードは、計算ノードのキャッシュメモリの競合を示す性能データを収集する手段と、性能データの関数として競合スコアを決定する手段であり、競合スコアは、競合メトリックと、競合メトリックを示す競合スコアレベルとを含む手段と、競合スコアをクラウド状態データベースに記憶する手段であり、クラウド状態データベースは、クラウドコンピューティングクラスタのクラウドコントローラによりアクセス可能である手段とを有する。
【０１０７】
例６５は、例６４の対象物を含み、性能データを収集する手段は、計算ノードのプロセッサコアの性能監視ユニットを読み取る手段を有する。
【０１０８】
例６６は、例６４及び６５のいずれかの対象物を含み、性能データを収集する手段は、計算ノードのプロセッサの非コアの性能監視ユニットを読み取る手段を有する。
【０１０９】
例６７は、例６４〜６６のいずれかの対象物を含み、性能データを収集する手段は、性能データを、計算ノードにより実行された１つ以上の仮想マシンに関連付ける手段を有する。
【０１１０】
例６３は、例６４〜６７のいずれかの対象物を含み、競合スコアの決定の前に、ノイズを除去するために性能データをフィルタリングする手段を更に有する。
【０１１１】
例６９は、例６４〜６８のいずれかの対象物を含み、競合スコアを決定する手段は、計算ノードのキャッシュミスの数の関数として競合メトリックを決定する手段を有する。
【０１１２】
例７０は、例６４〜６９のいずれかの対象物を含み、競合メトリックを決定する手段は、基準数の命令当たりのキャッシュミスの率を決定する手段を有する。
【０１１３】
例７１は、例６４〜７０のいずれかの対象物を含み、競合メトリックを決定する手段は、計算ノードの全てのプロセッサコアについて基準数の命令当たりのキャッシュミスの率を集約する手段を有する。
【０１１４】
例７２は、例６４〜７１のいずれかの対象物を含み、競合スコアを決定する手段は、競合メトリックを量子化することにより競合スコアレベルを決定する手段を有する。
【０１１５】
例７３は、例６４〜７２のいずれかの対象物を含み、競合スコアを決定する手段は、基準数の命令当たりの計算ノードのキャッシュミスの率と、１つ以上の閾値とを比較することにより競合スコアレベルを決定する手段を有する。
【０１１６】
例７４は、例６４〜７３のいずれかの対象物を含み、競合スコアレベルを決定する手段は、基準数の命令当たりのキャッシュミスの率と低競合閾値とを比較する手段と、率が低競合閾値未満であるという決定に応じて競合スコアレベルを低競合レベルに設定する手段と、基準数の命令当たりのキャッシュミスの率と高競合閾値とを比較する手段と、率が低競合閾値以上且つ高競合閾値未満であるという決定に応じて競合スコアレベルを中程度競合レベルに設定する手段と、率が高競合閾値以上であるという決定に応じて競合スコアレベルを高競合レベルに設定する手段とを更に有する。
【０１１７】
例７５は、例６４〜７４のいずれかの対象物を含み、低競合閾値は、千命令当たり３個のキャッシュミスを有し、高競合閾値は、千命令当たり５０個のキャッシュミスを有する。
【図１】
2017500666.tif 000003
【図２】
2017500666.tif 000004
【図３】
2017500666.tif 000005
【図４】
2017500666.tif 000006
【図５】
2017500666.tif 000007
【図６】
2017500666.tif 000008
【国際調査報告】
2017500666.tif 000009
2017500666.tif 000010