本発明は、2018年6月25日に中国専利局に提出された出願番号が201810659298.5である中国特許出願に対して優先権を主張するものであり、該出願の全ての内容を引用により本発明に援用する。
本発明は、コンピュータ技術分野に関し、例えば、プリエンプティブスケジューリングに基づくリソース共有使用方法、システムおよび装置に関する。
リソース共有の分散システムにおいて、複数のテナントがリソースを共有して使用し、それと同時に、各テナントがいずれも使用可能なリソースを有することを確保し、テナントのリソースが「餓死」となる現象がないように、各テナントが使用するリソースに対してある程度限定する必要がある。分散システムにおけるスケジューラは、複数のテナントの作業またはタスクを効果的にスケジューリングすることにより、各テナントの作業またはタスクが安定して迅速に実行されるとともに、分散システム内のリソースが十分に利用されることを確保する。
従来の分散管理システムは、複数のスケジューリングポリシーを提供することにより、複数のテナントのタスクが分散システムで物理的なノードにバランスよく割り当てられ、更に物理的なノードが割り当てられたタスクを実行することを確保する。しかし、タスクの処理方式には、リソースが十分に利用されていない現象が存在する。
本発明の実施例は、リソースの利用率を向上させることができる、プリエンプティブスケジューリングに基づくリソース共有使用方法、システムおよび装置を提供する。
第1態様において、本発明の実施例は、APIサーバがタスクの作成要求を取得することと、APIサーバが、前記タスクに対応するテナントの割り前に前記タスクの優先度とマッチングするリソースが含まれ、且つマッチングリソースが前記タスクの作成条件を満たすと検出した場合、前記作成要求に応じて前記タスクを作成することとを含む、タスク作成方法を提供する。
第2態様において、本発明の実施例は、スケジューラがタスクスケジューリングキューからスケジューリング待ちの現在のタスクを取得し、各物理的なノードにおける前記現在のタスクの優先度以上のタスクを取得し、ノード−タスクのマッピングテーブルを形成することと、前記スケジューラが前記マッピングテーブルおよび所定のスクリーニング条件に基づいて前記所定のスクリーニング条件に合致するターゲット物理的なノードを確定することと、前記スケジューラが前記現在のタスクと前記ターゲット物理的なノードとをバンディングし、バンディングした情報をAPIサーバに送信することとを含む、タスクスケジューリング方法を更に提供する。
第3態様において、本発明の実施例は、物理的なノードが実行待ちのターゲットタスクを処理する時、前記物理的なノードで実行しているタスクリストを取得することと、前記物理的なノードが、残りのリソースが前記ターゲットタスクの実行に必要なリソースを満たすか否かを検出することと、残りのリソースがターゲットタスクの実行に必要なリソースを満たさない場合、前記物理的なノードは、前記物理的なノードが前記タスクリストにおけるタスクを実行した後に得られる残りのリソースが前記ターゲットタスクの実行に必要なリソースを満たすまで、前記タスクリストにおける優先度が前記ターゲットタスクの優先度よりも低いタスクを、優先度の低い順で削除待ちのキューに順に移動し、前記ターゲットタスクを用いて前記削除待ちのキューにおけるタスクをプリエンプションすることと、前記物理的なノードが実行環境を呼び出し、前記ターゲットタスクを実行することとを含むタスクプリエンプション方法を更に提供する。
第4態様において、本発明の実施例は、APIサーバがタスクの作成要求を取得することと、前記APIサーバが、前記タスクに対応するテナントの割り前に前記タスクの優先度とマッチングするリソースが含まれ、且つマッチングリソースが前記タスクの作成条件を満たすと検出した場合、前記作成要求に応じて前記タスクを作成することと、スケジューラが前記APIサーバにより作成されたタスクを取得し、タスクスケジューリングキューを形成することと、前記スケジューラが前記タスクスケジューリングキューからスケジューリング待ちの現在のタスクを取得し、各物理的なノードにおける前記現在のタスクの優先度以上のタスクを取得し、ノード−タスクのマッピングテーブルを形成することと、前記スケジューラが前記マッピングテーブルおよび所定のスクリーニング条件に基づいて前記所定のスクリーニング条件に合致するターゲット物理的なノードを確定することと、前記スケジューラが前記現在のタスクと前記ターゲット物理的なノードとをバンディングし、バンディングした情報をAPIサーバに送信することと、物理的なノードが前記APIサーバにおけるタスクと物理的なノードとのバンディング情報を傍受し、傍受した前記バンディング情報に基づいて対応するタスクを取得し、タスクキューを形成することと、前記物理的なノードが前記タスクキューにおける実行待ちのターゲットタスクを処理する時、前記物理的なノードで実行しているタスクリストを取得することと、前記物理的なノードが、残りのリソースが前記ターゲットタスクの実行に必要なリソースを満たすか否かを検出することと、残りのリソースがターゲットタスクの実行に必要なリソースを満たさない場合、前記物理的なノードは、前記物理的なノードが前記タスクリストにおけるタスクを実行した後に得られる残りのリソースが前記ターゲットタスクの実行に必要なリソースを満たすまで、前記タスクリストにおける優先度が前記ターゲットタスクの優先度よりも低いタスクを、優先度の低い順で削除待ちのキューに順に移動し、ターゲットタスクを用いて前記削除待ちのキューにおけるタスクをプリエンプションすることと、前記物理的なノードが実行環境を呼び出し、前記ターゲットタスクを実行することとを含むプリエンプティブスケジューリングに基づくリソース共有使用方法を更に提供する。
第5態様において、本発明の実施例は、タスクの作成要求を取得するように構成される要求取得モジュールと、前記タスクに対応するテナントの割り前に前記タスクの優先度とマッチングするリソースが含まれ、且つマッチングリソースが前記タスクの作成条件を満たすと検出した場合、前記作成要求に応じて前記タスクを作成するように構成されるタスク作成モジュールとを備えるAPIサーバを更に提供する。
第6態様において、本発明の実施例は、タスクスケジューリングキューからスケジューリング待ちの現在のタスクを取得し、各物理的なノードにおける前記現在のタスクの優先度以上のタスクを取得し、ノード−タスクのマッピングテーブルを形成するよう構成されるマッピングテーブル形成モジュールと、前記マッピングテーブルおよび所定のスクリーニング条件に基づいて前記所定のスクリーニング条件に合致するターゲット物理的なノードを確定するように構成されるスクリーニングモジュールと、前記現在のタスクと前記ターゲット物理的なノードとをバンディングし、バンディングの情報をAPIサーバに送信するように構成されるバンディングモジュールとを備えるスケジューラを更に提供する。
第7態様において、本発明の実施例は、実行待ちのターゲットタスクを処理する時、前記物理的なノードで実行しているタスクリストを取得するように構成されるタスクリスト取得モジュールと、物理的なノードにおける残りのリソースが前記ターゲットタスクの実行に必要なリソースを満たすか否かを検出するように構成される検出モジュールと、残りのリソースがターゲットタスクの実行に必要なリソースを満たさない場合、前記物理的なノードが前記タスクリストにおけるタスクを実行して得られる残りのリソースが前記ターゲットタスクの実行に必要なリソースを満たすまで、前記タスクリストにおける優先度が前記ターゲットタスクの優先度よりも低いタスクを、優先度の低い順で削除待ちのキューに順に移動し、前記ターゲットタスクを用いて前記削除待ちのキューにおけるタスクをプリエンプションするように構成されるプリエンプションモジュールと、実行環境を呼び出し、前記ターゲットタスクを実行するように構成されるタスク実行モジュールとを備えるタスクプリエンプション装置を更に提供する。
第8態様において、本発明の実施例は、本発明の実施例に係るAPIサーバと、スケジューラと、タスクプリエンプション装置とを備えるプリエンプティブスケジューリングに基づくリソース共有使用システムを更に提供する。
第9態様において、本発明の実施例は、1つまたは複数のプロセッサと、1つまたは複数のプログラムを記憶するための記憶装置とを備える装置を更に提供する。
前記1つまたは複数のプログラムが前記1つまたは複数のプロセッサにより実行されると、前記1つまたは複数のプロセッサは、本発明の実施例に係るタスク作成方法、または本発明の実施例に係るタスクスケジューリング方法、または本発明の実施例に係るタスクプリエンプション方法を実現する。
第10態様において、本発明の実施例は、プロセッサにより実行されると、本発明の実施例に係るタスク作成方法、または本発明の実施例に係るタスクスケジューリング方法、または本発明の実施例に係るタスクプリエンプション方法を実現するコンピュータプログラムが記憶されているコンピュータ可読記憶媒体を提供する。
本発明の実施例に係る技術案は、テナントのリソース割り前に対して優先度を設定し、タスクの優先度と対応するテナントにおける各優先度のリソースとをマッチングすることにより、タスクを作成するか否かを確定し、テナントにリソースが逼迫している場合にリソースを優先的に使用させ、テナントが高優先度のリソースを悪用して低優先度のタスクがリソースを持続的に取得できなくて「餓死」という現象が現れることを防止することができる。スケジューラは、タスクの優先度および所定のスクリーニング条件により物理的なノードをスクリーニングし、最適な物理的なノードをスクリーニングし、スケジューリング待ちの現在のタスクを最適な物理的なノードにスケジューリングし、リソースが逼迫している場合、論理的なリソースプリエンプションのみを行い、リソースを直ちにプリエンプションせず、このようなプリエンプションを遅延させるスケジューリング方法は、論理的に高優先度のタスクにリソースを譲ることができ、リソースが十分に利用されていない場合、プリエンプションされたタスクを実行し続け、リソースの利用率を向上させることができる。物理的なノードが実行待ちのターゲットタスクを処理する時、物理的なノードの残りのリソースがターゲットタスクの実行に必要な条件を満たさないと、低優先度のタスクをプリエンプションすることに基づき、物理的なノードは重要なタスクを優先的に処理することができ、リソースの利用率を向上させることができる。
本発明の実施例に係るタスク作成方法のフローチャートである。
本発明の実施例に係るタスクスケジューリング方法のフローチャートである。
本発明の実施例に係るタスクスケジューリング方法のフローチャートである。
本発明の実施例に係るタスクプリエンプション方法のフローチャートである。
本発明の実施例に係るタスクプリエンプション方法のフローチャートである。
本発明の実施例に係るプリエンプティブスケジューリングに基づくリソース共有使用方法のフローチャートである。
本発明の実施例に係るAPIサーバの構造ブロック図である。
本発明の実施例に係るスケジューラの構造ブロック図である。
本発明の実施例に係るスケジューリングシステムの構造模式図である。
本発明の実施例に係るタスクプリエンプション装置の構造ブロック図である。
本発明の実施例に係るプリエンプティブスケジューリングに基づくリソース共有使用システムの構造ブロック図である。
本発明の実施例に係る装置の構造模式図である。
以下、図面および実施例を参照しながら本発明について説明する。ここで説明する具体的な実施例は本発明を解釈するためのものに過ぎず、本発明を限定するものではないことが理解できる。なお、説明の便宜上、図面において、全ての内容ではなく、本発明に関連する部分のみを示す。
図1は、本発明の実施例に係るタスク作成方法のフローチャートであり、前記方法は、アプリケーションプログラミングインタフェース(Application Programming Interface、API)サーバ(API Server)に適用でき、APIサーバにより実行され、該APIサーバは、クラスタ管理プラットフォームにおける1つのコンポーネントであってもよく、ソフトウェアおよび/またはハードウェアの形態で実現され、クラスタ管理プラットフォームは、クラスタにおける大量のリソースを管理するプラットフォームであってもよく、クラスタ管理プラットフォームは、KubernetesおよびMesosを含んでもよいが、これらに限定されず、且つ、複数のコンピュータ装置に集積できる。図1に示すように、本発明の実施例に係るタスク作成方法はS110〜S120を含む。
S110において、APIサーバがタスクの作成要求を取得する。
本発明の実施例に係る方法はクラスタに適用でき、クラスタには複数の物理的なノードが含まれてもよく、各物理的なノードにおけるリソースは複数のテナントの共有リソースであってもよく、複数の物理的なノードはクラスタ管理プラットフォームにより管理されてもよく、クラスタ管理プラットフォームはタスクを物理的なノードに割り当てて物理的なノードに対応するタスクを実行させる。クラスタ管理プラットフォームは複数のコンピュータ装置に集積でき、複数のコンピュータ装置はユーザが操作でき、ユーザはクラスタ管理プラットフォームに登録してタスクの作成要求を提出することができ、クラスタ管理プラットフォームにおけるAPIサーバはユーザにより提出されたタスクの作成要求を取得してタスクを作成する。クラスタ管理プラットフォームにおけるスケジューラはタスクスケジューリングを行い、タスクを対応する物理的なノードに合理的に割り当てる。物理的なノードは該タスクを実行する。
ここで、APIサーバはクラスタ管理プラットフォームにおける1つのコンポーネントであってもよく、タスクの作成を完了することができ、豊かな機能性プラグインを提供し、クラスタに対する管理等を完備する。
ここで、APIサーバは、ユーザが提出した1つのタスクの作成要求を取得することができ、例えば、ユーザが提出した1つのアプリケーションを作成する要求を取得することができる。ここで、ユーザがタスクの作成要求を提出する時、タスクの優先度を設定することができる。
S120において、APIサーバが、前記タスクに対応するテナントの割り前に前記タスクの優先度とマッチングするリソースが含まれ、且つマッチングリソースが前記タスクの作成条件を満たすと検出した場合、前記作成要求に応じて前記タスクを作成する。
ユーザが管理粒度で複数のグループに分けられ、各グループが1つのテナントと呼ばれ、必要に応じて各テナントに割り前を予め設定することができ、割り前は1グループのリソースであってもよく、例えば、該グループのリソースは、プロセッサ(Central Processing Unit、CPU)、メモリ、グラフィックプロセッサ(Graphics Processing Unit、GPU)、フィールドプログラマブルゲートアレイ(Field Programmable Gate Array、FPGA)、人工知能(Artificial Intelligence、AI)チップ、プロセッサの優先度およびメモリの優先度、GPU優先度、FPGA優先度、AIチップ優先度等を含んでもよく、各テナントにリソース割り前を予め設定することができる。割り前を合理的に設定することにより、適当な優先度のリソースを使用するようにテナントをグラントすることができ、テナントは、リソースが逼迫している場合にリソースを優先的に使用でき、更に、テナントが高優先度のリソースを悪用して低優先度のタスクがリソースを持続的に取得できなくて「餓死」の現象が現れることを制限することができる。
ユーザがクラスタ管理プラットフォームによりタスクの作成要求を提出する場合、各タスクには識別情報が担持され、APIサーバは、識別情報に基づいて各タスクに対応するテナントを識別し、該テナントの割り前に該タスクの優先度とマッチングするリソースが含まれるか否か判断し、該タスクの優先度とマッチングするリソースが含まれている場合、該マッチングリソースが該タスクの作成条件を満たすか否かを判断し続け、該マッチングリソースが該タスクの作成条件を満たすと、タスクを作成することができる。
作成条件はCPUの数および/またはメモリの占有率であってもよく、他の条件であってもよい。例えば、ユーザがタスクの作成要求を提出する時、クラスタ管理プラットフォームにより該タスクの優先度を高優先度とすることができ、すると、該タスクに必要なリソースの優先度も高優先度となり、例えば、該タスクは10個の高優先度のCPUを必要とする。該タスクに対応するテナントの割り前には高優先度のCPUが含まれ、且つ高優先度のCPUの数が10以上であれば、該タスクを作成する。
本発明の1つの実施形態において、好ましくは、本発明の実施例に係る方法はKubernetes環境に適用できる。前記サーバがタスクの作成要求を取得することは、APIサーバがタスクpodの作成要求を取得することを含む。APIサーバが、前記タスクに対応するテナントの割り前に前記タスクの優先度とマッチングするリソースが含まれ、且つマッチングリソースが前記タスクの作成条件を満たすと検出した場合、前記作成要求に応じて前記タスクを作成することは、前記APIサーバが、前記タスクpodに対応するテナントnamespaceの割り前quotaに前記podに対応する優先度とマッチングするリソースのquota値が含まれ、且つ該quota値が前記タスクpodの作成条件を満たすと検出した場合、APIサーバは前記作成要求に応じてpodを作成することを含む。
ここで、podは、kubernetesにおける最小に作成されて配置できる最も簡略な単位である。1つのpodは、クラスタ内で実行している1つのプロセスを表す。podはKubernetesにおけるコンポーネントであり、例えば、1つのアプリケーションを作成してもよく、1つのプロセス等を起動してもよい。podにアプリケーションのコンテナー(ある場合に、いくつかのコンテナー)がパッケージされ、該コンテナーは独立したネットワークIP、コンテナーがどのように実行するかを管理するポリシーオプション等を記憶することができる。ここで、podは配置された1つの単位を表し、kubernetesに適用される1つのインスタンスであり、1つまたは複数のコンテナーで組み合わせられてリソースを共有する可能性がある。ここで、1つのpodの作成は、1つのアプリケーションの作成等であってもよい。
ここで、Namespaceは、1グループのリソースおよびオブジェクトの抽象的な集合であり、例えば、kubernetesシステム内部のオブジェクトを異なる項目グループまたはユーザグループに分けるために使用でき、namespaceは、異なるテナントまたはユーザを隔離するために使用されることが多い。kubernetesにおいて、quotaは、リソース管理およびリソース制限を行うために使用でき、quota値の大きさは、リソースの多少を表すことができ、例えば、1つのテナントで設定されたリソースが20個の高優先度のCPUであれば、namespaceにおけるquota値は20であってもよく、即ち、quota値はリソースの数を表すことができる。
本発明の実施例に係るタスク作成方法は、タスクの作成要求を取得すると、タスクに対応するテナントの割り前にタスクの優先度とマッチングするリソースが含まれるか否かを検出し、且つタスクの優先度とマッチングするリソースがタスクの作成条件を満たすか否かを検出し、2つの条件がいずれも満たされる(対応するテナントの割り前に該タスクの優先度とマッチングするリソースが含まれているとともに、該リソースも該タスクの作成条件を満たす)場合、該タスクを作成し、本実施例は、テナントのリソース割り前に対して優先度を設定し、タスクの優先度と対応するテナントにおける各優先度のリソースとをマッチングすることにより、タスクを作成するか否かを確定し、テナントにリソースが逼迫している場合にリソースを優先的に使用させ、テナントが高優先度のリソースを悪用して低優先度のタスクがリソースを持続的に取得できなくて「餓死」という現象が現れることを防止することができる。
図2は、本発明の実施例に係るタスクスケジューリング方法のフローチャートであり、前記方法はスケジューラに適用でき、スケジューラはクラスタ管理プラットフォームのコンポーネントであってもよく、ソフトウェアおよび/またはハードウェアの形態で実現され、クラスタ管理プラットフォームは、クラスタにおける大量のハードウェアリソースを管理するプラットフォームであってもよく、クラスタ管理プラットフォームは、KubernetesおよびMesosを含んでもよいが、これらに限定されず、且つ、複数のコンピュータ装置に集積できる。本発明の実施例に係る方法は以下のような環境に適用できる。クラスタに複数の物理的なノードが含まれてもよく、複数の物理的なノードにおけるリソースは複数のテナントの共有リソースであってもよく、複数の物理的なノードはクラスタ管理プラットフォームにより管理されてもよく、クラスタ管理プラットフォームはタスクを物理的なノードに割り当てて物理的なノードに対応するタスクを実行させる。クラスタ管理プラットフォームは複数のコンピュータ装置に集積でき、複数のコンピュータ装置はユーザが操作でき、ユーザはクラスタ管理プラットフォームに登録してタスクの作成要求を提出することができ、クラスタ管理プラットフォームにおけるAPIサーバはユーザにより提出されたタスクの作成要求を取得してタスクを作成し、クラスタ管理プラットフォームにおけるスケジューラはタスクスケジューリングを行い、タスクを対応する物理的なノードに合理的に割り当て、物理的なノードが該タスクを実行する。ここで、本発明の実施例はスケジューラがタスクスケジューリングを行う段階に適用される。
図2に示すように、本発明の実施例に係る技術案はS210〜S230を含む。
S210において、スケジューラはタスクスケジューリングキューからスケジューリング待ちの現在のタスクを取得し、各物理的なノードにおける前記現在のタスクの優先度以上のタスクを取得し、ノード−タスクのマッピングテーブルを形成する。
ここで、スケジューラはクラスタ管理プラットフォームのコンポーネントであってもよく、APIサーバからAPIサーバで作成されたタスクを傍受し、APIサーバからタスクを読み取ることができ、読み取ったタスクがタスクスケジューリングキューを形成する。ここで、スケジューラはタスクスケジューリングキューにおけるタスクの順に従ってタスクをスケジューリングする。
物理的なノードは各種の物理マシンであってもよく、スケジューラは各物理的なノードからリソース情報(全てのリソースおよび使用可能なリソースを含む)および各物理的なノードで実行しているタスクキューを取得することができる。ここで、該タスクキューにおける各タスクはいずれも優先度を有する。スケジューラがタスクスケジューリングキューからスケジューリング待ちの現在のタスクを取得する時、各物理的なノードにおける現在のタスクの優先度以上のタスクを取得し、ノード−タスクのマッピングテーブルを形成する。例えば、現在のタスクの優先度が高優先度であり、物理的なノード1における高優先度以上のタスクがタスク1、タスク2およびタスク3を有する場合、スケジューラは物理的なノード1におけるタスク1、タスク2およびタスク3を取得し、ノード−タスクのマッピングテーブルを形成する。ここで、物理的なノードにおける現在のタスクの優先度以上のタスクは、物理的なノードで実行している現在のタスクの優先度以上のタスクと、物理的なノードにおける実行待ちの現在のタスクの優先度以上のタスクとを含む。
S220において、前記スケジューラは前記マッピングテーブルおよび所定のスクリーニング条件に基づいて前記所定のスクリーニング条件に最も合致するターゲット物理的なノードを確定する。
スケジューラはノード−タスクマッピングテーブルから所定のスクリーニング条件に基づいてスクリーニングを行い、所定のスクリーニング条件に最も合致するターゲット物理的なノードをスクリーニングする。ここで、所定のスクリーニング条件は、現在のタスクに必要なリソースと物理的なノードにおける残りのリソースとの間のマッチング条件、および現在のタスクに必要なポートと物理的なノードにおけるポートとの間のマッチング条件等を含んでもよい。
本発明の1つの実施形態において、好ましくは、前記スケジューラが前記マッピングテーブルおよび所定のスクリーニング条件に基づいて前記所定のスクリーニング条件に最も合致するターゲット物理的なノードを確定することは、前記スケジューラがマッピングテーブルから第1段階のスクリーニング条件に合致する物理的なノードをスクリーニングし、ノードグループを形成することと、マッピングテーブルおよび第2段階の好適な条件に基づき、前記ノードグループの物理的なノードをスコアリングし、スコアが最も高い物理的なノードをターゲット物理的なノードとしてスクリーニングすることとを含む。
ここで、第1段階のスクリーニング条件と第2段階の好適な条件とは異なる。例えば、第1段階のスクリーニング条件は、現在のタスクに必要なポートと物理的なノード上のポートとの間のマッチング条件、物理的なノードに特殊なタグがあるか否か等であってもよく、第2段階の好適な条件は、現在のタスクに必要なリソースと物理的なノードにおける残りのリソースとの間のマッチング条件であってもよく、且つ、第2段階の好適な条件は1つの条件を含んでもよいし、複数の条件を含んでもよい。第2段階の好適な条件が複数の条件を含む場合、各条件に重みを設け、重みに基づいて物理的なノードのスコアリングを確定してもよい。
該実施形態について例を挙げて説明し、第1段階のスクリーニング条件が、物理的なノードがGPUのタグを有する必要があることであれば、第2段階のスクリーニング条件は、現在のタスクに必要なリソースと物理的なノードにおける残りのリソースとの間のマッチング条件を予め設定することである。ノード−タスクマッピングテーブルおよび取得した物理的なノードの情報を照合し、スケジューラは、GPUを有する物理的なノードを選択し、ノードグループを形成する。スケジューラは、ノードグループ内の物理的なノードにおける残りのリソースが現在のタスクに必要なリソース条件を満たすか否かを判断し、条件を満たさない物理的なノードを除去し、現在のタスクに必要なリソース条件の物理的なノードをスコアリングし、物理的なノードにおける残りのリソースが多ければ多いほど、該物理的なノードのスコアは高くなることで、スコアが最も高い物理的なノードはターゲット物理的なノードである。ここで、ターゲット物理的なノードをスクリーニングする方法は上記方法を含むが、これらに限定されない。
上記2回のスクリーニングにより、スコアが最も高い物理的なノードをターゲット物理的なノードとしてスクリーニングし、即ち、スコアが最も高い物理的なノードを最適な物理的なノードとしてスクリーニングし、1回のスクリーニングの場合に対し、毎回のスクリーニング時のデータの処理量を減少してタスクスケジューリングの効率を向上させることができる。
S230において、前記スケジューラは前記現在のタスクと前記ターゲット物理的なノードとをバンディングし、バンディングした情報をAPIサーバに送信する。
スケジューラは、現在のタスクとスクリーニングした所定のスクリーニング条件に最も合致する物理的なノード(即ち、ターゲット物理的なノード)とをバンディングすることにより、バンディングした情報をAPIサーバに送信することで、各物理的なノードはAPIサーバからそれぞれが実行するタスクを読み取ることができる。
本発明の実施例のスケジューラは、タスクの優先度および所定のスクリーニング条件に基づいて複数の物理的なノードをスクリーニングし、各タスクに対応する最適な物理的なノード(即ち、ターゲット物理的なノード)をスクリーニングし、スケジューリング待ちの現在のタスクを最適な物理的なノードにスケジューリングする。リソースが逼迫している場合、論理的なリソースプリエンプションのみを行い、リソースを直ちにプリエンプションせず、このようなプリエンプションを遅延させるスケジューリング方法は、論理的に高優先度のタスクにリソースを譲ることができ、リソースが十分に利用されていない場合、プリエンプションされたタスクを保留し続け、リソースの利用率を向上させることができる。
図3は、本発明の実施例に係るタスクスケジューリング方法のフローチャートであり、ここで、該実施例に係る方法はkubernetesシステムに適用でき、図3に示すように、本実施例に係る技術案はS310〜S340を含む。
S310において、スケジューラはpodスケジューリングキューからスケジューリング待ちの現在のpodを取得し、各物理的なノードにおける前記現在のpodの優先度以上のpodを取得し、ノード−podのマッピングテーブルを形成する。
S320において、前記スケジューラはマッピングテーブルから第1段階のスクリーニング条件に合致する物理的なノードをスクリーニングし、ノードグループを形成する。
S330において、マッピングテーブルおよび第2段階の好適な条件に基づき、前記ノードグループの物理的なノードをスコアリングし、スコアが最も高い物理的なノードをターゲット物理的なノードとしてスクリーニングする。
S340において、前記スケジューラは前記現在のpodと前記ターゲット物理的なノードとをバンディングし、バンディングした情報をAPIサーバに送信する。
これにより、スケジューラは、タスクの優先度および所定のスクリーニング条件に基づいて物理的なノードをスクリーニングし、最適な物理的なノードをスクリーニングし、スケジューリング待ちの現在のタスクを最適な物理的なノードにスケジューリングする。リソースが逼迫している場合、論理的なのリソースプリエンプションのみを行い、リソースを直ちにプリエンプションせず、このようなプリエンプションを遅延させるスケジューリング方法は、論理的に高優先度のタスクにリソースを譲ることができ、リソースが十分に利用されていない場合、プリエンプションされたタスクを保留し続け、リソースの利用率を向上させることができる。
図4は、本発明の実施例に係るタスクプリエンプション方法のフローチャートであり、前記方法は、タスクプリエンプション装置により実行でき、前記装置はソフトウェアおよび/またはハードウェアで実現され、前記装置はコンピュータ装置に集積できる。本発明の実施例に係るタスクプリエンプション方法は、物理的なノードがタスクを処理するシーンに適用される。図4に示すように、本発明の実施例に係る技術案はS410〜S440を含む。
S410において、物理的なノードが実行待ちのターゲットタスクを処理する時、前記物理的なノードで実行しているタスクリストを取得する。
ここで、物理的なノードは、物理マシン等のようなコンピュータ装置であってもよい。物理的なノードは、APIサーバにおけるタスクと物理的なノードとのバンディング情報を傍受することにより対応するタスクを取得し、取得したタスクでタスクキューを形成することができる。物理的なノードは、タスクキューにおけるタスクの順序に応じて処理を順に行い、現在の処理のタスクは実行待ちのターゲットタスクと呼ばれる。物理的なノードが実行待ちのターゲットタスクを処理する時、物理的なノードは該物理的なノードで実行しているタスクリストを取得する。ここで、タスクリストには、物理的なノードで実行しているタスクの情報が記載されている。物理的なノードで実行しているタスクは1つであってもよいし、複数であってもよい。
S420において、前記物理的なノードは、残りのリソースが前記ターゲットタスクの実行に必要なリソースを満たすか否かを検出する。
物理的なノードが、残りのリソースがターゲットタスクの実行に必要なリソースを満たさないと検出した場合、S430を実行し、物理的なノードが、残りのリソースがターゲットタスクの実行に必要なリソースを満たすと検出した場合、S440を実行する。
本ステップにおいて、ターゲットタスクの実行に必要なリソースは、CPU、メモリ等を含んでもよい。物理的なノードの残りのリソースは、物理的なノードにおける使用可能なリソースと理解されてもよい。例えば、物理的なノードにおける残りのCPUの数が10個でメモリが1Gであり、ターゲットタスクの実行に必要なCPUが10でメモリが2Gであると、物理的なノードにおける残りのリソースはターゲットタスクの実行に必要なリソースを満たすことができない。
S430において、前記物理的なノードは、前記物理的なノードが前記タスクリストにおけるタスクを実行した後に得られる残りのリソースが前記ターゲットタスクの実行に必要なリソースを満たすまで、前記タスクリストにおける優先度が前記ターゲットタスクの優先度よりも低いタスクを、優先度の低い順で削除待ちのキューに順に移動し(該物理的なノードは、削除待ちのキューに移動されるタスクを実行しない)、前記ターゲットタスクを用いて前記削除待ちのキューにおけるタスクをプリエンプションする。
本ステップにおいて、物理的なノードが、残りのリソースがターゲットタスクの実行に必要なリソースを満たすことができると検出した場合、実行環境を直接呼び出し、ターゲットタスクを実行する。物理的なノードが、残りのリソースがターゲットタスクの実行に必要なリソースを満たすことができないと検出した場合、タスクリストにおけるタスクを優先度の低い順で順番付け、且つ、物理的なノードがタスクリストにおけるタスクを実行した後に得られる残りのリソースがターゲットタスクの実行に必要なリソースを満たすまで、優先度がターゲットタスクの優先度よりも低いタスクを、優先度の低い順で削除待ちのキューに移動し、ターゲットタスクを用いて削除待ちのキューにおけるタスクのリソースをプリエンプションし、即ち、削除待ちのキューにおけるタスクの実行を停止する。
タスクリストにおけるタスクを削除待ちのキューに移動する過程において、物理的なノードにおける残りのリソースがターゲットタスクの実行条件を満たさない場合、ターゲットタスクの実行を拒否する。
なお、タスクリストにおける優先度がターゲットタスクの優先度よりも低いタスクを削除待ちのキューに移動する過程において、削除待ちのキューにおけるタスクの実行を停止せず、物理的なノードがタスクリストにおけるタスクを実行した後に得られた残りのリソースがターゲットタスクの実行に必要なリソースを満たすと判断した場合、削除待ちのキュー中のタスクを実行する。
本ステップについて例を挙げて説明し、タスクリストには合計5つのタスク(物理的なノードで実行しているタスクが5つある)があり、それぞれA、B、C、DおよびEであれば、優先度はそれぞれ1、2、3、4および5であり、ここで、タスクリストにおけるタスクは優先度の低い順で順番付けると、A、B、C、DおよびEである。処理待ちのターゲットタスクの優先度は4である。物理的なノードにおける残りのリソースがターゲットタスクの実行に必要なリソース条件を満たすことができない場合、物理的なノードで実行しているタスクリストにおける優先度がターゲットタスクの優先度よりも低いタスク(それぞれA、BおよびC)を優先度の低い順で削除待ちのキューに順に移動し、即ち、まず、Aを削除待ちのキューに移動し、物理的なノードがタスクリストにおけるB、C、DおよびEを実行した後に得られる残りのリソースがターゲットタスクの実行に必要なリソース条件を満たすか否かを判断する。物理的なノードがタスクB、C、DおよびEを実行した後に得られる残りのリソースがターゲットタスクの実行に必要なリソース条件を満たす場合、ターゲットタスクを用いて実行しているAをプリエンプションし、即ち、Aを停止する。
Aを削除待ちのキューに移動した後、物理的なノードがタスクリストにおけるB、C、DおよびEを実行して得られる残りのリソースがターゲットタスクの実行に必要なリソース条件を満たさない場合、Bを削除待ちのキューに移動し続け、タスクリストにおけるタスクC、DおよびEを実行した後に得られる残りのリソースがターゲットタスクの実行に必要なリソース条件を満たすか否かを再び検出し、タスクリストにおけるタスクを実行した後に得られる残りのリソースがターゲットタスクの実行に必要なリソース条件を満たすと検出したまで上記判断ステップを繰り返す。タスクリストにおけるタスクの優先度がターゲットタスクの優先度以上である場合(即ち、タスクリストにおけるタスクA、BおよびCがいずれも移出待ちのキューに移動され、タスクDおよびEのみが残っている場合)、物理的なノードがタスクリストにおけるタスクDおよびEを実行した後に得られる残りのリソースがターゲットタスクの実行に必要なリソース条件を満たさないと、ターゲットタスクの実行を拒否する。
S440において、前記物理的なノードは実行環境を呼び出し、前記ターゲットタスクを実行する。
本発明の実施例は、物理的なノードが実行待ちのターゲットタスクを処理する時、物理的なノードの残りのリソースがターゲットタスクの実行に必要な条件を満たさないと、低優先度のタスクをプリエンプションし、物理的なノードは重要なタスクを優先的に処理することができ、リソースの利用率を向上させることができる。
上記実施例の基に、前記のタスクプリエンプション方法は、前記物理的なノードが設定時間おきにリソース使用情報を取得することと、前記物理的なノードが、前記リソース使用情報が所定の制限条件に達したことを確定した場合、前記物理的なノードが前記タスクリストにおけるタスクを実行した後に確定されるリソース使用情報が所定の制限条件に達していないまで前記タスクリストにおけるタスクを優先度の低い順で前記削除待ちのキューに移動し、前記削除待ちのキューにおけるタスクを停止する。
好ましくは、タスクリストにおけるタスクは現在の物理的なノードで実行しているタスクである。ここで、各物理的なノードは設定時間おきにリソース使用情報を取得し、リソースの使用情報が所定の制限条件に達したか否かを判断することで、タスクプリエンプションをトリガする必要があるか否かを判断する。リソースの使用情報が所定の制限条件に達すると、タスクプリエンプションをトリガし、リソース使用情報が所定の制限条件に達していないと、タスクプリエンプションをトリガする必要がない。タスクプリエンプションの過程は以下のとおりである。タスクリストにおけるタスクを優先度で順番付け、前記物理的なノードがタスクリストにおけるタスクを実行した後に確定されるリソース使用情報が所定の制限条件に達していないまでタスクリストにおけるタスクを優先度の低い順で削除待ちのキューに順に移動し、削除待ちのキューにおけるタスクを停止する。
ここで、所定の制限条件は、リソース使用が設定値に達することであってもよく、他の制限条件であってもよい。例えば、物理的なノードのリソース使用が設定値に達すると、タスクプリエンプションをトリガする。
これにより、物理的なノードは、リソース使用情報に基づいてタスクプリエンプションをトリガすることで、リソース利用率を向上させることができ、更に、リソースが逼迫している場合、低優先度のタスクからリソースをプリエンプションして重要なタスクを優先的に処理することができる。
図5は、本発明の実施例に係るタスクプリエンプション方法のフローチャートであり、本発明の実施例に係る方法はKubernetesシステムに実行される。図5に示すように、本発明の実施例に係る方法はS510〜S540を含む。
S510において、物理的なノードがkubeletにより実行待ちのターゲットpodを処理する時、前記物理的なノードで実行しているpodリストを取得する。
ここで、kubeletはKubernetesシステムのコンポーネントであり、pod、podのマウントに必要なvolumes、podをダウンロードするsecret、docker/rktによりpodにおけるコンテナーを実行すること、podにおけるコンテナーに定義されたlivenessプローブを周期的に実行すること、podの状態をシステムの他のコンポーネントに報告すること、およびノードの状態を監視することができる。
S520において、前記物理的なノードはkubeletにより、残りのリソースが前記ターゲットpodの実行に必要なリソースを満たすか否かを検出する。
物理的なノードが、残りのリソースがターゲットpodの実行に必要なリソースを満たさないと検出した場合、S530を実行し、物理的なノードが、残りのリソースがターゲットpod実行に必要なリソースを満たすと検出した場合、S540を実行する。
S530において、前記物理的なノードはkubeletにより、前記物理的なノードが前記podリストにおけるpodを実行した後に得られる残りのリソースが前記ターゲットpodの実行に必要なリソースを満たすまで、前記podリストにおける優先度が前記ターゲットpodの優先度よりも低いpodを、優先度の低い順で削除待ちのキューに順に移動し、前記ターゲットpodを用いて前記削除待ちのキューにおけるpodをプリエンプションする。
S540において、前記物理的なノードはkubeletにより実行環境を呼び出し、前記ターゲットpodを実行する。
これにより、物理的なノードが実行待ちのターゲットpodを処理する時、物理的なノードの残りのリソースがターゲットpodの実行に必要な条件を満たさないと、低優先度のpod(優先度はターゲットpodの優先度よりも低い)をプリエンプションし、物理的なノードは重要なタスク(本実施例において、該重要タスクとはターゲットpodを意味する)を優先的に処理してリソースの利用率を向上させることができる。
図6は、本発明の実施例に係るプリエンプティブスケジューリングに基づくリソース共有使用方法のフローチャートであり、前記方法は、プリエンプティブスケジューリングに基づくリソース共有使用システムにより実行され、前記システムは、ソフトウェアおよび/またはハードウェアで実現できる。本発明の実施例に係る方法はクラスタに適用でき、クラスタには複数の物理的なノードが含まれてもよく、各物理的なノードにおけるリソースは複数のテナントの共有リソースであってもよく、複数の物理的なノードはクラスタ管理プラットフォームにより管理されてもよく、タスクを物理的なノードに割り当てて物理的なノードに対応するタスクを実行させる。クラスタ管理プラットフォームは複数のコンピュータ装置に集積でき、複数のコンピュータ装置はユーザが操作でき、ユーザはクラスタ管理プラットフォームに登録してタスクの作成要求を提出することができ、クラスタ管理プラットフォームにおけるAPIサーバはユーザにより提出されたタスクの作成要求を取得してタスクを作成し、クラスタ管理プラットフォームにおけるスケジューラはタスクスケジューリングを行い、タスクを対応する物理的なノードに合理的に割り当て、物理的なノードが該タスクを実行する。
図6に示すように、本発明の実施例に係る技術案はS610〜S692を含む。
S610において、APIサーバはタスクの作成要求を取得する。
S620において、前記APIサーバが、前記タスクに対応するテナントの割り前に前記タスクの優先度とマッチングするリソースが含まれ、且つマッチングリソースが前記タスクの作成条件を満たすと検出した場合、前記作成要求に応じて前記タスクを作成する。
S630において、スケジューラは前記APIサーバにより作成されたタスクを取得し、タスクスケジューリングキューを形成する。
APIサーバはタスクの作成要求をリアルタイムに取得し、条件を満たした作成要求のためにタスクを作成する。そのため、APIサーバには少なくとも1つのタスクがある。スケジューラはAPIサーバが作成する全てのタスクを取得し、これらのタスクをタスクスケジューリングキューに形成する。
S640において、前記スケジューラは前記タスクスケジューリングキューからスケジューリング待ちの現在のタスクを取得し、各物理的なノードにおける前記現在のタスクの優先度以上のタスクを取得し、ノード−タスクのマッピングテーブルを形成する。
スケジューラは、タスクスケジューリングキューにおけるタスクの並び順に基づき、タスクを順にスケジューリングする。スケジューリング待ちの現在のタスクとは、タスクスケジューリングキューにおけるスケジューラが現在スケジューリングしているタスクを意味する。
S650において、前記スケジューラは前記マッピングテーブルおよび所定のスクリーニング条件に基づいて前記所定のスクリーニング条件に最も合致するターゲット物理的なノードを確定する。
S660において、前記スケジューラは前記現在のタスクと前記ターゲット物理的なノードとをバンディングし、バンディングした情報をAPIサーバに送信する。
スケジューラは、タスクスケジューリングキューにおけるタスクをスケジューリングし、タスクスケジューリングキューにおける各タスクとそれに対応するターゲット物理的なノードとのバンディング情報を取得する。
S670において、物理的なノードは前記APIサーバにおけるタスクと物理的なノードとのバンディング情報を傍受することにより、対応するタスクを取得し、タスクキューを形成する。
物理的なノードは、APIサーバにおけるバンディング情報を傍受し、バンディング情報におけるターゲット物理的なノードにより、該物理的なノードに対応するタスクを確定する。該タスクは1つであってもよいし、複数であってもよく、これらのタスクをタスクキューに形成する。
S680において、前記物理的なノードが前記タスクキューにおける実行待ちのターゲットタスクを処理する時、前記物理的なノードで実行しているタスクリストを取得する。
物理的なノードは、タスクキューにおけるタスクの並び順に基づき、タスクを順に処理する。実行待ちのターゲットタスクとは、タスクキューにおける物理的なノードが現在処理しているタスクを意味する。
S690において、前記物理的なノードは、残りのリソースが前記ターゲットタスクの実行に必要なリソースを満たすか否かを検出する。
物理的なノードが、残りのリソースがターゲットタスクの実行に必要なリソースを満たさないと検出した場合、S691を実行し、物理的なノードが、残りのリソースがターゲットタスクの実行に必要なリソースを満たすと検出した場合、S692を実行する。
S691において、前記物理的なノードは、前記物理的なノードが前記タスクリストにおけるタスクを実行して得る残りのリソースが前記ターゲットタスクの実行に必要なリソースを満たすまで、前記タスクリストにおける優先度が前記ターゲットタスクよりも低いタスクを、優先度の低い順で削除待ちのキューに移動し、ターゲットタスクを用いて前記削除待ちのキューにおけるタスクをプリエンプションする。
S692において、前記物理的なノードは実行環境を呼び出し、前記ターゲットタスクを実行する。
関連技術のKubernetes 1.3バージョンは、サービス品質(Quality Of Service)のリソース共有形態に基づき、共有リソースを管理するために使用され、サービス品質は高い順でそれぞれGuarantee、BurstableおよびBest Effortである。ここで、Best Effortのタスクは、クラスタリソースが十分に使用されていない場合にスケジューリングされて実行できる。クラスタリソースが逼迫している場合、Best Effortのタスクは優先的にプリエンプションされる。このような形態は、タスクスケジューリングの一環を考慮したことがなく、クラスタのスケジューリングが満了した場合、高いサービス品質のタスクにリソースを譲ることができず、且つテナント内のBest Effortタスクの数を制限することができず、Best Effortタスクのプリエンプションされる順を区別することができない。
関連技術のKubernetes 1.8バージョンに導入された優先度に基づくスケジューリング形態は、タスクの優先度を設定することができ、リソースが逼迫している場合、スケジューラは低優先度のタスクをプリエンプションし、高優先度のタスクに十分なリソースを提供する。しかし、該形態において、タスクのプリエンプションはスケジューラで発生し、即ち、クラスタロジックのスケジューリングが満了した時に発生し、クラスタにはリソースが十分に利用されていない場合があり、リソースの利用率は高くなく、且つ各優先度のタスクの数を正確に制限することができない。
関連技術におけるスケジューリング形態に対し、本発明の実施例に係る方法は、テナントのリソース割り前に対して優先度を設定し、各テナントにおける複数種の優先度のタスクの数を正確に制限することができ、タスクの優先度の設定により、タスクがプリエンプションされる時、タスクのプリエンプションされる順を区別することができる。本発明の実施例において、優先度に基づくタスクプリエンプションは物理的なノードで発生し、スケジューラで発生することがなく、論理的には高優先度のタスクにリソースを譲ることができ、リソースが十分に利用されていない場合、プリエンプションされたタスクを実行し続け、リソースの利用率を向上させることができる。
本発明の実施例に係る方法は、テナントのリソース割り前に対して優先度を設定し、タスクの優先度と対応するテナントにおける複数の優先度のリソースとをマッチングすることにより、タスクを作成するか否かを確定し、テナントにリソースが逼迫している場合にリソースを優先的に使用させ、テナントが高優先度のリソースを悪用して低優先度のタスクがリソースを持続的に取得できなくて「餓死」という現象が現れることを防止することができる。スケジューラは、タスクの優先度および所定のスクリーニング条件に基づいて物理的なノードをスクリーニングし、最適な物理的なノードをスクリーニングし、スケジューリング待ちの現在のタスクを最適な物理的なノードにスケジューリングし、リソースが逼迫している場合、論理的なのリソースプリエンプションのみを行い、リソースを直ちにプリエンプションせず、このようなプリエンプションを遅延させるスケジューリング方法は、論理的に高優先度のタスクにリソースを譲ることができ、リソースが十分に利用されていない場合、プリエンプションされたタスクを実行し続け、リソースの利用率を向上させることができる。物理的なノードが実行待ちのターゲットタスクを処理する時、物理的なノードの残りのリソースがターゲットタスクの実行に必要な条件を満たさないと、低優先度のタスクをプリエンプションすることに基づき、物理的なノードは重要なタスクを優先的に処理し、リソースの利用率を向上させることができる。
図7は、本発明の実施例に係るAPIサーバの構造ブロック図であり、図7に示すように、前記APIサーバは、要求取得モジュール710と、タスク作成モジュール720とを備える。
要求取得モジュール710は、タスクの作成要求を取得するように構成される。
タスク作成モジュール720は、前記タスクに対応するテナントの割り前に前記タスクの優先度とマッチングするリソースが含まれ、且つマッチングリソースが前記タスクの作成条件を満たすと検出した場合、前記作成要求に応じて前記タスクを作成するように構成される。
好ましくは、前記装置はKubernetesシステムに適用され、要求取得モジュール710は、podの作成要求を取得するように構成される。
タスク作成モジュール720は、前記podに対応するnamespaceのquotaに前記podの優先度とマッチングするリソースquota値が含まれ、且つquota値が前記podの作成条件を満たすと検出した場合、前記作成要求に応じてpodを作成するように構成される。
上記タスク作成装置は、本発明のいずれかの実施例に係るタスク作成方法を実行でき、タスク作成方法の実行に対応する機能モジュールおよび有益な効果を有する。
図8aは、本発明の実施例に係るスケジューラの構造ブロック図であり、図8aに示すように、前記スケジューラは、マッピングテーブル形成モジュール810と、スクリーニングモジュール820と、バンディングモジュール830とを備える。
マッピングテーブル形成モジュール810は、タスクスケジューリングキューからスケジューリング待ちの現在のタスクを取得し、各物理的なノードにおける前記現在のタスクの優先度以上のタスクを取得し、ノード−タスクのマッピングテーブルを形成するように構成される。
スクリーニングモジュール820は、前記マッピングテーブルおよび所定のスクリーニング条件に基づいて前記所定のスクリーニング条件に最も合致するターゲット物理的なノードを確定するように構成される。
バンディングモジュール830は、前記現在のタスクと前記ターゲット物理的なノードとをバンディングし、バンディングの情報をAPIサーバに送信するように構成される。
好ましくは、スクリーニングモジュール820は、
前記マッピングテーブルから第1段階のスクリーニング条件に合致する物理的なノードをスクリーニングし、ノードグループを形成し、
前記マッピングテーブルおよび第2段階の好適な条件に基づき、前記ノードグループの物理的なノードをスコアリングし、スコアが最も高い物理的なノードをターゲット物理的なノードとしてスクリーニングするように構成される。
好ましくは、前記装置はKubernetesシステムに適用され、マッピングテーブル形成モジュール810は、podスケジューリングキューからスケジューリング待ちの現在のpodを取得し、各物理的なノードにおける前記現在のpodの指定優先度以上のpodを取得し、ノード−podのマッピングテーブルを形成するように構成される。
それに対応し、バンディングモジュール830は、前記現在のpodと前記ターゲット物理的なノードとをバンディングし、バンディングの情報をAPIサーバに送信するように構成される。
ここで、スケジューラ構造は他の構造形式であってもよく、タスクスケジューリング方法を実行できればよい。例えば、スケジューラにはスケジューリングシステムが含まれ、図8bに示すように、スケジューリングシステムは、ノード情報リスト840と、スクリーニングアルゴリズムライブラリ850と、好適なアルゴリズムライブラリ860と、スケジューリングされていないキュー870という4つの部分を含んでもよい。
ここで、ノード情報リスト840は、物理的なノードにおけるリソース情報(全てのリソースおよび使用可能なリソース)および物理的なノードで実行しているタスクキューを含む現在の使用可能な物理的なノード情報を記載するように構成される。この部分の情報はスケジューリング方法を指定する際にキーとなる情報であり、スケジューリングシステムがリソースおよびタスクを全面的に認知することを確保するために、リアルタイムかつ同期する必要がある。
スクリーニングアルゴリズムライブラリ850は、複数種の物理的なノードをスクリーニングするアルゴリズムを予め定義し、タスク実行条件を満たさない物理的なノードを除去することを確保するように構成される。
好適なアルゴリズムライブラリ860は、複数種の好適なノードのアルゴリズムおよびアルゴリズムの重みを予め定義するように構成され、好適なアルゴリズムで計算されたスコアが最も高い物理的なノードは、スケジューリングノード、即ち、ターゲット物理的なノードとして選択される。
スケジューリングキュー870は、スケジューリングされていないタスクで形成されたキューとして構成され、高優先度のタスクが先にスケジューリングされることを確保するための1つの優先度キューである。
上記装置は、本発明のいずれかの実施例に係るタスクスケジューリング方法を実行することができ、タスクスケジューリング方法の実行に対応する機能モジュールおよび有益な効果を備える。
図9は、本発明の実施例に係るタスクプリエンプション装置の構造ブロック図であり、図9に示すように、前記タスクプリエンプション装置は、タスクリスト取得モジュール910と、検出モジュール920と、プリエンプションモジュール930と、タスク実行モジュール940とを備える。
ここで、タスクリスト取得モジュール910は、実行待ちのターゲットタスクを処理する時、前記物理的なノードで実行しているタスクリストを取得するように構成される。
検出モジュール920は、物理的なノードにおける残りのリソースが前記ターゲットタスクの実行に必要なリソースを満たすか否かを検出するように構成される。
プリエンプションモジュール930は、物理的なノードにおける残りのリソースがターゲットタスクの実行に必要なリソースを満たさない場合、前記物理的なノードは、前記物理的なノードが前記タスクリストにおけるタスクを実行した後に得られる残りのリソースが前記ターゲットタスクの実行に必要なリソースを満たすまで、前記タスクリストにおける優先度が前記ターゲットタスクよりも低いタスクを、優先度の低い順で削除待ちのキューに順に移動し(即ち、優先度の低い順でタスクをタスクリストから順に移出する)、前記ターゲットタスクを用いて前記削除待ちのキューにおけるタスクをプリエンプションするように構成される。
タスク実行モジュール940は、前記物理的なノードが実行環境を呼び出し、前記ターゲットタスクを実行するように構成される。
好ましくは、前記プリエンプションモジュールは、更に、設定時間おきにリソース使用情報を取得するように構成されてもよい。
前記リソース使用情報が所定の制限条件に達したことを確定すると、前記物理的なノードが前記タスクリストにおけるタスクを実行した後に確定されるリソース使用情報が所定の制限条件に達していないまで前記タスクリストにおけるタスクを優先度の低い順で前記削除待ちのキューに順に移動し、前記削除待ちのキューにおけるタスクを停止する。
好ましくは、前記装置はKubernetesシステムに適用され、前記ターゲットタスクはターゲットpodであり、前記タスクリストはpodリストであり、前記タスクリストにおけるタスクは前記物理的なノードで実行しているpodである。
上記装置は、本発明のいずれかの実施例に係るタスクプリエンプション方法を実行でき、タスクプリエンプション方法の実行に対応する機能モジュールおよび有益な効果を備える。
図10は、本発明の実施例に係るタスクプリエンプションシステムの構造模式図であり、図10に示すように、前記タスクプリエンプションシステムは、上記実施例に係るAPIサーバ1010と、上記実施例に係るスケジューラ1020と、上記実施例に係るタスクプリエンプション装置1030とを備える。
好ましくは、APIサーバ1010およびスケジューラ1020はそれぞれクラスタ管理プラットフォームのコンポーネントであり、クラスタ管理プラットフォームはユーザが使用するコンピュータ装置に集積される。タスクプリエンプション装置1030は物理的なノードにおける物理マシンに集積されてもよい。
図11は、本発明の実施例に係る装置の構造模式図であり、図11に示すように、該装置は、1つまたは複数のプロセッサ1110(図11では1つのプロセッサ1110を例とする)と、メモリ1120とを備える。
前記装置は、入力装置1130と、出力装置1140とを更に備えてもよい。
前記装置におけるプロセッサ1110、メモリ1120、入力装置1130および出力装置1140は、バスまたは他の方式により接続でき、図11ではバスによる接続を例とする。
メモリ1120は、非一時的コンピュータ可読記憶媒体として、本発明の実施例におけるタスク作成方法に対応するプログラム命令/モジュール(例えば、図面7に示す要求取得モジュール710およびタスク作成モジュール720)、または本発明の実施例におけるタスクスケジューリング方法に対応するプログラム命令/モジュール(例えば、図面8に示すマッピングテーブル形成モジュール810、スクリーニングモジュール820およびバンディングモジュール830)、または本発明の実施例におけるタスクプリエンプション方法に対応するプログラム命令/モジュール(例えば、図面9に示すタスクリスト取得モジュール910、検出モジュール920、プリエンプションモジュール930およびタスク実行モジュール940)のようなソフトウェアプログラム、コンピュータ実行可能プログラムおよびモジュールを記憶するために使用できる。プロセッサ1110は、メモリ1120に記憶されたソフトウェアプログラム、命令およびモジュールを実行することにより、コンピュータ装置の様々な機能アプリケーションおよびデータ処理を実行し、即ち、APIサーバがタスクの作成要求を取得することと、APIサーバが、前記タスクに対応するテナントの割り前に前記タスクの優先度とマッチングするリソースが含まれ、且つマッチングリソースが前記タスクの作成条件を満たすと検出した場合、前記作成要求に応じて前記タスクを作成することとを含む上記方法実施例のタスク作成方法を実現する。
または、プロセッサ1110は、メモリ1120に記憶されたソフトウェアプログラム、命令およびモジュールを実行することにより、スケジューラがタスクスケジューリングキューからスケジューリング待ちの現在のタスクを取得し、各物理的なノードにおける前記現在のタスクの優先度以上のタスクを取得し、ノード−タスクのマッピングテーブルを形成することと、前記スケジューラが前記マッピングテーブルおよび所定のスクリーニング条件に基づいて前記所定のスクリーニング条件に最も合致するターゲット物理的なノードを確定することと、前記スケジューラが前記現在のタスクと前記ターゲット物理的なノードとをバンディングし、バンディングした情報をAPIサーバに送信することとを含む上記方法の実施例のタスクスケジューリング方法を実現する。
または、プロセッサ1110は、メモリ1120に記憶されたソフトウェアプログラム、命令およびモジュールを実行することにより、物理的なノードが実行待ちのターゲットタスクを処理する時、前記物理的なノードで実行しているタスクリストを取得することと、前記物理的なノードが、残りのリソースが前記ターゲットタスクの実行に必要なリソースを満たすか否かを検出することと、物理的なノードが、残りのリソースがターゲットタスクの実行に必要なリソースを満たさないと検出した場合、前記物理的なノードは、前記物理的なノードが前記タスクリストにおけるタスクを実行した後に得られる残りのリソースが前記ターゲットタスクの実行に必要なリソースを満たすまで、前記タスクリストにおける優先度が前記ターゲットタスクの優先度よりも低いタスクを、優先度の低い順で削除待ちのキューに順に移動し、前記ターゲットタスクを用いて前記削除待ちのキューにおけるタスクをプリエンプションすることと、前記物理的なノードが実行環境を呼び出し、前記ターゲットタスクを実行することとを含む上記方法の実施例のタスクプリエンプション方法を実現する。
メモリ1120は、プログラム記憶エリアおよびデータ記憶エリアを含んでもよく、ここで、プログラム記憶エリアはオペレーティングシステム、少なくとも1つの機能に必要なアプリケーションプログラムを記憶することができ、データ記憶エリアは、コンピュータ装置の使用に基づいて作成されたデータ等を記憶することができる。また、メモリ1120は高速ランダムアクセスメモリを含んでもよく、少なくとも1つの磁気ディスク記憶装置、フラッシュメモリ装置、または他の非一時的固体記憶装置のような非一時的メモリを更に含んでもよい。好ましくは、いくつかの実施例において、メモリ1120は、プロセッサ1110に対して遠隔に設けられたメモリを含んでもよく、これらのリモートメモリは、ネットワークを介して端末装置に接続することができる。上記ネットワークのインスタンスは、インターネット、イントラネット、ローカルエリアネットワーク、移動体通信ネットワークおよびその組み合わせを含むが、これらに限定されない。
入力装置1130は、入力された数字または文字情報を受信し、およびコンピュータ装置のユーザ設定および機能制御に関連するキー信号入力を生じるために使用できる。出力装置1140はディスプレイ等の表示装置を含んでもよい。
本発明の実施例は、コンピュータプログラムが記憶されているコンピュータ可読記憶媒体を提供し、該プログラムがプロセッサにより実行されると、タスクの作成要求を取得することと、前記タスクに対応するテナントの割り前に前記タスクの優先度とマッチングするリソースが含まれ、且つマッチングリソースが前記タスクの作成条件を満たすと検出し場合、前記作成要求に応じて前記タスクを作成することとを含む本発明の実施例に係るタスク作成方法を実現する。
または、該プログラムがプロセッサにより実行されると、スケジューラがタスクスケジューリングキューからスケジューリング待ちの現在のタスクを取得し、各物理的なノードにおける前記現在のタスクの優先度以上のタスクを取得し、ノード−タスクのマッピングテーブルを形成することと、前記スケジューラが前記マッピングテーブルおよび所定のスクリーニング条件に基づいて前記所定のスクリーニング条件に最も合致するターゲット物理的なノードを確定することと、前記スケジューラが前記現在のタスクと前記ターゲット物理的なノードとをバンディングし、バンディングした情報をAPIサーバに送信することとを含む上記方法の実施例のタスクスケジューリング方法を実現する。
または、該プログラムがプロセッサにより実行されと、物理的なノードが実行待ちのターゲットタスクを処理する時、前記物理的なノードで実行しているタスクリストを取得することと、前記物理的なノードが、残りのリソースが前記ターゲットタスクの実行に必要なリソースを満たすか否かを検出することと、物理的なノードが、残りのリソースがターゲットタスクの実行に必要なリソースを満たさないと検出した場合、前記物理的なノードは、前記物理的なノードが前記タスクリストにおけるタスクを実行した後に得られる残りのリソースが前記ターゲットタスクの実行に必要なリソースを満たすまで、前記タスクリストにおける優先度が前記ターゲットタスクの優先度よりも低いタスクを、優先度の低い順で削除待ちのキューに順に移動し、前記ターゲットタスクを用いて前記削除待ちのキューにおけるタスクをプリエンプションすることと、前記物理的なノードが実行環境を呼び出し、前記ターゲットタスクを実行することとを含む上記方法実施例のタスクプリエンプション方法を実現する。
1つまたは複数のコンピュータ可読信号媒体の任意の組み合わせを採用してもよい。コンピュータ可読信号媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体であってもよい。コンピュータ可読記憶媒体は、例えば、電気、磁気、光、電磁、赤外線、または半導体のシステム、装置もしくは装置、または以上の任意の組み合わせであってもよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例(非網羅的なリスト)は、1つまたは複数の導線を有する電気的接続、携帯型コンピュータ磁気ディスク、ハードディスク、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、消去可能なプログラマブル読み出し専用メモリ(EPROMまたはフラッシュメモリ)、光ファイバ、携帯型コンパクト磁気ディスク読み出し専用メモリ(CD−ROM)、光記憶装置、磁気記憶装置、または上記任意の適当な組み合わせを含む。本明細書において、コンピュータ可読記憶媒体は、プログラムを含むまたは記憶する任意の有形媒体であってもよく、該プログラムは、命令実行システム、装置または装置により使用されてもよく、それと合わせて使用されてもよい。
コンピュータ可読信号媒体は、ベースバンドでまたはキャリアの一部として伝播するデータ信号を含んでもよく、その中にコンピュータ可読プログラムコードが担持されている。このような伝播するデータ信号は様々な形式を採用することができ、電磁信号、光信号または上記任意の適当な組み合わせを含むが、これらに限定されない。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体以外の任意のコンピュータ可読信号媒体であってもよく、該コンピュータ可読信号媒体は、命令実行システム、装置または装置に使用されるまたはそれと合わせて使用されるプログラムを送信、伝播または伝送することができる。
コンピュータ可読信号媒体に含まれるプログラムコードは、任意の適当な媒体で伝送でき、無線、電線、光ケーブル、RF等、または上記任意の適当な組み合わせを含むが、これらに限定されない。
本発明の操作を実行するためのコンピュータプログラムコードは、1種または複数種のプログラミング言語またはその組み合わせでプログラミングすることができ、前記プログラミング言語は、Java、Smalltalk、C++のようなオブジェクト指向プログラミング言語を含み、「C」言語または類似するプログラミング言語のような通常の手続き型プログラミング言語を更に含む。プログラムコードは、完全にユーザコンピュータで実行されてもよく、一部がユーザコンピュータで実行されてもよく、1つの独立したソフトウェアパッケージとして実行されてもよく、一部がユーザコンピュータで一部がリモートコンピュータで実行されてもよく、または完全にリモートコンピュータまたはサーバで実行されてもよい。リモートコンピュータに関する場合に、リモートコンピュータは、ローカルエリアネットワーク(LAN)または広域ネットワーク(WAN)を含む任意種のネットワークを介してユーザコンピュータに接続でき、または、外部のコンピュータ(例えば、インターネットサービスを提供するプロバイダを利用してインターネットを介して接続される)に接続できる。
本発明は、2018年6月25日に中国専利局に提出された出願番号が201810659298.5である中国特許出願に対して優先権を主張するものであり、該出願の全ての内容を引用により本発明に援用する。
本発明は、コンピュータ技術分野に関し、例えば、タスクスケジューリング方法、プリエンプティブスケジューリングに基づくリソース共有使用方法およびシステム、スケジューラ、装置、ならびにコンピュータ可読記憶媒体に関する。
リソース共有の分散システムにおいて、複数のテナントがリソースを共有して使用し、それと同時に、各テナントがいずれも使用可能なリソースを有することを確保し、テナントのリソースが「餓死」となる現象がないように、各テナントが使用するリソースに対してある程度限定する必要がある。分散システムにおけるスケジューラは、複数のテナントの作業またはタスクを効果的にスケジューリングすることにより、各テナントの作業またはタスクが安定して迅速に実行されるとともに、分散システム内のリソースが十分に利用されることを確保する。
従来の分散管理システムは、複数のスケジューリングポリシーを提供することにより、複数のテナントのタスクが分散システムで物理的なノードにバランスよく割り当てられ、更に物理的なノードが割り当てられたタスクを実行することを確保する。しかし、タスクの処理方式には、リソースが十分に利用されていない現象が存在する。
本発明の実施例は、リソースの利用率を向上させることができる、プリエンプティブスケジューリングに基づくリソース共有使用方法、システムおよび装置を提供する。
第1態様において、本発明の実施例は、APIサーバがタスクの作成要求を取得することと、APIサーバが、前記タスクに対応するテナントの割り前に前記タスクの優先度とマッチングするリソースが含まれ、且つマッチングリソースが前記タスクの作成条件を満たすと検出した場合、前記作成要求に応じて前記タスクを作成することとを含む、タスク作成方法を提供する。
第2態様において、本発明の実施例は、スケジューラがタスクスケジューリングキューからスケジューリング待ちの現在のタスクを取得し、各物理的なノードにおける前記現在のタスクの優先度以上のタスクを取得し、ノード−タスクのマッピングテーブルを形成することと、前記スケジューラが前記マッピングテーブルおよび所定のスクリーニング条件に基づいて前記所定のスクリーニング条件に合致するターゲット物理的なノードを確定することと、前記スケジューラが前記現在のタスクと前記ターゲット物理的なノードとをバンディングし、バンディングした情報をAPIサーバに送信することとを含む、タスクスケジューリング方法を更に提供する。
第3態様において、本発明の実施例は、物理的なノードが実行待ちのターゲットタスクを処理する時、前記物理的なノードで実行しているタスクリストを取得することと、前記物理的なノードが、残りのリソースが前記ターゲットタスクの実行に必要なリソースを満たすか否かを検出することと、残りのリソースがターゲットタスクの実行に必要なリソースを満たさない場合、前記物理的なノードは、前記物理的なノードが前記タスクリストにおけるタスクを実行した後に得られる残りのリソースが前記ターゲットタスクの実行に必要なリソースを満たすまで、前記タスクリストにおける優先度が前記ターゲットタスクの優先度よりも低いタスクを、優先度の低い順で削除待ちのキューに順に移動し、前記ターゲットタスクを用いて前記削除待ちのキューにおけるタスクをプリエンプションすることと、前記物理的なノードが実行環境を呼び出し、前記ターゲットタスクを実行することとを含むタスクプリエンプション方法を更に提供する。
第4態様において、本発明の実施例は、APIサーバがタスクの作成要求を取得することと、前記APIサーバが、前記タスクに対応するテナントの割り前に前記タスクの優先度とマッチングするリソースが含まれ、且つマッチングリソースが前記タスクの作成条件を満たすと検出した場合、前記作成要求に応じて前記タスクを作成することと、スケジューラが前記APIサーバにより作成されたタスクを取得し、タスクスケジューリングキューを形成することと、前記スケジューラが前記タスクスケジューリングキューからスケジューリング待ちの現在のタスクを取得し、各物理的なノードにおける前記現在のタスクの優先度以上のタスクを取得し、ノード−タスクのマッピングテーブルを形成することと、前記スケジューラが前記マッピングテーブルおよび所定のスクリーニング条件に基づいて前記所定のスクリーニング条件に合致するターゲット物理的なノードを確定することと、前記スケジューラが前記現在のタスクと前記ターゲット物理的なノードとをバンディングし、バンディングした情報をAPIサーバに送信することと、物理的なノードが前記APIサーバにおけるタスクと物理的なノードとのバンディング情報を傍受し、傍受した前記バンディング情報に基づいて対応するタスクを取得し、タスクキューを形成することと、前記物理的なノードが前記タスクキューにおける実行待ちのターゲットタスクを処理する時、前記物理的なノードで実行しているタスクリストを取得することと、前記物理的なノードが、残りのリソースが前記ターゲットタスクの実行に必要なリソースを満たすか否かを検出することと、残りのリソースがターゲットタスクの実行に必要なリソースを満たさない場合、前記物理的なノードは、前記物理的なノードが前記タスクリストにおけるタスクを実行した後に得られる残りのリソースが前記ターゲットタスクの実行に必要なリソースを満たすまで、前記タスクリストにおける優先度が前記ターゲットタスクの優先度よりも低いタスクを、優先度の低い順で削除待ちのキューに順に移動し、ターゲットタスクを用いて前記削除待ちのキューにおけるタスクをプリエンプションすることと、前記物理的なノードが実行環境を呼び出し、前記ターゲットタスクを実行することとを含むプリエンプティブスケジューリングに基づくリソース共有使用方法を更に提供する。
第5態様において、本発明の実施例は、タスクの作成要求を取得するように構成される要求取得モジュールと、前記タスクに対応するテナントの割り前に前記タスクの優先度とマッチングするリソースが含まれ、且つマッチングリソースが前記タスクの作成条件を満たすと検出した場合、前記作成要求に応じて前記タスクを作成するように構成されるタスク作成モジュールとを備えるAPIサーバを更に提供する。
第6態様において、本発明の実施例は、タスクスケジューリングキューからスケジューリング待ちの現在のタスクを取得し、各物理的なノードにおける前記現在のタスクの優先度以上のタスクを取得し、ノード−タスクのマッピングテーブルを形成するよう構成されるマッピングテーブル形成モジュールと、前記マッピングテーブルおよび所定のスクリーニング条件に基づいて前記所定のスクリーニング条件に合致するターゲット物理的なノードを確定するように構成されるスクリーニングモジュールと、前記現在のタスクと前記ターゲット物理的なノードとをバンディングし、バンディングの情報をAPIサーバに送信するように構成されるバンディングモジュールとを備えるスケジューラを更に提供する。
第7態様において、本発明の実施例は、実行待ちのターゲットタスクを処理する時、前記物理的なノードで実行しているタスクリストを取得するように構成されるタスクリスト取得モジュールと、物理的なノードにおける残りのリソースが前記ターゲットタスクの実行に必要なリソースを満たすか否かを検出するように構成される検出モジュールと、残りのリソースがターゲットタスクの実行に必要なリソースを満たさない場合、前記物理的なノードが前記タスクリストにおけるタスクを実行して得られる残りのリソースが前記ターゲットタスクの実行に必要なリソースを満たすまで、前記タスクリストにおける優先度が前記ターゲットタスクの優先度よりも低いタスクを、優先度の低い順で削除待ちのキューに順に移動し、前記ターゲットタスクを用いて前記削除待ちのキューにおけるタスクをプリエンプションするように構成されるプリエンプションモジュールと、実行環境を呼び出し、前記ターゲットタスクを実行するように構成されるタスク実行モジュールとを備えるタスクプリエンプション装置を更に提供する。
第8態様において、本発明の実施例は、本発明の実施例に係るAPIサーバと、スケジューラと、タスクプリエンプション装置とを備えるプリエンプティブスケジューリングに基づくリソース共有使用システムを更に提供する。
第9態様において、本発明の実施例は、1つまたは複数のプロセッサと、1つまたは複数のプログラムを記憶するための記憶装置とを備える装置を更に提供する。
前記1つまたは複数のプログラムが前記1つまたは複数のプロセッサにより実行されると、前記1つまたは複数のプロセッサは、本発明の実施例に係るタスク作成方法、または本発明の実施例に係るタスクスケジューリング方法、または本発明の実施例に係るタスクプリエンプション方法を実現する。
第10態様において、本発明の実施例は、プロセッサにより実行されると、本発明の実施例に係るタスク作成方法、または本発明の実施例に係るタスクスケジューリング方法、または本発明の実施例に係るタスクプリエンプション方法を実現するコンピュータプログラムが記憶されているコンピュータ可読記憶媒体を提供する。
本発明の実施例に係る技術案は、テナントのリソース割り前に対して優先度を設定し、タスクの優先度と対応するテナントにおける各優先度のリソースとをマッチングすることにより、タスクを作成するか否かを確定し、テナントにリソースが逼迫している場合にリソースを優先的に使用させ、テナントが高優先度のリソースを悪用して低優先度のタスクがリソースを持続的に取得できなくて「餓死」という現象が現れることを防止することができる。スケジューラは、タスクの優先度および所定のスクリーニング条件により物理的なノードをスクリーニングし、最適な物理的なノードをスクリーニングし、スケジューリング待ちの現在のタスクを最適な物理的なノードにスケジューリングし、リソースが逼迫している場合、論理的なリソースプリエンプションのみを行い、リソースを直ちにプリエンプションせず、このようなプリエンプションを遅延させるスケジューリング方法は、論理的に高優先度のタスクにリソースを譲ることができ、リソースが十分に利用されていない場合、プリエンプションされたタスクを実行し続け、リソースの利用率を向上させることができる。物理的なノードが実行待ちのターゲットタスクを処理する時、物理的なノードの残りのリソースがターゲットタスクの実行に必要な条件を満たさないと、低優先度のタスクをプリエンプションすることに基づき、物理的なノードは重要なタスクを優先的に処理することができ、リソースの利用率を向上させることができる。
本発明の実施例に係るタスク作成方法のフローチャートである。
本発明の実施例に係るタスクスケジューリング方法のフローチャートである。
本発明の実施例に係るタスクスケジューリング方法のフローチャートである。
本発明の実施例に係るタスクプリエンプション方法のフローチャートである。
本発明の実施例に係るタスクプリエンプション方法のフローチャートである。
本発明の実施例に係るプリエンプティブスケジューリングに基づくリソース共有使用方法のフローチャートである。
本発明の実施例に係るAPIサーバの構造ブロック図である。
本発明の実施例に係るスケジューラの構造ブロック図である。
本発明の実施例に係るスケジューリングシステムの構造模式図である。
本発明の実施例に係るタスクプリエンプション装置の構造ブロック図である。
本発明の実施例に係るプリエンプティブスケジューリングに基づくリソース共有使用システムの構造ブロック図である。
本発明の実施例に係る装置の構造模式図である。
以下、図面および実施例を参照しながら本発明について説明する。ここで説明する具体的な実施例は本発明を解釈するためのものに過ぎず、本発明を限定するものではないことが理解できる。なお、説明の便宜上、図面において、全ての内容ではなく、本発明に関連する部分のみを示す。
図1は、本発明の実施例に係るタスク作成方法のフローチャートであり、前記方法は、アプリケーションプログラミングインタフェース(Application Programming Interface、API)サーバ(API Server)に適用でき、APIサーバにより実行され、該APIサーバは、クラスタ管理プラットフォームにおける1つのコンポーネントであってもよく、ソフトウェアおよび/またはハードウェアの形態で実現され、クラスタ管理プラットフォームは、クラスタにおける大量のリソースを管理するプラットフォームであってもよく、クラスタ管理プラットフォームは、KubernetesおよびMesosを含んでもよいが、これらに限定されず、且つ、複数のコンピュータ装置に集積できる。図1に示すように、本発明の実施例に係るタスク作成方法はS110〜S120を含む。
S110において、APIサーバがタスクの作成要求を取得する。
本発明の実施例に係る方法はクラスタに適用でき、クラスタには複数の物理的なノードが含まれてもよく、各物理的なノードにおけるリソースは複数のテナントの共有リソースであってもよく、複数の物理的なノードはクラスタ管理プラットフォームにより管理されてもよく、クラスタ管理プラットフォームはタスクを物理的なノードに割り当てて物理的なノードに対応するタスクを実行させる。クラスタ管理プラットフォームは複数のコンピュータ装置に集積でき、複数のコンピュータ装置はユーザが操作でき、ユーザはクラスタ管理プラットフォームに登録してタスクの作成要求を提出することができ、クラスタ管理プラットフォームにおけるAPIサーバはユーザにより提出されたタスクの作成要求を取得してタスクを作成する。クラスタ管理プラットフォームにおけるスケジューラはタスクスケジューリングを行い、タスクを対応する物理的なノードに合理的に割り当てる。物理的なノードは該タスクを実行する。
ここで、APIサーバはクラスタ管理プラットフォームにおける1つのコンポーネントであってもよく、タスクの作成を完了することができ、豊かな機能性プラグインを提供し、クラスタに対する管理等を完備する。
ここで、APIサーバは、ユーザが提出した1つのタスクの作成要求を取得することができ、例えば、ユーザが提出した1つのアプリケーションを作成する要求を取得することができる。ここで、ユーザがタスクの作成要求を提出する時、タスクの優先度を設定することができる。
S120において、APIサーバが、前記タスクに対応するテナントの割り前に前記タスクの優先度とマッチングするリソースが含まれ、且つマッチングリソースが前記タスクの作成条件を満たすと検出した場合、前記作成要求に応じて前記タスクを作成する。
ユーザが管理粒度で複数のグループに分けられ、各グループが1つのテナントと呼ばれ、必要に応じて各テナントに割り前を予め設定することができ、割り前は1グループのリソースであってもよく、例えば、該グループのリソースは、プロセッサ(Central Processing Unit、CPU)、メモリ、グラフィックプロセッサ(Graphics Processing Unit、GPU)、フィールドプログラマブルゲートアレイ(Field Programmable Gate Array、FPGA)、人工知能(Artificial Intelligence、AI)チップ、プロセッサの優先度およびメモリの優先度、GPU優先度、FPGA優先度、AIチップ優先度等を含んでもよく、各テナントにリソース割り前を予め設定することができる。割り前を合理的に設定することにより、適当な優先度のリソースを使用するようにテナントをグラントすることができ、テナントは、リソースが逼迫している場合にリソースを優先的に使用でき、更に、テナントが高優先度のリソースを悪用して低優先度のタスクがリソースを持続的に取得できなくて「餓死」の現象が現れることを制限することができる。
ユーザがクラスタ管理プラットフォームによりタスクの作成要求を提出する場合、各タスクには識別情報が担持され、APIサーバは、識別情報に基づいて各タスクに対応するテナントを識別し、該テナントの割り前に該タスクの優先度とマッチングするリソースが含まれるか否か判断し、該タスクの優先度とマッチングするリソースが含まれている場合、該マッチングリソースが該タスクの作成条件を満たすか否かを判断し続け、該マッチングリソースが該タスクの作成条件を満たすと、タスクを作成することができる。
作成条件はCPUの数および/またはメモリの占有率であってもよく、他の条件であってもよい。例えば、ユーザがタスクの作成要求を提出する時、クラスタ管理プラットフォームにより該タスクの優先度を高優先度とすることができ、すると、該タスクに必要なリソースの優先度も高優先度となり、例えば、該タスクは10個の高優先度のCPUを必要とする。該タスクに対応するテナントの割り前には高優先度のCPUが含まれ、且つ高優先度のCPUの数が10以上であれば、該タスクを作成する。
本発明の1つの実施形態において、好ましくは、本発明の実施例に係る方法はKubernetes環境に適用できる。前記サーバがタスクの作成要求を取得することは、APIサーバがタスクpodの作成要求を取得することを含む。APIサーバが、前記タスクに対応するテナントの割り前に前記タスクの優先度とマッチングするリソースが含まれ、且つマッチングリソースが前記タスクの作成条件を満たすと検出した場合、前記作成要求に応じて前記タスクを作成することは、前記APIサーバが、前記タスクpodに対応するテナントnamespaceの割り前quotaに前記podに対応する優先度とマッチングするリソースのquota値が含まれ、且つ該quota値が前記タスクpodの作成条件を満たすと検出した場合、APIサーバは前記作成要求に応じてpodを作成することを含む。
ここで、podは、kubernetesにおける最小に作成されて配置できる最も簡略な単位である。1つのpodは、クラスタ内で実行している1つのプロセスを表す。podはKubernetesにおけるコンポーネントであり、例えば、1つのアプリケーションを作成してもよく、1つのプロセス等を起動してもよい。podにアプリケーションのコンテナー(ある場合に、いくつかのコンテナー)がパッケージされ、該コンテナーは独立したネットワークIP、コンテナーがどのように実行するかを管理するポリシーオプション等を記憶することができる。ここで、podは配置された1つの単位を表し、kubernetesに適用される1つのインスタンスであり、1つまたは複数のコンテナーで組み合わせられてリソースを共有する可能性がある。ここで、1つのpodの作成は、1つのアプリケーションの作成等であってもよい。
ここで、Namespaceは、1グループのリソースおよびオブジェクトの抽象的な集合であり、例えば、kubernetesシステム内部のオブジェクトを異なる項目グループまたはユーザグループに分けるために使用でき、namespaceは、異なるテナントまたはユーザを隔離するために使用されることが多い。kubernetesにおいて、quotaは、リソース管理およびリソース制限を行うために使用でき、quota値の大きさは、リソースの多少を表すことができ、例えば、1つのテナントで設定されたリソースが20個の高優先度のCPUであれば、namespaceにおけるquota値は20であってもよく、即ち、quota値はリソースの数を表すことができる。
本発明の実施例に係るタスク作成方法は、タスクの作成要求を取得すると、タスクに対応するテナントの割り前にタスクの優先度とマッチングするリソースが含まれるか否かを検出し、且つタスクの優先度とマッチングするリソースがタスクの作成条件を満たすか否かを検出し、2つの条件がいずれも満たされる(対応するテナントの割り前に該タスクの優先度とマッチングするリソースが含まれているとともに、該リソースも該タスクの作成条件を満たす)場合、該タスクを作成し、本実施例は、テナントのリソース割り前に対して優先度を設定し、タスクの優先度と対応するテナントにおける各優先度のリソースとをマッチングすることにより、タスクを作成するか否かを確定し、テナントにリソースが逼迫している場合にリソースを優先的に使用させ、テナントが高優先度のリソースを悪用して低優先度のタスクがリソースを持続的に取得できなくて「餓死」という現象が現れることを防止することができる。
図2は、本発明の実施例に係るタスクスケジューリング方法のフローチャートであり、前記方法はスケジューラに適用でき、スケジューラはクラスタ管理プラットフォームのコンポーネントであってもよく、ソフトウェアおよび/またはハードウェアの形態で実現され、クラスタ管理プラットフォームは、クラスタにおける大量のハードウェアリソースを管理するプラットフォームであってもよく、クラスタ管理プラットフォームは、KubernetesおよびMesosを含んでもよいが、これらに限定されず、且つ、複数のコンピュータ装置に集積できる。本発明の実施例に係る方法は以下のような環境に適用できる。クラスタに複数の物理的なノードが含まれてもよく、複数の物理的なノードにおけるリソースは複数のテナントの共有リソースであってもよく、複数の物理的なノードはクラスタ管理プラットフォームにより管理されてもよく、クラスタ管理プラットフォームはタスクを物理的なノードに割り当てて物理的なノードに対応するタスクを実行させる。クラスタ管理プラットフォームは複数のコンピュータ装置に集積でき、複数のコンピュータ装置はユーザが操作でき、ユーザはクラスタ管理プラットフォームに登録してタスクの作成要求を提出することができ、クラスタ管理プラットフォームにおけるAPIサーバはユーザにより提出されたタスクの作成要求を取得してタスクを作成し、クラスタ管理プラットフォームにおけるスケジューラはタスクスケジューリングを行い、タスクを対応する物理的なノードに合理的に割り当て、物理的なノードが該タスクを実行する。ここで、本発明の実施例はスケジューラがタスクスケジューリングを行う段階に適用される。
図2に示すように、本発明の実施例に係る技術案はS210〜S230を含む。
S210において、スケジューラはタスクスケジューリングキューからスケジューリング待ちの現在のタスクを取得し、各物理的なノードにおける前記現在のタスクの優先度以上のタスクを取得し、ノード−タスクのマッピングテーブルを形成する。
ここで、スケジューラはクラスタ管理プラットフォームのコンポーネントであってもよく、APIサーバからAPIサーバで作成されたタスクを傍受し、APIサーバからタスクを読み取ることができ、読み取ったタスクがタスクスケジューリングキューを形成する。ここで、スケジューラはタスクスケジューリングキューにおけるタスクの順に従ってタスクをスケジューリングする。
物理的なノードは各種の物理マシンであってもよく、スケジューラは各物理的なノードからリソース情報(全てのリソースおよび使用可能なリソースを含む)および各物理的なノードで実行しているタスクキューを取得することができる。ここで、該タスクキューにおける各タスクはいずれも優先度を有する。スケジューラがタスクスケジューリングキューからスケジューリング待ちの現在のタスクを取得する時、各物理的なノードにおける現在のタスクの優先度以上のタスクを取得し、ノード−タスクのマッピングテーブルを形成する。例えば、現在のタスクの優先度が高優先度であり、物理的なノード1における高優先度以上のタスクがタスク1、タスク2およびタスク3を有する場合、スケジューラは物理的なノード1におけるタスク1、タスク2およびタスク3を取得し、ノード−タスクのマッピングテーブルを形成する。ここで、物理的なノードにおける現在のタスクの優先度以上のタスクは、物理的なノードで実行している現在のタスクの優先度以上のタスクと、物理的なノードにおける実行待ちの現在のタスクの優先度以上のタスクとを含む。
S220において、前記スケジューラは前記マッピングテーブルおよび所定のスクリーニング条件に基づいて前記所定のスクリーニング条件に最も合致するターゲット物理的なノードを確定する。
スケジューラはノード−タスクマッピングテーブルから所定のスクリーニング条件に基づいてスクリーニングを行い、所定のスクリーニング条件に最も合致するターゲット物理的なノードをスクリーニングする。ここで、所定のスクリーニング条件は、現在のタスクに必要なリソースと物理的なノードにおける残りのリソースとの間のマッチング条件、および現在のタスクに必要なポートと物理的なノードにおけるポートとの間のマッチング条件等を含んでもよい。
本発明の1つの実施形態において、好ましくは、前記スケジューラが前記マッピングテーブルおよび所定のスクリーニング条件に基づいて前記所定のスクリーニング条件に最も合致するターゲット物理的なノードを確定することは、前記スケジューラがマッピングテーブルから第1段階のスクリーニング条件に合致する物理的なノードをスクリーニングし、ノードグループを形成することと、マッピングテーブルおよび第2段階のスクリーニング条件に基づき、前記ノードグループの物理的なノードをスコアリングし、スコアが最も高い物理的なノードをターゲット物理的なノードとしてスクリーニングすることとを含む。
ここで、第1段階のスクリーニング条件と第2段階のスクリーニング条件とは異なる。例えば、第1段階のスクリーニング条件は、現在のタスクに必要なポートと物理的なノード上のポートとの間のマッチング条件、物理的なノードに特殊なタグがあるか否か等であってもよく、第2段階のスクリーニング条件は、現在のタスクに必要なリソースと物理的なノードにおける残りのリソースとの間のマッチング条件であってもよく、且つ、第2段階のスクリーニング条件は1つの条件を含んでもよいし、複数の条件を含んでもよい。第2段階のスクリーニング条件が複数の条件を含む場合、各条件に重みを設け、重みに基づいて物理的なノードのスコアリングを確定してもよい。
該実施形態について例を挙げて説明し、第1段階のスクリーニング条件が、物理的なノードがGPUのタグを有する必要があることであれば、第2段階のスクリーニング条件は、現在のタスクに必要なリソースと物理的なノードにおける残りのリソースとの間のマッチング条件を予め設定することである。ノード−タスクマッピングテーブルおよび取得した物理的なノードの情報を照合し、スケジューラは、GPUを有する物理的なノードを選択し、ノードグループを形成する。スケジューラは、ノードグループ内の物理的なノードにおける残りのリソースが現在のタスクに必要なリソース条件を満たすか否かを判断し、条件を満たさない物理的なノードを除去し、現在のタスクに必要なリソース条件の物理的なノードをスコアリングし、物理的なノードにおける残りのリソースが多ければ多いほど、該物理的なノードのスコアは高くなることで、スコアが最も高い物理的なノードはターゲット物理的なノードである。ここで、ターゲット物理的なノードをスクリーニングする方法は上記方法を含むが、これらに限定されない。
上記2回のスクリーニングにより、スコアが最も高い物理的なノードをターゲット物理的なノードとしてスクリーニングし、即ち、スコアが最も高い物理的なノードを最適な物理的なノードとしてスクリーニングし、1回のスクリーニングの場合に対し、毎回のスクリーニング時のデータの処理量を減少してタスクスケジューリングの効率を向上させることができる。
S230において、前記スケジューラは前記現在のタスクと前記ターゲット物理的なノードとをバンディングし、バンディングした情報をAPIサーバに送信する。
スケジューラは、現在のタスクとスクリーニングした所定のスクリーニング条件に最も合致する物理的なノード(即ち、ターゲット物理的なノード)とをバンディングすることにより、バンディングした情報をAPIサーバに送信することで、各物理的なノードはAPIサーバからそれぞれが実行するタスクを読み取ることができる。
本発明の実施例のスケジューラは、タスクの優先度および所定のスクリーニング条件に基づいて複数の物理的なノードをスクリーニングし、各タスクに対応する最適な物理的なノード(即ち、ターゲット物理的なノード)をスクリーニングし、スケジューリング待ちの現在のタスクを最適な物理的なノードにスケジューリングする。リソースが逼迫している場合、論理的なリソースプリエンプションのみを行い、リソースを直ちにプリエンプションせず、このようなプリエンプションを遅延させるスケジューリング方法は、論理的に高優先度のタスクにリソースを譲ることができ、リソースが十分に利用されていない場合、プリエンプションされたタスクを保留し続け、リソースの利用率を向上させることができる。
図3は、本発明の実施例に係るタスクスケジューリング方法のフローチャートであり、ここで、該実施例に係る方法はkubernetesシステムに適用でき、図3に示すように、本実施例に係る技術案はS310〜S340を含む。
S310において、スケジューラはpodスケジューリングキューからスケジューリング待ちの現在のpodを取得し、各物理的なノードにおける前記現在のpodの優先度以上のpodを取得し、ノード−podのマッピングテーブルを形成する。
S320において、前記スケジューラはマッピングテーブルから第1段階のスクリーニング条件に合致する物理的なノードをスクリーニングし、ノードグループを形成する。
S330において、マッピングテーブルおよび第2段階のスクリーニング条件に基づき、前記ノードグループの物理的なノードをスコアリングし、スコアが最も高い物理的なノードをターゲット物理的なノードとしてスクリーニングする。
S340において、前記スケジューラは前記現在のpodと前記ターゲット物理的なノードとをバンディングし、バンディングした情報をAPIサーバに送信する。
これにより、スケジューラは、タスクの優先度および所定のスクリーニング条件に基づいて物理的なノードをスクリーニングし、最適な物理的なノードをスクリーニングし、スケジューリング待ちの現在のタスクを最適な物理的なノードにスケジューリングする。リソースが逼迫している場合、論理的なのリソースプリエンプションのみを行い、リソースを直ちにプリエンプションせず、このようなプリエンプションを遅延させるスケジューリング方法は、論理的に高優先度のタスクにリソースを譲ることができ、リソースが十分に利用されていない場合、プリエンプションされたタスクを保留し続け、リソースの利用率を向上させることができる。
図4は、本発明の実施例に係るタスクプリエンプション方法のフローチャートであり、前記方法は、タスクプリエンプション装置により実行でき、前記装置はソフトウェアおよび/またはハードウェアで実現され、前記装置はコンピュータ装置に集積できる。本発明の実施例に係るタスクプリエンプション方法は、物理的なノードがタスクを処理するシーンに適用される。図4に示すように、本発明の実施例に係る技術案はS410〜S440を含む。
S410において、物理的なノードが実行待ちのターゲットタスクを処理する時、前記物理的なノードで実行しているタスクリストを取得する。
ここで、物理的なノードは、物理マシン等のようなコンピュータ装置であってもよい。物理的なノードは、APIサーバにおけるタスクと物理的なノードとのバンディング情報を傍受することにより対応するタスクを取得し、取得したタスクでタスクキューを形成することができる。物理的なノードは、タスクキューにおけるタスクの順序に応じて処理を順に行い、現在の処理のタスクは実行待ちのターゲットタスクと呼ばれる。物理的なノードが実行待ちのターゲットタスクを処理する時、物理的なノードは該物理的なノードで実行しているタスクリストを取得する。ここで、タスクリストには、物理的なノードで実行しているタスクの情報が記載されている。物理的なノードで実行しているタスクは1つであってもよいし、複数であってもよい。
S420において、前記物理的なノードは、残りのリソースが前記ターゲットタスクの実行に必要なリソースを満たすか否かを検出する。
物理的なノードが、残りのリソースがターゲットタスクの実行に必要なリソースを満たさないと検出した場合、S430を実行し、物理的なノードが、残りのリソースがターゲットタスクの実行に必要なリソースを満たすと検出した場合、S440を実行する。
本ステップにおいて、ターゲットタスクの実行に必要なリソースは、CPU、メモリ等を含んでもよい。物理的なノードの残りのリソースは、物理的なノードにおける使用可能なリソースと理解されてもよい。例えば、物理的なノードにおける残りのCPUの数が10個でメモリが1Gであり、ターゲットタスクの実行に必要なCPUが10でメモリが2Gであると、物理的なノードにおける残りのリソースはターゲットタスクの実行に必要なリソースを満たすことができない。
S430において、前記物理的なノードは、前記物理的なノードが前記タスクリストにおけるタスクを実行した後に得られる残りのリソースが前記ターゲットタスクの実行に必要なリソースを満たすまで、前記タスクリストにおける優先度が前記ターゲットタスクの優先度よりも低いタスクを、優先度の低い順で削除待ちのキューに順に移動し(該物理的なノードは、削除待ちのキューに移動されるタスクを実行しない)、前記ターゲットタスクを用いて前記削除待ちのキューにおけるタスクをプリエンプションする。
本ステップにおいて、物理的なノードが、残りのリソースがターゲットタスクの実行に必要なリソースを満たすことができると検出した場合、実行環境を直接呼び出し、ターゲットタスクを実行する。物理的なノードが、残りのリソースがターゲットタスクの実行に必要なリソースを満たすことができないと検出した場合、タスクリストにおけるタスクを優先度の低い順で順番付け、且つ、物理的なノードがタスクリストにおけるタスクを実行した後に得られる残りのリソースがターゲットタスクの実行に必要なリソースを満たすまで、優先度がターゲットタスクの優先度よりも低いタスクを、優先度の低い順で削除待ちのキューに移動し、ターゲットタスクを用いて削除待ちのキューにおけるタスクのリソースをプリエンプションし、即ち、削除待ちのキューにおけるタスクの実行を停止する。
タスクリストにおけるタスクを削除待ちのキューに移動する過程において、物理的なノードにおける残りのリソースがターゲットタスクの実行条件を満たさない場合、ターゲットタスクの実行を拒否する。
なお、タスクリストにおける優先度がターゲットタスクの優先度よりも低いタスクを削除待ちのキューに移動する過程において、削除待ちのキューにおけるタスクの実行を停止せず、物理的なノードがタスクリストにおけるタスクを実行した後に得られた残りのリソースがターゲットタスクの実行に必要なリソースを満たすと判断した場合、削除待ちのキュー中のタスクを実行する。
本ステップについて例を挙げて説明し、タスクリストには合計5つのタスク(物理的なノードで実行しているタスクが5つある)があり、それぞれA、B、C、DおよびEであれば、優先度はそれぞれ1、2、3、4および5であり、ここで、タスクリストにおけるタスクは優先度の低い順で順番付けると、A、B、C、DおよびEである。処理待ちのターゲットタスクの優先度は4である。物理的なノードにおける残りのリソースがターゲットタスクの実行に必要なリソース条件を満たすことができない場合、物理的なノードで実行しているタスクリストにおける優先度がターゲットタスクの優先度よりも低いタスク(それぞれA、BおよびC)を優先度の低い順で削除待ちのキューに順に移動し、即ち、まず、Aを削除待ちのキューに移動し、物理的なノードがタスクリストにおけるB、C、DおよびEを実行した後に得られる残りのリソースがターゲットタスクの実行に必要なリソース条件を満たすか否かを判断する。物理的なノードがタスクB、C、DおよびEを実行した後に得られる残りのリソースがターゲットタスクの実行に必要なリソース条件を満たす場合、ターゲットタスクを用いて実行しているAをプリエンプションし、即ち、Aを停止する。
Aを削除待ちのキューに移動した後、物理的なノードがタスクリストにおけるB、C、DおよびEを実行して得られる残りのリソースがターゲットタスクの実行に必要なリソース条件を満たさない場合、Bを削除待ちのキューに移動し続け、タスクリストにおけるタスクC、DおよびEを実行した後に得られる残りのリソースがターゲットタスクの実行に必要なリソース条件を満たすか否かを再び検出し、タスクリストにおけるタスクを実行した後に得られる残りのリソースがターゲットタスクの実行に必要なリソース条件を満たすと検出したまで上記判断ステップを繰り返す。タスクリストにおけるタスクの優先度がターゲットタスクの優先度以上である場合(即ち、タスクリストにおけるタスクA、BおよびCがいずれも移出待ちのキューに移動され、タスクDおよびEのみが残っている場合)、物理的なノードがタスクリストにおけるタスクDおよびEを実行した後に得られる残りのリソースがターゲットタスクの実行に必要なリソース条件を満たさないと、ターゲットタスクの実行を拒否する。
S440において、前記物理的なノードは実行環境を呼び出し、前記ターゲットタスクを実行する。
本発明の実施例は、物理的なノードが実行待ちのターゲットタスクを処理する時、物理的なノードの残りのリソースがターゲットタスクの実行に必要な条件を満たさないと、低優先度のタスクをプリエンプションし、物理的なノードは重要なタスクを優先的に処理することができ、リソースの利用率を向上させることができる。
上記実施例の基に、前記のタスクプリエンプション方法は、前記物理的なノードが設定時間おきにリソース使用情報を取得することと、前記物理的なノードが、前記リソース使用情報が所定の制限条件に達したことを確定した場合、前記物理的なノードが前記タスクリストにおけるタスクを実行した後に確定されるリソース使用情報が所定の制限条件に達していないまで前記タスクリストにおけるタスクを優先度の低い順で前記削除待ちのキューに移動し、前記削除待ちのキューにおけるタスクを停止する。
好ましくは、タスクリストにおけるタスクは現在の物理的なノードで実行しているタスクである。ここで、各物理的なノードは設定時間おきにリソース使用情報を取得し、リソースの使用情報が所定の制限条件に達したか否かを判断することで、タスクプリエンプションをトリガする必要があるか否かを判断する。リソースの使用情報が所定の制限条件に達すると、タスクプリエンプションをトリガし、リソース使用情報が所定の制限条件に達していないと、タスクプリエンプションをトリガする必要がない。タスクプリエンプションの過程は以下のとおりである。タスクリストにおけるタスクを優先度で順番付け、前記物理的なノードがタスクリストにおけるタスクを実行した後に確定されるリソース使用情報が所定の制限条件に達していないまでタスクリストにおけるタスクを優先度の低い順で削除待ちのキューに順に移動し、削除待ちのキューにおけるタスクを停止する。
ここで、所定の制限条件は、リソース使用が設定値に達することであってもよく、他の制限条件であってもよい。例えば、物理的なノードのリソース使用が設定値に達すると、タスクプリエンプションをトリガする。
これにより、物理的なノードは、リソース使用情報に基づいてタスクプリエンプションをトリガすることで、リソース利用率を向上させることができ、更に、リソースが逼迫している場合、低優先度のタスクからリソースをプリエンプションして重要なタスクを優先的に処理することができる。
図5は、本発明の実施例に係るタスクプリエンプション方法のフローチャートであり、本発明の実施例に係る方法はKubernetesシステムに実行される。図5に示すように、本発明の実施例に係る方法はS510〜S540を含む。
S510において、物理的なノードがkubeletにより実行待ちのターゲットpodを処理する時、前記物理的なノードで実行しているpodリストを取得する。
ここで、kubeletはKubernetesシステムのコンポーネントであり、pod、podのマウントに必要なvolumes、podをダウンロードするsecret、docker/rktによりpodにおけるコンテナーを実行すること、podにおけるコンテナーに定義されたlivenessプローブを周期的に実行すること、podの状態をシステムの他のコンポーネントに報告すること、およびノードの状態を監視することができる。
S520において、前記物理的なノードはkubeletにより、残りのリソースが前記ターゲットpodの実行に必要なリソースを満たすか否かを検出する。
物理的なノードが、残りのリソースがターゲットpodの実行に必要なリソースを満たさないと検出した場合、S530を実行し、物理的なノードが、残りのリソースがターゲットpod実行に必要なリソースを満たすと検出した場合、S540を実行する。
S530において、前記物理的なノードはkubeletにより、前記物理的なノードが前記podリストにおけるpodを実行した後に得られる残りのリソースが前記ターゲットpodの実行に必要なリソースを満たすまで、前記podリストにおける優先度が前記ターゲットpodの優先度よりも低いpodを、優先度の低い順で削除待ちのキューに順に移動し、前記ターゲットpodを用いて前記削除待ちのキューにおけるpodをプリエンプションする。
S540において、前記物理的なノードはkubeletにより実行環境を呼び出し、前記ターゲットpodを実行する。
これにより、物理的なノードが実行待ちのターゲットpodを処理する時、物理的なノードの残りのリソースがターゲットpodの実行に必要な条件を満たさないと、低優先度のpod(優先度はターゲットpodの優先度よりも低い)をプリエンプションし、物理的なノードは重要なタスク(本実施例において、該重要タスクとはターゲットpodを意味する)を優先的に処理してリソースの利用率を向上させることができる。
図6は、本発明の実施例に係るプリエンプティブスケジューリングに基づくリソース共有使用方法のフローチャートであり、前記方法は、プリエンプティブスケジューリングに基づくリソース共有使用システムにより実行され、前記システムは、ソフトウェアおよび/またはハードウェアで実現できる。本発明の実施例に係る方法はクラスタに適用でき、クラスタには複数の物理的なノードが含まれてもよく、各物理的なノードにおけるリソースは複数のテナントの共有リソースであってもよく、複数の物理的なノードはクラスタ管理プラットフォームにより管理されてもよく、タスクを物理的なノードに割り当てて物理的なノードに対応するタスクを実行させる。クラスタ管理プラットフォームは複数のコンピュータ装置に集積でき、複数のコンピュータ装置はユーザが操作でき、ユーザはクラスタ管理プラットフォームに登録してタスクの作成要求を提出することができ、クラスタ管理プラットフォームにおけるAPIサーバはユーザにより提出されたタスクの作成要求を取得してタスクを作成し、クラスタ管理プラットフォームにおけるスケジューラはタスクスケジューリングを行い、タスクを対応する物理的なノードに合理的に割り当て、物理的なノードが該タスクを実行する。
図6に示すように、本発明の実施例に係る技術案はS610〜S692を含む。
S610において、APIサーバはタスクの作成要求を取得する。
S620において、前記APIサーバが、前記タスクに対応するテナントの割り前に前記タスクの優先度とマッチングするリソースが含まれ、且つマッチングリソースが前記タスクの作成条件を満たすと検出した場合、前記作成要求に応じて前記タスクを作成する。
S630において、スケジューラは前記APIサーバにより作成されたタスクを取得し、タスクスケジューリングキューを形成する。
APIサーバはタスクの作成要求をリアルタイムに取得し、条件を満たした作成要求のためにタスクを作成する。そのため、APIサーバには少なくとも1つのタスクがある。スケジューラはAPIサーバが作成する全てのタスクを取得し、これらのタスクをタスクスケジューリングキューに形成する。
S640において、前記スケジューラは前記タスクスケジューリングキューからスケジューリング待ちの現在のタスクを取得し、各物理的なノードにおける前記現在のタスクの優先度以上のタスクを取得し、ノード−タスクのマッピングテーブルを形成する。
スケジューラは、タスクスケジューリングキューにおけるタスクの並び順に基づき、タスクを順にスケジューリングする。スケジューリング待ちの現在のタスクとは、タスクスケジューリングキューにおけるスケジューラが現在スケジューリングしているタスクを意味する。
S650において、前記スケジューラは前記マッピングテーブルおよび所定のスクリーニング条件に基づいて前記所定のスクリーニング条件に最も合致するターゲット物理的なノードを確定する。
S660において、前記スケジューラは前記現在のタスクと前記ターゲット物理的なノードとをバンディングし、バンディングした情報をAPIサーバに送信する。
スケジューラは、タスクスケジューリングキューにおけるタスクをスケジューリングし、タスクスケジューリングキューにおける各タスクとそれに対応するターゲット物理的なノードとのバンディング情報を取得する。
S670において、物理的なノードは前記APIサーバにおけるタスクと物理的なノードとのバンディング情報を傍受することにより、対応するタスクを取得し、タスクキューを形成する。
物理的なノードは、APIサーバにおけるバンディング情報を傍受し、バンディング情報におけるターゲット物理的なノードにより、該物理的なノードに対応するタスクを確定する。該タスクは1つであってもよいし、複数であってもよく、これらのタスクをタスクキューに形成する。
S680において、前記物理的なノードが前記タスクキューにおける実行待ちのターゲットタスクを処理する時、前記物理的なノードで実行しているタスクリストを取得する。
物理的なノードは、タスクキューにおけるタスクの並び順に基づき、タスクを順に処理する。実行待ちのターゲットタスクとは、タスクキューにおける物理的なノードが現在処理しているタスクを意味する。
S690において、前記物理的なノードは、残りのリソースが前記ターゲットタスクの実行に必要なリソースを満たすか否かを検出する。
物理的なノードが、残りのリソースがターゲットタスクの実行に必要なリソースを満たさないと検出した場合、S691を実行し、物理的なノードが、残りのリソースがターゲットタスクの実行に必要なリソースを満たすと検出した場合、S692を実行する。
S691において、前記物理的なノードは、前記物理的なノードが前記タスクリストにおけるタスクを実行して得る残りのリソースが前記ターゲットタスクの実行に必要なリソースを満たすまで、前記タスクリストにおける優先度が前記ターゲットタスクよりも低いタスクを、優先度の低い順で削除待ちのキューに移動し、ターゲットタスクを用いて前記削除待ちのキューにおけるタスクをプリエンプションする。
S692において、前記物理的なノードは実行環境を呼び出し、前記ターゲットタスクを実行する。
関連技術のKubernetes 1.3バージョンは、サービス品質(Quality Of Service)のリソース共有形態に基づき、共有リソースを管理するために使用され、サービス品質は高い順でそれぞれGuarantee、BurstableおよびBest Effortである。ここで、Best Effortのタスクは、クラスタリソースが十分に使用されていない場合にスケジューリングされて実行できる。クラスタリソースが逼迫している場合、Best Effortのタスクは優先的にプリエンプションされる。このような形態は、タスクスケジューリングの一環を考慮したことがなく、クラスタのスケジューリングが満了した場合、高いサービス品質のタスクにリソースを譲ることができず、且つテナント内のBest Effortタスクの数を制限することができず、Best Effortタスクのプリエンプションされる順を区別することができない。
関連技術のKubernetes 1.8バージョンに導入された優先度に基づくスケジューリング形態は、タスクの優先度を設定することができ、リソースが逼迫している場合、スケジューラは低優先度のタスクをプリエンプションし、高優先度のタスクに十分なリソースを提供する。しかし、該形態において、タスクのプリエンプションはスケジューラで発生し、即ち、クラスタロジックのスケジューリングが満了した時に発生し、クラスタにはリソースが十分に利用されていない場合があり、リソースの利用率は高くなく、且つ各優先度のタスクの数を正確に制限することができない。
関連技術におけるスケジューリング形態に対し、本発明の実施例に係る方法は、テナントのリソース割り前に対して優先度を設定し、各テナントにおける複数種の優先度のタスクの数を正確に制限することができ、タスクの優先度の設定により、タスクがプリエンプションされる時、タスクのプリエンプションされる順を区別することができる。本発明の実施例において、優先度に基づくタスクプリエンプションは物理的なノードで発生し、スケジューラで発生することがなく、論理的には高優先度のタスクにリソースを譲ることができ、リソースが十分に利用されていない場合、プリエンプションされたタスクを実行し続け、リソースの利用率を向上させることができる。
本発明の実施例に係る方法は、テナントのリソース割り前に対して優先度を設定し、タスクの優先度と対応するテナントにおける複数の優先度のリソースとをマッチングすることにより、タスクを作成するか否かを確定し、テナントにリソースが逼迫している場合にリソースを優先的に使用させ、テナントが高優先度のリソースを悪用して低優先度のタスクがリソースを持続的に取得できなくて「餓死」という現象が現れることを防止することができる。スケジューラは、タスクの優先度および所定のスクリーニング条件に基づいて物理的なノードをスクリーニングし、最適な物理的なノードをスクリーニングし、スケジューリング待ちの現在のタスクを最適な物理的なノードにスケジューリングし、リソースが逼迫している場合、論理的なのリソースプリエンプションのみを行い、リソースを直ちにプリエンプションせず、このようなプリエンプションを遅延させるスケジューリング方法は、論理的に高優先度のタスクにリソースを譲ることができ、リソースが十分に利用されていない場合、プリエンプションされたタスクを実行し続け、リソースの利用率を向上させることができる。物理的なノードが実行待ちのターゲットタスクを処理する時、物理的なノードの残りのリソースがターゲットタスクの実行に必要な条件を満たさないと、低優先度のタスクをプリエンプションすることに基づき、物理的なノードは重要なタスクを優先的に処理し、リソースの利用率を向上させることができる。
図7は、本発明の実施例に係るAPIサーバの構造ブロック図であり、図7に示すように、前記APIサーバは、要求取得モジュール710と、タスク作成モジュール720とを備える。
要求取得モジュール710は、タスクの作成要求を取得するように構成される。
タスク作成モジュール720は、前記タスクに対応するテナントの割り前に前記タスクの優先度とマッチングするリソースが含まれ、且つマッチングリソースが前記タスクの作成条件を満たすと検出した場合、前記作成要求に応じて前記タスクを作成するように構成される。
好ましくは、前記装置はKubernetesシステムに適用され、要求取得モジュール710は、podの作成要求を取得するように構成される。
タスク作成モジュール720は、前記podに対応するnamespaceのquotaに前記podの優先度とマッチングするリソースquota値が含まれ、且つquota値が前記podの作成条件を満たすと検出した場合、前記作成要求に応じてpodを作成するように構成される。
上記タスク作成装置は、本発明のいずれかの実施例に係るタスク作成方法を実行でき、タスク作成方法の実行に対応する機能モジュールおよび有益な効果を有する。
図8aは、本発明の実施例に係るスケジューラの構造ブロック図であり、図8aに示すように、前記スケジューラは、マッピングテーブル形成モジュール810と、スクリーニングモジュール820と、バンディングモジュール830とを備える。
マッピングテーブル形成モジュール810は、タスクスケジューリングキューからスケジューリング待ちの現在のタスクを取得し、各物理的なノードにおける前記現在のタスクの優先度以上のタスクを取得し、ノード−タスクのマッピングテーブルを形成するように構成される。
スクリーニングモジュール820は、前記マッピングテーブルおよび所定のスクリーニング条件に基づいて前記所定のスクリーニング条件に最も合致するターゲット物理的なノードを確定するように構成される。
バンディングモジュール830は、前記現在のタスクと前記ターゲット物理的なノードとをバンディングし、バンディングの情報をAPIサーバに送信するように構成される。
好ましくは、スクリーニングモジュール820は、
前記マッピングテーブルから第1段階のスクリーニング条件に合致する物理的なノードをスクリーニングし、ノードグループを形成し、
前記マッピングテーブルおよび第2段階のスクリーニング条件に基づき、前記ノードグループの物理的なノードをスコアリングし、スコアが最も高い物理的なノードをターゲット物理的なノードとしてスクリーニングするように構成される。
好ましくは、前記装置はKubernetesシステムに適用され、マッピングテーブル形成モジュール810は、podスケジューリングキューからスケジューリング待ちの現在のpodを取得し、各物理的なノードにおける前記現在のpodの指定優先度以上のpodを取得し、ノード−podのマッピングテーブルを形成するように構成される。
それに対応し、バンディングモジュール830は、前記現在のpodと前記ターゲット物理的なノードとをバンディングし、バンディングの情報をAPIサーバに送信するように構成される。
ここで、スケジューラ構造は他の構造形式であってもよく、タスクスケジューリング方法を実行できればよい。例えば、スケジューラにはスケジューリングシステムが含まれ、図8bに示すように、スケジューリングシステムは、ノード情報リスト840と、スクリーニングアルゴリズムライブラリ850と、スクリーニングアルゴリズムライブラリ860と、スケジューリングされていないキュー870という4つの部分を含んでもよい。
ここで、ノード情報リスト840は、物理的なノードにおけるリソース情報(全てのリソースおよび使用可能なリソース)および物理的なノードで実行しているタスクキューを含む現在の使用可能な物理的なノード情報を記載するように構成される。この部分の情報はスケジューリング方法を指定する際にキーとなる情報であり、スケジューリングシステムがリソースおよびタスクを全面的に認知することを確保するために、リアルタイムかつ同期する必要がある。
スクリーニングアルゴリズムライブラリ850は、複数種の物理的なノードをスクリーニングするアルゴリズムを予め定義し、タスク実行条件を満たさない物理的なノードを除去することを確保するように構成される。
スクリーニングアルゴリズムライブラリ860は、複数種のスクリーニングノードのアルゴリズムおよびアルゴリズムの重みを予め定義するように構成され、スクリーニングアルゴリズムで計算されたスコアが最も高い物理的なノードは、スケジューリングノード、即ち、ターゲット物理的なノードとして選択される。
スケジューリングキュー870は、スケジューリングされていないタスクで形成されたキューとして構成され、高優先度のタスクが先にスケジューリングされることを確保するための1つの優先度キューである。
上記装置は、本発明のいずれかの実施例に係るタスクスケジューリング方法を実行することができ、タスクスケジューリング方法の実行に対応する機能モジュールおよび有益な効果を備える。
図9は、本発明の実施例に係るタスクプリエンプション装置の構造ブロック図であり、図9に示すように、前記タスクプリエンプション装置は、タスクリスト取得モジュール910と、検出モジュール920と、プリエンプションモジュール930と、タスク実行モジュール940とを備える。
ここで、タスクリスト取得モジュール910は、実行待ちのターゲットタスクを処理する時、前記物理的なノードで実行しているタスクリストを取得するように構成される。
検出モジュール920は、物理的なノードにおける残りのリソースが前記ターゲットタスクの実行に必要なリソースを満たすか否かを検出するように構成される。
プリエンプションモジュール930は、物理的なノードにおける残りのリソースがターゲットタスクの実行に必要なリソースを満たさない場合、前記物理的なノードは、前記物理的なノードが前記タスクリストにおけるタスクを実行した後に得られる残りのリソースが前記ターゲットタスクの実行に必要なリソースを満たすまで、前記タスクリストにおける優先度が前記ターゲットタスクよりも低いタスクを、優先度の低い順で削除待ちのキューに順に移動し(即ち、優先度の低い順でタスクをタスクリストから順に移出する)、前記ターゲットタスクを用いて前記削除待ちのキューにおけるタスクをプリエンプションするように構成される。
タスク実行モジュール940は、前記物理的なノードが実行環境を呼び出し、前記ターゲットタスクを実行するように構成される。
好ましくは、前記プリエンプションモジュールは、更に、設定時間おきにリソース使用情報を取得するように構成されてもよい。
前記リソース使用情報が所定の制限条件に達したことを確定すると、前記物理的なノードが前記タスクリストにおけるタスクを実行した後に確定されるリソース使用情報が所定の制限条件に達していないまで前記タスクリストにおけるタスクを優先度の低い順で前記削除待ちのキューに順に移動し、前記削除待ちのキューにおけるタスクを停止する。
好ましくは、前記装置はKubernetesシステムに適用され、前記ターゲットタスクはターゲットpodであり、前記タスクリストはpodリストであり、前記タスクリストにおけるタスクは前記物理的なノードで実行しているpodである。
上記装置は、本発明のいずれかの実施例に係るタスクプリエンプション方法を実行でき、タスクプリエンプション方法の実行に対応する機能モジュールおよび有益な効果を備える。
図10は、本発明の実施例に係るタスクプリエンプションシステムの構造模式図であり、図10に示すように、前記タスクプリエンプションシステムは、上記実施例に係るAPIサーバ1010と、上記実施例に係るスケジューラ1020と、上記実施例に係るタスクプリエンプション装置1030とを備える。
好ましくは、APIサーバ1010およびスケジューラ1020はそれぞれクラスタ管理プラットフォームのコンポーネントであり、クラスタ管理プラットフォームはユーザが使用するコンピュータ装置に集積される。タスクプリエンプション装置1030は物理的なノードにおける物理マシンに集積されてもよい。
図11は、本発明の実施例に係る装置の構造模式図であり、図11に示すように、該装置は、1つまたは複数のプロセッサ1110(図11では1つのプロセッサ1110を例とする)と、メモリ1120とを備える。
前記装置は、入力装置1130と、出力装置1140とを更に備えてもよい。
前記装置におけるプロセッサ1110、メモリ1120、入力装置1130および出力装置1140は、バスまたは他の方式により接続でき、図11ではバスによる接続を例とする。
メモリ1120は、非一時的コンピュータ可読記憶媒体として、本発明の実施例におけるタスク作成方法に対応するプログラム命令/モジュール(例えば、図面7に示す要求取得モジュール710およびタスク作成モジュール720)、または本発明の実施例におけるタスクスケジューリング方法に対応するプログラム命令/モジュール(例えば、図面8に示すマッピングテーブル形成モジュール810、スクリーニングモジュール820およびバンディングモジュール830)、または本発明の実施例におけるタスクプリエンプション方法に対応するプログラム命令/モジュール(例えば、図面9に示すタスクリスト取得モジュール910、検出モジュール920、プリエンプションモジュール930およびタスク実行モジュール940)のようなソフトウェアプログラム、コンピュータ実行可能プログラムおよびモジュールを記憶するために使用できる。プロセッサ1110は、メモリ1120に記憶されたソフトウェアプログラム、命令およびモジュールを実行することにより、コンピュータ装置の様々な機能アプリケーションおよびデータ処理を実行し、即ち、APIサーバがタスクの作成要求を取得することと、APIサーバが、前記タスクに対応するテナントの割り前に前記タスクの優先度とマッチングするリソースが含まれ、且つマッチングリソースが前記タスクの作成条件を満たすと検出した場合、前記作成要求に応じて前記タスクを作成することとを含む上記方法実施例のタスク作成方法を実現する。
または、プロセッサ1110は、メモリ1120に記憶されたソフトウェアプログラム、命令およびモジュールを実行することにより、スケジューラがタスクスケジューリングキューからスケジューリング待ちの現在のタスクを取得し、各物理的なノードにおける前記現在のタスクの優先度以上のタスクを取得し、ノード−タスクのマッピングテーブルを形成することと、前記スケジューラが前記マッピングテーブルおよび所定のスクリーニング条件に基づいて前記所定のスクリーニング条件に最も合致するターゲット物理的なノードを確定することと、前記スケジューラが前記現在のタスクと前記ターゲット物理的なノードとをバンディングし、バンディングした情報をAPIサーバに送信することとを含む上記方法の実施例のタスクスケジューリング方法を実現する。
または、プロセッサ1110は、メモリ1120に記憶されたソフトウェアプログラム、命令およびモジュールを実行することにより、物理的なノードが実行待ちのターゲットタスクを処理する時、前記物理的なノードで実行しているタスクリストを取得することと、前記物理的なノードが、残りのリソースが前記ターゲットタスクの実行に必要なリソースを満たすか否かを検出することと、物理的なノードが、残りのリソースがターゲットタスクの実行に必要なリソースを満たさないと検出した場合、前記物理的なノードは、前記物理的なノードが前記タスクリストにおけるタスクを実行した後に得られる残りのリソースが前記ターゲットタスクの実行に必要なリソースを満たすまで、前記タスクリストにおける優先度が前記ターゲットタスクの優先度よりも低いタスクを、優先度の低い順で削除待ちのキューに順に移動し、前記ターゲットタスクを用いて前記削除待ちのキューにおけるタスクをプリエンプションすることと、前記物理的なノードが実行環境を呼び出し、前記ターゲットタスクを実行することとを含む上記方法の実施例のタスクプリエンプション方法を実現する。
メモリ1120は、プログラム記憶エリアおよびデータ記憶エリアを含んでもよく、ここで、プログラム記憶エリアはオペレーティングシステム、少なくとも1つの機能に必要なアプリケーションプログラムを記憶することができ、データ記憶エリアは、コンピュータ装置の使用に基づいて作成されたデータ等を記憶することができる。また、メモリ1120は高速ランダムアクセスメモリを含んでもよく、少なくとも1つの磁気ディスク記憶装置、フラッシュメモリ装置、または他の非一時的固体記憶装置のような非一時的メモリを更に含んでもよい。好ましくは、いくつかの実施例において、メモリ1120は、プロセッサ1110に対して遠隔に設けられたメモリを含んでもよく、これらのリモートメモリは、ネットワークを介して端末装置に接続することができる。上記ネットワークのインスタンスは、インターネット、イントラネット、ローカルエリアネットワーク、移動体通信ネットワークおよびその組み合わせを含むが、これらに限定されない。
入力装置1130は、入力された数字または文字情報を受信し、およびコンピュータ装置のユーザ設定および機能制御に関連するキー信号入力を生じるために使用できる。出力装置1140はディスプレイ等の表示装置を含んでもよい。
本発明の実施例は、コンピュータプログラムが記憶されているコンピュータ可読記憶媒体を提供し、該プログラムがプロセッサにより実行されると、タスクの作成要求を取得することと、前記タスクに対応するテナントの割り前に前記タスクの優先度とマッチングするリソースが含まれ、且つマッチングリソースが前記タスクの作成条件を満たすと検出し場合、前記作成要求に応じて前記タスクを作成することとを含む本発明の実施例に係るタスク作成方法を実現する。
または、該プログラムがプロセッサにより実行されると、スケジューラがタスクスケジューリングキューからスケジューリング待ちの現在のタスクを取得し、各物理的なノードにおける前記現在のタスクの優先度以上のタスクを取得し、ノード−タスクのマッピングテーブルを形成することと、前記スケジューラが前記マッピングテーブルおよび所定のスクリーニング条件に基づいて前記所定のスクリーニング条件に最も合致するターゲット物理的なノードを確定することと、前記スケジューラが前記現在のタスクと前記ターゲット物理的なノードとをバンディングし、バンディングした情報をAPIサーバに送信することとを含む上記方法の実施例のタスクスケジューリング方法を実現する。
または、該プログラムがプロセッサにより実行されと、物理的なノードが実行待ちのターゲットタスクを処理する時、前記物理的なノードで実行しているタスクリストを取得することと、前記物理的なノードが、残りのリソースが前記ターゲットタスクの実行に必要なリソースを満たすか否かを検出することと、物理的なノードが、残りのリソースがターゲットタスクの実行に必要なリソースを満たさないと検出した場合、前記物理的なノードは、前記物理的なノードが前記タスクリストにおけるタスクを実行した後に得られる残りのリソースが前記ターゲットタスクの実行に必要なリソースを満たすまで、前記タスクリストにおける優先度が前記ターゲットタスクの優先度よりも低いタスクを、優先度の低い順で削除待ちのキューに順に移動し、前記ターゲットタスクを用いて前記削除待ちのキューにおけるタスクをプリエンプションすることと、前記物理的なノードが実行環境を呼び出し、前記ターゲットタスクを実行することとを含む上記方法実施例のタスクプリエンプション方法を実現する。
1つまたは複数のコンピュータ可読信号媒体の任意の組み合わせを採用してもよい。コンピュータ可読信号媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体であってもよい。コンピュータ可読記憶媒体は、例えば、電気、磁気、光、電磁、赤外線、または半導体のシステム、装置もしくは装置、または以上の任意の組み合わせであってもよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例(非網羅的なリスト)は、1つまたは複数の導線を有する電気的接続、携帯型コンピュータ磁気ディスク、ハードディスク、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、消去可能なプログラマブル読み出し専用メモリ(EPROMまたはフラッシュメモリ)、光ファイバ、携帯型コンパクト磁気ディスク読み出し専用メモリ(CD−ROM)、光記憶装置、磁気記憶装置、または上記任意の適当な組み合わせを含む。本明細書において、コンピュータ可読記憶媒体は、プログラムを含むまたは記憶する任意の有形媒体であってもよく、該プログラムは、命令実行システム、装置または装置により使用されてもよく、それと合わせて使用されてもよい。
コンピュータ可読信号媒体は、ベースバンドでまたはキャリアの一部として伝播するデータ信号を含んでもよく、その中にコンピュータ可読プログラムコードが担持されている。このような伝播するデータ信号は様々な形式を採用することができ、電磁信号、光信号または上記任意の適当な組み合わせを含むが、これらに限定されない。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体以外の任意のコンピュータ可読信号媒体であってもよく、該コンピュータ可読信号媒体は、命令実行システム、装置または装置に使用されるまたはそれと合わせて使用されるプログラムを送信、伝播または伝送することができる。
コンピュータ可読信号媒体に含まれるプログラムコードは、任意の適当な媒体で伝送でき、無線、電線、光ケーブル、RF等、または上記任意の適当な組み合わせを含むが、これらに限定されない。
本発明の操作を実行するためのコンピュータプログラムコードは、1種または複数種のプログラミング言語またはその組み合わせでプログラミングすることができ、前記プログラミング言語は、Java、Smalltalk、C++のようなオブジェクト指向プログラミング言語を含み、「C」言語または類似するプログラミング言語のような通常の手続き型プログラミング言語を更に含む。プログラムコードは、完全にユーザコンピュータで実行されてもよく、一部がユーザコンピュータで実行されてもよく、1つの独立したソフトウェアパッケージとして実行されてもよく、一部がユーザコンピュータで一部がリモートコンピュータで実行されてもよく、または完全にリモートコンピュータまたはサーバで実行されてもよい。リモートコンピュータに関する場合に、リモートコンピュータは、ローカルエリアネットワーク(LAN)または広域ネットワーク(WAN)を含む任意種のネットワークを介してユーザコンピュータに接続でき、または、外部のコンピュータ(例えば、インターネットサービスを提供するプロバイダを利用してインターネットを介して接続される)に接続できる。