【文献】
Andrei Bogdan Antonescu,"Efficient Task Placement in Large Computing Clusters",[online], Imperial Colledge of Science, Technology and Medicine, Department of Computing,2015年06月,Pages 17,18 and 98,[令和3年5月7日検索], インターネット, <URL: https://www.doc.ic.ac.uk/teaching/distinguished-projects/2015/a.antonescu.pdf>.
【文献】
Malte Schwarzkopf, et al.,"Omega: flexible, scalable schedulers for large compute clusters",Proceedings of the 8th ACM European Conference on Computer Systems (EuroSys'13),2013年04月17日,Pages 351-364,ISBN: 978-1-4503-1994-2, <DOI: 10.1145/2465351.2465386>.
【文献】
Andrew D. Konwinski,"Multi-agent Cluster Scheduling for Scalability and Flexibility",[online], UNIVERSITY OF CALIFORNIA, BERKELEY,2012年,Pages 13,14 and 57-64,[令和3年5月7日検索], インターネット, <URL: https://escholarship.org/uc/item/9hr3c370>.
【文献】
Anurag Jain, et al.,"A Multi Stage Load Balancing Technique for Cloud Environment",Proceedings of the 2016 International Conference On Information Communication And Embedded System (ICICES 2016),2016年02月26日,Pages 1-7,ISBN 978-1-5090-2552-7, <DOI: 10.1109/ICICES.2016.7518921>.
(58)【調査した分野】(Int.Cl.,DB名)
前記スケジューリングサーバが、前記共通リソース情報の中から、前記仮想マシン情報を満たすターゲットホストマシン情報を選別し、前記ターゲットホストマシン情報を予め設けられたリソース情報プライベートコピーに追加することは、
前記リソース情報プライベートコピーの初回更新である場合、前記スケジューリングサーバが、前記共通リソース情報の中から、前記仮想マシン情報を満たすターゲットホストマシン情報を選別し、
前記スケジューリングサーバが、前記ターゲットホストマシン情報を前記リソース情報プライベートコピーにコピーし、
前記スケジューリングサーバが、現在タイムスタンプを取得し、前記現在タイムスタンプを完全更新タイムスタンプ及び増分更新タイムスタンプとして設定し、
前記スケジューリングサーバが、前記完全更新タイムスタンプ及び前記増分更新タイムスタンプを前記リソース情報プライベートコピーに記憶する、
ことを含む請求項3に記載のリソーススケジューリング方法。
前記スケジューリングサーバが、前記共通リソース情報の中から、前記仮想マシン情報を満たすターゲットホストマシン情報を選別し、前記ターゲットホストマシン情報を予め設けられたリソース情報プライベートコピーに追加することは、
前記リソース情報プライベートコピーの初回更新ではない場合、前記スケジューリングサーバが、現在タイムスタンプと最後の完全更新タイムスタンプとの時間差を取得し、
前記スケジューリングサーバが、前記時間差が所定の完全更新閾値より大きいか否かを判断し、
前記時間差が前記完全更新閾値より大きいとき、前記スケジューリングサーバが、前記共通リソース情報の中から、前記仮想マシン情報を満たす第1ターゲットホストマシン情報を選別し、
前記スケジューリングサーバが、前記第1ターゲットホストマシン情報を前記リソース情報プライベートコピーにコピーし、
前記スケジューリングサーバが、前記現在タイムスタンプを第1完全更新タイムスタンプ及び第1増分更新タイムスタンプとして設定し、
前記スケジューリングサーバが、前記第1完全更新タイムスタンプ及び前記第1増分更新タイムスタンプを前記リソース情報プライベートコピーに記憶する、
ことを含む請求項3に記載のリソーススケジューリング方法。
前記スケジューリングサーバが、前記候補ホストマシンリストの各候補ホストマシンの順序で、逐一、各候補ホストマシンから、作成する前記仮想マシンのリソース要件を差し引いて、前記各候補ホストマシンの残りリソースを得る前に、前記スケジューリングサーバが、前記候補ホストマシンリストのランキングの上位所定数の候補ホストマシンをリランキングして、候補ホストマシンターゲットリストを生成する、ことをさらに含み、
前記スケジューリングサーバが、前記候補ホストマシンリストの各候補ホストマシンの順序で、逐一、各候補ホストマシンから、作成する前記仮想マシンのリソース要件を差し引いて、前記各候補ホストマシンの残りリソースを得ることは、前記スケジューリングサーバが、前記候補ホストマシンターゲットリストの各候補ホストマシンの順序で、逐一、前記候補ホストマシンターゲットリストの各候補ホストマシンから、作成する前記仮想マシンのリソース要件を差し引いて、残りリソースを得る、ことを含む、
請求項7に記載のリソーススケジューリング方法。
前記スケジューリングサーバが、前記候補ホストマシンリストのランキングの上位所定数の候補ホストマシンをリランキングして、候補ホストマシンターゲットリストを生成することは、
前記スケジューリングサーバが、前記候補ホストマシンリストのランキングの上位所定数の候補ホストマシンをランダムにリランキングして、前記候補ホストマシンターゲットリストを得る、
ことを含む請求項8に記載のリソーススケジューリング方法。
前記スケジューリングサーバが、前記各候補ホストマシンのうち1つの候補ホストマシンの前記残りリソースのコミットが成功するまで、前記各候補ホストマシンの残りリソースを前記共通リソース情報へコミットすることは、
ある候補ホストマシンの残りリソースのコミットが失敗した場合、前記スケジューリングサーバが、該候補ホストマシンの残りリソースのコミット回数がスケジューリング競合閾値を超えるか否かを決定し、
該候補ホストマシンの残りリソースのコミット回数が前記スケジューリング競合閾値を超えていないと決定されたとき、前記スケジューリングサーバが、該候補ホストマシンの最新のリソースデータを取得し、該候補ホストマシンに対応する前記残りリソースを再決定し、
該候補ホストマシンの残りリソースのコミット回数が前記スケジューリング競合閾値を超えたと決定されたとき、前記スケジューリングサーバが、前記候補ホストマシンリストの次の候補ホストマシンから、作成する前記仮想マシンのリソース要件を差し引いて、相応の残りリソースを得、前記相応の残りリソースをコミットする、
ことを含む請求項7に記載のリソーススケジューリング方法。
複数の命令を記憶した記憶媒体であって、前記命令は、プロセッサによってロードされることで、請求項1乃至11のいずれか1項に記載のリソーススケジューリング方法を実行させるように構成される記憶媒体。
【発明を実施するための形態】
【0014】
以下、本願の実施例の図面を参照して、本願の実施例の構成を明瞭かつ完全に説明する。明らかに、説明される実施例は、本願の実施例の全部ではなく、本願の実施例の一部にすぎない。当業者が創造的な労働をせずに本願の実施例から得るすべての他の実施例は、本願の保護範囲に属する。
【0015】
以下の説明では、本願の具体的な実施例について、別段に明示されない限り、1つ又は複数のコンピュータによって実行されるステップ及び符号を参照して説明する。このため、これらのステップ及び動作がコンピュータによって実行されることに数回言及する。本文におけるコンピュータによって実行される動作には、構造化データを表す電子信号のコンピュータ処理ユニットによって実行される動作が含まれる。この動作は、該データを変換したり、該データを該コンピュータのメモリシステムにおける位置に維持したりし、再設定されることにより、又は、当業者が熟知している別の方式で、該コンピュータの作動を変えることが可能である。該データによって維持されるデータ構造は、該メモリの物理的な位置にあり、該データフォーマットによって定義される特定の特性を持つ。しかしながら、上記の文字は、本願の原理を説明しているが、制限を表すものではない。当業者であれば理解できるように、次に説明する複数のステップ及び動作は、ハードウェアでも実施可能である。
【0016】
本願の実施例では、リソーススケジューリング方法、スケジューリングサーバ、クラウドコンピューティングシステム、及び記憶媒体が提供されている。
【0017】
図1を参照されたい。
図1は、本願の実施例で提供されたリソーススケジューリングシステムのシナリオの模式図である。このリソーススケジューリングシステムは、クラウドコンピューティングシステムであってもよい。このクラウドコンピューティングシステムは、リソーススケジューリング装置を含んでもよい。このリソーススケジューリング装置は、具体的に、スケジューリングサーバに統合されてもよい。このスケジューリングサーバは、クラウドコンピューティングシステムのスケジューラであってもよい。言い換えれば、各スケジューラには、リソーススケジューリング装置が含まれてもよい。クラウドコンピューティングシステムには、例えば、
図1に示すスケジューラ1、2…nのような1つ又は複数のスケジューラが含まれてもよい。スケジューラは、作成する仮想マシンに対応する仮想マシン情報を取得し、共通リソース情報を取得する。共通リソース情報には、クラウドコンピューティングシステムのすべてのホストマシンに対応するホストマシン情報が含まれてもよい。次に、スケジューラは、共通リソース情報及び仮想マシン情報に基づいて、予め設けられたリソース情報プライベートコピーを更新してもよい。このリソース情報プライベートコピーには、所定のホストマシンに対応するホストマシン情報が含まれる。スケジューラによってメンテナンスされるリソース情報プライベートコピーは、作成する仮想マシンに対して、適当なホストマシンを選択することに用いられてもよい。スケジューラは、リソース情報プライベートコピーに基づいて、仮想マシン情報を満たす少なくとも1つの候補ホストマシンを取得すること、少なくとも1つの候補ホストマシンの中からターゲットホストマシンを選択し、ターゲットホストマシン上に仮想マシンを作成することなどを行ってもよい。
【0018】
また、該クラウドコンピューティングシステムには、例えば、
図1に示すホストマシンA、B…nのような1つ又は複数のホストマシンが含まれてもよい。ホストマシンは、スケジューラから送信された仮想マシン作成要求を受信し、この要求に応じて、1つ又は複数の仮想マシンを作成してもよい。
【0019】
該クラウドコンピューティングシステムには、1つ又は複数の端末から送信された仮想マシン作成要求を主に受信する受信器が含まれてもよい。この仮想マシン作成要求には、仮想マシン情報が付けられてもよい。次に、受信器は、受信された各仮想マシン作成要求のそれぞれをメッセージにカプセル化し、メッセージを予め設けられたメッセージキューに格納してもよい。これにより、スケジューラは、メッセージキューからメッセージを取得して、メッセージから、作成する仮想マシン情報を抽出することが可能になる。説明すべきものとして、メッセージキューに複数のメッセージが存在する場合、複数のスケジューラは、並行的に、メッセージを取得し、作成する異なる仮想マシンに対してホストマシンを選択することができる。
【0020】
該クラウドコンピューティングシステムには、主に共通リソース情報をメンテナンスするリソースマネージャーが含まれてもよい。これにより、スケジューラは、リソースマネージャーから共通リソース情報を取得することが可能になる。該共通リソース情報は、クラウドコンピューティングシステムのすべてのホストマシンに対応するホストマシン情報の記憶及びメンテナンスに用いられる。
【0021】
説明すべきものとして、
図1に示すリソーススケジューリングシステムのシナリオの模式図は、一例にすぎない。本願の実施例で説明するリソーススケジューリングシステム及びシナリオは、本願の実施例の構成をより明確に説明するためのものであり、本願の実施例で提供された構成を限定するものではない。当業者には、クラウドコンピューティングシステムの進化及び新しい業務シナリオの出現に伴い、本願の実施例で提供された構成が類似の技術的課題にも同様に適用可能であることが分かる。
【0023】
本実施例では、リソーススケジューリング装置の観点から説明する。このリソーススケジューリング装置は、具体的に、スケジューリングサーバやゲートウェイなどのネットワーク機器に統合されてもよい。
【0024】
リソーススケジューリング方法は、スケジューリングサーバによって実行されてもよい。このリソーススケジューリング方法は、作成する仮想マシンに対応する仮想マシン情報を取得し、共通リソース情報を取得し、共通リソース情報には、クラウドコンピューティングシステムのすべてのホストマシンに対応するホストマシン情報が含まれ、共通リソース情報及び仮想マシン情報に基づいて、予め設けられたリソース情報プライベートコピーを更新し、リソース情報プライベートコピーには、所定のホストマシンに対応するホストマシン情報が含まれ、リソース情報プライベートコピーに基づいて、仮想マシン情報を満たす少なくとも1つの候補ホストマシンを取得し、少なくとも1つの候補ホストマシンの中からターゲットホストマシンを取得し、ターゲットホストマシン上に仮想マシンを作成する、ことを含んでもよい。
【0025】
図2を参照されたい。
図2は、本願の第1実施例で提供されたリソーススケジューリング方法のフローの模式図である。
図2のリソーススケジューリング方法は、例えば、スケジューリングサーバによって実行されてもよい。このリソーススケジューリング方法は、下記のステップを含む。
【0026】
ステップ101で、スケジューリングサーバは、作成する仮想マシンに対応する仮想マシン情報を取得する。
【0027】
例えば、スケジューリングサーバは、クラウドコンピューティングシステムに予め設けられたメッセージキューから、作成する仮想マシンに対応する仮想マシン情報を取得してもよい。ここで、仮想マシンとは、ソフトウェアでエミュレートされる、ハードウェアシステム機能を有しかつ隔離された環境で実行される完全なコンピュータシステムを指す。
【0028】
メッセージキューのメッセージは、非同期タスクであってもよい。メッセージキューのメッセージは、メッセージキューを流れる。クラウドコンピューティングシステムの各コンポーネントは、生産者または消費者の身分を有する。生産者は、メッセージキューにメッセージを送信する。消費者は、メッセージキューからメッセージを受信する。例えば、クラウドコンピューティングシステムでは、受信器が生産者として、端末から送信された仮想マシン情報が付けられている仮想マシン作成要求を受信すると、仮想マシン情報をメッセージにカプセル化して、メッセージをメッセージキューに記憶し、これらの仮想マシン情報がメッセージキューに並んでスケジューリングサーバによるリソーススケジューリングを待ち、スケジューリングサーバが消費者として、メッセージキューから仮想マシン情報を抽出し、仮想マシン情報に対応する作成する仮想マシンに対してホストマシンを選択する。
【0029】
仮想マシン情報には、作成する仮想マシンに必要なプロセッサ情報、メモリ情報、及びディスク情報などが含まれてもよい。仮想マシン情報には、作成する仮想マシンの、ソリッドステートドライブ、クラウドディスク、プライベートネットワーク、ネットワークカード、ルーター、ネットワーク構成、データセンター、ラック、ホストマシンの機種、ホストマシンの属するリソースプール、及び仮想マシンのタイプなどに対するリソース要件の少なくとも1つが含まれてもよい。理解できるように、仮想マシン情報のタイプは、実際の必要に応じて、柔軟的に設定されてもよいが、具体的な内容がここで限定されない。
【0030】
ステップ102で、スケジューリングサーバは、共通リソース情報を取得する。
【0031】
ここで、共通リソース情報は、クラウドコンピューティングシステムに対して、データセンター全体のリソースデータを記憶・メンテナンスするためのものである。この共通リソース情報には、クラウドコンピューティングシステムのすべてのホストマシンに対応するホストマシン情報が含まれる。理解できるように、この共通リソース情報は、リソースマネージャーによってメンテナンスされてもよいし、クラウドコンピューティングシステムの他の機器によってメンテナンスされてもよい。スケジューリングサーバは、共通リソース情報をメンテナンスする機器から、共通リソース情報を取得できる。例えば、この共通リソース情報がクラウドコンピューティングシステムのリソースマネージャーによってメンテナンスされる場合、スケジューリングサーバは、リソースマネージャーから、共通リソース情報を取得できる。説明の便宜上、本願の実施例では、すべて、共通リソース情報がリソースマネージャーによってメンテナンスされる場合を例として説明する。
【0032】
説明すべきものとして、共通リソース情報は、クラウドコンピューティングシステム内でグローバルに一意であり、そのメンテナンス形式は、論理データテーブルであってもよい。例えば、データテーブルの各行のそれぞれは、1つのホストマシンを表し、データテーブルの各列のそれぞれは、ホストマシンに含まれる1種のリソースを表す。リソースは、ホストマシンのネットワーク間のインターネットプロトコル(IP:Internet Protocol)アドレス、利用可能な中央処理装置(CPU:Central Processing Unit)、利用可能なメモリ、及び利用可能なディスクなどを含んでもよい。メンテナンス過程では、共通リソース情報に対して、追加、読み取り、更新、又は削除などの処理を行うことができる。これらの処理は、データセンターのホストマシンリソースのオンライン化、変更、又はオフライン化などの過程に対応する。
【0033】
ここで、ホストマシンとは、仮想マシンソフトウェアをインストールするための物理的なコンピュータを指す。1つのホストマシン上には、仮想マシンソフトウェアによって、1つ又は複数の仮想マシンを作成してもよい。
【0034】
いくつかの実施例では、ホストマシン情報は、ホストマシン識別子、IPアドレス、機種、オペレーティングシステム名、カーネルバージョン、CPU型番、仮想化方式、論理領域番号、インターネットデータセンター番号、ホストマシン状態、クラウドディスクをサポートするか否か、ソリッドステートドライブ(SSD:Solid State Drives)をサポートするか否か、ネットワークバージョン、CPUノードリソースクォータ、利用可能なメモリリソース、及び利用可能なディスクリソースなどを含んでもよいが、具体的な内容がここで限定されない。
【0035】
説明すべきものとして、ホストマシンがクラウドコンピューティングシステムに入るには、ホストマシン導入プロセスによって必要な初期化を行う必要がある。ホストマシンは、そのホストマシン情報をリソースマネージャーに報告し、リソースマネージャーは、ホストマシン情報を共通リソース情報に記憶してもよい。いくつかの実施例では、ホストマシンは、そのホストマシン情報をスケジューリングサーバに報告してもよい。スケジューリングサーバは、ホストマシン情報を予め設けられたリソース情報プライベートコピーに記憶してもよい。いくつかの実施例では、スケジューリングサーバは、リアルタイム又は所定時間間隔で、情報取得要求をリソースマネージャーに送信し、情報取得要求に応じてリソースマネージャーからフィードバックされた共通リソース情報を受信し、共通リソース情報に基づいてリソース情報プライベートコピーを更新してもよい。いくつかの実施例では、共通リソース情報の更新があった場合、リソースマネージャーは、更新されたホストマシン情報をスケジューリングサーバに自発的に送信する。
【0036】
ステップ103で、スケジューリングサーバは、共通リソース情報に基づいて、予め設けられたリソース情報プライベートコピーを更新する。
【0037】
スケジューリングサーバ自身でメンテナンスされるリソース情報プライベートコピーのメンテナンス形式は、共通リソース情報のスケジューリングサーバのメモリにおけるバッファである。ここで、リソース情報プライベートコピーには、所定のホストマシンに対応するホストマシン情報が含まれる。該所定のホストマシンは、クラウドコンピューティングシステムのすべてのホストマシンの一部又は全部であってもよい。リソーススケジューリングの結果を良くするために、スケジューリングサーバは、リソーススケジューリングを行う前に、リソース情報プライベートコピーと共通リソース情報とを同期化する必要があり、共通リソース情報を取得し、共通リソース情報に基づいてリソース情報プライベートコピーを更新することにより、リソース情報プライベートコピーと共通リソース情報との一致性を保証してもよい。
【0038】
更新時間を短縮するために、共通リソース情報及び仮想マシン情報に基づいて、リソース情報プライベートコピーを更新してもよい。いくつかの実施形態では、共通リソース情報及び仮想マシン情報に基づいて、予め設けられたリソース情報プライベートコピーを更新することは、共通リソース情報の中から、仮想マシン情報を満たすターゲットホストマシン情報を選別し、ターゲットホストマシン情報を予め設けられたリソース情報プライベートコピーに追加する、ことを含む。
【0039】
いくつかの実施例では、共通リソース情報の中から、仮想マシン情報を満たすターゲットホストマシン情報を選別し、ターゲットホストマシン情報を予め設けられたリソース情報プライベートコピーに追加することは、
リソース情報プライベートコピーの初回更新である場合、スケジューリングサーバが、共通リソース情報の中から、仮想マシン情報を満たすターゲットホストマシン情報を選別するステップS1と、
スケジューリングサーバが、ターゲットホストマシン情報をリソース情報プライベートコピーにコピーするステップS2と、
スケジューリングサーバが、現在タイムスタンプを取得し、現在タイムスタンプを完全更新タイムスタンプ及び増分更新タイムスタンプとして設定するステップS3と、
スケジューリングサーバが、完全更新タイムスタンプ及び増分更新タイムスタンプをリソース情報プライベートコピーに記憶するステップS4と、を含む。
【0040】
具体的には、まず、スケジューリングサーバは、リソース情報プライベートコピーの初回更新であるか否かを判断し、例えば、リソース情報プライベートコピーが空であるか否かを判断してもよい。リソース情報プライベートコピーが空である場合、リソース情報プライベートコピーの初回更新であると決定し、リソース情報プライベートコピーが空ではない場合、リソース情報プライベートコピーの初回更新ではないと決定する。初回更新である場合、現在のリソース情報プライベートコピーが空であり、完全更新を行う必要があり、即ち、共通リソース情報の中から、仮想マシン情報を満たすターゲットホストマシン情報を選別し、ターゲットホストマシン情報をリソース情報プライベートコピーにコピーする必要がある。説明すべきものとして、直接に共通リソース情報をリソース情報プライベートコピーに完全コピーしてもよい。
【0041】
ターゲットホストマシン情報をリソース情報プライベートコピーにコピーした後、完全更新タイムスタンプ及び増分更新タイムスタンプを記録する必要がある。いくつかの実施例では、スケジューリングサーバは、現在タイムスタンプを取得し、現在タイムスタンプを完全更新タイムスタンプ及び増分更新タイムスタンプとして設定する。例えば、現在タイムスタンプが2017年9月15日午前11:00である場合、完全更新タイムスタンプ及び増分更新タイムスタンプは、いずれも、2017年9月15日午前11:00となる。次に、完全更新タイムスタンプ及び増分更新タイムスタンプをリソース情報プライベートコピーに記憶して、今回の更新を完了する。
【0042】
いくつかの実施例では、共通リソース情報の中から、仮想マシン情報を満たすターゲットホストマシン情報を選別し、ターゲットホストマシン情報を予め設けられたリソース情報プライベートコピーに追加することは、
リソース情報プライベートコピーの初回更新ではない場合、スケジューリングサーバが、現在タイムスタンプと最後の完全更新タイムスタンプとの時間差を取得するステップS11と、
スケジューリングサーバが、時間差が所定の完全更新閾値より大きいか否かを判断するステップS12と、
時間差が完全更新閾値より大きいとき、スケジューリングサーバが、共通リソース情報の中から、仮想マシン情報を満たす第1ターゲットホストマシン情報を選別するステップS13と、
スケジューリングサーバが、第1ターゲットホストマシン情報をリソース情報プライベートコピーにコピーするステップS14と、
スケジューリングサーバが、現在タイムスタンプを第1完全更新タイムスタンプ及び第1増分更新タイムスタンプとして設定するステップS15と、
スケジューリングサーバが、第1完全更新タイムスタンプ及び第1増分更新タイムスタンプをリソース情報プライベートコピーに記憶するステップS16と、を含む。
【0043】
具体的には、ステップS11において、リソース情報プライベートコピーの初回更新ではない場合、スケジューリングサーバは、現在タイムスタンプと最後の完全更新タイムスタンプとの時間差を取得する。ここで、最後の完全更新タイムスタンプは、現在タイムスタンプより前の最後に記録された完全更新タイムスタンプである。
【0044】
次に、ステップS12において、スケジューリングサーバは、時間差が所定の完全更新閾値より大きいか否かを判断する。この完全更新閾値は、実際の必要に応じて、柔軟的に設定されてもよいが、具体的な値がここで限定されない。例えば、完全更新頻度を低くするために、完全更新閾値に大きな値を設定してもよい。
【0045】
ステップS13において、時間差が完全更新閾値より大きいとき、スケジューリングサーバは、共通リソース情報の中から、仮想マシン情報を満たす第1ターゲットホストマシン情報を選別する。完全更新を行うために、スケジューリングサーバは、ステップS14を実行して、第1ターゲットホストマシン情報をリソース情報プライベートコピーにコピーしてもよい。説明すべきものとして、現在の共通リソース情報をリソース情報プライベートコピーに完全コピーしてもよい。
【0046】
次に、ステップS15において、スケジューリングサーバは、第1完全更新タイムスタンプ及び第1増分更新タイムスタンプを記録することにより、完全更新タイムスタンプ及び増分更新タイムスタンプを正確に記録する。いくつかの実施例では、現在タイムスタンプを第1完全更新タイムスタンプ及び第1増分更新タイムスタンプとして設定してもよい。例えば、現在タイムスタンプが2017年9月16日午前8:00である場合、完全更新タイムスタンプ及び増分更新タイムスタンプは、いずれも、2017年9月16日午前8:00となる。次に、ステップS16において、第1完全更新タイムスタンプ及び第1増分更新タイムスタンプをリソース情報プライベートコピーに記憶して、今回の更新を完了する。
【0047】
さらに、ステップS12において、時間差が所定の完全更新閾値より大きいか否かを判断した後、
スケジューリングサーバが、時間差が完全更新閾値以下であるとき、共通リソース情報のうち、更新があってかつ更新タイムスタンプが最後の増分更新タイムスタンプより大きいホストマシン情報を取得するステップS17と、
スケジューリングサーバが、ホストマシン情報の中から、仮想マシン情報を満たす第2ターゲットホストマシン情報を取得するステップS18と、
スケジューリングサーバが、第2ターゲットホストマシン情報をリソース情報プライベートコピーに追加するステップS19と、
スケジューリングサーバが、現在タイムスタンプを第2増分更新タイムスタンプとして設定するステップS20と、
スケジューリングサーバが、第2増分更新タイムスタンプをリソース情報プライベートコピーに記憶するステップS21と、を実行してもよい。
【0048】
クラウドコンピューティングシステムのホストマシンの規模が大きく、例えば、ホストマシンの規模は10000程度であるが、スケジューリングサーバは100程度である。このため、リソース情報プライベートコピーを更新するたびに、完全更新を行うと、即ち、共通リソース情報をリソース情報プライベートコピーに完全コピーすると、時間がかかる。更新にかかる時間を短縮するために、リソース情報の増分更新を行い、即ち、共通リソース情報のうち一部のリソース情報をリソース情報プライベートコピーに追加してもよい。
【0049】
具体的には、共通リソース情報におけるホストマシン情報が更新されるたびに、更新タイムスタンプを記録することにより、正確な更新日時を得る。スケジューリングサーバは、現在タイムスタンプと最後の完全更新タイムスタンプとの時間差を取得した後、時間差が完全更新閾値以下であるとき、共通リソース情報のうち、更新があったホストマシン情報を取得し、各ホストマシン情報が更新された更新タイムスタンプを取得し、次に、更新があったホストマシン情報の中から、更新タイムスタンプが最後の増分更新タイムスタンプより大きいホストマシン情報を選別する。即ち、最後の増分更新タイムスタンプに基づいて、共通リソース情報の中から、更新タイムスタンプが最後の増分更新タイムスタンプ
より大きいすべてのホストマシン情報を検索する。この最後の増分更新タイムスタンプは、現在タイムスタンプより前の最後の増分更新タイムスタンプである。
【0050】
共通リソース情報のうち、更新があってかつ更新タイムスタンプが最後の増分更新タイムスタンプより大きいホストマシン情報が得られた後、該ホストマシン情報に対して選別を行って、ホストマシン情報の中から、仮想マシン情報を満たす第2ターゲットホストマシン情報を取得し、第2ターゲットホストマシン情報をリソース情報プライベートコピーに追加する。
【0051】
次に、第2増分更新タイムスタンプを記録することにより、増分更新タイムスタンプを正確に記録する。即ち、現在タイムスタンプを第2増分更新タイムスタンプとして設定し、第2増分更新タイムスタンプをリソース情報プライベートコピーに記憶して、今回の更新を完了する。リソース情報プライベートコピーは、実質的に、メモリ内で実行されるバッファである。ほとんどの場合、スケジューリングサーバが増分更新を行うだけでよく、更新データ量も、かかる時間も少ない。いくつかの実施例では、今回の増分更新の前にオフラインになっているホストマシンも、リソース情報プライベートコピーから削除される。
【0052】
説明すべきものとして、上記第1ターゲットホストマシン情報、第2ターゲットホストマシン情報、第1完全更新タイムスタンプ、第1増分更新タイムスタンプ、及び第2増分更新タイムスタンプの「第1」及び「第2」は、現れたターゲットホストマシン情報、増分更新タイムスタンプ、又は完全更新タイムスタンプを区別するためのものにすぎず、それらの重要度への限定を表すものではない。
【0053】
ステップ104で、スケジューリングサーバは、リソース情報プライベートコピーに基づいて、仮想マシン情報を満たす少なくとも1つの候補ホストマシンを取得する。
【0054】
リソース情報プライベートコピーが更新された後、スケジューリングサーバは、リソース情報プライベートコピーを基に、作成する仮想マシンに対して、ホストマシンを選別する。仮想マシン情報におけるリソース要件と、リソース情報プライベートコピーにおけるホストマシン情報とに基づいて、リソース情報プライベートコピーにおけるホストマシン集合をフィルタリングし、条件に合致するホストマシンを保持し、条件に合致しないホストマシンを除外することにより、少なくとも1つの候補ホストマシンを得てもよい。
【0055】
いくつかの実施例では、スケジューリングサーバは、仮想マシン情報に基づいて、ホストマシン情報に応じて構築された直列フィルターに従って、複数のホストマシンに対して相応のフィルタリングを行うように各フィルターを制御することにより、仮想マシン情報を満たす少なくとも1つの候補ホストマシンを得てもよい。
【0056】
いくつかの実施例では、スケジューリングサーバは、各候補ホストマシンから、作成する前記仮想マシンのリソース要件を差し引いて、前記各候補ホストマシンの残りリソースを得、前記各候補ホストマシンのうち1つの候補ホストマシンの前記残りリソースのコミットが成功するまで、前記各候補ホストマシンの残りリソースを前記共通リソース情報へコミットしてもよい。各候補ホストマシンのうち1つの候補ホストマシンに対応する残りリソースのコミットが成功すると、コミットに成功した前記候補ホストマシンをターゲットホストマシンとして設定する。
【0057】
ホストマシン情報に応じて、直列フィルタリングモデルを構築することができる。この直列フィルタリングモデルには、直列接続された複数のフィルターが含まれる。各フィルターそれぞれは、1つのフィルタリング機能を担う。各フィルターは、仮想マシン情報に基づいて相応の判断を行ってから、相応のフィルタリングを実行する。例えば、直列接続された1番目のフィルターは、仮想マシンに必要なCPU、メモリ、及びディスクリソースなどのリソース要件に基づいて、該リソース要件を満たさないホストマシンをフィルタリングして除外し、該リソース要件を満たすホストマシンのみを保持することを担い、直列接続された2番目のフィルターは、SSDをサポートするホストマシン、又はSSDをサポートしないホストマシンをフィルタリングして除外することを担い、リソース要件において、ホストマシンがSSDをサポートすることが要求される場合、2番目のフィルターは、該リソース要件に基づいて、SSDをサポートしないホストマシンをフィルタリングして除外し、SSDをサポートするホストマシンを保持する。
【0058】
理解できるように、他のフィルターの機能は、該フィルターの機能を参照して理解すればよい。但し、他のフィルターは、他のフィルタリング機能を担う。具体的なフィルタリングモデルにおける各フィルターの機能は、作成する仮想マシンのリソース要件に応じて設定されてもよいが、具体的な内容がここで限定されない。
【0059】
ステップ105で、スケジューリングサーバは、少なくとも1つの候補ホストマシンの中からターゲットホストマシンを取得し、ターゲットホストマシン上に仮想マシンを作成する。
【0060】
少なくとも1つの候補ホストマシンが得られた後、スケジューリングサーバは、少なくとも1つの候補ホストマシンの中からターゲットホストマシンを決定してもよい。ターゲットホストマシンの選択は、ランダムに選択することであってもよい。もちろん、合致度が最も良いターゲットホストマシンを選択するために、複数のホストマシンをフィルタリングして少なくとも1つの候補ホストマシンが得られた後、各候補ホストマシンそれぞれの各次元の優先度値を決定し、優先度値に従って少なくとも1つの候補ホストマシンをランキングしてもよい。
【0061】
いくつかの実施形態では、少なくとも1つの候補ホストマシンの中からターゲットホストマシンを取得することは、
スケジューリングサーバが、少なくとも1つの候補ホストマシンのそれぞれの各次元の優先度値を決定するステップS31と、
スケジューリングサーバが、各次元の優先度値の高い順にランキングを行って、候補ホストマシンリストを生成するステップS32と、
スケジューリングサーバが、候補ホストマシンリストの各候補ホストマシンの順序で、逐一、各候補ホストマシンから、作成する仮想マシンのリソース要件を差し引いて、残りリソースを得、リソース要件が、仮想マシンに対応する仮想マシン情報に含まれるステップS33と、
スケジューリングサーバが、残りリソースを共通リソース情報へコミットするステップS34と、
ある候補ホストマシンに対応する残りリソースのコミットが成功すると、スケジューリングサーバが、コミットに成功した候補ホストマシンをターゲットホストマシンとして設定するステップS35と、を含んでもよい。
【0062】
具体的には、まず、各ホストマシンそれぞれの複数次元の優先度値を計算する。各次元の優先度は、プライベートネットワーク優先度(vpcPrio)、並行タスク優先度(taskPrio)、履歴エラー優先度(errorPrio)、非アフィニティ優先度(affinityPrio)、フリー優先度(freePrio)、イメージキャッシュ優先度(imgPrio)、及び断片化率優先度(fragmentPrio)などを含んでもよい。
【0063】
ここで、プライベートネットワーク優先度値について、vpcPrioの値が小さいほど、優先度が高くなる。各ホストマシン毎に、プライベートネットワーク優先度値を決定してもよい。例えば、プライベートネットワークをサポートするホストマシンのvpcPrioの値を0にして、プライベートネットワークをサポートしないホストマシンのvpcPrioの値を1にしてもよい。或いは、プライベートネットワークをサポートするホストマシンのvpcPrioの値を1にして、プライベートネットワークをサポートしないホストマシンのvpcPrioの値を0にするなどにしてもよい。説明の便宜上、本願の実施例では、すべて、プライベートネットワークをサポートするホストマシンのvpcPrioの値を0にして、プライベートネットワークをサポートしないホストマシンのvpcPrioの値を1にする場合を例として説明する。
【0064】
プライベートネットワークは、IPアドレスが物理的なネットワークトポロジに依存せず、将来に移行がより容易である。プライベートネットワーク優先度は、プライベートネットワークをサポートするホストマシンに優先的に仮想マシンを配置して、将来の移行をより便利で柔軟にすることを役割とする。
【0065】
並行タスク優先度について、taskPrioの値が小さいほど、優先度が高くなる。各ホストマシン毎に、並行タスク優先度を決定してもよい。ホストマシン上の現在のタスク数を判断し、タスク数が所定閾値より小さい場合、並行タスク優先度の値を0にし、タスク数が所定閾値より小さくない場合、並行タスク優先度の値を現在のタスク数にする。例えば、所定閾値はデフォルトで3である。もちろん、該所定閾値は、実際の必要に応じて、柔軟的に設定されてもよい。
【0066】
ホストマシン上の並行タスクが同時に実行され、並行性が高すぎると、仮想マシンの作成が遅くなり、ひいては失敗する可能性がある。並行タスク優先度は、並行タスク数がより低いホストマシンに優先的に仮想マシンを配置して、仮想マシンの作成の成功率及びリアルタイム性を確保することを役割とする。
【0067】
履歴エラー優先度について、errorPrioの値が小さいほど、優先度が高くなる。各ホストマシン毎に、履歴エラー優先度を計算してもよい。ホストマシンの最近の期間(例えば、デフォルトで24時間)内の履歴エラー数を判断し、履歴エラー数がエラー閾値より小さい場合、履歴エラー優先度の値を0にし、履歴エラー数がエラー閾値より小さくない場合、履歴エラー優先度の値を履歴エラー数にする。例えば、エラー閾値はデフォルトで5であってもよい。エラー閾値は、実際の必要に応じて、柔軟的に設定されてもよい。
【0068】
短時間でエラーが複数回発生したホストマシンには、何らかの障害が発生した可能性があり、障害を処理する前に、該ホストマシンに持続的に仮想マシンを配置すると、仮想マシンの作成タスクが失敗する可能性があり、成功率を低下させる。履歴エラー優先度は、エラーが多すぎないホストマシンに優先的に仮想マシンを配置して、仮想マシンの作成の成功率を向上させることを役割とする。
【0069】
非アフィニティ優先度について、affinityPrioの値が小さいほど、優先度が高くなる。各ホストマシン毎に、非アフィニティ優先度を計算してもよい。仮想マシンのユーザの該ホストマシン上の既存の仮想マシンの数を判断し、仮想マシンの数がアフィニティ閾値より小さい場合、非アフィニティ優先度の値を0にし、仮想マシンの数がアフィニティ閾値より小さくない場合、非アフィニティ優先度の値を既存の仮想マシンの数にする。例えば、アフィニティ閾値は3である。もちろん、アフィニティ閾値は、実際の必要に応じて、柔軟的に設定されてもよい。
【0070】
大規模分散システムでは、エラーを完全に回避することがほぼ不可能である。あるユーザの仮想マシンが1つまたはいくつかのホストマシンに集中している場合、これらのホストマシンに障害が発生すると、これらのホストマシン上のすべての仮想マシンが影響を受け、該ユーザーのアプリケーションの全体的な可用性に深刻な影響を及ぼす。非アフィニティ優先度は、分散ディザスタリカバリのために、同一のユーザの仮想マシンを異なるホストマシンに広く分散させ、単一のホストマシンの障害によるアプリケーションの全体的な可用性への影響が制限され、さらにユーザーのアプリケーションの安定性及び可用性を向上させることを役割とする。
【0071】
フリー優先度について、freePrioの値が小さいほど、優先度が高くなる。例えば、各ホストマシンが完全に空いているか否かを判断し、完全に空いている場合、フリー優先度の値を0にし、完全に空いているのではない場合、フリー優先度の値を1にしてもよい。或いは、完全に空いている場合、フリー優先度の値を1にし、完全に空いているのではない場合、フリー優先度の値を0にするなどにしてもよい。説明の便宜上、本願の実施例では、完全に空いている場合、フリー優先度の値を0にし、完全に空いているのではない場合、フリー優先度の値を1にすることを例として説明する。
【0072】
フリー優先度は、空いているホストマシンを保護し、空いていないホストマシンに優先的に仮想マシンを配置して、空いていないホストマシン上のリソースを十分に利用し、リソースの利用率を向上させることを役割とする。
【0073】
イメージキャッシュ優先度について、imgPrioの値が小さいほど、優先度が高くなる。候補ホストマシンリストを走査し、各ホストマシンには仮想マシンに必要なイメージファイルがあるか否かを判断し、例えば、イメージファイルがある場合、イメージキャッシュ優先度の値を0にし、イメージファイルがない場合、イメージキャッシュ優先度の値を1にしてもよい。
【0074】
イメージキャッシュ優先度は、仮想マシンイメージが記憶されたホストマシンに優先的に仮想マシンを配置することにより、実際に仮想マシンを作成する際にイメージのダウンロードを省くことを可能にし、作成時間を節約し、仮想マシンの作成プロセスのリアルタイム性を向上させることを役割とする。
【0075】
断片化率優先度について、fragmentPrioの値が小さいほど、優先度が高くなる。各ホストマシン毎に、断片化率優先度を計算してもよい。CPU及びメモリの2次元のリソースに基づいて、優先度を計算する。デフォルトでは、断片化率優先度は、CPUの断片化率にメモリの断片化率を掛けたものに等しい。
【0076】
断片化率優先度は、ホストマシンのリソースを十分に利用し、リソースの断片化率を低下させ、さらにリソース利用率を向上させ、運用コストを削減することを役割とする。
【0077】
各候補ホストマシンそれぞれの各次元の優先度値が決定された後、各次元の優先度値の高い順にホストマシンをランキングして、候補ホストマシンリストを得、候補ホストマシンリストから、合致度が最も高い1つの候補ホストマシンをターゲットホストマシンとして決定する。具体的な決定過程は、
各次元の優先度の高い順に、同一の次元のホストマシンを優先度値の大きい順にランキングし、同一の次元の同じ優先度値のホストマシンに対して、次の次元の優先度値に従ってランキングを行うことにより、優先度の高い順にランキングされた候補ホストマシンリストを得る、ことを含んでもよい。
【0078】
候補ホストマシンがランキングされた後、第1位にランキングされた候補ホストマシンが最適であり、この最適な候補ホストマシンに他の作成タスクが存在する可能性があるため、必ずしも作成の成功を保証できず、リソースの差し引きを模擬するような方式でターゲットホストマシンを決定する必要がある。
【0079】
ターゲットホストマシンを決定する過程では、まず、ランキングされた候補ホストマシンリストの各候補ホストマシンの順序で、逐一、各候補ホストマシンから、作成する仮想マシンのリソース要件を差し引いて、各候補ホストマシンに対応する残りリソースをそれぞれ得、ホストマシンに対してリソースの差し引きを模擬することを完了する。仮想マシンのリソース要件は、仮想マシンに対応する仮想マシン情報に含まれる。即ち、ランキングされた候補ホストマシンの降順に従って、第1位にランキングされた候補ホストマシンから始めて、逐一、各候補ホストマシンから、作成する仮想マシンのリソース要件を差し引き、ある候補ホストマシンからの差し引きが成功すると、差し引きに成功した候補ホストマシンをターゲットホストマシンとする。
【0080】
ランキング順序は、予め設定されてもよい。例えば、デフォルトのランキング基準、即ち優先度の高い順は、プライベートネットワーク優先度(vpcPrio)、並行タスク優先度(taskPrio)、履歴エラー優先度(errorPrio)、非アフィニティ優先度(affinityPrio)、フリー優先度(freePrio)、イメージキャッシュ優先度(imgPrio)、及び断片化率優先度(fragmentPrio)であってもよい。ランキング基準は、デフォルト基準範囲内で選択されてもよく、順序は、実際の必要に応じて、柔軟的に調整して設定されてもよい。
【0081】
次に、候補ホストマシンの残りリソースが得られた後、残りリソースを共通リソース情報へコミットし、ある候補ホストマシンに対応する残りリソースのコミットが成功すると、コミットに成功した候補ホストマシンをターゲットホストマシンとして設定する。候補ホストマシンの残りリソースを、各ホストマシンの残りリソースデータをメンテナンスするためのデータベースに書き込み、書き込みが成功すると、書き込みに成功した候補ホストマシンをターゲットホストマシンとするようにしてもよい。
【0082】
ターゲットホストマシンが決定された後、該ターゲットホストマシン上に仮想マシンを作成することが可能になる。いくつかの実施例では、仮想マシンの作成には、ターゲットホストマシンのリソースを消費する必要があるため、リソース情報プライベートコピーにおけるホストマシン情報を更新してもよいし、クラウドコンピューティングシステムに共通リソース情報を更新するよう通知してもよい。候補ホストマシンに対応する残りリソースのコミットが失敗した場合は、スケジューリング競合、即ち、同一のホストマシンが複数のリソーススケジューリングプロセスによって同時に選択されることが発生した可能性があることを表す。この場合、コミット回数が回数閾値を超えるか否かを判断し、コミット回数が回数閾値を超えていないとき、該候補ホストマシンのホストマシン情報を再取得し、該候補ホストマシンから、作成する仮想マシンのリソース要件を差し引いて、残りリソースを再び得る。次に、再び得られた残りリソースを共通リソース情報へ再コミットする。コミット回数が回数閾値を超えたとき、候補ホストマシンリストから、次の候補ホストマシンを取得して、リソースの差し引きの模擬を行う。
【0083】
説明すべきものとして、1番目のホストマシンからの差し引きが成功した場合、2番目のホストマシンに対して差し引き処理を行う必要がなく、直接に1番目のホストマシンをターゲットホストマシンとして決定してもよい。1番目のホストマシンからの差し引きが成功しない場合、2番目のホストマシンに対して差し引き処理を行い、あるホストマシンからの差し引きが成功するまで繰り返す必要がある。
【0084】
さらに、候補ホストマシンリストの各候補ホストマシンの順序で、逐一、各候補ホストマシンから、作成する仮想マシンのリソース要件を差し引いて、残りリソースを得る前に、上記方法は、候補ホストマシンリストのランキングの上位所定数の候補ホストマシンをリランキングして、候補ホストマシンターゲットリストを生成する、ことを含んでもよい。
【0085】
候補ホストマシンリストの各候補ホストマシンの順序で、逐一、各候補ホストマシンから、作成する仮想マシンのリソース要件を差し引いて、残りリソースを得ることは、候補ホストマシンターゲットリストの各候補ホストマシンの順序で、逐一、各候補ホストマシンから、作成する仮想マシンのリソース要件を差し引いて、残りリソースを得る、ことを含む。
【0086】
ここで、所定数は、実際の必要に応じて、柔軟的に設定されてもよい。候補ホストマシンリストのランキングの上位所定数の候補ホストマシンをリランキングすることは、ランダムにリランキングすることであってもよいし、所定の規則に従ってリランキングすることであってもよいが、具体的なリランキング方式がここで限定されない。候補ホストマシンリストのランキングの上位所定数の候補ホストマシンをリランキングすることは、リランキングのために、候補ホストマシンリストの先頭k(kは所定数)個の候補ホストマシンをランダムにシャッフルして、候補ホストマシンターゲットリストを得ることで、並行シナリオで複数のリソーススケジューリングプロセスが同じターゲットホストマシンを選択することを防止し、スケジューリング競合を効果的に回避することが可能になる、ことを目的とする。
【0087】
上記から分かるように、本願の実施例では、作成する仮想マシンに対応する仮想マシン情報を取得し、共通リソース情報を取得し、該共通リソース情報には、クラウドコンピューティングシステムのすべてのホストマシンに対応するホストマシン情報が含まれ、次に、共通リソース情報及び仮想マシン情報に基づいて、予め設けられたリソース情報プライベートコピーを更新し、該リソース情報プライベートコピーには、所定のホストマシンに対応するホストマシン情報が含まれ、最後に、リソース情報プライベートコピーに基づいて、仮想マシン情報を満たす少なくとも1つの候補ホストマシンを取得し、少なくとも1つの候補ホストマシンの中からターゲットホストマシンを取得し、ターゲットホストマシン上に仮想マシンを作成する。この構成によれば、リソーススケジューリングを行う前に、リソース情報プライベートコピーを適時に更新することが可能になり、リソース情報プライベートコピーと共通リソース情報との同期性が保証され、リソーススケジューリングの結果が良くなるとともに、リソーススケジューリングを行う際に待つ必要がなく、リソーススケジューリングの効率が向上する。
【0088】
上記の実施例で説明した方法について、以下、例を挙げて、さらに詳しく説明する。
【0089】
スケジューラを例にすると、仮想マシン作成要求が複数ある場合、メッセージキューには、各仮想マシン作成要求に対応するメッセージが記憶され、複数のスケジューラは、並行的に、メッセージキューのメッセージから仮想マシン作成要求を抽出し、仮想マシン作成要求に付けられている仮想マシン情報に基づいて、各仮想マシン作成要求に対して適当なホストマシンを選択し、ホストマシン上に対応の仮想マシンを作成する、ことを実行できる。複数のスケジューラは、並行的にリソーススケジューリングを行うため、並行的に、異なる仮想マシンに対してホストマシンを選択できる。これにより、クラウドコンピューティングシステムのスループット及び並行能力を向上させ、スケジューラがシステム全体の性能のボトルネックとなることを回避することができる。
【0090】
図3を参照されたい。
図3は、本願の実施例で提供されたリソーススケジューリング方法における複数のスケジューラが並行的にリソーススケジューリングを行うフローの模式図である。クラウドコンピューティングシステムには、3つのスケジューラ及び3つのホストマシンが含まれると仮定する。もちろん、クラウドコンピューティングシステムに3つのスケジューラ及び3つのホストマシンのみが含まれることは不可能である。本実施例は、挙げられる例の説明の便宜のためにすぎず、スケジューラ及びホストマシンの数への限定と理解されるべきではない。しかしながら、何個のスケジューラ及び何個のホストマシンがあっても、リソーススケジューリング過程は、類似するものであり、この例に従って理解すればよい。
【0091】
ここで、該方法のフローは、下記のステップを含んでもよい。
【0092】
201で、端末は、仮想マシン情報が付けられている仮想マシン作成要求をクラウドコンピューティングシステムの受信器に送信する。
【0093】
クラウドコンピューティングシステムのデータセンターの規模の継続的な拡大に伴い、ホストマシンの種類及び数がますます多くなり、リソーススケジューリングのロジックがますます複雑になる。また、サービス要件の急速な成長に伴い、単位時間で処理する必要がある仮想マシン作成要求が急速に増加することで、リソーススケジューリングの応答遅延がさらに増加する。従来のリソーススケジューリング方式の高い応答遅延や低いスループットなどの問題を解決するために、本実施例では、複数のスケジューラが並行的にリソーススケジューリングを行う。
【0094】
まず、端末は、仮想マシン情報が付けられている仮想マシン作成要求をクラウドコンピューティングシステムの受信器に送信する。この端末は、仮想マシンの作成を担うユーザが使用する端末機器であってもよい。この仮想マシン情報は、上記で言及された仮想マシン情報と類似し、ここで説明を省略する。
【0095】
202で、受信器は、受信された仮想マシン作成要求をメッセージにカプセル化し、メッセージをメッセージキューに記憶する。
【0096】
受信器自身によってメッセージキューがメンテナンスされ、受信器は、仮想マシン作成要求を受信すると、仮想マシン作成要求をメッセージにカプセル化する。このメッセージのフォーマットは、実際の必要に応じて、柔軟的に設定されてもよく、例えば、key−value又はjsonのメッセージフォーマットなどであってもよい。次に、作成する仮想マシンに対応する仮想マシン情報をメッセージキューからスケジューラが取り出せるように、メッセージをメッセージキューに記憶する。受信器によって一定の時間帯で受信された仮想マシン作成要求が多い場合、
図4に示すように、メッセージキューには、複数のメッセージが記憶されてもよい。
図4のメッセージキューには、メッセージVM1〜メッセージVMnが記憶されている。ここで、nは正整数であり、かつn>1である。
【0097】
203で、スケジューラ1は仮想マシン情報1を取得する。
【0098】
204で、スケジューラ2は仮想マシン情報2を取得する。
【0099】
205で、スケジューラ3は仮想マシン情報3を取得する。
【0100】
説明すべきものとして、ステップ203〜ステップ205の実行順序は、同時実行であってもよいし、ステップ203〜ステップ205の順次実行であってもよいし、最初にステップ205、次にステップ203、最後にステップ204を実行するか、最初にステップ204、次にステップ205、最後にステップ203を実行するなどであってもよいが、具体的なステップの実行順序がここで限定されない。
【0101】
スケジューラは、リソーススケジューリングを実行するコンポーネントとして、仮想マシンに対して適当なホストマシンを選択する。スケジューラが関数ブラックボックスと見なされる場合、その入力は、ホストマシン情報及び仮想マシン情報であってもよく、その出力は、仮想マシンIDとホストマシンIDとのマッチングペア、即ち、<VM ID,HOST ID>であってもよい。
【0102】
スケジューラ1、スケジューラ2、及びスケジューラ3は、並行的にリソーススケジューリングを行って、対応の仮想マシン情報をそれぞれ取得することができ、システムの並行性及びスループットを向上させることができる。
【0103】
ここで、スケジューラ1が仮想マシン情報1を取得する方式は、スケジューラ1が仮想マシン情報1取得要求を受信器に送信し、受信器が、受信された、スケジューラ1から送信された仮想マシン情報1取得要求に応じて、仮想マシン情報1が付けられているメッセージ1をスケジューラ1に送信し、スケジューラ1が、受信されたメッセージ1から仮想マシン情報1を抽出できるような方式1と、スケジューラ1が、メッセージキューに記憶されたメッセージを直接に読み取り、その中から仮想マシン情報1を取得するような方式2と、を含んでもよい。
【0104】
説明すべきものとして、スケジューラ2が仮想マシン情報2を取得する方式、及びスケジューラ3が仮想マシン情報3を取得する方式は、スケジューラ1が仮想マシン情報1を取得する方式と類似し、ここで説明を省略する。
【0105】
206で、スケジューラ1は共通リソース情報を取得する。
【0106】
207で、スケジューラ2は共通リソース情報を取得する。
【0107】
208で、スケジューラ3は共通リソース情報を取得する。
【0108】
説明すべきものとして、ステップ206〜ステップ208の実行順序は、同時実行であってもよいし、ステップ206〜ステップ208の順次実行であってもよいし、最初にステップ208、次にステップ206、最後にステップ207を実行するなどであってもよいが、具体的なステップの実行順序がここで限定されない。
【0109】
クラウドコンピューティングシステムのリソースマネージャーは、共通リソース情報をメンテナンスし、該共通リソース情報には、クラウドコンピューティングシステムのすべてのホストマシンに対応するホストマシン情報が含まれる。ホストマシンがクラウドコンピューティングシステムに入るには、ホストマシン導入プロセスによって必要な初期化を行う必要がある。ホストマシンは、そのホストマシン情報をリソースマネージャーに報告し、リソースマネージャーは、ホストマシン情報を共通リソース情報に記憶することができる。ホストマシン情報の更新があった場合、リソースマネージャーは、共通リソース情報を適時に更新することもできる。
【0110】
ここで、スケジューラ1が共通リソース情報を取得する方式は、スケジューラ1が共通リソース情報取得要求をリソースマネージャーに送信し、リソースマネージャーが、受信された、スケジューラ1から送信された共通リソース情報取得要求に応じて、対応の共通リソース情報をスケジューラ1に送信するような方式1と、スケジューラ1が、共通リソース情報を記憶したデータベースを直接に読み取り、その中から共通リソース情報を取得するような方式2と、を含んでもよい。
【0111】
説明すべきものとして、スケジューラ2が共通リソース情報を取得する方式、及びスケジューラ3が共通リソース情報を取得する方式は、スケジューラ1が共通リソース情報を取得する方式と類似し、ここで説明を省略する。スケジューラ1、スケジューラ2、及びスケジューラ3は、並行的に又は所定時間間隔で、共通リソース情報を取得してもよい。
【0112】
209で、スケジューラ1は、受信された共通リソース情報及び仮想マシン情報1に基づいて、自身でメンテナンスされるリソース情報プライベートコピー1を更新する。
【0113】
210で、スケジューラ2は、受信された共通リソース情報及び仮想マシン情報2に基づいて、自身でメンテナンスされるリソース情報プライベートコピー2を更新する。
【0114】
211で、スケジューラ3は、受信された共通リソース情報及び仮想マシン情報3に基づいて、自身でメンテナンスされるリソース情報プライベートコピー3を更新する。
【0115】
説明すべきものとして、ステップ209〜ステップ
211の実行順序は、実際の状況に応じて、柔軟的に設定されてもよいが、具体的なステップの実行順序がここで限定されない。
【0116】
スケジューラ1自身によってリソース情報プライベートコピー1がメンテナンスされ、スケジューラ2自身によってリソース情報プライベートコピー2がメンテナンスされ、スケジューラ3自身によってリソース情報プライベートコピー3がメンテナンスされる。リソース情報プライベートコピー1、リソース情報プライベートコピー2、及びリソース情報プライベートコピー3のそれぞれには、所定のホストマシンに対応するホストマシン情報が含まれる。この所定のホストマシンは、クラウドコンピューティングシステムのすべてのホストマシンの一部又は全部であってもよい。共通リソース情報に基づいてリソース情報プライベートコピーを更新することにより、リソース情報の一致性及び情報の正確さが保証される。
【0117】
さらに、
図6に示すように、スケジューラ1が、受信された共通リソース情報及び仮想マシン情報1に基づいて、自身でメンテナンスされるリソース情報プライベートコピー1を更新することは、下記のステップを含んでもよい。
【0118】
301で、スケジューラ1は、リソース情報プライベートコピーの初回更新であるか否かを判断し、リソース情報プライベートコピーの初回更新である場合、ステップ302〜ステップ304を順次に実行し、リソース情報プライベートコピーの初回更新ではない場合、ステップ305を実行する。
【0119】
302で、スケジューラ1は、共通リソース情報の中から、仮想マシン情報を満たすターゲットホストマシン情報を選別する。
【0120】
303で、スケジューラ1は、ターゲットホストマシン情報をリソース情報プライベートコピーにコピーする。
【0121】
304で、スケジューラ1は、完全更新タイムスタンプ及び増分更新タイムスタンプを記録する。
【0122】
スケジューラ1は、現在タイムスタンプを取得し、現在タイムスタンプを完全更新タイムスタンプ及び増分更新タイムスタンプとして設定し、完全更新タイムスタンプ及び増分更新タイムスタンプをリソース情報プライベートコピーに記憶してもよい。
【0123】
305で、スケジューラ1は、現在タイムスタンプと最後の完全更新タイムスタンプとの時間差を取得する。
【0124】
306で、スケジューラ1は、時間差が所定の完全更新閾値より大きいか否かを判断し、時間差が所定の完全更新閾値より大きいとき、ステップ307〜ステップ309を順次に実行し、時間差が所定の完全更新閾値より大きくないとき、ステップ310を実行する。
【0125】
307で、スケジューラ1は、共通リソース情報の中から、仮想マシン情報を満たす第1ターゲットホストマシン情報を選別する。
【0126】
308で、スケジューラ1は、第1ターゲットホストマシン情報をリソース情報プライベートコピーにコピーする。
【0127】
309で、スケジューラ1は、第1完全更新タイムスタンプ及び第1増分更新タイムスタンプを記録する。
【0128】
スケジューラ1は、現在タイムスタンプを第1完全更新タイムスタンプ及び第1増分更新タイムスタンプとして設定し、第1完全更新タイムスタンプ及び第1増分更新タイムスタンプをリソース情報プライベートコピーに記憶してもよい。
【0129】
310で、スケジューラ1は、共通リソース情報のうち、更新があってかつ更新タイムスタンプが最後の増分更新タイムスタンプより大きいホストマシン情報を取得する。
【0130】
311で、スケジューラ1は、ホストマシン情報の中から、仮想マシン情報を満たす第2ターゲットホストマシン情報を取得する。
【0131】
312で、スケジューラ1は、第2ターゲットホストマシン情報をリソース情報プライベートコピーに追加する。
【0132】
313で、スケジューラ1は、第2増分更新タイムスタンプを記録する。
【0133】
スケジューラ1は、現在タイムスタンプを第2増分更新タイムスタンプとして設定し、第2増分更新タイムスタンプをリソース情報プライベートコピーに記憶してもよい。リソース情報同期化バッファリングメカニズムでは、リソース情報プライベートコピーの増分更新を行え、リソース情報同期化にかかる時間が著しく削減される。
【0134】
スケジューラ2が、共通リソース情報及び仮想マシン情報2に基づいて、リソース情報プライベートコピー2を更新すること、及び、スケジューラ3が、共通リソース情報及び仮想マシン情報3に基づいて、リソース情報プライベートコピー3を更新することは、両者の更新方式がスケジューラ1の更新方式と類似し、ここで説明を省略する。
【0135】
図4に示すように、スケジューラの数が限定されない場合、n(nは、1より大きい正整数)個のスケジューラは、並行的に、メッセージキューのメッセージから、仮想マシン情報を抽出し、共通リソース情報に基づいて、自身でメンテナンスされるリソース情報プライベートコピーをそれぞれ更新することができる。
【0136】
212で、スケジューラ1は、リソース情報プライベートコピー1に基づいて、候補ホストマシンを決定し、候補ホストマシンの中からターゲットホストマシンAを決定する。
【0137】
213で、スケジューラ2は、リソース情報プライベートコピー2に基づいて、候補ホストマシンを決定し、候補ホストマシンの中からターゲットホストマシンBを決定する。
【0138】
214で、スケジューラ3は、リソース情報プライベートコピー3に基づいて、候補ホストマシンを決定し、候補ホストマシンの中からターゲットホストマシンCを決定する。
【0139】
説明すべきものとして、ステップ212〜ステップ214の実行順序は、実際の状況に応じて、柔軟的に設定されてもよいが、具体的なステップの実行順序がここで限定されない。
【0140】
スケジューラ1は、仮想マシン情報におけるリソース要件と、リソース情報プライベートコピーにおけるホストマシン情報とに基づいて、リソース情報プライベートコピーにおけるホストマシン集合をフィルタリングし、条件に合致するホストマシンを保持し、条件に合致しないホストマシンを除外することにより、少なくとも1つの候補ホストマシンを得てもよい。
【0141】
いくつかの実施例では、スケジューラ1は、構築された直列フィルターに従って、複数のホストマシンに対して相応のフィルタリングを行うように各フィルターを制御することにより、仮想マシン情報を満たす少なくとも1つの候補ホストマシンを得てもよい。例えば、8つのホストマシンの場合を例にすると、8つのホストマシンは、ホストマシン情報と、作成する仮想マシンの仮想マシン情報とに基づいてフィルタリングされ、フィルターAを通過する際に、フィルターAが、仮想マシンに必要なCPU、メモリ、及びディスクリソースなどの、ホストマシンにより提供可能なハードウェアリソース要件を満たさないホストマシンをフィルタリングして除外し、リソース要件に合致するホストマシンを保持することを担う場合、今回のフィルタリングにより、2つのホストマシンがフィルタリングされて除外される。残りの6つのホストマシンは、フィルターBに入る。フィルターBが、仮想マシン情報に基づいて、SSDをサポートしないホストマシンをフィルタリングして除外することを担う場合、フィルターBによるフィルタリングを経ると、もう1つのホストマシンがフィルタリングされて除外され、5つのホストマシンがまだ残っている。次に、他のフィルターを順次に通過する。他のフィルターは、クラウドディスクをサポートしないホストマシンをフィルタリングして除外することを担ったり、プライベートネットワークをサポートしないホストマシンをフィルタリングして除外することを担ったりしてもよい。最後にフィルターXに至る。フィルターXは、適合しない仮想化タイプのうち1つをフィルタリングして除外することを担う。例えば、ホストマシンの仮想化タイプがKVMである必要がある場合、仮想化タイプがXenであるホストマシンがフィルタリングされて除外される。フィルタリング終了後、それぞれ候補ホストマシンA、候補ホストマシンB、及び候補ホストマシンCである3つの候補ホストマシンが得られる。
【0142】
さらに、
図7に示すように、スケジューラ1は、少なくとも1つの候補ホストマシンが得られた後、少なくとも1つの候補ホストマシンの中からターゲットホストマシンを決定してもよい。具体的な実行手順は、下記のステップを含んでもよい。
【0143】
401で、スケジューラ1は、少なくとも1つの候補ホストマシンのそれぞれの各次元の優先度値を決定する。
【0144】
各ホストマシンそれぞれの各次元の優先度値の計算方式は、上記実施例で言及された優先度値の計算方式と類似し、ここで説明を省略する。
【0145】
例えば、それぞれ候補ホストマシンA、候補ホストマシンB、及び候補ホストマシンCである3つの候補ホストマシンが得られる場合、候補ホストマシンA、候補ホストマシンB、及び候補ホストマシンCの各次元の優先度値をそれぞれ計算してもよい。
【0146】
402、スケジューラ1は、各次元の優先度値の高い順にランキングを行って、候補ホストマシンリストを生成する。
【0147】
ここで、ランキング方式は、上記実施例で言及されたランキング方式と類似し、ここで説明を省略する。
【0148】
例えば、スケジューラ1により生成された候補ホストマシンリスト1において、各候補ホストマシンが、優先度値の高い順に、候補ホストマシンA、候補ホストマシンB、及び候補ホストマシンCとランキングされる。
【0149】
403で、スケジューラ1は、候補ホストマシンリストから、ランキング順に1つのホストマシンを取り出す。
【0150】
例えば、スケジューラ1は、生成された候補ホストマシンリスト1から、候補ホストマシンAを取り出す。
【0151】
404で、スケジューラ1は、仮想マシンのリソース要件に基づいて、差し引き後の該ホストマシンの残りリソースを計算する。
【0152】
例えば、仮想マシンのリソース要件が8コア・8Gのリソースであり、候補ホストマシンAのホストマシン情報に10コア・10Gのリソースが含まれ、仮想マシンの作成に8コア・8Gのリソースを差し引く必要がある場合、差し引き後の候補ホストマシンAの残りリソースは、2コア・2Gのリソースとなる。
【0153】
405で、スケジューラ1は、残りリソースを共通リソース情報へコミットする。
【0154】
406で、スケジューラ1は、コミットが成功したか否かを判断し、コミットが成功した場合、ステップ407及びステップ408を順次に実行し、コミットが成功しなかった場合、ステップ409を実行する。
【0155】
407で、スケジューラ1は、該ホストマシンをターゲットホストマシンとして決定する。
【0156】
コミットが成功した場合は、共通リソース情報における残りリソースの値の修正が成功したことを表す。ある候補ホストマシンに対応する残りリソースのコミットが成功すると、コミットに成功した候補ホストマシンをターゲットホストマシンとして設定する。
【0157】
408で、スケジューラ1は、リソース情報プライベートコピーを更新する。
【0158】
即ち、スケジューラ1は、リソース情報プライベートコピー1を更新する。
【0159】
409で、スケジューラ1は、コミット回数がスケジューリング競合閾値を超えるか否かを判断し、コミット回数がスケジューリング競合閾値を超えていないとき、ステップ410を実行し、コミット回数がスケジューリング競合閾値を超えたとき、ステップ411を実行する。
【0160】
コミットが
失敗した場合は、複数のスケジューラが並行的に同一のホストマシンに対してコミットを試みることに起因する可能性があり、このとき、1つのみのスケジューラによるコミットが成功可能であり、それ以外のスケジューラによる今回のコミットが失敗する。
【0161】
該スケジューリング競合閾値は、実際の状況に応じて、柔軟的に設定されてもよい。いくつかの実施例では、該スケジューリング競合閾値は、3回〜8回の範囲に設定されてもよい。これにより、同一のホストマシン上に短時間で複数の仮想マシンを作成して、ホストマシンに過度の圧力をかけることを回避できる。
【0162】
410で、スケジューラ1は、該ホストマシンのリソースデータを再取得して、ステップ404を実行する。
【0163】
複数のスケジューラが並行して動作し、残りリソースのコミット時にスケジューリング競合が発生する可能性があるので、スケジューラは、ホストマシンの最新のリソースデータを検索して、再度の差し引きや残りリソースのコミットなどの処理を開始してもよい。同一のホストマシンに対するスケジューリング競合の回数が閾値を超えた場合、候補ホストマシンリストの次のホストマシン、即ち、2番目に良いホストマシンを選択する。これにより、スケジューリング競合のコストがより低くなり、スケジューリング競合の効果的な処理が実現される。
【0164】
411で、スケジューラ1は、選択されていない候補ホストマシンがまだあるか否かを判断し、選択されていない候補ホストマシンがまだある場合、ステップ403を実行し、選択されていない候補ホストマシンがない場合、ステップ412を実行する。
【0165】
説明すべきものとして、スケジューラ1は、候補ホストマシンリストのランキングの上位所定数の候補ホストマシンをリランキングして、候補ホストマシンターゲットリストを得、候補ホストマシンターゲットリストの各候補ホストマシンの順序でホストマシンを取り出し、仮想マシンのリソース要件に基づいて、差し引き後の該ホストマシンの残りリソースを計算してもよい。これにより、複数のスケジューラが並行的にリソーススケジューリングを行うシナリオで同じホストマシンを選択することを防止し、スケジューリング競合を効果的に回避することができる。
【0166】
いくつかの実施例では、ある候補ホストマシンの残りリソースのコミットが失敗した場合、スケジューリングサーバは、該候補ホストマシンの残りリソースのコミット回数がスケジューリング競合閾値を超えるか否かを決定してもよい。
【0167】
該候補ホストマシンの残りリソースのコミット回数が前記スケジューリング競合閾値を超えていないと決定されたとき、スケジューリングサーバは、該候補ホストマシンの最新のリソースデータを取得し、該候補ホストマシンに対応する前記残りリソースを再決定する。
【0168】
該候補ホストマシンの残りリソースのコミット回数が前記スケジューリング競合閾値を超えたと決定されたとき、スケジューリングサーバは、候補ホストマシンリストの次の候補ホストマシンから、作成する前記仮想マシンのリソース要件を差し引いて、相応の残りリソースを得、前記相応の残りリソースをコミットしてもよい。
【0169】
412で、スケジューラ1は、選択されていないホストマシンがないと決定する。
【0170】
スケジューラ2が、リソース情報プライベートコピー2に基づいて、候補ホストマシンを決定し、候補ホストマシンの中からターゲットホストマシンBを決定すること、及び、スケジューラ3が、リソース情報プライベートコピー3に基づいて、候補ホストマシンを決定し、候補ホストマシンの中からターゲットホストマシンCを決定することは、両者の決定方式がスケジューラ1の決定方式と類似し、ここで説明を省略する。
【0171】
215で、ターゲットホストマシンAが決定された後、スケジューラ1は、ホストマシンAに、仮想マシン1を作成する要求を送信する。
【0172】
216で、ターゲットホストマシンBが決定された後、スケジューラ2は、ホストマシンBに、仮想マシン2を作成する要求を送信する。
【0173】
217で、ターゲットホストマシンCが決定された後、スケジューラ3は、ホストマシンCに、仮想マシン3を作成する要求を送信する。
【0174】
218で、ホストマシンAは、仮想マシン1を作成する要求を受信すると、仮想マシン1を作成する。
【0175】
219で、ホストマシンBは、仮想マシン2を作成する要求を受信すると、仮想マシン2を作成する。
【0176】
220で、ホストマシンCは、仮想マシン3を作成する要求を受信すると、仮想マシン3を作成する。
【0177】
以下、例を挙げて説明する。
図5に示すように、各スケジューラが並行的にリソーススケジューリングを行い、スケジューラ1で得られた候補ホストマシンリスト1において、各候補ホストマシンが従う優先度値の高い順は、候補ホストマシンA、候補ホストマシンB、及び候補ホストマシンCの順であり、スケジューラ2で得られた候補ホストマシンリスト2において、各候補ホストマシンが従う優先度値の高い順は、候補ホストマシンA、候補ホストマシンC、及び候補ホストマシンBの順であり、スケジューラ3で得られた候補ホストマシンリスト3において、各候補ホストマシンが従う優先度値の高い順は、候補ホストマシンB、候補ホストマシンA、及び候補ホストマシンCの順である、と仮定する。
【0178】
この場合、スケジューラ1は、候補ホストマシンリスト1から、第1位にランキングされた候補ホストマシンAを取り出し、仮想マシン1のリソース要件に基づいて差し引き計算を行って、候補ホストマシンAの残りリソースを得、該残りリソースを共通リソース情報へコミットし、コミットが成功した場合、候補ホストマシンAをターゲットホストマシンとして決定することができる。スケジューラ1は、ホストマシンAに、仮想マシン1を作成する要求を送信し、ホストマシンAは、要求を受信すると、仮想マシン1を作成する。
【0179】
スケジューラ2は、候補ホストマシンリスト2から、第1位にランキングされた候補ホストマシンAを取り出し、仮想マシン2のリソース要件に基づいて差し引き計算を行って、候補ホストマシンAの残りリソースを得、該残りリソースを共通リソース情報へコミットし、コミットが失敗して、かつコミット回数が閾値に達し、この場合、候補ホストマシンリスト2から、第2位にランキングされた候補ホストマシンCを取り出す必要があり、仮想マシン2のリソース要件に基づいて差し引き計算を行って、候補ホストマシンCの残りリソースを得、該残りリソースを共通リソース情報へコミットし、コミットが成功した場合、候補ホストマシンCをターゲットホストマシンとして決定することができる。スケジューラ2は、ホストマシンCに、仮想マシン2を作成する要求を送信し、ホストマシンCは、要求を受信すると、仮想マシン2を作成する。
【0180】
スケジューラ3は、候補ホストマシンリスト3から、第1位にランキングされた候補ホストマシンBを取り出し、仮想マシン3のリソース要件に基づいて差し引き計算を行って、候補ホストマシン
Bの残りリソースを得、該残りリソースを共通リソース情報へコミットし、コミットが成功した場合、候補ホストマシンBをターゲットホストマシンとして決定することができる。スケジューラ3は、ホストマシンBに、仮想マシン3を作成する要求を送信し、ホストマシンBは、要求を受信すると、仮想マシン3を作成する。
【0181】
説明すべきものとして、
図5は一例にすぎず、
図5に示されるリソーススケジューリングシナリオは、本願の実施例の構成をより明確に説明するためのものであり、本願の実施例で提供された構成を限定するものではない。例えば、
図5には、スケジューラ4などがさらに含まれてもよい。スケジューラ4で得られた候補ホストマシンリスト4において、各候補ホストマシンが従う優先度値の高い順は、候補ホストマシンY、候補ホストマシンX、及び候補ホストマシンDの順である。スケジューラ4は、候補ホストマシンリスト4から、第1位にランキングされた候補ホストマシン
Yを取り出し、仮想マシン
4のリソース要件に基づいて差し引き計算を行って、候補ホストマシンYの残りリソースを得、該残りリソースを共通リソース情報へコミットし、コミットが成功した場合、スケジューラ4が候補ホストマシンY上に仮想マシン4を作成できると決定することができる。
【0182】
上記から分かるように、本実施例では、複数のスケジューラは、並行的に、メッセージキューのメッセージから仮想マシン作成要求を抽出し、仮想マシン作成要求に付けられている仮想マシン情報に基づいて、各仮想マシン作成要求に対して適当なターゲットホストマシンを選択し、ターゲットホストマシン上に対応の仮想マシンを作成する、ことを実行できる。リソース情報のバッファリングメカニズムを設ける(共通リソース情報及びリソース情報プライベートコピーを設けることを含めて)ことにより、複数のスケジューラが並行的にリソーススケジューリングを行えることが実現され、リソーススケジューリングの並行度及びスループットを効果的に向上させ、スケジューリング遅延を低減させ、システム全体のスケーラビリティを向上させることができる。
【0183】
本願の実施例で提供されたリソーススケジューリング方法をより良く実施するために、本願の実施例では、上記リソーススケジューリング方法に基づく装置も提供されている。ここで、用語の意味は、上記リソーススケジューリング方法における意味と同じであり、具体的な実現の詳細は、方法に係る実施例の説明を参照すればよい。
【0184】
図8を参照されたい。
図8は、本願の実施例で提供されたリソーススケジューリング装置の構成の模式図である。ここで、このリソーススケジューリング装置は、第1取得ユニット501、第2取得ユニット502、更新ユニット503、第3取得ユニット504、及び作成ユニット505などを含んでもよい。
【0185】
ここで、第1取得ユニット501は、作成する仮想マシンに対応する仮想マシン情報を取得する。
【0186】
例えば、第1取得ユニット501は、クラウドコンピューティングシステムに予め設けられたメッセージキューから、作成する仮想マシンに対応する仮想マシン情報を取得してもよい。ここで、仮想マシンとは、ソフトウェアでエミュレートされる、ハードウェアシステム機能を有しかつ隔離された環境で実行される完全なコンピュータシステムを指す。
【0187】
メッセージキューのメッセージは、非同期タスクであってもよい。メッセージキューのメッセージは、メッセージキューを流れる。クラウドコンピューティングシステムの各コンポーネントは、生産者または消費者の身分を有する。生産者は、メッセージキューにメッセージを送信する。消費者は、メッセージキューからメッセージを受信する。例えば、クラウドコンピューティングシステムでは、受信器が生産者として、端末から送信された仮想マシン情報が付けられている仮想マシン作成要求を受信すると、仮想マシン情報をメッセージにカプセル化して、メッセージをメッセージキューに記憶し、これらの仮想マシン情報がメッセージキューに並んで第1取得ユニット501によるリソーススケジューリングを待ち、第1取得ユニット501が消費者として、メッセージキューから仮想マシン情報を抽出し、仮想マシン情報に対応する作成する仮想マシンに対してホストマシンを選択する。
【0188】
仮想マシン情報には、作成する仮想マシンに必要なプロセッサ情報、メモリ情報、及びディスク情報など、並びに、作成する仮想マシンの、ソリッドステートドライブ、クラウドディスク、プライベートネットワーク、ネットワークカード、ルーター、ネットワーク構成、データセンター、ラック、ホストマシンの機種、ホストマシンの属するリソースプール、及び仮想マシンのタイプなどに対するリソース要件の少なくとも1つが含まれてもよい。理解できるように、仮想マシン情報のタイプは、実際の必要に応じて、柔軟的に設定されてもよいが、具体的な内容がここで限定されない。
【0189】
第2取得ユニット502は、共通リソース情報を取得する。
【0190】
ここで、共通リソース情報は、クラウドコンピューティングシステムに対して、データセンター全体のリソースデータを記憶・メンテナンスするためのものである。この共通リソース情報には、クラウドコンピューティングシステムのすべてのホストマシンに対応するホストマシン情報が含まれる。理解できるように、この共通リソース情報は、リソースマネージャーによってメンテナンスされてもよく、クラウドコンピューティングシステムの他の機器によってメンテナンスされてもよく、次に、第2取得ユニット502によって、共通リソース情報をメンテナンスする機器から取得されてもよい。例えば、この共通リソース情報がクラウドコンピューティングシステムのリソースマネージャーによってメンテナンスされる場合、第2取得ユニット502は、リソースマネージャーから、共通リソース情報を取得できる。説明の便宜上、本願の実施例では、すべて、共通リソース情報がリソースマネージャーによってメンテナンスされる場合を例として説明する。
【0191】
説明すべきものとして、共通リソース情報は、クラウドコンピューティングシステム内でグローバルに一意であり、そのメンテナンス形式は、論理データテーブルであってもよい。例えば、データテーブルの各行のそれぞれは、1つのホストマシンを表し、データテーブルの各列は、ホストマシンに含まれる異なるタイプのリソースを表す。この異なるタイプのリソースは、ホストマシンのネットワーク間のインターネットプロトコル(IP:Internet Protocol)アドレス、利用可能な中央処理装置(CPU:Central Processing Unit)、利用可能なメモリ、及び利用可能なディスクなどを含んでもよい。メンテナンス過程では、共通リソース情報に対して、追加、読み取り、更新、又は削除などの処理を行うことができる。これらの処理は、データセンターのホストマシンリソースのオンライン化、変更、又はオフライン化などの過程に対応する。
【0192】
ここで、ホストマシンとは、仮想マシンソフトウェアをインストールするための物理的なコンピュータを指す。1つのホストマシン上には、仮想マシンソフトウェアによって、1つ又は複数の仮想マシンを作成してもよい。
【0193】
いくつかの実施例では、ホストマシン情報は、ホストマシン識別子、IPアドレス、機種、オペレーティングシステム名、カーネルバージョン、CPU型番、仮想化方式、論理領域番号、インターネットデータセンター番号、ホストマシン状態、クラウドディスクをサポートするか否か、ソリッドステートドライブ(SSD:Solid State Drives)をサポートするか否か、ネットワークバージョン、CPUノードリソースクォータ、利用可能なメモリリソース、及び利用可能なディスクリソースなどを含んでもよいが、具体的な内容がここで限定されない。
【0194】
説明すべきものとして、ホストマシンがクラウドコンピューティングシステムに入るには、ホストマシン導入プロセスによって必要な初期化を行う必要がある。ホストマシンは、そのホストマシン情報をリソースマネージャーに報告し、リソースマネージャーは、ホストマシン情報を共通リソース情報に記憶してもよい。ホストマシンは、そのホストマシン情報をリソーススケジューリング装置に報告してもよい。リソーススケジューリング装置は、ホストマシン情報を予め設けられたリソース情報プライベートコピーに記憶してもよい。或いは、リソーススケジューリング装置は、リアルタイム又は所定時間間隔で、情報取得要求をリソースマネージャーに送信し、情報取得要求に応じてリソースマネージャーからフィードバックされた共通リソース情報を受信し、共通リソース情報に基づいてリソース情報プライベートコピーを更新する。或いは、共通リソース情報の更新があった場合、リソースマネージャーは、更新されたホストマシン情報をリソーススケジューリング装置に自発的に送信する。
【0195】
更新ユニット503は、共通リソース情報及び仮想マシン情報に基づいて、予め設けられたリソース情報プライベートコピーを更新する。
【0196】
リソーススケジューリング装置自身でメンテナンスされるリソース情報プライベートコピーのメンテナンス形式は、共通リソース情報のリソーススケジューリング装置のメモリにおけるバッファである。ここで、リソース情報プライベートコピーには、所定のホストマシンに対応するホストマシン情報が含まれる。該所定のホストマシンは、クラウドコンピューティングシステムのすべてのホストマシンの一部又は全部であってもよい。リソーススケジューリングの結果を良くするために、更新ユニット503は、リソーススケジューリングを行う前に、リソース情報プライベートコピーと共通リソース情報とを同期化する必要があり、共通リソース情報を取得し、共通リソース情報に基づいてリソース情報プライベートコピーを更新することにより、リソース情報プライベートコピーと共通リソース情報との一致性を保証してもよい。
【0197】
更新時間を短縮するために、更新ユニット503は、共通リソース情報及び仮想マシン情報に基づいて、リソース情報プライベートコピーを更新してもよい。いくつかの実施形態では、
図9に示すように、更新ユニット503は、共通リソース情報の中から、仮想マシン情報を満たすターゲットホストマシン情報を選別し、ターゲットホストマシン情報を予め設けられたリソース情報プライベートコピーに追加する更新サブユニット5031を含む。
【0198】
いくつかの実施例では、更新サブユニット5031は、具体的に、リソース情報プライベートコピーの初回更新である場合、共通リソース情報の中から、仮想マシン情報を満たすターゲットホストマシン情報を選別し、ターゲットホストマシン情報をリソース情報プライベートコピーにコピーし、現在タイムスタンプを取得し、現在タイムスタンプを完全更新タイムスタンプ及び増分更新タイムスタンプとして設定し、完全更新タイムスタンプ及び増分更新タイムスタンプをリソース情報プライベートコピーに記憶する。
【0199】
具体的には、まず、更新サブユニット5031は、リソース情報プライベートコピーの初回更新であるか否かを判断し、例えば、リソース情報プライベートコピーが空であるか否かを判断してもよい。リソース情報プライベートコピーが空である場合、リソース情報プライベートコピーの初回更新であると決定し、リソース情報プライベートコピーが空ではない場合、リソース情報プライベートコピーの初回更新ではないと決定する。初回更新である場合、現在のリソース情報プライベートコピーが空であり、完全更新を行う必要があり、即ち、共通リソース情報の中から、仮想マシン情報を満たすターゲットホストマシン情報を選別し、ターゲットホストマシン情報をリソース情報プライベートコピーにコピーする必要がある。説明すべきものとして、直接に共通リソース情報をリソース情報プライベートコピーに完全コピーしてもよい。
【0200】
ターゲットホストマシン情報をリソース情報プライベートコピーにコピーした後、完全更新タイムスタンプ及び増分更新タイムスタンプを記録する必要がある。いくつかの実施例では、更新サブユニット5031は、現在タイムスタンプを取得し、現在タイムスタンプを完全更新タイムスタンプ及び増分更新タイムスタンプとして設定する。例えば、現在タイムスタンプが2017年9月15日午前11:00である場合、完全更新タイムスタンプ及び増分更新タイムスタンプは、いずれも、2017年9月15日午前11:00となる。次に、完全更新タイムスタンプ及び増分更新タイムスタンプをリソース情報プライベートコピーに記憶して、今回の更新を完了する。
【0201】
いくつかの実施例では、更新サブユニット5031は、具体的に、リソース情報プライベートコピーの初回更新ではない場合、現在タイムスタンプと最後の完全更新タイムスタンプとの時間差を取得し、時間差が所定の完全更新閾値より大きいか否かを判断し、時間差が完全更新閾値より大きいとき、共通リソース情報の中から、仮想マシン情報を満たす第1ターゲットホストマシン情報を選別し、第1ターゲットホストマシン情報をリソース情報プライベートコピーにコピーし、現在タイムスタンプを第1完全更新タイムスタンプ及び第1増分更新タイムスタンプとして設定し、第1完全更新タイムスタンプ及び第1増分更新タイムスタンプをリソース情報プライベートコピーに記憶する。
【0202】
具体的には、リソース情報プライベートコピーの初回更新ではない場合、更新サブユニット5031は、現在タイムスタンプと最後の完全更新タイムスタンプとの時間差を取得する。ここで、最後の完全更新タイムスタンプは、現在タイムスタンプより前の最後に記録された完全更新タイムスタンプである。
【0203】
次に、更新サブユニット5031は、時間差が所定の完全更新閾値より大きいか否かを判断する。この完全更新閾値は、実際の必要に応じて、柔軟的に設定されてもよく、具体的な値がここで限定されない。例えば、完全更新頻度を低くするために、完全更新閾値に大きな値を設定してもよい。
【0204】
時間差が完全更新閾値より大きいとき、完全更新を行い、即ち、共通リソース情報の中から、仮想マシン情報を満たす第1ターゲットホストマシン情報を選別し、第1ターゲットホストマシン情報をリソース情報プライベートコピーにコピーする。説明すべきものとして、現在の共通リソース情報をリソース情報プライベートコピーに完全コピーしてもよい。
【0205】
次に、更新サブユニット5031は、第1完全更新タイムスタンプ及び第1増分更新タイムスタンプを記録することにより、完全更新タイムスタンプ及び増分更新タイムスタンプを正確に記録する。いくつかの実施例では、現在タイムスタンプを第1完全更新タイムスタンプ及び第1増分更新タイムスタンプとして設定してもよい。例えば、現在タイムスタンプが2017年9月16日午前8:00である場合、完全更新タイムスタンプ及び増分更新タイムスタンプは、いずれも、2017年9月16日午前8:00となる。次に、第1完全更新タイムスタンプ及び第1増分更新タイムスタンプをリソース情報プライベートコピーに記憶して、今回の更新を完了する。
【0206】
さらに、更新サブユニット5031は、具体的に、時間差が完全更新閾値以下であるとき、共通リソース情報のうち、更新があってかつ更新タイムスタンプが最後の増分更新タイムスタンプより大きいホストマシン情報を取得し、ホストマシン情報の中から、仮想マシン情報を満たす第2ターゲットホストマシン情報を取得し、第2ターゲットホストマシン情報をリソース情報プライベートコピーに追加し、現在タイムスタンプを第2増分更新タイムスタンプとして設定し、第2増分更新タイムスタンプをリソース情報プライベートコピーに記憶する。
【0207】
クラウドコンピューティングシステムのホストマシンの規模が大きく、例えば、ホストマシンの規模は10000程度であるが、リソーススケジューリング装置は100程度である。このため、リソース情報プライベートコピーを更新するたびに、完全更新を行うと、即ち、共通リソース情報をリソース情報プライベートコピーに完全コピーすると、時間がかかる。更新にかかる時間を短縮するために、リソース情報の増分更新を行い、即ち、共通リソース情報のうち一部のリソース情報をリソース情報プライベートコピーに追加してもよい。
【0208】
具体的には、共通リソース情報におけるホストマシン情報が更新されるたびに、更新タイムスタンプを記録することにより、正確な更新日時を得る。更新サブユニット5031は、現在タイムスタンプと最後の完全更新タイムスタンプとの時間差を取得した後、時間差が完全更新閾値以下であるとき、共通リソース情報のうち、更新があったホストマシン情報を取得し、各ホストマシン情報が更新された更新タイムスタンプを取得し、次に、更新があったホストマシン情報の中から、更新タイムスタンプが最後の増分更新タイムスタンプより大きいホストマシン情報を選別する。即ち、最後の増分更新タイムスタンプに基づいて、共通リソース情報の中から、更新タイムスタンプが最後の増分更新タイムスタンプ
より大きいすべてのホストマシン情報を検索する。この最後の増分更新タイムスタンプは、現在タイムスタンプより前の最後の増分更新タイムスタンプである。
【0209】
共通リソース情報のうち、更新があってかつ更新タイムスタンプが最後の増分更新タイムスタンプより大きいホストマシン情報が得られた後、該ホストマシン情報に対して選別を行って、ホストマシン情報の中から、仮想マシン情報を満たす第2ターゲットホストマシン情報を取得し、第2ターゲットホストマシン情報をリソース情報プライベートコピーに追加する。
【0210】
次に、更新サブユニット5031は、第2増分更新タイムスタンプを記録することにより、増分更新タイムスタンプを正確に記録し、即ち、現在タイムスタンプを第2増分更新タイムスタンプとして設定し、第2増分更新タイムスタンプをリソース情報プライベートコピーに記憶して、今回の更新を完了する。リソース情報プライベートコピーは、実質的に、メモリ内で実行されるバッファである。ほとんどの場合、更新サブユニット5031が増分更新を行うだけでよく、更新データ量も、かかる時間も少ない。いくつかの実施例では、今回の増分更新の前にオフラインになっているホストマシンも、リソース情報プライベートコピーから削除される。
【0211】
説明すべきものとして、上記第1ターゲットホストマシン情報、第2ターゲットホストマシン情報、第1完全更新タイムスタンプ、第1増分更新タイムスタンプ、及び第2増分更新タイムスタンプの「第1」及び「第2」は、現れたターゲットホストマシン情報、増分更新タイムスタンプ、又は完全更新タイムスタンプを区別するためのものにすぎず、それらの重要度への限定を表すものではない。
【0212】
第3取得ユニット504は、リソース情報プライベートコピーに基づいて、仮想マシン情報を満たす少なくとも1つの候補ホストマシンを取得する。
【0213】
リソース情報プライベートコピーが更新された後、第3取得ユニット504は、リソース情報プライベートコピーを基に、作成する仮想マシンに対して、ホストマシンを選別する。仮想マシン情報におけるリソース要件と、リソース情報プライベートコピーにおけるホストマシン情報とに基づいて、リソース情報プライベートコピーにおけるホストマシン集合をフィルタリングし、条件に合致するホストマシンを保持し、条件に合致しないホストマシンを除外することにより、少なくとも1つの候補ホストマシンを得てもよい。
【0214】
いくつかの実施例では、第3取得ユニット504は、仮想マシン情報に基づいて、ホストマシン情報に応じて構築された直列フィルターに従って、複数のホストマシンに対して相応のフィルタリングを行うように各フィルターを制御することにより、仮想マシン情報を満たす少なくとも1つの候補ホストマシンを得てもよい。
【0215】
ホストマシン情報に応じて、直列フィルタリングモデルを構築することができる。この直列フィルタリングモデルには、直列接続された複数のフィルターが含まれる。各フィルターそれぞれは、1つのフィルタリング機能を担う。各フィルターは、仮想マシン情報に基づいて相応の判断を行ってから、相応のフィルタリングを実行する。例えば、直列接続された1番目のフィルターは、仮想マシンに必要なCPU、メモリ、及びディスクリソースなどのリソース要件に基づいて、該リソース要件を満たさないホストマシンをフィルタリングして除外し、該リソース要件を満たすホストマシンのみを保持することを担い、直列接続された2番目のフィルターは、SSDをサポートするホストマシン、又はSSDをサポートしないホストマシンをフィルタリングして除外することを担い、リソース要件において、ホストマシンがSSDをサポートすることが要求される場合、2番目のフィルターは、該リソース要件に基づいて、SSDをサポートしないホストマシンをフィルタリングして除外し、SSDをサポートするホストマシンを保持する。
【0216】
理解できるように、他のフィルターの機能は、該フィルターの機能を参照して理解すればよい。但し、他のフィルターは、他のフィルタリング機能を担う。具体的なフィルタリングモデルにおける各フィルターの機能は、作成する仮想マシンのリソース要件に応じて設定されてもよいが、具体的な内容がここで限定されない。
【0217】
作成ユニット505は、少なくとも1つの候補ホストマシンの中からターゲットホストマシンを取得し、ターゲットホストマシン上に仮想マシンを作成する。
【0218】
少なくとも1つの候補ホストマシンが得られた後、作成ユニット505は、少なくとも1つの候補ホストマシンの中からターゲットホストマシンを決定してもよい。ターゲットホストマシンの選択は、ランダムに選択することであってもよい。もちろん、合致度が最も良いターゲットホストマシンを選択するために、複数のホストマシンをフィルタリングして少なくとも1つの候補ホストマシンが得られた後、各候補ホストマシンそれぞれの各次元の優先度値を決定し、優先度値に従って少なくとも1つの候補ホストマシンをランキングしてもよい。
【0219】
いくつかの実施形態では、
図10に示すように、作成ユニット505は、
少なくとも1つの候補ホストマシンのそれぞれの各次元の優先度値を決定する決定サブユニット5051と、
各次元の優先度値の高い順にランキングを行って、候補ホストマシンリストを生成する生成サブユニット5052と、
候補ホストマシンリストの各候補ホストマシンの順序で、逐一、各候補ホストマシンから、作成する仮想マシンのリソース要件を差し引いて、残りリソースを得、リソース要件が、仮想マシンに対応する仮想マシン情報に含まれる差し引きサブユニット5053と、
残りリソースを共通リソース情報へコミットするコミットサブユニット5054と、
ある候補ホストマシンに対応する残りリソースのコミットが成功すると、コミットに成功した候補ホストマシンをターゲットホストマシンとして設定し、ターゲットホストマシン上に仮想マシンを作成する作成サブユニット5055と、を含む。
【0220】
具体的には、まず、決定サブユニット5051は、各ホストマシンそれぞれの複数次元の優先度値を計算する。各次元の優先度は、プライベートネットワーク優先度(vpcPrio)、並行タスク優先度(taskPrio)、履歴エラー優先度(errorPrio)、非アフィニティ優先度(affinityPrio)、フリー優先度(freePrio)、イメージキャッシュ優先度(imgPrio)、及び断片化率優先度(fragmentPrio)などを含んでもよい。
【0221】
ここで、プライベートネットワーク優先度値について、vpcPrioの値が小さいほど、優先度が高くなる。各ホストマシン毎に、プライベートネットワーク優先度値を決定してもよい。例えば、プライベートネットワークをサポートするホストマシンのvpcPrioの値を0にし、プライベートネットワークをサポートしないホストマシンのvpcPrioの値を1にしてもよい。或いは、プライベートネットワークをサポートするホストマシンのvpcPrioの値を1にし、プライベートネットワークをサポートしないホストマシンのvpcPrioの値を0にするなどにしてもよい。説明の便宜上、本願の実施例では、すべて、プライベートネットワークをサポートするホストマシンのvpcPrioの値を0にして、プライベートネットワークをサポートしないホストマシンのvpcPrioの値を1にする場合を例として説明する。
【0222】
プライベートネットワークは、IPアドレスが物理的なネットワークトポロジに依存せず、将来に移行がより容易である。プライベートネットワーク優先度は、プライベートネットワークをサポートするホストマシンに優先的に仮想マシンを配置して、将来の移行をより便利で柔軟にすることを役割とする。
【0223】
並行タスク優先度について、taskPrioの値が小さいほど、優先度が高くなる。各ホストマシン毎に、並行タスク優先度を決定してもよい。ホストマシン上の現在のタスク数を判断し、タスク数が所定閾値より小さい場合、並行タスク優先度の値を0にし、タスク数が所定閾値より小さくない場合、並行タスク優先度の値を現在のタスク数にする。例えば、所定閾値はデフォルトで3である。もちろん、該所定閾値は、実際の必要に応じて、柔軟的に設定されてもよい。
【0224】
ホストマシン上の並行タスクが同時に実行され、並行性が高すぎると、仮想マシンの作成が遅くなり、ひいては失敗する可能性がある。並行タスク優先度は、並行タスク数がより低いホストマシンに優先的に仮想マシンを配置して、仮想マシンの作成の成功率及びリアルタイム性を確保することを役割とする。
【0225】
履歴エラー優先度について、errorPrioの値が小さいほど、優先度が高くなる。各ホストマシン毎に、履歴エラー優先度を計算してもよい。ホストマシンの最近の期間(例えば、デフォルトで24時間)内の履歴エラー数を判断し、履歴エラー数がエラー閾値より小さい場合、履歴エラー優先度の値を0にし、履歴エラー数がエラー閾値より小さくない場合、履歴エラー優先度の値を履歴エラー数にする。例えば、エラー閾値はデフォルトで5であってもよい。エラー閾値は、実際の必要に応じて、柔軟的に設定されてもよい。
【0226】
短時間でエラーが複数回発生したホストマシンには、何らかの障害が発生した可能性があり、障害を処理する前に、該ホストマシンに持続的に仮想マシンを配置すると、仮想マシンの作成タスクが失敗する可能性があり、成功率を低下させる。履歴エラー優先度は、エラーが多すぎないホストマシンに優先的に仮想マシンを配置して、仮想マシンの作成の成功率を向上させることを役割とする。
【0227】
非アフィニティ優先度について、affinityPrioの値が小さいほど、優先度が高くなる。各ホストマシン毎に、非アフィニティ優先度を計算してもよい。仮想マシンのユーザの該ホストマシン上の既存の仮想マシンの数を判断し、仮想マシンの数がアフィニティ閾値より小さい場合、非アフィニティ優先度の値を0にし、仮想マシンの数がアフィニティ閾値より小さくない場合、非アフィニティ優先度の値を既存の仮想マシンの数にする。例えば、アフィニティ閾値は3である。もちろん、アフィニティ閾値は、実際の必要に応じて、柔軟的に設定されてもよい。
【0228】
大規模分散システムでは、エラーを完全に回避することがほぼ不可能である。あるユーザの仮想マシンが1つまたはいくつかのホストマシンに集中している場合、これらのホストマシンに障害が発生すると、これらのホストマシン上のすべての仮想マシンが影響を受け、該ユーザーのアプリケーションの全体的な可用性に深刻な影響を及ぼす。非アフィニティ優先度は、分散ディザスタリカバリのために、同一のユーザの仮想マシンを異なるホストマシンに広く分散させ、単一のホストマシンの障害によるアプリケーションの全体的な可用性への影響が制限され、さらにユーザーのアプリケーションの安定性及び可用性を向上させることを役割とする。
【0229】
フリー優先度について、freePrioの値が小さいほど、優先度が高くなる。例えば、各ホストマシンが完全に空いているか否かを判断し、完全に空いている場合、フリー優先度の値を0にし、完全に空いているのではない場合、フリー優先度の値を1にしてもよい。或いは、完全に空いている場合、フリー優先度の値を1にし、完全に空いているのではない場合、フリー優先度の値を0にするなどにしてもよい。説明の便宜上、本願の実施例では、完全に空いている場合、フリー優先度の値を0にし、完全に空いているのではない場合、フリー優先度の値を1にすることを例として説明する。
【0230】
フリー優先度は、空いているホストマシンを保護し、空いていないホストマシンに優先的に仮想マシンを配置して、空いていないホストマシン上のリソースを十分に利用し、リソースの利用率を向上させることを役割とする。
【0231】
イメージキャッシュ優先度について、imgPrioの値が小さいほど、優先度が高くなる。候補ホストマシンリストを走査し、各ホストマシンには仮想マシンに必要なイメージファイルがあるか否かを判断し、例えば、イメージファイルがある場合、イメージキャッシュ優先度の値を0にし、イメージファイルがない場合、イメージキャッシュ優先度の値を1にしてもよい。
【0232】
イメージキャッシュ優先度は、仮想マシンイメージが記憶されたホストマシンに優先的に仮想マシンを配置することにより、実際に仮想マシンを作成する際にイメージのダウンロードを省くことを可能にし、作成時間を節約し、仮想マシンの作成プロセスのリアルタイム性を向上させることを役割とする。
【0233】
断片化率優先度について、fragmentPrioの値が小さいほど、優先度が高くなる。各ホストマシン毎に、断片化率優先度を計算してもよい。CPU及びメモリの2次元のリソースに基づいて、優先度を計算する。デフォルトでは、断片化率優先度は、CPUの断片化率にメモリの断片化率を掛けたものに等しい。
【0234】
断片化率優先度は、ホストマシンのリソースを十分に利用し、リソースの断片化率を低下させ、さらにリソース利用率を向上させ、運用コストを削減することを役割とする。
【0235】
決定サブユニット5051が各候補ホストマシンそれぞれの各次元の優先度値を決定した後、生成サブユニット5052が、各次元の優先度値の高い順にホストマシンをランキングして、候補ホストマシンリストを得、作成サブユニット5055が、候補ホストマシンリストから、合致度が最も高い1つの候補ホストマシンをターゲットホストマシンとして決定する。具体的な決定過程は、下記の通りであってもよい。
【0236】
生成サブユニット5052は、各次元の優先度の高い順に、同一の次元のホストマシンを優先度値の大きい順にランキングし、同一の次元の同じ優先度値のホストマシンに対して、次の次元の優先度値に従ってランキングを行うことにより、優先度の高い順にランキングされた候補ホストマシンリストを得てもよい。
【0237】
候補ホストマシンがランキングされた後、第1位にランキングされた候補ホストマシンが最適であり、この最適な候補ホストマシンに他の作成タスクが存在する可能性があるため、必ずしも作成の成功を保証できず、リソースの差し引きを模擬するような方式でターゲットホストマシンを決定する必要がある。
【0238】
ターゲットホストマシンを決定する過程では、まず、差し引きサブユニット5053が、ランキングされた候補ホストマシンリストの各候補ホストマシンの順序で、逐一、各候補ホストマシンから、作成する仮想マシンのリソース要件を差し引いて、各候補ホストマシンに対応する残りリソースをそれぞれ得、ホストマシンに対してリソースの差し引きを模擬することを完了する。仮想マシンのリソース要件は、仮想マシンに対応する仮想マシン情報に含まれる。即ち、ランキングされた候補ホストマシンの降順に従って、第1位にランキングされた候補ホストマシンから始めて、逐一、各候補ホストマシンから、作成する仮想マシンのリソース要件を差し引き、ある候補ホストマシンからの差し引きが成功すると、差し引きに成功した候補ホストマシンをターゲットホストマシンとする。
【0239】
ランキング順序は、予め設定されてもよい。例えば、デフォルトのランキング基準、即ち優先度の高い順は、プライベートネットワーク優先度(vpcPrio)、並行タスク優先度(taskPrio)、履歴エラー優先度(errorPrio)、非アフィニティ優先度(affinityPrio)、フリー優先度(freePrio)、イメージキャッシュ優先度(imgPrio)、及び断片化率優先度(fragmentPrio)であってもよい。ランキング基準は、デフォルト基準範囲内で選択されてもよく、順序は、実際の必要に応じて、柔軟的に調整して設定されてもよい。
【0240】
次に、候補ホストマシンの残りリソースが得られた後、コミットサブユニット5054は、残りリソースを共通リソース情報へコミットし、ある候補ホストマシンに対応する残りリソースのコミットが成功すると、コミットに成功した候補ホストマシンをターゲットホストマシンとして設定する。候補ホストマシンの残りリソースを、各ホストマシンの残りリソースデータをメンテナンスするためのデータベースに書き込み、書き込みが成功すると、書き込みに成功した候補ホストマシンをターゲットホストマシンとするようにしてもよい。
【0241】
ターゲットホストマシンが決定された後、作成サブユニット5055は、該ターゲットホストマシン上に仮想マシンを作成することが可能になる。いくつかの実施例では、仮想マシンの作成には、ターゲットホストマシンのリソースを消費する必要があるため、リソース情報プライベートコピーにおけるホストマシン情報を更新してもよいし、クラウドコンピューティングシステムに共通リソース情報を更新するよう通知してもよい。
【0242】
候補ホストマシンに対応する残りリソースのコミットが失敗した場合は、スケジューリング競合、即ち、同一のホストマシンが複数のリソーススケジューリングプロセスによって同時に選択されることが発生した可能性があることを表す。この場合、コミット回数が回数閾値を超えるか否かを判断し、コミット回数が回数閾値を超えていないとき、該候補ホストマシンのホストマシン情報を再取得して、該候補ホストマシンから、作成する仮想マシンのリソース要件を差し引いて、残りリソースを再び得る。次に、再び得られた残りリソースを共通リソース情報へ再コミットする。コミット回数が回数閾値を超えたとき、候補ホストマシンリストから、次の候補ホストマシンを取得して、リソースの差し引きの模擬を行う。
【0243】
説明すべきものとして、1番目のホストマシンからの差し引きが成功した場合、2番目のホストマシンに対して差し引き処理を行う必要がなく、直接に1番目のホストマシンをターゲットホストマシンとして決定してもよい。1番目のホストマシンからの差し引きが成功しない場合、2番目のホストマシンに対して差し引き処理を行い、あるホストマシンからの差し引きが成功するまで繰り返す必要がある。
【0244】
さらに、
図11に示すように、作成ユニット505は、
候補ホストマシンリストのランキングの上位所定数の候補ホストマシンをリランキングして、候補ホストマシンターゲットリストを生成するランキングサブユニット5056をさらに含む。
【0245】
差し引きサブユニット5053は、具体的に、候補ホストマシンターゲットリストの各候補ホストマシンの順序で、逐一、各候補ホストマシンから、作成する仮想マシンのリソース要件を差し引いて、残りリソースを得る。
【0246】
ここで、所定数は、実際の必要に応じて、柔軟的に設定されてもよい。ランキングサブユニット5056が候補ホストマシンリストのランキングの上位所定数の候補ホストマシンをリランキングすることは、ランダムにリランキングすることであってもよいし、所定の規則に従ってリランキングすることであってもよいが、具体的なリランキング方式がここで限定されない。候補ホストマシンリストのランキングの上位所定数の候補ホストマシンをリランキングすることは、リランキングのために、候補ホストマシンリストの先頭k(kは所定数)個の候補ホストマシンをランダムにシャッフルして、候補ホストマシンターゲットリストを得ることで、並行シナリオで複数のリソーススケジューリングプロセスが同じターゲットホストマシンを選択することを防止し、スケジューリング競合を効果的に回避することが可能になる、ことを目的とする。
【0247】
上記から分かるように、本願の実施例では、第1取得ユニット501が、作成する仮想マシンに対応する仮想マシン情報を取得し、第2取得ユニット502が共通リソース情報を取得し、該共通リソース情報には、クラウドコンピューティングシステムのすべてのホストマシンに対応するホストマシン情報が含まれ、次に、更新ユニット503が、共通リソース情報及び仮想マシン情報に基づいて、予め設けられたリソース情報プライベートコピーを更新し、該リソース情報プライベートコピーには、所定のホストマシンに対応するホストマシン情報が含まれ、最後に、第3取得ユニット504が、リソース情報プライベートコピーに基づいて、仮想マシン情報を満たす少なくとも1つの候補ホストマシンを取得し、作成ユニット505が、少なくとも1つの候補ホストマシンの中からターゲットホストマシンを取得し、ターゲットホストマシン上に仮想マシンを作成する。この構成によれば、リソーススケジューリングを行う前に、リソース情報プライベートコピーを適時に更新することが可能になり、リソース情報プライベートコピーと共通リソース情報との同期性が保証され、リソーススケジューリングの結果が良くなるとともに、リソーススケジューリングを行う際に待つ必要がなく、リソーススケジューリングの効率が向上する。
【0248】
これに応じて、本願の実施例では、クラウドコンピューティングシステムも提供されている。このクラウドコンピューティングシステムは、少なくとも1つのスケジューラと、少なくとも1つのホストマシンと、を備えてもよい。このスケジューラは、本願の実施例で提供されたいずれか1つのリソーススケジューリング装置を備え、具体的に、上記リソーススケジューリング装置に対応する実施例を参照すればよい。ここで、リソーススケジューリング装置は、具体的に、スケジューリングサーバに統合されてもよい。例えば、
スケジューリングサーバは、作成する仮想マシンに対応する仮想マシン情報を取得し、共通リソース情報を取得し、共通リソース情報には、クラウドコンピューティングシステムのすべてのホストマシンに対応するホストマシン情報が含まれ、共通リソース情報及び仮想マシン情報に基づいて、予め設けられたリソース情報プライベートコピーを更新し、リソース情報プライベートコピーには、所定のホストマシンに対応するホストマシン情報が含まれ、リソース情報プライベートコピーに基づいて、仮想マシン情報を満たす少なくとも1つの候補ホストマシンを取得し、少なくとも1つの候補ホストマシンの中からターゲットホストマシンを取得し、ターゲットホストマシン上に仮想マシンを作成するようにしてもよい。
【0249】
上記の各機器の具体的な実施は、前述した実施例を参照すればよく、ここで説明を省略する。
【0250】
該クラウドコンピューティングシステムは、本願の実施例で提供されたいずれか1つのリソーススケジューリング装置を備えてもよいため、本願の実施例で提供されたいずれか1つの
リソーススケジューリング装置が実現可能な有益効果を実現できる。詳しくは、前述した実施例を参照すればよく、ここで説明を省略する。
【0251】
また、本願の実施例では、スケジューリングサーバが提供されている。このスケジューリングサーバは、本願の実施例におけるいずれか1つのスケジューラである。
図12には、本願の実施例に係るスケジューリングサーバの構成の模式図が示されている。具体的には、
このスケジューリングサーバは、1つ又は複数の処理コアのプロセッサ601、1つ又は複数のコンピュータ可読記憶媒体であるメモリ602、電源603、及び入力手段604などの構成要素を含んでもよい。当業者であれば理解できるように、
図12に示されたスケジューリングサーバの構成は、スケジューリングサーバを限定するものでなく、図示よりも多く若しくは少ない構成要素を含んでもよく、又はいくらかの構成要素を組み合わせたものであってもよく、又は構成要素の異なる配置を有してもよい。ここで、
プロセッサ601は、該スケジューリングサーバの制御センターであり、各種のインタフェース及び線路によってスケジューリングサーバ全体の各部分を接続し、メモリ602に記憶されたソフトウェアプログラム及び/又はモジュールを実行又は遂行して、メモリ602に記憶されたデータを呼び出すことにより、スケジューリングサーバの各種の機能を実行してデータを処理し、スケジューリングサーバを全体的に監視制御する。いくつかの実施例では、プロセッサ601は、1つ又は複数の処理コアを含んでもよい。プロセッサ601には、アプリケーションプロセッサ及び変復調プロセッサが統合されてもよい。ここで、アプリケーションプロセッサは、主にオペレーティングシステム、ユーザ画面、及びアプリケーションプログラムなどを処理し、変復調プロセッサは、主に無線通信を処理する。理解できるように、上記変復調プロセッサは、プロセッサ601に統合されなくてもよい。
【0252】
メモリ602は、ソフトウェアプログラム及びモジュールの記憶に使用可能である。プロセッサ601は、メモリ602に記憶された1つ又は複数のプログラム及びモジュールを実行することにより、各種の機能アプリケーション及びデータ処理を実行する。メモリ602は、主にプログラム記憶領域及びデータ記憶領域を含んでもよい。ここで、プログラム記憶領域には、オペレーティングシステム、少なくとも1つの機能に必要なアプリケーションプログラム(例えば、音声再生機能、画像再生機能など)などを記憶してもよい。データ記憶領域には、スケジューリングサーバの使用に応じて作成されたデータなどを記憶してもよい。また、メモリ602は、高速ランダムアクセスメモリを含んでもよいし、不揮発性メモリを含んでもよく、例えば、少なくとも1つの磁気ディスク記憶デバイス、フラッシュメモリデバイス、又はその他の揮発性ソリッドステート記憶デバイスであってもよい。これに応じて、メモリ602は、メモリコントローラをさらに含んでもよい。これにより、プロセッサ601によるメモリ602へのアクセスが提供される。
【0253】
スケジューリングサーバは、各構成要素に電力を提供する電源603をさらに含む。電源603は、電源管理システムを介して、プロセッサ601に論理的に接続されてもよい。これにより、電源管理システムを介して、充電、放電の管理、及び電力消費管理などの機能が実現される。電源603は、1つ又は複数の直流又は交流電源、再充電システム、電源故障検出回路、電源変換器又はインバータ、電源状態指示器などの任意の構成要素を含んでもよい。
【0254】
該スケジューリングサーバは、入力手段604をさらに含んでもよい。この入力手段604は、入力された数字や文字の情報を受信し、ユーザ設定及び機能制御に関するキーボード、マウス、ジョイスティック、光学又はトラックボールの信号入力を生成することに使用可能である。
【0255】
図示されていないが、スケジューリングサーバは、表示手段などをさらに含んでもよく、ここで説明を省略する。具体的には、本実施例では、スケジューリングサーバのプロセッサ601が、下記のような命令に従って、1つ又は複数のアプリケーションプログラムのプロセスに対応する実行可能ファイルをメモリ602にロードし、メモリ602に記憶されたアプリケーションプログラムをプロセッサ601が実行することにより、各種の機能を実現する。即ち、
作成する仮想マシンに対応する仮想マシン情報を取得し、共通リソース情報を取得し、共通リソース情報には、クラウドコンピューティングシステムのすべてのホストマシンに対応するホストマシン情報が含まれ、共通リソース情報及び仮想マシン情報に基づいて、予め設けられたリソース情報プライベートコピーを更新し、リソース情報プライベートコピーには、所定のホストマシンに対応するホストマシン情報が含まれ、リソース情報プライベートコピーに基づいて、仮想マシン情報を満たす少なくとも1つの候補ホストマシンを取得し、少なくとも1つの候補ホストマシンの中からターゲットホストマシンを取得し、ターゲットホストマシン上に仮想マシンを作成する。
【0256】
上記の各処理の具体的な実施は、前述した実施例を参照すればよく、ここで説明を省略する。
【0257】
上記から分かるように、本願の実施例では、スケジューリングサーバは、作成する仮想マシンに対応する仮想マシン情報を取得し、共通リソース情報を取得し、該共通リソース情報には、クラウドコンピューティングシステムのすべてのホストマシンに対応するホストマシン情報が含まれ、次に、共通リソース情報及び仮想マシン情報に基づいて、予め設けられたリソース情報プライベートコピーを更新し、該リソース情報プライベートコピーには、所定のホストマシンに対応するホストマシン情報が含まれ、最後に、リソース情報プライベートコピーに基づいて、仮想マシン情報を満たす少なくとも1つの候補ホストマシンを取得し、少なくとも1つの候補ホストマシンの中からターゲットホストマシンを取得し、ターゲットホストマシン上に仮想マシンを作成する。この構成によれば、リソーススケジューリングを行う前に、リソース情報プライベートコピーを適時に更新することが可能になり、リソース情報プライベートコピーと共通リソース情報との同期性が保証され、リソーススケジューリングの結果が良くなるとともに、リソーススケジューリングを行う際に待つ必要がなく、リソーススケジューリングの効率が向上する。
【0258】
当業者であれば理解できるように、上記実施例の各方法の手順の全部又は一部は、命令によって実行されたり、命令で関連のハードウェアを制御することにより実行されたりしてもよい。この命令は、コンピュータ可読記憶媒体に記憶され、プロセッサによってロード・実行されてもよい。
【0259】
このため、本願の実施例では、複数の命令を記憶した記憶媒体が提供されている。この命令は、プロセッサによってロードされることで、本願の実施例で提供されたいずれか1つのリソーススケジューリング方法のステップを実行させることが可能である。例えば、この命令は、
作成する仮想マシンに対応する仮想マシン情報を取得し、共通リソース情報を取得し、共通リソース情報には、クラウドコンピューティングシステムのすべてのホストマシンに対応するホストマシン情報が含まれ、共通リソース情報及び仮想マシン情報に基づいて、予め設けられたリソース情報プライベートコピーを更新し、リソース情報プライベートコピーには、所定のホストマシンに対応するホストマシン情報が含まれ、リソース情報プライベートコピーに基づいて、仮想マシン情報を満たす少なくとも1つの候補ホストマシンを取得し、少なくとも1つの候補ホストマシンの中からターゲットホストマシンを取得し、ターゲットホストマシン上に仮想マシンを作成する、ことを実行させることが可能である。
【0260】
上記の各処理の具体的な実施は、前述した実施例を参照すればよく、ここで説明を省略する。
【0261】
ここで、該記憶媒体は、読み出し専用メモリ(ROM:Read Only Memory)、ランダムアクセスメモリ(RAM:Random Access Memory)、磁気ディスク、又は光ディスクなどを含んでもよい。
【0262】
該記憶媒体に記憶された命令は、本願の実施例で提供されたいずれか1つのリソーススケジューリング方法のステップを実行させることが可能であるため、本願の実施例で提供されたいずれか1つのリソーススケジューリング方法が実現可能な有益効果を実現できる。詳しくは、前述した実施例を参照すればよく、ここで説明を省略する。
【0263】
上記は、本願の実施例で提供されたリソーススケジューリング方法、装置、クラウドコンピューティングシステム、及び記憶媒体を詳しく説明している。本明細書では、具体的な特定例を使用して、本願の原理及び実施形態を説明している。上記の実施例の説明は、本願の方法及びその中心となる思想の理解を助けるためにすぎない。また、当業者にとっては、本願の思想を踏まえると、具体的な実施形態及び適用範囲の両方に変更があり得る。要するに、本明細書の内容は、本願に対する制限として理解されるべきではない。