(57)【特許請求の範囲】
【請求項１】
マルチプロセッサデバイスにおける中央処理装置（ＣＰＵ）のリソース割り当ての方法であって、
予め構成された時間期間の間、前記マルチプロセッサデバイス上で実行するプロセスグループのために要求されたＣＰＵリソースの量を取得するステップと、
前記予め構成された時間期間の間、前記マルチプロセッサデバイスのＣＰＵにおけるアイドルＣＰＵリソースの量を取得するステップと、
前記プロセスグループのために要求されたＣＰＵリソースの前記取得された量、及び前記ＣＰＵにおけるアイドルＣＰＵリソースの前記取得された量に基づいて、ＣＰＵを前記プロセスグループに割り当てるステップであって、
前記プロセスグループのために要求されたＣＰＵリソースの前記取得された量、及び前記ＣＰＵにおけるアイドルＣＰＵリソースの前記取得された量に基づいて、ＣＰＵを割り当てるための戦略を生成するステップであって、
ａ）プロセスグループの第１のリストを取得するステップであって、前記プロセスグループは、前記予め構成された時間期間の間の要求されたＣＰＵリソースの前記量の第１の降順で配列される、ステップと、
ｂ）ＣＰＵの第２のリストを取得するステップであって、前記ＣＰＵは、前記予め構成された時間期間の間の前記ＣＰＵのアイドルＣＰＵリソースの前記量の第２の降順で配列される、ステップと、
ｃ）前記第１のリストの第１の位置におけるプロセスグループを現在のプロセスグループとして指定するステップと、
ｄ）前記現在のプロセスグループの要求されたＣＰＵリソースの量に基づいて、ＣＰＵを前記第２のリストから前記第２の降順で選択するステップと、
ｅ）前記第２のリストから選択された前記ＣＰＵを前記現在のプロセスグループに割り当てるステップと、
ｆ）前記割り当てられたＣＰＵ上の前記現在のプロセスグループの実行時間に基づいて、前記割り当てられたＣＰＵにおけるアイドルＣＰＵリソースの前記量を更新するステップと、
ｇ）ＣＰＵの前記第２のリストを更新するステップであって、前記ＣＰＵは、アイドルＣＰＵリソースの更新された量の前記第２の降順で配列される、ステップと、
ｈ）前記現在のプロセスグループが前記第１のリストの最後のプロセスグループであるかを判定するステップと、
ｊ）前記現在のプロセスグループが前記第１のリストの前記最後のプロセスグループでないとの判定に応答して、前記第１のリストにおける次の位置を前記第１の位置として指定し、ステップｃ）から継続するステップと
を含む、ステップと、
前記プロセスグループを割り当てられたＣＰＵに固定することによって、前記生成された戦略を展開するステップと
を含む、ステップと
を備えることを特徴とする方法。
【請求項２】
前記予め構成された時間期間の間の前記プロセスグループのために要求されたＣＰＵリソースの前記量は、前記予め構成された時間期間の間の前記ＣＰＵの各々上での前記プロセスグループの実行時間の合計であることを特徴とする請求項１に記載の方法。
【請求項３】
前記予め構成された時間期間の間、前記プロセスグループのために要求されたＣＰＵリソースの前記量を前記取得するステップは、
前記予め構成された時間期間の間、前記ＣＰＵの各々上での前記プロセスグループの実行時間を取得するステップと、
前記ＣＰＵの各々上での前記プロセスグループの前記取得された実行時間の合計を計算するステップと、
前記計算された合計を、前記予め構成された時間期間の間の前記プロセスグループのために前記要求されたＣＰＵリソースの前記量として指定するステップと
を含むことを特徴とする請求項２に記載の方法。
【請求項４】
前記予め構成された時間期間の間、前記ＣＰＵの各々上での前記プロセスグループの実行時間を前記取得するステップは、ｃｇｒｏｕｐｓの下のｃｐｕａｃｃｔ．ｕｓａｇｅ＿ｐｅｒ＿ｃｐｕから値を読み取って前記ＣＰＵの各々上での前記プロセスグループの実行時間を取得するステップを含むことを特徴とする請求項３に記載の方法。
【請求項５】
前記予め構成された時間期間の間のアイドルＣＰＵリソースの前記量は、前記予め構成された時間期間の間のＣＰＵアイドル時間の量であることを特徴とする請求項１に記載の方法。
【請求項６】
アイドルＣＰＵリソースの前記量を前記取得するステップは、
前記予め構成された時間期間の間、前記ＣＰＵの実行時間の量を取得するステップと、
実行時間の前記量と前記予め構成された時間期間との間の差異を、前記予め構成された時間期間の間の前記ＣＰＵにおけるアイドルＣＰＵリソースの前記量として指定するステップと
を含むことを特徴とする請求項５に記載の方法。
【請求項７】
前記ＣＰＵの実行時間の前記量は、前記予め構成された時間期間の間、機能監視ユーティリティの使用によって取得されることを特徴とする請求項６に記載の方法。
【請求項８】
前記プロセスグループのために要求されたＣＰＵリソースの前記取得された量、及び前記ＣＰＵにおけるアイドルＣＰＵリソースの前記取得された量に基づいて、ＣＰＵを割り当てるための戦略を前記生成するステップは、
ｉ）前記現在のプロセスグループが前記第１のリストの前記最後のプロセスグループであるとの判定に応答して、前記ＣＰＵを割り当てるための戦略を生成するステップを終了するステップ
をさらに含む、ことを特徴とする請求項１に記載の方法。
【請求項９】
前記方法は、予め構成された実行条件によってトリガされることを特徴とする請求項１に記載の方法。
【請求項１０】
前記予め構成された実行条件は、前記方法がトリガされた最後の時から経過した時間が予め構成された時間間隔よりも大きいときに満たされることを特徴とする請求項９に記載の方法。
【請求項１１】
前記予め構成された実行条件は、前記ＣＰＵのＣＰＵ使用率の最大値が予め構成された閾値を上回るときに満たされることを特徴とする請求項９に記載の方法。
【請求項１２】
前記予め構成された実行条件は、前記ＣＰＵのＣＰＵ使用率の最大値が前記ＣＰＵ使用率の最小値のＮ倍を上回るときに満たされ、Ｎは整数であることを特徴とする請求項９に記載の方法。
【請求項１３】
前記予め構成された実行条件は、前記ＣＰＵのＣＰＵ使用率の最大値が予め構成された閾値を上回り、前記ＣＰＵの前記ＣＰＵ使用率の前記最大値が前記ＣＰＵ使用率の最小値のＮ倍を上回るときに満たされ、Ｎは整数であることを特徴とする請求項９に記載の方法。
【請求項１４】
ＣＰＵリソースを割り当てる装置であって、前記装置は、
プロセッサと、
前記プロセッサに動作可能に結合された非一時的コンピュータ可読媒体と、を備え、前記非一時的コンピュータ可読媒体は、前記プロセッサによりアクセスされるときに実行されることになるそこに記憶されたコンピュータ可読命令を有し、複数の前記命令により、取得モジュールと割り当てモジュールとが構成されるものであり、
前記取得モジュールに基づいて、前記装置は、予め構成された時間期間の間、マルチプロセッサデバイス上で実行するプロセスグループのために要求されたＣＰＵリソースの量を取得し、前記予め構成された時間期間の間、前記マルチプロセッサデバイスのＣＰＵにおけるアイドルＣＰＵリソースの量を取得するものであり、
前記割り当てモジュールに基づいて、前記装置は、前記プロセスグループのために要求されたＣＰＵリソースの前記取得された量、及び前記ＣＰＵにおけるアイドルＣＰＵリソースの前記取得された量に基づいて、ＣＰＵを前記プロセスグループに割り当て、前記複数の命令により、生成サブモジュールと、展開サブモジュールとが構成されるものであり、
前記生成サブモジュールに基づいて、前記装置は、前記プロセスグループのために要求されたＣＰＵリソースの前記取得された量、及び前記ＣＰＵにおけるアイドルＣＰＵリソースの前記取得された量に基づいて、ＣＰＵを割り当てるための戦略を生成し、前記複数の命令により、初期順序付けサブモジュールと、第１の位置決めサブモジュールと、割り当てサブモジュールと、更新サブモジュールと、再順序付けサブモジュールと、判定サブモジュールと、第２の位置決めサブモジュールとが構成されるものであり、
前記初期順序付けサブモジュールに基づいて、前記装置は、プロセスグループの第１のリストを取得し、ＣＰＵの第２のリストを取得し、前記プロセスグループは、前記予め構成された時間期間の間の要求されたＣＰＵリソースの前記量の第１の降順で配列され、前記ＣＰＵは、前記予め構成された時間期間の間の前記ＣＰＵのアイドルＣＰＵリソースの前記量の第２の降順で配列され、
前記第１の位置決めサブモジュールに基づいて、前記装置は、前記第１のリストの第１の位置におけるプロセスグループを現在のプロセスグループとして指定するものであり、
前記割り当てサブモジュールに基づいて、前記装置は、前記現在のプロセスグループの要求されたＣＰＵリソースの量に基づいて、ＣＰＵを前記第２のリストから前記第２の降順で選択し、前記第２のリストから選択された前記ＣＰＵを前記現在のプロセスグループに割り当てるものであり、
前記更新サブモジュールに基づいて、前記装置は、前記割り当てられたＣＰＵ上の前記現在のプロセスグループの実行時間に基づいて、前記割り当てられたＣＰＵにおけるアイドルＣＰＵリソースの前記量を更新するものであり、
前記再順序付けサブモジュールに基づいて、前記装置は、ＣＰＵの前記第２のリストを更新するものであり、前記ＣＰＵは、アイドルＣＰＵリソースの更新された量の前記第２の降順で配列され、
前記判定サブモジュールに基づいて、前記装置は、前記現在のプロセスグループが前記第１のリストの最後のプロセスグループであるかを判定するものであり、
前記第２の位置決めサブモジュールに基づいて、前記装置は、前記現在のプロセスグループが前記第１のリストの前記最後のプロセスグループでないとの判定に応答して、前記第１のリストにおける次の位置を前記第１の位置として指定し、前記生成サブモジュールにおける、前記第１の位置決めサブモジュール以降に実行すべき各サブモジュールを実行するものである、
生成するものであり、
前記展開サブモジュールに基づいて、前記装置は、前記プロセスグループを割り当てられたＣＰＵに固定することによって、前記生成された戦略を展開するものである、
割り当てるものである、前記装置。
【請求項１５】
前記取得モジュールは、
前記予め構成された時間期間の間、前記マルチプロセッサデバイス上で実行する前記プロセスグループのために要求されたＣＰＵリソースの前記量を取得するように構成された第１の取得サブモジュールを含み、前記第１の取得サブモジュールは、
前記予め構成された時間期間の間、前記ＣＰＵの各々上での前記プロセスグループの実行時間を取得するように構成された第１の監視サブモジュールと、
前記ＣＰＵの各々上での前記プロセスグループの前記取得された実行時間の合計を計算し、前記計算された合計を、前記予め構成された時間期間の間の前記プロセスグループのために前記要求されたＣＰＵリソースの前記量として指定するように構成された第１の計算サブモジュールと
を含むことを特徴とする請求項１４に記載の装置。
【請求項１６】
前記取得モジュールは、
前記予め構成された時間期間の間、前記マルチプロセッサデバイスの前記ＣＰＵにおけるアイドルＣＰＵリソースの前記量を取得するように構成された第２の取得サブモジュールを含み、前記第２の取得サブモジュールは、
前記予め構成された時間期間の間、前記ＣＰＵの実行時間を取得するように構成された第２の監視サブモジュールと、
前記取得された実行時間の量と前記予め構成された時間期間との間の差異を、前記予め構成された時間期間の間の前記ＣＰＵにおけるアイドルＣＰＵリソースの前記量として指定するように構成された第２の計算サブモジュールと
を含むことを特徴とする請求項１４に記載の装置。
【請求項１７】
前記生成サブモジュールに基づいて、前記装置は、前記複数の命令により、完了サブモジュールがさらに構成されるものであり、
前記完了サブモジュールに基づいて、前記装置は、前記現在のプロセスグループが前記第１のリストの前記最後のプロセスグループであるとの判定に応答して、前記生成サブモジュールの実行を終了するものである、
ことを特徴とする請求項１４に記載の装置。
【請求項１８】
予め構成された条件が満たされるときに前記装置によってＣＰＵリソース割り当てを実行するように構成されたトリガモジュールをさらに備えたことを特徴とする請求項１４に記載の装置。
【請求項１９】
メモリと、その上で実行する複数のプロセスグループを有する複数のプロセッサとを備えた電子デバイスであって、ＣＰＵリソースは、
予め構成された時間期間の間、前記プロセスグループのために要求されたＣＰＵリソースの量を取得することと、
前記予め構成された時間期間の間、マルチプロセッサデバイスのＣＰＵにおけるアイドルＣＰＵリソースの量を取得することと、
前記プロセスグループのために要求されたＣＰＵリソースの前記取得された量、及び前記ＣＰＵにおけるアイドルＣＰＵリソースの前記取得された量に基づいて、ＣＰＵを前記プロセスグループに割り当てることであって、
前記プロセスグループのために要求されたＣＰＵリソースの前記取得された量、及び前記ＣＰＵにおけるアイドルＣＰＵリソースの前記取得された量に基づいて、ＣＰＵを割り当てるための戦略を生成することであって、
ａ）プロセスグループの第１のリストを取得することであって、前記プロセスグループは、前記予め構成された時間期間の間の要求されたＣＰＵリソースの前記量の第１の降順で配列される、ことと、
ｂ）ＣＰＵの第２のリストを取得することであって、前記ＣＰＵは、前記予め構成された時間期間の間の前記ＣＰＵのアイドルＣＰＵリソースの前記量の第２の降順で配列される、ことと、
ｃ）前記第１のリストの第１の位置におけるプロセスグループを現在のプロセスグループとして指定することと、
ｄ）前記現在のプロセスグループの要求されたＣＰＵリソースの量に基づいて、ＣＰＵを前記第２のリストから前記第２の降順で選択することと、
ｅ）前記第２のリストから選択された前記ＣＰＵを前記現在のプロセスグループに割り当てることと、
ｆ）前記割り当てられたＣＰＵ上の前記現在のプロセスグループの実行時間に基づいて、前記割り当てられたＣＰＵにおけるアイドルＣＰＵリソースの前記量を更新することと、
ｇ）ＣＰＵの前記第２のリストを更新することであって、前記ＣＰＵは、アイドルＣＰＵリソースの更新された量の前記第２の降順で配列される、ことと、
ｈ）前記現在のプロセスグループが前記第１のリストの最後のプロセスグループであるかを判定することと、
ｊ）前記現在のプロセスグループが前記第１のリストの前記最後のプロセスグループでないとの判定に応答して、前記第１のリストにおける次の位置を前記第１の位置として指定し、ｃ）から継続することと
を含む、ことと、
前記プロセスグループを割り当てられたＣＰＵに固定することによって、前記生成された戦略を展開することと
を含むことと
を含む方法の使用によって、前記複数のプロセスグループに対して割り当てられることを特徴とする電子デバイス。
【請求項２０】
前記プロセスグループのために要求されたＣＰＵリソースの前記取得された量、及び前記ＣＰＵにおけるアイドルＣＰＵリソースの前記取得された量に基づいて、ＣＰＵを割り当てるための戦略を前記生成することは、
ｉ）前記現在のプロセスグループが前記第１のリストの前記最後のプロセスグループであるとの判定に応答して、前記ＣＰＵを割り当てるための戦略を生成するステップを終了すること
をさらに含む、ことを特徴とする請求項１９に記載の電子デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の相互参照）
本出願は、その全体で参照することによって本明細書に組み込まれる、２０１５年２月３日に出願された中国特許出願第２０１５１００５５８０３．１号の利益を主張する。
【０００２】
本発明は概して、コンピュータハードウェアの分野に関し、特に、ＣＰＵリソースを割り当てる方法、装置及びデバイスに関する。
【背景技術】
【０００３】
サーバは、数十から数千、またはさらに数万まで及ぶ多数の番号付けされたユーザからのアクセスを受信する、ネットワーキング技術の必須の構成要素である。結果として、サーバは、高スループットの大容量のデータ、極めて高レベルの安定性、長い実行時間などの点での性能要求に直面する傾向がある。大容量の計算に対し、部門レベルまたは企業レベルでサービスするサーバは概して、中央処理装置（ＣＰＵ）の並列処理をサポートする。並列処理は、同時に実行する複数のＣＰＵを有するサーバを指し、それは、サーバのデータ処理能力を大いに高める。現在、高性能サーバは概して、複数のＣＰＵを備える。
【０００４】
ＣＰＵの並列処理の技術は、例えば、サーバに複数のプログラム（タスク）がインストールされ、各プログラムが相互に並列して実行されることが可能なシナリオに適用される。複数のプログラムを実行するそのようなサーバにより、各プログラムは、１つまたは複数のプロセスを含むプロセスグループに対応する。複数のプロセスグループは、同一のサーバによって提供されるハードウェアリソースを共有する。並列して稼働する複数のプログラムのプロセスの間、プロセスグループが相互の実行を干渉すること、または性能の変動を生じさせることを防止するために、複数のプログラムに対応するプロセスグループによって利用されるＣＰＵリソースを分離することが必要である。理想的な状況では、プロセスグループごとに独立したリソースを割り当てることは、ＣＰＵリソースをプロセスグループに対してうまく分離することができることを保証することができる。しかしながら、ＣＰＵリソースの独立した割り当ては、割り当てられるＣＰＵリソースの一部が十分に利用されないことにつながり、その結果、ＣＰＵリソースの無駄を生じさせる。
【０００５】
ＣＰＵリソースの利用率を高めるために、ＣＰＵは、それが複数のプロセスグループの間で共有されるように、すなわち、ＣＰＵリソースがオーバープロビジョニングされるように２つ以上のプロセスグループを実行するように割り当てられる。オーバープロビジョニングは、ＣＰＵリソースの分離を達成することと、ＣＰＵリソースの利用効率を達成することとの間の均衡化を実現することを支援するメカニズムのうちの１つである。
【０００６】
ＣＰＵリソースをプロセスグループに割り当てるためにオーバープロビジョニングメカニズムを利用するとき、従来技術は、プロセスグループを実行のための特定のＣＰＵまたはＣＰＵのクラスタに固定する。異なるプログラムによるＣＰＵリソースに対する異なる要求、及び異なる実行のポイントにおけるプロセスグループによるＣＰＵリソースに対する異なる要求によって、固定する方法は、非常に多くのビジーなプログラムで一部のＣＰＵが過負荷になることに容易につながることがある一方で、他のＣＰＵがより少ないプログラムで負荷がかかっていない、すなわち、各ＣＰＵの使用の間で不均衡になる。ＣＰＵリソースが複数のプロセスグループによって共有される複数のプロセスグループの環境では、１つまたは複数のＣＰＵが重い作業負荷を有するとき、それらのＣＰＵ上で実行するプログラムの機能は、性能の点で低下した変動を経験する可能性が高い。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
したがって、サーバにおける並列処理の環境での不均衡なＣＰＵの使用の問題を解決する必要性が存在する。
【課題を解決するための手段】
【０００８】
本開示の例示的な実施形態に従って、マルチプロセッサデバイスに対する中央処理装置（ＣＰＵ）のリソース割り当ての方法が開示される。１つの実施形態は、予め構成された時間期間の間、マルチプロセッサデバイス上で実行するプロセスグループに対する要求されたＣＰＵリソースの量を取得するステップを含む。方法はまた、予め構成された時間期間の間、マルチプロセッサデバイスのＣＰＵに対するアイドルＣＰＵリソースの量を取得するステップを含む。方法はさらに、プロセスグループに対する要求されたＣＰＵリソースの取得された量、及びＣＰＵに対するアイドルＣＰＵリソースの取得された量に基づいて、ＣＰＵをプロセスグループに割り当てるステップを含む。
【０００９】
本開示の別の例示的な実施形態に従って、ＣＰＵリソースを割り当てる装置は、取得モジュール及び割り当てモジュールを含む。取得モジュールは、予め構成された時間期間の間、マルチプロセッサデバイス上で実行するプロセスグループに対する要求されたＣＰＵリソースの量、及びマルチプロセッサデバイスのＣＰＵに対するアイドルＣＰＵリソースの量を取得するように構成される。割り当てモジュールは、プロセスグループに対する要求されたＣＰＵリソースの取得された量、及びＣＰＵに対するアイドルＣＰＵリソースの取得された量に基づいて、ＣＰＵをプロセスグループに割り当てるように構成される。
【００１０】
本開示のさらなる別の例示的な実施形態に従って、ＣＰＵリソースを割り当てる電子デバイスは、メモリ、及びその上で実行する複数のプロセスグループを有する複数のプロセッサを含む。ＣＰＵリソースは、ＣＰＵリソース割り当て方法によって複数のプロセスグループに対して割り当てられる。方法は、予め構成された時間期間の間、マルチプロセッサデバイス上で実行するプロセスグループに対する要求されたＣＰＵリソースの量を取得するステップを含む。方法はまた、予め構成された時間期間の間、マルチプロセッサデバイスのＣＰＵに対するアイドルＣＰＵリソースの量を取得するステップを含む。方法はさらに、プロセスグループに対する要求されたＣＰＵリソースの取得された量、及びＣＰＵに対するアイドルＣＰＵリソースの取得された量に基づいて、ＣＰＵをプロセスグループに割り当てるステップを含む。
【００１１】
従来技術と比較して、本開示は、予め構成された時間期間の間、マルチプロセッサデバイス上で実行するプロセスグループごとの要求されたＣＰＵリソースの量、及びマルチプロセッサデバイスのＣＰＵごとのアイドルＣＰＵリソースの量を取得することを通じて、ＣＰＵリソースを割り当てる方法、装置及びデバイスを提供する。予め構成された時間期間の間の、プロセスグループごとの要求されたＣＰＵリソースの取得された量、及びＣＰＵごとのアイドルＣＰＵリソースの取得された量に基づいて、各プロセスグループが、要求された量のＣＰＵを割り当てられる。本開示は、プロセスグループごとのＣＰＵリソースの割り当てについて、各プロセスグループによって要求されたリソースの量、及び各ＣＰＵのアイドルリソースの量を基にしているので、割り当てられるＣＰＵリソースは、複数のプロセスグループの間でできるだけ均衡化される。したがって、ＣＰＵの各々の使用率も、その上で実行する各プログラムの性能を保証するように均衡化され、リソースの使用率の全体的な効率性を高め、全体的なシステム性能を改善する。
【００１２】
本明細書に組み込まれ、本明細書の一部を形成し、その中では同一の符号が同一の要素を示す添付図面は、本開示の実施形態を示し、説明とともに開示の原理を説明する役目を果たす。
【図面の簡単な説明】
【００１３】
【図１Ａ】本開示の実施形態に従った、ＣＰＵリソースを割り当てる方法のフローチャートである。
【図１Ｂ】本開示の実施形態に従った、図１ＡのステップＳ１０３の方法のフローチャートである。
【図２】ＣＵＰリソースを割り当てる方法のマルチプロセッサデバイスの例示である。
【図３】本開示の実施形態に従った、予め構成された時間期間の間にプロセスグループに対する要求されたＣＰＵリソースの量を取得することのフローチャートである。
【図４】本開示の実施形態に従った、予め構成された時間期間の間にＣＰＵに対するアイドルＣＰＵリソースの量を取得することのフローチャートである。
【図５】本開示の実施形態に従った、図１ＢのステップＳ１０４のフローチャートである。
【図６】本開示の実施形態に従った、ＣＰＵリソースを割り当て装置のブロック図である。
【図７】本開示の実施形態に従った、図６の装置の取得モジュール１０１のブロック図である。
【図８】本開示の実施形態に従った、図６の装置の割り当てモジュール１０３のブロック図である。
【図９】本開示の実施形態に従った、図８の装置の生成サブモジュール１０３１のブロック図である。
【図１０】本開示の実施形態に従った、ＣＰＵリソースを割り当てる別の装置のブロック図である。
【図１１】本開示の実施形態に従った、ＣＰＵリソースを割り当てる電子デバイスのブロック図である。
【発明を実施するための形態】
【００１４】
以下の説明では本開示の完全な理解を提供するために数々の特定の詳細が示される。しかしながら、本開示がそれらの特定の詳細なしに実施されても良いことが当業者にとって明らかであろう。本明細書における説明及び表示は、それらの業績の内容を他の当業者に最も効率的に伝えるために本分野における経験者または精通者によって使用される一般的な手段である。他の例では、公知の方法、手順、構成要素、及び回路は、本開示の態様を不必要に曖昧にすることを回避するために詳細には説明されない。
【００１５】
本明細書における「ｏｎｅ  ｅｍｂｏｄｉｍｅｎｔ（１つの実施形態）」または「ａｎ  ｅｍｂｏｄｉｍｅｎｔ（１つの実施形態）」への言及は、実施形態とともに説明される特定の性質、構造、または特性を開示の少なくとも１つの実施形態に含めることができることを意味する。明細書の様々な場所で現れるフレーズ「ｉｎ  ｏｎｅ  ｅｍｂｏｄｉｍｅｎｔ（１つの実施形態において）」は、必ずしも全てが同一の実施形態を指すものではなく、他の実施形態を相互に除外する別個の実施形態でもなく、代替的な実施形態でもない。本明細書で使用される用語「ｕｐｐｅｒ」、「ｌｏｗｅｒ」、「ｔｏｐ」、「ｂｏｔｔｏｍ」、「ｍｉｄｄｌｅ」、「ｕｐｗａｒｄｓ」、及び「ｄｏｗｎｗａｒｄｓ」は、説明を目的として相対的な位置を提供することを意図し、基準の絶対的なフレームを指定することを意図していない。さらに、開示の１つまたは複数の実施形態を表わす処理のフローチャートまたは図におけるブロックの順序は、いかなる特定の順序を本質的に示すものではなく、開示のいかなる限定を示唆するものでもない。
【００１６】
本開示の実施形態は、図１〜１１を参照して本明細書で議論される。しかしながら、当業者は、それらの図面に関して本明細書で与えられる詳細な説明が、それらの限定された実施形態を超えて本開示が拡張するように説明を目的としていることを容易に理解するであろう。
【００１７】
本開示は、予め構成された時間期間の間の、プロセスグループに対する要求されたＣＰＵリソースの量、及びマルチプロセッサデバイスのＣＰＵに対するアイドルＣＰＵリソースの量に基づいて、マルチプロセッサデバイス上で実行するプロセスグループに対してＣＰＵリソースを割り当てる方法を提供する。各プロセスグループによる要求された量のＣＰＵリソースに加え、各ＣＰＵにおける現在利用可能な量のＣＰＵリソースを使用することによって、本開示は、ＣＰＵリソースの動的な割り当ての方法を提供する。
【００１８】
図１Ａを参照して、本開示の実施形態に従った、ＣＰＵリソースを割り当てる方法のフローチャートが示される。方法１００は、ステップＳ１０１で開始し、そこでは、予め構成された時間期間の間、マルチプロセッサデバイス上で実行するプロセスグループごとの要求されたＣＰＵリソースの量、及び予め構成された時間期間の間、マルチプロセッサデバイスのＣＰＵごとのアイドルＣＰＵリソースの量が取得される。
【００１９】
マルチプロセッサデバイスにより実行されるプロセスグループごとに、上述した方法によって取得された要求されたＣＰＵリソースの量、及びマルチプロセッサデバイスのＣＰＵごとのアイドルＣＰＵリソースの量の両方で、方法１００は、プロセスグループごとにＣＰＵリソースを割り当てるステップＳ１０３に進む。
【００２０】
ステップＳ１０３では、予め構成された時間期間の間の各プロセスグループによる要求されたＣＰＵリソースの量、及び予め構成された時間期間の間のＣＰＵごとのアイドルＣＰＵリソースの量に基づいて、要求された量のＣＰＵリソースが各プロセスグループに割り当てられる。
【００２１】
本開示は、ＣＰＵリソースの動的な割り当てを提供する。２つの例示的な実施態様が以下で説明される。第１に、全体的なＣＰＵリソースの割り当て戦略が全てのプロセスグループに対して生成され、その後、統一されたプロビジョニングが戦略に従って実装される。第２に、プロセスグループに対して割り当てられることになるＣＰＵリソースが決定され、その後、プロビジョニングツールの使用によってプロセスグループがそのそれぞれの割り当てられたＣＰＵリソースに対して固定される。同一の割り当て及びプロビジョニング処理は、複数のプロセスグループのプロセスグループごとに繰り返される。言い換えると、プロセスグループに対する各ＣＰＵリソースの割り当ての後に、その特定のプロセスグループへの割り当てられたリソースのプロビジョニングが続く。上記説明された例示的な方法は、実施態様の変形にすぎず、その全てが本開示の範囲内にあることが理解される。
【００２２】
図１Ｂを参照して、ＣＰＵリソースのプロビジョニングの上述した第１のアプローチを実装する方法１５０は、本開示の実施形態に従って示される。方法１５０は、ステップＳ１０４で開始し、そこでは、ＣＰＵリソース割り当て戦略が、予め構成された時間期間の間のプロセスグループごとの要求されたＣＰＵリソースの量、及び予め構成された時間期間の間のＣＰＵごとのアイドルＣＰＵリソースの量に基づいて生成される。様々な割り当て戦略を実装するために様々な実施態様を利用することができ、その全てが本開示の範囲内にある。
【００２３】
異なるＣＰＵリソース割り当て戦略は、動的なＣＰＵリソースの均衡化に対する異なる効果を有する。ＣＰＵ使用の動的な均衡化に関するＣＰＵリソース割り当て戦略の効果は、平均二乗誤差などの様々な標準で評価されても良い。理論上は、完全に均衡化されるＣＰＵリソース割り当て戦略は、第１に、各プロセスグループによるＣＰＵリソースに対するリアルタイムな要求が満たされ、第２に、各ＣＰＵがほとんど同一の使用率を有する、２つの条件を満たす。最良のＣＰＵリソース割り当て戦略は、上述した２つの条件の両方を満たす。
【００２４】
例えば、平均二乗誤差などの平均二乗誤差標準を取ることは、ＣＰＵごとの使用率を表わすことができ、割り当て戦略の動的な均衡化の効果を示すことができる。例示的な式は、
【００２５】
【数１】
0006725521.tif 000002
【００２６】
であり、ｎは、ＣＰＵの数であり、Ｖi＝Ｔi／Ｔであり、Ｔiは、予め構成された時間の期間の間のｉ番目のＣＰＵの実行時間であり、Ｖiは、予め構成された時間の期間Ｔの間のｉ番目のＣＰＵの使用率であり、
【００２７】
【数２】
0006725521.tif 000003
【００２８】
は、ｎ番目のＣＰＵの平均使用率であり、ｍｓｅは、平均二乗誤差の値である。
【００２９】
理論的には、上述した式によって計算される最小の平均二乗誤差の値を有する全てのＣＰＵリソース割り当て戦略からの戦略ｍｓｅminが存在し、ｍｓｅminは、２つの上述した条件を満たす最良の解法戦略に対応する。実際には、効率性の懸念によって制約され、全ての可能なＣＰＵリソース割り当て戦略が計算及び分析される可能性は低い。したがって、本開示は、最良の解法のＣＰＵ割り当て戦略を近似させる実施態様を提供する。
【００３０】
図２を参照して、ＣＰＵリソースを割り当てる方法によって使用されるマルチプロセッサデバイスの例示が示される。マルチプロセッサデバイス２００は、同様の処理能力を有する２つ以上のプロセッサ２０４を含むデバイスを指し、プロセッサは、相互間でデータを交換し、メモリ２０２、Ｉ／Ｏデバイス、コントローラ、周辺デバイスなどを共有する。デバイス２００のハードウェアシステムは、プロセス、タスク、プログラム、データ構造及び他の計算構成要素のレベルでプロセッサ及びプログラムの上で並列処理を実現する中央オペレーティングシステムによって制御される。多数のプロセッサの使用によって、デバイス２００は、改善された信頼性及び処理能力を達成する。
【００３１】
マルチプロセッサデバイス２００は、コンピュータワークステーション、複数のプロセッサを有するモバイル通信デバイスなどのモバイル通信デバイスに加え、ＰＤＡ（携帯情報端末）、ｉＰａｄ（登録商標）、ｉＰｈｏｎｅ（登録商標）、及びスマートフォンなどの複数のプロセッサを有する端末デバイスを含むが、それらに限定されない。コンピューティングワークステーション、例えば、マルチプロセッサアーキテクチャを取ることは、全ての性能レベルのコンピューティングワークステーションに対する主流な設計となっている。高性能なパーソナルコンピュータは、２〜４つのプロセッサを有することができ、適度な性能のコンピューティングワークステーションは、１０より多いプロセッサを有することができ、高性能なコンピューティングワークステーションは、数百、数千または数万のプロセッサを有することができる。
【００３２】
マルチプロセッサデバイスは、それによってコンピュータシステムが２つ以上のプロセッサを並列に実行する並列処理、計算アルゴリズムに対して設計される。そのようなシステムのプロセッサは、同一のプログラムから異なるプロセスまたはタスクを実行することができる。例えば、大規模の複雑な問題を解決する完了時間を短縮するために、プログラムが並列処理システムで実行するために準備される。言い換えると、プログラムは、異なるプロセッサによる実行のために異なるタスクに分割される。準備の後、プログラムのタスクは、実行の間のそれらのそれぞれのプロセスに対応する。マルチプロセッサデバイスは、関連する動作のプロセスを１つのプロセスグループとして割り当て、その結果、上述したプログラムが１つのプロセスグループに対応する。並列処理の技術の使用によって、ｎ個のプロセッサ上で実行するプログラムの速度は、同様の処理能力の単一のプロセッサ上で実行するよりもｎ倍高速になることができる。
【００３３】
上述したマルチプロセッサデバイスによる１つのプログラムの異なるタスクを実行することに加え、デバイスはまた、異なるプログラムを並列して実行することができ、プログラムの各々は、そのそれぞれのプロセスグループに対応する。したがって、マルチプロセッサデバイスは、並列処理の環境で動作し、その各々がマルチプロセッサデバイスのハードウェアリソースを共有する。
【００３４】
上述したプロセスは、オペレーティングシステムの基本的な構成要素、すなわち、プログラムの実行、またはプログラムの動作の集合、及びそのプログラムされた順序で実行している間のそのデータを指す。実行中の複数のプログラムがリソースを共有するので、実行の間にプログラムの間で潜在的な制約が存在し、それは、プログラムの実行の中断または一時停止などの兆候を生じさせる。それらの兆候はプログラムの実行中に発生し、これは動的プロセスである。しかしながら、従来のプログラムは、コマンドの集合、どのようにプログラムがメモリ内で実行されるかに関するいかなる観念がない静的なセットである。言い換えると、それがいつ実行されるか、その実行がいつ一時停止されるか、または何が並列に実行されている他のプログラムとの相互関係であるかに関してのプログラムのコードから判定することができない。したがって、静的なプログラムコードは、並列処理におけるその実行と関連付けられた特性を反映しない。実行中のプログラムの動的な態様を説明するために、プロセスの概念が導入される。
【００３５】
上述したプロセスグループは、１つまたは複数のプロセスを含むプロセスのグループを指す。動作に関連するプロセスは、１つのプロセスグループとして割り当てられる。マルチプロセッサデバイスが同時に様々なプログラムを実行することができるので、プログラムの各々は、１つのプロセスグループに対応する。プログラム間での分離を達成するために、本開示は、ＣＰＵリソースをプログラム間で分離することができるようにＣＰＵリソースをプロセスグループの単位で割り当てる。
【００３６】
本開示は、予め構成された時間期間の間の各プロセスグループによる要求されたＣＰＵリソースの量、及び予め構成された時間期間の間のマルチプロセッサデバイスの各ＣＰＵのアイドルＣＰＵ時間の量に基づいて、マルチプロセッサデバイス上で実行するプロセスグループの各々に対しＣＰＵリソースを割り当てる方法を提供する。したがって、予め構成された時間期間の間の各プロセスグループによる要求されたＣＰＵリソースの量、及び予め構成された時間期間の間のマルチプロセッサデバイスの各ＣＰＵのアイドルＣＰＵ時間の量は、最初に取得される必要がある。
【００３７】
予め構成された時間期間の間のプロセスグループに対する要求されたＣＰＵリソースの量は、予め構成された時間期間の間のマルチプロセッサデバイスの各ＣＰＵ上でのプロセスグループによる実行時間の合計を指す。予め構成された時間期間は、その間にＣＰＵの実行条件が監視される予め構成された時間期間である。予め構成された時間期間は、ＣＰＵリソース割当が開始される時間間隔に関連する。時間期間が短い場合、ＣＰＵリソース割り当て時間間隔は、それに従ってより短い。そうでない場合、予め構成された時間期間がより長いと、ＣＰＵ割り当て時間間隔がより長い。実施態様では、環境下での要件に基づいて時間期間を決定することができる。
【００３８】
図３を参照して、本開示の実施形態に従った、予め構成された時間期間の間、プロセスグループに対する要求されたＣＰＵリソースの量を取得することのフローチャートが示される。方法３００はステップＳ１０１１で開始し、そこでは、予め構成された時間期間の間の各ＣＰＵ上でのプロセスグループの実行時間が取得される。予め構成された時間期間の間のプロセスグループに対する要求されたＣＰＵリソースの量を取得するために、各ＣＰＵ上での実行時間のデータがプロセスグループに対して取得される。マルチプロセッサデバイスのオペレーティングシステムによって提供される監視ツールを通じて、予め構成された時間期間の間の各ＣＰＵ上での各プロセスグループによる実行時間を取得することができる。例えば、Ｌｉｎｕｘシステムを考えると、デフォルトであるがシステムは、各ＣＰＵ上での各プロセスグループによる実行時間を直接取得するためのツールを提供しないが、カーネルパッチングアプローチの使用により実行時間を取得することができる。
【００３９】
一部の実施形態では、ｃｇｒｏｕｐｓ下のｃｐｕａｃｃｔ．ｕｓａｇｅ＿ｐｅｒ＿ｃｐｕの使用により各ＣＰＵ上でのプロセスグループの実行時間を取得することができる。Ｃｇｒｏｕｐｓは、「制御グループ」、プロセスグループのＣＰＵ、メモリ、ディスクＩ／Ｏ、ネットワークなどの物理的リソースを制限し、構成し、及び分離するためのＬｉｎｕｘカーネルの機能を表す。Ｃｇｒｏｕｐｓはまた、リソースの仮想化のためのＬＸＣ（Ｌｉｎｕｘ  Ｃｏｎｔａｉｎｅｒ）のリソース管理メカニズム、ＬＣＸシステムの必須の構成要素である。
【００４０】
ステップＳ１０１１で取得された予め構成された時間期間の間の各ＣＰＵ上でのプロセスグループの実行時間で、ステップＳ１０１２では、予め構成された時間期間の間の各ＣＰＵ上でのプロセスグループの実行時間の合計は、予め構成された時間期間の間のプロセスグループによる要求されたＣＰＵリソースの量として計算される。
【００４１】
予め構成された時間期間の間のＣＰＵに対する現在のアイドルＣＰＵリソースは、ＣＰＵが予め構成された時間期間の間にアイドルのままでいる時間の量を指す。図４を参照して、本開示の実施形態に従った、ＣＰＵリソースを割り当てる方法によってアイドルＣＰＵリソースの量を取得することのフローチャートが示される。方法４００はステップＳ１０１１’で開始し、そこでは、予め構成された時間期間の間のＣＰＵの実行時間が取得される。例えば、Ｌｉｎｕｘシステムを考えると、Ｌｉｎｕｘオペレーティングシステムはデフォルトで、機能監視ツールを提供し、その使用によって、予め構成された時間期間の間の各ＣＰＵの実行時間を取得することができる。監視ツールは、ｖｍｓｔａｔ、ｐｓ、ｔｏｐなどのユーティリティを含むが、それらに限定されない。ｖｍｓｔａｔコマンドは、ＣＰＵの動作に加え、カーネルスレッド、仮想メモリ、ディスク、トラップに関する統計情報に関して報告する。コマンドｖｍｓｔａｔの使用によって生成される報告は、システムの作業負荷を均衡化するために使用されることができる。ｐｓ及びｔｏｐコマンドは、システムの監視のためにその中で最も良く利用されるコマンドであり、ｐｓコマンドは、実行中のプロセスのリスト、コマンドに対して指定されるパラメータによって判定されるリスト化されたプロセスの数を報告する。例えば、コマンド「ｐｓ−Ａ」は、実行中の全てのプロセス、及びそれらのそれぞれのプロセスＩＤ（ＰＩＤ）を報告し、それらは、ｐｍａｐまたはｒｅｎｉｃｅなどの他のコマンドに対して指定される必要があるパラメータである。
【００４２】
ステップＳ１０１２’では、方法４００は、予め構成された時間期間の長さと、予め構成された時間期間の間のＣＰＵアイドル時間としてのＣＰＵの実行時間との間の差異を計算する。一部の実施形態では、アイドルＣＰＵリソースの量が、式Ｔ2j＝Ｔ−Ｔ1jで計算され、Ｔは、予め構成された時間期間であり、Ｔ1jは、予め構成された時間期間Ｔの間のプロセッサＰjの実行時間であり、Ｔ2jは、予め構成された時間期間Ｔの間のプロセッサＰjのアイドル時間である。
【００４３】
図５を参照して、本開示の実施形態に従った、図１ＢのステップＳ１０４のフローチャートが示される。方法５００はステップＳ１０３１１で開始し、そこでは、プロセスグループは、予め構成された時間期間の間のプロセスグループごとの要求されたＣＰＵリソースの取得された量の降順でプロセスグループリストに配列される。予め構成された時間期間の間のＣＰＵごとのアイドルＣＰＵリソースの量に基づいて、ＣＰＵはまた、アイドルＣＰＵリソースの量の降順でＣＰＵリストに配列される。
【００４４】
本開示は、マルチプロセスデバイス上で実行するプロセスグループに対する動的なＣＰＵリソース割り当てを提供する。ＣＰＵリソースは、予め構成された時間期間の間のプロセスグループに対する要求されたＣＰＵリソースの量の降順に基づいて、各プロセスグループに割り当てられる。実際には、ＣＰＵリソースがプロセスグループに対して割り当てられるとき、プロセスグループに対する要求された数のＣＰＵがアイドルＣＰＵリソースの量の降順でＣＰＵリストから割り当てられる。したがって、１）要求されたＣＰＵリソースの量の降順でのプロセスグループリスト、及び２）アイドルＣＰＵリソースの量の降順でのＣＰＵリストが最初に取得される。
【００４５】
ステップＳ１０３１１でプロセスグループリスト及びＣＰＵリストを取得した後、方法５００はステップＳ１０３１２に進み、そこでは、プロセスグループリストにおける最初の位置に配列されたプロセスグループが現在のプロセスグループとして指定される。ステップＳ１０１３３では、現在のプロセスグループによる要求されたＣＰＵリソースの量に基づいて、かつＣＰＵリストにおける最初の位置に配列されたＣＰＵから始まり、要求された数のＣＰＵがリストの降順でＣＰＵリストから選択され、現在のプロセスグループに割り当てられる。
【００４６】
実施態様では、ＣＰＵリソースは、ＣＰＵリストの降順に続くプロセスグループに割り当てられ、すなわち、より小さな量のアイドルＣＰＵリソースを有するＣＰＵよりも前に、より大きな量のアイドルＣＰＵリソースを有するＣＰＵが選択され、割り当てられる。
【００４７】
ステップＳ１０３１４では、各ＣＰＵ上での現在のプロセスグループの実行時間に基づいて、アイドルＣＰＵリソースの量が割り当てられたＣＰＵに対して更新される。要求された数のＣＰＵが現在のプロセスグループに割り当てられた後、割り当てられたＣＰＵのアイドルＣＰＵ時間の量がそれに従って変わる。したがって、各ＣＰＵ上での現在のプロセスグループに対する実行時間に基づいて、割り当てられたＣＰＵに対するアイドルＣＰＵリソースの量を更新する必要がある。各ＣＰＵ上でのプロセスグループに対する実行時間を取得することは、上述したステップＳ１０１１と実質的に同様であり、詳細は簡潔さを目的に繰り返されない。
【００４８】
ステップＳ１０３１５では、ＣＰＵリストは、アイドルＣＰＵリソースの更新された量の降順で再配列される。現在のプロセスグループに対してＣＰＵリソースを割り当てた後、ＣＰＵリソースは、プロセスグループリストにおける次のプロセスグループに対して割り当てられる必要がある。ステップＳ１０３１４で新たに割り当てられたＣＰＵに対して更新されたアイドルＣＰＵリソースの量、及びＣＰＵリストを降順で再配列するために現在のプロセスグループに割り当てられないＣＰＵに対して変わらないままでいるアイドルＣＰＵリソースの量を利用する必要があり、それによって、最大量の利用可能なリソースを有するＣＰＵをプロセスグループリストにおける対応するプロセスグループに常に最初に割り当てることができる。
【００４９】
ステップＳ１０３１６では、現在のプロセスグループがプロセスグループリストにおける最後のプロセスグループであるかが判定される。ＣＰＵリソースをプロセスグループリストにおける次のプロセスグループに対して割り当てる前に、それに対してＣＰＵリソースが現在割り当てられているプロセスグループがプロセスグループリストにおける最後の１つであるかが最初に判定される。現在のプロセスグループがリストにおける最後の１つであると判定される場合、方法５００はステップＳ１０３１７に進み、ＣＰＵリソースをプロセスグループに対して割り当てることを完了する。そうでない場合、方法５００はＣＰＵリソースを割り当てるためのどのプロセスグループが次であるかを判定し、ＣＰＵリソースを判定された次のプロセスグループに対して割り当てるためにステップＳ１０３１３に続いて戻るためにステップＳ１０３１８に進む。
【００５０】
ステップＳ１０３１８では、プロセスグループリストにおける次のプロセスグループが現在のプロセスグループとして決定される。方法５００はＳ１０３１に続いて戻り、そこでは、現在のプロセスグループによる要求されたＣＰＵリソースの量に基づいて、かつＣＰＵリストにおける最初の位置に配列されたＣＰＵから開始して、要求された数のＣＰＵがリストの降順でＣＰＵリストから選択され、現在のプロセスグループに割り当てられる。
【００５１】
再度図１Ｂを参照して、ＣＰＵリソース割り当て戦略が生成されるステップＳ１０３１１〜Ｓ１０３１８の後、方法１５０はステップＳ１０５に進み、ＣＰＵ割り当て戦略を展開する。ステップＳ１０５では、各プロセスグループが生成されたＣＰＵリソース割り当て戦略に従ってそのそれぞれの割り当てられたＣＰＵに固定される。例えば、Ｌｉｎｕｘシステムを考えると、ｔａｓｋｓｅｔ、ｃｇｒｏｕｐｓ機能のｃｐｕｓｅｔサブシステム、ｎｉｃｅ及びｒｅｎｉｃｅなどのコマンドの使用によって、プロセスグループを１つまたは複数のＣＰＵに固定することができる。コマンドｔａｓｋｓｅｔで、特定のプロセスを実行するための１つまたは複数のＣＰＵを指定することを開始するために「ｔａｓｋｓｅｔ−Ｃ＜ｃｐｕｎｒ＞＜ｃｏｍｍａｎｄ＞」の例示的なコマンドを利用することができる。ｃｇｒｏｕｐｓ機能のｃｐｕｓｅｔサブシステムで、特定のプロセスグループに対して指定されたＣＰＵのＣＰＵ番号を指定するために「＃ｅｃｈｏ  ０，２，４，６＞／ｃｇｒｏｕｐ／＜ｐｒｏｃｅｓｓ  ｇｒｏｕｐ  ｎａｍｅ＞／ｃｐｕｓｅｔ．ｃｐｕｓ」の例示的なコマンドを利用することができ、すなわち、０、２、４、または６で番号付けされたＣＰＵ上でのみプロセスグループを実行することができる。
【００５２】
一部の実施形態では、ＣＰＵリソース割り当て戦略は、各プロセスグループとそのそれぞれのＣＰＵリソースとの間のマッピング関係を含む。戦略に従って、ＣＰＵ割り当て戦略のプロビジョニングを完了するように各プロセスグループがそのそれぞれの割り当てられたＣＰＵに固定される。
【００５３】
一部の他の実施形態では、ＣＰＵリソース割り当て戦略のプロビジョニングは、プロセスグループに対するリソース割り当てが決定されると即時にプロビジョニングツールを使用することによって、割り当てられたＣＰＵを１つのプロセスグループに固定する。その後、プロビジョニングが他のプロセスグループに対して１つずつ実行される。プロビジョニングの２つのアプローチの間の差異は、プロセスグループがその割り当てられたＣＰＵに固定されるときのタイミングにあり、他の態様は実質的に同様であり、したがって、詳細はここで繰り返されない。
【００５４】
本開示がＣＰＵリソースの動的な割り当てを提供するために、マルチプロセッサデバイス上での各プロセスの実行の動的な特性が考慮される必要がある。マルチプロセッサデバイスの実行条件の動的性を考える１つの方法は、ＣＰＵリソースを割り当てる方法をトリガする実行条件を予め構成することである。予め構成された実行条件が満たされるとき、ＣＰＵリソースが割り当てられる。ＣＰＵリソース割り当てをトリガするための様々な実行条件を構成することができ、４つの例示的な条件が以下に示される。
【００５５】
第１に、実行条件は、ＣＰＵリソースの割り当ての現在と最後との間の時間の経過が予め構成された時間間隔よりも大きいことであることができる。この実行条件の下で、マルチプロセッサデバイスが全体的に均衡化されたＣＰＵ使用率の状態にあるように、ＣＰＵリソース割り当てが固定された時間間隔で実行される。実際に、そのような時間間隔は、分の単位、例えば、１〜５分の間で構成されても良い。
【００５６】
第２に、実行条件は、各ＣＰＵの最大ＣＰＵ使用が予め構成された閾値を上回ることであることができる。この実行条件の下で、各ＣＰＵのＣＰＵ使用の最大値が予め構成された閾値を上回ると判定される場合、ＣＰＵ割り当てを実行するための条件が満たされる。この実行条件は、固定されていない時間間隔でＣＰＵリソース割り当てを実行するための条件を提供する。不要なＣＰＵリソースの均衡化を回避し、実行条件に対するある程度の精度を保証するために、予め構成された閾値は、適切な値で構成される必要がある。
【００５７】
一部の実施形態では、予め構成された閾値は、大量の実験に基づいて決定される。予め構成された閾値は、ＣＰＵがその全ての作業負荷能力にあり、またはそれに近いことを示し、したがって、それは、ＣＰＵリソースを均衡化、または再均衡化するための時間である。ハイパースレッドマルチプロセッサデバイスについて、約６０％で閾値を構成することができ、そうでない場合、約８０％で閾値を構成することができる。
【００５８】
第３に、実行条件は、各ＣＰＵのＣＰＵ使用率の最大値が各ＣＰＵのＣＰＵ使用率の最小値のＮ倍を上回ることであることができる。この実行条件の下で、各ＣＰＵの最大ＣＰＵ使用率が各ＣＰＵのＣＰＵ使用率の最小値のＮ倍を上回ると判定される場合、実行条件が満たされる。
【００５９】
第４に、実行条件は、各ＣＰＵの最大ＣＰＵ使用率が予め構成された閾値を上回り、各ＣＰＵの最大ＣＰＵ使用率が各ＣＰＵのＣＰＵ使用率の最小値のＮ倍を上回ることであることができる。この実行条件の下で、第２及び第３の実行条件の両方が満たされるとき、第４の条件が満たされると考えられる。
【００６０】
実際に、上述した例示的な実行条件のうちの１つは、環境の下で選択されても良い。第１の例示的な実行条件は、固定された時間間隔でＣＰＵリソース割り当ての実行をトリガし、第２、第３及び第４の実行条件は、マルチプロセッサデバイスの実行条件に従って、固定されていない時間間隔でＣＰＵリソース割り当ての実行をトリガする。言い換えると、均衡化されていないＣＰＵ使用の状態がなおも存在する。しかしながら、デバイスにおいて検出されたＣＰＵリソースの不均衡が存在しない場合、デバイス上で実行する各プログラムによる全ての要求されたＣＰＵリソースが満たされ、したがって、プログラムの実行及び動作が保証され、ＣＰＵリソースの使用を均衡化する必要がない。
【００６１】
一部の実施形態では、第４の実行条件の下で、複数のプロセスグループによって共有されるＣＰＵは、ｘの最大ＣＰＵ使用率、ｙの最小ＣＰＵ使用率を有する。ｘが予め構成された閾値を上回り、ｘ＞ｎ×ｙであるとき、第４の条件は、ＣＰＵリソース割り当てを実行するようにトリガされる。例えば、数ｎは、２として構成され、すなわち、最大ＣＰＵ使用率が最小ＣＰＵ使用率の値の２倍を上回るとき、現在では、不均衡なＣＰＵリソース割り当てが存在する。
【００６２】
上述した実施形態は、それに応じて、ＣＰＵリソース割り当ての方法を提供し、本開示はさらに、ＣＰＵリソース割り当ての装置を提供する。
【００６３】
図６を参照して、本開示の実施形態に従った、ＣＰＵリソースを割り当てる装置のブロック図が示される。装置６００は、上述した方法と実質的に同様であり、詳細は簡潔さを目的に繰り返されない。
【００６４】
装置６００は、取得モジュール１０１及び割り当てモジュール１０３を含む。取得モジュール１０１は、予め構成された時間期間の間、マルチプロセッサデバイス上で実行するプログレスグループごとの要求されたＣＰＵリソースの量、及び予め構成された時間期間の間、マルチプロセッサデバイスのＣＰＵごとのアイドルＣＰＵリソースの量を取得するように構成される。割り当てモジュール１０３は、プロセスグループに対する要求されたＣＰＵリソースの取得された量、及びＣＰＵに対するアイドルＣＰＵリソースの取得された量に基づいて、ＣＰＵを各プログレスグループに割り当てるように構成される。
【００６５】
図７を参照して、本開示の実施形態に従った、図６の装置６００の取得モジュール１０１のブロック図が示される。取得モジュール１０１は、第１の取得サブモジュール１０１１及び第２の取得サブモジュール１０１２を含むことができる。第１の取得サブモジュール１０１１は、監視サブモジュール１０１１１及び計算サブモジュール１０１１２を含む。監視サブモジュール１０１１１は、予め構成された時間期間の間、各ＣＰＵ上での各プロセスグループの実行時間を取得するように構成される。計算サブモジュール１０１１２は、予め構成された時間期間の間のマルチプロセッサデバイスの各ＣＰＵ上での各プロセスグループの実行時間の合計を計算し、合計を予め構成された時間期間の間のプロセスグループごとの要求されたＣＰＵリソースの量として指定するように構成される。第２の取得サブモジュール１０１２は、予め構成された時間期間の間、マルチプロセッサデバイスのＣＰＵごとのアイドルＣＰＵリソースの量を取得するように構成される。第２の取得サブモジュール１０１２は、監視サブモジュール１０１２１及び計算サブモジュール１０１２２を含む。監視サブモジュール１０１２１は、予め構成された時間期間の間、マルチプロセッサデバイスの各ＣＰＵの実行時間を取得するように構成される。計算サブモジュール１０１２２は、予め構成された時間期間の長さと各ＣＰＵの取得された実行時間との間の差異を計算し、差異を予め構成された時間期間の間のＣＰＵごとのアイドルＣＰＵリソースの量として指定するように構成される。
【００６６】
図８を参照して、本開示の実施形態に従った、装置６００の割り当てモジュール１０３のブロック図が示される。割り当てモジュール１０３は、生成サブモジュール１０３１及び展開サブモジュール１０３２を含む。生成サブモジュール１０３１は、プロセスグループごとの要求されたＣＰＵリソースの取得された量、及びＣＰＵごとのアイドルＣＰＵリソースの取得された量に基づいて、ＣＰＵリソースを割り当てるための戦略を生成するように構成される。展開サブモジュール１０３２は、各プロセスグループをそれぞれの割り当てられたＣＰＵに固定することによって、戦略で割り当てられたＣＰＵリソースを展開するように構成される。
【００６７】
図９を参照して、本開示の実施形態に従った、図８の生成サブモジュール１０３１のブロック図が示される。生成サブモジュール１０３１は、初期順序付けサブモジュール１０３１１、第１の位置決めサブモジュール１０３１２、割り当てサブモジュール１０３１３、更新サブモジュール１０３１４、再順序付けサブモジュール１０３１５、判定サブモジュール１０３１６、完了サブモジュール１０３１７及び第２の位置決めサブモジュール１０３１８を含む。
【００６８】
初期順序付けサブモジュール１０３１１は、プロセスグループの第１のリストを取得するように構成され、プロセスグループは、予め構成された時間期間の間の各プロセスグループの要求されたＣＰＵリソースの量の第１の降順で配列される。初期順序付けサブモジュール１０３１１はまた、ＣＰＵの第２のリストを取得するように構成され、ＣＰＵは、予め構成された時間期間の間の各ＣＰＵのアイドルＣＰＵリソースの量の第２の降順で配列される。
【００６９】
第１の位置決めサブモジュール１０３１２は、第１のリストの第１の位置におけるプロセスグループを現在のプロセスグループとして指定するように構成される。割り当てサブモジュール１０３１３は、現在のプロセスグループの要求されたＣＰＵリソースの量に基づいて、要求されたＣＰＵの量を第１の降順で第２のリストから選択するように構成される。更新サブモジュール１０３１４は、各ＣＰＵ上での現在のプロセスグループの実行時間に基づいて、割り当てられたＣＰＵに対するアイドルＣＰＵリソースの量を更新するように構成される。再順序付けサブモジュール１０３１５は、ＣＰＵの第２のリストを更新するように構成され、ＣＰＵは、アイドルＣＰＵリソースの更新された量の第２の降順で配列される。判定サブモジュール１０３１６は、現在のプロセスグループが第１のリストの最後のプロセスグループであるかを判定するように構成される。完了サブモジュール１０３１７は、現在のプロセスグループが第１のリストの最後のプロセスグループであるとの判定に応答して、ＣＰＵリソースの割り当てを終了するように構成される。第２の位置決めサブモジュール１０３１８は、現在のプロセスグループが第１のリストの最後のプロセスグループでないとの判定に応答して、第１のリストにおいて次にランク付けされた位置を第１の位置として指定し、第１の位置決めサブモジュール１０３１２の実行を開始し、それによって、第１のリストの第１の位置におけるプロセスグループを現在のプロセスグループとして指定することから始まり、ＣＰＵリソースを次のプロセスグループに対して割り当てる。
【００７０】
図１０を参照して、本開示の実施形態に従った、ＣＰＵリソースを割り当てる別の装置のブロック図が示される。装置１０００は、取得モジュール１０１及び割り当てモジュール１０３に加え、トリガモジュール２０１を含む。トリガモジュール２０１は、予め構成された条件が満たされるとき、装置１０００によってＣＰＵリソースの割り当てを実行するように構成される。
【００７１】
図１１を参照して、本開示の実施形態に従った、ＣＰＵリソースを割り当てる電子デバイスのブロック図が示される。デバイス１１００は、メモリ３０１及び複数のプロセッサ３０２を含む。複数のプロセスグループは、プロセッサ３０２上で実行する。ＣＰＵリソースは、予め構成された時間期間の間、デバイス１１００上で実行するプログレスグループごとの要求されたＣＰＵリソースの量を取得することによって、複数のプロセッサ３０２上で実行するプロセスグループの各々に割り当てられる。割り当てはまた、予め構成された時間期間の間、デバイス１１００のＣＰＵごとのアイドルＣＰＵリソースの量を取得することを含む。割り当てはさらに、予め構成された時間期間の間のプロセスグループに対する要求されたＣＰＵリソースの取得された量、及びＣＰＵごとのアイドルＣＰＵリソースの取得された量に基づいて、ＣＰＵリソースを各プログレスグループに割り当てることを含む。
【００７２】
本開示の実施形態は、ソフトウェア、ハードウェア、ファームウェア、及び／またはそれらの組み合わせを使用して実装されても良い。ソフトウェア、ハードウェア、ファームウェアまたはそれらの組み合わせを使用して実装されるかに関わらず、いずれかの種類のコンピュータ可読媒体（例えば、永続的または修正可能な、揮発性または不揮発性、固体または非固体、固定または変更可能媒体など）に命令コードを記憶することができる。同様に、例えば、プログラマブルアレイロジック（ＰＡＬ）、ランダムアクセスメモリ（ＲＡＭ）、プログラマブルリードオンリメモリ（ＰＲＯＭ）、リードオンリメモリ（ＲＯＭ）、電子的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、磁気記憶装置、光学式記憶装置、またはデジタル多用途ディスク（ＤＶＤ）などを使用して、そのような媒体を実装することができる。
【００７３】
本開示の実施形態によって説明されたモジュールまたはブロックは、論理モジュールまたは論理ブロックであることを指摘する必要がある。物理的には、論理モジュールまたは論理ブロックは、物理モジュールもしくは物理ブロック、物理モジュールもしくは物理ブロックの一部、または１つより多くの物理モジュールもしくは物理ブロックの組み合わせであることができる。それらの論理モジュールまたは論理ブロックの物理的な実施態様は必須ではない。モジュール、ブロック及びそれらの組み合わせによって実現される理解される機能は、本開示によって対処される課題を解決する鍵である。さらに、本開示の新規性を開示するために、上述した実施形態は、本開示によって対処される課題を解決することに大きく関連しないそれらのモジュールまたはブロックについて開示せず、それは、上述した実施形態が他のモジュールまたはブロックに含むことができないことを意味しない。
【００７４】
また、本開示の特許請求の範囲及び明細書において、第１の、及び第２の等の用語は単に、実施形態または動作を別の実施形態または動作と区別するためのものであることを指摘する必要がある。それらの実施形態または動作がいずれかのそのような実際の関係または順序を有することを必要とせず、かつ示唆していない。さらに、本明細書で使用されるように、用語「ｃｏｍｐｒｉｓｉｎｇ（含む）」、「ｉｎｃｌｕｄｉｎｇ（含む）」またはいずれかの他の変形は、非限定的な包含物をカバーすることを意図しており、それによって、要素のリストを含む処理、方法、項目、または装置がそれらの要素のみを含むわけではなく、明確に表示されておらず、またはそのような処理、方法、項目、もしくは装置に固有な他の要素を含んでも良い。さらなる限定なしに、フレーズ「ｃｏｍｐｒｉｓｉｎｇ  ａ（１つの〜を含む）」によって記載される要素は、そのような要素を含む処理、方法、項目、または装置を他の同一の要素を含むことから排除しない。
【００７５】
上記開示が特定のブロック図、フローチャート、及び実施例を使用して様々な実施形態を示したが、本明細書で説明及び／または示された各ブロック図の構成要素、フローチャートのステップ、動作、及び／または構成要素は、広い範囲のハードウェア、ソフトウェア、もしくはファームウェア（または、それらのいずれかの組み合わせ）の構成を使用して個々に及び／または集合的に実装されても良い。加えて、他の構成要素内に含まれる構成要素のいずれかの開示は、同一の機能を達成するために多くの他のアーキテクチャを実装することができるので、実施例として考えられるべきである。
【００７６】
本明細書で説明及び／または示された処理パラメータ及びステップの順序は、例示のみによって与えられ、所望により変化しても良い。例えば、本明細書で説明及び／または示されたステップは、特定の順序で示され、または議論されても良く、それらのステップは、必ずしも示されまたは議論された順序で実行される必要はない。本明細書で説明及び／または示された様々な例示的な方法はまた、本明細書で説明もしくは示されたステップのうちの１つまたは複数を省略しても良く、または開示されたそれらに加え、追加のステップを含んでも良い。
【００７７】
様々な実施形態が完全に機能的なコンピューティングシステムのコンテキストで本明細書において説明及び／または示されてきたが、それらの例示的な実施形態のうちの１つまたは複数は、頒布を実際に実施するために使用されるコンピュータ可読媒体の特定のタイプに関わらず、様々な形式でプログラム製品として頒布されても良い。本明細書で開示された実施形態はまた、あるタスクを実行するソフトウェアモジュールを使用して実装されても良い。それらのソフトウェアモジュールは、コンピュータ可読記憶媒体またはコンピューティングシステムに記憶され得るスクリプト、バッチ、または他の実行可能ファイルを含んでも良い。それらのソフトウェアモジュールは、本明細書で開示された例示的な実施形態のうちの１つまたは複数を実行するためにコンピューティングシステムを構成しても良い。本明細書で開示されたソフトウェアモジュールのうちの１つまたは複数は、クラウドコンピューティング環境で実装されても良い。クラウドコンピューティング環境は、インターネットを介して様々なサービス及びアプリケーションを提供しても良い。それらのクラウドベースのサービスは、（例えば、サービスとしてのソフトウェア、サービスとしてのプラットフォーム、サービスとしてのインフラストラクチャなど）は、ウェブブラウザまたは他のリモートインタフェースを通じてアクセス可能であっても良い。本明細書で説明された様々な機能は、リモートデスクトップ環境またはいずれかの他のクラウドベースのコンピューティング環境を通じて提供されても良い。
【００７８】
本開示及びその利点が詳細に説明されてきたが、添付の特許請求の範囲によって定義される開示の精神及び範囲から逸脱することなしに本明細書で様々な変更、置換え、及び変形を行うことができることを理解されたい。多くの修正及び変形が上記教示を考慮して可能である。開示の原理及びその実際の適用を最良に説明するために、実施形態が選択及び説明されており、それによって、考えられる特定の使用に適合し得るように開示及び様々な修正を有する様々な実施形態を他の当業者が最良に利用することが可能になる。
【００７９】
さらに、本出願の範囲は、明細書で説明された処理、機械、製造、組成物、手段、方法及びステップの特定の実施形態に限定されることを意図していない。当業者のうちの１人は本開示の開示物から処理、機械、製造、組成物、手段、方法、またはステップを容易に理解するので、本明細書で説明された対応する実施形態と実質的に同一の機能を実行し、または実質的に同一の結果を達成する、現在存在し、または後に開発されることになるものは、本開示に従って利用されても良い。したがって、添付の特許請求の範囲は、そのような処理、機械、製造、組成物、手段、方法、またはステップをそれらの範囲内に含めることを意図している。
【００８０】
よって、本開示に従った実施形態が説明される。本開示が特定の実施形態で説明されてきたが、開示は、そのような実施形態によって限定されるものと解釈されるべきでなく、むしろ、以下の特許請求の範囲に従って解釈されるべきであることを理解されよう。
【図１Ａ】
0006725521.tif 000004
【図１Ｂ】
0006725521.tif 000005
【図２】
0006725521.tif 000006
【図３】
0006725521.tif 000007
【図４】
0006725521.tif 000008
【図５】
0006725521.tif 000009
【図６】
0006725521.tif 000010
【図７】
0006725521.tif 000011
【図８】
0006725521.tif 000012
【図９】
0006725521.tif 000013
【図１０】
0006725521.tif 000014
【図１１】
0006725521.tif 000015