(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-06-26
(54)【発明の名称】タスクのためのスケジューリング方法、コンピューティングデバイス、およびストレージ媒体
(51)【国際特許分類】
G06F 9/50 20060101AFI20230619BHJP
【FI】
G06F9/50 120A
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022558396
(86)(22)【出願日】2021-05-17
(85)【翻訳文提出日】2022-11-25
(86)【国際出願番号】 CN2021094117
(87)【国際公開番号】W WO2021238702
(87)【国際公開日】2021-12-02
(31)【優先権主張番号】202010475800.4
(32)【優先日】2020-05-29
(33)【優先権主張国・地域又は機関】CN
(81)【指定国・地域】
(71)【出願人】
【識別番号】511050697
【氏名又は名称】アリババ グループ ホウルディング リミテッド
(74)【代理人】
【識別番号】100079108
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【氏名又は名称】内藤 和彦
(72)【発明者】
【氏名】ホー,ミン
(72)【発明者】
【氏名】ジェン,シャオ
(72)【発明者】
【氏名】ロン,シン
(57)【要約】
タスクのためのスケジューリング方法、コンピューティングデバイス、およびストレージ媒体が提供される。方法は、実行予定の現在のタスクのタスク情報を獲得すること、実行予定の現在のタスクのための実際の実行時間をタスク情報に従って決定すること、実際の実行時間を、実行予定の現在のタスクに対応する事前設定済スケジューリング時間と比較し、実行予定の次のタスクをスケジューリングするべきかどうかを決定するために、実行予定の次のタスクに対応する実際のスケジューリング時間を比較結果に応じて調節することを含む。実際の実行時間を決定した後、実際の実行時間を、事前設定済スケジューリング時間と比較することによって、実行予定の次のタスクに対応する実際のスケジューリング時間が、タスクスケジューリングを実施するべきかどうかを決めるために調節されることが可能であり、したがって、素早く簡単なタスクスケジューリングおよびハードウェアリソースの完全な利用を実現する。その上、実際のスケジューリング時間が調節されるので、各タスクのための実際のスケジューリング時間が、正確かつ効率的にアロケートされることが可能であり、スケジューリング時間のバランスが、タスク間でとられることが可能である。
【特許請求の範囲】
【請求項1】
タスクのためのスケジューリング方法であって、
実行予定の現在のタスクのタスク情報を獲得するステップであって、前記タスク情報が、実行予定の前記現在のタスクを記述する、ステップと、
実行予定の前記現在のタスクのための実際の実行時間を前記タスク情報に従って決定するステップと、
前記実際の実行時間を、実行予定の前記現在のタスクに対応する事前設定済スケジューリング時間と比較し、実行予定の次のタスクをスケジューリングするべきかどうかを決定するために、実行予定の前記次のタスクに対応する実際のスケジューリング時間を比較結果に応じて調節するステップと
を含む、方法。
【請求項2】
実行予定の現在のタスクのタスク情報を獲得する前記ステップが、
実行予定の前記現在のタスクが持つストレージアドレスに従って前記タスク情報を獲得するステップ
を含む、請求項1に記載の方法。
【請求項3】
実行予定の前記現在のタスクのための実際の実行時間を前記タスク情報に従って決定する前記ステップが、
前記タスク情報を実行するための実際の実行時間を、実行予定の前記現在のタスクのための前記実際の実行時間として決定するステップ
を含む、請求項1に記載の方法。
【請求項4】
前記タスク情報を実行するための実際の実行時間を決定する前記ステップが、
事前設定済モデルに前記タスク情報を入力し、前記事前設定済モデルの出力を前記実際の実行時間として決定するステップ
を含む、請求項3に記載の方法。
【請求項5】
実行予定の前記現在のタスクのための実際の実行時間を前記タスク情報に従って決定する前記ステップが、
前記タスク情報を複数の事前設定済タスク情報とマッチングさせ、マッチング結果に従って、マッチした事前設定済タスク情報に対応する事前設定済実行時間を、前記実際の実行時間として選択するステップ
を含む、請求項1に記載の方法。
【請求項6】
実行予定の次のタスクに対応する実際のスケジューリング時間を前記比較結果に応じて調節する前記ステップが、
前記比較結果が、前記実際の実行時間が前記事前設定済スケジューリング時間より長いという結果であるとき、超過時間を決定するステップと、
更新された実際のスケジューリング時間を取得するために、同じソースからの実行予定の前記次のタスクに対応する前記実際のスケジューリング時間を前記超過時間に応じて調節し、その後の更新された実際のスケジューリング時間が0に短縮されるまで、前記更新された実際のスケジューリング時間を、前記同じソースからの実行予定のその後のタスクのための実際のスケジューリング時間として使用し続けるステップと
を含み、
実行予定の前記現在のタスクが、前記同じソースからの実行予定の初期タスクであるとき、実行予定の前記現在のタスクに対応する実際のスケジューリング時間は、前記同じソースからの実行予定の前記次のタスクに対応する前記実際のスケジューリング時間と同じであり、前記事前設定済スケジューリング時間である、
請求項1に記載の方法。
【請求項7】
前記その後の更新された実際のスケジューリング時間が0であるとき、実行予定の前記その後のタスクに対応する事前設定済スケジューリング時間の到来時に、実行予定の前記その後のタスクをスケジューリングしないと決定するステップ
をさらに含む、請求項6に記載の方法。
【請求項8】
実行予定の前記その後のタスクに対応する前記実際のスケジューリング時間が更新後0でないとき、対応する事前設定済スケジューリング時間の到来時に、実行予定の前記その後のタスクを前記実際の実行時間に応じてスケジューリングすると決定するステップ
をさらに含む、請求項1に記載の方法。
【請求項9】
実行予定の前記次のタスクをスケジューリングすると決定した後、実行予定の前記次のタスクを受信し、対応する事前設定済スケジューリング時間の到来を待ち、次いで、前記対応する実際の実行時間に応じてタスク処理を実施するために、実行予定の前記次のタスクを、対応する処理デバイスに送信するステップ
をさらに含む、請求項1または8に記載の方法。
【請求項10】
実行予定の前記その後のタスクを受信し、前記対応する事前設定済スケジューリング時間の前記到来時に、対応する実際の実行時間に応じてタスク処理を実施するために、他のソースからの実行予定のタスクを、対応する処理デバイスに送信するステップ
をさらに含む、請求項7に記載の方法。
【請求項11】
対応する次の事前設定済スケジューリング時間の到来を待ち、次いで、対応する実際の実行時間に応じてタスク処理を実施するために、実行予定の前記その後のタスクを、対応する処理デバイスに送信するステップ
をさらに含み、
前記対応する次の事前設定済スケジューリング時間の前記到来時に、実行予定の前記その後のタスクに対応する前記実際のスケジューリング時間が、前記事前設定済スケジューリング時間に等しい、
請求項10に記載の方法。
【請求項12】
実行予定の次のタスクに対応する実際のスケジューリング時間を前記比較結果に応じて調節する前記ステップが、
前記比較結果が、前記実際の実行時間が前記事前設定済スケジューリング時間より短いという結果であるとき、アイドリング時間を決定するステップと、
更新された実際のスケジューリング時間を取得するために、同じソースからの実行予定の前記次のタスクに対応する前記実際のスケジューリング時間を前記アイドリング時間に応じて調節し、前記更新された実際のスケジューリング時間を、前記同じソースからの実行予定のその後のタスクのための実際のスケジューリング時間として使用し続けるステップと
を含む、請求項1に記載の方法。
【請求項13】
前記比較結果が、前記実際の実行時間が前記事前設定済スケジューリング時間以下であるという結果であるとき、実行予定の前記次のタスクをスケジューリングすると決定するステップ
をさらに含む、請求項12に記載の方法。
【請求項14】
前記対応する実際のスケジューリング時間を更新するために、実行予定の前記現在のタスクのために、実行予定の前記現在のタスクに対応する前記実際のスケジューリング時間に、前記アイドリング時間を追加し、前記更新された実際のスケジューリング時間を、実行予定の前記次のタスクのための前記実際のスケジューリング時間として使用するステップ
をさらに含む、請求項12に記載の方法。
【請求項15】
前記同じソースからの実行予定のタスクに対応する事前設定済スケジューリング時間は同じである、請求項6~12のいずれか一項に記載の方法。
【請求項16】
実行予定の現在のタスクのタスク情報を獲得する前記ステップが、
通信インターフェースを介して、仮想デバイスによって送信された実行予定の前記現在のタスクを受信するステップ
を含む、請求項1に記載の方法。
【請求項17】
コンテナタスクのためのスケジューリング方法であって、
任意のコンテナによって送信された実行予定の現在のタスクを受信し、実行予定の前記現在のタスクのタスク情報を獲得するステップであって、前記タスク情報が、実行予定の前記現在のタスクを記述する、ステップと、
実行予定の前記現在のタスクのための実際の実行時間を前記タスク情報に従って決定するステップと、
前記実際の実行時間を、実行予定の前記現在のタスクに対応する事前設定済スケジューリング時間と比較し、同じコンテナからの実行予定の次のタスクをスケジューリングするべきかどうかを決定するために、前記同じコンテナからの実行予定の前記次のタスクに対応する実際のスケジューリング時間を比較結果に応じて調節するステップと
を含む、方法。
【請求項18】
任意のコンテナによって送信された実行予定の現在のタスクを受信する前記ステップが、
前記コンテナに対応する通信インターフェースに従って実行予定の前記現在のタスクを受信するステップ
を含み、
前記方法が、
コンテナ識別子に従って前記同じコンテナからの実行予定のタスクを決定するために、前記通信インターフェースに従って前記コンテナ識別子を決定するステップ
をさらに含む、請求項17に記載の方法。
【請求項19】
タスクのためのスケジューリング装置であって、
実行予定の現在のタスクのタスク情報を獲得するための獲得モジュールであって、前記タスク情報が、実行予定の前記現在のタスクを記述する、獲得モジュールと、
実行予定の前記現在のタスクのための実際の実行時間を前記タスク情報に従って決定するための決定モジュールと、
前記実際の実行時間を、実行予定の前記現在のタスクに対応する事前設定済スケジューリング時間と比較し、実行予定の次のタスクをスケジューリングするべきかどうかを決定するために、実行予定の前記次のタスクに対応する実際のスケジューリング時間を比較結果に応じて調節するための調節モジュールと
を備える、装置。
【請求項20】
コンテナタスクのためのスケジューリング装置であって、
任意のコンテナによって送信された実行予定の現在のタスクを受信し、実行予定の前記現在のタスクのタスク情報を獲得するための受信モジュールであって、前記タスク情報が、実行予定の前記現在のタスクを記述する、受信モジュールと、
実行予定の前記現在のタスクのための実際の実行時間を前記タスク情報に従って決定するための決定モジュールと、
前記実際の実行時間を、実行予定の前記現在のタスクに対応する事前設定済スケジューリング時間と比較し、同じコンテナからの実行予定の次のタスクをスケジューリングするべきかどうかを決定するために、前記同じコンテナからの実行予定の前記次のタスクに対応する実際のスケジューリング時間を比較結果に応じて調節するための調節モジュールと
を備える、装置。
【請求項21】
メモリおよびプロセッサを備えるコンピューティングデバイスであって、
前記メモリが、コンピュータプログラムを格納するために使用され、
前記プロセッサが、
実行予定の現在のタスクのタスク情報を獲得することであって、前記タスク情報が、実行予定の前記現在のタスクを記述することと、
実行予定の前記現在のタスクのための実際の実行時間を前記タスク情報に従って決定することと、
前記実際の実行時間を、実行予定の前記現在のタスクに対応する事前設定済スケジューリング時間と比較し、実行予定の次のタスクをスケジューリングするべきかどうかを決定するために、実行予定の前記次のタスクに対応する実際のスケジューリング時間を比較結果に応じて調節することと
を行うための前記コンピュータプログラムを実行するために使用される、コンピューティングデバイス。
【請求項22】
メモリおよびプロセッサを備えるコンピューティングデバイスであって、
前記メモリが、コンピュータプログラムを格納するために使用され、
前記プロセッサが、
任意のコンテナによって送信された実行予定の現在のタスクを受信し、実行予定の前記現在のタスクのタスク情報を獲得することであって、前記タスク情報が、実行予定の前記現在のタスクを記述することと、
実行予定の前記現在のタスクのための実際の実行時間を前記タスク情報に従って決定することと、
前記実際の実行時間を、実行予定の前記現在のタスクに対応する事前設定済スケジューリング時間と比較し、同じコンテナからの実行予定の次のタスクをスケジューリングするべきかどうかを決定するために、前記同じコンテナからの実行予定の前記次のタスクに対応する実際のスケジューリング時間を比較結果に応じて調節することと
を行うための前記コンピュータプログラムを実行するために使用される、コンピューティングデバイス。
【請求項23】
コンピュータプログラムを格納するコンピュータ可読ストレージ媒体であって、前記コンピュータプログラムが、1つまたは複数のプロセッサによって実行されると、請求項1~18のいずれか一項に記載の方法におけるステップを前記1つまたは複数のプロセッサに実行させることを特徴とする、コンピュータ可読ストレージ媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、2020年5月29日に出願され、「SCHEDULING METHOD FOR TASKS, COMPUTING DEVICE, AND STORAGE MEDIUM」と題する中国特許出願第202010475800.4号の優先権を主張し、これは、全体として参照により本明細書に組み込まれる。
【0002】
本出願は、コンピュータの技術分野に関し、詳細には、タスクのためのスケジューリング方法、コンピューティングデバイス、およびストレージ媒体に関する。
【背景技術】
【0003】
インターネットの急速な発展と共に、クラウドサービスは、低価格、拡張性の容易さ、スケーラビリティ、管理の容易さ、および高可用性など、従来のコンピューティングサービスより優れたいくつかの長所を有し、したがって、情報インターネット時代においてますます重要な位置を占める。さらに、クラウドサービスの分野において、コンテナ技術が、その特性により、広く使用される。
【発明の概要】
【発明が解決しようとする課題】
【0004】
それでも、人工知能の急速な発展により、ヘテロジニアス・コンピューティングが、クラウドサービスにとっての新たに出現したホットスポットになってきた。結果として、クラウドサーバは、複数の種類の物理的な処理デバイスなど、複数の種類のハードウェアリソースを収めることができるが、効率的かつ便利にこれらのハードウェアリソースをどのようにスケジューリングするかは、リソースのスケジューリングの鍵である。
【課題を解決するための手段】
【0005】
本出願の様々な態様は、ハードウェアリソースの効率的かつ便利なスケジューリングを実現する、タスクのためのスケジューリング方法、コンピューティングデバイス、およびストレージ媒体を提供する。
【0006】
本出願の実施形態は、実行予定の現在のタスクのタスク情報を獲得するステップであって、タスク情報が、実行予定の現在のタスクを記述する、ステップと、実行予定の現在のタスクのための実際の実行時間をタスク情報に従って決定するステップと、実際の実行時間を、実行予定の現在のタスクに対応する事前設定済スケジューリング時間と比較し、実行予定の次のタスクをスケジューリングするべきかどうかを決定するために、実行予定の次のタスクに対応する実際のスケジューリング時間を比較結果に応じて調節するステップと、を含む、タスクのためのスケジューリング方法を提供する。
【0007】
本出願の実施形態は、任意のコンテナによって送信された実行予定の現在のタスクを受信し、実行予定の現在のタスクのタスク情報を獲得するステップであって、タスク情報が、実行予定の現在のタスクを記述する、ステップと、実行予定の現在のタスクのための実際の実行時間をタスク情報に従って決定するステップと、実際の実行時間を、実行予定の現在のタスクに対応する事前設定済スケジューリング時間と比較し、同じコンテナからの実行予定の次のタスクをスケジューリングするべきかどうかを決定するために、同じコンテナからの実行予定の次のタスクに対応する実際のスケジューリング時間を比較結果に応じて調節するステップと、を含む、コンテナタスクのためのスケジューリング方法をさらに提供する。
【0008】
本出願の実施形態は、実行予定の現在のタスクのタスク情報を獲得するための獲得モジュールであって、タスク情報が、実行予定の現在のタスクを記述する、獲得モジュールと、実行予定の現在のタスクのための実際の実行時間をタスク情報に従って決定するための決定モジュールと、実際の実行時間を、実行予定の現在のタスクに対応する事前設定済スケジューリング時間と比較し、実行予定の次のタスクをスケジューリングするべきかどうかを決定するために、実行予定の次のタスクに対応する実際のスケジューリング時間を比較結果に応じて調節するための調節モジュールと、を備える、タスクのためのスケジューリング装置をさらに提供する。
【0009】
本出願の実施形態は、任意のコンテナによって送信された実行予定の現在のタスクを受信し、実行予定の現在のタスクのタスク情報を獲得するための受信モジュールであって、タスク情報が、実行予定の現在のタスクを記述する、受信モジュールと、実行予定の現在のタスクのための実際の実行時間をタスク情報に従って決定するための決定モジュールと、実際の実行時間を、実行予定の現在のタスクに対応する事前設定済スケジューリング時間と比較し、同じコンテナからの実行予定の次のタスクをスケジューリングするべきかどうかを決定するために、同じコンテナからの実行予定の次のタスクに対応する実際のスケジューリング時間を比較結果に応じて調節するための調節モジュールと、を備える、コンテナタスクのためのスケジューリング装置をさらに提供する。
【0010】
本出願の実施形態は、メモリおよびプロセッサを備えるコンピューティングデバイスをさらに提供し、メモリが、コンピュータプログラムを格納するために使用され、プロセッサが、実行予定の現在のタスクのタスク情報を獲得することであって、タスク情報が、実行予定の現在のタスクを記述することと、実行予定の現在のタスクのための実際の実行時間をタスク情報に従って決定することと、実際の実行時間を、実行予定の現在のタスクに対応する事前設定済スケジューリング時間と比較し、実行予定の次のタスクをスケジューリングするべきかどうかを決定するために、実行予定の次のタスクに対応する実際のスケジューリング時間を比較結果に応じて調節することと、を行うためのコンピュータプログラムを実行するために使用される。
【0011】
本出願の実施形態は、メモリおよびプロセッサを備えるコンピューティングデバイスをさらに提供し、メモリが、コンピュータプログラムを格納するために使用され、プロセッサが、任意のコンテナによって送信された実行予定の現在のタスクを受信し、実行予定の現在のタスクのタスク情報を獲得することであって、タスク情報が、実行予定の現在のタスクを記述することと、実行予定の現在のタスクのための実際の実行時間をタスク情報に従って決定することと、実際の実行時間を、実行予定の現在のタスクに対応する事前設定済スケジューリング時間と比較し、同じコンテナからの実行予定の次のタスクをスケジューリングするべきかどうかを決定するために、同じコンテナからの実行予定の次のタスクに対応する実際のスケジューリング時間を比較結果に応じて調節することと、を行うためのコンピュータプログラムを実行するために使用される。
【0012】
本出願の実施形態は、コンピュータプログラムを格納するコンピュータ可読ストレージ媒体をさらに提供し、コンピュータプログラムが、1つまたは複数のプロセッサによって実行されると、上述された本方法におけるステップを1つまたは複数のプロセッサに実行させる。
【0013】
本出願の実施形態では、実行予定の現在のタスクのタスク情報が獲得され、タスク情報が、実行予定の現在のタスクを記述し、実行予定の現在のタスクのための実際の実行時間が、タスク情報に従って決定され、実際の実行時間が、実行予定の現在のタスクに対応する事前設定済スケジューリング時間と比較され、実行予定の次のタスクに対応する実際のスケジューリング時間が、実行予定の次のタスクをスケジューリングするべきかどうかを決定するために比較結果に応じて調節される。実際の実行時間を決定した後、実際の実行時間を、事前設定済スケジューリング時間と比較することによって、実行予定の次のタスクに対応する実際のスケジューリング時間が、タスクスケジューリングを実施するべきかどうかを決めるように調節されることが可能であり、したがって、素早く簡単なタスクスケジューリングおよびハードウェアリソースの完全な利用を実現する。その上、実際のスケジューリング時間が調節されるので、各タスクのための実際のスケジューリング時間が、正確かつ効率的にアロケートされることが可能であり、スケジューリング時間のバランスが、タスク間でとられることが可能であり、したがって、実行予定の現在のタスクが、他のタスクのためのスケジューリング時間を過度に占有する状況を低減させる。
【0014】
さらに、タスクスケジューリングを実施するためのドライブ方法を獲得するためにデバイスドライバを使用しないので、これは、デバイスドライバがオープンソースであるか否か気にかける必要がない(すなわち、デバイスドライバはオープンソースでも非オープンソースでもよい)ことから、非オープンソースのデバイスドライバにとって非常に使いやすく、デバイスドライバの開発が低減されることが可能である。
【0015】
本明細書で示される添付の図面は、本出願のさらなる理解をもたらし、本出願の一部を形成するために使用される。本出願の概略的実施形態およびその記述は、本出願を説明するために使用されるが、本出願への不適切な限定とはみなされない。
【図面の簡単な説明】
【0016】
【
図1】本出願の例示的実施形態のタスクのためのスケジューリングシステムの概略構造図である。
【
図2】本出願の例示的実施形態のタスクのためのスケジューリング方法のフローチャートである。
【
図3】本出願の別の例示的実施形態のタスクのためのスケジューリング方法のフローチャートである。
【
図4】本出願の別の例示的実施形態のコンテナタスクのためのスケジューリング方法のフローチャートである。
【
図5】本出願の別の例示的実施形態において提供されるタスクのためのスケジューリング装置の概略構造図である。
【
図6】本出願の別の例示的実施形態において提供されるコンテナタスクのためのスケジューリング装置の概略構造図である。
【
図7】本出願の例示的実施形態において提供されるコンピューティングデバイスの概略構造図である。
【
図8】本出願の別の例示的実施形態において提供されるコンピューティングデバイスの概略構造図である。
【発明を実施するための形態】
【0017】
本出願の目的、技術的解決策、および長所を明らかにするために、本出願の技術的解決策は、本出願の特定の実施形態および対応する添付の図面と共に下記で明確かつ完全に記述される。明らかに、記述される実施形態は、本出願の実施形態の一部に過ぎず、実施形態の全てではない。本出願における実施形態に基づいて、発明的労働を何も行うことなく当業者によって取得される他の実施形態全てが、本出願の保護の範囲内に入る。
【0018】
コンテナ技術は、開発、配信、および導入で使用するために、標準化されたユニットにソフトウェアをパッケージ化するための技術である。これは、アプリケーション動作環境の一貫性を保証し、より高速な起動を実現し、分離、拡張性、移行の容易さ、ならびに持続可能な配信および導入などの特質を有する。上記の特質に基づいて、コンテナ技術は、クラウドサービスの分野において広く適用される。人工知能の急速な発展により、ヘテロジニアス・コンピューティングが、クラウドサービスにとっての新たに出現したホットスポットになってきた。
【0019】
GPU(グラフィックス処理ユニット)、NPU(ニューラルネットワーク処理ユニット)、およびコンテナなどの、複数の処理デバイスを収めるクラウドサーバでは、重要な核心部分は、本質的にスケジューリングアルゴリズムのオーバヘッドが十分小さくなるように保ちながら、GPUハードウェアリソースが、複数のコンテナにわたって途切れることなく共有されることが可能なように、GPUハードウェアリソースをどのようにして効率的かつ簡単にスケジューリングするかである。
【0020】
本出願の実施形態は、上記の要件を満たすことができ、オープンソースでないブラックボックスのGPUデバイスドライバをスケジューリングするためにうまく機能させることも可能な方法を提案する。
【0021】
本出願の実施形態によって提供される技術的解決策は、添付の図面と共に下記で詳細に説明される。
【0022】
図1は、本出願の例示的実施形態において提供されるタスクのためのスケジューリングシステムの概略構造図である。
図1に示されているように、このシステム100は、第1のデバイス101および第2のデバイス102を含むことができる。
【0023】
これらの中で、第1のデバイス101は、特定の計算能力を有するデバイスでよく、デバイスは、データを第2のデバイス102に送信すること、およびレスポンスデータを第2のデバイス102から獲得することという機能を実施することができる。第1のデバイス101の基本構造は、少なくとも1つのプロセッサを含むことができる。プロセッサの数は、特定の計算能力を有する装置の構成およびタイプに依存してよい。特定の計算能力を有する装置はメモリも含むことができ、メモリは、RAMなどの揮発性でよく、またはリードオンリメモリ(ROM)、フラッシュメモリなどの不揮発性でもよく、または両方のタイプを同時に含んでもよい。メモリは通常、オペレーティングシステム(OS)、1つまたは複数のアプリケーションを格納し、とりわけプログラムデータも格納することができる。処理ユニットおよびメモリに加えて、特定の計算能力を有する装置は、ネットワークカードチップ、IOバス、ディスプレイ構成要素、およびいくつかの周辺デバイスなど、いくつかの基本構成をさらに含む。代替として、これらのいくつかの周辺デバイスは、例えば、キーボード、入力ペン、および同様のものを含むことができる。他の周辺デバイスが当分野においてよく知られており、本明細書では詳述されない。代替として、第1のデバイス101は、例えば、セルフォン、デスクトップコンピュータ、ラップトップ、タブレット型コンピュータなどの、スマート端末でよい。
【0024】
第2のデバイス102は、ネットワーク仮想環境においてコンピューティングおよび処理サービスを提供することができるデバイスであり、ネットワークを使用して、データ処理を実施し、タスクスケジューリングを実施するデバイスでよい。物理的な実装形態の観点から、第2のデバイス102は、コンピューティングサービスを提供すること、サービスリクエストに応答すること、およびデータ処理結果を返すことができる任意のデバイスでよい。例えば、第2のデバイス102は、クラウドサーバ、クラウドホスト、仮想センタ、従来のサーバなどでよい。第2のデバイス102の構成物は主に、プロセッサ、ハードディスク、メモリ、システムバスなどを含み、共通のコンピュータアーキテクチャの構成物と同様である。
【0025】
本出願の実施形態では、第1のデバイス101は、データを第2のデバイス102に送信する。第2のデバイス102は、データを受信し、コンテナなどの対応する仮想デバイスにデータを送信する。第2のデバイス102には、コンテナなどの少なくとも1つの仮想デバイスが含まれる。一方で、第2のデバイス102は、デバイスドライバ(デバイスドライバ層またはデバイスドライバプログラムとも呼ばれることがある)、および中間ドライバ層をさらに含むことができる。タスクスケジューリングで使用するために、この中間ドライバ層にタスクスケジューラが提供されてもよい。中間ドライバ層は、通信インターフェースを介してデバイスドライバと通信する。第2のデバイス102における仮想デバイスがデータを受信したとき、仮想デバイスはデータを処理すること、すなわち、データを処理してタスク(すなわち、実行予定のタスク)を生成し、中間ドライバ層のタスクスケジューラにタスクを送信することを行う必要がある。タスクを受信すると、タスクスケジューラは、実行予定の現在のタスクのタスク情報を獲得するステップであって、タスク情報が、実行予定の現在のタスクを記述する、ステップと、実行予定のタスクのための実際の実行時間をタスク情報に従って決定するステップと、実際の実行時間を、実行予定の現在のタスクに対応する事前設定済スケジューリング時間と比較し、実行予定の次のタスク(同じソースからでも異なるソースからでもよい)をスケジューリングするべきかどうかを決定するために、実行予定の次のタスクに対応する実際のスケジューリング時間を比較結果に応じて調節するステップと、を行う。さらに、タスクスケジューラは、GPUなどの対応する処理デバイスがタスクを処理することを可能にするために、デバイスドライバを通じて実行予定のタスクを対応する処理デバイスに送信し、対応する処理デバイスは、タスクを処理した後、対応する仮想デバイスにタスクの結果を返す。仮想デバイスは、次いで、タスクの結果を第1のデバイス101に返す。
【0026】
仮想デバイスによってタスクの結果を第1のデバイス101に返すプロセスは、第2のデバイス102におけるデバイスドライバによる実行のプロセスでもよく、特定の実行プロセスは、上述されたものと同様であり、ここでは説明されないことに留意されたい。
【0027】
さらに、タスクスケジューラは、ドライバデバイスがオープンソースである場合、ドライバデバイスにおいて提供されてもよい。追加の中間ドライバ層を導入する必要はない。
【0028】
本出願の実施形態の応用シナリオでは、ユーザは、アカウント番号およびパスワードを持つことができるアカウントログインのリクエストなどのデータを、コンピュータなどの第1のデバイス101を介して、クラウドサーバなどの第2のデバイス102に送信する。ユーザは、第1のデバイス101にインストールされたブラウザを介してデータを送信することができる。コンテナ1など、第2のデバイス102における仮想デバイスは、このデータを受信し、アカウント番号およびパスワードを獲得する。コンテナ1は、第2のデバイス102の中間ドライバ層におけるタスクスケジューラにタスクを送信し、タスクは、アカウント番号およびパスワードが正しいかどうかを検証するための実行命令でよい。タスクを受信した後、タスクスケジューラは、タスクが持つストレージアドレスに基づいて上記の実行命令を獲得し、実際の実行時間の予測で使用するために、事前設定済モデルに実行命令を入力することができる。同時に、タスクスケジューラは、GPUなどの対応する処理デバイスにデバイスドライバを介してタスクを送信することができる。GPUは、タスクを受信した後、タスクを処理する。処理の結果が、アカウント番号およびパスワードが正しいというものである場合、結果が正しく、ログインが実施されることが可能であると決定されることが可能である。コンテナ1は、処理の結果を獲得し、第2のデバイス102を介してユーザのコンピュータに結果を返し、ログインが成功したことを示す。
【0029】
さらに、タスクスケジューラは、実際の実行時間を予測した後、実際の実行時間を、対応する事前設定済スケジューリング時間と比較し、実際の実行時間が事前設定済スケジューリング時間より長い場合、超過時間を決定する。タスクスケジューラは、コンテナ1からの実行予定の次のタスクのための実際のスケジューリング時間を短縮し、短縮された時間の規模は上記超過時間の規模であり、次いで、更新された実際のスケジューリング時間を、実行予定のその後のタスクのための実際のスケジューリング時間として使用する。コンテナ1からの実行予定のその後のタスクのための実際のスケジューリング時間が0に短縮されるように更新されるまで、タスクスケジューラは、次いで、実行予定のこのその後のタスクをスケジューリングするとき、スケジューリングを実施しないが、タスクスケジューリングが実施されることが可能な次のときを待ち、次いで、次の事前設定済スケジューリング時間が到来したとき、実行予定のこのタスクをスケジューリングすることができる。予測した実際の実行時間が事前設定済スケジューリング時間より短い場合、タスクスケジューラは、アイドリング時間を決定する。この場合、タスクスケジューラは、処理を何も実施しなくても、あるいは、実行予定の次のタスク(同じコンテナからのタスクでも、異なるコンテナからのタスクでもよい)のための実際のスケジューリング時間にこのアイドリング時間を補償してもよい。タスクスケジューラが、現在のタスクのための実際のスケジューリング時間の調節、およびタスクスケジューリングを実行した後、タスクスケジューラは、次のタスクのスケジューリングを実施する、すなわち前述の内容を繰り返す。
【0030】
本実施形態では、ネットワーク接続は、第1のデバイス101と第2のデバイス102との間で実施され、ネットワーク接続は、ワイヤレス接続でもよい。第1のデバイス101と第2のデバイス102との間に通信接続がある場合、モバイルネットワークのネットワーク規格は、2G(GSM)、2.5G(GPRS)、3G(WCDMA(登録商標)、TD-SCDMA、CDMA2000、UTMS)、4G(LTE)、4G+(LTE+)、WiMax、5Gなどのうちのいずれか1つでよい。
【0031】
タスクのためのスケジューリングプロセスが、方法の実施形態と共に下記で詳細に記述される。
【0032】
図2は、本出願の例示的実施形態のタスクのためのスケジューリング方法のフローチャートである。本出願の実施形態によって提供されるこの方法200は、例えば、クラウドサーバ、より詳細には、クラウドサーバにおけるタスクスケジューラなどの、コンピューティングデバイスによって実施される。この方法200は、以下の工程を含む。
201:実行予定の現在のタスクのタスク情報を獲得し、タスク情報は、実行予定の現在のタスクを記述する。
202:実行予定の現在のタスクのための実際の実行時間をタスク情報に従って決定する。
203:実際の実行時間を、実行予定の現在のタスクに対応する事前設定済スケジューリング時間と比較し、実行予定の次のタスクをスケジューリングするべきかどうかを決定するために、実行予定の次のタスクに対応する実際のスケジューリング時間を比較結果に応じて調節する。
【0033】
前述の内容によれば、タスクスケジューラは、クラウドサーバにおけるデバイスドライバにおいて、または中間ドライバ層において提供されてもよいことがわかり、中間ドライバ層は、デバイスドライバの上に導入されてもよく、すなわち、中間ドライバ層は、デバイスドライバに通信接続されることに留意されたい。タスクスケジューラが中間ドライバ層に導入される場合、デバイスドライバがオープンソースであるかどうか、またはデバイスドライバがサードパーティのものであるかどうかについて気にする必要はない。
【0034】
上記の工程の詳細が下記に提供される。
201:実行予定の現在のタスクのタスク情報を獲得し、タスク情報は、実行予定の現在のタスクを記述する。
【0035】
ここで、実行予定のタスク(以下で、実行予定タスクとも呼ばれることがある)は、クラウドサーバにおけるGPUで処理予定のタスクなど、物理デバイスにおけるハードウェアリソース(ハードウェアデバイスとも呼ばれることがある)で処理予定のタスクであり、タスクは、パスワードおよびユーザ名が正しいかどうかを検証するように少なくとも1つの処理デバイスに命令するタスクでもよい。実行予定の現在のタスクは、タスクスケジューラが現在、スケジューリングする準備をしているタスクである。
【0036】
ハードウェアリソースは、例えば、CPU、NPU、メモリ、ディスク、ネットワークなども含むことができる。処理デバイスに加えて、他のハードウェアデバイスが、処理デバイスを支援してタスク処理などを実施することもでき、したがって、他のハードウェアデバイスの利用のバランスもとることができる。
【0037】
実行予定の現在のタスクの獲得へのアプローチは、通信インターフェースを介して、仮想デバイスによって送信された実行予定の現在のタスクを受信することを含むことができ、各仮想デバイスは、独立した通信インターフェースに対応する。すなわち、各仮想デバイスは、通信インターフェースとの1対1の対応関係を有する。さらに、仮想デバイスと通信インターフェースのそれぞれが、IDなどの独自の識別子を有する。したがって、この対応関係に基づいて、実行予定の現在のタスクを受信すると、クラウドサーバにおけるタスクスケジューラは、実行予定の現在のタスクを伝送するために使用される通信インターフェースの識別子に基づいて、実行予定の現在のタスクが属する仮想デバイスについて知ることができる。
【0038】
ここで、この通信インターフェースは、ノードファイルを作成することによって通信を実現することができる。
【0039】
仮想デバイスは、物理デバイスのオペレーティングシステムをベースとして直接的に動作する、コンテナ、サンドボックスなどの、スタンドアロンデバイスである。ここで、物理デバイスは、クラウドサーバホストなどの物理ホストを指すこともある。仮想マシンについては、それは、物理デバイスのオペレーティングシステムをベースとして直接的に動作しているのではなく、このオペレーティングシステムをベースとして間接的に動作しており、仮想マシンは、独自の仮想オペレーティングシステム、およびまた、仮想CPUなどの仮想ハードウェアリソースなどを有しているが、これらは、実際には、物理デバイスのハードウェアリソースではなく、ハードウェアリソースの仮想化であることを理解されたい。
【0040】
さらに、本出願の実施形態を実装することができる仮想デバイスは、本出願の実施形態の保護の範囲内であり、コンテナに限定されない。
【0041】
仮想デバイスは、物理デバイス上に既に作成されていることにも留意されたい。または、言い換えれば、物理デバイスは、必要に応じて仮想デバイスを作成することができる。作成プロセスは従来技術に属するので、ここでは詳述されない。本出願の実施形態は、物理デバイスが、複数の仮想デバイスまたは少なくとも1つの仮想デバイスを既に作成した状況に基づくことを理解されたい。ここで、仮想デバイスは、物理デバイスにおいてユーザモードを作成することができ、ユーザモードは、オペレーティングシステム(例えば、Linux(登録商標)オペレーティングシステム)における特権レベルであり、ユーザモードでは、ユーザモードのプログラムは、オペレーティングシステムのクラッシュを回避するために、プロセッサ(例えば、CPU、GPUなど)における特権モードを要求する動作を実施することを許可されない。
【0042】
具体的には、実行予定の現在のタスクのタスク情報を獲得することは、実行予定の現在のタスクが持つストレージアドレスに従ってタスク情報を獲得することを含む。
【0043】
ここで、タスク情報は、例えば、実行予定の現在のタスクのための実行命令など、実行予定の現在のタスクを記述する。
【0044】
ストレージアドレスは、バッファのバッファアドレス、またはキャッシュのキャッシュアドレスなど、タスク情報の格納のためのアドレスである。
【0045】
ストレージアドレスを持つことに加えて、実行予定のタスクは、どの処理デバイスが、(処理デバイスの識別子を持つ)タスク処理を実施することになるか示す情報、および同様のものなど、他の情報も有することができることに留意されたい。
【0046】
例えば、クラウドサーバにおけるタスクスケジューラは、実行予定の現在のタスクa(以下で、タスクaとも呼ばれる)を受信し、実行予定の現在のタスクaを読み込み、タスクaが持つコマンドバッファのバッファアドレスをタスクaから獲得する。タスクスケジューラは、このバッファアドレスを読み込み、対応する実行命令を読み込む。すなわち、
図3に示されているように、工程301が実行され、コマンドバッファの情報を読み込む。
【0047】
このバッファアドレスは、対応するバッファの開始アドレスおよびバッファの長さでもよく、これらは、対応するバッファ内の対応するバッファロケーションから実行命令をタスクスケジューラが読み込むことを可能にすることに留意されたい。バッファアドレスは、また、バッファのヘッドおよびテールポインタでもよく、これは、対応するバッファ内の対応するバッファロケーションから実行命令をタスクスケジューラが読み込むことを可能にする。複数のバッファがある場合、バッファアドレスは、また、バッファの識別子などの情報を持つことができ、これは、タスクスケジューラが対応するバッファを見つけることを可能にする。
【0048】
202:実行予定の現在のタスクのための実際の実行時間をタスク情報に従って決定する。
【0049】
ここで、実際の実行時間は、実行予定のこのタスクを実行するための実行時間であり、具体的には、処理デバイスで実行予定のこのタスクを実行するための実際の実行時間である。
【0050】
実行予定の現在のタスクのための実際の実行時間をタスク情報に従って決定することは、タスク情報を実行するための実際の実行時間を、実行予定の現在のタスクのための実際の実行時間として決定することを含む。すなわち、タスク情報を実行することによって取得された実際の実行時間は、実行予定のこのタスクを実行するための実際の実行時間として使用される。
【0051】
ここで、実際の実行時間は、以下のように決定されてもよい。
【0052】
1).タスク情報を実行するための実際の実行時間を決定することは、事前設定済モデルにタスク情報を入力し、事前設定済モデルの出力を実際の実行時間として決定することを含む。
【0053】
ここで、事前設定済モデルは、タスク情報のための実際の実行時間を予測するためのモデルである。モデルは、ニューラルネットワークモデルでもよく、モデルは、訓練を通じて生成されてもよい。訓練の前に、複数のタスク情報(例えば、複数の実行命令)、および対応する処理デバイスのための実際の実行時間などの、対応する訓練データが獲得されてもよい。訓練プロセス中、この事前設定済モデルは、タスク情報を分析してそのタスク情報の特徴を獲得すること、および次いで、対応する実際の実行時間に従って訓練を実施することによって生成される。
【0054】
処理デバイスは、CPU、GPU、およびNPUなど、異なるタイプのものでよいので、処理デバイスのそれぞれのための実際の実行時間をそれぞれ予測する際に使用するために、異なるタイプの処理デバイスに応じて、複数の対応する事前設定済モデルが生成されてもよいことに留意されたい。
【0055】
モデルが生成されると、予測は実施されることが可能である。クラウドサーバにおけるタスクスケジューラは、対応する事前設定済モデルにタスク情報を入力することができ、例えば、実行命令がGPU処理デバイスのためのものである場合、実行命令は、GPUに対応する事前設定済モデルに入力され、GPUが実行命令を実行するための実際の実行時間として使用するために、この事前設定済モデルの出力を取得する。すなわち、
図3に示されているように、工程302が実施され、処理デバイスのための実際の実行時間を決定する。
【0056】
2).実行予定の現在のタスクのための実際の実行時間をタスク情報に従って決定することは、タスク情報を複数の事前設定済タスク情報とマッチングさせ、マッチング結果に従って、マッチした事前設定済タスク情報に対応する事前設定済実行時間を、実際の実行時間として選択することを含む。
【0057】
さらに、クラウドサーバは、複数の実行命令、および、異なる処理デバイスに対応する実際の実行時間も獲得し、このような情報をローカルな事前設定済ストレージ領域またはデータベースサーバに格納することができ、クラウドサーバにおけるタスクスケジューラが実行命令などのタスク情報を獲得した後、タスクスケジューラは、この実行命令を、獲得した複数の実行命令と比較またはマッチングさせ、特定の閾値内の類似性を有するかまたは同じである実行命令を決定し、決定した実行命令に従って対応する実際の実行時間を獲得する。
【0058】
実際の実行時間は、処理デバイスによって異なってもよいので、実行命令は、複数の実際の実行時間を格納することができ、異なる処理デバイスは、異なる実際の実行時間に対応し、対応する実際の実行時間は、タスク情報に必要な処理デバイスに基づくタスクスケジューラのために決定されることを理解されたい。
【0059】
203:実際の実行時間を、実行予定の現在のタスクに対応する事前設定済スケジューリング時間と比較し、実行予定の次のタスクをスケジューリングするべきかどうかを決定するために、実行予定の次のタスクに対応する実際のスケジューリング時間を比較結果に応じて調節する。
【0060】
ここで、事前設定済スケジューリング時間は、事前設定済時間スライスとも呼ばれることがあるが、ハードウェアリソースを占有するために使用される時間であり、通常、10ms(ミリ秒)などの期間である。プロセッサの例を使用して説明が下記で提供される。例えば、CPUに対しては、複数の時間スライスが各CPUのために分割され、異なるコンテナに割り当てられてもよく、これにより、CPUは、時間スライスに従ってコンテナからの処理予定タスクを処理することができ、したがって、CPUがある期間にわたって複数のタスクを処理することを可能にする。さらに、マルチコアCPUに対しては、複数の時間スライスが各コアのために分割され、異なるコンテナに割り当てられてもよく、これにより、CPUコアは、時間スライスに従ってコンテナからの処理予定タスクを処理することができ、したがって、CPUがある期間にわたって複数のタスクを処理することを可能にする。状況は、GPUおよびNPUに対しても同様であるが、ここでは詳述されない。これは、他のハードウェアリソースの分割のための基礎としても使用されてよい。したがって、クラウドサーバは、コンテナなどの異なる仮想デバイスのために時間スライスを分割することができる。同じコンテナのための事前設定済時間スライスは同じであり、すなわち事前設定済スケジューリング時間は同じである。したがって、同じコンテナからの実行予定の異なるタスクのための事前設定済時間スライスも同じである。時間スライスは、異なるコンテナによって異なっても同じでもよい。事前設定済スケジューリング時間は、タスクスケジューラによって事前分割されてもよい。
【0061】
事前設定済スケジューリング時間に対応した実際のスケジューリング時間もある。実際のスケジューリング時間は、処理デバイスが実際に、事前設定済スケジューリング時間を考慮に入れて、実行予定のタスク上でタスク処理を実施することを可能にしなければならない可能性がある時間を指す。
【0062】
対応する事前設定済スケジューリング時間が各コンテナに対して設定されるが、処理デバイスなどのハードウェアリソースで実行予定のタスクのための実行時間は、事前設定済スケジューリング時間を超過してもよく、後で投入される実行予定のタスクのための事前設定済スケジューリング時間を占有する。例えば、GPU1処理デバイスに対して、タスクスケジューラは最初に、タスク処理のためにコンテナ1からのタスク1をGPU1にスケジューリングしてもよいが、GPU1は、このタスク1を処理するのに非常に時間が掛かり、事前設定済スケジューリング時間を超過するので、その後のタスクのための処理時間が短縮される。例えば、タスク1の後にGPU1が処理するのを待っているタスクは、現時点で、コンテナ2からのタスク2であり、タスク2のためのスケジューリング時間が占有されているので、タスク2は、独自の事前設定済スケジューリング時間を完全に利用することができず、コンテナ2のサービス品質(QoS)に影響を及ぼす。
【0063】
したがって、どのくらいの時間、各コンテナにおける各タスクが処理デバイスを実際に占有できるか、すなわち、どのくらいの時間が各タスクのために実際に利用可能であるかを数量化するために、実際のスケジューリング時間がここで設定される。
【0064】
例えば、上述のように、クラウドサーバにおけるタスクスケジューラは、コンテナAによって送信されたタスクaを受信すると、このタスクaがGPU1の対象であることを決定し、GPUを通じてタスクaの処理の実際の実行時間も決定する。タスクスケジューラは、15msの実際の実行時間を、コンテナAに対応する10msの事前設定済スケジューリング時間と比較し、事前設定済スケジューリング時間より実際の実行時間が長いことを検出し、したがって、タスクスケジューラは、コンテナAからの実行予定の次のタスクのための実際のスケジューリング時間を短縮する。すなわち、
図3に示されているように、工程303が実行され、次の実際のスケジューリング時間を短縮する。このように、コンテナAからの実行予定の次のタスクのためのスケジューリング時間は、他のコンテナから処理予定のタスクためのスケジューリング時間を補償するために使用される。
【0065】
さらに、タスクスケジューラは、7msの実際の実行時間をコンテナAに対応する10msの事前設定済スケジューリング時間と比較し、実際の実行時間が事前設定済スケジューリング時間より短いことを検出し、したがってこの場合、タスクスケジューラは、対応する処理デバイスをアイドリングさせてもよく、またはコンテナAからの実行予定の次のタスクのための実際のスケジューリング時間を補償してもよい。
図3に示されているように、工程305が実行され、アイドリング時間を決定するか、または次の実際のスケジューリング時間を補償する。
【0066】
実際の実行時間がコンテナAに対応する事前設定済スケジューリング時間に等しいことをタスクスケジューラが検出した場合、タスクスケジューラは、調節を実施しないことも、低減された現在のスケジューリング時間(すなわち、実際のスケジューリング時間)を維持することもできることに留意されたい。
【0067】
さらに、実行予定の現在のタスクに対しては、実行予定の現在のタスクがコンテナ初期化フェーズ中である、すなわち、コンテナによって送信された実行予定の現在のタスクが、このコンテナからの実行予定の第1のタスクである場合、実際のスケジューリング時間は、事前設定済スケジューリング時間であり、その後の更新で使用するために、このコンテナからの実行予定の第2のタスクのための実際のスケジューリング時間として使用され続けてもよい。この時点で、工程302を実施する前に、タスクスケジューラは、工程306を実施してもよく、処理デバイスによるタスク処理のために処理デバイスにタスクを投入する。コンテナAからタスクを受信すると、タスクスケジューラは、実行命令を獲得し、次いで、タスク処理のために対応するGPUにタスクaを直接投入する。一方、ある期間、コンテナが動作していた場合、タスクスケジューラは、タスクaを受信すると、現在のタスクが属するコンテナAのための実際のスケジューリング時間が0であるかどうかを最初に検出してもよく、0である場合、タスクスケジューラは、どの処理も実施せず、工程306を実行せず、工程306および実際のスケジューリング時間を調節する工程を実施する前に、次の事前設定済スケジューリング時間の到来を待たなければならない。
【0068】
実行予定の現在のタスクに対しては、同じソースからの実行予定の次のタスクに対応する実際のスケジューリング時間の調節を完了させた後、タスクスケジューラは、実行予定のこの次のタスクをスケジューリングすること、および実際のスケジューリング時間を調節することを続けることができる。すなわち、工程304が実行され、次のタスクスケジューリングを実施する。
【0069】
工程203の特定の実装形態は以下のようなものである。
【0070】
ここで、実行予定の次のタスクに対応する実際のスケジューリング時間を比較結果に応じて調節することは、比較結果が、実際の実行時間が事前設定済スケジューリング時間より長いという結果であるとき、超過時間を決定することと、更新された実際のスケジューリング時間を取得するために、同じソースからの実行予定の次のタスクに対応する実際のスケジューリング時間を超過時間に応じて調節し、その後の更新された実際のスケジューリング時間が0に短縮されるまで、更新された実際のスケジューリング時間を、同じソースからの実行予定のその後のタスクのための実際のスケジューリング時間として使用し続けることとを含み、実行予定の現在のタスクが、同じソースからの実行予定の初期タスクであるとき、実行予定の現在のタスクに対応する実際のスケジューリング時間は、同じソースからの実行予定の次のタスクに対応する実際のスケジューリング時間と同じであり、事前設定済スケジューリング時間である。
【0071】
例えば、上述のように、タスクスケジューラは、コンテナAから送信されたタスクa(すなわち、実行予定の現在のタスク)を受信し、タスクaの実行命令を獲得し、これにより、対応する実際の実行時間が15msであると決定し、対応する実際の実行時間を、コンテナAのための10msの事前設定済スケジューリング時間と比較し、超過時間が5msであると決定する。次いで、タスクスケジューラが、タスクbなどの、コンテナAによって送信されたタスクを次に受信したとき、その実際のスケジューリング時間は、10-5=5msであり、すなわち、元の10msから5msまで変化し(この場合、事前設定済スケジューリング時間は、超過時間がない場合、実際のスケジューリング時間と考えられてもよく、例えば、タスクaがコンテナAからの第1のタスクである場合、またはコンテナAからの以前のタスクのどれも、超過時間もしくはアイドリング時間を有していない場合、タスクaのための実際のスケジューリング時間は、事前設定済スケジューリング時間であり、タスクbのための実際のスケジューリング時間として使用されることが可能である)、その後、タスクbのための実際のスケジューリング時間は、5msに更新され、コンテナAからの次のタスクcのための実際のスケジューリング時間として使用される。それでも、タスクaに対応する実際のスケジューリング時間は、事前設定済スケジューリング時間であり、0より長いので、タスクスケジューラは、タスクbの実際のスケジューリング時間を計算する前に、GPU1などの対応する処理デバイスにタスクaを送信することになり、GPU1は、タスク処理を実施するために、タスク内のストレージアドレスから実行命令を獲得することができる。タスクbのための実際のスケジューリング時間が5msに更新されるが、さらに0より長いので、タスクbも、タスクスケジューラによってスケジュールされ、対応する処理デバイスによって処理されてもよい。タスクbのための実際の実行時間も15msである場合、タスクbのための実際の実行時間は、10msの事前設定済スケジューリング時間より長く、超過時間も5msである。したがって、タスクcなどのコンテナAからの実行予定のさらに次のタスクについては、その実際のスケジューリング時間は、5msから0msに、すなわち5-5=0に更新されることになる。この時点で、タスクcを受信した後、タスクスケジューラは、その事前設定済スケジューリング時間の到来時に、このタスクcをスケジューリングせず、待たなければならない。
【0072】
実行予定のその後のタスクは、実行予定の現在のタスクに続くタスク、または、実行予定の次のタスクに続くタスクと呼ばれることがあることを理解されたい。
【0073】
実際のスケジューリング時間の調節は、他のコンテナなどの他の仮想デバイスのためのスケジューリング時間を強制的に占有させないようにし、したがって、サービス品質(QoS)要件を満たしながらスケジューリングの公平性を保証し、さらに、いくつかのプログラムによる他のコンテナなどの他の仮想デバイスの時間スライス(すなわち、事前設定済スケジューリング時間)の悪意のある占有を回避し、したがって、コンテナのスケジューリングのセキュリティを保証することに留意されたい。
【0074】
超過時間に基づいて、実際のスケジューリング時間は調節され、その特定のプロセスは以下のようなものである。
【0075】
具体的には、方法200は、実行予定の現在のタスクのために、超過時間を、実行予定の現在のタスクに対応する実際のスケジューリング時間に短縮して、対応する実際のスケジューリング時間を更新し、更新された実際のスケジューリング時間を、実行予定の次のタスクのための実際のスケジューリング時間として使用することをさらに含む。
【0076】
これは既に上述されたので、ここでは詳述されない。
【0077】
上述された待つプロセスは、具体的には以下のようなものでよく、方法200は、その後の更新された実際のスケジューリング時間が0であるとき、実行予定のその後のタスクに対応する事前設定済スケジューリング時間の到来時に、実行予定のその後のタスクをスケジューリングしないと決定することをさらに含む。
【0078】
例えば、上述のように、タスクスケジューラがタスクcを受信した後、その実際のスケジューリング時間は0に更新され、次いで、タスクスケジューラは、タスクcが属するコンテナに対応する事前設定済スケジューリング時間の到来を待ち、このタスクcをこれ以上スケジューリングしない。すなわち、タスクスケジューラは、タスク処理のためのGPU1などの対応する処理デバイスにデバイスドライバを通じてタスクcを送信しない。
【0079】
しかしながら、タスクcのための実際のスケジューリング時間が更新後0でない場合、またはその後のタスクのための実際のスケジューリング時間が更新後0でない場合、スケジューリングが実施されることが可能である。
【0080】
具体的には、方法200は、実行予定のその後のタスクに対応する実際のスケジューリング時間が更新後0でないとき、対応する事前設定済スケジューリング時間の到来時に、実行予定のその後のタスクを実際の実行時間に応じてスケジューリングすると決定することをさらに含む。
【0081】
例えば、上述のように、タスクスケジューラがタスクbを受信した後、実際のスケジューリング時間が5msに更新されるので、タスクbを受信した後、タスクスケジューラは、コンテナAための事前設定済スケジューリング時間が到来するまで待った後、タスク処理のためのGPU1などの対応する処理デバイスにクラウドサーバのドライバデバイスを通じてタスクbを送信する。一方で、GPU1がタスクbを処理するための実際の実行時間は、上記で予測されたように、15msである。
【0082】
タスクbのための実際の実行時間が15msなので、タスクスケジューラは、処理デバイスがタスクbの処理を終了したかどうかを決定するためにポーリングすることによって、15msよりも前に処理デバイスにアクセスし、処理デバイスが処理を終了したと決定した後、次のタスクを送信することができることに留意されたい。通常の状況では、処理デバイスは、ちょうど15msでタスクの処理を終了することができるか、代替として、15msに対する誤差のマージンの中でタスクの処理を終了することができる。
【0083】
実行予定の現在のタスクのスケジューリングが完了された後、実行予定の次のタスクをスケジューリングするべきかどうかが決定されることが可能であり、スケジューリングが実施されるべきであると決定された後、タスクスケジューリングが実施される。
【0084】
具体的には、方法200は、実行予定の次のタスクをスケジューリングすると決定した後、実行予定の次のタスクを受信し、対応する事前設定済スケジューリング時間の到来を待ち、次いで、対応する実際の実行時間に応じてタスク処理を実施するために、実行予定の次のタスクを、対応する処理デバイスに送信することをさらに含む。
【0085】
これは既に上述されたので、ここでは詳述されない。実行予定のその後のタスクをスケジューリングしない場合、その事前設定済スケジューリング時間は、他のソースからのタスクへの補償とされてもよく、したがって、タスクのためのスケジューリング時間のバランスをとることを可能にする。
【0086】
具体的には、方法200は、実行予定のその後のタスクを受信し、対応する事前設定済スケジューリング時間の到来時に、対応する実際の実行時間に応じてタスク処理を実施するために、他のソースからの実行予定のタスクを、対応する処理デバイスに送信することをさらに含む。
【0087】
例えば、上述のように、タスクスケジューラは、対応する事前設定済スケジューリング時間の到来時にタスクcをスケジューリングせず、コンテナBからのタスクmなどの、このタスクcに続く他のコンテナからのタスクなど、他のタスクをスケジューリングすることができる。これは、コンテナAのための次の事前設定済スケジューリング時間の到来の前に、他のコンテナからのその後のスケジューリング可能タスクのスケジューリングを可能にし、したがって、使用のために、コンテナAのための現在のスケジューリング時間を他のコンテナと共有する。
【0088】
タスクスケジューラによる他のソースからの実行予定のタスクのスケジューリングは、上述されたスケジューリングプロセスと同じなので、ここでは詳述されない。説明しておくと、どのコンテナからのタスクでも、本出願の実施形態のスケジューリング方法を使用して、全てスケジューリングされることが可能である。他のコンテナからのタスクに対しては、実際のスケジューリング時間を更新し、タスクがスケジューリングされるのを待つ場合もあるが、これは、ここでは詳細に論じられない。
【0089】
さらに、クラウドサーバには複数のコンテナがあるので、タスクスケジューラは、実行予定の複数のタスクを受信してもよく、これらのタスクは、処理のために待ち行列に入れられなければならず、この場合、これらが属するコンテナのための事前設定済スケジューリング時間の到来後、およびこの待ち行列の順序で、タスクが順次処理される。
【0090】
タスクスケジューラによってタスクが時間内にスケジューリングされず、スケジューリングされるのを待つと決定された場合、タスクがスケジューリングされることが可能になるまで待った後、その具体的なスケジューリングプロセスは以下のようなものでよい。方法200は、対応する次の事前設定済スケジューリング時間の到来を待ち、次いで、対応する実際の実行時間に応じてタスク処理を実施するために、実行予定のその後のタスクを、対応する処理デバイスに送信することをさらに含み、対応する次の事前設定済スケジューリング時間の到来時に、実行予定のその後のタスクに対応する実際のスケジューリング時間が、事前設定済スケジューリング時間に等しい。
【0091】
例えば、上述のように、タスクスケジューラは、タスクcをスケジューリングせず、その代わりに、タスクcが待ち状態であると決定した後、タスクcが属するコンテナAのための次の事前設定済スケジューリング時間の到来を待つ。
【0092】
本出願の実施形態では、コンテナ内のタスクは、別のコンテナからのタスクのためのスケジューリング時間を占有することができるが、別のコンテナのためのスケジューリング時間は補償されることになることに留意されたい。それでも、別のコンテナのためのスケジューリング時間が占有された後、別のコンテナからのタスクは、時間どおりに正確に、対応する処理デバイスにスケジューリングされなくてもよい。すなわち、別のコンテナからのタスクは、事前設定済スケジューリング時間の到来の直後にスケジューリングされることは可能でなく、いくらかの時間の遅延があることになる。それでも、タスクは、対応する事前設定済スケジューリング時間が到来した後にのみ、スケジューリングされることが可能であり、タスクは、タスクスケジューラがポーリングして、対応する処理デバイスが現在のタスクを完了させたことがわかった後にのみ、対応する処理デバイスにスケジューリングされることが可能である。
【0093】
実際の実行時間が、事前設定済スケジューリング時間より長いことに加えて、実際の実行時間が事前設定済スケジューリング時間より短い可能性もあり、この場合、実際のスケジューリング時間は、以下のように調節される。
【0094】
具体的には、実行予定の次のタスクに対応する実際のスケジューリング時間を比較結果に応じて調節することは、比較結果が、実際の実行時間が事前設定済スケジューリング時間より短いという結果であるとき、アイドリング時間を決定することと、更新された実際のスケジューリング時間を取得するために、同じソースからの実行予定の次のタスクに対応する実際のスケジューリング時間をアイドリング時間に応じて調節し、更新された実際のスケジューリング時間を、同じソースからの実行予定のその後のタスクのための実際のスケジューリング時間として使用し続けることとを含む。
【0095】
例えば、上述のように、タスクスケジューラは、コンテナAから送信されたタスクa(すなわち、実行予定の現在のタスク)を受信し、タスクaの実行命令を獲得し、これにより、対応する実際の実行時間が7msであると決定し、対応する実際の実行時間を、コンテナAのための10msの事前設定済スケジューリング時間と比較し、アイドリング時間が3msであると決定する。次いで、タスクスケジューラが、タスクbなどの、コンテナAによって送信されたタスクを次に受信したとき、その実際のスケジューリング時間は10+3=13msであり、すなわち、元の10msから13msまで変化し(この場合、事前設定済スケジューリング時間は、超過時間がない場合、実際のスケジューリング時間と考えられてもよく、例えば、タスクaがコンテナAからの第1のタスクである場合、またはコンテナAからの以前のタスクのどれも、超過時間もしくはアイドリング時間を有していない場合、タスクaのための実際のスケジューリング時間は、事前設定済スケジューリング時間であり、タスクbのための実際のスケジューリング時間として使用されることが可能である)、その後、タスクbのための実際のスケジューリング時間は、13msに更新され、コンテナAからの次のタスクcのための実際のスケジューリング時間として使用される。
【0096】
そのアイドリング時間を同じコンテナからのタスクに与えることに加えて、このアイドリング時間を直接的にアイドリングさせることも可能であり、したがって、対応する処理デバイスがアイドリング状態であることを可能にすることに留意されたい。さらに、補償または援助等を提供するためにアイドリング状態のアイドリング時間を他のコンテナからのタスクに分配させることも可能である。
【0097】
アイドリング時間があると決定した後、タスクはスケジューリングされることが可能である。
【0098】
具体的には、方法200は、比較結果が、実際の実行時間が事前設定済スケジューリング時間以下であるという結果であるとき、実行予定の次のタスクをスケジューリングすると決定することをさらに含む。
【0099】
例えば、上述のように、タスクaが3msのアイドリング時間を有しているとタスクスケジューラが決定し、タスクbのための実際のスケジューリング時間が0より長い13msに更新された場合、タスクスケジューラは、タスクbを受信すると同時に、タスクbをスケジューリングすることができる。
【0100】
タスクaのための実際の実行時間が、事前設定済スケジューリング時間に等しい10msである場合、タスクbのための実際のスケジューリング時間は更新されず、10msまたは0より長い他の値のままになり(実際のスケジューリング時間が0に等しい値である場合、タスクaはスケジューリング可能ではないので、ここでは、タスクaがスケジューリング可能であり、待ち状態ではないことが仮定される)、タスクbがスケジューリングされてもよいことを理解されたい。
【0101】
ここで、アイドリング時間に基づいて実際のスケジューリング時間を調節する具体的なプロセスは以下のようなものである。
【0102】
具体的には、方法200は、実行予定の現在のタスクのために、実行予定の現在のタスクに対応する実際のスケジューリング時間にアイドリング時間を増加させて、対応する実際のスケジューリング時間を更新し、更新された実際のスケジューリング時間を、実行予定の次のタスクのための実際のスケジューリング時間として使用することをさらに含む。
【0103】
これは既に上述されたので、ここでは詳述されない。
【0104】
実際のスケジューリング時間が0に更新された後、対応するタスクは当分、スケジューリング可能ではないので、タスクは、タスクがスケジューリングされることが可能になる前に、次の事前設定済スケジューリング時間の到来を待たなければならない。この時点で、タスクは、他のコンテナからのタスクに対して、もはやスケジューリング時間を負っていないので、その実際のスケジューリング時間も、事前設定済スケジューリング時間にリセットされてよい。具体的なプロセスは以下のようなものである。
【0105】
具体的には、方法200は、以下をさらに含む。更新された実際のスケジューリング時間が0である場合、実行予定の次のタスクに対応する実際のスケジューリング時間は、実行予定の次のタスクがスケジューリングされることが可能であると決定された場合、事前設定済スケジューリング時間に等しい。
【0106】
例えば、上述のように、タスクcのための実際のスケジューリング時間が0に更新された後、コンテナAのための次の事前設定済スケジューリング時間の到来が待たれ、到来すると、タスクcがスケジューリングされることが可能である。次いで、タスクcの実際のスケジューリング時間も10msにリセットされ、この10msという時間は、事前設定済スケジューリング時間に等しく、タスクスケジューラがその後にタスクdを受信したとき、10msというこの実際のスケジューリング時間が更新されるように、タスクdなどのコンテナAからの実行予定の次のタスクのための実際のスケジューリング時間として使用されてもよい。具体的な更新プロセスについては、上述されたものを参照することができる。
【0107】
タスクb、c、dなど、本出願の実施形態において現れるその後のタスクは、実施例の明らかな説明を可能にすることだけを意図するものであり、これらのタスクが識別されること、および、識別子が適合された場合にのみ本解決策が実行されることが可能であること示すことを意図するものではなく、むしろ、これらの識別子は、これらのタスクが、同じコンテナからのその後のタスクであることを単に示すことに留意されたい。
【0108】
さらに、実際のスケジューリング時間を調節するプロセスでは、実際のスケジューリング時間は、正確に0に直接的に更新されなくてもよく、5msから-1msに更新されてもよいので、この場合、調節プロセスは以下のようなものである。
【0109】
具体的には、方法200は、同じソースからの実行予定のその後のタスクに対応する実際のスケジューリング時間が、正の数から負の数に直接的に短縮されるとき、この負の数と0との間の差分値を決定することと、同じソースからの実行予定のその後のタスクに対応する実際のスケジューリング時間を0に調節することと、同じソースからの実行予定のその後のタスクを受信すること、および、対応する事前設定済スケジューリング時間の到来時に、他のソースからの実行予定のタスクを、対応する処理デバイスに送信することと、対応する次の事前設定済スケジューリング時間の到来を待ち、次いで、対応する実際の実行時間に応じてタスク処理を実施するために、同じソースからの実行予定のその後のタスクを、対応する処理デバイスに送信することと、をさらに含み、対応する次の事前設定済スケジューリング時間の到来時に、同じソースからの実行予定のその後のタスクに対応する実際のスケジューリング時間が、事前設定済スケジューリング時間と差分値との間の差に等しい。
【0110】
例えば、上述のように、タスクスケジューラは、コンテナAから送信されたタスクa(すなわち、実行予定の現在のタスク)を受信し、タスクaの実行命令を獲得し、これにより、対応する実際の実行時間が16msであると決定し、対応する実際の実行時間を、コンテナAのための10msの事前設定済スケジューリング時間と比較し、超過時間が6msであると決定する。次いで、タスクスケジューラが、タスクbなどの、コンテナAによって送信されたタスクを次に受信したとき、タスクの実際のスケジューリング時間は10-6=4msであり、すなわち、元の10msから4msに変化し(この場合、事前設定済スケジューリング時間は、超過時間がない場合、実際のスケジューリング時間と考えられてもよく、例えば、タスクaがコンテナAからの第1のタスクである場合、またはコンテナAからの以前のタスクのどれも、超過時間もしくはアイドリング時間を有していない場合、タスクaのための実際のスケジューリング時間は、事前設定済スケジューリング時間であり、タスクbのための実際のスケジューリング時間として使用されることが可能である)、その後、タスクbのための実際のスケジューリング時間が4msに更新され、コンテナAからの次のタスクcのための実際のスケジューリング時間として使用される。タスクbを受信した後、タスクスケジューラは、タスクbの実際の実行時間が16msであり、タスクbの超過時間が6msであると決定し、次いで、タスクスケジューラは、タスクbの実際のスケジューリング時間を4-6=-2msに更新する。この時点で、タスクスケジューラは、次いで、実際のスケジューリング時間を0msに直接的に更新し、これを、タスクcのための実際のスケジューリング時間として使用してもよく、同時に2msを差分値として決定する。タスクスケジューラは、タスクaおよびタスクbをスケジューリングすることができるが、当分、タスクcをスケジューリングすることができず、待たなければならない。対応する事前設定済スケジューリング時間の到来後、タスクcは当分、スケジューリングされず、他のコンテナからのその後のタスクがスケジューリングされてもよく、次の事前設定済スケジューリング時間の到来が待たれ、その後、タスクcがスケジューリングされてもよい。このとき、タスクcのための実際のスケジューリング時間が0であるが、リスケジューリングの場合、タスクcの実際のスケジューリング時間が、事前設定済スケジューリング時間に等しい10msにリセットされることが可能であるので、このコンテナAからの次のタスクdのための実際のスケジューリング時間は、10ms-2=8msに更新されることが可能である。
【0111】
本出願の実施形態におけるタスクスケジューリングは、デバイスドライバがオープンソースであるか否かに関係がなく、オープンソースまたは非オープンソースのデバイスドライバを用いて処理デバイスに簡単に適用されることが可能であり、したがって、より広い応用範囲を有することに留意されたい。
【0112】
上述された同じ発明概念に基づいて、
図4は、本出願の別の例示的実施形態によって提供されるコンテナタスクのためのスケジューリング方法のフローチャートを示す。本出願の実施形態によって提供される方法400は、上述のクラウドサーバ、より具体的には、クラウドサーバにおいて提供されるタスクスケジューラによって実行される。
図4に示されているように、方法400は、以下の工程を含む。
401:任意のコンテナによって送信された実行予定の現在のタスクを受信し、実行予定の現在のタスクのタスク情報を獲得し、タスク情報は、実行予定の現在のタスクを記述する、
402:実行予定の現在のタスクのための実際の実行時間をタスク情報に従って決定する、および
403:実際の実行時間を、実行予定の現在のタスクに対応する事前設定済スケジューリング時間と比較し、同じコンテナからの実行予定の次のタスクをスケジューリングするべきかどうかを決定するために、同じコンテナからの実行予定の次のタスクに対応する実際のスケジューリング時間を比較結果に応じて調節する。
【0113】
工程401~403の特定の実装形態は、上記で詳細に説明されたので、ここでは詳述されない。
【0114】
ここで、任意のコンテナによって送信された実行予定の現在のタスクを受信することは、コンテナに対応する通信インターフェースに従って実行予定の現在のタスクを受信することを含み、方法400は、コンテナ識別子に従って同じコンテナからの実行予定のタスクを決定するために、通信インターフェースに従ってコンテナ識別子を決定することをさらに含む。
【0115】
これは既に上述されたので、ここでは詳述されない。
【0116】
さらに、この方法400において詳細に説明されない内容については、上述された方法200における工程を参照することができる。
【0117】
図5は、本出願の例示的実施形態において提供されるタスクのためのスケジューリング装置の構造的なフレームワークの概略図である。装置500は、クラウドサーバ、より具体的には、クラウドサーバにおけるタスクスケジューラに適用されてもよい。装置500は、獲得モジュール501、決定モジュール502、および調節モジュール503を含む。各モジュールの機能の詳細な説明が下記に示される。
【0118】
獲得モジュール501は、実行予定の現在のタスクのタスク情報を獲得するために使用され、タスク情報は、実行予定の現在のタスクを記述する。
【0119】
決定モジュール502は、実行予定の現在のタスクのための実際の実行時間をタスク情報に従って決定するために使用される。
【0120】
調節モジュール503は、実際の実行時間を、実行予定の現在のタスクに対応する事前設定済スケジューリング時間と比較し、実行予定の次のタスクをスケジューリングするべきかどうかを決定するために、実行予定の次のタスクに対応する実際のスケジューリング時間を比較結果に応じて調節するために使用される。
【0121】
具体的には、獲得モジュール501は、実行予定の現在のタスクが持つストレージアドレスに従ってタスク情報を獲得するために使用される。
【0122】
具体的には、決定モジュール502は、タスク情報を実行するための実際の実行時間を、実行予定の現在のタスクのための実際の実行時間として決定するために使用される。
【0123】
具体的には、決定モジュール502は、事前設定済モデルにタスク情報を入力し、事前設定済モデルの出力を実際の実行時間として決定するために使用される。
【0124】
具体的には、決定モジュール502は、タスク情報を複数の事前設定済タスク情報とマッチングさせ、マッチング結果に従って、マッチした事前設定済タスク情報に対応する事前設定済実行時間を、実際の実行時間として選択するために使用される。
【0125】
具体的には、調節モジュール503は、比較結果が、実際の実行時間が事前設定済スケジューリング時間より長いという結果であるとき、超過時間を決定するための決定ユニットと、更新された実際のスケジューリング時間を取得するために、同じソースからの実行予定の次のタスクに対応する実際のスケジューリング時間を超過時間に応じて調節し、その後の更新された実際のスケジューリング時間が0に短縮されるまで、更新された実際のスケジューリング時間を、同じソースからの実行予定のその後のタスクのための実際のスケジューリング時間として使用し続けるための調節ユニットと、を含み、実行予定の現在のタスクが、同じソースからの実行予定の初期タスクであるとき、実行予定の現在のタスクに対応する実際のスケジューリング時間は、同じソースからの実行予定の次のタスクに対応する実際のスケジューリング時間と同じであり、事前設定済スケジューリング時間である。
【0126】
さらに、装置500は、その後の更新された実際のスケジューリング時間が0であるとき、実行予定のその後のタスクに対応する事前設定済スケジューリング時間の到来時に、実行予定のその後のタスクをスケジューリングしないと決定するためのスケジューリングモジュールをさらに含む。
【0127】
さらに、スケジューリングモジュールは、実行予定のその後のタスクに対応する実際のスケジューリング時間が更新後0でないとき、対応する事前設定済スケジューリング時間の到来時に、実行予定のその後のタスクを実際の実行時間に応じてスケジューリングすると決定するためにさらに使用される。
【0128】
さらに、装置500は、実行予定の次のタスクをスケジューリングすると決定した後、実行予定の次のタスクを受信し、対応する事前設定済スケジューリング時間の到来を待ち、次いで、対応する実際の実行時間に応じてタスク処理を実施するために、実行予定の次のタスクを、対応する処理デバイスに送信するための送信モジュールをさらに含む。
【0129】
さらに、送信モジュールは、実行予定のその後のタスクを受信し、対応する事前設定済スケジューリング時間の到来時に、対応する実際の実行時間に応じてタスク処理を実施するために、他のソースからの実行予定のタスクを、対応する処理デバイスに送信するためにさらに使用される。
【0130】
さらに、送信モジュールは、対応する次の事前設定済スケジューリング時間の到来を待ち、次いで、対応する実際の実行時間に応じてタスク処理を実施するために、実行予定のその後のタスクを、対応する処理デバイスに送信するためにさらに使用され、対応する次の事前設定済スケジューリング時間の到来時に、実行予定のその後のタスクに対応する実際のスケジューリング時間が、事前設定済スケジューリング時間に等しい。
【0131】
さらに、決定ユニットは、比較結果が、実際の実行時間が事前設定済スケジューリング時間より短いという結果であるとき、アイドリング時間を決定するためにさらに使用され、調節ユニットは、更新された実際のスケジューリング時間を取得するために、同じソースからの実行予定の次のタスクに対応する実際のスケジューリング時間をアイドリング時間に応じて調節し、更新された実際のスケジューリング時間を、同じソースからの実行予定のその後のタスクのための実際のスケジューリング時間として使用し続けるためにさらに使用される。
【0132】
さらに、決定ユニットは、比較結果が、実際の実行時間が事前設定済スケジューリング時間以下であるという結果であるとき、実行予定の次のタスクをスケジューリングすると決定するためにさらに使用される。
【0133】
さらに、調節ユニットは、実行予定の現在のタスクのために、実行予定の現在のタスクに対応する実際のスケジューリング時間にアイドリング時間を増加させて、対応する実際のスケジューリング時間を更新し、更新された実際のスケジューリング時間を、実行予定の次のタスクのための実際のスケジューリング時間として使用するためにさらに使用される。
【0134】
さらに、調節ユニットは、実行予定の現在のタスクのために、実行予定の現在のタスクに対応する実際のスケジューリング時間に超過時間を短縮して、対応する実際のスケジューリング時間を更新し、更新された実際のスケジューリング時間を、実行予定の次のタスクのための実際のスケジューリング時間として使用するためにさらに使用される。
【0135】
さらに、調節ユニットは、以下のためにさらに使用される。更新された実際のスケジューリング時間が0である場合、実行予定の次のタスクに対応する実際のスケジューリング時間は、実行予定の次のタスクがスケジューリングされることが可能であると決定された場合、事前設定済スケジューリング時間に等しい。
【0136】
ここで、同じソースからの実行予定のタスクに対応する事前設定済スケジューリング時間は同じである。
【0137】
さらに、決定モジュール502は、同じソースからの実行予定のその後のタスクに対応する実際のスケジューリング時間が、正の数から負の数に直接的に短縮されるとき、この負の数と0との間の差分値を決定するためにさらに使用される。調節モジュール503は、同じソースからの実行予定のその後のタスクに対応する実際のスケジューリング時間を0に調節するためにさらに使用される。送信モジュールは、同じソースからの実行予定のその後のタスクを受信すること、および、対応する事前設定済スケジューリング時間の到来時に、他のソースからの実行予定のタスクを、対応する処理デバイスに送信することを行うためにさらに使用される。送信モジュールは、対応する次の事前設定済スケジューリング時間の到来を待ち、次いで、対応する実際の実行時間に応じてタスク処理を実施するために、同じソースからの実行予定のその後のタスクを、対応する処理デバイスに送信するためにさらに使用され、対応する次の事前設定済スケジューリング時間の到来時に、同じソースからの実行予定のその後のタスクに対応する実際のスケジューリング時間が、事前設定済スケジューリング時間と差分値との間の差に等しい。
【0138】
具体的には、獲得モジュール501は、通信インターフェースを介して、仮想デバイスによって送信された実行予定の現在のタスクを受信するために使用される。
【0139】
図6は、本出願の例示的実施形態において提供されるコンテナタスクのためのスケジューリング装置の構造的なフレームワークの概略図である。装置600は、クラウドサーバに適用されてもよく、より具体的には、クラウドサーバにおいて提供されるタスクスケジューラでもよい。装置600は、受信モジュール601、決定モジュール602、および調節モジュール603を含む。各モジュールの機能の詳細な説明が下記に示される。
【0140】
受信モジュール601は、任意のコンテナによって送信された実行予定の現在のタスクを受信し、実行予定の現在のタスクのタスク情報を獲得するために使用され、タスク情報は、実行予定の現在のタスクを記述する。
【0141】
決定モジュール602は、実行予定の現在のタスクのための実際の実行時間をタスク情報に従って決定するために使用される。
【0142】
調節モジュール603は、実際の実行時間を、実行予定の現在のタスクに対応する事前設定済スケジューリング時間と比較し、同じコンテナからの実行予定の次のタスクをスケジューリングするべきかどうかを決定するために、同じコンテナからの実行予定の次のタスクに対応する実際のスケジューリング時間を比較結果に応じて調節するために使用される。
【0143】
具体的には、受信モジュール601は、コンテナに対応する通信インターフェースに従って実行予定の現在のタスクを受信するために使用される。決定モジュール602は、コンテナ識別子に従って同じコンテナからの実行予定のタスクを決定するために、通信インターフェースに従ってコンテナ識別子を決定するために具体的に使用される。
【0144】
上記で言及されていない装置600のパーツについては、上述された装置500の内容を参照可能であることに留意されたい。
【0145】
図5に示された装置500の内部機能および構造が上述されたが、可能な設計において、
図5に示された装置500の構造は、例えばサーバなどのコンピューティングデバイスとして実装されてもよい。
図7に示されているように、デバイス700は、メモリ701およびプロセッサ702を含むことができる。
【0146】
メモリ701は、コンピュータプログラムを格納するために使用される。
【0147】
プロセッサ702は、実行予定の現在のタスクのタスク情報を獲得するステップであって、タスク情報が、実行予定の現在のタスクを記述する、ステップと、実行予定の現在のタスクのための実際の実行時間をタスク情報に従って決定するステップと、実際の実行時間を、実行予定の現在のタスクに対応する事前設定済スケジューリング時間と比較し、実行予定の次のタスクをスケジューリングするべきかどうかを決定するために、実行予定の次のタスクに対応する実際のスケジューリング時間を比較結果に応じて調節するステップと、を行うためのコンピュータプログラムを実行するために使用される。
【0148】
具体的には、プロセッサ702は、実行予定の現在のタスクが持つストレージアドレスに従ってタスク情報を獲得するために具体的に使用される。
【0149】
具体的には、プロセッサ702は、タスク情報を実行するための実際の実行時間を、実行予定の現在のタスクのための実際の実行時間として決定するために具体的に使用される。
【0150】
具体的には、プロセッサ702は、事前設定済モデルにタスク情報を入力し、事前設定済モデルの出力を実際の実行時間として決定するために具体的に使用される。
【0151】
具体的には、プロセッサ702は、タスク情報を複数の事前設定済タスク情報とマッチングさせ、マッチング結果に従って、事前設定済実行時間を実際の実行時間として選択するために具体的に使用される。
【0152】
具体的には、プロセッサ702は、比較結果が、実際の実行時間が事前設定済スケジューリング時間より長いという結果であるとき、超過時間を決定するステップと、更新された実際のスケジューリング時間を取得するために、同じソースからの実行予定の次のタスクに対応する実際のスケジューリング時間を超過時間に応じて調節し、その後の更新された実際のスケジューリング時間が0に短縮されるまで、更新された実際のスケジューリング時間を、同じソースからの実行予定のその後のタスクのための実際のスケジューリング時間として使用し続けるステップと、を行うために具体的に使用され、実行予定の現在のタスクが、同じソースからの実行予定の初期タスクであるとき、実行予定の現在のタスクに対応する実際のスケジューリング時間は、同じソースからの実行予定の次のタスクに対応する実際のスケジューリング時間と同じであり、事前設定済スケジューリング時間である。
【0153】
さらに、プロセッサ702は、その後の更新された実際のスケジューリング時間が0であるとき、実行予定のその後のタスクに対応する事前設定済スケジューリング時間の到来時に、実行予定のその後のタスクをスケジューリングしないと決定するためにさらに使用される。
【0154】
さらに、プロセッサ702は、実行予定のその後のタスクに対応する実際のスケジューリング時間が更新後0でないとき、対応する事前設定済スケジューリング時間の到来時に、実行予定のその後のタスクを実際の実行時間に応じてスケジューリングすると決定するためにさらに使用される。
【0155】
さらに、プロセッサ702は、実行予定の次のタスクをスケジューリングすると決定した後、実行予定の次のタスクを受信し、対応する事前設定済スケジューリング時間の到来を待ち、次いで、対応する実際の実行時間に応じてタスク処理を実施するために、実行予定の次のタスクを、対応する処理デバイスに送信するためにさらに使用される。
【0156】
さらに、プロセッサ702は、実行予定のその後のタスクを受信し、対応する事前設定済スケジューリング時間の到来時に、対応する実際の実行時間に応じてタスク処理を実施するために、他のソースからの実行予定のタスクを、対応する処理デバイスに送信するためにさらに使用される。
【0157】
さらに、プロセッサ702は、対応する次の事前設定済スケジューリング時間の到来を待ち、次いで、対応する実際の実行時間に応じてタスク処理を実施するために、実行予定のその後のタスクを、対応する処理デバイスに送信するためにさらに使用され、対応する次の事前設定済スケジューリング時間の到来時に、実行予定のその後のタスクに対応する実際のスケジューリング時間は、事前設定済スケジューリング時間に等しい。
【0158】
さらに、プロセッサ702は、比較結果が、実際の実行時間が事前設定済スケジューリング時間より短いという結果であるとき、アイドリング時間を決定することと、更新された実際のスケジューリング時間を取得するために、同じソースからの実行予定の次のタスクに対応する実際のスケジューリング時間をアイドリング時間に応じて調節し、更新された実際のスケジューリング時間を、同じソースからの実行予定のその後のタスクのための実際のスケジューリング時間として使用し続けることと、を行うためにさらに使用される。
【0159】
さらに、プロセッサ702は、比較結果が、実際の実行時間が事前設定済スケジューリング時間以下であるという結果であるとき、実行予定の次のタスクをスケジューリングすると決定するためにさらに使用される。
【0160】
さらに、プロセッサ702は、実行予定の現在のタスクのために、実行予定の現在のタスクに対応する実際のスケジューリング時間にアイドリング時間を増加させて、対応する実際のスケジューリング時間を更新し、更新された実際のスケジューリング時間を、実行予定の次のタスクのための実際のスケジューリング時間として使用するためにさらに使用される。
【0161】
さらに、プロセッサ702は、実行予定の現在のタスクのために、実行予定の現在のタスクに対応する実際のスケジューリング時間に超過時間を短縮して、対応する実際のスケジューリング時間を更新し、更新された実際のスケジューリング時間を、実行予定の次のタスクのための実際のスケジューリング時間として使用するためにさらに使用される。
【0162】
さらに、プロセッサ702は、以下のためにさらに使用され、更新された実際のスケジューリング時間が0である場合、実行予定の次のタスクに対応する実際のスケジューリング時間は、実行予定の次のタスクがスケジューリングされることが可能であると決定された場合、事前設定済スケジューリング時間に等しい。
【0163】
ここで、同じソースからの実行予定のタスクに対応する事前設定済スケジューリング時間は同じである。
【0164】
さらに、プロセッサ702は、同じソースからの実行予定のその後のタスクに対応する実際のスケジューリング時間が、正の数から負の数に直接的に短縮されるとき、この負の数と0との間の差分値を決定することと、同じソースからの実行予定のその後のタスクに対応する実際のスケジューリング時間を0に調節することと、同じソースからの実行予定のその後のタスクを受信すること、および、対応する事前設定済スケジューリング時間の到来時に、他のソースからの実行予定のタスクを、対応する処理デバイスに送信することと、を行うためにさらに使用され、送信モジュールは、対応する次の事前設定済スケジューリング時間の到来を待ち、次いで、対応する実際の実行時間に応じてタスク処理を実施するために、同じソースからの実行予定のその後のタスクを、対応する処理デバイスに送信するためにさらに使用され、対応する次の事前設定済スケジューリング時間の到来時に、同じソースからの実行予定のその後のタスクに対応する実際のスケジューリング時間は、事前設定済スケジューリング時間と差分値との間の差に等しい。
【0165】
具体的には、プロセッサ702は、通信インターフェースを介して、仮想デバイスによって送信された実行予定の現在のタスクを受信するために具体的に使用される。
【0166】
さらに、本発明の実施形態は、コンピュータストレージ媒体を提供し、コンピュータプログラムは、1つまたは複数のプロセッサによって実行されると、
図2の方法の実施形態のタスクのためのスケジューリング方法の工程を1つまたは複数のプロセッサに実行させる。
【0167】
図6に示された装置600の内部機能および構造が上述されたが、可能な設計において、
図6に示された装置600の構造は、例えばサーバなどのコンピューティングデバイスとして実装されてもよい。
図8に示されているように、デバイス800は、メモリ801およびプロセッサ802を含むことができる。
【0168】
メモリ801は、コンピュータプログラムを格納するために使用される。
【0169】
プロセッサ802は、任意のコンテナによって送信された実行予定の現在のタスクを受信し、実行予定の現在のタスクのタスク情報を獲得することであって、タスク情報が、実行予定の現在のタスクを記述することと、実行予定の現在のタスクのための実際の実行時間をタスク情報に従って決定することと、実際の実行時間を、実行予定の現在のタスクに対応する事前設定済スケジューリング時間と比較し、同じコンテナからの実行予定の次のタスクをスケジューリングするべきかどうかを決定するために、同じコンテナからの実行予定の次のタスクに対応する実際のスケジューリング時間を比較結果に応じて調節することと、を行うためのコンピュータプログラムを実行するために使用される。
【0170】
具体的には、プロセッサ802は、コンテナに対応する通信インターフェースに従って実行予定の現在のタスクを受信するために具体的に使用され、プロセッサ802は、コンテナ識別子に従って同じコンテナからの実行予定のタスクを決定するために、通信インターフェースに従ってコンテナ識別子を決定するためにさらに使用される。
【0171】
上記で言及されていないデバイス800のパーツについては、上述されたデバイス700の内容を参照できることに留意されたい。
【0172】
さらに、本発明の実施形態は、コンピュータストレージ媒体を提供し、コンピュータプログラムは、1つまたは複数のプロセッサによって実行されると、
図4の方法の実施形態のコンテナタスクのためのスケジューリング方法の工程を1つまたは複数のプロセッサに実行させる。
【0173】
さらに、上記の実施形態および添付の図面に記述されたプロセスのうちのいくつかは、特定の順序で現れる複数の動作を収めるが、これらの動作が、その動作が本明細書で現れる特定の順序でなく、または並列に実行されてもよいこと、ならびに、201、202、203などの動作の通し番号は、様々な異なる動作を区別するためだけに使用され、通し番号自体が実行の順序を何も表さないことを明確に理解するべきである。代替として、これらのプロセスは、より多くのまたはより少ない動作を含むことができ、これらの動作は、順次または並列に実行されてもよい。本明細書における記述「第1」および「第2」は、異なるメッセージ、デバイス、モジュールなどを区別するために使用されるが、連続した順序を表すものではなく、これらが、「第1」および「第2」が異なるタイプのものと限定するものでもないことに留意されたい。
【0174】
上述された装置の実施形態は概略的なものにすぎず、別個の構成要素として記述されたユニットは、物理的に分離されてもされなくてもよく、ユニットとして表示される構成要素は、物理的なユニットでもそうでなくてもよく、すなわち、1つの場所にあってもよく、複数のネットワークユニットに分散されてもよい。モジュールの一部または全ては、本実施形態の解決策の目的を達成するために実際のニーズに従って選択されてもよい。当業者は、創造的努力なく、本実施形態の解決策を理解および実装することができる。
【0175】
上記の実装形態の記述から、当業者は、様々な実装形態が、必要な一般的なハードウェアプラットフォームに加えてソフトウェアによって実装されてもよく、間違いなく、ハードウェアとソフトウェアの組合せによってさらに実装されてもよいことを明確に理解することができる。このような理解に基づき、上記の技術的解決策は本質的に、または従来技術に寄与する部分は、コンピュータ製品の形式で具体化されてもよい。本発明は、コンピュータ使用可能プログラムコードを含む(磁気ディスクメモリ、CD-ROM、光メモリ、および同様のものを含むがこれらに限定されない)1つまたは複数のコンピュータ使用可能ストレージ媒体に実装されたコンピュータプログラム製品の形式であることが可能である。
【0176】
本発明は、本発明の実施形態による方法、デバイス(システム)、およびコンピュータプログラム製品のフローチャートおよび/またはブロック図を参照しながら説明される。フローチャートおよび/またはブロック図における各フローおよび/またはブロック、ならびにフローチャートおよび/またはブロック図におけるフローおよび/またはブロックの組合せは、コンピュータプログラム命令によって実施されてもよいことを理解されたい。これらのコンピュータプログラム命令は、コンピュータまたは別のプログラム可能マルチメディアデータ処理デバイスのプロセッサによって実行された命令が、フローチャートの1つもしくは複数のフローおよび/またはブロック図の1つもしくは複数のブロックにおいて指定された機能を実現するための装置を生み出すように、機械を生み出すために、汎用コンピュータ、専用コンピュータ、組込みプロセッサ、または別のプログラム可能マルチメディアデータ処理デバイスのプロセッサに提供されることが可能である。
【0177】
これらのコンピュータプログラム命令は、また、コンピュータ可読メモリに格納されてもよく、コンピュータプログラム命令は、このコンピュータ可読メモリに格納された命令が、フローチャートの1つもしくは複数のフローおよび/またはブロック図の1つもしくは複数のブロックにおいて指定された機能を実施する命令装置を含む製品を生み出すように、特定の様式で作動するようにコンピュータまたは別のプログラム可能マルチメディアデータ処理デバイスに指図することができる。
【0178】
これらのコンピュータプログラム命令は、また、コンピュータまたは別のプログラム可能デバイス上で実行される命令が、フローチャートの1つもしくは複数のフローおよび/またはブロック図の1つもしくは複数のブロックにおいて指定された機能を実施するための工程を提供するように、一連の動作工程がコンピュータ実行処理を生み出すために、コンピュータまたは別のプログラム可能デバイス上で実施されるように、コンピュータまたは別のプログラム可能マルチメディアデータ処理デバイスにロードされることが可能である。
【0179】
典型的な構成では、コンピューティングデバイスは、1つまたは複数のプロセッサ(CPU)、入出力インターフェース、ネットワークインターフェース、およびメモリを含む。
【0180】
メモリは、揮発性メモリ、ランダムアクセスメモリ(RAM)、および/または、例えばリードオンリメモリ(ROM)もしくはフラッシュRAMなど、コンピュータ可読媒体における不揮発性メモリを含むことができる。メモリは、コンピュータ可読媒体の例である。
【0181】
コンピュータ可読媒体は、永久的および非永久的な、取外し可能および取外し不能媒体を含み、これらは、任意の方法または技術を使用することによって情報の格納を実施することができる。情報は、コンピュータ可読命令、データ構造、プログラムのモジュール、または他のデータでもよい。コンピュータストレージ媒体の例は、位相変化メモリ(PRAM)、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)、他のタイプのランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、電気的消去可能プログラマブルリードオンリメモリ(EEPROM)、フラッシュメモリもしくは他のメモリ技術、コンパクトディスクリードオンリメモリ(CD-ROM)、デジタルバーサタイルディスク(DVD)もしくは他の光学ストレージ、カセット磁気テープ、テープおよびディスクストレージもしくは他の磁気ストレージデバイス、または、コンピューティングデバイスによってアクセス可能な情報を格納するように構成されてもよい任意の他の非伝送媒体を含むがこれらに限定されない。本明細書で定義されるように、コンピュータ可読媒体は、変調されたデータ信号およびキャリアなどのコンピュータ可読一時媒体を含まない。
【0182】
最後に、上記の実施形態は、本発明の技術的解決策を示すためにしか使用されず、本発明を限定することを意図するものではないことに留意されたい。本発明は、前述の実施形態を参照しながら詳細に説明されてきたが、当業者は、前述の様々な実施形態において記録された技術的解決策がまだ修正されることが可能であること、またはその技術的特徴のうちのいくつかが同等に置き換えられてもよいことを理解するべきである。これらの修正または置換は、本発明の実施形態の技術的解決策の精神および範囲から、対応する技術的解決策の本質を逸脱させない。
【国際調査報告】