JP2018538601A - 確率的帯域幅調整 - Google Patents

確率的帯域幅調整 Download PDF

Info

Publication number
JP2018538601A
JP2018538601A JP2018520561A JP2018520561A JP2018538601A JP 2018538601 A JP2018538601 A JP 2018538601A JP 2018520561 A JP2018520561 A JP 2018520561A JP 2018520561 A JP2018520561 A JP 2018520561A JP 2018538601 A JP2018538601 A JP 2018538601A
Authority
JP
Japan
Prior art keywords
request
determining
respond
particular entity
responding
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.)
Granted
Application number
JP2018520561A
Other languages
English (en)
Other versions
JP6480642B2 (ja
Inventor
ドロビチェフ,アレクサンドル
ケッセルマン,アレクサンダー
サブビア,アルン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of JP2018538601A publication Critical patent/JP2018538601A/ja
Application granted granted Critical
Publication of JP6480642B2 publication Critical patent/JP6480642B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • 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/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0896Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/101Server selection for load balancing based on network conditions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1029Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers using data related to the state of servers by a load balancer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • 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
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

コンピュータ記憶媒体上で符号化されるコンピュータプログラムを含むとともにデータを確率的に帯域幅調整するための方法、システムおよび装置を提供する。方法のうちの1つは、データを処理するようにとの要求を、特定のエンティティのためのクライアントデバイスから受信するステップと、処理されるべきデータのサイズを決定するステップと、特定のエンティティと処理されるべきデータのサイズとを示す帯域幅割当て要求を帯域幅調整システムに提供するステップと、要求に応答する際に用いるべき特定のエンティティについての帯域幅割当てを帯域幅調整システムから受信するステップと、帯域幅割当て、処理されるべきデータのサイズ、および、特定のエンティティについてのトークンの発生量に基づいて、その時点で要求に応答すべきかどうかを確率的に判断するステップと、を含む。

Description

背景
コールドストレージシステムは、格納されたデータにアクセスする能力が制限されることを引換えにして、より低コストのデータストレージを提供し得る。たとえば、データへのアクセスは、単独のユーザのためにグローバルに達成され得る最大帯域幅または1秒あたりの問合せ数(queries per second:QPS)によって制限される可能性がある。これらの制限により、非ストレージリソース(たとえば、コンピュータ処理装置(computer processor unit:CPU)、メモリまたはネットワークリソース)の総コストに上限を設けることができ、ストレージプロバイダが低コストのデータストレージを提供し続けることを可能にし得る。
概要
いくつかの実現例においては、システムは複数のエンドポイントおよびグローバル帯域幅調整装置(グローバルスロットラー)を含む。エンドポイントの各々は、さまざまなユーザについての要求を受信し得る。エンドポイントが要求を受信すると、これらエンドポイントは、グローバル帯域幅調整装置に帯域幅割当て要求を提出し、当該グローバル帯域幅調整装置は、エンドポイントによってユーザにどれだけの帯域幅を割当てなければならないかを、各々のユーザおよび各々のエンドポイントごとに、判断する。エンドポイントは、割当てられた帯域幅を用いて、要求が処理されるべきである確率を決定し、要求を処理するまで、または、タイムアウトが過ぎてしまい、要求が処理されないだろうことがユーザに通知されるべきであると判断するまで、その決定を繰返す。
たとえば、特定のユーザが2MB/sの最大帯域幅限度を有しており、かつ、各々の要求が1MBのデータに対するものであり、異なるエンドポイントによって受信された場合、システムは、20個の異なるエンドポイントから特定のユーザに関する20個の読出し要求を受信し得る。グローバル帯域幅調整装置は、各々のエンドポイントに0.1MB/sの帯域幅を割当て、要求を受信したエンドポイントに当該割当てを与える。エンドポイントは、帯域幅割当てを用いて、要求を許可する確率を決定する。
要求が最初に許可されなければ、エンドポイントは、予め定められた間隔で、タイムアウト(たとえば、最大の許可遅延時間)が過ぎるまで、要求を許可すべきかどうかを判断してもよい。要求を許可するのに利用可能な帯域幅が用いられていなかったと想定すると、たとえば、エンドポイントが帯域幅割当てと、確率を決定するようにとの要求を処理するのに用いられなかった帯域幅の量との両方を用いていると想定すると、その後の各々の判断のたびに、エンドポイントが要求を許可する確率がより高くなる。
要求がエンドポイントによって許可されず、エンドポイントが後に同じ要求または特定のユーザについて異なる要求を受信する場合、エンドポイントは、要求についての新しい割当てを受信し、かつ、すでに発生していた帯域幅を用いて、要求を許可すべきか否かについての新しい確率を決定してもよい。
概して、この明細書中に記載される主題の革新的な一局面は、以下の動作を含む方法において具体化され得る。以下の動作は、データを処理するようにとの複数の要求の各々ごとに、データを処理するようにとの要求を特定のエンティティのためのクライアントデバイスから受信する動作と、当該要求に応答する際に処理されるべきデータのサイズを決定する動作と、データを処理するようにとの当該複数の要求のセットであって、データを処理するようにとの少なくとも2つ以上の要求を含む当該セットにおける各々の要求であって、当該複数の要求のセットにおける各々の要求は2つ以上のエンティティを含むエンティティのセットにおける1エンティティに対応しており、当該各々の要求ごとに、特定のエンティティと要求に応答する際に処理されるべきデータのサイズとを示す帯域幅割当て要求を帯域幅調整システムに提供する動作と、要求に応答する際に用いるべき特定のエンティティのための帯域幅割当てを帯域幅調整システムから受信する動作と、帯域幅割当て、処理されるべきデータのサイズ、および、データ処理装置上の特定のエンティティについてのトークンの発生量に基づいて、その時点で要求に応答すべきかどうかを確率的に判断する動作と、セットのうちの要求の第1のサブセットについて、その時点で要求に応答すべきと確率的に判断したことに応じて、要求に応答する動作と、セットのうちの要求の第2のサブセットについて、その時点で要求に応答すべきでないと確率的に判断したことに応じて、予め定められた期間が経過したかどうかを判断する動作と、予め定められた期間が経過したとの判断に応じて、要求が応答されないだろうことを示すメッセージをクライアントデバイスに送信する動作、または、予め定められた期間がまだ経過していないとの判断に応じて、トークンの発生量を帯域幅割当ての量だけインクリメントする動作と、その時点で要求に応答すべきであるかどうかについての確率的判断を再判断する動作とを含む。この局面の他の実施形態は、対応するコンピュータシステム、装置、および1つ以上のコンピュータストレージデバイスに記録されたコンピュータプログラムを含み、各々は、方法の動作を実行するように構成されている。1つ以上のコンピュータのシステムは、オペレーション時に上記動作を当該システムに実行させるソフトウェア、ファームウェア、ハードウェア、またはこれらの組合せが当該システムにインストールされていることにより、特定のオペレーションまたは動作を実行するように構成され得る。1つ以上のコンピュータプログラムは、データ処理装置によって実行されたときに、装置に動作を実行させる命令を含むことによって、特定のオペレーションまたは動作を実行するように構成され得る。
概して、この明細書中に記載される主題の革新的な一局面は、以下の動作を含む方法で具体化することができる。以下の動作は、データを処理するようにとの複数の要求の各々ごとに、データを処理するようにとの要求を、特定のエンティティのためのクライアントデバイスから、エンドポイントによって受信する動作と、特定のエンティティのためにエンドポイントによって処理されるべき要求の量を決定する動作と、データを処理するようにとの当該複数の要求のセットであって、データを処理するようにとの少なくとも2つ以上の要求を含む当該セットにおける各々の要求であって、当該複数の要求のセットにおける各々の要求は2つ以上のエンティティを含むエンティティのセットにおける1エンティティに対応しており、当該各々の要求ごとに、特定のエンティティと、特定のエンティティのためにエンドポイントによって処理されるべき要求の量とを示す割当て要求を、帯域幅調整システムに提供する動作と、要求に応答する際に用いるべき特定のエンティティについての割当てを帯域幅調整システムから受信する動作と、割当て、応答されるべき要求についての1の値、および、データ処理装置上の特定のエンティティについてのトークンの発生量に基づいて、その時点で要求に応答すべきかどうかを確率的に判断する動作と、セットのうち要求の第1のサブセットについて、その時点で要求に応答すべきと確率的に判断したことに応じて、要求に応答する動作と、セットのうち要求の第2のサブセットについて、その時点で要求に応答すべきでないと確率的に判断したことに応じて、予め定められた期間が経過したかどうかを判断する動作と、予め定められた期間が経過したとの判断に応じて、要求が応答されないだろうことを示すメッセージをクライアントデバイスに送信する動作、または、予め定められた期間がまだ経過していないとの判断に応じて、トークンの発生量を割当ての量だけインクリメントする動作と、その時点で要求に応答すべきかどうかについての確率的判断を再判断する動作とを含む。この局面の他の実施形態は、対応するコンピュータシステム、装置、および1つ以上のコンピュータストレージデバイスに記録されたコンピュータプログラムを含み、各々は、方法の動作を実行するように構成されている。1つ以上のコンピュータのシステムは、オペレーション時に上記動作を当該システムに実行させるソフトウェア、ファームウェア、ハードウェア、またはこれらの組合せが当該システムにインストールされていることにより、特定のオペレーションまたは動作を実行するように構成され得る。1つ以上のコンピュータプログラムは、データ処理装置によって実行されたときに、装置に上記動作を実行させる命令を含むことによって、特定のオペレーションまたは動作を実行するように構成され得る。
概して、この明細書中に記載される主題の革新的な一局面は、以下の動作を含む方法で具体化することができる。以下の動作は、データを処理するようにとの複数の要求の各々ごとに、データを処理するようにとの要求を、特定のエンティティのためのクライアントデバイスから受信する動作と、要求に応答するためのサイズを決定する動作と、データを処理するようにとの複数の要求のセットであって、データを処理するようにとの少なくとも2つ以上の要求を含む当該セットにおける各々の要求であって、当該複数の要求のセットにおける各々の要求は2つ以上のエンティティを含むエンティティのセットにおける1エンティティに対応しており、各々の要求ごとに、特定のエンティティと要求に応答するためのサイズとを示す割当て要求を帯域幅調整システムに提供する動作と、要求に応答する際に用いるべき特定のエンティティについての割当てを帯域幅調整システムから受信する動作と、割当て、要求に応答するためのサイズ、および、データ処理装置上の特定のエンティティについてのトークンの発生量に基づいて、その時点で要求に応答すべきかどうかを確率的に判断する動作と、セットのうち要求の第1のサブセットについて、その時点で要求に応答すべきと確率的に判断したことに応じて、要求に応答する動作と、セットのうち要求の第2のサブセットについて、その時点で要求に応答すべきでないと確率的に判断したことに応じて、予め定められた期間が経過したかどうかを判断する動作と、予め定められた期間が経過したとの判断に応じて、要求が応答されないだろうことを示すメッセージをクライアントデバイスに送信する動作、または、予め定められた期間がまだ経過していないとの判断に応じて、トークンの発生量を割当ての量だけインクリメントする動作と、その時点で要求に応答すべきであるかどうかについての確率的判断を再判断する動作とを含む。この局面の他の実施形態は、対応するコンピュータシステム、装置、および1つ以上のコンピュータストレージデバイスに記録されたコンピュータプログラムを含み、各々は、方法の動作を実行するように構成されている。1つ以上のコンピュータのシステムは、オペレーション時に上記動作を当該システムに実行させるソフトウェア、ファームウェア、ハードウェア、またはこれらの組合せが当該システムにインストールされていることにより、特定のオペレーションまたは動作を実行するように構成され得る。1つ以上のコンピュータプログラムは、データ処理装置によって実行されたときに、装置に動作を実行させる命令を含むことによって、特定のオペレーションまたは動作を実行するように構成され得る。
上述および他の実施形態は、各々、任意には、以下の特徴の1つ以上を単独でまたは組合せて含み得る。その時点で要求に応答すべきかどうかを確率的に判断する動作は、帯域幅割当て、処理されるべきデータのサイズ、データ処理装置上の特定のエンティティについてのトークンの発生量、データ処理装置についての最大の許可遅延時間、および平均的な帯域幅調整遅延時間に基づいて、その時点で要求に応答すべきかどうかを確率的に判断する動作を含み得る。その時点で要求に応答すべきかどうかを確率的に判断する動作は、帯域幅割当て、処理されるべきデータのサイズ、および、データ処理装置上の特定のエンティティについてのトークンの発生量を用いて、要求に応答する確率を決定する動作と、乱数を生成する動作と、乱数を確率と比較して、乱数が確率よりも大きいかどうかを判断する動作と、乱数が確率以下であるとの判断に応じて、その時点で要求に応答すべきと判断する動作、または、乱数が確率よりも大きいとの判断に応じて、その時点で要求に応答すべきでないと判断する動作とを含み得る。
いくつかの実現例においては、当該方法は、複数の要求のデータとは異なるデータを処理するようにとの複数の要求の第2のセットであるとともにデータを処理するようにとの少なくとも1つ以上の要求を含む第2のセットにおける各々の要求ごとに、データ処理装置上の特定のエンティティについてのトークンの発生量がデータのサイズ未満であるかどうかを判断するステップと、データ処理装置上の特定のエンティティについてのトークンの発生量がデータのサイズ以上であると判断したことに応じて、要求に応答するステップとを含み得る。特定のエンティティと要求に応答する際に処理されるべきデータのサイズとを示す帯域幅割当て要求を帯域幅調整システムに提供するステップは、データ処理装置上の特定のエンティティについてのトークンの発生量がデータのサイズ未満であると判断したことに応じて、要求に応答する際に処理されるべきデータのサイズと特定のエンティティとを示す帯域幅割当て要求を帯域幅調整システムに提供するステップを含み得る。その時点で要求に応答すべきであるかどうかについての確率的判断を再判断するステップは、データ処理装置上の特定のエンティティについてのトークンの発生量がデータのサイズ未満であると判断するステップと、データ処理装置上の特定のエンティティについてのトークンの発生量がデータのサイズ以上であると判断したことに応じて、要求に応答するステップ、または、データ処理装置上の特定のエンティティについてのトークンの発生量がデータのサイズ未満であると判断したことに応じて、その時点で要求に応答すべきであるかどうかについての確率的判断を実行するステップとを含み得る。
いくつかの実現例においては、当該方法は、トークンの発生量が負の数であるかどうかを判断するステップと、特定のエンティティおよびトークンの発生量を示す、更新済みの帯域幅割当て要求を帯域幅調整システムに提供するステップと、更新済みの帯域幅割当てを帯域幅調整システムから受信するステップと、トークンの発生量を更新済みの帯域幅割当ての量だけインクリメントするステップとを含み得る。要求に応答するステップは、要求に応答する際に処理されるべきデータのサイズをトークンの発生量から差引くステップを含み得る。要求に応答するステップは、トークンの発生量と要求に応答する際に処理されるべきデータのサイズとの間の差を示す負債値を決定するステップと、負債値が債務限界を上回っているかどうかを判断するステップと、負債値が負債限度を上回っていないとのの判断に応じて、要求に応答するステップとを含み得る。
いくつかの実現例においては、データ処理装置は、クラウドコンピューティングシステムにおけるエンドポイントの一部を含み得る。いくつかの実現例においては、システムは帯域幅調整システムを含み得る。データ処理装置は、各々が帯域幅割当て要求を帯域幅調整システムに送信する複数のデバイスのグループにおける1のデバイスを含み得る。要求に応答する際に用いるべき特定のエンティティについての帯域幅割当てを帯域幅調整システムから受信するステップは、複数のデバイスのグループにおける各デバイスから、帯域幅調整システムによって受信された特定のエンティティについての帯域幅割当て要求を用いて決定された帯域幅割当てを受信するステップを含み得る。複数のデバイスのグループにおけるデバイスの各々に送信された特定のエンティティについての帯域幅割当て要求の各々の合計は、特定のエンティティについての帯域幅バジェット(budget)と等しくなり得る。
いくつかの実現例においては、当該方法は、更新済みの帯域幅割当てを受信するステップを含み得る。その時点で要求に応答すべきであるかどうかについての確率的判断を再判断するステップは、更新済みの帯域幅割当て、処理されるべきデータのサイズ、および、データ処理装置上の特定のエンティティについてのトークンの発生量を用いて、その時点で要求に応答すべきかどうかを確率的に判断するステップを含み得る。特定のエンティティについてのデータを処理するようにとの要求を受信するステップは、読出し要求または書込み要求のうちの1つを受信するステップを含み得る。特定のエンティティについてのデータを処理するようにとの要求を受信するステップは、特定のユーザについての要求を受信するステップを含み得る。特定のエンティティについてのデータを処理するようにとの要求を受信するステップは、特定の企業についての要求を受信するステップを含み得る。要求に応答するステップは、要求に対する応答を決定するステップと、クライアントデバイスに対して応答を提供するステップとを含み得る。その時点で要求に応答すべきであるかどうかについての確率的判断を再判断するステップは、予め定められた期間が経過するまで、その時点で要求に応答すべきかどうかについての確率的判断を再判断するステップを含み得る。複数の要求のセットは、複数の要求内の各要求を含み得る。
いくつかの実現例においては、その時点で要求に応答すべきかどうかを確率的に判断するステップは、割当て、要求に応答するためのサイズ、データ処理装置上の特定のエンティティについてのトークンの発生量、データ処理装置についての最大の許可遅延時間、および平均的な帯域幅調整遅延時間に基づいて、その時点で要求に応答すべきかどうかを確率的に判断するステップを含み得る。その時点で要求に応答すべきかどうかを確率的に判断するステップは、割当て、要求に応答するためのサイズ、および、データ処理装置上の特定のエンティティについてのトークンの発生量を用いて、要求に応答する確率を決定するステップと、乱数を生成するステップと、乱数を確率と比較して、乱数が確率よりも大きいかどうかを判断するステップと、乱数が確率以下であるとの判断に応じて、その時点で要求に応答すべきと判断するステップ、または、乱数が確率よりも大きいとの判断に応じて、その時点で要求に応答すべきでないと判断するステップとを含み得る。
いくつかの実現例においては、当該方法は、複数の要求のデータとは異なるデータを処理するようにとの複数の要求の第2のセットであるとともにデータを処理するようにとの少なくとも1つ以上の要求を含んでいる第2のセットにおける各々の要求ごとに、データ処理装置上の特定のエンティティについてのトークンの発生量が要求に応答するためのサイズ未満であるかどうかを判断するステップと、データ処理装置上の特定のエンティティについてのトークンの発生量が要求に応答するためのサイズ以上であると判断したことに応じて、要求に応答するステップとを含み得る。特定のエンティティと要求に応答するためのサイズとを示す割当て要求を帯域幅調整システムに提供するステップは、データ処理装置上の特定のエンティティについてのトークンの発生量が要求に応答するためのサイズ未満であると判断したことに応じて、行なわれてもよい。その時点で要求に応答すべきであるかどうかについての確率的判断を再判断するステップは、データ処理装置上の特定のエンティティについてのトークンの発生量が要求に応答するためのサイズ未満であるかどうかを判断するステップと、データ処理装置上の特定のエンティティについてのトークンの発生量が要求に応答するためのサイズ以上であると判断したことに応じて、要求に応答するステップ、または、データ処理装置上の特定のエンティティについてのトークンの発生量が要求に応答するためのサイズ未満であると判断したことに応じて、その時点で要求に応答すべきであるかどうかについての確率的判断を実行するステップとを含み得る。
いくつかの実現例においては、当該方法は、トークンの発生量が負の数であるかどうかを判断するステップと、特定のエンティティとトークンの発生量とを示す更新済みの割当て要求を帯域幅調整システムに提供するステップと、更新済みの割当てを帯域幅調整システムから受信するステップと、トークンの発生量を更新済みの割当ての量だけインクリメントするステップと、を含み得る。要求に応答するステップは、要求に応答するためのサイズをトークンの発生量から差引くステップを含み得る。要求に応答するステップは、トークンの発生量と要求に応答するためのサイズとの間の差を示す負債値を決定するステップと、負債値が負債限度を上回っているかどうかを判断するステップと、負債値が負債限度を上回っていないと判断したことに応じて要求に応答するステップとを含み得る。データ処理装置は、各々が帯域幅調整システムに割当て要求を送信する複数のデバイスのグループのうちの1のデバイスを含み得る。要求に応答する際に用いるべき特定のエンティティのための帯域幅割当てを帯域幅調整システムから受信するステップは、複数のデバイスのグループにおける各々のデバイスから帯域幅調整システムによって受信された、特定のエンティティについての割当て要求を用いて決定された割当てを受信するステップを含み得る。複数のデバイスのグループにおけるデバイスの各々に送信された特定のエンティティについての割当て要求の各々の合計は、特定のエンティティについてのバジェットと等しくなり得る。当該方法は、更新済みの割当てを受信するステップを含み得る。その時点で要求に応答すべきであるかどうかについての確率的判断を再判断するステップは、更新済みの割当て、要求に応答するためのサイズ、および、データ処理装置上の特定のエンティティについてのトークンの発生量を用いて、その時点で要求に応答すべきかどうかを確率的に判断するステップを含み得る。
いくつかの実現例においては、要求に応答するためのサイズを決定するステップは、要求に応答する際に処理されるべきデータのサイズを決定するステップを含んでもよい。特定のエンティティと要求に応答するためのサイズとを示す割当て要求を帯域幅調整システムに提供するステップは、特定のエンティティと要求に応答する際に処理されるべきデータのサイズとを示す帯域幅割当て要求を帯域幅調整システムに提供するステップを含み得る。要求に応答する際に用いるべき特定のエンティティについての割当てを帯域幅調整システムから受信するステップは、要求に応答する際に用いるべき特定のエンティティについての帯域幅割当てを帯域幅調整システムから受信するステップを含み得る。割当て、要求に応答するためのサイズ、および、データ処理装置上の特定のエンティティについてのトークンの発生量に基づいて、その時点で要求に応答すべきかどうかを確率的に判断するステップは、帯域幅割当て、処理されるべきデータのサイズ、および、データ処理装置上の特定のエンティティについてのトークンの発生量に基づいて、その時点で要求に応答すべきかどうかを確率的に判断するステップを含み得る。要求に応答するためのサイズを決定するステップは、特定のエンティティのためにデータ処理装置を含むエンドポイントによって処理されるべき要求の量を決定するステップを含み得る。特定のエンティティと要求に応答するためのサイズとを示す割当て要求を帯域幅調整システムに提供するステップは、特定のエンティティと、特定のエンティティのためにエンドポイントによって処理されるべき要求の量とを示す割当て要求を、帯域幅調整システムに提供するステップを含み得る。割当て、要求に応答するためのサイズ、および、データ処理装置上の特定のエンティティについてのトークンの発生量に基づいて、その時点で要求に応答すべきかどうかを確率的に判断するステップは、割当て、応答されるべき当該要求についての1の値、および、データ処理装置上の特定のエンティティについてのトークンの発生量に基づいて、その時点で要求に応答すべきかどうかを確率的に判断するステップを含み得る。
この明細書中に記載される主題は、特定の実施形態において実現することができるとともに、結果として、以下の利点のうち1つ以上をもたらし得る。いくつかの実現例においては、以下に記載されるシステムおよび方法は、他のシステムと比べて、より迅速な許可の判断、グローバルな許可判断、充分に活用されていないバジェットの期間の最小化、クライアントがより長い期間にわたって帯域幅バジェットを平均的に超過することの確実な防止、またはこれらのうち2つ以上の組合せを可能にする。たとえば、グローバル帯域幅調整装置は、データストレージシステムが、各エンドポイントごとに、特定のユーザまたはクライアントデバイスについての帯域幅割当てを決定することを可能にする。いくつかの例においては、エンドポイントによって特定のユーザまたはクライアントデバイスが負債を負うことが許可されると、当該エンドポイントは、バジェットが十分に利用されていない期間を最小限にし、他の場合に応答されない可能性もある要求に応答することを可能にする。いくつかの例においては、エンドポイントは、クライアントがより長い期間にわたって平均して帯域幅バジェットを超過しないことを確実にするために、最大負債しきい値を有し得る。いくつかの実現例においては、以下に記載されるシステムおよび方法は、トークンバケットが0以外のリフィルレートを得ることと、エンドポイントが最終的に特定のユーザまたはクライアントデバイスのための負債をカバーするのに十分な帯域幅を有することとを確実にするために、特定のユーザまたはクライアントデバイスのためのトークンバケットが負の値を有している場合、帯域幅調整システムにデマンドを報告する。
この明細書中に記載される主題の1つ以上の実現例の詳細が、添付の図面および以下の説明において述べられる。主題についての他の特徴、局面および利点が以下の説明、添付の図面および添付の特許請求の範囲から明らかになるだろう。
データストレージシステムがクライアントデバイスから要求に応答する環境の一例である。 要求に応答すべきかどうかを確率的に判断するためのプロセスを示すフロー図である。 要求に応答すべきかどうかを判断するためのプロセスを示すフロー図である。 トークンの量をインクリメントするためのプロセスを示すフロー図である。 この明細書に記載されている、コンピュータによって実現される方法に関連付けて用いることができるコンピューティングシステムを示すブロック図である。
さまざまな図面内の参照番号および符号は同様の要素を示している。
詳細な説明:
例示的なデータストレージシステム
図1は、データストレージシステム102がクライアントデバイスA104a〜B104bから要求に応答している環境100の一例である。環境100は複数のクライアントデバイスA104a〜B104bを含む。複数のクライアントデバイスA104a〜B104bの各々は、期間T中に、データストレージシステム102における1つ以上のエンドポイントA106a〜B106bにデータの要求を送信する。たとえば、クライアントデバイスB104bは、2つの異なるセットのデータを要求してもよく、すなわち、エンドポイントA106aに第1のデータセットを要求し、エンドポイントB106bに第2のデータセットを要求してもよい。
エンドポイントA106a〜B106bは、期間T中に、特定のエンティティ(たとえば、その時点でアクティブな各々のエンティティ)についての、その時点でそれらエンドポイントが観察したデマンドをデータストレージシステム102に含まれるグローバル帯域幅調整装置108に報告する。たとえば、期間T中に、エンドポイントA106a〜B106bの各々は、クライアントデバイスA104a〜B104bから受信された、未決着の(outstanding)クライアントデータ要求についての帯域幅要求を送信する。未決着のクライアントデータ要求は、期間T(たとえば、期間Tの直前の期間)中に受信されたデータ要求を含む。いくつかの例においては、未決着のクライアントデータ要求は、期間Tよりも前に受信されているとともに応答されるのを待っている要求を含み得る。
以下の例においては、クライアントデバイスごとの帯域幅割当てを参照し得るが、帯域幅割当ては各エンティティごと(たとえば、各ユーザごと)であってもよい。これらの例においては、帯域幅割当ては、ネットワーク帯域幅を、たとえばMB/sで指定する値に関係している。たとえば、帯域幅割当てが各エンティティごとである場合、組織は、各々がデータストレージシステム102にデータを要求する複数のクライアントデバイスを有していてもよい。データストレージシステム102は、組織のための最大帯域幅を有するとともに、以下により詳細に記載されるように、この最大帯域幅を、組織のクライアントデバイスから受信した要求に適用する。
グローバル帯域幅調整装置108は、期間T中にエンドポイントA106a〜B106bに帯域幅割当てを送信する。たとえば、以下により詳細に記載されるように、グローバル帯域幅調整装置108は、各エンティティごとに(たとえば、各クライアントデバイスA104a〜B104bごと、および各エンドポイントA106a〜B106bごとに)帯域幅割当てを決定してもよい。グローバル帯域幅調整装置108は、クライアントデバイスA104aについての最大限利用可能な帯域幅をエンドポイントA106aに割当ててもよい。なぜなら、エンドポイントA106aは、クライアントデバイスA104aからのデータ要求を受信しているとともにクライアントデバイスA104aについての未決着の要求を有する唯一のエンドポイントであるからである。最大限利用可能な帯域幅は、クライアントデバイスA104aについてのルール(たとえば、クライアントデバイスA104aがサブスクライブした最大帯域幅)、または、データストレージシステム102についてのルール(たとえば、データストレージシステム102にデータを要求するいずれかのクライアントデバイスにとって利用可能な最大帯域幅)に基づいて決定されてもよい。
グローバル帯域幅調整装置108は、クライアントデバイスB104bについての帯域幅バジェットをエンドポイントA106a〜B106bの各々に割当てる。たとえば、クライアントデバイスB104bについての最大帯域幅が3MB/sである場合、グローバル帯域幅調整装置108はエンドポイントA106a〜B106bの各々に1.5MB/sの帯域幅バジェットを割当ててもよい。
特定のクライアントデバイスまたはユーザのためにエンドポイントA106a〜B106bの各々に対してグローバル帯域幅調整装置108によって送信されたすべての割当ての合計は、特定のクライアントデバイスまたはユーザについての帯域幅バジェット(たとえば最大帯域幅バジェット)と等しい。グローバル帯域幅調整装置108は、特定のクライアントデバイスまたはユーザについてのエンドポイントA106a〜B106bの各々についての割当てを決定してもよい。
グローバル帯域幅調整装置108は、期間T中にエンドポイントA106a〜B106bに帯域幅バジェットを提供する。たとえば、グローバル帯域幅調整装置108は、特定のクライアントデバイスについての帯域幅割当てがエンドポイント間で異なる場合、エンドポイントA106aに特有の、クライアントデバイスA104a〜B104bの各々についての帯域幅割当てを含むメッセージをエンドポイントA106aに送信するとともに、クライアントデバイスB104bについての帯域幅割当てを含む第2のメッセージをエンドポイントB106bに送信する。
期間T中に、エンドポイントA106a〜B106bの各々は、それぞれのエンドポイントについて未決着であるペンディング中の要求に応答すべきかどうかを確率的に判断する。エンドポイントB106bは、たとえば、期間T中にクライアントデバイスB104bから受信された要求と、未処理であるとともに期間Tよりも前に受信された他のいずれかの要求とに応答すべきかどうかを判断してもよい。いくつかの例においては、エンドポイントA106a〜B106bの各々は、要求に応答すべきかどうかを確率的に判断するために別の方法を用いてもよい。
いくつかの例においては、グローバル帯域幅調整装置108は、特定のクライアントデバイスについての帯域幅バジェットを、エンドポイント間で等しく、またはエンドポイントA106a〜B106bによって報告されたデマンドに応じて比例的に、分散させてもよい。たとえば、グローバル帯域幅調整装置108が1MB、2MBおよび3MBのそれぞれのデマンドについての3つのエンドポイントから帯域幅割当て要求を受信する場合、かつ、帯域幅バジェットが対応するクライアントデバイスに対して3MB/sである場合、グローバル帯域幅調整装置108は、0.5MB/s、1MB/sおよび1.5MB/sの帯域幅割当てをそれぞれエンドポイントに送信することとなる。これらの割当ては、帯域幅バジェット合計を超過しないという効果を及ぼす。平均2秒以内に割当てを提供するグローバル帯域幅調整装置は、各々の要求が平均4秒以内に応答され得るという技術的効果を及ぼす。
いくつかの実現例においては、グローバル帯域幅調整装置108は、各々の応答するエンドポイントに、そのデマンドすべてが(たとえば、クライアントデバイスによって要求されるデータのために)割当てられるべきであると判断することから開始してもよく、次いで、すべての割当ての合計がクライアントデバイスについてのバジェットと等しくなるまで最も高い割当てを減らし続けてもよい。上述の例を用いて、グローバル帯域幅調整装置108は、3つのエンドポイントの各々に1MB/sの割当てを送信し得る。
いくつかの実現例においては、グローバル帯域幅調整装置は、エンドポイントA106a〜B106bのうち1つ以上について最低限のデマンドレベルを有し得る。たとえば、エンドポイントの各々は、同じ最低限のデマンドレベルまたは異なる最低限のデマンドレベルを有し得る。いくつかの例においては、データストレージシステム102におけるエンドポイントの各々は、1MB/sの最低限のデマンドを有してもよい。これらの例においては、グローバル帯域幅調整装置108は、エンドポイントの各々に最低限のデマンドを割当て得るとともに、さらに、蓄積された最低限のデマンドと、エンティティについての最大帯域幅バジェットとの間に差があるかどうかを判断し得る。たとえば、各々のエンドポイントについての最低限のデマンドが1MB/sであり、帯域幅バジェットがエンティティに対して3MB/sであり、グローバル帯域幅調整装置108がエンティティについて3つの帯域幅要求を受信すると、グローバル帯域幅調整装置108は、エンドポイントの各々に1MB/sの帯域幅割当てを割当てる。
エンティティについての帯域幅バジェットが3.5MB/sであり、帯域幅割当て要求が1MB、2MBおよび3MBのためのものである場合、グローバル帯域幅調整装置108は、最低限のデマンドをエンドポイントの各々(たとえば、1MB/s)に割当て、次いで、残りの帯域幅(たとえば0.5MB/s)をエンドポイントに割当てる。グローバル帯域幅調整装置108は、第2のエンドポイントおよび第3のエンドポイントがそれぞれ1MBおよび2MBの残りのデマンドを有すると判断し、これらのエンドポイントに帯域幅のうち残りの0.5MB/sを割当てる。たとえば、グローバル帯域幅調整装置は、1MB/s、1.25MB/sおよび1.25MB/sの最終帯域幅割当てのために、それぞれ、第2のエンドポイントおよび第3のエンドポイントの各々に対して、0.25MB/sの追加の帯域幅を割当ててもよい。いくつかの例においては、グローバル帯域幅調整装置108は、1MB/s、1.167MB/sおよび1.333MB/sの最終帯域幅割当てのために、それぞれ、第2のエンドポイントに0.167MB/sを割当て、第3のエンドポイントに0.333MB/sを割当ててもよい。
エンドポイントA106a〜B106bの各々は、たとえば、各々のアクティブなクライアントデバイスまたはユーザのために、エンドポイントが受信した要求の送信元であるすべてのクライアントデバイスについてのトークンバケットを維持する。エンドポイントA106a〜B106bのうちの1つが、特定のクライアントデバイスについての帯域幅割当てをグローバル帯域幅調整装置108から受信すると、エンドポイントは、たとえば、エンドポイントがグローバル帯域幅調整装置108から特定のクライアントデバイスについての別の帯域幅割当てを受信するまで、特定のクライアントデバイスのための帯域幅割当てを、クライアントデバイスのためのトークンバケットについてのフィルレートとして用いる。フィルレートは、エンドポイントがクライアントデバイスのためのトークンバケットについての値を更新するレートである。
エンドポイントがクライアントデバイスから要求を受信すると、エンドポイントは、要求に応答する際に処理されるべきバイト数を決定する。たとえば、要求が読出し要求である場合、エンドポイントは、当該エンドポイントが要求に応じてクライアントデバイスに提供するであろうバイト数を決定する。エンドポイントは、要求に応答する際に処理されるべきバイト数をクライアントデバイスのためのトークンバケットにおけるトークンの数と比較する。要求に応答する際に処理されるべきバイト数がクライアントデバイスのためのトークンバケットにおけるトークンの数以下であるとエンドポイントが判断すると、当該エンドポイントは、要求を許可してもよく、たとえば、要求に応答すべきと判断して、クライアントデバイスのためのトークンバケットにおけるトークンから、要求に応答する際に処理されるべきバイト数を差引いてもよい。
要求に応答する際に処理されるべきバイト数がクライアントデバイスのためのトークンバケットにおけるトークンの数よりも大きいとエンドポイントが判断すると、当該エンドポイントは、要求を許可すべきかどうか(たとえば、要求に直ちに応答すべきかどうか)を確率的に判断する。たとえば、エンドポイントは、クライアントデバイスについてのその時点での帯域幅割当て、クライアントデバイスのためのトークンバケットにおけるトークンの数、および要求に応答するのに必要なトークンの数、たとえば、要求に応答する際に処理されるべきバイト数を用いて、クライアントデバイスについての要求を許可すべきかどうかを確率的に判断してもよい。この場合、帯域幅バジェットを上回っているとともに従来の帯域幅調整技術によっては応答され得ない要求が依然として応答され得るという技術的な効果が得られる。
エンドポイントが、たとえば、要求に応答し始めるために要求を許可するべきであると確率的に判断する場合、エンドポイントは、クライアントデバイスのためのトークンバケットから、クライアントデバイスについての要求に応答する際に処理されるべきバイト数を差引いて、クライアントデバイスのためのトークンバケットを負の状態(たとえば負債の状態)にする。トークンバケットについての値は、サイズの基準、たとえば、ビット、バイト、メガバイト、ギガバイト、テラバイト、または、データについての別の適切な量、であってもよい。
エンドポイントの確率的判断によって、結果として、要求が許可されない場合、エンドポイントは要求を拒絶しないかもしれない。エンドポイントは、キューに要求を配置し、スケジュールに従って、たとえば、予め定められた時間間隔ごとに1回、確率的判断を繰返す。たとえば、エンドポイントは、要求が許可されるかまたは要求についての許可期限が経過するまで、たとえば、予め定められた期間が経過するまで、クライアントデバイスの要求について、1秒に1回、確率的判断を実行してもよい。
要求についての許可期限が経過すると、エンドポイントは要求を拒絶する。エンドポイントは、要求が応答されないだろうことを示すメッセージをクライアントデバイスに送信してもよい。
エンドポイントが確率的判断を繰返す際に、当該エンドポイントは異なる帯域幅割当て、トークン量またはこれら両方を用い得る。たとえば、トークンバケットにおけるトークンの量を帯域幅割当ての量だけ増やすことによって確率的判断が実行されるたびに、エンドポイントは、特定のクライアントデバイスまたはユーザのためのトークンバケットにおけるトークンの量を更新する。
エンドポイントは、クライアントデバイスについての更新済みの帯域幅割当てをグローバル帯域幅調整装置108から受信してもよい。たとえば、確率的判断を実行した後、エンドポイントは、エンドポイントのうちの1つがクライアントデバイスについての要求を受信したことに応じて、エンドポイントのうち1つがクライアントデバイスについての要求の応答を完了してクライアントデバイスについて負以外のトークンバケットを有することに応じて、またはこれらの両方に応じて、グローバル帯域幅調整装置から更新済みの帯域幅割当てを受信してもよい。
いくつかの例においては、エンドポイントA106aは、第1の期間中にクライアントデバイスB104bから要求を受信し、要求に応答すべきではないと確率的に判断してもよい。エンドポイントB106bは、第1の期間後、第2の期間中に、クライアントデバイスB104bから要求を受信し、グローバル帯域幅調整装置108に帯域幅割当て要求を送信する。グローバル帯域幅調整装置108は、クライアントデバイスB104bについての要求がエンドポイントA106a上では依然として未決着であると判断し、エンドポイントA106a〜B106bの各々から受信された帯域幅割当て要求を用いて、エンドポイントA106aおよびエンドポイントB106bの両方についての帯域幅割当てを決定する。エンドポイントA106a〜B106bは、グローバル帯域幅調整装置108から帯域幅割当て受信し、当該割当てを用いて、クライアントデバイスB104bからそれぞれの要求に応答すべきかどうかを確率的に判断する。たとえば、エンドポイントA106aは、クライアントデバイスB104bについての要求を許可すべきかどうかを確率的に判断するために、新しく受信された帯域幅割当てを用いる。
エンドポイントは、当該エンドポイントが要求に応答すべきと判断するか否かについて、更新済みの帯域幅割当てを受信し得る。たとえば、エンドポイントは、クライアントデバイスについての要求に応答すべきと判断した後に、更新済みの帯域幅割当てを受信してもよい。エンドポイントは、クライアントデバイスについての要求に直ちに応答すべきではないと判断した後に、更新済みの帯域幅割当てを受信してもよい。
いくつかの実現例においては、エンドポイントは、確率的判断を実行するためにプロセスの一部として以下の式(1)を用いてもよい。たとえば、エンドポイントは、式(1)を用いて、クライアントデバイスについての要求が許可される確率である許可確率(admission probability:AdmProb)を決定してもよい。AdmProbが1以上である場合、エンドポイントは要求を許可する、たとえば、要求に応答する。AdmProbが1と0との間である場合、エンドポイントは要求を許可すべきかどうかについての確率的判断を実行し続ける。AdmProbは、如何なる適切な値(たとえば整数)であってもよく、対応する要求が自動的には許可されない1よりも大きな絶対値、負の数、または、これらのうち2つ以上の組合せを有していてもよい。
AdmProb = (-ln(eps) / (MaxAdmLat - AvgThrottlerLat)) * (Asgn / Debt) (1)
エンドポイントは、epsを、エンドポイントがたとえば異なるクライアントデバイスから同時にNの要求を受信する最大の確率として判断してもよく、当該要求はすべて拒絶される。たとえば、エンドポイントは、1000に等しいNの値についてepsを決定してもよい。いくつかの例においては、Nの値は、エンドポイントが特定のクライアントデバイスについて受信し得る要求の最大数である。いくつかの実現例においては、エンドポイントはepsを0.001以下の値として規定してもよい。アドミニストレータがepsの値を規定してもよい。
エンドポイントは、MaxAdmLatを最大の許可遅延時間として判断する。MaxAdmLatは、たとえば、要求が許可されたかまたは許可されなかったことを示すために、要求がクライアントデバイスから受信されるときと、エンドポイントが要求に応答するときとの間における最大時間量であり得る。たとえば、各々の判断が、要求が許可されないだろうという結果になる場合、対応する要求をクライアントデバイスから受信してから最大の許可遅延時間が経過するまで(この時点で、要求が許可されなかったことと、エンドポイントが要求に応答しないであろうこととを示すメッセージをエンドポイントがクライアントデバイスに送信することとなる)、エンドポイントは確率的判断を実行し続けてもよい。
エンドポイントは、AvgThrottlerLatを、グローバル帯域幅調整装置108から帯域幅割当てを得るための平均的な遅延時間として判断してもよい。エンドポイントは、Asgnを、クライアントのためのその時点での帯域幅割当て(すなわち、エンドポイントが要求を許可すべきか否かについての確率的判断を実行するのに用いられる、その時点での帯域幅割当て)として判断してもよい。エンドポイントは、Debtをその時点での負債(たとえば、要求が許可された場合に作成され得るクライアントデバイスのためのトークンバケットにおけるトークンの負の数)として判断してもよい。エンドポイントによってAvgThrottlerLat、AsgnおよびDebtについての上述の値が用いられると、その時点での負債が増加するのに応じて要求が応答される可能性が低下し、これにより、クライアントデバイスがより長い期間にわたって平均的に帯域幅バジェットを超過しなくなるという技術的な効果が得られる。さらに、式を高速で評価できるので、要求の許可を高速で判断できる。たとえば、エンドポイントはグローバル帯域幅調整装置からの判断を待つことなく式を用いて判断を行うことができる。
たとえば、エンドポイントB106bは、2MB/sの帯域幅限度を有するクライアントデバイスB104bから読出し要求を受信し得る。読出し要求は、特定の期間(たとえば、同じ1秒の時間間隔)中に、データストレージシステム102における別のエンドポイントによってそれぞれ受信される20個の読出し要求のうちの1つである。各々の読出し要求は1MBのデータに対応している。エンドポイントB106bを含むエンドポイントの各々は、1MBのデマンドを示すクライアントデバイスB104bについての帯域幅要求をグローバル帯域幅調整装置108に送信する。グローバル帯域幅調整装置108は、クライアントデバイスB104bについての2MB/sの帯域幅限度を決定し、0.1MB/sのエンドポイントの各々についての帯域幅割当てを決定する。グローバル帯域幅調整装置108は、エンドポイントB106bを含むエンドポイントの各々に帯域幅割当てを送信する。AvgThrottlerLatが2秒であると想定すると、エンドポイントの各々は、グローバル帯域幅調整装置108に帯域幅割当て要求を送信して2秒以内に帯域幅割当てを受信するだろう。
エンドポイントB106bは、クライアントデバイスB104bがエンドポイントB106b上にその時点で如何なる負債も有しておらず、このため、要求を許可した後の負債が要求について処理されたデータ量に相当するだろうと判断する。たとえば、Debtは1MBに等しく、MaxAdmLatは4秒である。エンドポイントB106bは、0.001に等しいepsを用いて、AdmProb=−ln(0.001)/2s*0.1MB/s/1MB=0.35を決定する。エンドポイントB106bは、AdmProb=0.35を用いて、要求を許可すべきかどうかを確率的に判断する。たとえば、エンドポイントB106bは、0と1との間の乱数を生成し、生成された乱数をAdmProbと比較する。生成された乱数がAdmProbを満たす場合、たとえば、AdmProb以下である場合、エンドポイントB106bは、要求を許可すべきである、たとえば、要求に応答すべきである、と判断する。生成された乱数がAdmProbを満たしていない場合、たとえば、AdmProbよりも大きい場合、エンドポイントB106bはその時点で要求を許可すべきではないと判断する。
要求を許可すべきでないとの判断に応じて、エンドポイントB106bは、要求を受信してからMaxAdmLat期間が経過したかどうかを判断する。この例においては、実際の帯域幅調整遅延時間が2秒であり、各々の判断に1秒かかる場合、3秒が経過したこととなり、MaxAdmLatは4秒となる。
MaxAdmLatが経過していないとエンドポイントB106bが判断すると、エンドポイントB106bは要求を許可すべきかどうかを再び確率的に判断する。たとえば、エンドポイントB106bは、クライアントデバイスB104bについてのトークンの量を、帯域幅割当てだけ、たとえば0.1だけインクリメントして、クライアントデバイスB104bのためのトークンバケットにおける総トークン値を0.1MBにする。エンドポイントB106bは、要求が許可された場合に発生するであろう負債の量を決定する。たとえば、要求に応答するのに必要とされる1MBから0.1MBのトークンを引くと、結果として、0.9MBのDebt値になる。
エンドポイントB106bは、式(1)を用いてAdmProb=−ln(0.001)/2s*0.1MB/s/0.9MB=0.39を決定し、別の乱数を生成する。エンドポイントB106bは、他の乱数をAdmProb=0.39の更新済みの値と比較して、要求を許可すべきかどうかを確率的に判断する。エンドポイントB106bが要求を許可すべきであると確率的に判断する場合、エンドポイントB106bは要求に応じてデータを判断する。たとえば、要求に応答し、クライアントデバイスB104bにデータを与えるかまたはデータストレージにデータを格納する。エンドポイントB106bが要求を許可すべきでないと確率的に判断する場合、エンドポイントB106bは、たとえば、最大の許可遅延時間が経過して以降は要求が応答されないだろうということを示すメッセージをクライアントデバイスB104bに送信する。
クライアントデバイスA104a〜B104bは、ネットワークを介してデータを送受信することができるパーソナルコンピュータ、移動通信デバイスおよび他の装置を含み得る。ローカルエリアネットワーク(local area network:LAN)、ワイドエリアネットワーク(wide area network:WAN)などのネットワーク、インターネットまたはこれらの組合せは、クライアントデバイスA104a〜B104bとエンドポイントA106a〜B106bとを接続する。いくつかの実現例においては、ネットワークはエンドポイントA106a〜B106bとグローバル帯域幅調整装置108とを接続する。
上述の文脈においてエンドポイントA106a〜B106bを単独で参照しているが、環境100の実現例は、たとえば、クラウドコンピューティングサービスとして展開される1セットのリモートコンピュータを含むとともに互いに組合わされて動作する単一のエンドポイントコンピュータまたは複数のエンドポイントコンピュータを用いてもよい。上述の文脈において単一のグローバル帯域幅調整装置108を参照しているが、環境100の実現例は、たとえば、クラウドコンピューティングサービスとして展開される1セットのリモートコンピュータを含むとともに互いに組合わされて動作する単一のグローバル帯域幅調整コンピュータまたは複数のグローバル帯域幅調整コンピュータを用いてもよい。
例示的なプロセスフロー
図2は、要求に応答すべきかどうかを確率的に判断するためのプロセス200を示すフロー図である。たとえば、プロセス200は、環境100からエンドポイントA106a〜B106bのうちの一方または両方によって使用され得る。
エンドポイントは、特定のエンティティのためのクライアントデバイスから、データを処理するようにとの要求を受信する(202)。データを処理するようにとの要求は、たとえば、データストレージからの/へのデータの読出し/書込みであってもよい。たとえば、エンドポイントはクライアントデバイスから読出し要求または書込み要求を受信する。特定のエンティティはクライアントデバイスまたはクライアントデバイスのユーザであってもよい。いくつかの例においては、特定のエンティティは、クライアントデバイスを所有する組織などのエンティティであってもよい。
エンドポイントは、要求に応答する際に処理されるべきデータのサイズを決定する(204)。これは、要求に応答するためのサイズを決定することを意味する。たとえば、エンドポイントは、データストレージから読出されてクライアントデバイスに提供されることとなるバイトの数もしくはビットの数を決定するか、または、クライアントデバイスから受信されてデータストレージに書込まれることとなるバイトの数もしくはビットの数を決定する。
いくつかの実現例においては、エンドポイントは要求に応答するためのサイズを決定する。サイズは、1秒当たりの(たとえばMB/s)リソースユニットまたは1秒当たりの要求であってもよい。要求に応答するためのサイズは、処理されるべきデータのサイズ、特定のエンティティについて受信される要求の数、或る期間(たとえば1秒)中に特定のエンティティについて受信される要求の数、特定のエンティティのためにエンドポイントによって受信される要求の数、または、要求に応答するための別の適切な値であってもよい。エンドポイントは、要求に応答するためのサイズを用いて、要求に応答すべきかどうかを確率的に判断する。
エンドポイントは、特定のエンティティと要求に応答する際に処理されるべきデータのサイズとを示す帯域幅割当て要求を帯域幅調整システムに提供する(206)。エンドポイントは、クライアントデバイスを示すデータを特定のエンティティとして含み得る。いくつかの例においては、エンドポイントは、クライアントデバイスのユーザを示すデータを特定のエンティティとして含む。
エンドポイントは、要求に応答する際に用いるべき特定のエンティティのための帯域幅割当てを帯域幅調整システムから受信する(208)。たとえば、帯域幅調整システムは、複数の異なるエンドポイントから帯域幅割当て要求を受信する。帯域幅調整システムは、帯域幅割当て要求を用いて、どの要求が特定のエンティティのためのものであるかを判断する。帯域幅調整システムは、特定のエンティティに割付けられた最大帯域幅を決定する。帯域幅調整システムは、特定のエンティティに割付けられた最大帯域幅と特定のエンティティについての帯域幅割当て要求とを用いて、帯域幅調整システムが受信した特定のエンティティについての帯域幅割当て要求の送信元であるエンドポイントの各々についての帯域幅割当てを決定する。帯域幅調整システムは、特定のエンティティについての帯域幅割当て(たとえば同じ帯域幅割当て、または異なる帯域幅割当て)をエンドポイントの各々に提供する。
帯域幅割当ては如何なる適切なタイプの値であってもよい。たとえば、帯域幅割当ては、バイト毎秒、ビット毎秒、メガバイト毎秒またはギガバイト毎秒であってもよい。
エンドポイントは、帯域幅割当て、処理されるべきデータのサイズ、および特定のエンティティについてのトークンの発生量に基づいて、要求にその時点で応答すべきかどうかを示す値を確率的に決定する(210)。たとえば、エンドポイントは、エンドポイントが要求に応答すべきかどうかを示すブール値を決定する。トークンの発生量は如何なる適切な単位の値であってもよい。たとえば、トークンの発生量は、ビット、バイト、メガバイト、ギガバイト、テラバイトまたはデータの別の適切な量の値であってもよい。
いくつかの例においては、エンドポイントは、エンドポイントが要求に応答すべき確率を表わす第1の値を生成する。エンドポイントは、たとえば乱数発生器を用いて、第2の値を任意に生成し、第1の値を第2の値と比較して、エンドポイントが要求に応答すべきかどうかを確率的に判断する。これらの例においては、エンドポイントは、第1の値と第2の値との比較の結果であるブール値を生成し、ブール値を値として用いてもよい。いくつかの実現例においては、エンドポイントは第2の値を値として用いてもよい。
エンドポイントは、要求が応答されるべきであることを当該値が示しているかどうかを判断する(212)。たとえば、エンドポイントは、ブール値が真であるかまたは偽であるかを判断する。いくつかの例においては、エンドポイントは、第2の値が第1の値を満たしているかどうか、たとえば第1の値以下であるかどうかを判断する。
要求が応答されるべきであることを値が示していると判断したことに応じて、エンドポイントは要求に応答する(214)。たとえば、エンドポイントは、要求されたデータをデータストレージから検索し、たとえば読出し要求に応じて、検索されたデータをクライアントデバイスに提供する。いくつかの例においては、エンドポイントは、たとえば書込み要求の受信に応じて、データストレージに受信データを格納する。
要求が応答されるべきでないことを値が示していると判断したこと応じて、エンドポイントは、予め定められた期間が経過したかどうかを判断する(216)。たとえば、エンドポイントは、最大の許可遅延時間についての期間が経過したかどうかを判断する。
予め定められた期間が経過したとの判断に応じて、エンドポイントは、要求が応答されないだろうことを示すメッセージをクライアントデバイスに送信する(218)。たとえば、エンドポイントは、要求を識別するとともに、要求がこの時には応答されないだろうことを示すメッセージをクライアントデバイスに送信する。エンドポイントは、後に、同じ動作の実行を要求する別の要求(たとえば、データストレージから読出されてクライアントデバイスに提供される同じデータ、または、データストレージに書込まれる同じデータ)をクライアントデバイスから受信するかもしれない。
エンドポイントが、後に、要求に応答すべきでないと確率的に判断した後にクライアントデバイスから別の要求を受信すると、エンドポイントは、特定のエンティティについてのトークンバケットにトークンを蓄積していてもよく、たとえば、他の要求に応答する確率がより高くなっていてもよい。たとえば、エンドポイントが特定のエンティティについてのトークンバケットに0.2MBを蓄積して、クライアントデバイスから要求に応答すべきでないと判断した場合、エンドポイントはトークンバケットに0.2MBを維持し、クライアントデバイスから他の要求に応答すべきかどうかについての後の確率的判断の際中に、たとえば、エンドポイントがクライアントデバイスから特定のエンティティについての如何なる介在的要求も受信しない場合、またはこれら両方の場合に、これらのトークンを用いる。エンドポイントは、さらに、特定のエンティティについての他の要求に応答するより高い確率を有することとなる。
予め定められた期間がまだ経過していないと判断したことに応じて、エンドポイントは、帯域幅割当ての量を用いて決定される値だけトークンの発生量をインクリメントする(220)。たとえば、エンドポイントは、帯域幅割当ての量に予め定められた期間の長さを乗ずることによって、値を決定してもよい。エンドポイントは、帯域幅割当て、処理されるべきデータのサイズ、および特定のエンティティについての更新済みのトークン量に基づいて、要求にその時点で応答すべきかどうかを示す第2の値を確率的に決定し始める。エンドポイントは、たとえば、帯域幅調整システムから受信された更新済みの帯域幅割当てを用いて第2の値を決定してもよい。
上述のプロセス200におけるステップの順序は、単に例示なものに過ぎず、要求に応答すべきかどうかの確率的な判断は異なる順序で実行されてもよい。たとえば、エンドポイントは、その時点で要求に応答すべきかどうか示す値を確率的に決定する前に、特定のエンティティについてのトークンの発生量をインクリメントしてもよい。
いくつかの実現例においては、プロセス200が含み得るステップはより多くてもまたはより少なくてもよく、ステップのうちのいくつかは複数のステップに分割することができる。たとえば、エンドポイントは、たとえば最大の許可遅延時間なしで、ステップ216および218を実行することなく、プロセス200を実行してもよい。これらの例においては、エンドポイントは、要求が応答されるまで、要求が応答されるべきでないことを示すメッセージをクライアントデバイスから受信するまで、またはこれらの両方になるまで、要求に応答すべきかどうかについての確率的判断を実行し続ける。いくつかの実現例においては、エンドポイントは、以下により詳細に記載されるプロセス300またはプロセス400をプロセス200の一部として実行してもよい。
いくつかの実現例においては、エンドポイントは、帯域幅調整システムから更新済みの帯域幅割当てを受信し得る。たとえば、エンドポイントは、第1の帯域幅割当てを受信し、結果としてエンドポイントが要求の応答を行なわなくなる第1の帯域幅割当てを用いて第1の確率的判断を実行し、次いで、帯域幅調整システムから第2の帯域幅割当てを受信し得る。エンドポイントは、第2の帯域幅割当て、たとえば、処理されるべきデータのサイズおよび特定のエンティティについてのトークンの発生量を用いて、要求に応答すべきかどうかについての第2の確率的判断を実行してもよい。
図3は、要求に応答すべきかどうかを判断するためのプロセス300を示すフロー図である。たとえば、プロセス300は、環境100からエンドポイントA106a〜B106bのうちの一方または両方によって使用され得る。
エンドポイントは、特定のエンティティについてのトークンの発生量が要求のために処理されるべきデータのサイズよりも小さいかどうかを判断する(302)。たとえば、エンドポイントは、特定のエンティティについての要求をクライアントデバイスから受信する。エンドポイントは、要求に応答するために読出されるかまたは書込まれるべきデータのサイズを決定する。エンドポイントは、読出されるかまたは書込まれるべきデータのサイズを特定のエンティティについてのトークンバケットにおけるトークンの発生量と比較する。
特定のエンティティについてのトークンの発生量がデータのサイズ以上であると判断したことに応じて、エンドポイントは要求に応答する(304)。たとえば、エンドポイントは、読出し要求について要求されたデータを検索し、クライアントデバイスにデータを与える。いくつかの例においては、エンドポイントはクライアントデバイスから受信したデータをデータストレージに書込む。エンドポイントは、帯域幅調整システムに帯域幅割当てを要求することなく要求に応答する。なぜなら、トークンの発生量が、要求について処理されるべきデータのサイズ以上であるからである。
特定のエンティティについてのトークンの発生量がデータのサイズ未満であると判断したことに応じて、エンドポイントは、帯域幅割当て要求を帯域幅調整システムに提供する(306)。たとえば、エンドポイントは、要求が直ちに応答されるべきでないと判断し、要求に応答すべきかどうかを確率的に判断する。
いくつかの実現例においては、プロセス300が含み得るステップはより多くてもまたはより少なくてもよく、ステップのうちのいくつかは複数のステップに分割することができる。たとえば、エンドポイントは、プロセス300を上述のプロセス200におけるステップ206の一部として実行してもよい。
図4は、トークンの量をインクリメントするためのプロセス400のフロー図である。たとえば、プロセス400は、環境100からエンドポイントA106a〜B106bのうちの一方または両方によって使用され得る。
エンドポイントは、特定のエンティティについてのトークンの発生量が負の値であるかどうかを判断する(402)。たとえば、特定のエンティティについて(たとえば、特定のクライアントデバイスまたは特定のユーザについて)の要求に応答した後、エンドポイントは、特定のエンティティについてのトークンバケットにおけるトークンの発生量が負であると判断する。
エンドポイントは、特定のエンティティおよびトークンの発生量を示す帯域幅割当て要求を帯域幅調整システムに提供する(404)。たとえば、エンドポイントは、特定のエンティティおよびトークンの負の量についての識別を帯域幅調整システムに提供する。エンドポイントは、当該エンドポイントが特定のエンティティについての未決着の要求を有するかどうかに関わらず、帯域幅調整システムに帯域幅割当て要求を与え得る。
エンドポイントは、特定のエンティティについての帯域幅割当てを帯域幅調整システムから受信する(406)。たとえば、帯域幅調整システムは、特定のエンティティのためのエンドポイントからの帯域幅割当て要求を、他のエンドポイントから受信された特定のエンティティについての他の帯域幅割当て要求とともに用いて、特定のエンティティについての帯域幅割当てを決定する。帯域幅調整システムは、特定のエンティティについての異なる帯域幅割当て、または同じ帯域幅割当てをエンドポイントの各々に送信してもよい。
エンドポイントは、トークンの発生量を帯域幅割当ての量だけインクリメントする(408)。たとえば、エンドポイントは、特定のエンティティについてのトークンバケットにおけるトークンの発生量を、帯域幅調整システムから受信した帯域幅割当てにおいて示される量だけインクリメントする。特定のエンティティについての更新済みの帯域幅割当てが受信されるまで、トークンの発生量がもはや負でなくなるまで、またはこれらの両方になるまで、エンドポイントは、各々の時間間隔ごとに(たとえば、1秒の時間間隔ごとに)1回、特定のエンティティについてのトークンバケットにおけるトークンの発生量をインクリメントしてもよい。エンドポイントが特定のエンティティについての更新済みの帯域幅割当てを受信する場合、エンドポイントは更新済みの帯域幅割当てを用いてステップ408を実行する。
いくつかの実現例においては、プロセス400が含み得るステップはより多くてもまたはより少なくてもよく、ステップのうちのいくつかは複数のステップに分割することができる。たとえば、エンドポイントはプロセス200を実行した後にプロセス400を実行してもよく、またはプロセス400だけを実行してもよい。
オプションの実現例の詳細
いくつかの実現例においては、グローバル帯域幅調整装置は、周期的に(たとえば、1秒に1回)エンドポイントと通信する。グローバル帯域幅調整装置は、ベストエフォート方式でエンドポイントと通信してもよい。
いくつかの実現例においては、クライアントデバイスについての負債の量が、クライアントデバイスのためのトークンバケットからクライアントデバイスについての要求の応答時に処理されるべきバイト数を差引いた後に負債のしきい値量を上回る可能性がある場合、エンドポイントは、要求に応答すべきでないと判断する。たとえば、エンドポイントは、確率的判断を実行せずに、要求が応答されないだろうことを示すメッセージをクライアントデバイスに送信する。これらの例においては、エンドポイントは、要求が確率的判断を実行する前に応答された場合に発生した負債の量を判断し、さらに、負債の量が負債のしきい値量を満たさない(たとえば、負債のしきい値量以上である)と判断したことに応じて確率的判断を実行する。
いくつかの例においては、負債のしきい値量(たとえば最大の負債しきい値)は負の負債値であるかもしれない。データストレージシステムは、データストレージシステムにデータを要求するエンティティのために滑らかな帯域割当ての体感(smooth throttling experience)を提供するために、最大の負債しきい値を選択してもよい。たとえば、しきい値量は−1MBであってもよい。要求に応答することによって発生することとなる負債の量がしきい値量未満であるとエンドポイントが判断する場合、当該エンドポイントは要求に応答しない。
いくつかの実現例においては、エンドポイントは、特定のクライアントデバイスからの複数の要求、特定のエンティティについての複数の要求、またはこれら両方を受信してもよい。これらの実現例においては、エンドポイントは、特定のクライアントデバイスまたは特定のエンティティについてのデマンドを、要求の各々に応答するために処理されるべきデータのサイズの合計として決定する。
いくつかの実現例においては、エンドポイントはトークンバケットを0にリセットしてもよい。たとえば、エンドポイントは、エンドポイントが特定のエンティティについての要求を受信してから、特定のエンティティについての要求に応答してから、または、たとえば要求が応答されないだろうことを示すメッセージを特定のエンティティに送信してから、予め定められた期間が経過した後に特定のエンティティについてのトークンバケットをゼロにリセットしてもよい。エンドポイントは、バケットが正の数のトークンまたは負の数のトークンを有している場合、トークンバケットをリセットし得る。いくつかの例においては、エンドポイントは、メモリ使用量(たとえば、トークンバケットを維持するのに必要なメモリ)を減らすようにトークンバケットをリセットしてもよい。
いくつかの実現例においては、データストレージシステムは、要求に応答すべきか否かを判断するために毎秒ごとに別のリソース単位を用いてもよい。たとえば、データストレージシステムは、毎秒当たりの要求を用いて、特定のエンティティについての要求に応答すべきかどうかを確率的に判断する。この例においては、各々のエンドポイントは、たとえば特定の期間中に各々のエンティティから受信された要求の数または応答されなかった要求の数を決定し、要求の数を示す割当て要求をグローバル帯域幅調整装置に送信する。この実現例においては、割当ては、毎秒当たりの要求を指定する値に関連しており、トークンバケットについての値は要求の量で測定される。グローバル帯域幅調整装置は、特定のエンティティに関して、特定のエンティティについての要求を受信したエンドポイントの各々についての要求および割当ての数を決定する。特定のエンティティについての、特定の期間中に受信されたかまたは応答されなかった要求を伴うエンドポイントは、グローバル帯域幅調整装置から割当てを受信し、式(1)を用いることにより、Asgnをグローバル帯域幅調整装置から受信された割当てとして用いるとともに、Debtを、要求が許可される場合に作成され得る負債の量として(たとえば要求の量で)用いて、特定のエンドポイントについての特定の要求に応答すべきかどうかを確率的に判断する。
たとえば、エンドポイントは、特定のエンティティについての2つの要求を受信してもよく、たとえば、同じ期間中に両方の要求を受信してもよく、または、応答されていない第1の要求を第1の期間中に、かつ、第2の要求を第1の期間の後に続く第2の期間中に受信してもよい。エンドポイントは、エンドポイントが2つの要求を有することを示す割当て要求をグローバル帯域幅調整装置に送信する。
要求のうちの18個が他のエンドポイントから受信される場合、グローバル帯域幅調整装置は、特定のエンティティについての要求の最大数(たとえば、1秒ごとに1つの要求)と、特定のエンティティについて受信された要求の総数(たとえば20)とを決定する。グローバル帯域幅調整装置は、エンドポイントの各々についての割当てを決定する。たとえば、グローバル帯域幅調整装置は、すべての要求ごとに1/20=0.05要求/秒(requests per second:QPS)の割当てを決定し得るとともに、エンドポイントについての割当てが、エンドポイントが2つの要求を受信してから0.1要求/秒となるはずであると判断し得る。グローバル帯域幅調整装置は、特定のエンティティについての要求を受信した他のエンドポイントについての他の割当てを決定する。
エンドポイントは、グローバル帯域幅調整装置から0.1要求/秒の割当てを受信し、2つの要求の各々ごとに、要求を許可すべきかどうかを確率的に判断する。要求の各々が1のサイズを有している(たとえば、1つの要求である)ので、要求が応答された場合に作成され得る負債の総量は、最初のうちは、要求のうちの1つが応答されるまで両方の要求に対して同じとなる。たとえば、特定のエンティティのためのエンドポイントのトークンバケットがゼロである場合、要求の両方についてのDebtの値は1になるだろう。
この例においては、エンドポイントは、第1の要求についてAdmProb(要求の各々が応答される許可確率)を決定し、次いで、AdmProbを用いて、第1の要求に応答すべきかどうかを確率的に判断する。第1の要求が応答されるべきであるとエンドポイントが判断する場合、当該エンドポイントは要求を許可し、特定のエンティティについてのトークンバケットを更新する。次いで、エンドポイントは、第2の要求についてDebtの更新済み値を決定し得る。エンドポイントは、Debtの更新済み値が負債限度を上回っているかどうかを判断し得るとともに、上回っているのであれば、第2の要求が許可されないだろうと判断し得る。Debtの更新済み値が負債限度を上回っていない場合、エンドポイントはAdmProbについての更新済み値を決定し、第2の要求に応答すべきかどうかを確率的に判断し得る。
第1の要求に応答すべきでないとエンドポイントが確率的に判断すると、当該エンドポイントは、第2の要求に応答すべきかどうかを確率的に判断する際に第1の要求について決定されたAdmProbについての値を用いてもよい。たとえば、第2の要求に応答することによって作成され得る負債の総量は、第1の要求に応答することによって作成され得る負債の総量と同じであり、特定のエンティティについての割当てが同じとなる。
付加的な実現例の詳細
本明細書に記載されている主題および機能的動作の実施形態は、デジタル電子回路で実現されてもよく、有形的に具体化されたコンピュータソフトウェアもしくはファームウェアで実現されてもよく、本明細書に開示されている構造およびそれらの構造的等価物を含むコンピュータハードウェアで実現されてもよく、またはそれらのうちの1つ以上の組合せで実現されてもよい。本明細書中に記載される主題の実施形態は、1つ以上のコンピュータプログラムとして、すなわちデータ処理装置による実行のために、またはデータ処理装置のオペレーションを制御するために有形の非一時的なプログラムキャリア上で符号化されるコンピュータプログラム命令の1つ以上のモジュールとして実現されてもよい。代替的または付加的には、プログラム命令は、データ処理装置によって実行されるように好適な受信機装置に送信される情報を符号化するために生成される人為的に生成された伝搬信号(たとえば機械によって生成された電気信号、光学信号または電磁気信号)で符号化することができる。コンピュータ記憶媒体は、マシン読取可能なストレージデバイス、マシン読取可能な記憶基板、ランダムもしくはシリアルアクセスメモリデバイス、またはこれらのうちの1つ以上の組合せであってもよい。
「データ処理装置」という語は、データを処理するためのあらゆる種類の装置、デバイスおよびマシンを包含し、一例として、プログラム可能なプロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含む。装置はまた、専用論理回路類、たとえばフィールドプログラマブルゲートアレイ(field programmable gate array:FPGA)、特定用途向け集積回路(application-specific integrated circuit:ASIC)であってもよく、またはこれらをさらに含み得る。装置は、任意には、ハードウェアに加えて、コンピュータプログラムのための実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステムまたはこれらのうち1つ以上の組合せを構成するコード、を含み得る。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、モジュール、ソフトウェアモジュール、スクリプトまたはコードとも称され得るかまたは記載され得る)は、コンパイラ型言語もしくはインタープリタ型言語または宣言型言語もしくは手続き型言語を含む任意の形態のプログラミング言語で書込まれてもよく、スタンドアロンのプログラムとして、またはコンピューティング環境での使用に適したモジュール、コンポーネント、サブルーチンまたは他のユニットとして任意の形態で展開されてもよい。コンピュータプログラムは、ファイルシステム内のファイルに対応していてもよいが、必ずしも対応している必要はない。プログラムは、他のプログラムもしくはデータ(たとえばマークアップ言語文書に格納された1つ以上のスクリプト)を保持するファイルの一部に格納されてもよく、当該プログラムに専用の単一のファイルに格納されてもよく、または複数の調整されたファイル(たとえば1つ以上のモジュール、サブプログラム、またはコードの一部を格納するファイル)に格納されてもよい。コンピュータプログラムは、1つのコンピュータ上で、または、一箇所に位置するかもしくは複数の箇所にまたがって分散されて通信ネットワークによって相互接続されている複数のコンピュータ上で実行されるように展開されてもよい。
本明細書中に記載されているプロセスおよび論理フローは、入力データ上で動作して出力を生成することによって機能を実行するように1つ以上のコンピュータプログラムを実行する1つ以上のプログラム可能なプロセッサによって実行され得る。また、プロセスおよび論理フローは、特殊用途論理回路、たとえばFPGA(フィールド・プログラマブル・ゲート・アレイ)またはASIC(特殊用途向け集積回路)によって実行されてもよく、装置も、特殊用途論理回路、たとえばFPGAまたはASICとして実現されてもよい。
コンピュータプログラムの実行に適したコンピュータは、一例として、汎用マイクロプロセッサ、特殊用途マイクロプロセッサもしくはこれら両方を含むか、または、他の任意の種類の中央処理装置を含む。概して、中央処理装置は、リードオンリメモリまたはランダムアクセスメモリまたはそれら両方から命令およびデータを受信するであろう。コンピュータの必須の要素は、命令を実行または実現するための中央処理装置と、命令およびデータを格納するための1つ以上のメモリデバイスとである。一般に、コンピュータは、データを格納するための1つ以上の大容量記憶装置、たとえば磁気ディスク、光磁気ディスクまたは光ディスクも含み、または、当該1つ以上の大容量記憶装置からデータを受信するもしくは当該1つ以上の大容量記憶装置にデータを転送するように、もしくは受信も転送も行なうように動作可能に結合されるであろう。しかし、コンピュータは、このようなデバイスを有する必要はない。さらに、コンピュータは、別のデバイス、たとえば数例を挙げると、携帯電話、パーソナルデジタルアシスタント(personal digital assistant:PDA)、携帯型オーディオまたはビデオプレーヤ、ゲームコンソール、グローバル・ポジショニング・システム(Global Positioning System:GPS)受信機、またはポータブルストレージデバイス(たとえばユニバーサル・シリアル・バス(universal serial bus:USB)フラッシュドライブ)に組込まれてもよい。
コンピュータプログラム命令およびデータを格納するのに適したコンピュータ読取可能な媒体は、すべての形態の不揮発性メモリ、媒体およびメモリデバイスを含み、一例としてたとえばEPROM、EEPROMおよびフラッシュメモリデバイスといった半導体メモリデバイス、たとえば内蔵ハードディスクまたは取外し可能なディスクといった磁気ディスク、光磁気ディスク、ならびにCD−ROMディスクおよびDVD−ROMディスクを含む。プロセッサおよびメモリは、特殊用途論理回路によって補完されてもよく、または特殊用途論理回路に組込まれてもよい。
ユーザとの対話を提供するために、この明細書中に記載される主題の実施形態は、情報をユーザに表示するための表示装置、たとえば陰極線管(cathode ray tube:CRT)、液晶表示(liquid crystal display:LCD)モニタと、ユーザがコンピュータに入力することを可能にするキーボードおよびポインティングデバイス、たとえばマウスまたはトラックボールとを有するコンピュータ上で実現され得る。ユーザとの対話を提供するために他の種類のデバイスが使用されてもよく、たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、たとえば視覚フィードバック、聴覚フィードバックまたは触覚フィードバックであってもよく、ユーザからの入力は、音響入力、音声入力または触知入力を含む任意の形態で受信されてもよい。また、コンピュータは、ユーザによって使用されるデバイスに文書を送り、ユーザによって使用されるデバイスから文書を受信することによって、たとえばウェブブラウザから受信された要求に応答してユーザのデバイス上でウェブブラウザにウェブページを送ることによって、ユーザと対話し得る。
この明細書中に記載される主題の実施形態は、たとえばデータサーバとしてのバックエンドコンポーネントを含むコンピューティングシステムにおいて実現されてもよく、またはミドルウェアコンポーネント、たとえばアプリケーションサーバを含むコンピューティングシステムにおいて実現されてもよく、またはフロントエンドコンポーネント、たとえばユーザが本明細書に記載されている主題の実現例と対話できるようにするグラフィカルユーザインターフェイスもしくはウェブブラウザを有するクライアントコンピュータを含むコンピューティングシステムにおいて実現されてもよく、または1つ以上のこのようなバックエンド、ミドルウェアもしくはフロントエンドコンポーネントの任意の組合せにおいて実現されてもよい。システムの構成要素は、デジタルデータ通信の任意の形態または媒体、たとえば通信ネットワークによって相互接続され得る。通信ネットワークの例としては、ローカルエリアネットワーク(local area network:LAN)およびワイドエリアネットワーク(wide area network:WAN)、たとえばインターネットが挙げられる。
コンピューティングシステムは、クライアントおよびサーバを含み得る。クライアントおよびサーバは、一般に互いから離れており、典型的には通信ネットワークを介して対話する。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行されて互いに対してクライアント−サーバ関係を有するコンピュータプログラムによって生じる。いくつかの実現例では、サーバは、たとえば、クライアントとして機能するユーザデバイスと対話するユーザにデータを表示して、ユーザデバイスと対話するユーザからユーザ入力を受信する目的で、データ(たとえばHTMLページ)をユーザデバイスに送信する。ユーザデバイスにおいて生成されたデータ(たとえばユーザ対話の結果)は、サーバにおけるユーザデバイスから受信され得る。
1つのこのようなタイプのコンピュータの一例が、一般的なコンピュータシステム500の概略図を示す図5に示される。システム500は、一実現例に従った、上述の、コンピュータによって実現される方法のいずれかに関連付けて記載された動作のために用いることができる。システム500は、プロセッサ510、メモリ520、ストレージデバイス530および入出力デバイス540を含む。構成要素510、520、530および540の各々はシステムバス550を用いて相互接続される。プロセッサ510は、システム500内で実行されるべき命令を処理することができる。一実現例においては、プロセッサ510はシングルスレット型プロセッサである。別の実現例においては、プロセッサ510はマルチスレッド型プロセッサである。プロセッサ510は、入出力デバイス540上にユーザインターフェイスについての図形情報を表示するためにメモリ520内またはストレージデバイス530上に格納された命令を処理することができる。
メモリ520は、システム500内に情報を格納する。一実現例においては、メモリ520はコンピュータ読取り可能媒体である。一実現例においては、メモリ520は揮発性メモリユニットである。別の実現例においては、メモリ520は不揮発性メモリユニットである。
ストレージデバイス530はシステム500のために大容量記憶装置を提供することができる。一実現例においては、ストレージデバイス530はコンピュータ読取り可能媒体である。さまざまな異なる実現例においては、ストレージデバイス530は、フロッピーディスクデバイス、ハードディスクデバイス、光ディスクデバイスまたはテープデバイスであってもよい。
入出力デバイス540はシステム500のために入出力操作を与える。一実現例においては、入出力デバイス540はキーボードおよび/またはポインティングデバイスを含む。別の実現例においては、入出力デバイス540はグラフィカルユーザインターフェイスを表示するためのディスプレイユニットを含む。
本明細書は多くの具体的な実現例の詳細を含んでいるが、これらは、クレームされ得るものの範囲を限定するものとして解釈されるべきではなく、むしろ特定の実施形態に特有となり得る特徴の説明であると解釈されるべきである。別々の実施形態の文脈において本明細書に記載されている特定の特徴は、単一の実施形態において組合せて実現されてもよい。逆に、単一の実施形態の文脈において記載されているさまざまな特徴は、複数の実施形態において別々に、または任意の好適なサブコンビネーションで実現されてもよい。さらに、特徴は特定の組合せで作用するものとして上述され得るとともに、さらにはそのようなものとして最初にクレームされ得るが、クレームされている組合せからの1つ以上の特徴は、場合によっては、当該組合せから削除されてもよく、クレームされている組合せは、サブコンビネーションまたはサブコンビネーションの変形例に向けられてもよい。
同様に、動作は特定の順序で図面に示されているが、これは、このような動作が、望ましい結果を達成するために、示されている特定の順序もしくはシーケンシャルな順序で実行されなければならないと理解されるべきではなく、または、望ましい結果を達成するために、すべての示されている動作が実行されなければならないと理解されるべきではない。特定の状況では、マルチタスクおよび並列処理が有利である場合がある。さらに、上述の実施形態におけるさまざまなシステムモジュールおよび構成要素の分離は、すべての実施形態においてこのような分離が必要であると理解されるべきではなく、記載されているプログラム構成要素およびシステムが、一般に単一のソフトウェア製品に一体化されてもよく、または複数のソフトウェア製品にパッケージングされてもよいことが理解されるべきである。
主題の特定の実施形態が説明されてきた。他の実施形態は添付の特許請求の範囲内である。たとえば、特許請求の範囲に記載されている動作は、異なる順序で実行されて、依然として望ましい結果を達成することができる。一例として、添付の図面に示されているプロセスは、所望の結果を達成するために、必ずしも、図示される特定の順序または連続的順序を必要とするものではない。場合によっては、マルチタスクおよび並列処理が有利であるかもしれない。
さらなる実現例が以下の例において要約される。
例1:システムであって、データ処理装置と、当該データ処理装置とデータ通信する非一時的なコンピュータ読取り可能記憶媒体とを含み、当該非一時的なコンピュータ読取り可能記憶媒体は、当該データ処理装置によって実行可能な命令を格納しており、当該命令は、実行されると、当該データ処理装置に以下の動作を実行させ、当該以下の動作は、データを処理するようにとの複数の要求の各々ごとに、データを処理するようにとの要求を特定のエンティティのためのクライアントデバイスから受信する動作と、当該要求に応答するためのサイズを決定する動作と、データを処理するようにとの当該複数の要求のセットであって、データを処理するようにとの少なくとも2つ以上の要求を含む当該セットにおける各々の要求であって、当該複数の要求のセットにおける各々の要求は2つ以上のエンティティを含むエンティティのセットにおける1エンティティに対応しており、当該各々の要求ごとに、当該特定のエンティティと当該要求に応答するための当該サイズとを示す帯域幅要求を帯域幅調整システムに提供する動作と、当該要求に応答する際に用いるべき当該特定のエンティティについての割当てを当該帯域幅調整システムから受信する動作と、当該割当て、当該要求に応答するための当該サイズ、および、当該データ処理装置上の当該特定のエンティティについてのトークンの発生量に基づいて、その時点で当該要求に応答すべきかどうかを確率的に判断する動作と、セットのうちの要求の第1のサブセットについて、その時点で当該要求に応答すべきと確率的に判断したことに応じて、当該要求に応答する動作と、セットのうちの要求の第2のサブセットについて、その時点で当該要求に応答すべきでないと確率的に判断したことに応じて、予め定められた期間が経過したかどうかを判断する動作と、当該予め定められた期間が経過したとの判断に応じて、当該要求が応答されないだろうことを示すメッセージを当該クライアントデバイスに送信する動作、または、当該予め定められた期間がまだ経過していないとの判断に応じて、当該トークンの発生量を当該割当ての量だけインクリメントする動作と、その時点で当該要求に応答すべきであるかどうかについての確率的判断を再判断する動作とを含む。
例2:例1のシステムであって、その時点で当該要求に応答すべきかどうかを確率的に判断する動作は、当該割当て、当該要求に応答するための当該サイズ、当該データ処理装置上の当該特定のエンティティについての当該トークンの発生量、当該データ処理装置についての最大の許可遅延時間、および平均的な帯域幅調整遅延時間に基づいて、その時点で当該要求に応答すべきかどうかを確率的に判断する動作を含む。
例3:例1または例2のシステムであって、その時点で当該要求に応答すべきかどうかを確率的に判断する動作は、当該割当て、当該要求に応答するための当該サイズ、および、当該データ処理装置上の当該特定のエンティティについての当該トークンの発生量を用いて、当該要求に応答する確率を決定する動作と、乱数を生成する動作と、当該乱数を当該確率と比較して、当該乱数が当該確率よりも大きいかどうかを判断する動作と、当該乱数が当該確率以下であるとの判断に応じて、その時点で当該要求に応答すべきであると判断する動作、または、当該乱数が当該確率よりも大きいとの判断に応じて、その時点で当該要求に応答すべきでないと判断する動作とを含み得る。
例4:例1から例3のいずれか1つのシステムであって、当該動作は、複数の要求のデータとは異なるデータを処理するようにとの当該複数の要求の第2のセットであって、データを処理するようにとの少なくとも1つ以上の要求を含む当該第2のセットにおける各々の要求ごとに、当該データ処理装置上の当該特定のエンティティについての当該トークンの発生量が当該要求に応答するための当該サイズ未満であるかどうかを判断する動作と、当該データ処理装置上の当該特定のエンティティについての当該トークンの発生量が当該要求に応答するための当該サイズ以上であると判断したことに応じて、当該要求に応答する動作とを含み、当該特定のエンティティと当該要求に応答するための当該サイズとを示す当該割当て要求を当該帯域幅調整システムに提供する動作は、当該データ処理装置上の当該特定のエンティティについての当該トークンの発生量が当該要求に応答するための当該サイズ未満であると判断したことに応じて、行なわれる。
例5:例4のシステムであって、その時点で当該要求に応答すべきであるかどうかについての確率的判断を再判断する動作は、当該データ処理装置上の当該特定のエンティティについての当該トークンの発生量が当該要求に応答するための当該サイズ未満であるかどうかを判断する動作と、当該データ処理装置上の当該特定のエンティティについての当該トークンの発生量が当該要求に応答するための当該サイズ以上であると判断したことに応じて、当該要求に応答する動作、または、当該データ処理装置上の当該特定のエンティティについての当該トークンの発生量が当該要求に応答するための当該サイズ未満であると判断したことに応じて、その時点で当該要求に応答すべきであるかどうかについての当該確率的判断を実行する動作とを含む。
例6:例1から例5のいずれか1つのシステムであって、当該動作は、当該トークンの発生量が負の値であるかどうかを判断する動作と、当該特定のエンティティと当該トークンの発生量とを示す更新済みの割当て要求を当該帯域幅調整システムに提供する動作と、更新済みの割当てを当該帯域幅調整システムから受信する動作と、当該トークンの発生量を当該更新済みの割当ての量だけインクリメントする動作とを含む。
例7:例1から例6のいずれか1つのシステムであって、当該要求に応答する動作は、当該要求に応答するための当該サイズを当該トークンの発生量から差引く動作を含む。
例8:例1から例7のいずれか1つのシステムであって、当該要求に応答する動作は、当該トークンの発生量と当該要求に応答するための当該サイズとの間の差を示す負債値を決定する動作と、当該負債値が負債限度を上回っているかどうかを判断する動作と、当該負債値が当該負債限度を上回っていないと判断したことに応じて当該要求に応答する動作とを含む。
例9:例1から例8のいずれか1つのシステムであって、当該データ処理装置は、クラウドコンピューティングシステムにおけるエンドポイントの一部を含む。
例10:例1から例9のいずれか1つのシステムであって、当該帯域幅調整システムを含む。
例11:例1から例10のいずれか1つのシステムであって、当該データ処理装置は、各々が当該帯域幅調整システムに割当て要求を送信する複数のデバイスのグループにおける1のデバイスを含み、当該要求に応答する際に用いるべき当該特定のエンティティについての当該割当てを当該帯域幅調整システムから受信する動作は、当該複数のデバイスのグループにおける各々のデバイスから当該帯域幅調整システムによって受信された、当該特定のエンティティについての当該割当て要求を用いて決定された割当てを受信する動作を含む。
例12:例11のシステムであって、当該複数のデバイスのグループにおける当該デバイスの各々に送信された当該特定のエンティティについての当該割当て要求の各々の合計は、当該特定のエンティティについてのバジェットと等しくなる。
例13:例1から例12のいずれか1つのシステムであって、当該動作は、更新済みの割当てを受信する動作を含み、その時点で当該要求に応答すべきかどうかについての当該確率的判断を再判断する動作は、当該更新済みの割当て、当該要求に応答するための当該サイズ、および、当該データ処理装置上の当該特定のエンティティについての当該トークンの発生量を用いて、その時点で当該要求に応答すべきかどうかを確率的に判断する動作を含む。
例14:例1から例13のいずれか1つのシステムであって、当該特定のエンティティについてのデータを処理するようにとの当該要求を受信する動作は、読出し要求または書込み要求のうちの1つを受信する動作を含む。
例15:例1から例14のいずれか1つのシステムであって、当該特定のエンティティについてのデータを処理するようにとの当該要求を受信する動作は、特定のユーザについての要求を受信する動作を含む。
例16:例1から例15のいずれか1つのシステムであって、当該特定のエンティティについてのデータを処理するようにとの当該要求を受信する動作は、特定の企業についての要求を受信する動作を含む。
例17:例1から例16のいずれか1つのシステムであって、当該要求に応答する動作は、当該要求に対する応答を決定する動作と、当該クライアントデバイスに当該応答を提供する動作とを含む。
例18:例1から例17のいずれか1つのシステムであって、その時点で当該要求に応答すべきであるかどうかについての当該確率的判断を再判断する動作は、当該予め定められた期間が経過するまで、その時点で当該要求に応答すべきかどうかについての当該確率的判断を再判断する動作を含む。
例19:例1から例18のいずれか1つのシステムであって、当該複数の要求のセットは、当該複数の要求内の当該要求の各々を含む。
例20:例1から例19のいずれか1つのシステムであって、当該要求に応答するための当該サイズを決定する動作は、当該要求に応答する際に処理されるべきデータのサイズを決定する動作を含み、当該特定のエンティティと当該要求に応答するための当該サイズとを示す当該割当て要求を当該帯域幅調整システムに提供する動作は、当該特定のエンティティと当該要求に応答する際に処理されるべきデータの当該サイズとを示す帯域幅割当て要求を当該帯域幅調整システムに提供する動作を含み、当該要求に応答する際に用いるべき当該特定のエンティティについての当該割当てを当該帯域幅調整システムから受信する動作は、当該要求に応答する際に用いるべき当該特定のエンティティについての帯域幅割当てを当該帯域幅調整システムから受信する動作を含み、当該割当て、当該要求に応答するための当該サイズ、および、当該データ処理装置上の当該特定のエンティティについての当該トークンの発生量に基づいて、その時点で当該要求に応答すべきかどうかを確率的に判断する動作は、当該帯域幅割当て、処理されるべき当該データの当該サイズ、および、当該データ処理装置上の当該特定のエンティティについての当該トークンの発生量に基づいて、その時点で当該要求に応答すべきかどうかを確率的に判断する動作を含む。
例21:例1から例20のいずれか1つのシステムであって、当該要求に応答するための当該サイズを決定する動作は、当該特定のエンティティのために当該データ処理装置を含むエンドポイントによって処理されるべき要求の量を決定する動作を含み、当該特定のエンティティと当該要求に応答するための当該サイズとを示す当該割当て要求を当該帯域幅調整システムに提供する動作は、当該特定のエンティティと、当該特定のエンティティのために当該エンドポイントによって処理されるべき当該要求の量とを示す割当て要求を当該帯域幅調整システムに提供する動作を含み、当該割当て、当該要求に応答するための当該サイズ、および、当該データ処理装置上の当該特定のエンティティについての当該トークンの発生量に基づいて、その時点で当該要求に応答すべきかどうかを確率的に判断する動作は、当該割当て、応答されるべき当該要求についての1の値、および、当該データ処理装置上の当該特定のエンティティについての当該トークンの発生量に基づいて、その時点で当該要求に応答すべきかどうかを確率的に判断する動作を含む。
例22:データ処理装置によって実行可能な命令を格納する非一時的なコンピュータ読取り可能記憶媒体であって、前記命令は、実行されると、当該データ処理装置に以下の動作を実行させる。当該以下の動作は、データを処理するようにとの複数の要求の各々ごとに、データを処理するようにとの当該要求を特定のエンティティのためのクライアントデバイスから受信する動作と、当該要求に応答する際に処理されるべきデータのサイズを決定する動作と、データを処理するようにとの当該複数の要求のセットであって、データを処理するようにとの少なくとも2つ以上の要求を含む当該セットにおける各々の要求であって、当該複数の要求のセットにおける各々の要求は2つ以上のエンティティを含むエンティティのセットにおける1エンティティに対応しており、当該各々の要求ごとに、当該特定のエンティティと当該要求に応答する際に処理されるべきデータの当該サイズとを示す帯域幅割当て要求を帯域幅調整システムに提供する動作と、当該要求に応答する際に用いるべき当該特定のエンティティについての帯域幅割当てを当該帯域幅調整システムから受信する動作と、当該帯域幅割当て、処理されるべき当該データの当該サイズ、および、当該データ処理装置上の当該特定のエンティティについての当該トークンの発生量に基づいて、その時点で当該要求に応答すべきかどうかを確率的に判断する動作と、セットのうちの要求の第1のサブセットについて、その時点で当該要求に応答すべきと確率的に判断したことに応じて、当該要求に応答する動作と、セットのうちの要求の第2のサブセットについて、その時点で当該要求に応答すべきでないと確率的に判断したことに応じて、予め定められた期間が経過したかどうかを判断する動作と、当該予め定められた期間が経過したとの判断に応じて、当該要求が応答されないだろうことを示すメッセージを当該クライアントデバイスに送信する動作、または、当該予め定められた期間がまだ経過していないとの判断に応じて、当該トークンの発生量を当該帯域幅割当ての量だけインクリメントする動作と、その時点で当該要求に応答すべきであるかどうかについての当該確率的判断を再判断する動作とを含む。
例23:コンピュータによって実現される方法であって、データを処理するようにとの複数の要求の各々ごとに、データを処理するようにとの当該要求を、特定のエンティティのためのクライアントデバイスから、エンドポイントによって受信するステップと、当該特定のエンティティのために当該エンドポイントによって処理されるべき要求の量を決定するステップと、データを処理するようにとの当該複数の要求のセットであって、データを処理するようにとの少なくとも2つ以上の要求を含む当該セットにおける各々の要求であって、当該複数の要求のセットにおける各々の要求は2つ以上のエンティティを含むエンティティのセットにおける1エンティティに対応しており、当該各々の要求ごとに、当該特定のエンティティと、当該特定のエンティティのために当該エンドポイントによって処理されるべき当該要求の量とを示す割当て要求を当該帯域幅調整システムに提供するステップと、当該要求に応答する際に用いるべき当該特定のエンティティについての割当てを当該帯域幅調整システムから受信するステップと、当該割当て、応答されるべき当該要求についての1の値、および、当該データ処理装置上の当該特定のエンティティについてのトークンの発生量に基づいて、その時点で当該要求に応答すべきかどうかを確率的に判断するステップと、セットのうちの要求の第1のサブセットについて、その時点で当該要求に応答すべきと確率的に判断したことに応じて、当該要求に応答するステップと、セットのうちの要求の第2のサブセットについて、その時点で当該要求に応答すべきでないと確率的に判断したことに応じて、予め定められた期間が経過したかどうかを判断するステップと、当該予め定められた期間が経過したとの判断に応じて、当該要求が応答されないだろうことを示すメッセージを当該クライアントデバイスに送信するステップ、または、当該予め定められた期間がまだ経過していないとの判断に応じて、当該トークンの発生量を当該割当ての量だけインクリメントするステップと、その時点で当該要求に応答すべきであるかどうかについての当該確率的判断を再判断するステップとを含む。

Claims (23)

  1. システムであって、
    データ処理装置と、
    前記データ処理装置とデータ通信する非一時的なコンピュータ読取り可能記憶媒体とを含み、前記非一時的なコンピュータ読取り可能記憶媒体は、前記データ処理装置によって実行可能な命令を格納しており、前記命令は、実行されると、前記データ処理装置に以下の動作を実行させ、前記以下の動作は、
    データを処理するようにとの複数の要求の各々ごとに、
    データを処理するようにとの前記要求を特定のエンティティのためのクライアントデバイスから受信する動作と、
    前記要求に応答するためのサイズを決定する動作と、
    データを処理するようにとの前記複数の要求のセットであって、データを処理するようにとの少なくとも2つ以上の要求を含む前記セットにおける各々の要求であって、前記複数の要求のセットにおける各々の要求は2つ以上のエンティティを含むエンティティのセットにおける1エンティティに対応しており、前記各々の要求ごとに、
    前記特定のエンティティと前記要求に応答するための前記サイズとを示す割当て要求を帯域幅調整システムに提供する動作と、
    前記要求に応答する際に用いるべき前記特定のエンティティについての割当てを前記帯域幅調整システムから受信する動作と、
    前記割当て、前記要求に応答するための前記サイズ、および、前記データ処理装置上の前記特定のエンティティについてのトークンの発生量に基づいて、その時点で前記要求に応答すべきかどうかを確率的に判断する動作と、
    セットのうちの要求の第1のサブセットについて、その時点で前記要求に応答すべきと確率的に判断したことに応じて、
    前記要求に応答する動作と、
    セットのうちの要求の第2のサブセットについて、その時点で前記要求に応答すべきでないと確率的に判断したことに応じて、
    予め定められた期間が経過したかどうかを判断する動作と、
    前記予め定められた期間が経過したとの判断に応じて、
    前記要求が応答されないだろうことを示すメッセージを前記クライアントデバイスに送信する動作、または、
    前記予め定められた期間がまだ経過していないとの判断に応じて、
    前記トークンの発生量を前記割当ての量だけインクリメントする動作と、
    その時点で前記要求に応答すべきであるかどうかについての確率的判断を再判断する動作とを含む、システム。
  2. その時点で前記要求に応答すべきかどうかを確率的に判断する動作は、前記割当て、前記要求に応答するための前記サイズ、前記データ処理装置上の前記特定のエンティティについての前記トークンの発生量、前記データ処理装置についての最大の許可遅延時間、および平均的な帯域幅調整遅延時間に基づいて、その時点で前記要求に応答すべきかどうかを確率的に判断する動作を含む、請求項1に記載のシステム。
  3. その時点で前記要求に応答すべきかどうかを確率的に判断する動作は、
    前記割当て、前記要求に応答するための前記サイズ、および、前記データ処理装置上の前記特定のエンティティについての前記トークンの発生量を用いて、前記要求に応答する確率を決定する動作と、
    乱数を生成する動作と、
    前記乱数を前記確率と比較して、前記乱数が前記確率よりも大きいかどうかを判断する動作と、
    前記乱数が前記確率以下であるとの判断に応じて、その時点で前記要求に応答すべきであると判断する動作、または、
    前記乱数が前記確率よりも大きいとの判断に応じて、その時点で前記要求に応答すべきでないと判断する動作とを含む、請求項1に記載のシステム。
  4. 前記動作は、
    前記複数の要求のデータとは異なるデータを処理するようにとの前記複数の要求の第2のセットであって、データを処理するようにとの少なくとも1つ以上の要求を含む前記第2のセットにおける各々の要求ごとに、
    前記データ処理装置上の前記特定のエンティティについての前記トークンの発生量が前記要求に応答するための前記サイズ未満であるかどうかを判断する動作と、
    前記データ処理装置上の前記特定のエンティティについての前記トークンの発生量が前記要求に応答するための前記サイズ以上であると判断したことに応じて、前記要求に応答する動作とを含み、前記特定のエンティティと前記要求に応答するための前記サイズとを示す前記割当て要求を前記帯域幅調整システムに提供する動作は、前記データ処理装置上の前記特定のエンティティについての前記トークンの発生量が前記要求に応答するための前記サイズ未満であると判断したことに応じて行なわれる、請求項1に記載のシステム。
  5. その時点で前記要求に応答すべきであるかどうかについての確率的判断を再判断する動作は、
    前記データ処理装置上の前記特定のエンティティについての前記トークンの発生量が前記要求に応答するための前記サイズ未満であるかどうかを判断する動作と、
    前記データ処理装置上の前記特定のエンティティについての前記トークンの発生量が前記要求に応答するための前記サイズ以上であると判断したことに応じて、前記要求に応答する動作、または、
    前記データ処理装置上の前記特定のエンティティについての前記トークンの発生量が前記要求に応答するための前記サイズ未満であると判断したことに応じて、その時点で前記要求に応答すべきであるかどうかについての前記確率的判断を実行する動作とを含む、請求項4に記載のシステム。
  6. 前記動作は、
    前記トークンの発生量が負の値であるかどうかを判断する動作と、
    前記特定のエンティティと前記トークンの発生量とを示す更新済みの割当て要求を前記帯域幅調整システムに提供する動作と、
    更新済みの割当てを前記帯域幅調整システムから受信する動作と、
    前記トークンの発生量を前記更新済みの割当ての量だけインクリメントする動作とを含む、請求項1に記載のシステム。
  7. 前記要求に応答する動作は、前記要求に応答するための前記サイズを前記トークンの発生量から差引く動作を含む、請求項1に記載のシステム。
  8. 前記要求に応答する動作は、
    前記トークンの発生量と前記要求に応答するための前記サイズとの間の差を示す負債値を決定する動作と、
    前記負債値が負債限度を上回っているかどうかを判断する動作と、
    前記負債値が前記負債限度を上回っていないと判断したことに応じて前記要求に応答する動作とを含む、請求項1に記載のシステム。
  9. 前記データ処理装置は、クラウドコンピューティングシステムにおけるエンドポイントの一部を含む、請求項1に記載のシステム。
  10. 前記帯域幅調整システムを含む、請求項1に記載のシステム。
  11. 前記データ処理装置は、各々が前記帯域幅調整システムに割当て要求を送信する複数のデバイスのグループにおける1のデバイスを含み、
    前記要求に応答する際に用いるべき前記特定のエンティティについての前記割当てを前記帯域幅調整システムから受信する動作は、前記複数のデバイスのグループにおける各々のデバイスから前記帯域幅調整システムによって受信された、前記特定のエンティティについての前記割当て要求を用いて決定された割当てを受信する動作を含む、請求項1に記載のシステム。
  12. 前記複数のデバイスのグループにおける前記デバイスの各々に送信された前記特定のエンティティについての前記割当て要求の各々の合計は、前記特定のエンティティについてのバジェットと等しくなる、請求項11に記載のシステム。
  13. 前記動作は、
    更新済みの割当てを受信する動作を含み、その時点で前記要求に応答すべきかどうかについての前記確率的判断を再判断する動作は、前記更新済みの割当て、前記要求に応答するための前記サイズ、および、前記データ処理装置上の前記特定のエンティティについての前記トークンの発生量を用いて、その時点で前記要求に応答すべきかどうかを確率的に判断する動作を含む、請求項1に記載のシステム。
  14. 前記特定のエンティティについてのデータを処理するようにとの前記要求を受信する動作は、読出し要求または書込み要求のうちの1つを受信する動作を含む、請求項1に記載のシステム。
  15. 前記特定のエンティティについてのデータを処理するようにとの前記要求を受信する動作は、特定のユーザについての要求を受信する動作を含む、請求項1に記載のシステム。
  16. 前記特定のエンティティについてのデータを処理するようにとの前記要求を受信する動作は、特定の企業についての要求を受信する動作を含む、請求項1に記載のシステム。
  17. 前記要求に応答する動作は、
    前記要求に対する応答を決定する動作と、
    前記クライアントデバイスに前記応答を提供する動作とを含む、請求項1に記載のシステム。
  18. その時点で前記要求に応答すべきかどうかについての前記確率的判断を再判断する動作は、前記予め定められた期間が経過するまで、その時点で前記要求に応答すべきかどうかについての前記確率的判断を再判断する動作を含む、請求項1に記載のシステム。
  19. 前記複数の要求のセットは、前記複数の要求内に前記要求の各々を含む、請求項1に記載のシステム。
  20. 前記要求に応答するための前記サイズを決定する動作は、前記要求に応答する際に処理されるべきデータのサイズを決定する動作を含み、
    前記特定のエンティティと前記要求に応答するための前記サイズとを示す前記割当て要求を前記帯域幅調整システムに提供する動作は、前記特定のエンティティと前記要求に応答する際に処理されるべきデータの前記サイズとを示す帯域幅割当て要求を前記帯域幅調整システムに提供する動作を含み、
    前記要求に応答する際に用いるべき前記特定のエンティティについての前記割当てを前記帯域幅調整システムから受信する動作は、前記要求に応答する際に用いるべき前記特定のエンティティについての帯域幅割当てを前記帯域幅調整システムから受信する動作を含み、
    前記割当て、前記要求に応答するための前記サイズ、および、前記データ処理装置上の前記特定のエンティティについての前記トークンの発生量に基づいて、その時点で前記要求に応答すべきかどうかを確率的に判断する動作は、前記帯域幅割当て、処理されるべき前記データの前記サイズ、および、前記データ処理装置上の前記特定のエンティティについての前記トークンの発生量に基づいて、その時点で前記要求に応答すべきかどうかを確率的に判断する動作を含む、請求項1に記載のシステム。
  21. 前記要求に応答するための前記サイズを決定する動作は、前記特定のエンティティのために前記データ処理装置を含むエンドポイントによって処理されるべき要求の量を決定する動作を含み、
    前記特定のエンティティと前記要求に応答するための前記サイズとを示す前記割当て要求を前記帯域幅調整システムに提供する動作は、前記特定のエンティティと、前記特定のエンティティのために前記エンドポイントによって処理されるべき前記要求の量とを示す割当て要求を前記帯域幅調整システムに提供する動作を含み、
    前記割当て、前記要求に応答するための前記サイズ、および、前記データ処理装置上の前記特定のエンティティについての前記トークンの発生量に基づいて、その時点で前記要求に応答すべきかどうかを確率的に判断する動作は、前記割当て、応答されるべき前記要求についての1の値、および、前記データ処理装置上の前記特定のエンティティについての前記トークンの発生量に基づいて、その時点で前記要求に応答すべきかどうかを確率的に判断する動作を含む、請求項1に記載のシステム。
  22. データ処理装置によって実行可能な命令を格納する非一時的なコンピュータ読取り可能記憶媒体であって、前記命令は、実行されると、前記データ処理装置に以下の動作を実行させ、前記以下の動作は、
    データを処理するようにとの複数の要求の各々ごとに、
    データを処理するようにとの前記要求を特定のエンティティのためのクライアントデバイスから受信する動作と、
    前記要求に応答する際に処理されるべきデータのサイズを決定する動作と、
    データを処理するようにとの前記複数の要求のセットであって、データを処理するようにとの少なくとも2つ以上の要求を含む前記セットにおける各々の要求であって、前記複数の要求のセットにおける各々の要求は2つ以上のエンティティを含むエンティティのセットにおける1エンティティに対応しており、前記各々の要求ごとに、
    前記特定のエンティティと前記要求に応答する際に処理されるべきデータの前記サイズとを示す帯域幅割当て要求を帯域幅調整システムに提供する動作と、
    前記要求に応答する際に用いるべき前記特定のエンティティについての帯域幅割当てを前記帯域幅調整システムから受信する動作と、
    前記帯域幅割当て、処理されるべき前記データの前記サイズ、および、前記データ処理装置上の前記特定のエンティティについてのトークンの発生量に基づいて、その時点で前記要求に応答すべきかどうかを確率的に判断する動作と、
    セットのうちの要求の第1のサブセットについて、その時点で前記要求に応答すべきと確率的に判断したことに応じて、
    前記要求に応答する動作と、
    セットのうちの要求の第2のサブセットについて、その時点で前記要求に応答すべきでないと確率的に判断したことに応じて、
    予め定められた期間が経過したかどうかを判断する動作と、
    前記予め定められた期間が経過したとの判断に応じて、
    前記要求が応答されないだろうことを示すメッセージを前記クライアントデバイスに送信する動作、または、
    前記予め定められた期間がまだ経過していないとの判断に応じて、
    前記トークンの発生量を前記帯域幅割当ての量だけインクリメントする動作と、
    その時点で前記要求に応答すべきであるかどうかについての前記確率的判断を再判断する動作とを含む、非一時的なコンピュータ読取り可能記憶媒体。
  23. コンピュータによって実現される方法であって、
    データを処理するようにとの複数の要求の各々ごとに、
    データを処理するようにとの前記要求を、特定のエンティティのためのクライアントデバイスから、エンドポイントによって受信するステップと、
    前記特定のエンティティのために前記エンドポイントによって処理されるべき要求の量を決定するステップと、
    データを処理するようにとの前記複数の要求のセットであって、データを処理するようにとの少なくとも2つ以上の要求を含む前記セットにおける各々の要求であって、前記複数の要求のセットにおける各々の要求は2つ以上のエンティティを含むエンティティのセットにおける1エンティティに対応しており、前記各々の要求ごとに、
    前記特定のエンティティと、前記特定のエンティティのために前記エンドポイントによって処理されるべき前記要求の量とを示す割当て要求を帯域幅調整システムに提供するステップと、
    前記要求に応答する際に用いるべき前記特定のエンティティについての割当てを前記帯域幅調整システムから受信するステップと、
    前記割当て、応答されるべき前記要求についての1の値、および、前記データ処理装置上の前記特定のエンティティについてのトークンの発生量に基づいて、その時点で前記要求に応答すべきかどうかを確率的に判断するステップと、
    セットのうちの要求の第1のサブセットについて、その時点で前記要求に応答すべきと確率的に判断したことに応じて、
    前記要求に応答するステップと、
    セットのうちの要求の第2のサブセットについて、その時点で前記要求に応答すべきでないと確率的に判断したことに応じて、
    予め定められた期間が経過したかどうかを判断するステップと、
    前記予め定められた期間が経過したとの判断に応じて、前記要求が応答されないだろうことを示すメッセージを前記クライアントデバイスに送信するステップ、または、
    前記予め定められた期間がまだ経過していないとの判断に応じて、
    前記トークンの発生量を前記割当ての量だけインクリメントするステップと、
    その時点で前記要求に応答すべきかどうかについての前記確率的判断を再判断するステップとを含む、コンピュータによって実現される方法。
JP2018520561A 2016-01-15 2016-12-01 確率的帯域幅調整 Active JP6480642B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/996,463 2016-01-15
US14/996,463 US20170208120A1 (en) 2016-01-15 2016-01-15 Probabilistic throttling
PCT/US2016/064351 WO2017123335A1 (en) 2016-01-15 2016-12-01 Probabilistic throttling

Publications (2)

Publication Number Publication Date
JP2018538601A true JP2018538601A (ja) 2018-12-27
JP6480642B2 JP6480642B2 (ja) 2019-03-13

Family

ID=57590851

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018520561A Active JP6480642B2 (ja) 2016-01-15 2016-12-01 確率的帯域幅調整

Country Status (6)

Country Link
US (1) US20170208120A1 (ja)
EP (1) EP3350702B1 (ja)
JP (1) JP6480642B2 (ja)
KR (1) KR101923706B1 (ja)
CN (1) CN108604194B (ja)
WO (1) WO2017123335A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10243861B1 (en) * 2017-02-22 2019-03-26 Juniper Networks, Inc. Reducing jitter and compensating for memory latency during traffic shaping
US11586478B2 (en) * 2018-08-21 2023-02-21 International Business Machines Corporation Swarm-based resource management
US11005775B2 (en) * 2018-10-08 2021-05-11 EMC IP Holding Company LLC Resource allocation using distributed segment processing credits
US11201828B2 (en) 2018-10-08 2021-12-14 EMC IP Holding Company LLC Stream allocation using stream credits
US10630602B1 (en) 2018-10-08 2020-04-21 EMC IP Holding Company LLC Resource allocation using restore credits
CN111290701B (zh) * 2018-12-10 2022-06-24 杭州朗和科技有限公司 数据读写控制方法、装置、介质和电子设备
US11463651B2 (en) 2019-12-23 2022-10-04 Carrier Corporation Video frame-based media stream bandwidth reduction
US11438545B2 (en) 2019-12-23 2022-09-06 Carrier Corporation Video image-based media stream bandwidth reduction
CN113163236B (zh) * 2020-01-22 2022-10-14 武汉瓯越网视有限公司 基于频率控制的数据传输方法、装置、设备和存储介质
CN112439197A (zh) * 2020-11-30 2021-03-05 北京达佳互联信息技术有限公司 随机事件的概率触发方法及装置
CN113992593B (zh) * 2021-10-20 2024-03-01 京东科技信息技术有限公司 服务资源调用方法、装置、电子设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013523016A (ja) * 2010-03-16 2013-06-13 マイクロソフト コーポレーション バーチャルマシン通信トラフィックを成形すること
EP2618541A1 (en) * 2012-01-20 2013-07-24 Research In Motion Limited A communication device for throttling transmitted data

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6324654B1 (en) * 1998-03-30 2001-11-27 Legato Systems, Inc. Computer network remote data mirroring system
US7178100B2 (en) * 2000-12-15 2007-02-13 Call Charles G Methods and apparatus for storing and manipulating variable length and fixed length data elements as a sequence of fixed length integers
US6766420B2 (en) * 2001-09-27 2004-07-20 International Business Machines Corporation Selectively powering portions of system memory in a network server to conserve energy
CN100571175C (zh) * 2006-09-30 2009-12-16 华为技术有限公司 一种无线通信网络带宽分配方法与装置
US8914497B1 (en) * 2011-12-15 2014-12-16 Amazon Technologies, Inc. System and method for throttling service requests having non-uniform workloads
US9858095B2 (en) * 2012-09-17 2018-01-02 International Business Machines Corporation Dynamic virtual machine resizing in a cloud computing infrastructure
CN103699440B (zh) * 2012-09-27 2017-05-24 北京搜狐新媒体信息技术有限公司 一种云计算平台系统为任务分配资源的方法和装置
US9411658B2 (en) * 2013-02-21 2016-08-09 Vmware, Inc. Token-based adaptive task management for virtual machines
CN104111800B (zh) * 2013-04-18 2018-02-23 阿里巴巴集团控股有限公司 一种虚拟磁盘的io口调度方法及其调度装置
US9405572B2 (en) * 2014-04-07 2016-08-02 International Business Machines Corporation Optimized resource allocation and management in a virtualized computing environment
US9450884B2 (en) * 2014-06-11 2016-09-20 Alcatel-Lucent Software defined networking based congestion control

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013523016A (ja) * 2010-03-16 2013-06-13 マイクロソフト コーポレーション バーチャルマシン通信トラフィックを成形すること
EP2618541A1 (en) * 2012-01-20 2013-07-24 Research In Motion Limited A communication device for throttling transmitted data

Also Published As

Publication number Publication date
EP3350702B1 (en) 2019-04-10
KR20180049125A (ko) 2018-05-10
CN108604194A (zh) 2018-09-28
KR101923706B1 (ko) 2019-02-22
CN108604194B (zh) 2022-05-31
US20170208120A1 (en) 2017-07-20
JP6480642B2 (ja) 2019-03-13
WO2017123335A1 (en) 2017-07-20
EP3350702A1 (en) 2018-07-25

Similar Documents

Publication Publication Date Title
JP6480642B2 (ja) 確率的帯域幅調整
US9262192B2 (en) Virtual machine data store queue allocation
US8595722B2 (en) Preprovisioning virtual machines based on request frequency and current network configuration
KR101242954B1 (ko) 저장부로 향하는 입/출력(i/o) 요청을 큐잉할지 여부를 결정하기 위한 우선순위의 이용
US9760392B1 (en) Adaptive throttling in hybrid storage environments
US8429666B2 (en) Computing platform with resource constraint negotiation
US20130254407A1 (en) Systems and Methods for Time-Based Dynamic Allocation of Resource Management
US10394606B2 (en) Dynamic weight accumulation for fair allocation of resources in a scheduler hierarchy
US20120221730A1 (en) Resource control system and resource control method
WO2014194869A1 (zh) 一种请求处理方法、装置及系统
US9798877B2 (en) Security risk-based resource allocation
US9448920B2 (en) Granting and revoking supplemental memory allocation requests
CN110008050B (zh) 用于处理信息的方法和装置
KR20150009662A (ko) 가상 데스크톱 서비스 제공 방법 및 장치
CN110808914A (zh) 一种访问请求处理方法、装置及电子设备
JP5324914B2 (ja) ストレージリソースを割り振る方法および装置
CN111107075A (zh) 请求响应方法、装置、电子设备和计算机可读存储介质
US9665409B2 (en) Methods and apparatus facilitating access to storage among multiple computers
US8819239B2 (en) Distributed resource management systems and methods for resource management thereof
WO2020233364A1 (zh) 资源处理平台的确认方法、装置、电子设备和介质
US10979359B1 (en) Polling resource management system
US20190319901A1 (en) Scalable, real-time messaging system
US10540341B1 (en) System and method for dedupe aware storage quality of service
JP6059259B2 (ja) 計算機システム及び計算機リソースの割当方法
KR101407765B1 (ko) 클라우드 환경의 교통정보 서비스를 위한 조건부 확률추론을 이용한 가상머신 할당 장치 및 방법

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180607

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180607

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20180607

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20181218

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190108

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190207

R150 Certificate of patent or registration of utility model

Ref document number: 6480642

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250