JP2024517310A - コンシューマにリソースを割り当てるためのリソース割り当て制限をセットするための制約プログラミングの使用 - Google Patents

コンシューマにリソースを割り当てるためのリソース割り当て制限をセットするための制約プログラミングの使用 Download PDF

Info

Publication number
JP2024517310A
JP2024517310A JP2023569728A JP2023569728A JP2024517310A JP 2024517310 A JP2024517310 A JP 2024517310A JP 2023569728 A JP2023569728 A JP 2023569728A JP 2023569728 A JP2023569728 A JP 2023569728A JP 2024517310 A JP2024517310 A JP 2024517310A
Authority
JP
Japan
Prior art keywords
consumer
vulnerability
resource
elements
constraint
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2023569728A
Other languages
English (en)
Inventor
コレナ,マイケル・パトリック
グリフィン,ジョシュア・ディーン
チェン,ガオ
Original Assignee
オラクル・インターナショナル・コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by オラクル・インターナショナル・コーポレイション filed Critical オラクル・インターナショナル・コーポレイション
Publication of JP2024517310A publication Critical patent/JP2024517310A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/72Admission control; Resource allocation using reservation actions during connection setup
    • H04L47/724Admission control; Resource allocation using reservation actions during connection setup at intermediate nodes, e.g. resource reservation protocol [RSVP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/76Admission control; Resource allocation using dynamic resource allocation, e.g. in-call renegotiation requested by the user or requested by the network in response to changing network conditions
    • H04L47/762Admission control; Resource allocation using dynamic resource allocation, e.g. in-call renegotiation requested by the user or requested by the network in response to changing network conditions triggered by the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/78Architectures of resource allocation
    • H04L47/783Distributed allocation of resources, e.g. bandwidth brokers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/83Admission control; Resource allocation based on usage prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1433Vulnerability analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/504Resource capping

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

リソース割り当て制限には、リソース制限とリソース保証が含まれる。コンシューマは、保証されている以上のリソースを使用すると、他のコンシューマによる中断に対して脆弱になる。リソースは、リソース制限およびリソース保証に基づいて指定および/または割り当てられたコンシューマである。制約プログラミング(CP)ソルバは、リソース使用データに基づいて、脆弱性および/または脆弱性コストを最小限に抑えるリソース制限とリソース保証を決定する。CPデータモデルには、制限要素、保証要素、および脆弱性要素が含まれる。CPデータモデルにはさらに、コンシューマのリソース使用データから生成されている超過分布に依存する保証-脆弱性制約が含まれている。CPデータモデルは、制約の観点から問題の組み合わせ特性を宣言的に表現する。CPは宣言型プログラミングの一種である。

Description

関連出願;参照による組み込み
本出願は、2021年5月10日に出願された米国非仮特許出願第17/302,657号に関連しており、参照により本明細書に組み込まれる。
技術分野
本開示は、制約プログラミングの使用に関する。特に、本開示は、コンピューティングシステムにおいてコンシューマにリソースを割り当てるためのリソース割り当て制限をセットするための制約プログラミングの使用に関する。
背景
コンピューティングシステムは、コンシューマのセット(例えば、データベースインスタンス)間で共有されるリソースのセット(例えば、中央処理装置(CPU))を含む。1のコンシューマがリソースの共有セットに対して大きな要求を行うと、そのコンシューマは他のコンシューマの性能に悪影響を与え得る。
有限セットのリソースを共有するコンシューマ間の悪影響を軽減する1つの方法は、コンシューマにリソース割り当て制限を強制することである。しかし、コンシューマはさまざまなプロセスタイプ、優先順位、および/またはその他の属性に関連付けられている。さらに、コンシューマのプロセス負荷は動的に変化する。コンシューマの静的属性および/または動的負荷を考慮せずにリソース割り当て制限がセットされると、リソースの割り当てが非効率になり得る。例えば、一部のリソースが十分に活用されていない一方で、一部のコンシューマは制限に抵抗し得る。
このセクションで説明するアプローチは、追求することができるアプローチであるが、必ずしも以前に考案または追求されたアプローチであるわけではない。したがって、別段の指示がない限り、このセクションに記載されているアプローチのいずれも、単にこのセクションに含まれているという理由だけで従来技術として認定されると想定すべきではない。
実施形態は、例として示されるものであり、添付図面の図に限定されるものではない。本開示における「1つの」または「1つの」実施形態への言及は、必ずしも同じ実施形態を指すわけではなく、それらは少なくとも1つを意味することに留意されたい。図面では次のようになる。
1つまたは複数の実施形態による、コンピューティングシステムを管理するリソースマネージャを示す図である。 1つまたは複数の実施形態による、制約プログラミングデータモデルおよび検索指令生成システムを示す図である。 1つまたは複数の実施形態による、制約プログラミングデータモデルおよび検索指令生成システムを示す図である。 1つまたは複数の実施形態による、特定の履歴期間にわたるリソース使用に基づいて、コンピューティングシステム内のコンシューマに対するリソース制限および/またはリソース保証を更新するための動作のセットの例を示す図である。 1つまたは複数の実施形態による、制約プログラミングデータモデルを生成するための動作のセットの例を示す図である。 1つまたは複数の実施形態による、制約プログラミング検索指令を生成するための動作のセットの例を示す図である。 1つまたは複数の実施形態による、制約プログラミング検索指令を生成するための動作のセットの例を示す図である。 1つまたは複数の実施形態による、制約プログラミング検索指令を生成するための動作のセットの例を示す図である。 1つまたは複数の実施形態による、制約プログラミングデータモデルおよび制約プログラミング検索指令を制約プログラミングソルバに適用するための動作のセットの例を示す図である。 1つまたは複数の実施形態による、制約プログラミングソルバによって更新されているリソース保証に基づいてコンシューマにリソースを指定するための動作のセットの例を示す図である。 1つまたは複数の実施形態による、制約プログラミングソルバによって更新されるリソース制限を超えるプロセス要求をキューイングするための動作のセットの例を示す図である。 1つまたは複数の実施形態によるコンピュータシステムを示すブロック図である。
詳細な説明
以下の説明では、説明の目的で、完全な理解を提供するために多くの具体的な詳細が記載される。1つまたは複数の実施形態は、これらの特定の詳細なしで実施されてもよい。一実施形態で説明されている特徴は、異なる実施形態で説明されている特徴と組み合わせることができる。いくつかの例では、本発明を不必要に分かりにくくすることを避けるために、周知の構造および装置をブロック図形式を参照して説明する。
1.概要
2.コンピューティングシステムアーキテクチャ
3.制約プログラミングデータモデルおよび検索指示生成システムアーキテクチャ
4.リソース割り当て制限の決定と更新
5.制約プログラミングデータモデルと制約プログラミング検索指令の生成と制約プログラミングソルバへの適用
6.リソース保証とリソース制限の強制
7.ハードウェア概要
8.その他;エクステンション
1.概要
1つまたは複数の実施形態は、コンピューティングシステム内のコンシューマにリソースを割り当てるためのリソース割り当て制限をセットすることを含む。リソース割り当て制限には、リソース制限とリソース保証が含まれる。リソース制限は、特定のコンシューマが特定の時期に使用できるリソースの数の上限である。リソース保証は、特定のコンシューマが特定の時期にアクセスできることが保証されるリソースの数の下限である。保証されているリソースを超えるリソースを使用するコンシューマは、他のコンシューマによるリソース要求が突然増加した場合に中断に対して脆弱になる。本明細書で使用される「脆弱性」という用語は、コンシューマのリソース保証を超えるコンシューマのリソース使用を指す。
1つまたは複数の実施形態は、コンピューティングシステムにおいてコンシューマにリソースを割り当てるためのリソース割り当て制限をセットするために制約プログラミング(CP)を使用することを含む。CPは宣言型プログラミングの一種である。CPは、CPデータモデルの仕様と、任意でCP検索指令に基づいて、現実世界の問題の解を取得する。対照的に、命令型プログラミングは一連のステップの仕様に基づいている。
CPデータモデルは、データモデル要素のセット、各要素に割り当てることができる可能な値のドメイン(範囲)、要素に割り当てられる値の組み合わせを定義する1つまたは複数の制約を含む。CPデータモデルに基づいて、すべての制約を満たす要素のセットの値のセットが決定される。すべての制約を満たす要素のセットに対する値のセットは、本明細書では「CP解」と呼ばれ得る。
CP検索指令は、CPデータモデルによって指定されるすべての制約を満たすデータモデル要素のセットへの値のセットの割り当てを導く。CP検索指令により、1つまたは複数のデータモデル要素への値の割り当てが試行される特定のシーケンスが生成される。加えて、または代わりに、CP検索指令は、1つまたは複数のデータモデル要素について、特定の値の割り当てを他の値よりも優先する。同じCPデータモデルに対して異なるCP検索指令を使用すると、異なるCP解が取得され得る。加えて、または代わりに、同じCPデータモデル232に対する異なるCP検索指令234は、CP解を取得するための異なる効率レベルおよび/または実行時間をもたらし得る。
1つまたは複数の実施形態は、コンピューティングシステム内のコンシューマにリソースを割り当てるためのリソース割り当て制限を決定するためのCPデータモデルを生成することを含む。CPデータモデルには、データモデル要素のいくつかのセットが含まれている。制限要素のセットは、コンシューマに対するリソース制限を表す。保証要素のセットは、コンシューマに対するリソース保証を表す。脆弱性要素のセットは、脆弱性を示すデータポイントの数(「脆弱性数」とも呼ばれる)を表す。特定の脆弱性要素は、特定のリソース保証に関して、特定のコンシューマが脆弱であることを示すデータポイントの数を表す。このようなデータポイントの数は、特定の履歴期間における特定のコンシューマのリソース使用データに基づいている。
CPデータモデルはさらに、いくつかの制約を含む。制限-保証制約は、制限要素と保証要素を関係付ける。制限-保証制約では、(特定のコンシューマの)保証要素が、(特定のコンシューマの)制限要素をオーバーサブスクリプション率で割ったものに等しいことが要求され、オーバーサブスクリプション率は、制限要素の合計をリソースの総数(total number of resources)で割ったものに等しくなる。総リソース制約は、保証要素とコンピューティングシステム内のリソースの総数を関係付ける。総リソース制約では、保証要素の合計がリソースの総数以下であることが必要である。保証-脆弱性制約は、保証要素と脆弱性要素を関係付ける。保証-脆弱性制約では、(特定のコンシューマの)脆弱性要素は、履歴期間にわたるリソース使用に基づいて、(特定のコンシューマの)保証要素に割り当てられた(または割り当てられる必要がある)保証値に対応する脆弱性数に等しいことが要求される。
一実施形態では、保証-脆弱性制約は要素制約として表現される。要素制約は、(a)インデックス要素、および(b)一連の値を入力として受け付ける。インデックス要素は、要素制約がインデックス要素に割り当てられた(または割り当てられる必要がある)値に対応する特定の値を一連の値から返すように、一連の値にインデックスを付ける役割を果たす。保証-脆弱性制約の場合、インデックス要素は(特定のコンシューマに対する)保証要素であり、一連の値は(特定のコンシューマに対する)超過分布である。超過分布は、特定のコンシューマのリソース使用が臨界値を超えていることを示すデータポイントの数を示し、臨界値はゼロからコンピューティングシステム内のリソースの総数までの範囲である。このようなデータポイントの数は、特定の履歴期間における特定のコンシューマのリソース使用データに基づいている。
1つまたは複数の実施形態は、コンピューティングシステム内のコンシューマにリソースを割り当てるためのリソース割り当て制限を決定するためのCP検索指令を生成することを含む。一実施形態では、CP検索指令は、脆弱性数に関連付けられている最小化目的関数を含む。一実施形態では、CP検索指令は、脆弱性要素のセットの最大値を最小化することである。別の実施形態では、CP検索指令は、脆弱性要素のセットの平均を最小化することである。別の実施形態では、CP検索指令は、脆弱性要素の合計を最小化する(すなわち、コンピューティングシステムの総脆弱性数を最小化する)ことである。さらに別の実施形態では、CP検索指令は、脆弱性数および脆弱性コストに関連付けられている最小化目的関数を含み、特定のコンシューマに対するコンシューマ当たりの脆弱性コストは、特定のコンシューマに対する脆弱性係数と特定のコンシューマに対する脆弱性要素とを乗じたものである。異なるコンシューマは異なる脆弱性係数に関連付けられ得る。一実施形態では、CP検索指令は、コンシューマごとの脆弱性コストの最大値を最小限に抑えることである。別の実施形態では、CP検索指令は、コンシューマごとの脆弱性コストの平均を最小化することである。別の実施形態では、CP検索指令は、コンシューマごとの脆弱性コストの合計を最小化する(すなわち、コンピューティングシステムの総脆弱性コストを最小化する)ことである。
1つまたは複数の実施形態は、CPデータモデルおよびCP検索指令をCPソルバに適用して、リソース割り当て制限を取得することを含む。リソースマネージャは、CPソルバから更新されているリソース制限および/またはリソース保証を取得する。特定のコンシューマに対するリソース保証に基づいて、リソースマネージャは特定のコンシューマにリソースを指定する。指定されているリソースの数はリソース保証と同じである。リソースマネージャは、他のコンシューマが指定されているリソースを使用することを禁止する。さらに、特定のコンシューマに対するリソース保証および/またはリソース制限に基づいて、リソースマネージャは、特定のコンシューマによって行われた新しいプロセス要求をキューイングするか、または割り当てる。特定のコンシューマの保留中のプロセス要求の数がリソース保証以下の場合、新しいプロセス要求を指定されているリソースに優先的に割り当てることができる。保留中のプロセス要求の数がリソース制限を超えた場合、新しいプロセス要求は特定のコンシューマのキューに追加される。したがって、リソースマネージャは、リソースに割り当てられているプロセス要求がリソース制限内にあることを確認する。保留中のプロセス要求の数がリソース保証を超え、リソース制限以下の場合、その後、特定のコンシューマのキューから削除されているプロセス要求(または、キューがない場合は、新しいプロセス要求自体)を特定のリソースに割り当てることができる。リソースマネージャは、特定のリソースを特定のコンシューマのプロセス要求に割り当てるために、特定のリソース上で別のコンシューマによって行われたプロセス要求の進行中の実行を中断することができる。
リソース割り当て問題をモデル化するために超過分布を使用するという選択により、CPソルバが最適化されている解を効率的に決定することが可能になる。リソース使用の履歴ログに組み込まれた大量のデータは超過分布に圧縮され、要素制約によって論理的に保証制限にきちんと対応する。さらに、超過分布および関係付けられる要素制約を使用することにより、CPソルバは、目的関数の形状に関する要件を必要とせずに最適化されている解を検索したり、目的関数の導関数を実行したり、および/またはCP解の初期推定値を提供したりすることができる。
CPデータモデルおよびCP検索指令により、CPソルバは、最近のリソース使用データに基づいて、更新されているリソース割り当て制限を効率的に決定することができる。リソース割り当て制限を継続的に更新することで、コンピューティングシステムは変化するリソース使用パターンに迅速に適応できる。最適なリソース割り当て制限により、コンシューマの脆弱性が発生する、および/またはリソースが十分に活用されていない可能性が低くなる。
本明細書に記載され、および/または特許請求の範囲に記載される1つまたは複数の実施形態は、この概要セクションに含まれ得ない。
2.コンピューティングシステムアーキテクチャ
図1は、1つまたは複数の実施形態に従って、コンピューティングシステムを管理するリソースマネージャを示す。図1に示すように、システム100は、リソースマネージャ110、データリポジトリ102、コンシューマ112のセット、リソース116のセット、および制約プログラミング(CP)ソルバ118を含む。1つまたは複数の実施形態では、システム100は、図1に示されるコンポーネントよりも多いまたは少ないコンポーネントを含むことができる。図1に示されているコンポーネントは、相互にローカルに存在する場合もあれば、相互にリモートに存在する場合もある。図1に示すコンポーネントは、ソフトウェアおよび/またはハードウェアで実装することができる。各コンポーネントは、複数のアプリケーションおよび/またはマシンに分散され得る。複数のコンポーネントを1つのアプリケーションおよび/またはマシンに組み合わせることができる。1つのコンポーネントに関して説明されている動作は、代わりに別のコンポーネントによって実行され得る。
1つまたは複数の実施形態では、コンシューマ112は、リソース116の作業負荷を生成するハードウェアおよび/またはソフトウェアを指す。コンシューマ112の例には、データベースインスタンス、仮想マシン、および/またはハードウェアサーバが含まれる。コンシューマ112によって生成される作業負荷は、プロセス要求の数、通信および/または記憶されるデータの量、および/または処理時間の持続時間などのさまざまな単位によって測定され得る。
1つまたは複数の実施形態では、リソース116は、コンシューマ112によって生成されている作業負荷にサービスを提供および/または処理するハードウェアおよび/またはソフトウェアを指す。リソース116の例には、中央処理装置(CPU)、ディスクメモリ、および/または通信帯域幅が含まれる。
1つまたは複数の実施形態では、リソースマネージャ110は、リソース116をコンシューマ112に割り当てるように構成されているハードウェアおよび/またはソフトウェアを指す。割り当てとは、要求に割り当てられたリソースがその要求にサービスを提供および/または処理するように、リソース116をコンシューマ112の要求に割り当てることを指す。加えて、または代わりに、割り当てとは、あるコンシューマに対して指定されているリソースが他のコンシューマの要求にサービスを提供することができないように、リソース116をコンシューマ112に指定することを指す。
一実施形態では、リソースマネージャ110は、リソース制限106および/またはリソース保証108を含むコンシューマ構成104に基づいて割り当て決定を実行する。リソース制限106は、任意の時期にコンシューマ112に割り当てることができるリソース116の最大数である。リソース保証108は、任意の時期にコンシューマ112に対して保証されるリソース116の最小数である。リソース制限106および/またはリソース保証108を適用するための動作の例については、図7~図8を参照して以下でさらに説明する。
異なるコンシューマ構成104は、異なるコンシューマ112に対応し得る。例えば、あるセットのコンシューマ構成はコンシューマ112aに対応し得るが、別のセットのコンシューマ構成はコンシューマ112bに対応し得る。
1つまたは複数の実施形態では、データリポジトリ102は、データを記憶するための任意のタイプの記憶ユニットおよび/または装置(例えば、ファイルシステム、データベース、テーブルの集合、または任意の他の記憶機構)である。さらに、データリポジトリ102は、複数の異なる記憶ユニットおよび/または装置を含むことができる。複数の異なる記憶ユニットおよび/または装置は、同じタイプである場合もあれば同じタイプでない場合もあり、同じ物理サイトに配置されている場合もあれば同じ物理サイトに配置されていない場合もある。さらに、データリポジトリ102は、リソースマネージャ110と同じコンピューティングシステム上で実装または実行することができる。代わりにまたは加えて、データリポジトリ102は、リソースマネージャ110とは別個のコンピューティングシステム上で実装または実行され得る。データリポジトリ102は、直接接続またはネットワークを介してリソースマネージャ110に通信可能に接続することができる。コンシューマ構成104を記述する情報は、システム100内の任意のコンポーネントにわたって実装され得る。しかし、この情報は、明確化および説明の目的でデータリポジトリ102内に図示されている。
1つまたは複数の実施形態では、CPソルバ118は、CPデータモデル232およびCP検索指令234を考慮してCP解を決定するように構成されているハードウェアおよび/またはソフトウェアを指す。CPソルバ118のさらなる実施形態および/または例については、図2Aと図2Bを参照して以下に説明する。
1つまたは複数の実施形態では、図1のシステム100および図2Aのシステム200は、コンシューマ112へのリソース116の割り当てを管理するように構成されている単一のシステムに組み合わされ得る。図1のCPソルバ118は、図2AのCPソルバ218と同等である。図1のリソース制限106およびリソース保証108(リソースマネージャ110によって使用される)は、それぞれ、図2Aのリソース制限206およびリソース保証208(CPソルバ218による出力)と同等である。
3.制約プログラミングデータモデルおよび検索指示生成システムアーキテクチャ
図2Aと図2Bは、1つまたは複数の実施形態による、制約プログラミングデータモデルおよび検索指令生成システムを示す。図2Aに示すように、システム200は、超過分布生成器222、モデルおよび指令生成器224、データリポジトリ202、CPソルバ218、リソース制限206、およびリソース保証208を含む。1つまたは複数の実施形態では、システム200は、図2Aに示されるコンポーネントよりも多いまたは少ないコンポーネントを含むことができる。図2Aに示されているコンポーネントは、相互にローカルまたはリモートにあり得る。図2Aに示されるコンポーネントは、ソフトウェアおよび/またはハードウェアで実装され得る。各コンポーネントは、複数のアプリケーションおよび/またはマシンに分散され得る。複数のコンポーネントを1つのアプリケーションおよび/またはマシンに組み合わせることができる。1つのコンポーネントに関して説明されている動作は、代わりに別のコンポーネントによって実行され得る。上述したように、図1のシステム100および図2Aのシステム200は、コンシューマにリソースを割り当てるように構成されている単一のシステムに組み合わされ得る。
1つまたは複数の実施形態では、データリポジトリ202は、データを記憶するための任意のタイプの記憶ユニットおよび/または装置(例えば、ファイルシステム、データベース、テーブルの集合、または任意の他のストレージ機構)である。さらに、データリポジトリ202は、複数の異なる記憶ユニットおよび/または装置を含むことができる。複数の異なる記憶ユニットおよび/または装置は、同じタイプである場合もあれば同じタイプでない場合もあり、同じ物理サイトに配置されている場合もあれば同じ物理サイトに配置されていない場合もある。さらに、データリポジトリ202は、超過分布生成器222、モデルおよび指令生成器224、および/またはCPソルバ218と同じコンピューティングシステム上で実装され得るか、または実行され得る。代わりにまたは加えて、データリポジトリ202は、超過分布生成器222、モデルおよび指令生成器224、および/またはCPソルバ218とは別個のコンピューティングシステム上で実装または実行され得る。データリポジトリ202は、直接接続またはネットワークを介して、超過分布生成器222、モデルおよび指令生成器224、および/またはCPソルバ218に通信可能に結合され得る。
リソース使用データセット226、超過分布228、脆弱性係数230、CPデータモデル232、および/またはCP検索指令234を記述する情報は、システム200内の任意のコンポーネントにわたって実装され得る。しかし、この情報は、明確化および説明の目的でデータリポジトリ202内に図示されている。
1つまたは複数の実施形態では、特定のコンシューマのリソース使用データセット226は、特定のコンシューマによって一定期間にわたって使用されるリソースの量を示すデータポイントを含む。リソース使用データセット226は、ログ、スプレッドシート、および/または任意の他のフォーマットの形式で記憶され得る。リソース使用は、数(使用されるCPUの数など)、容量(使用されるメモリ空間の容量など)、時間(通信チャネルの使用時間など)、および/またはその他の単位から測定できる。リソース使用データセット226は、固定および/または変動し得る特定の時間間隔のデータポイントを含むことができる。各データポイントは、実際の測定値および/または集計されている測定値である。実際の測定値は、特定の時期に実際に測定されているリソース使用である。集約されている測定値とは、時間窓にわたる実際の測定値についての何らかの操作(合計や平均など)の結果を指す。一例として、監視エージェントは、使用されている実際のCPU数を毎秒検出できる。時間=0秒で開始し、時間=9秒で終了するCPU使用の実際の測定値は、2、3、4、4、4、2、3、4、5、6になり得る。監視エージェントは、3秒ごとに使用されているCPU数の移動平均を決定できる。時間=2では、時間=0、時間=1、および時間=2での実際の測定値に基づいて平均が計算される。したがって、時間=2で開始し、時間=9秒で終了すると、平均CPU使用は3.00、3.67、4.00、3.33、3.00、3.00、4.00、5:00になり得る。監視エージェントは、平均CPU使用を「集計されている測定値」として報告し得る。
1つまたは複数の実施形態では、超過分布228は、特定のコンシューマのリソース使用が臨界値を超えていることを示すデータポイントの数を示し、臨界値はゼロからコンピューティングシステム内のリソースの総数の範囲である。このようなデータポイントの数は、特定の履歴期間にわたる特定のコンシューマのリソース使用データセット226に基づく。
一例として、リソース使用データセットには以下のデータポイントが含まれ得る。
2021年1月1日、午前10時0分:2CPU、
2021年1月1日、午前10時1分:3CPU、
2021年1月1日、午前10時2分:4CPU、
2021年1月1日、午前10時3分:4CPU、
2021年1月1日、午前10時4分:4CPU、
2021年1月1日、午前10時5分:2CPU、
2021年1月1日、午前10時6分:3CPU、
2021年1月1日、午前10時7分:4CPU、
2021年1月1日、午前10時8分:5CPU、
2021年1月1日、午前10時9分:6CPU。
したがって、2021年1月1日の午前10時0分から午前10時9分までのリソース使用データセットの超過分布は、以下を示すことになる。
臨界値0:臨界値を超える10データポイント、
臨界値1:臨界値を超える10データポイント、
臨界値2:臨界値を超える8データポイント、
臨界値3:臨界値を超える6データポイント、
臨界値4:臨界値を超える2データポイント、
臨界値5:臨界値を超える1データポイント、
臨界値6:臨界値を超える0データポイント。
超過分布は、超過がないことに関連付けられている最小臨界値(すなわち、6)より大きい情報を省略することになる。臨界値6を超えるゼロデータポイントは、臨界値7、8、9、10を超えるゼロデータポイントを必然的に意味するため、このような情報の省略は許容される。加えて、または代わりに、リソース保証が超過がないことに関連付けられる最小臨界値以下であることを保証するために、そのような情報の省略が望ましい。
1つまたは複数の実施形態では、脆弱性係数230は、特定のコンシューマの脆弱性データポイントに関連付けられているコスト係数を示す。例えば、中断不可能な作業負荷に関連付けられているコンシューマは、中断可能な作業負荷に関連付けられているコンシューマよりも高い脆弱性係数に関連付けられ得る。より高い優先順位に関連付けられているコンシューマ(および/またはより高い優先順位を持つプロセス)は、より低い優先順位に関連付けられているコンシューマよりも高い脆弱性係数に関連付けられ得る。より高い収益に関連付けられているコンシューマは、より低い収益に関連付けられているコンシューマよりも高い脆弱性係数に関連付けられ得る。すべてのコンシューマの脆弱性係数230が同一であると想定した場合、すべてのコンシューマの脆弱性係数230は「1」と表現されてもよい。
1つまたは複数の実施形態では、CPデータモデル232は、情報の特定の組織、構造、および/または表現を指す。CPデータモデル232は、制約に関して問題の組み合わせ特性を宣言的に表現する。CPデータモデル232は、ソフトウェアデータ構造として実装され得る。ソフトウェアデータ構造はマシンで読み取り可能である。CPデータモデル232は、ハードウェアプロセッサを含む1つまたは複数の装置によって読み取り可能なデータおよび/または命令のセットを含むことができる。CPデータモデル232は、CPソルバ218などのハードウェアおよび/またはソフトウェアコンポーネントへの入力パラメータとして使用され得る。
図2Bを参照すると、CPデータモデル232は、データモデル要素のセット、および各要素に割り当てることができる可能な値のドメインを含む。データモデル要素には、データモデル要素のドメイン内にない値を割り当てることはできない。データモデル要素は、アレイ、ベクトル、リンクリスト、テーブル、ソフトウェア変数、定数、および/または他のソフトウェアデータ構造またはデータオブジェクトとして実装され得る。
一実施形態では、CPデータモデル232は、データモデル要素のいくつかのセットを含む。制限要素252のセットは、コンシューマに対するリソース制限を表す。各制限要素252のドメインは、ゼロからコンピューティングシステム内のリソースの総数までの範囲である。
保証要素254のセットは、コンシューマに対するリソース保証を表す。各保証要素254のドメインは、ゼロからコンピューティングシステム内のリソースの総数までの範囲である。
脆弱性要素256のセットは、特定の履歴期間にわたるリソース使用に基づいて、コンシューマに関する脆弱性数を表す。各脆弱性要素256のドメインは、ゼロから、特定の履歴期間内の対応するコンシューマのデータポイントの総数までの範囲である。
一例として、コンピューティングシステムは、8つのCPUと4つのデータベースインスタンスを含むことができる。各データベースインスタンスのリソース使用ログは、1分あたり1つのデータポイントを示し得る。対象期間は、2021年1月1日の午前10時0分から午前10時9分までであり得る。したがって、対象期間内には各コンシューマに10個のデータポイントが存在する。
上記の設定に基づいて、CPデータモデルは、以下のデータモデル要素および対応するドメインを有することができる。
L[0]:{0、1、2、3、4、5、6、7、8}
L[1]:{0、1、2、3、4、5、6、7、8}
L[2]:{0、1、2、3、4、5、6、7、8}
L[3]:{0、1、2、3、4、5、6、7、8}
G[0]:{0、1、2、3、4、5、6、7、8}
G[1]:{0、1、2、3、4、5、6、7、8}
G[2]:{0、1、2、3、4、5、6、7、8}
G[3]:{0、1、2、3、4、5、6、7、8}
V[0]:{0、1、2、3、4、5、6、7、8、9、10}
V[1]:{0、1、2、3、4、5、6、7、8、9、10}
V[2]:{0、1、2、3、4、5、6、7、8、9、10}
V[3]:{0、1、2、3、4、5、6、7、8、9、10}
L[i]は制限要素を表し、G[i]は保証要素を表し、V[i]は脆弱性要素を表し、iはデータベースインスタンスに対応する。
任意選択で、CPデータモデル232は、コンシューマごとのコスト要素258のセットを含む。コンシューマごとのコスト要素258のセットは、特定の履歴期間にわたる脆弱性に起因するコンシューマのそれぞれのコストを表す。特定のコンシューマのコンシューマごとのコスト要素258は、(a)特定のコンシューマの脆弱性係数と(b)特定の履歴期間にわたる特定のコンシューマの脆弱性数の積を表す。特定のコンシューマに対するコンシューマごとのコスト要素258のドメインは、(a)特定のコンシューマに対する脆弱性係数と、(b)特定のコンシューマに対する脆弱性要素のドメイン内の各値との各積を含む。
一例として、コンピューティングシステムは、8つのCPUおよび4つのデータベースインスタンスを含むことができる。各データベースインスタンスのリソース使用ログには、1分あたり1つのデータポイントが含まれ得る。対象期間は、2021年1月1日の午前10時0分から午前10時9分までであり得る。4つのデータベースインスタンスの脆弱性係数は、それぞれ0.9、0.6、0.7、および0.8となり得る。
上述したように、CPデータモデルには、以下の脆弱性要素が含まれ得る。
V[0]:{0、1、2、3、4、5、6、7、8、9、10}
V[1]:{0、1、2、3、4、5、6、7、8、9、10}
V[2]:{0、1、2、3、4、5、6、7、8、9、10}
V[3]:{0、1、2、3、4、5、6、7、8、9、10}。
第1のデータベースインスタンスCC[0]のコンシューマごとのコスト要素のドメインは、0.9とV[0]のドメイン内の値それぞれとの積を含むことができる。したがって、CPデータモデルには次のコンシューマごとのコスト要素が含まれ得る。
CC[0]:{0.0、0.9、1.8、3.6、4.5、5.4、6.3、7.2、8.1、9.0}
CC[0]:{0.0、0.6、1.2、1.8、2.4、3.0、3.6、4.2、4.8、5.4、6.0}
CC[0]:{0.0、0.7、1.4、2.1、2.8、3.5、4.2、4.9、5.6、6.3、7.0}
CC[0]:{0.0、0.8、1.6、2.4、3.2、4.0、4.8、5.6、6.4、7.2、8.0}。
任意選択で、CPデータモデル232は、総コスト要素260を含む。総コスト要素260は、特定の履歴期間にわたる脆弱性に起因するコンピューティングシステム内のコンシューマの総コストを表す。総コスト要素260のドメインは、コンピューティングシステム内のコンシューマにとって考えられる総コスト値を示す。ドメイン内の最小値はゼロである。ドメインの最大値は、(a)各コンシューマの各脆弱性係数と(b)特定の履歴期間における各コンシューマのデータポイントの総数の各積の合計である。
一例として、コンピューティングシステムは、8つのCPUおよび4つのデータベースインスタンスを含むことができる。各データベースインスタンスのリソース使用ログは、コンシューマごとに1分あたり1つのデータポイントを示し得る。対象期間は、2021年1月1日の午前10時0分から午前10時9分までであり得る。4つのデータベースインスタンスの脆弱性係数は、それぞれ0.9、0.6、0.7、および0.8となり得る。したがって、総コスト要素のドメインの最大値は、0.9×10+0.6×10+0.7×10+0.8×10=30となる。
一実施形態では、CPデータモデル232は、いくつかの制約を含む。制約は、データモデル要素のセット(上述の制限要素252、保証要素254、および脆弱性要素256など)に割り当てられることができる値の組み合わせを定義する。
制限-保証制約262のセットは、リンク要素252と保証要素254とを関係付ける。制限-保証制約262は、(特定のコンシューマの)保証要素254が、(特定のコンシューマの)制限要素252をオーバーサブスクリプション率で割ったものに等しいことを要求し、オーバーサブスクリプション率は、制限要素252の合計をリソースの総数で割ったものに等しい。制限-保証制約262は次のように表すことができる。
Figure 2024517310000002
L[i]は制限要素252を表し、G[i]は保証要素254を表し、L[c]は制限要素のセットを表し、iはコンピューティングシステム内の特定のコンシューマに対応する。
総リソース制約264は、保証要素254とコンピューティングシステム内のリソースの総数とを関係付ける。総リソース制約264は、保証要素254の合計がリソースの総数以下であることを要求する。総リソース制約264は次のように表すことができる。
Figure 2024517310000003
G[c]は保証要素254のセットを表す。
保証-脆弱性制約266のセットは、保証要素254と脆弱性要素256とを関係付ける。保証-脆弱性制約266は、(特定のコンシューマの)脆弱性要素256が、特定の履歴期間におけるリソースの使用に基づき(特定のコンシューマの)保証要素254に割り当てられた(または割り当てられる必要がある)保証値に対応する脆弱性数に等しいことを要求する。
一実施形態では、保証-脆弱性制約266は要素制約として表現される。要素制約は、(a)インデックス要素、および(b)一連の値を入力として受け付ける。インデックス要素入力は、要素制約がインデックス要素に割り当てられた(または割り当てられる必要がある)値に対応する特定の値を一連の値から返すように、一連の値にインデックスを付ける役割を果たす。保証-脆弱性制約266の場合、インデックス要素は保証要素254であり、一連の値は超過分布228である。さらに、インデックス要素は脆弱性要素256に出力する。
一例として、CPデータモデルは、以下のデータモデル要素を含むことができる。
G[0]:{0、1、2、3、4、5、6、7、8}
V[0]:{0、1、2、3、4、5、6、7、8、9、10}
G[0]は特定のコンシューマに対応する保証要素を表し、V[0]は同じ特定のコンシューマに対応する脆弱性要素を表す。
超過分布は、{10、8、7、6、4、1、1、0}であり得る。
保証-脆弱性制約は要素制約として表現でき、(a)入力インデックス要素としてG[0]、(b)入力の一連の値として超過分布、および(c)出力要素としてV[0]を持つ。要素制約に基づいて、G[0]に割り当てられた値「0」は、特定の一連の値の「10」にマッピングされる。したがって、値「10」が返される。G[0]に割り当てられた値「1」は、特定の一連の値の「8」にマッピングされる。したがって、値「8」が返される。G[0]に割り当てられた値「2」は、特定の一連の値の「7」にマッピングされる。したがって、値「7」が返される。返される値はV[0]のドメイン内にある必要がある。
任意選択で、コンシューマごとのコスト制約268のセットは、コンシューマごとの脆弱性係数と脆弱性要素256を関係付ける。(特定のコンシューマに対する)コンシューマごとのコスト制約268は、(a)(特定のコンシューマに対する)脆弱性係数、および(b)(特定のコンシューマに対する)脆弱性要素の積である。コンシューマごとのコスト制約268は次のように表すことができる。
CC[i]=VF[i]×V[i]
CC[i]はコンシューマごとのコスト要素を表し、VF[i]は脆弱性係数を表し、V[i]は脆弱性要素を表し、iはコンピューティングシステム内のコンシューマに対応する。
任意選択で、総コスト制約270は、コンピューティングシステム内のコンシューマ全体にわたる脆弱性係数と脆弱性要素256を関係付ける。総コスト制約270は、(a)脆弱性係数と(b)脆弱性要素のセットの内積である。総コスト制約270は次のように表すことができる。
TC=VF・V
TCは総コスト要素、VFはコンシューマの脆弱性係数、およびVは脆弱性要素を表す。
あるいは、コンシューマごとのコスト要素が使用される場合、総コスト制約270は次のように表すことができる。
Figure 2024517310000004
TCは総コスト要素を表し、CC[c]はコンシューマごとのコスト要素のセットを表す。
図2Aに戻って参照すると、CP検索指令234は、特定のCPデータモデル232が与えられた場合に最適なCP解を決定するプロセスにおいてCPソルバ218を導く指令である。CP検索指令234は、CPデータモデル120によって指定されるように、すべての制約を満たすデータモデル要素のセットへの値のセットの割り当てを導く。CP検索指令234は、1つまたは複数のデータモデル要素について、特定の値の割り当てを他の値よりも優先する。同じCPデータモデル232に対する異なるCP検索指令234は、異なるCP解をもたらし得る。加えて、または代わりに、同じCPデータモデル232に対する異なるCP検索指令234は、CP解を取得するための異なる効率レベルおよび/または実行時間をもたらし得る。CP検索指令234は、ソフトウェアデータ構造として実装され得る。CP検索指令234は、コンピュータ可読命令のセットを含むことができる。CP検索指令234は、CPソルバ218などのハードウェアおよび/またはソフトウェアコンポーネントへの入力パラメータとして使用され得る。
一実施形態では、CP検索指令234は目的関数を指定する。目的関数は、コンピューティングシステムの脆弱性数および/または脆弱性コストに関連付けられている最小化関数である。
CP検索指令234は、脆弱性要素256の最大値を最小化することを含んでもよい。加えて、または代わりに、CP検索指令234は、脆弱性要素256の合計を最小化することを含んでもよい。加えて、または代わりに、CP検索指令234は、脆弱性要素256の平均(例えば、平均、中央値、または最頻値)を最小化することを含んでもよい。
脆弱性コストが考慮される場合、CP検索指令234は、コンシューマごとのコスト要素258の最大値を最小化することを含むことができる。加えて、または代わりに、CP検索指令234は、コンシューマごとのコスト要素258(または総コスト要素260)の合計を最小化することを含んでもよい。加えて、または代わりに、CP検索指令234は、コンシューマごとのコスト要素258の平均(例えば、平均、中央値、または最頻値)を最小化することを含んでもよい。追加のおよび/または代替の最小化関数が使用されてもよい。
1つまたは複数の実施形態では、モデルおよび指令生成器224は、CPデータモデル232および/またはCP検索指令234を生成するように構成されているハードウェアおよび/またはソフトウェアを指す。CPデータモデル232を生成するための動作の例は、図4を参照して以下で説明される。CP検索指令234を生成するための動作の例は、図5A~図5Cを参照して以下に説明される。
1つまたは複数の実施形態では、モデルおよび指令生成器224は、1つまたは複数のデジタル装置上に実装される。「デジタル装置」という用語は、一般的にプロセッサを含む任意のハードウェア装置を指す。デジタル装置は、アプリケーションまたは仮想マシンを実行する物理装置を指し得る。デジタル装置の例には、コンピュータ、タブレット、ラップトップ、デスクトップ、ネットブック、サーバ、webサーバ、ネットワークポリシーサーバ、プロキシサーバ、汎用マシン、機能固有のハードウェア装置、メインフレーム、テレビ、コンテンツレシーバ、セットトップボックス、プリンタ、携帯電話機、スマートフォン、携帯情報端末(PDA)が含まれる。
1つまたは複数の実施形態では、CPソルバ218は、CPデータモデル232およびCP検索指令234が与えられた場合に、制約プログラミング技術を使用してCP解を決定するように構成されているハードウェアおよび/またはソフトウェアを指す。CP解は、リソース制限206および/またはリソース保証208を指定する。制約プログラミング技術には、バックトラッキングアルゴリズム、フォワードチェックアルゴリズム、および制約伝播などが含まれる。CPデータモデル232およびCP検索指令234をCPソルバ218に適用するための動作の例については、図6を参照して以下に説明する。
4.リソース割り当て制限の決定と更新
図3に示される1つまたは複数の動作は、まとめて変更、再配置、および/または省略することができる。したがって、図3に示される特定の動作シーケンスは、1つまたは複数の実施形態の範囲を限定するものとして解釈されるべきではない。
図3は、1つまたは複数の実施形態による、特定の履歴期間にわたるリソース使用に基づいて、コンピューティングシステム内のコンシューマに対するリソース制限および/またはリソース保証を更新するための動作のセットの例を示す。
1つまたは複数の実施形態は、リソース制限および/またはリソース保証を更新するためのトリガが発生したかどうかを判定することを含む(動作302)。モデルおよび指令生成器(図2Aのモデルおよび指令生成器224など)は、リソース制限および/またはリソース保証を更新するためのトリガが発生したかどうかを判定する。トリガはスケジュールに基づき得る。一例として、スケジュールでは、リソース制限を3時間ごとに更新する必要があるように指定できる。さらに、または代わりに、トリガは、コンピューティングシステム内の1以上のコンシューマの作業負荷に基づくことができる。一例として、コンシューマの作業負荷が閾値を超えたことがトリガとなり得る。別のトリガとして、コンシューマの総作業負荷が別の閾値を超える場合もある。追加のおよび/または代替のトリガを使用することもできる。
1つまたは複数の実施形態は、コンピューティングシステム内のコンシューマおよびリソースを決定することを含む(動作304)。追跡システム(図1のリソースマネージャ110、および/またはモデルおよび指令生成器に含まれ得る)は、通知システム、ハートビートシステム、および/または他のアプローチを介してコンピューティングシステム内のコンシューマおよびリソースを追跡する。追跡システムは、コンシューマとリソースの識別子をデータリポジトリに記憶する。モデルと指令生成器は、データリポジトリからコンピューティングシステム内のコンシューマとリソースの識別子を取得する。
1つまたは複数の実施形態は、特定の期間にわたるコンシューマのリソース使用データセットを取得することを含む(動作306)。監視システム(モデルおよび指令生成器に含まれ得るが、必ずしも含まれるわけではない)は、コンシューマのリソース使用を監視する。監視システムは、一定の時間間隔(例えば、1秒に1回)で、コンシューマごとのリソース使用を検出、集約、測定、および/またはそうでなければ取得する。監視システムは、各コンシューマのそれぞれのリソース使用データセット内のリソース使用測定ごとに1つのデータポイントを作成する。監視システムは、リソース使用データセットをデータリポジトリに記憶する。モデルおよび指令生成器は、データリポジトリからリソース使用データセットを取得する。
一実施形態では、更新されているリソース制限および/またはリソース保証を取得するための各反復において、モデルおよび指令生成器は、最新の履歴期間からのリソース使用データセットを使用する。したがって、リソース制限および/またはリソース保証を決定するために使用されるCPデータモデルは、最新の履歴使用データに基づいて生成される。したがって、リソース制限および/またはリソース保証は、コンピューティングシステムのコンシューマのリソース使用の変化に基づいて適応的に更新される。
一例として、コンピューティングシステムのリソース制限およびリソース保証は、1時間ごとに更新され得る。2021年1月1日午前11時0分における第1の反復では、モデルおよび指令生成器は、2021年1月1日午前10時0分から午前10時59分までのリソース使用ログに基づいてCPデータモデルを生成できる。したがって、リソース制限および/またはリソース保証は、午前10時0分から午前10時59分までのリソース使用データに基づいて決定され得る。2021年1月1日の午後12時0分における2回目の反復では、モデルと指令生成器は、2021年1月1日の午前11時0分から午前11時59分までのリソース使用ログに基づいて、新しいCPデータモデルを生成し得る。したがって、リソース制限および/またはリソース保証は、午前11時0分から午前11時59分までのリソース使用データに基づいて決定され得る。したがって、リソース制限および/またはリソース保証は、最新のリソース使用に基づいて最適になるように継続的に更新され得る。
一実施形態では、更新されているリソース制限および/またはリソース保証を取得するための各反復において、モデルおよび指令生成器は、次の期間のリソース使用の予測を使用する。リソース使用の予測は、(a)最新の履歴期間からのリソース使用データセット、(b)次の期間と特性を共有する履歴期間からのリソース使用データセット、および/または(c)他の係数に基づいてよい。次の期間と特性を共有する履歴期間は、例えば、次の期間と同じ時間、曜日、および/または月の日に関連付けられている履歴期間であり得る。したがって、リソース制限および/またはリソース保証は、コンピューティングシステムのコンシューマのリソース使用の予測に基づいて適応的に更新される。
1つまたは複数の実施形態は、コンシューマの脆弱性係数を決定することを含む(動作308)。ユーザおよび/またはアプリケーションは、コンシューマの脆弱性係数を指定する。脆弱性係数はデータリポジトリに記憶される。モデルおよび指令生成器は、データリポジトリから脆弱性係数を取得する。
1つまたは複数の実施形態は、リソース使用データセットに基づいて超過分布を生成することを含む(動作310)。超過分布生成器(図2Aの超過分布生成器222など、モデルおよび指令生成器に含まれてもよいが必ずしも含まれるわけではない)は、リソース使用データセットに基づいて超過分布を生成する。
最初に、超過分布生成器は、特定の履歴期間内の特定のコンシューマのリソース使用データセット内のデータポイントの数を決定する。超過分布生成器は反復プロセスを続行し、特定の履歴期間内のデータポイントの数が反復数の上限となる。超過分布生成器は、臨界値ゼロから開始する。超過分布生成器は、臨界値を超えたリソース使用を示すデータポイントの数を数える。超過分布生成器は、臨界値に関連付けて数を記録する。超過分布により臨界値が増加し、上記のプロセスが反復される。超過分布生成器は、特定の履歴期間内のデータポイントの数よりも臨界値が大きくなるまで、上記のプロセスを反復する。したがって、超過分布生成器は値のペアを取得する。各ペアには、臨界値と、臨界値を超えるリソース使用を示すデータポイントの数が含まれる。値のペアは、特定のコンシューマの超過分布を形成する。超過分布生成器はまた、各コンシューマに対して上記のプロセスを反復して、各コンシューマの超過分布を取得する。
超過分布生成器は、コンシューマの超過分布をデータリポジトリに記憶する。モデルおよび指令生成器は、データリポジトリからコンシューマの超過分布を取得する。
1つまたは複数の実施形態は、CPデータモデルを生成することを含む(動作312)。モデルおよび指令生成器はCPデータモデルを生成する。CPデータモデルを生成する動作の例については、図4を参照して以下でさらに説明する。
1つまたは複数の実施形態は、CP検索指令を生成することを含む(動作314)。モデルおよび指令生成器はCP検索指令を生成する。CP検索指令を生成するための動作の例については、図5A~図5Cを参照して以下でさらに説明する。図5A~図5Cの各々は、異なる代替CP検索指令を生成するための動作を示している。図5A~図5Cを参照して説明されていない別のCP検索指令を代わりに使用することもできる。
1つまたは複数の実施形態は、リソース制限および/またはリソース保証を取得するために、CPデータモデルおよびCP検索指令をCPソルバに入力することを含む(動作316)。モデルおよび指令生成器は、CPデータモデルおよびCP検索指令をCPソルバ(図2AのCPソルバ218など)に入力する。CPデータモデルとCP検索指令をCPソルバに適用する動作の例については、図6を参照して以下でさらに説明する。
1つまたは複数の実施形態は、リソース制限および/またはリソース保証をコンピューティングシステムに適用することを含む(動作318)。CPソルバは、コンシューマに対するリソース制限および/またはリソース保証を出力する。リソースマネージャ(図1のリソースマネージャ110など)は、リソース制限および/またはリソース保証を使用してコンピューティングシステムを管理する。リソース保証に基づいてコンシューマにリソースを指定する動作の例については、図7を参照して以下で説明する。リソース制限を超えるプロセス要求をキューイングする動作の例を、図8を参照して以下に説明する。
5.制約プログラミングデータモデルと制約プログラミング検索指令の生成と制約プログラミングソルバへの適用
図4~図6に示される1つまたは複数の動作は、まとめて変更、再配置、および/または省略することができる。したがって、図4~図6に示される特定の動作シーケンスは、1つまたは複数の実施形態の範囲を限定するものとして解釈されるべきではない。
図4は、1つまたは複数の実施形態に従って、制約プログラミングデータモデルを生成するための動作のセットの例を示す。
1つまたは複数の実施形態は、制限要素のセットを指定することを含み、各制限要素はそれぞれのコンシューマに対するリソース制限を表す(動作402)。モデルおよび指令生成器(図2Aのモデルおよび指令生成器224など)は、制限要素のセットを指定する。制限要素のセットは、ベクトル、アレイ、および/またはその他のデータ構造として表現できる。各制限要素は、コンピューティングシステム内のそれぞれのコンシューマに対するリソース制限を表す。
さらに、モデルおよび指令生成器は、制限要素のドメインを指定する。各ドメインは、ベクトル、アレイ、および/またはその他のデータ構造として表現できる。各制限要素のドメインの範囲は、ゼロからコンピューティングシステム内のリソースの総数までである。
1つまたは複数の実施形態は、保証要素のセットを指定することを含み、各保証要素はそれぞれのコンシューマに対するリソース保証を表す(動作404)。モデルと指令生成器は、保証要素のセットを指定する。保証要素のセットは、ベクトル、アレイ、および/またはその他のデータ構造として表現できる。各保証要素は、コンピューティングシステム内のそれぞれのコンシューマに対するリソース保証を表す。
さらに、モデルおよび指令生成器は、保証要素のドメインを指定する。各ドメインは、ベクトル、アレイ、および/またはその他のデータ構造として表現できる。各保証要素のドメインの範囲は、ゼロからコンピューティングシステム内のリソースの総数までである。
1つまたは複数の実施形態は、各脆弱性要素がそれぞれのコンシューマについての脆弱性数を表す、脆弱性要素のセットを指定することを含む(動作406)。モデルと指令生成器は、脆弱性要素のセットを指定する。脆弱性要素のセットは、ベクトル、アレイ、および/またはその他のデータ構造として表現できる。各脆弱性要素は、コンピューティングシステム内のそれぞれのコンシューマの脆弱性数を表す。
さらに、モデルおよび指令生成器は、脆弱性要素のドメインを指定する。各ドメインは、ベクトル、アレイ、および/またはその他のデータ構造として表現できる。各脆弱性要素のドメインは、ゼロから、特定の履歴期間内の対応するコンシューマのデータポイントの総数までの範囲になる。
一実施形態では、ユーザおよび/またはアプリケーションは、コンピューティングシステム内の特定の特権コンシューマを指定することができる。ユーザおよび/またはアプリケーションは、特権コンシューマの脆弱性数の特定の最大値を指定できる。モデルおよび指令生成器は、指定されている最大値に従って特権コンシューマに対して脆弱性要素のドメインをセットできる。加えて、または代わりに、ユーザおよび/またはアプリケーションは、特権コンシューマのリソース保証について特定の最小値を指定することもできる。モデルおよび指令生成器は、指定されている最小値に従って、特権コンシューマの保証要素のドメインをセットできる。
一例として、コンピューティングシステムは、8つのCPUと4つのデータベースインスタンスを含むことができる。各データベースインスタンスのリソース使用ログは、1分あたり1つのデータポイントを示し得る。対象期間は、2021年1月1日の午前10時0分から午前10時9分までであり得る。
脆弱性数の最大値を外部で指定しないと、脆弱性要素のセットは次のようになり得る。
V[0]:{0、1、2、3、4、5、6、7、8、9、10}
V[1]:{0、1、2、3、4、5、6、7、8、9、10}
V[2]:{0、1、2、3、4、5、6、7、8、9、10}
V[3]:{0、1、2、3、4、5、6、7、8、9、10}。
しかし、ユーザが第1のデータベースにはいかなる脆弱性も存在できないと指定した場合、第1のデータベースに許容される唯一の脆弱性数は0である。0を超える値はすべて、第1のデータベースの脆弱性要素のドメインから削除される。したがって、脆弱性要素のセットは次のようになり得る。
V[0]:{0}
V[1]:{0、1、2、3、4、5、6、7、8、9、10}
V[2]:{0、1、2、3、4、5、6、7、8、9、10}
V[3]:{0、1、2、3、4、5、6、7、8、9、10}。
別の例として、コンピューティングシステムは、8つのCPUおよび4つのデータベースインスタンスを含むことができる。各データベースインスタンスのリソース使用ログは、1分あたり1つのデータポイントを示し得る。対象期間は、2021年1月1日の午前10時0分から午前10時9分までであり得る。
リソース保証に対する外部指定の最小値がなければ、保証要素のセットは次のようになり得る。
G[0]:{0、1、2、3、4、5、6、7、8}
G[1]:{0、1、2、3、4、5、6、7、8}
G[2]:{0、1、2、3、4、5、6、7、8}
G[3]:{0、1、2、3、4、5、6、7、8}。
しかし、ユーザが第1のデータベースのリソース保証が4以上でなければならないと指定した場合、0、1、2、3はリソース保証の許容値ではない。したがって、0、1、2、3は、第1のデータベースの保証要素のドメインから削除される。したがって、保証要素のセットは次のようになり得る。
G[0]:{4、5、6、7、8}
G[1]:{0、1、2、3、4、5、6、7、8}
G[2]:{0、1、2、3、4、5、6、7、8}
G[3]:{0、1、2、3、4、5、6、7、8}。
別の例として、保証要素と脆弱性要素の両方が外部から指定されている要件によって変更されるように、上記の2つの例を組み合わせることができる。上記の2つの例を組み合わせると、CPデータモデルには次の保証要素と脆弱性要素が含まれ得る。
G[0]:{4、5、6、7、8}
G[1]:{0、1、2、3、4、5、6、7、8}
G[2]:{0、1、2、3、4、5、6、7、8}
G[3]:{0、1、2、3、4、5、6、7、8}
V[0]:{0}
V[1]:{0、1、2、3、4、5、6、7、8、9、10}
V[2]:{0、1、2、3、4、5、6、7、8、9、10}
V[3]:{0、1、2、3、4、5、6、7、8、9、10}。
1つまたは複数の実施形態は、コンシューマごとのコスト要素のセットおよび/または総コスト要素を指定することを含む(動作408)。
任意選択で、モデルおよび指令生成器は、コンシューマごとのコスト要素のセットを指定する。コンシューマごとのコスト要素のセットは、ベクトル、アレイ、および/またはその他のデータ構造として表現できる。コンシューマごとの各コスト要素は、コンピューティングシステム内のそれぞれのコンシューマに対する脆弱性コストを表す。さらに、モデルおよび指令生成器は、コンシューマごとのコスト要素のドメインを指定する。各ドメインは、ベクトル、アレイ、および/またはその他のデータ構造として表現できる。特定のコンシューマに対するコンシューマごとのコスト要素のドメインには、(a)特定のコンシューマに対する脆弱性係数と、(b)特定のコンシューマに対する脆弱性要素のドメイン内の各値の各積が含まれる。
任意選択で、モデルおよび指令生成器は、総コスト要素を指定する。総コスト要素は、コンピューティングシステムの総脆弱性コストを表す。さらに、モデルおよび指令生成器は、総コスト要素のドメインを指定する。ドメインは、ベクトル、アレイ、および/またはその他のデータ構造として表現できる。総コスト要素のドメインは、コンピューティングシステム内のコンシューマにとって考えられる総コスト値を示す。ドメイン内の最小値はゼロである。ドメインの最大値は、(a)各コンシューマの各脆弱性係数と、(b)特定の履歴期間における各コンシューマのデータポイントの総数の各積の合計である。
1つまたは複数の実施形態は、リソースの総数に基づいて制限要素と保証要素を関係付ける制約を指定することを含む(動作410)。
モデルおよび指令生成器は、セットの制限-保証制約を生成する。制限-保証制約262では、(特定のコンシューマの)保証要素が、(特定のコンシューマの)制限要素をオーバーサブスクリプション率で割ったものに等しいことが要求され、オーバーサブスクリプション率は、制限要素252の合計をリソースの総数で割ったものに等しい。
さらに、モデルおよび指令生成器は、総リソース制約を生成する。総リソース制約264は、保証要素254の合計がリソースの総数以下であることを要求する。
1つまたは複数の実施形態は、保証要素に割り当てられた保証値に対応する脆弱性数を各脆弱性要素に割り当てることを要求する制約を指定することを含む(動作412)。モデルおよび指令生成器は、特定の履歴期間にわたるリソース使用に基づいて、保証要素に割り当てられた保証値に対応する脆弱性数を各脆弱性要素に割り当てることを要求する制約を生成する。
モデルおよび指令生成器は、要素制約を生成する。モデルおよび指令生成器は、特定のコンシューマに対する保証要素をインデックス要素として要素制約に入力する。モデルおよび指令生成器は、特定のコンシューマの超過分布(例えば、図3の動作310で決定される)を要素制約に対する一連の値として入力する。モデルおよび指令生成器は、要素制約の出力要素として特定のコンシューマの脆弱性要素をセットする。
モデルおよび指令生成器は、各コンシューマに関して上記のプロセスを反復して、セットの保証-脆弱性制約を生成する。
1つまたは複数の実施形態は、コンシューマごとおよび/またはコンシューマ全体にわたって、脆弱性係数と脆弱性要素を関係付ける1つまたは複数の制約を指定することを含む(動作414)。
任意選択で、モデルおよび指令生成器は、コンシューマごとに脆弱性係数と脆弱性要素を関係付ける制約を生成する。モデルおよび指令生成器は、特定のコンシューマに対するコンシューマごとの脆弱性コスト要素が、(a)特定のコンシューマに対する脆弱性係数と、(b)特定のコンシューマに対する脆弱性要素の積に等しいことを要求する制約をセットする。モデルおよび指令生成器は、各コンシューマに対して上記のプロセスを反復し、コンシューマごとのコスト制約のセットを取得する。
任意選択で、モデルおよび指令生成器は、コンピューティングシステムのコンシューマ全体にわたる脆弱性係数と脆弱性要素を関係付ける制約を生成する。モデルおよび指令生成器は、総脆弱性コスト要素が、(a)コンシューマに対する脆弱性係数と、(b)コンシューマに対する脆弱性要素のセットの内積に等しいことを要求する制約をセットする。あるいは、コンシューマごとのコスト要素が使用される場合、モデルおよび指令生成器は、総脆弱性コスト要素がコンシューマのコンシューマごとのコスト要素の合計に等しいことを要求する制約をセットする。
1つまたは複数の実施形態は、データモデル要素および制約を含むCPデータモデルを生成することを含む(動作416)。モデルおよび指令生成器はCPデータモデルを生成する。CPデータモデルには、制限要素、保証要素、脆弱性要素、および任意でコンシューマごとのコスト要素および/または総コスト要素が含まれる。CPデータモデルにはさらに、制限-保証制約、総リソース制約、保証-脆弱性制約、および任意でコンシューマごとのコスト制約および/または総コスト制約が含まれる。
CPデータモデルは、ソフトウェアデータ構造として記憶され得る。CPデータモデルには、1つまたは複数のアレイ、ベクトル、リンクリスト、テーブル、ソフトウェア変数、定数、および/またはデータオブジェクトが含まれ得る。CPデータモデルは、ハードウェアプロセッサを含む1つまたは複数の装置によって読み取り可能なデータおよび/または命令のセットを含むことができる。
図5A~図5Cは、1つまたは複数の実施形態に従って、制約プログラミング検索指令を生成するための動作のセットの例を示す。図5A~図5Cの各々は、異なる代替CP検索指令を生成するための動作を示している。
図5Aを参照すると、1つまたは複数の実施形態は、コンシューマごとのコスト要素のセットの最大値を最小化する目的関数を生成することを含む(動作502)。モデルおよび指令生成器(図2Aのモデルおよび指令生成器224など)は、コンシューマごとのコスト要素のセットの最大値を最小化する目的関数を生成する。目的関数は次のように表すことができる。
min(max(CC))
CCはコンシューマごとのコスト要素のセットを表す。
1つまたは複数の実施形態は、目的関数を含むCP検索指令を生成することを含む(動作504)。モデルおよび指令生成器はCP検索指令を生成する。CP検索指令には目的関数が含まれる。CP検索指令は、ソフトウェアデータ構造として記憶されてもよい。CP検索指令には、1つまたは複数のアレイ、ベクトル、リンクリスト、テーブル、ソフトウェア変数、定数、および/またはデータオブジェクトが含まれ得る。CP検索指令は、ハードウェアプロセッサを含む1つまたは複数の装置によって実行可能な命令のセットを含むことができる。
図5Bを参照すると、1つまたは複数の実施形態は、コンシューマごとのコスト要素のセットの合計を最小化する目的関数を生成することを含む(動作506)。モデルおよび指令生成器は、コンシューマごとのコスト要素のセットの合計を最小化する目的関数を生成する。目的関数は次のように表すことができる。
Figure 2024517310000005
CC[i]はコンシューマごとのコスト要素を表し、iはコンピューティングシステム内のコンシューマに対応する。
あるいは、目的関数は次のように表すこともできる。
min(TC)
TCは総コスト要素を表す。
1つまたは複数の実施形態は、目的関数を含むCP検索指令を生成することを含む(動作508)。CP検索指令を生成するための動作の例は、動作504を参照して上で説明されている。
図5Cを参照すると、1つまたは複数の実施形態は、コンシューマごとのコスト要素のセットの平均を最小化する目的関数を生成することを含む(動作510)。モデルおよび指令生成器は、コンシューマごとのコスト要素のセットの平均を最小化する目的関数を生成する。目的関数は次のように表すことができる。
min(ave(CC))
CCはコンシューマごとのコスト要素のセットを表す。
1つまたは複数の実施形態は、目的関数を含むCP検索指令を生成することを含む(動作512)。CP検索指令を生成するための動作の例は、動作504を参照して上で説明されている。
図6は、1つまたは複数の実施形態に従って、制約プログラミングデータモデルおよび制約プログラミング検索指令を制約プログラミングソルバに適用するための動作のセットの例を示す。図6の動作は、コンピューティングシステムの総コストの最小化を指定するCP検索指令を想定している。しかし、異なるCP検索指令を実現するために変更されている動作を使用することもできる。
1つまたは複数の実施形態は、CPソルバによって、CPデータモデルおよびCP検索指令を入力パラメータとして受け付けることを含む(動作602)。CPソルバ(図2AのCPソルバ218など)は、CPデータモデルおよびCP検索指令を入力パラメータとして受け付ける。CPデータモデルを生成する動作の例は、図4を参照して上で説明されている。CP検索指令を生成するための動作の例は、図5A~図5Cを参照して上で説明されている。
1つまたは複数の実施形態は、CPソルバがCPデータモデルおよびCP検索指令に基づいてCP解を返すことができるかどうかを判定することを含む(動作604)。CPソルバは、CP検索指令によって導かれる、1つまたは複数の制約プログラミング技術をCPデータモデルに適用する。CPソルバ132は、CPデータモデルおよびCP検索指令に基づいてCP解を決定するか、またはCPデータモデルのすべての制約を満たすCP解が存在しないと決定する。
制約プログラミング技術には、例えば、制約伝播、バックトラッキング検索アルゴリズム、および/またはフォワードチェックアルゴリズムが含まれる。制約伝播には、CPデータモデル内のデータモデル要素のドメインから一貫性のない値を削除することが含まれる。バックトラッキング検索アルゴリズムには、有効なCP解を提供する候補を完成させることができないとCPソルバが決定するとすぐに候補を放棄するなど、CP解の候補を段階的に構築することが含まれる。フォワードチェックアルゴリズムには、CP解の他の候補よりも1つの候補を選択した場合の影響を予測する試みや、CP解の候補を試行する順序の決定が含まれる。一実施形態では、CPソルバは、CPソルバがデータモデル要素をトラバースし、値をデータモデル要素に割り当てるときに、データモデル要素のドメインを更新する。CPソルバは、これまでに行われた事前割り当てを考慮して、不可能になった値をドメインから削除する。CPソルバは、CPデータモデルの任意の制約に違反する値をドメインから削除する。
一例として、CPソルバは、CPデータモデルによって指定されている制限要素のセットの各々をトラバースして、CP解を決定することができる。CPソルバは特定の制限要素から開始し得る。特定の制限要素のドメインからの値が、特定の制限要素に事前に割り当てられる。次に、CPソルバは、CPデータモデルの他のデータモデル要素のドメインから、特定の制限要素に対して事前に割り当てられた値と矛盾する値を削除する。この事前の割り当てがCPデータモデルによって指定されている制約に違反する場合(例えば、別のデータモデル要素のドメインが完全に削除される)、特定の制限要素のドメインからの別の値が特定の制限要素に事前に割り当てられる。特定の制限要素のドメインからのすべての値が試行され、制約を満たさない場合は、以前にトラバースした1つまたは複数の制限要素の再割り当てが実行される。特に、以前にトラバースした制限要素のドメインからの値が、以前にトラバースした制限要素に事前に割り当てられていた。再割り当ての必要性に基づいて、以前にトラバースした制限要素のドメインからの別の値が、以前にトラバースした制限要素に事前に割り当てられる。次に、特定の制限要素の割り当てが再試行される。
さらに、CPソルバは、CP検索指令によって指定されている目的関数によって導かれることができる。CPソルバは、CP検索指令に基づいて、1つまたは複数の制限要素および/または保証要素への値の割り当てが試行される順序を決定することができる。特定の制限要素への値Aの割り当てが値Bの前に試行され、有効なCP解が見つかった場合、値Bの割り当てが有効なCP解に到達したかどうかに関係なく、値Aの割り当てが完了する。したがって、値Aの割り当ては値Bよりも優先される。
したがって、CPソルバは、制約に違反することなく、各制限要素にそれぞれのドメインから制限値が割り当てられるまで、各制限要素をトラバースすることができる。CPソルバは、事前の割り当てを最終的な割り当てとして決定し得る。CP解には、制限要素への制限値、および/または保証要素への保証値の最終割り当てが含まれ得る。
あるいは、CPソルバは、制限要素への各制限値の割り当てが試行されるが、どの割り当ても制約を満たさないまで、各制限要素をトラバースすることができる。次に、CPソルバは、CPデータモデルに対する有効なCP解がないと決定し得る。CPソルバは、CP解が存在しないことを示すメッセージを返し得る。
CP解が返されない場合、1つまたは複数の実施形態は、最後に決定されているCP解を使用してリソース制限および/またはリソース保証を返すことを含む(動作614)。現在の反復ではCP解が返されないため、CPソルバは最後の反復で返されているCP解を取得する。CPソルバは、最後の反復からのCP解を最後に決定されているCP解として識別する。また、CPソルバは、最後の反復からのCP解を、CP検索指令の目的関数を満たすCP解として識別する。目的関数が総コストを最小化する場合、最後の反復からのCP解は、(CPデータモデルの制約を満たす他のCP解と比較して)最低の総コストに関連付けられているCP解になる。CP解は、制限要素に割り当てられる制限値、および/または保証要素に割り当てられる保証値を指定する。制限値は、コンピューティングシステム内のコンシューマに対するリソース制限として使用される。保証値は、コンピューティングシステム内のコンシューマに対するリソース保証として使用される。
最後に決定されているCP解がない場合(つまり、CPソルバが動作602の第1の反復でCP解を返すことができない場合)、次に、CP解は、提供されているCPデータモデルに対して有効なCP解が存在しないことを示すメッセージを生成する。
逆に、CP解が返された場合、1つまたは複数の実施形態は、反復プロセスへの中断が受信されたかどうかを判定することを含む(動作606)。図示されるように、動作602~612は、最低の総コストに関連付けられているCP解を見つけるための反復プロセスを形成する。ユーザおよび/またはアプリケーションが反復プロセスを中断し得る。一例として、ユーザは、反復プロセスが完了するのを待たずに、これまでに決定されている最良のCP解を希望していることを、ユーザインターフェイスを介して示すことができる。
中断が受信された場合、1つまたは複数の実施形態は、最後に決定されているCP解を使用して、リソース制限および/またはリソース保証を返すことを含む(動作614)。CP解は現在の反復で返されるため、CPソルバは現在の反復からのCP解を最後に決定されているCP解として識別する。CP解に基づいてリソース制限および/またはリソース保証を決定するための動作の例は、動作614の上記の説明に提供されている。
一実施形態では、CPソルバがCP解を決定するプロセス中に(動作602~604で)中断を受信することができる。中断は、現在の反復でCP解が返される前に受信される。したがって、CPソルバは、最後の反復からのCP解を最後に決定されているCP解として識別する。
中断に基づいて最後に決定されているCP解は、必ずしも最低の総コストに関連付けられているCP解であるとは限らない。最低の総コストに関連付けられているCP解を決定するための反復プロセスを再開する要求を受信することができる。再開要求に応答して、反復プロセスは動作608で継続することができる。
中断が受信されない場合、1つまたは複数の実施形態は、CP解に関連付けられている総コストを「現在の最小総コスト」として識別することを含む(動作608)。CPソルバは、現在の反復の動作604で取得されているCP解に関連付けられている総コスト要素に割り当てられた総コストを識別する。総コストは「現在の最小総コスト」として識別される。
1つまたは複数の実施形態は、総コスト要素のドメインから、現在の最小総コスト以上の任意の値を除去することを含む(動作610)。CPソルバは、現在の最小総コストを、次の反復中に総コスト要素に割り当てられる可能性のある総コスト値の上限として使用する。CPソルバは、総コスト要素のドメインから、現在の最小総コスト以上の値を削除する。
一例として、現在の反復中に、CPソルバは現在のCP解を返すことができる。現在のCP解は、総コスト要素に総コスト値「9」が割り当てられていることを示し得る。CPソルバは、現在の最小総コストとして「9」を決定することができる。CPソルバは、総コスト要素の現在のドメインが{0、4、5、8、9、11、12}であると決定することができる。CPソルバは、総コスト要素のドメインから9以上の総コスト値を削除し得る。したがって、CPソルバは総コスト要素のドメインを変更して{0,4,5,8}になり得る。
1つまたは複数の実施形態は、CPデータモデルを変更することを含む(動作612)。CPソルバはCPデータモデルを変更して、ドメインが縮小されている総コスト要素を含める。動作610に基づいて、総コスト要素のドメインには、現在の最小総コストを下回る総コスト値のみが含まれる。
CPソルバは、変更されているCPデータモデルに関して動作602~612を反復する。動作602で、CPソルバは、入力パラメータとして変更されているCPデータモデルを受け付ける。動作604~608では、CPソルバが変更されているCPデータモデルに基づいて新しいCP解を決定すると想定して、CPソルバは現在の最小総コストを更新する。CPソルバは、新しいCP解に関連付けられている総コスト要素に割り当てられた総コスト値を現在の最小総コストとして識別する。動作610で、CPソルバは、総コスト要素のドメインから、現在の最小総コスト値以上の任意の値を除去する。動作612で、CPソルバは再びCPデータモデルを変更する。CPソルバは、動作604でCPソルバがCP解を見つけることができないか、動作606で中断が受信されるまで、反復プロセスを継続する。動作614を参照して上で説明したように、CPソルバが動作604でCP解を見つけることができない場合、または動作606で中断を受信した場合、CPソルバは最後に決定されているCP解を使用してリソース制限および/またはリソース保証を返す。CPソルバが中断することなく反復を完了した場合、最後に決定されているCP解が最適解になる。つまり、これよりコストが最小の解は他にない。
1つまたは複数の実施形態では、制約プログラミングデータモデルおよび検索指令を制約プログラミングソルバに適用するための追加および/または代替動作が、異なる検索技術に基づいて実行され得る。さまざまな検索技術の例を以下に説明する。
一実施形態では、動作602でCPソルバにCPデータモデルを最初に適用する前に、CPデータモデルが変更される。総コスト要素のドメイン内の、考えられる総コスト値の範囲内の特定の値が、初期カットオフ値として決定される。初期カットオフ値は、例えば、考えられる総コスト値の中央値であってもよい。初期カットオフ値を超えるすべての値は、総コスト要素のドメインから削除される。したがって、初期カットオフ値を下回る総コスト値でCP解を生成するには、CPソルバの第1の実行が必要である。有効なCP解が存在する場合、初期カットオフ値をセットすることにより、CPソルバは総コストがより低いCP解により効率的に到達し得る。
一実施形態では、CPソルバは、特定のCPデータモデルについて可能なすべてのCP解が見つかるまで反復する。CPソルバは、前の反復に基づいて総コスト要素のドメインを変更しない。したがって、CPソルバは、以前のCP解よりも高い総コスト値を持つCP解を見つけ得る。考えられるすべてのCP解を決定した後、CPソルバは、考えられる各CP解に関連付けられている総コスト値を比較する。次に、CPソルバは、総コスト値が最も低いCP解を識別する。
一実施形態では、複数のCP解を同じ最低の総コストに関連付けることができる。反復プロセスは、そのようなCP解を決定するために変更できる。動作610で、総コスト要素のドメインから現在の最小総コストより大きい値をすべて削除する(しかし、現在の最小総コストと等しい値はすべて保持する)。動作604で、CPソルバは、まだ見つかっていないCP解を見つけようと試みる。さらにCP解が見つからない場合、動作614で、同じ総コストを有する最後に決定されているCP解のセットが識別される。1つのCP解が、同じ総コストを持つ最後に決定されているCP解のセットから選択される。任意の選択基準を使用できる。一例として、CPソルバは、同じ総コストを持つ最後に決定されているCP解のセットから、コンシューマ全体に最も均等に分散されるリソース制限に関連付けられているCP解を選択し得る。
1つまたは複数の実施形態では、制約プログラミングデータモデルおよび検索指令を制約プログラミングソルバに適用するための追加および/または代替動作が、さまざまなCP検索指令に基づいて実行され得る。さまざまなCP検索指令の例を以下に説明する。
一実施形態では、CP検索指令は、コンシューマごとのコスト要素のセットの最大値を最小化することを指定する。動作602~606および612~614は同じままである。しかし、動作608は、コンシューマごとのコスト要素のセットの最大値を「現在の最小最大のコンシューマごとのコスト」として識別するように変更される。動作610は、現在の最小最大のコンシューマごとのコスト以上の任意の値をコンシューマごとの各コスト要素のドメインから除去するように変更される。
一実施形態では、CP検索指令は、コンシューマごとのコスト要素のセットの平均を最小化することを指定する。CPデータモデルには、平均コスト要素という追加のデータモデル要素が含まれている。平均コスト要素には、コンピューティングシステム内のコンシューマあたりの可能な平均コストを含むドメインがある。平均コスト要素は、コンシューマごとのコスト要素の合計をコンシューマの総数で割ったものと等しくなる必要がある。動作602~606および612~614は同じままである。しかし、動作608は、平均コスト要素の値を「現在の最小平均コスト」として識別するように変更される。動作610は、現在の最小平均コスト以上の任意の値を平均コスト要素のドメインから削除するように変更される。
6.リソース保証とリソース制限の強制
図7~図8に示される1つまたは複数の動作は、まとめて変更、再配置、および/または省略することができる。したがって、図7~図8に示される特定の動作シーケンスは、1つまたは複数の実施形態の範囲を限定するものとして解釈されるべきではない。
図7は、1つまたは複数の実施形態に従って、制約プログラミングソルバによって更新されているリソース保証に基づいてコンシューマにリソースを指定するための動作のセットの例を示す。
1つまたは複数の実施形態は、コンピューティングシステム内のコンシューマに対するリソース制限および/またはリソース保証を取得することを含む(動作702)。リソースマネージャ(図1のリソースマネージャ110など)は、CPソルバ(図2AのCPソルバ218など)によって決定されているCP解に基づいて、コンピューティングシステム内のコンシューマに対するリソース制限および/またはリソース保証を取得する。CP解を決定するための動作の例は、図6、および特に動作614を参照して上で説明されている。
1つまたは複数の実施形態は、リソース保証に基づいてコンシューマにリソースを指定することを含む(動作704)。リソースマネージャは、リソース保証に基づいて、コンシューマにリソースを指定する。一実施形態では、リソースマネージャは、リソース保証に対するユーザの確認を受け取ることなく、CPソルバによって決定されているリソース保証に基づいて、コンシューマにリソースを指定する。
一例として、コンピューティングシステムは、3つのデータベースインスタンスDB1、DB2、およびDB3と、8つのCPU、CPU1、CPU2、CPU3、CPU4、CPU5、CPU6、CPU7、およびCPU8を含むことができる。CP解では、次のリソース保証を指定できる。
DB1の場合は2CPU、
DB2の場合は3CPU、
DB3の場合は1CPU。
したがって、リソースマネージャは、DB1に2つのCPU、DB2に3つのCPU、DB3に1つのCPUを指定できる。具体的には、リソースマネージャはCPU1とCPU3をDB1に、CPU4、CPU6、およびCPU8をDB2に、およびCPU2をDB3に指定できる。指定されているリソースは、対応するコンシューマが使用するために予約されており、コンピューティングシステム内の他のコンシューマは使用できない。したがって、指定されているリソースを使用しているコンシューマは、コンピューティングシステム内の他のコンシューマの要求によって引き起こされる中断に対して脆弱ではない。一方、CPU5とCPU7は未指定のままで、データベースインスタンス間での共有に使用できる。
1つまたは複数の実施形態は、リソース制限および/またはリソース保証が更新されたかどうかを判定することを含む(動作706)。リソースマネージャは、リソース制限および/またはリソース保証が更新されたかどうかを判定する。更新があった場合、リソースマネージャは動作704でリソース指定を再決定する。
図8は、1つまたは複数の実施形態に従って、制約プログラミングソルバによって更新されるリソース制限を超えるプロセス要求をキューイングするための動作のセットの例を示す。
1つまたは複数の実施形態は、コンピューティングシステム内の特定のコンシューマがコンピューティングシステム内のリソースを必要とする新しいプロセス要求を生成したことを決定することを含む(動作802)。リソースマネージャ(図1のリソースマネージャ110など)は、コンピューティングシステム内の特定のコンシューマが、コンピューティングシステム内のリソースを必要とする新しいプロセス要求を生成したと決定する。特定のコンシューマは、スケジューリングのためにリソースマネージャに新しいプロセス要求を送信し得る。さらに、または代わりに、特定のコンシューマは、新しいプロセス要求についてリソースマネージャに知らせるために、リソースマネージャに通知メッセージを送信し得る。
1つまたは複数の実施形態は、特定のコンシューマによって行われた保留中のプロセス要求の数を決定することを含む(動作804)。リソースマネージャは、(a)特定のコンシューマによって行われ、(b)まだ完全に処理されていないプロセス要求(新しいプロセス要求を含む)の数を決定する。
1つまたは複数の実施形態は、保留中のプロセス要求の数が特定のコンシューマに対するリソース保証以下であるかどうかを判定することを含む(動作806)。リソースマネージャは、保留中のプロセス要求の数が特定のコンシューマに対するリソース保証以下であるかどうかを決定する。一実施形態では、リソースマネージャは、CPソルバによって決定されているリソース保証についてのユーザ確認を受け取ることなく、CPソルバによって決定されているリソース保証を閾値として使用する。
保留中のプロセス要求の数がリソース保証以下である場合、1つまたは複数の実施形態は、指定されているリソースを新しいプロセス要求に割り当てることを含む(動作808)。リソースマネージャは、新しいプロセス要求にリソースを割り当てる。一実施形態では、リソースマネージャは、可能な限り指定されているリソースを割り当てるようにセットされる。保留中のプロセス要求の数がリソース保証以下であるため、指定されているリソースが少なくとも1つが利用可能である。したがって、リソースマネージャは、利用可能な専用リソースを新しいプロセス要求に割り当てる。
保留中のプロセス要求の数がリソース保証を超えている場合、1つまたは複数の実施形態は、保留中のプロセス要求の数が特定のコンシューマに対するリソース制限よりも大きいかどうかを決定することを含む(動作810)。リソースマネージャは、保留中のプロセス要求の数が特定のコンシューマに対するリソース制限を超えているかどうかを決定する。一実施形態では、リソースマネージャは、CPソルバによって決定されているリソース制限についてのユーザ確認を受け取ることなく、CPソルバによって決定されているリソース制限を閾値として使用する。
保留中のプロセス要求の数がリソース制限より大きい場合、1つまたは複数の実施形態は、新しいプロセス要求をキューイングすることを含む(動作814)。リソースマネージャは、新しいプロセス要求をキューイングする。コンピューティングシステム内のリソースは、プロセス要求がキューから削除されるまで、キュー内のプロセス要求に割り当てられない。
処理されている特定のコンシューマのプロセス要求の数がリソース制限を下回る場合、リソースマネージャは、特定のコンシューマのキューからプロセス要求を削除する選択肢を有する。別のリソースが利用可能な場合、リソースマネージャは、キューから削除されているプロセス要求に利用可能なリソースを割り当てることができる。利用可能なリソースがない場合、リソースマネージャは任意で、別のコンシューマによって行われたプロセス要求の特定のリソースの進行中の実行を中断できる。リソースマネージャは、特定のコンシューマのキューから削除されているプロセス要求に特定のリソースを割り当てる。あるいは、利用可能なリソースがない場合、リソースマネージャは任意の進行中の実行の中断を控えることができる。中断するかどうかはさまざまな係数に依存し得、その例については動作812を参照して以下で説明する。
保留中のプロセス要求の数が、(a)リソース保証より大きく、(b)リソース制限以下の場合、1つまたは複数の実施形態は、新しいプロセス要求にリソースを割り当てること、またはプロセス要求をキューイングすること(動作812)のいずれかを含む。少なくとも1つのリソースが利用可能で、特定のコンシューマのキューが空の場合、リソースマネージャは利用可能なリソースを新しいプロセス要求に割り当てる。少なくとも1つのリソースが利用可能で、特定のコンシューマのキューが空でない場合、リソースマネージャはキューの先頭からプロセス要求を削除し、利用可能なリソースをプロセス要求に割り当てる。リソースマネージャは、新しいプロセス要求をキューの最後尾に追加する。
利用可能なリソースがない場合、リソースマネージャは、さまざまな係数を評価して、別のコンシューマによって行われたプロセス要求の進行中の実行を中断するかどうかを決定することができる。係数の例には、特定のコンシューマによって行われた新しいプロセス要求と実行中の他のプロセス要求に関連付けられている優先レベル、特定のコンシューマおよび他のコンシューマに関連付けられている優先レベル、他のプロセス要求が実行されている時間、他のプロセス要求の実行が完了するまでの予測残り時間、特定のコンシューマによって行われた新しいプロセス要求の実行が完了するまでの予測時間が含まれる。さまざまな係数に基づいて、リソースマネージャは、特定のリソースによるプロセス要求の進行中の実行を中断し得る。リソースマネージャは、特定のリソースを、特定のコンシューマのキューから削除されているプロセス要求(または、キューが空の場合は特定のコンシューマによって作成されている新しいプロセス要求)に割り当てることができる。あるいは、さまざまな係数に基づいて、リソースマネージャは新しいプロセス要求をキューイングし、特定のコンシューマによって行われた任意のプロセス要求にリソースを割り当てる前に待機し続けることができる。
7.ハードウェアの概要
一実施形態によれば、本明細書で説明される技術は、1つまたは複数の専用コンピューティング装置によって実装される。専用コンピューティング装置は、この技術を実行するために配線され得、または、その技術を実行するように永続的にプログラムされている1つまたは複数の特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、またはネットワーク処理ユニット(NPU)などのデジタル電子装置を含み得、あるいは、ファームウェア、メモリ、他の記憶装置、またはそれらの組み合わせにおけるプログラム命令に従って技術を実行するようにプログラムされている1つまたは複数の汎用ハードウェアプロセッサを含んでもよい。このような専用コンピューティング装置は、カスタムの配線ロジック、ASIC、FPGA、またはNPUをカスタムプログラミングと組み合わせて、技術を実現することもできる。専用コンピューティング装置は、デスクトップコンピュータシステム、ポータブルコンピュータシステム、ハンドヘルド装置、ネットワーク装置、または技術を実装するための配線ロジックおよび/またはプログラムロジックを組み込んだ他の装置であってもよい。
例えば、図9は、本発明の実施形態が実装され得るコンピュータシステム900を示すブロック図である。コンピュータシステム900は、情報を通信するためのバス902または他の通信機構と、情報を処理するためにバス902に結合されているハードウェアプロセッサ904とを含む。ハードウェアプロセッサ904は、例えば、汎用マイクロプロセッサであってもよい。
コンピュータシステム900は、プロセッサ904によって実行される情報および命令を記憶するためにバス902に結合された、ランダムアクセスメモリ(RAM)または他の動的記憶装置などのメインメモリ906も含む。メインメモリ906はまた、プロセッサ904によって実行される命令の実行中に、一時変数または他の中間情報を記憶するために使用されてもよい。このような命令は、プロセッサ904がアクセス可能な非一時的記憶媒体に記憶されると、コンピュータシステム900を、命令で指定されている動作を実行するようにカスタマイズされている専用マシンにレンダリングする。
コンピュータシステム900は、プロセッサ904のための静的情報および命令を記憶するためにバス902に結合されている読み取り専用メモリ(ROM)908または他の静的記憶装置をさらに含む。磁気ディスクまたは光ディスクなどの記憶装置910が提供され、情報および命令を記憶するためにバス902に結合される。
コンピュータシステム900は、コンピュータユーザに情報を表示するために、バス902を介して陰極線管(CRT)などのディスプレイ912に結合され得る。英数字キーおよび他のキーを含む入力装置914は、情報およびコマンド選択をプロセッサ904に通信するためにバス902に結合される。別のタイプのユーザ入力装置は、方向情報およびコマンド選択をプロセッサ904に伝達し、ディスプレイ912上のカーソルの動きを制御するための、マウス、トラックボール、またはカーソル方向キーなどのカーソル制御916である。この入力装置は通常、第1軸(例えば、x)と第2軸(例えば、y)の2つの軸に2つの自由度を持ち、装置が平面内の位置を指定できるようになる。
コンピュータシステム900は、カスタマイズされている配線ロジック、1つまたは複数のASICまたはFPGA、ファームウェアおよび/またはプログラムロジックを使用して、本明細書に記載される技術を実装することができ、これは、コンピュータシステムと組み合わせて、コンピュータシステム900を専用マシンにするかプログラムする。一実施形態によれば、本明細書の技術は、プロセッサ904がメインメモリ906に含まれる1つまたは複数の命令の1つまたは複数のシーケンスを実行することに応答して、コンピュータシステム900によって実行される。このような命令は、記憶装置910などの別の記憶媒体からメインメモリ906に読み込まれてもよい。メインメモリ906に含まれる一連の命令を実行すると、プロセッサ904は本明細書で説明するプロセスステップを実行する。代替実施形態では、ソフトウェア命令の代わりに、またはソフトウェア命令と組み合わせて、配線回路を使用することができる。
本明細書で使用される用語「記憶媒体」は、マシンを特定の方法で動作させるデータおよび/または命令を記憶する任意の非一時的な媒体を指す。このような記憶媒体は、不揮発性媒体および/または揮発性媒体を含むことができる。不揮発性媒体には、例えば、記憶装置910などの光ディスクまたは磁気ディスクが含まれる。揮発性媒体には、メインメモリ906などの動的メモリが含まれる。記憶媒体の一般的な形式には、例えば、フロッピーディスク、フレキシブルディスク、ハードディスク、ソリッドステートドライブ、磁気テープ、またはその他の磁気データ記憶媒体、CD-ROM、その他の光学データ記憶媒体、穴のパターンを持つ任意の物理媒体、RAM、PROM、およびEPROM、FLASH-EPROM、NVRAM、その他のメモリチップまたはカートリッジ、連想メモリ(CAM)、および3値連想メモリ(TCAM)が含まれる。
記憶媒体は、伝送媒体とは別個であるが、伝送媒体と組み合わせて使用することもできる。伝送媒体は、記憶媒体間の情報の転送に関与する。例えば、伝送媒体には、バス902を構成するワイヤを含む、同軸ケーブル、銅線、および光ファイバが含まれる。伝送媒体は、電波や赤外線データ通信中に生成されるものなど、音響波や光波の形をとることもできる。
1つまたは複数の命令の1つまたは複数のシーケンスを実行のためにプロセッサ904に搬送する際には、さまざまな形態の媒体が関与し得る。例えば、命令は最初にリモートコンピュータの磁気ディスクまたはソリッドステートドライブに記憶され得る。リモートコンピュータは命令を動的メモリにロードし、モデムを使用して電話回線経由で命令を送信できる。コンピュータシステム900にローカルなモデムは、電話回線上のデータを受信し、赤外線送信機を使用してデータを赤外線信号に変換することができる。赤外線検出器は赤外線信号で搬送されるデータを受信することができ、適切な回路はそのデータをバス902上に配置することができる。バス902はデータをメインメモリ906に搬送し、プロセッサ904はそこから命令を取り出して実行する。メインメモリ906によって受信されている命令は、任意で、プロセッサ904による実行の前または後のいずれかに記憶装置910に記憶され得る。
コンピュータシステム900は、バス902に結合されている通信インターフェース918も含む。通信インターフェース918は、ローカルネットワーク922に接続されているネットワークリンク920に結合する双方向データ通信を提供する。例えば、通信インターフェース918は、統合サービスデジタルネットワーク(ISDN)カード、ケーブルモデム、衛星モデム、または対応する種類の電話回線へのデータ通信接続を提供するモデムであってもよい。別の例として、通信インターフェース918は、互換性のあるLANへのデータ通信接続を提供するローカルエリアネットワーク(LAN)カードであってもよい。無線リンクも実装することができる。このような実装形態では、通信インターフェース918は、さまざまな種類の情報を表すデジタルデータストリームを搬送する電気信号、電磁信号、または光信号を送受信する。
ネットワークリンク920は、通常、1つまたは複数のネットワークを介して他のデータ装置にデータ通信を提供する。例えば、ネットワークリンク920は、ローカルネットワーク922を介して、ホストコンピュータ924またはインターネットサービスプロバイダ(ISP)926によって動作されるデータ機器への接続を提供することができる。次に、ISP926は、現在一般に「インターネット」928と呼ばれている世界規模のパケットデータ通信ネットワークを通じてデータ通信サービスを提供する。ローカルネットワーク922およびインターネット928は両方とも、デジタルデータストリームを搬送する電気信号、電磁信号、または光信号を使用する。コンピュータシステム900との間でデジタルデータを搬送する、さまざまなネットワークを介する信号、ネットワークリンク920上の信号および通信インターフェース918を介する信号は、伝送媒体の例示的な形態である。
コンピュータシステム900は、ネットワーク、ネットワークリンク920および通信インターフェース918を介して、メッセージを送信し、プログラムコードを含むデータを受信することができる。インターネットの例では、サーバ930は、インターネット928、ISP926、ローカルネットワーク922、および通信インターフェース918を介して、アプリケーションプログラムの要求されているコードを送信することができる。
受信されているコードは、受信されたときにプロセッサ904によって実行され、および/または後で実行するために記憶装置910または他の不揮発性記憶装置に記憶され得る。
8.その他;エクステンション
実施形態は、ハードウェアプロセッサを含み、本明細書に記載されるおよび/または以下の請求項のいずれかに記載される動作のいずれかを実行するように構成されている1つまたは複数の装置を備えたシステムを対象とする。
一実施形態では、非一時的なコンピュータ可読記憶媒体は、1つまたは複数のハードウェアプロセッサによって実行されると、本明細書に記載され、および/または請求項のいずれかに記載されている動作のいずれかの実行を行わせる命令を備える。
本明細書で説明される特徴および機能の任意の組み合わせが、1つまたは複数の実施形態に従って使用され得る。前述の明細書では、実装ごとに異なり得る多くの特定の詳細を参照して実施形態を説明した。したがって、明細書および図面は、限定的な意味ではなく、例示的な意味としてみなされるべきである。本発明の範囲の唯一かつ排他的な指標、および出願人が本発明の範囲であると意図しているものは、その後の任意の訂正も含め、そのような請求が発行される特定の形式で本出願から発行される一連の特許請求の範囲の文字通りの等価な範囲である。

Claims (21)

  1. 命令を記憶する1つまたは複数の非一時的なマシン可読媒体であって、前記命令は、1つまたは複数のプロセッサによって実行されると、
    コンピューティングシステム内のコンシューマのセットとリソースのセットを決定することを行わせ、
    特定の期間にわたって、コンシューマの前記セットにそれぞれ対応するリソース使用データセットのセットを取得することを行わせ、
    特定のリソース使用データセットは特定のコンシューマに対応し、
    コンシューマの前記セットにそれぞれ対応する超過分布のセットを生成することを行わせ、
    前記特定のコンシューマに対応する特定の超過分布を生成することは、
    前記特定のコンシューマによるリソース使用が臨界値のセットの各々を超えていることを示す、前記特定のリソース使用データセット内のデータポイントのそれぞれの数を決定すること、を含み、
    制約プログラミングデータモデルを生成することを行わせ、
    制約プログラミングデータモデルを生成することは、
    コンシューマの前記セットに対するリソース制限をそれぞれ表す制限要素のセットを指定することを含み、
    前記特定のコンシューマに対するリソース制限は、前記特定のコンシューマが特定の時間に使用を許可されるリソースの数の上限であり、
    コンシューマの前記セットに対するリソース保証をそれぞれ表す保証要素のセットを指定することを含み、
    前記特定のコンシューマに対するリソース保証は、前記特定のコンシューマが特定の時間にアクセスできるリソースの数の下限であり、
    保証要素の前記セットのうちの特定の保証要素は、前記特定のコンシューマに対応し、
    リソース使用データセットの前記セットに基づいて、コンシューマの前記セットの脆弱性数をそれぞれ表す脆弱性要素のセットを指定することを含み、
    前記特定のコンシューマに対する脆弱性数は、前記特定のコンシューマに対する前記特定の期間にわたるリソース使用データセットに基づいて脆弱性を示すデータポイントの数であり、
    脆弱性要素の前記セットのうちの特定の脆弱性要素は、前記特定のコンシューマに対応し、
    保証要素の前記セットおよび脆弱性要素の前記セットに関連付けられている保証-脆弱性制約のセットを指定することを含み、
    前記特定のコンシューマに対応する保証-脆弱性制約は、前記特定の超過分布に基づいて前記特定の保証要素に割り当てられた保証値に対応する計数値を前記特定の脆弱性要素に割り当てることを要求し、
    制約プログラミング検索指令を生成することを行わせ、
    制約プログラミング検索指令を生成することは、
    脆弱性要素の前記セットに関連付けられている最小化目的関数を指定することを含み、
    前記制約プログラミングデータモデルおよび前記制約プログラミング検索指令を制約プログラミングソルバに適用して、コンシューマの前記セットに対する前記リソース制限およびコンシューマの前記セットに対する前記リソース保証の少なくとも1つを取得することを行わせる、
    1つまたは複数の非一時的なマシン可読媒体。
  2. 制限要素の前記セットのうちの特定の制限要素は、前記特定のコンシューマに対応し、
    制約プログラミングデータモデルを生成することは、
    制限要素の前記セットおよび保証要素の前記セットに関連付けられている制限-保証制約のセットを指定することをさらに含み、
    前記特定のコンシューマに対応する制限-保証制約は、前記特定の保証要素が前記特定の制限要素をオーバーサブスクリプション率で割ったものに等しいことを要求し、
    前記オーバーサブスクリプション率は、制限要素の前記セットの合計を前記リソースの総数で割ったものに等しい、請求項1に記載の1つまたは複数の媒体。
  3. 制限要素の前記セットのうちの特定の制限要素は、前記特定のコンシューマに対応し、
    制約プログラミングデータモデルを生成することは、
    前記保証要素のセットに関連付けられている総リソース制約と前記リソースの総数を指定することをさらに含み、
    前記総リソース制約は、保証要素の前記セットの合計が前記リソースの総数以下であることを要求する、請求項1に記載の1つまたは複数の媒体。
  4. 前記最小化目的関数は、
    脆弱性要素の前記セットの最大値、
    脆弱性要素の前記セットの合計、および
    脆弱性要素の前記セットの平均
    のうちの少なくとも1つを最小化する、請求項1に記載の1つまたは複数の媒体。
  5. 前記1つまたは複数の媒体はさらに命令を記憶しており、前記命令は、
    コンシューマの前記セットにそれぞれ対応する脆弱性係数のセットを取得することを行わせ、
    特定の脆弱性係数が前記特定のコンシューマに対応し、
    制約プログラミングデータモデルを生成することは、
    前記特定の期間にわたる脆弱性に起因する前記コンシューマのコストをそれぞれ表すコンシューマごとのコスト要素のセットを指定することをさらに含み、特定のコンシューマごとのコスト要素が前記特定のコンシューマに対応し、
    脆弱性係数の前記セットおよび脆弱性要素の前記セットに関連付けられているコンシューマごとのコスト制約のセットを指定することをさらに含み、前記特定のコンシューマに対応するコンシューマごとのコスト制約では、前記特定のコンシューマごとのコスト要素が、(a)前記特定の脆弱性係数と、(b)前記特定の脆弱性要素の積に等しいことが要求され、
    前記最小化目的関数は、コンシューマごとのコスト要素の前記セットにさらに関連付けられている、請求項1に記載の1つまたは複数の媒体。
  6. 前記最小化目的関数は、
    コンシューマごとのコスト要素の前記セットの最大値、
    コンシューマごとのコスト要素の前記セットの合計、および
    コンシューマごとのコスト要素の前記セットの平均
    の少なくとも1つを最小化する、請求項5に記載の1つまたは複数の媒体。
  7. 前記1つまたは複数の媒体は命令をさらに記憶しており、前記命令は、
    コンシューマの前記セットにそれぞれ対応する脆弱性係数のセットを取得することを行わせ、
    特定の脆弱性係数が前記特定のコンシューマに対応し、
    制約プログラミングデータモデルを生成することは、
    前記特定の期間にわたる脆弱性に起因する前記コンシューマの総コストを表す総コスト要素を指定することをさらに含み、
    脆弱性係数の前記セットおよび脆弱性要素の前記セットに関連付けられている総コスト制約を指定することをさらに含み、前記総コスト制約では、前記総コスト要素が(a)脆弱性係数の前記セットと(b)脆弱性要素の前記セットの内積に等しいことが要求され、
    前記最小化目的関数はさらに前記総コスト要素に関連付けられている、請求項1に記載の1つまたは複数の媒体。
  8. 前記1つまたは複数の媒体は命令をさらに記憶しており、前記命令は、
    コンシューマの前記セットにそれぞれ対応する脆弱性係数のセットを取得することを行わせ、
    特定の脆弱性係数が前記特定のコンシューマに対応し、
    制約プログラミングデータモデルを生成することは、
    前記特定の期間にわたる脆弱性に起因する前記コンシューマのコストをそれぞれ表すコンシューマごとのコスト要素のセットを指定することをさらに含み、特定のコンシューマごとのコスト要素が前記特定のコンシューマに対応し、
    前記特定の期間にわたる前記脆弱性に起因する前記コンシューマの総コストを表す総コスト要素を指定することをさらに含み、
    脆弱性係数の前記セットおよび脆弱性要素の前記セットに関連付けられているコンシューマごとのコスト制約のセットを指定することをさらに含み、前記特定のコンシューマに対応するコンシューマごとのコスト制約は、前記特定のコンシューマごとのコスト要素が、(a)前記特定の脆弱性係数と、(b)前記特定の脆弱性要素の積に等しいことを要求し、
    脆弱性係数の前記セットおよび脆弱性要素の前記セットに関連付けられている総コスト制約を指定することをさらに含み、前記総コスト制約では、前記総コスト要素がコンシューマごとのコスト要素の前記セットの合計に等しいことが要求され、
    前記最小化目的関数は、(a)コンシューマごとのコスト要素の前記セット、および(b)前記総コスト要素のうちの少なくとも1つにさらに関連付けられている、請求項1に記載の1つまたは複数の媒体。
  9. 前記保証-脆弱性制約は要素制約として表現され、
    前記特定の保証要素は、前記要素制約への入力インデックス要素として使用され、
    前記特定の超過分布は、前記要素制約への入力された一連の値として使用され、および
    前記特定の脆弱性要素は、前記要素制約への出力として使用される、請求項1に記載の1つまたは複数の媒体。
  10. 前記特定の期間にわたるリソース使用データセットの前記セットは、履歴期間にわたって測定されているリソース使用データを含む、請求項1に記載の1つまたは複数の媒体。
  11. 前記特定の期間にわたるリソース使用データセットの前記セットは、将来の期間にわたる予測されているリソース使用データを含む、請求項1に記載の1つまたは複数の媒体。
  12. 前記1つまたは複数の媒体は命令をさらに記憶しており、前記命令は、
    前記制約プログラミングソルバによって前記特定のコンシューマに対して決定されているリソース保証に等しいリソースの前記セットの数を前記特定のコンシューマに指定することを行わせる、請求項1に記載の1つまたは複数の媒体。
  13. 前記特定のコンシューマに対して指定されているリソースは、コンシューマの前記セットの他のコンシューマによって使用することができない、請求項12に記載の1つまたは複数の媒体。
  14. 前記1つまたは複数の媒体は命令をさらに記憶しており、前記命令は、
    前記特定のコンシューマによって行われた保留中のプロセス要求の数が、前記制約プログラミングソルバによって前記特定のコンシューマに対して決定されているリソース制限より大きいかどうかを決定することを行わせ、
    保留中のプロセス要求の数が前記リソース制限を超えていると決定したことに応答して、新しいプロセスにリソースを割り当てるのではなく、前記特定のコンシューマによって行われた前記新しいプロセス要求をキューに追加することを行わせる、請求項1に記載の1つまたは複数の媒体。
  15. 前記キュー内のどのプロセス要求にもリソースが割り当てられない、請求項14に記載の1つまたは複数の媒体。
  16. 前記1つまたは複数の媒体は命令をさらに記憶しており、前記命令は、
    第2の期間にわたって、コンシューマの前記セットにそれぞれ対応するリソース使用データセットの第2のセットを取得することを行わせ、
    前記第2のセットのリソース使用データセットに基づいて、コンシューマの前記セットにそれぞれ対応する第2のセットの超過分布を生成することを行わせ、
    超過分布の前記第2のセットに基づいて第2の制約プログラミングデータモデルを生成することを行わせ、
    少なくとも前記第2の制約プログラミングデータモデルを前記制約プログラミングソルバに適用して、コンシューマの前記セットに対する更新されているリソース制限およびコンシューマの前記セットに対する更新されているリソース保証のうちの少なくとも1つを取得することを行わせる、請求項1に記載の1つまたは複数の媒体。
  17. 前記制約プログラミングソルバは、更新されているリソース使用データセットに基づいて、コンシューマの前記セットに対する前記リソース制限およびコンシューマの前記セットに対する前記リソース保証のうちの少なくとも1つを定期的に更新する、請求項1に記載の1つまたは複数の媒体。
  18. 前記1つまたは複数の媒体は命令をさらに記憶しており、前記命令は、
    コンシューマの前記セットにそれぞれ対応する脆弱性係数のセットを取得することを行わせ、
    特定の脆弱性係数が前記特定のコンシューマに対応し、
    制限要素の前記セットのうちの特定の制限要素は、前記特定のコンシューマに対応し、
    制約プログラミングデータモデルを生成することは、
    制限要素の前記セットおよび保証要素の前記セットに関連付けられている制限-保証制約のセットを指定することをさらに含み、
    前記特定のコンシューマに対応する制限-保証制約は、前記特定の保証要素が前記特定の制限要素をオーバーサブスクリプション率で割ったものに等しいことを要求し、
    前記オーバーサブスクリプション率は、制限要素の前記セットの合計を前記リソースの総数で割ったものに等しく、
    保証要素の前記セットに関連付けられている総リソース制約と前記リソースの総数を指定することをさらに含み、
    前記総リソース制約は、保証要素の前記セットの合計が前記リソースの総数以下であることを要求し、
    前記特定の期間にわたる脆弱性に起因する前記コンシューマのコストをそれぞれ表すコンシューマごとのコスト要素のセットを指定することをさらに含み、特定のコンシューマごとのコスト要素が前記特定のコンシューマに対応し、
    前記特定の期間にわたる前記脆弱性に起因する前記コンシューマの総コストを表す総コスト要素を指定することをさらに含み、
    脆弱性係数の前記セットおよび脆弱性要素の前記セットに関連付けられているコンシューマごとのコスト制約のセットを指定することをさらに含み、前記特定のコンシューマに対応するコンシューマごとのコスト制約では、前記特定のコンシューマごとのコスト要素が、(a)前記特定の脆弱性係数と、(b)前記特定の脆弱性要素の積に等しいことが要求され、
    脆弱性係数の前記セットおよび脆弱性要素の前記セットに関連付けられている総コスト制約を指定することをさらに含み、前記総コスト制約では、
    (i)前記総コスト要素が、(a)脆弱性係数の前記セットと(b)脆弱性要素の前記セットの内積に等しいこと、および
    (ii)前記総コスト要素が、コンシューマごとのコスト要素の前記セットの合計と等しいこと、
    のうちの少なくとも1つが要求され、
    前記最小化目的関数は、
    脆弱性要素の前記セットの最大値、
    脆弱性要素の前記セットの合計、および
    脆弱性要素の前記セットの平均、
    コンシューマごとのコスト要素の前記セットの最大値、
    コンシューマごとのコスト要素の前記セットの合計、
    コンシューマごとのコスト要素の前記セットの平均、および
    前記総コスト要素、
    の少なくとも1つを最小化し、
    前記保証-脆弱性制約は要素制約として表現され、
    前記特定の保証要素は、前記要素制約への入力インデックス要素として使用され、
    前記特定の超過分布は、前記要素制約への入力一連の値として使用され、および
    前記特定の脆弱性要素は前記要素制約への出力として使用され、
    前記特定の期間にわたるリソース使用データセットの前記セットは、(a)履歴期間にわたって測定されているリソース使用データ、および(b)将来の期間にわたって予測されているリソース使用データのうちの少なくとも1つを含み、
    前記制約プログラミングソルバによって前記特定のコンシューマに対して決定されているリソース保証に等しいリソースの前記セットの数を前記特定のコンシューマに指定することを行わせ、
    前記特定のコンシューマに指定されているリソースは、コンシューマの前記セットのうちの他のコンシューマによって使用することはできず、
    前記特定のコンシューマによって行われた保留中のプロセス要求の数が、前記制約プログラミングソルバによって前記特定のコンシューマに対して決定されているリソース制限より大きいかどうかを決定することを行わせ、
    保留中のプロセス要求の数が前記リソース制限を超えていると決定したことに応答して、前記新しいプロセスにリソースを割り当てるのではなく、前記特定のコンシューマによって行われた前記新しいプロセス要求をキューに追加することを行わせ、
    前記キュー内のどのプロセス要求にもリソースは割り当てられず、
    第2の期間にわたって、コンシューマの前記セットにそれぞれ対応するリソース使用データセットの第2のセットを取得することを行わせ、
    前記第2のセットのリソース使用データセットに基づいて、コンシューマの前記セットにそれぞれ対応する第2のセットの超過分布を生成することを行わせ、
    超過分布の前記第2のセットに基づいて第2の制約プログラミングデータモデルを生成することを行わせ、
    少なくとも前記第2の制約プログラミングデータモデルを前記制約プログラミングソルバに適用して、コンシューマの前記セットに対する更新されているリソース制限およびコンシューマの前記セットに対する更新されているリソース保証のうちの少なくとも1つを取得することを行わせ、
    前記制約プログラミングソルバは、更新されているリソース使用データセットに基づいて、コンシューマの前記セットに対する前記リソース制限およびコンシューマの前記セットに対する前記リソース保証のうちの少なくとも1つを定期的に更新する、請求項1に記載の1つまたは複数の媒体。
  19. 請求項1~請求項18のいずれかに記載の動作を含む方法。
  20. ハードウェアプロセッサを含み、請求項1~請求項18のいずれかに記載の動作を実行するように構成されたシステム。
  21. 請求項1~請求項18のいずれかに記載の動作を実行する手段を含む、システム。
JP2023569728A 2021-05-10 2022-04-27 コンシューマにリソースを割り当てるためのリソース割り当て制限をセットするための制約プログラミングの使用 Pending JP2024517310A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/302,657 2021-05-10
US17/302,657 US11539635B2 (en) 2021-05-10 2021-05-10 Using constraint programming to set resource allocation limitations for allocating resources to consumers
PCT/US2022/026449 WO2022240584A1 (en) 2021-05-10 2022-04-27 Using constraint programming to set resource allocation limitations for allocating resources to consumers

Publications (1)

Publication Number Publication Date
JP2024517310A true JP2024517310A (ja) 2024-04-19

Family

ID=82020061

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023569728A Pending JP2024517310A (ja) 2021-05-10 2022-04-27 コンシューマにリソースを割り当てるためのリソース割り当て制限をセットするための制約プログラミングの使用

Country Status (5)

Country Link
US (2) US11539635B2 (ja)
EP (1) EP4338051A1 (ja)
JP (1) JP2024517310A (ja)
CN (1) CN117546145A (ja)
WO (1) WO2022240584A1 (ja)

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050132362A1 (en) 2003-12-10 2005-06-16 Knauerhase Robert C. Virtual machine management using activity information
US7584281B2 (en) 2005-06-07 2009-09-01 Datasynapse, Inc. Method for allocating shared computing infrastructure for application server-based deployments
US20080184250A1 (en) 2007-01-30 2008-07-31 Microsoft Corporation Synchronizing Workflows
US8315894B2 (en) 2008-08-26 2012-11-20 International Business Machines Corporation Workforce management using constraint programming with efficient ordering of variables
US8255259B2 (en) 2008-12-24 2012-08-28 International Business Machines Corporation Extending constraint satisfaction problem solving
US9106591B2 (en) * 2009-12-24 2015-08-11 Delphix Corporation Adaptive resource management using survival minimum resources for low priority consumers
US8484392B2 (en) 2011-05-31 2013-07-09 Oracle International Corporation Method and system for infiniband host channel adaptor quality of service
US9311159B2 (en) 2011-10-31 2016-04-12 At&T Intellectual Property I, L.P. Systems, methods, and articles of manufacture to provide cloud resource orchestration
JP6044131B2 (ja) 2012-06-25 2016-12-14 富士通株式会社 プログラム、管理サーバおよび仮想マシン移動制御方法
US20140007097A1 (en) 2012-06-29 2014-01-02 Brocade Communications Systems, Inc. Dynamic resource allocation for virtual machines
US9348840B2 (en) 2012-12-14 2016-05-24 Intel Corporation Adaptive data striping and replication across multiple storage clouds for high availability and performance
JP2016103179A (ja) 2014-11-28 2016-06-02 株式会社日立製作所 計算機リソースの割り当て方法及び計算機システム
US20160306677A1 (en) 2015-04-14 2016-10-20 Globalfoundries Inc. Automatic Analytical Cloud Scaling of Hardware Using Resource Sub-Cloud
US10104170B2 (en) 2016-01-05 2018-10-16 Oracle International Corporation System and method of assigning resource consumers to resources using constraint programming
US10007538B2 (en) 2016-01-29 2018-06-26 Oracle International Corporation Assigning applications to virtual machines using constraint programming
US10248550B2 (en) * 2016-12-16 2019-04-02 Oracle International Corporation Selecting a set of test configurations associated with a particular coverage strength using a constraint solver
US20190095245A1 (en) * 2017-09-22 2019-03-28 CloudHealth Technologies, Inc. System and Method for Apportioning Shared Computer Resources
US10691495B2 (en) 2018-07-25 2020-06-23 Vmware, Inc. Virtual processor allocation with execution guarantee
US11205159B2 (en) 2018-08-28 2021-12-21 Oracle International Corporation Using constraint programming to obtain a machine maintenance schedule for maintaining machines
US11360821B1 (en) 2019-05-17 2022-06-14 Ent. Services Development Corporation Lp Systems and methods for resource utilization control
US11188391B1 (en) * 2020-03-11 2021-11-30 Amazon Technologies, Inc. Allocating resources to on-demand code executions under scarcity conditions
US20230043579A1 (en) 2021-08-06 2023-02-09 Accenture Global Solutions Limited System for monitoring and optimizing computing resource usage of cloud based computing application
US20230205595A1 (en) 2021-12-28 2023-06-29 Citrix Systems, Inc. Systems and methods for managing overloaded machines in a virtual deployment

Also Published As

Publication number Publication date
CN117546145A (zh) 2024-02-09
US20230122015A1 (en) 2023-04-20
US20220360542A1 (en) 2022-11-10
US11876728B2 (en) 2024-01-16
EP4338051A1 (en) 2024-03-20
US11539635B2 (en) 2022-12-27
WO2022240584A1 (en) 2022-11-17

Similar Documents

Publication Publication Date Title
US11656911B2 (en) Systems, methods, and apparatuses for implementing a scheduler with preemptive termination of existing workloads to free resources for high priority items
US10733026B2 (en) Automated workflow selection
Liu et al. Online multi-workflow scheduling under uncertain task execution time in IaaS clouds
US10514951B2 (en) Systems, methods, and apparatuses for implementing a stateless, deterministic scheduler and work discovery system with interruption recovery
Hoseiny et al. Joint QoS-aware and cost-efficient task scheduling for fog-cloud resources in a volunteer computing system
US11294726B2 (en) Systems, methods, and apparatuses for implementing a scalable scheduler with heterogeneous resource allocation of large competing workloads types using QoS
US10338970B2 (en) Multi-platform scheduler for permanent and transient applications
US20130031558A1 (en) Scheduling Mapreduce Jobs in the Presence of Priority Classes
Wadhwa et al. Optimized task scheduling and preemption for distributed resource management in fog-assisted IoT environment
US11755926B2 (en) Prioritization and prediction of jobs using cognitive rules engine
US20240020155A1 (en) Optimal dispatching of function-as-a-service in heterogeneous accelerator environments
CN114064249A (zh) 混合云的跨云计算任务的调度方法、装置以及存储介质
Lattuada et al. Optimal resource allocation of cloud-based spark applications
KR102496115B1 (ko) 강화학습 기반 이타적 스케줄링 장치 및 방법
JP2024517310A (ja) コンシューマにリソースを割り当てるためのリソース割り当て制限をセットするための制約プログラミングの使用
Batista et al. Scheduling grid tasks in face of uncertain communication demands
Ghanavatinasab et al. SAF: simulated annealing fair scheduling for Hadoop Yarn clusters
US10601905B2 (en) Priority switching based on resource usage patterns
Rajavel et al. Cost-enabled QoS aware task scheduling in the cloud management system
Li et al. Effective algorithms for scheduling workflow tasks on mobile clouds
Liu et al. Cooperative job scheduling and data allocation for busy data-intensive parallel computing clusters
CN115904673B (zh) 云计算资源并发调度方法、装置、系统、设备及介质
Oikonomou et al. A Probabilistic Batch Oriented Proactive Workflow Management
Hosseinzadeh LABTS: a Learning Automata-Based Task Scheduling algorithm in cloud computing
Yang et al. New YARN Non-Exclusive Resource Management Scheme through Opportunistic Idle Resource Assignment