(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-04-11
(54)【発明の名称】ローカルクラウドのためのローカルエリアネットワーク(LAN)で非停止コントローラを使用するための方法および装置
(51)【国際特許分類】
H04L 43/0805 20220101AFI20240404BHJP
H04W 56/00 20090101ALI20240404BHJP
H04W 84/12 20090101ALI20240404BHJP
H04L 43/02 20220101ALI20240404BHJP
H04L 67/125 20220101ALI20240404BHJP
G06F 9/50 20060101ALI20240404BHJP
【FI】
H04L43/0805
H04W56/00
H04W84/12
H04L43/02
H04L67/125
G06F9/50 150Z
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023560734
(86)(22)【出願日】2022-11-03
(85)【翻訳文提出日】2023-09-29
(86)【国際出願番号】 US2022048815
(87)【国際公開番号】W WO2023101790
(87)【国際公開日】2023-06-08
(32)【優先日】2021-11-30
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2022-10-28
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】520353802
【氏名又は名称】テンセント・アメリカ・エルエルシー
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100150197
【氏名又は名称】松尾 直樹
(72)【発明者】
【氏名】ポール・スペンサー・ドーキンス
(72)【発明者】
【氏名】ロヒト・アビシェーク
(72)【発明者】
【氏名】アリアンヌ・ハインズ
【テーマコード(参考)】
5K067
【Fターム(参考)】
5K067AA14
5K067DD25
5K067HH22
5K067HH23
(57)【要約】
方法は、ネットワークノードによって実行される。本方法は、第1のタイマを第1の値に設定するステップであって、第1のタイマは、1つまたは複数の追加のネットワークノードのうちの1つがクラウド内のアクティブコントローラであるかどうかを判定することに関連付けられている、ステップを含む。本方法は、第1のタイマを開始するステップを含む。本方法は、第1のタイマが満了する前に、1つまたは複数の追加のネットワークノードのうちの1つがアクティブコントローラであることを示す第1のメッセージが受信されたかどうかを判定するステップを含む。第1のタイマが満了する前に第1のメッセージが受信されたと判定するステップに基づいて、本方法は、アクティブコントローラである1つまたは複数の追加のネットワークノードのうちの1つと同期するステップと、第1のタイマを再起動するステップと、を含む。
【特許請求の範囲】
【請求項1】
ローカルエリアネットワーク(LAN)を介して1つまたは複数の追加のネットワークノードに接続されたネットワークノードの少なくとも1つのプロセッサによって実行される方法であって、前記ネットワークノードおよび前記1つまたは複数の追加のネットワークノードは、クラウドを形成し、前記方法は、
第1のタイマを第1の値に設定するステップであって、前記第1のタイマは、前記1つまたは複数の追加のネットワークノードのうちの1つが前記クラウド内のアクティブコントローラであるかどうかを判定することに関連付けられている、ステップと、
前記第1のタイマを開始するステップと、
前記第1のタイマが満了する前に、前記1つまたは複数の追加のネットワークノードのうちの前記1つが前記アクティブコントローラであることを示す第1のメッセージが受信されたかどうかを判定するステップと、
前記第1のタイマが満了する前に前記第1のメッセージが受信されたと判定するステップに基づいて、
前記アクティブコントローラである前記1つまたは複数の追加のネットワークノードのうちの前記1つと同期するステップと、
前記第1のタイマを再起動するステップと、を含む、方法。
【請求項2】
同期する前記ステップが、ステータス更新のために前記アクティブコントローラである前記1つまたは複数の追加のネットワークノードのうちの前記1つにサブスクライブするステップを含む、請求項1に記載の方法。
【請求項3】
同期する前記ステップが、前記アクティブコントローラである前記1つまたは複数の追加のネットワークノードのうちの前記1つから1つまたは複数のマルチキャスト更新を受信するステップを含む、請求項1に記載の方法。
【請求項4】
同期する前記ステップが、ステータス更新のために周期的な間隔で前記アクティブコントローラである前記1つまたは複数の追加のネットワークノードのうちの前記1つをポーリングするステップを含む、請求項1に記載の方法。
【請求項5】
同期する前記ステップが、(i)リソースを要求している前記1つまたは複数の追加のデバイスからのデバイスのセット、(ii)ワーカとして動作している前記1つまたは複数の追加のデバイスからのデバイスのセット、(iii)タスクのセット、(iv)ワーカとして動作している前記1つまたは複数の追加のデバイスからの前記デバイスのセットに割り当てられたタスクのセット、および(v)ワーカとして動作している前記1つまたは複数の追加のデバイスからの前記デバイスのセットに割り当てられた前記タスクのセットの結果のセットのうちの1つまたは複数を決定するために、前記アクティブコントローラである前記1つまたは複数の追加のネットワークノードのうちの前記1つの状態と同期するステップを含む、請求項1に記載の方法。
【請求項6】
前記第1のメッセージが受信されることなく満了する前記第1のタイマに基づいて、前記クラウド内の前記アクティブコントローラとして、前記1つまたは複数の追加のネットワークノードからの少なくとも1つのネットワークノードに1つまたは複数のタスクを割り当てるステップ
をさらに含む、請求項1に記載の方法。
【請求項7】
第2のタイマを第2の値に設定するステップと、
前記第1のメッセージが受信されることなく満了する前記第1のタイマに基づいて、前記第2のタイマを開始するステップと、
前記第2のタイマの満了に基づいて、または前記アクティブコントローラの識別を要求する前記1つまたは複数の追加のネットワークノードのうちの別のネットワークノードからの第2のメッセージの受信に基づいて、前記1つまたは複数の追加のネットワークノードのうちの各ネットワークノードに、前記ネットワークノードが前記クラウド内の前記アクティブコントローラであることを示す第2のメッセージをブロードキャストするステップと、
をさらに含む、請求項1に記載の方法。
【請求項8】
ローカルエリアネットワーク(LAN)を介して1つまたは複数の追加のネットワークノードに接続された装置であって、前記装置および前記1つまたは複数の追加のネットワークノードは、クラウドを形成し、前記装置は、
コンピュータプログラムコードを記憶するように構成された少なくとも1つのメモリと、
前記コンピュータプログラムコードにアクセスし、前記コンピュータプログラムコードによって命令されるように動作するように構成された少なくとも1つのプロセッサであって、前記コンピュータプログラムコードは、
前記少なくとも1つのプロセッサに、第1のタイマを第1の値に設定させるように構成された第1の設定コードであって、前記第1のタイマは、前記1つまたは複数の追加のネットワークノードのうちの1つが前記クラウド内のアクティブコントローラであるかどうかを判定することに関連付けられている、第1の設定コードと、
前記少なくとも1つのプロセッサに、前記第1のタイマを開始させるように構成された第1の開始コードと、
前記少なくとも1つのプロセッサに、前記第1のタイマが満了する前に、前記1つまたは複数の追加のネットワークノードのうちの前記1つが前記アクティブコントローラであることを示す第1のメッセージが受信されたかどうかを判定させるように構成された判定コードと、
同期コードと、
再開始コードと、を含み、
前記第1のタイマが満了する前に前記第1のメッセージが受信されたと判定するステップに基づいて、
前記同期コードは、前記少なくとも1つのプロセッサに、前記アクティブコントローラである前記1つまたは複数の追加のネットワークノードのうちの前記1つと同期させるように構成され、
前記再開始コードは、前記少なくとも1つのプロセッサに、前記第1のタイマを再開始させるように構成される、少なくとも1つのプロセッサと、を備える、装置。
【請求項9】
前記同期コードが、前記少なくとも1つのプロセッサに、ステータス更新のために前記アクティブコントローラである前記1つまたは複数の追加のネットワークノードのうちの前記1つにサブスクライブさせるようにさらに構成される、請求項8に記載の装置。
【請求項10】
前記同期コードが、前記少なくとも1つのプロセッサに、前記アクティブコントローラである前記1つまたは複数の追加のネットワークノードのうちの前記1つから1つまたは複数のマルチキャスト更新を受信させるようにさらに構成される、請求項8に記載の装置。
【請求項11】
前記同期コードが、前記少なくとも1つのプロセッサに、ステータス更新のために周期的な間隔で前記アクティブコントローラである前記1つまたは複数の追加のネットワークノードのうちの前記1つをポーリングさせるようにさらに構成される、請求項8に記載の装置。
【請求項12】
前記同期コードが、前記少なくとも1つのプロセッサに、(i)リソースを要求している前記1つまたは複数の追加のデバイスからのデバイスのセット、(ii)ワーカとして動作している前記1つまたは複数の追加のデバイスからのデバイスのセット、(iii)タスクのセット、(iv)ワーカとして動作している前記1つまたは複数の追加のデバイスからの前記デバイスのセットに割り当てられたタスクのセット、および(v)ワーカとして動作している前記1つまたは複数の追加のデバイスからの前記デバイスのセットに割り当てられた前記タスクのセットの結果のセットのうちの1つまたは複数を決定するために、前記アクティブコントローラである前記1つまたは複数の追加のネットワークノードのうちの前記1つの状態を同期させるように構成される、請求項8に記載の装置。
【請求項13】
前記コンピュータプログラムコードが、
割り当てコードをさらに含み、前記第1のメッセージが受信されることなく満了する前記第1のタイマに基づいて、前記割り当てコードは、前記少なくとも1つのプロセッサに、前記クラウド内の前記アクティブコントローラとして、前記1つまたは複数の追加のネットワークノードからの少なくとも1つのネットワークノードに1つまたは複数のタスクを割り当てさせるように構成される、請求項8に記載の装置。
【請求項14】
前記コンピュータプログラムコードが、
前記少なくとも1つのプロセッサに、第2のタイマを第2の値に設定させるように構成された第2の設定コードと、
開始コードと、
ブロードキャスティングコードと、をさらに含み、
前記第1のメッセージが受信されることなく満了する前記第1のタイマに基づいて、前記開始コードは、前記少なくとも1つのプロセッサに、前記第2のタイマを開始させるように構成され、
前記第2のタイマの満了に基づいて、または前記アクティブコントローラの識別を要求する前記1つまたは複数の追加のネットワークノードのうちの別のネットワークノードからの第2のメッセージの受信に基づいて、前記ブロードキャスティングコードは、前記少なくとも1つのプロセッサに、前記1つまたは複数の追加のネットワークノードのうちの各ネットワークノードに、前記ネットワークノードが前記クラウド内の前記アクティブコントローラであることを示す第2のメッセージをブロードキャストさせるように構成される、請求項8に記載の装置。
【請求項15】
命令が記憶された非一時的コンピュータ可読媒体であって、ローカルエリアネットワーク(LAN)を介して1つまたは複数の追加のネットワークノードに接続されたネットワークノード内のプロセッサによって実行されると、前記ネットワークノードおよび前記1つまたは複数の追加のネットワークノードは、クラウドを形成し、前記ネットワークノードに、
第1のタイマを第1の値に設定するステップであって、前記第1のタイマは、前記1つまたは複数の追加のネットワークノードのうちの1つが前記クラウド内のアクティブコントローラであるかどうかを判定することに関連付けられている、ステップと、
前記第1のタイマを開始するステップと、
前記第1のタイマが満了する前に、前記1つまたは複数の追加のネットワークノードのうちの前記1つが前記アクティブコントローラであることを示す第1のメッセージが受信されたかどうかを判定するステップと、
前記第1のタイマが満了する前に前記第1のメッセージが受信されたと判定するステップに基づいて、
前記アクティブコントローラである前記1つまたは複数の追加のネットワークノードのうちの前記1つと同期するステップと、
前記第1のタイマを再起動するステップと、を含む方法を実行させる、非一時的コンピュータ可読媒体。
【請求項16】
同期する前記ステップが、ステータス更新のために前記アクティブコントローラである前記1つまたは複数の追加のネットワークノードのうちの前記1つにサブスクライブするステップを含む、請求項15に記載の非一時的コンピュータ可読媒体。
【請求項17】
同期する前記ステップが、前記アクティブコントローラである前記1つまたは複数の追加のネットワークノードのうちの前記1つから1つまたは複数のマルチキャスト更新を受信するステップを含む、請求項15に記載の非一時的コンピュータ可読媒体。
【請求項18】
同期する前記ステップが、ステータス更新のために周期的な間隔で前記アクティブコントローラである前記1つまたは複数の追加のネットワークノードのうちの前記1つをポーリングするステップを含む、請求項15に記載の非一時的コンピュータ可読媒体。
【請求項19】
同期する前記ステップが、(i)リソースを要求している前記1つまたは複数の追加のデバイスからのデバイスのセット、(ii)ワーカとして動作している前記1つまたは複数の追加のデバイスからのデバイスのセット、(iii)タスクのセット、(iv)ワーカとして動作している前記1つまたは複数の追加のデバイスからの前記デバイスのセットに割り当てられたタスクのセット、および(v)ワーカとして動作している前記1つまたは複数の追加のデバイスからの前記デバイスのセットに割り当てられた前記タスクのセットの結果のセットのうちの1つまたは複数を決定するために、前記アクティブコントローラである前記1つまたは複数の追加のネットワークノードのうちの前記1つの状態と同期するステップを含む、請求項15に記載の非一時的コンピュータ可読媒体。
【請求項20】
前記第1のメッセージが受信されることなく満了する前記第1のタイマに基づいて、前記クラウド内の前記アクティブコントローラとして、前記1つまたは複数の追加のネットワークノードからの少なくとも1つのネットワークノードに1つまたは複数のタスクを割り当てるステップ
をさらに含む、請求項15に記載の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2021年11月30日に出願された米国仮特許出願第63/284,534号、および2022年10月28日に出願された米国特許出願第17/976,325号に基づいており、それらに対する優先権を主張し、それらの開示は、全体が参照により本明細書に組み込まれる。
【0002】
本開示は、一般に、通信システムに関し、より詳細には、ローカルクラウドのためのローカルエリアネットワーク(LAN)を有する非停止コントローラのための方法および装置に関する。
【背景技術】
【0003】
クラウドコンピューティングは、インターネットを介して、コンピューティングリソース、アプリケーション、サーバ、データ記憶装置、開発ツール、ネットワーキング機能へのオンデマンドアクセスであると定義されてもよい。クラウドコンピューティングサービスは、クラウドサービスプロバイダ(CSP)によって管理されるリモートデータセンタでホストされてもよい。クラウドコンピューティングは、サブスクリプションベースのサービスであってもよい。クラウドベースのサブスクリプションは、購入、設置などのコストを削減することによってリソースコストを削減するのに役立つ。クラウドコンピューティングは、アジリティおよび価値までの時間を改善し、費用効果の高い方法でより容易にスケーリングされてもよい。
【0004】
現在、アプリケーションは、モノのインターネット(IoT)、人工知能(AI)、機械学習(MI)、没入型メディアの概念により重点を置いている。さらに、インターネットデバイスの数は指数関数的に増加している。データセンタまたはクラウドサーバ(潜在的に地理的に離れた場所)で計算を実行することは、これらの計算がユーザからクラウドまたはデータセンタにデータを移動して戻すためにかなりの帯域幅を必要とし、レイテンシも追加するため、効率的な手法ではない場合がある。
【0005】
エッジコンピューティングは、リソースをネットワークエッジに配置することによってコンピューティング能力をユーザに近づけ、それによってネットワーク遅延を低減し、上位クラウドへの帯域幅要求条件を低減し、信頼性を高め、コストを削減する。エッジコンピューティングは、複数のホップを通ってクラウドネットワークに依存するより遠い距離を移動する代わりに、ユーザにより近いデータの計算を可能にする。
【0006】
ネットワークオペレータがエッジコンピューティングの使用において見る主な利点は、リアルタイムの動的コンピューティングがユーザにより近いため、遅延が減少し、ユーザがクラウドサーバにかかる負荷が軽減されるため、コストが削減され、ローカルクラウドがユーザに近いため、トラフィック配信が高速化され、体感品質(QoE)が向上する。
【0007】
ライトフィールド、拡張現実(AR)、および仮想現実(VR)のような没入型技術の場合、ハイエンドハードウェアデバイスが必要とされる。この要求は、これらのアプリケーションが、ユーザに真に没入した環境にいるという感覚を与えるために、膨大な量の処理能力および記憶装置を必要とする可能性が高いために生じる。さらに、これらのアプリケーションは、特定のオブジェクトを認識するためにリアルタイムのビデオストリーム処理を必要とし、いくつかのアプリケーションは、新しいビデオフレームの生成を必要とする場合さえある。
【0008】
したがって、没入型技術を使用する際の現在の課題は、処理容量、記憶容量、エネルギー消費、およびデバイスの重量を含む。これらの課題はすべて、デバイス上で実行されるアプリケーションの大量の処理要求条件のために、より顕著になってきている。ユーザがヘッドセットを装着することを必要とする没入型技術では、重いデバイスはユーザに不快な体験を与え、高い処理能力は、アプリケーションの要求条件を満たすためにGPUに大きく依存するライトフィールドデバイスを含むデバイスを高価にする。デバイスにおけるリソースの可用性が限られていると、利用可能なリソースよりも多くを必要とする処理タスクは計算レイテンシを追加し、デバイスがバッテリ駆動である場合、計算負荷を追加すると、デバイスのバッテリがより迅速に消耗し、充電間のサービス間隔時間が短縮される。したがって、現在の最新技術の能力と将来のデバイスおよびシステムの要求条件との間にはギャップが存在する。
【0009】
没入型技術に使用されるデバイスが単独で存在する場合、デバイス自体は、許容可能なQoEをデバイスのユーザに提供するために必要なすべてのリソースを提供しなければならない。デバイスがLANを使用して他のデバイスに接続されている場合、デバイスは、支援を要求するデバイスに対して高度にローカルな共有リソースを使用して、LAN上の他のデバイスから支援を要求することができる。
【0010】
没入型技術の様々な用途の信頼性要求条件は、大きく異なる。レクリエーション娯楽などのいくつかのユースケースでは、コストと信頼性との間のトレードオフの一部として、時折の中断が許容され得る。拡張現実支援手術などの他のユースケースでは、停止のコストははるかに高くなり得る。これらの停止の頻度を低くし、可能性を低くする1つの方法は、コントローラを使用して計算負荷の大部分を複数のワーカに分配し、その後、それらのワーカが割り当てられた計算タスクの結果をユーザのデバイスに返し、それらの結果を整列させてユーザに提示し、没入体験を提供することである。しかし、この緩和戦略でさえ、コントローラが無応答になる停止につながる可能性がある。複数のコントローラを提供することが可能であり、その結果、アクティブコントローラが無応答になると、別のコントローラがアクティブコントローラになり、この新たなアクティブコントローラは、参加ワーカデバイスを募集し、共有リソースの使用を要求するデバイスの代わりに使用され得るプールに提供されたリソースを収集し、以前にアクティブコントローラが実行したようにワーカデバイスにタスクを割り当てる同じプロセスを経る必要があり、この時間間隔の間、ユーザの没入体験は中断される。
【0011】
この時間間隔を最小化するために、現在アクティブコントローラではない利用可能なコントローラは、アクティブコントローラがアクティブコントローラの状態の変化を利用可能なコントローラに通知することを要求することができ、その結果、利用可能なコントローラは、リソース、リソースを提供する参加ワーカ、およびワーカに割り当てられたタスクを要求することができる参加デバイスについてアクティブコントローラの状態を最新に維持することができる。この手順を使用して、前のアクティブコントローラが無応答になるためにアクティブになるコントローラは、無応答アクティブコントローラを検出するとすぐに、没入型デバイスのユーザへのサービスの提供を再開することができる。
【発明の概要】
【課題を解決するための手段】
【0012】
以下は、本開示の1つまたは複数の実施形態の基本的な理解を提供するために、そのような実施形態の簡略化された概要を提示する。本概要は、すべての企図された実施形態の広範な概要ではなく、すべての実施形態の主要なまたは重要な要素を特定することも、いずれかまたはすべての実施形態の範囲を線引きすることも意図されていない。その唯一の目的は、後で提示されるより詳細な説明の前置きとして、本開示の1つまたは複数の実施形態の一部の概念を簡略化された形で提示することである。
【0013】
ローカルクラウドのためのローカルエリアネットワーク(LAN)を有する非停止コントローラのための方法、装置、および非一時的コンピュータ可読媒体が、本開示によって開示される。
【0014】
例示的な実施形態によれば、ローカルエリアネットワーク(LAN)を介して1つまたは複数の追加のネットワークノードに接続されたネットワークノードの少なくとも1つのプロセッサによって実行される方法であって、ネットワークノードおよび1つまたは複数の追加のネットワークノードは、クラウドを形成し、本方法は、第1のタイマを第1の値に設定するステップであって、第1のタイマは、1つまたは複数の追加のネットワークノードのうちの1つがクラウド内のアクティブコントローラであるかどうかを判定することに関連付けられている、ステップを含む。本方法は、第1のタイマを開始するステップをさらに含む。本方法は、第1のタイマが満了する前に、1つまたは複数の追加のネットワークノードのうちの1つがアクティブコントローラであることを示す第1のメッセージが受信されたかどうかを判定するステップをさらに含む。第1のタイマが満了する前に第1のメッセージが受信されたと判定するステップに基づいて、本方法は、アクティブコントローラである1つまたは複数の追加のネットワークノードのうちの1つと同期するステップと、第1のタイマを再起動するステップと、をさらに含む。
【0015】
例示的な実施形態によれば、装置は、ローカルエリアネットワーク(LAN)を介して1つまたは複数の追加のネットワークノードに接続され、装置および1つまたは複数の追加のネットワークノードは、クラウドを形成する。本装置は、コンピュータプログラムコードを記憶するように構成された少なくとも1つのメモリと、コンピュータプログラムコードにアクセスし、コンピュータプログラムコードによって指示されたように動作するように構成された少なくとも1つのプロセッサと、を含む。コンピュータプログラムコードは、少なくとも1つのプロセッサに、第1のタイマを第1の値に設定させるように構成された第1の設定コードを含み、第1のタイマは、1つまたは複数の追加のネットワークノードのうちの1つがクラウド内のアクティブコントローラであるかどうかを判定することに関連付けられている。コンピュータプログラムコードは、少なくとも1つのプロセッサに、第1のタイマを開始させるように構成された第1の開始コードをさらに含む。コンピュータプログラムコードは、少なくとも1つのプロセッサに、第1のタイマが満了する前に、1つまたは複数の追加のネットワークノードのうちの1つがアクティブコントローラであることを示す第1のメッセージが受信されたかどうかを判定させるように構成された判定コードをさらに含む。コンピュータプログラムコードは、同期コードおよび再開始コードをさらに含み、第1のタイマが満了する前に第1のメッセージが受信されたと判定するステップに基づいて、同期コードは、少なくとも1つのプロセッサに、アクティブコントローラである1つまたは複数の追加のネットワークノードのうちの1つと同期させるように構成され、再開始コードは、少なくとも1つのプロセッサに、第1のタイマを再開始させるように構成される。
【0016】
例示的な実施形態によれば、命令が記憶された非一時的コンピュータ可読媒体であって、ローカルエリアネットワーク(LAN)を介して1つまたは複数の追加のネットワークノードに接続されたネットワークノード内のプロセッサによって実行されると、ネットワークノードおよび1つまたは複数の追加のネットワークノードは、クラウドを形成し、ネットワークノードに、方法を実行させる。本方法は、第1のタイマを第1の値に設定するステップであって、第1のタイマは、1つまたは複数の追加のネットワークノードのうちの1つがクラウド内のアクティブコントローラであるかどうかを判定することに関連付けられている、ステップを含む。本方法は、第1のタイマを開始するステップをさらに含む。本方法は、第1のタイマが満了する前に、1つまたは複数の追加のネットワークノードのうちの1つがアクティブコントローラであることを示す第1のメッセージが受信されたかどうかを判定するステップをさらに含む。第1のタイマが満了する前に第1のメッセージが受信されたと判定するステップに基づいて、本方法は、アクティブコントローラである1つまたは複数の追加のネットワークノードのうちの1つと同期するステップと、第1のタイマを再起動するステップと、をさらに含む。
【0017】
追加の実施形態は、以下の説明に記載され、部分的には、説明から明らかになり、および/または本開示の提示された実施形態の実施によって学ぶことができる。
【0018】
上記および他の態様は、添付の図面と併せて様々な実施形態の以下の説明から明らかになるであろう。
【図面の簡単な説明】
【0019】
【
図1】本開示の様々な実施形態による、アクティブおよび利用可能なコントローラを含むLANの図である。
【
図2】本開示の様々な実施形態による、コントローラ-コントローラ通信プロセスの図である。
【
図3】本開示の様々な実施形態による、アクティブコントローラ-ワーカ接続セットアップの図である。
【
図4】本開示の様々な実施形態による、アクティブコントローラ-ワーカタスク割り当ての図である。
【
図5】アクティブコントローラと利用可能なコントローラとの同期を示す図である。
【
図6】本開示の様々な実施形態による、コンピュータシステムの概略図である。
【発明を実施するための形態】
【0020】
例示的な実施形態の以下の詳細な説明は、添付の図面を参照する。異なる図面における同じ参照番号は、同じまたは類似の要素を識別し得る。
【0021】
前述の開示は、例示および説明を提供しているが、網羅的であることも、実装形態を厳密に開示の形態に限定することも意図されていない。修正形態および変形形態が上記の開示に照らして可能であり、または実装形態の実践から取得されてもよい。さらに、一実施形態の1つまたは複数の特徴または構成要素は、別の実施形態(または別の実施形態の1つまたは複数の特徴)に組み込まれるか、または組み合わされてもよい。さらに、以下に提供されるフローチャートおよび動作の説明では、1つまたは複数の動作が省略されてもよく、1つまたは複数の動作が追加されてもよく、1つまたは複数の動作が同時に(少なくとも部分的に)実行されてもよく、1つまたは複数の動作の順序が切り替えられてもよいことが理解される。
【0022】
本明細書に記載のシステムおよび/または方法は、ハードウェア、ファームウェア、またはハードウェアとソフトウェアとの組み合わせの異なる形態で実装されてもよいことは明らかであろう。これらのシステムおよび/または方法を実装するために使用される実際の専用の制御ハードウェアまたはソフトウェアコードは、実施態様を限定するものではない。したがって、システムおよび/または方法の動作ならびに挙動は、特定のソフトウェアコードを参照することなく本明細書に記載されており、ソフトウェアおよびハードウェアは、本明細書の記載に基づいてシステムおよび/または方法を実装するように設計され得ることが理解される。
【0023】
特定の特徴の組み合わせが、特許請求の範囲に記載され、かつ/または本明細書に開示されていても、これらの組み合わせは、可能な実装形態の開示を限定することを意図されたものではない。実際、これらの特徴の多くは、特許請求の範囲に具体的に記載されておらず、かつ/または本明細書に開示されていない方法で組み合わされてもよい。以下に列挙されている各従属請求項は1つの請求項のみに直接従属し得るが、可能な実装形態の開示は、請求項セット内の他のすべての請求項との組み合わせにおいて各従属請求項を含む。
【0024】
本明細書で使用される要素、動作、または命令は、そのように明示的に記載されていない限り、重要または必須であると解釈されるべきではない。また、本明細書で使用される場合、冠詞「a」および「an」は、1つまたは複数の項目を含むことを意図されており、「1つまたは複数」と交換可能に使用されてもよい。1つの項目のみが意図される場合、「1つ」という用語または同様の言葉が使用される。また、本明細書で使用される「有する(has)」、「有する(have)」、「有する(having)」、「含む(include)」、「含む(including)」などの用語は、オープンエンド用語であることが意図されている。さらに、「に基づいて」という語句は、特に明記されない限り、「に少なくとも部分的に基づいて」を意味することが意図されている。さらに、「[A]および[B]の少なくとも一方」または「[A]または[B]の少なくとも一方」などの表現は、Aのみ、Bのみ、またはAとBの両方を含むと理解されるべきである。
【0025】
本明細書を通して、「一実施形態(one embodiment)」、「実施形態(an embodiment)」、または同様の文言への言及は、示された実施形態に関連して説明される特定の特徴、構造、または特性が、本解決策の少なくとも1つの実施形態に含まれることを意味する。したがって、「一実施形態では(in one embodiment)」、「実施形態では(in an embodiment)」という語句、および本明細書全体を通して同様の文言は、必ずしもそうとは限らないが、すべて同じ実施形態を指し得る。
【0026】
さらに、本開示の記載された特徴、利点、および特性は、1つまたは複数の実施形態において任意の好適な方法で組み合わせることができる。当業者であれば、本明細書の説明に照らして、特定の実施形態の特定の特徴または利点の1つまたは複数なしで本開示を実施することができることを認識するであろう。他の例では、本開示のすべての実施形態には存在しない可能性がある特定の実施形態において、追加の特徴および利点が認識され得る。
【0027】
本開示の実施形態は、LANに接続されたデバイスを、それらのデバイスの処理能力を共有するローカルクラウドのための非停止サービスとして使用する問題を解決する。本開示の実施形態は、(i)没入型技術を含む、高い計算リソースを必要とする技術に使用されるが、これらの技術に必要なすべての計算タスクを単独で実行するのに十分なリソースを有さない可能性があるデバイスを含み、(ii)必要に応じてこれらの共有リソースを使用するために、一部のリソースをローカルクラウドに提供するのに十分なリソースを有するデバイスを含み、(iii)ローカルクラウドコントローラとして機能する意思がある少なくとも2つのデバイスを含む、任意のLANに適用可能な方法および装置を含む。
【0028】
「デバイス」という用語は、ローカルクラウドから利用可能なリソースにアクセスする能力を有するLANに接続されたすべてのデバイスを指すことができる。「アクティブコントローラ」という用語は、ローカルクラウドに利用可能なリソースを識別し、デバイスに代わってタスクを割り当てる任意のデバイスを指すことができる。「ワーカ」という用語は、アクティブコントローラによって割り当てられたタスクを実行している任意のデバイスを指すことができる。
【0029】
図1はLANネットワークの一実施形態を示し、108はLAN101のゲートウェイルータであり、デバイス102、103、104、105、106、および107はネットワークに接続された異なるデバイスである。いくつかの実施形態では、LAN101に接続された複数のデバイスからのリソースを使用して、ローカルクラウドを作成することができる。セットアップは、LAN内の他のデバイスを登録することを担当し、それらのデバイスへのタスク割り当てを管理するアクティブコントローラ107として機能するLAN内の任意のデバイスを含むことができる。「タスク割り当ての管理」は、ローカルクラウド内のワーカ間のタスク移動を含む。
【0030】
要求を処理するためにアクティブコントローラを割り当て、高可用性ローカルクラウドサービスを提供するために、様々な実施形態が利用されてもよい。
図1では、デバイス6(107)がアクティブコントローラとして機能しているが、デバイス1(102)およびデバイス4(106)はまた、現在のアクティブコントローラが無応答になった場合にアクティブコントローラとして機能するために利用可能であってもよい。
【0031】
図2は、利用可能なコントローラが高可用性アクティブコントローラ選択プロセスに関与するプロセスの一実施形態のフローチャートを示す。プロセスは、利用可能なコントローラが2つのタイマを2つのタイマ値T1VおよびT2Vにそれぞれ初期化する動作(201)で開始することができる。例えば、タイマはT1タイマおよびT2タイマであってもよい。いくつかの実施形態では、2つのタイマ値T1VおよびT2Vは、予め決定されてもよい。タイマ値T1VおよびT2Vは、少なくとも1つのコントローラが利用可能である場合、コントローラがアクティブでない時間量を制限するために使用されてもよい。タイマ値T1Vは、利用可能なコントローラが別のコントローラが既にアクティブであるという指示を待機する時間量に対応することができる。タイマ値T2Vは、アクティブコントローラが既にアクティブコントローラであるという指示を送信する前にアクティブコントローラが待機する時間量に対応することができる。いくつかの実施形態では、タイマ値T1Vはタイマ値T2Vよりも長い。T1VおよびT2Vのタイマ値、ならびにT1VとT2Vとの間の比は、供給されてもよく、実験的に決定されてもよく、適応的に決定されてもよい。いくつかの実施形態では、タイマ値T1Vとタイマ値T2Vとの間の3:1の比は、以前のアクティブコントローラがもはやアクティブでない場合を除いて、利用可能なコントローラが少なくとも2つの「私はアクティブ」メッセージを受信することを可能にし、その場合、利用可能なコントローラはアクティブコントローラの役割を担うことができる。
【0032】
いくつかの実施形態では、すべて同時にアクティブであると宣言する可能性がある利用可能なコントローラ間の同期を回避するために(例えば、LAN上のすべてのデバイスが同時に電源投入された後)、各利用可能なコントローラは、T1タイマをT1Vに設定した後に、小さなランダムに選択された時間間隔をT1タイマに追加することができる。いくつかの実施形態では、利用可能なコントローラとして最初にそれ自体をアナウンスするデバイスは、アクティブコントローラになる優先順位を有することができる。
【0033】
プロセスは、動作(201)から動作(202)に進み、利用可能なコントローラが「誰がアクティブ?」メッセージを「すべてのコントローラ」マルチキャストグループに送信する。動作(203)において、利用可能なコントローラはT1タイマをT1Vに設定する。動作(204)において、利用可能なコントローラは、現在アクティブコントローラから「私はアクティブ」マルチキャストメッセージが到着するのを待機するか、またはT1タイマが満了するのを待機する。「私はアクティブ」メッセージが受信された場合、プロセスは、
図5に関してさらに詳細に開示されるように、アクティブコントローラと同期するための動作(205)に進む。プロセスは、動作(205)から動作(203)に進み、動作(203)を繰り返す。
【0034】
LANがアクティブコントローラを含まないことを示すT1タイマの期限が切れた場合、プロセスは動作(204)から動作(206)に進む。動作(206)において、利用可能なコントローラは、アクティブコントローラになるために、「私はアクティブ」メッセージをすべてのコントローラにマルチキャストする。動作(207)において、アクティブコントローラは、T2タイマをT2Vに設定する。動作(208)において、アクティブコントローラは、
図3および
図4で説明したアクティブコントローラの責任を果たす。動作(209)において、アクティブコントローラは、現在アクティブコントローラから「誰がアクティブ?」マルチキャストメッセージが到着するのを待機するか、またはT2タイマが満了するのを待機する。これらの条件のいずれかが満たされる場合、プロセスは動作(206)に戻る。待機中、アクティブコントローラはまた、ローカルクラウドリソースの要求を受信し、それらの要求を満たすためのリソースを有するワーカを識別することができる。「誰がアクティブ?」マルチキャストメッセージの受信またはT2タイマの満了によってアクティブコントローラが覚醒されるかどうかにかかわらず、アクティブコントローラは、動作(206)において、すべての利用可能なコントローラにマルチキャスト「私はアクティブ」メッセージを送信し、動作(207)において、T2タイマをT2Vに設定し、その後、動作(208)において、同様に待機する。利用可能なコントローラがアクティブコントローラになると、このコントローラは、無期限にアクティブコントローラとして動作し続けることができる。
【0035】
図3は、アクティブコントローラ(301)-ワーカ(304)接続セットアップの一実施形態を示す。ローカルクラウドを求める要求が来ると、アクティブコントローラ(301)は、LANに接続されたワーカ(304)を発見するためにメッセージをブロードキャストしてもよい。デバイスがローカルクラウドにリソースを提供することに同意した場合、デバイスは、アクティブコントローラに確認応答(302)を送信することができる。次に、アクティブコントローラは、SLA要求(306)で応答することができ、これは、リソース可用性時間および電力可用性を含むワーカのリソースを共有するためのワーカに対する要求を含んでもよい。ワーカが承諾した場合、ワーカはSLA回答(303)を送信することができ、その後、アクティブコントローラは接続(307)をセットアップすることができる。ワーカはまた、ワーカ上のアクティブアプリケーションの数およびワーカのエネルギー消費などの情報を共有する必要があり得る。ワーカはまた、セッション中にそのような情報を共有することを要求され得る。
【0036】
アクティブコントローラがワーカからSLA回答を受信した後、アクティブコントローラは様々なワーカへのタスクの割り当てを開始することができる。
図4は、アクティブコントローラ-ワーカタスク割り当ての一実施形態を示す。タスク(411)は、アクティブコントローラ(412)がワーカ(403)、(405)、(407)、および(408)に割り当てる必要がある1つまたは複数のタスクに対応することができる。アクティブコントローラは、1つまたは複数のタスクをサブタスク(401)、(402)、(404)、(406)、(409)、および(410)に分割することができる。
【0037】
図5は、タスク(502)をワーカに割り当てているアクティブコントローラ(501)の一実施形態を示し、このタスクのサブタスク(503)はワーカ(504)に割り当てられる。アクティブコントローラがその内部状態を更新しているので、利用可能なコントローラ(505)はまた、その内部状態を更新することができる(506)。
【0038】
いくつかの実施形態では、アクティブおよび利用可能なコントローラは、限定はしないが、(i)利用可能なコントローラが状態更新のためにアクティブコントローラにサブスクライブし、アクティブコントローラが状態更新をパブリッシュする、パブリッシュ/サブスクライブ機構を使用すること;(ii)アクティブコントローラがリスニング可能コントローラに状態更新をマルチキャストする、マルチキャスト機構を使用すること;および(iii)利用可能なコントローラが状態更新についてアクティブコントローラをポーリングする、ポーリング機構を使用すること、を含む、状態同期を保証するための様々な機構を使用することができる。
【0039】
いくつかの実施形態では、状態同期の粒度は変化してもよく、これには、限定はしないが、(i)リソースを要求するデバイスのセットの状態を同期させること;(ii)ワーカのセットの状態を同期させること;(iii)タスクのセットの状態を同期させること;(iii)ワーカへのタスク割り当ての状態を同期させること;および(iv)ワーカへのタスク割り当ての結果の状態を同期させることを含む。
【0040】
いくつかの実施形態では、アクティブコントローラおよび利用可能なコントローラは、様々な組み合わせでこれらの同期を使用することができる。同期されているものの選択は、シミュレーション、動作経験、または最近の経験に基づく動的調整を含む様々な方法によって導かれ得る。
【0041】
いくつかの実施形態では、アクティブコントローラは、ワーカのリソース可用性(例えば、ワーカがリースすることを望む記憶装置、ワーカの総記憶容量、ワーカの電力可用性など)を使用してタスクを割り当てることができる。いくつかの実施形態では、ワーカは、限定はしないが、ワーカのリソースの一部を使用する無関係なローカル計算を含む様々な理由で、リソースを提供するワーカの意思を更新するようにアクティブコントローラに通知することができる。
【0042】
いくつかの実施形態では、何らかの理由でワーカがもはや使用されたくない場合、ワーカは、この参加の変更をアクティブコントローラに通知することができる。ワーカはすぐに切断しなくてもよい。代わりに、アクティブコントローラは、ワーカ上で実行されているアクティブタスクがあるかどうかをチェックすることができる。ワーカは、切断する前に現在のタスクを終了することを選択してもよく、またはアクティブコントローラがネットワーク内の何らかの他のワーカにタスクを移行するのを待機してもよい。ネットワークの問題または任意の他の問題に起因してワーカが切断した場合、アクティブコントローラは、切断されたワーカに割り当てられたタスクをネットワーク内の何らかの他のワーカに再割り当てすることができる。
【0043】
いくつかの実施形態では、アクティブコントローラが無応答になり、別のコントローラが利用可能になると、
図2に示すプロセスを使用して新しいアクティブコントローラが選択されてもよい。いくつかの実施形態では、ローカルクラウドは、LANの所有者が支払いの引き換えにコンピューティングおよび記憶装置リソースをリースするサブスクリプションベースのサービスとして使用されてもよい。一例は、画像/ファイルを記憶するためにローカルクラウドを使用すること、またはいくつかの画像処理タスクを実行することであり得る。ローカルエリアクラウドはまた、そのネットワーク内の任意のデバイスのための任意のタスクを実行するために使用されてもよい。例えば、ネットワーク内の任意のデバイスがストリーミング没入メディアであり、デバイスが着信メディアストリームを処理する(復号、スティッチング)のに十分なリソースを持っていない場合、デバイスはネットワーク内のアクティブコントローラに、デバイスに代わってメディアを処理するように依頼することができる。
【0044】
LANをローカルクラウドのための非停止サービスとして使用するための方法論は、コンピュータ可読命令を使用するコンピュータソフトウェアとして実装され、1つまたは複数のコンピュータ可読媒体に物理的に記憶されてもよい。例えば、
図6は、開示された主題の特定の実施形態を実装するのに好適なコンピュータシステム600の一実施形態を示す。
【0045】
コンピュータソフトウェアは、コンピュータ中央処理装置(CPU)、グラフィック処理装置(GPU)などによって、直接、またはインタープリテーション、マイクロコードの実行などを介して実行され得る命令を含むコードを作成するために、アセンブリ、コンパイル、リンクなどの機構の適用を受け得る、任意の適切な機械コードまたはコンピュータ言語を使用してコーディングされ得る。
【0046】
命令は、例えばパーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲーミングデバイス、およびモノのインターネットデバイスなどを含む様々なタイプのコンピュータまたはその構成要素上で実行され得る。
【0047】
コンピュータシステム(600)について
図6に示される構成要素は、例であり、本開示の実施形態を実装するコンピュータソフトウェアの使用範囲または機能に関する制限を示唆することを意図するものではない。さらには、構成要素の構成が、コンピュータシステム(600)の典型的な実施形態に示されている構成要素のいずれか1つまたはこれらの組み合わせに関連する何らかの依存性や要求を持つと解釈するべきでもない。
【0048】
コンピュータシステム(600)は、特定のヒューマンインターフェース入力デバイスを含んでもよい。そのようなヒューマンインターフェース入力デバイスは、例えば、(キーストローク、スワイプ、データグローブの動きなどの)触覚入力、(声、拍手などの)オーディオ入力、(ジェスチャなどの)視覚入力、(描写されていない)嗅覚入力を介して、1人または複数の人間のユーザによる入力に応答することができる。ヒューマンインターフェースデバイスを使用して、音声(発話、音楽、周囲音など)、画像(スキャン画像、静止画像カメラから取得される写真画像など)、ビデオ(二次元ビデオ、立体ビデオを含む三次元ビデオなど)など、人間による意識的な入力に必ずしも直接関係ない特定のメディアをキャプチャしてもよい。
【0049】
入力ヒューマンインターフェースデバイスは、キーボード(601)、マウス(602)、トラックパッド(603)、タッチスクリーン(610)、データグローブ(図示せず)、ジョイスティック(605)、マイク(606)、スキャナ(607)、カメラ(608)のうちの1つまたは複数(それぞれ1つのみを図示)を含んでもよい。
【0050】
コンピュータシステム(600)はいくつかのヒューマンインターフェース出力デバイスも含んでもよい。そのようなヒューマンインターフェース出力デバイスは、例えば、触覚出力、音、光、および臭い/味を介して、1人または複数の人間ユーザの感覚を刺激している場合がある。そのようなヒューマンインターフェース出力デバイスは、触覚出力デバイス(例えば、タッチスクリーン(610)、データグローブ(図示せず)、またはジョイスティック(605)による触覚フィードバック、しかし入力デバイスとして機能しない触覚フィードバックデバイスが存在する可能性もある)、音声出力デバイス(スピーカ(609)、ヘッドフォン(図示せず)など)、視覚出力デバイス(CRTスクリーン、LCDスクリーン、プラズマスクリーン、OLEDスクリーンを含むスクリーン(610)など、各々タッチスクリーン入力機能の有無にかかわらず、各々触覚フィードバック機能の有無にかかわらず、それらのうちのいくつかは、ステレオグラフィック出力、仮想現実眼鏡(図示せず)、ホログラフィックディスプレイおよびスモークタンク(図示せず)などの手段を介して2次元視覚出力または3次元以上の出力を出力することが可能な場合がある)、ならびにプリンタ(図示せず)を含んでもよい。
【0051】
コンピュータシステム(600)は、CD/DVDまたは同様の媒体(621)を有するCD/DVD ROM/RW Z20を含む光学媒体、サムドライブ(622)、リムーバブルハードドライブまたはソリッドステートドライブ(623)、テープおよびフロッピーディスクなどのレガシー磁気媒体(描写せず)、セキュリティドングルなどの特殊なROM/ASIC/PLDベースのデバイス(描写せず)など、人間がアクセス可能な記憶デバイスおよびそれらに関連する媒体を含んでもよい。
【0052】
当業者はまた、本開示の主題に関連して使用される「コンピュータ可読媒体」という用語が、伝送媒体、搬送波、または他の一時的な信号を包含しないことを理解するべきである。
【0053】
コンピュータシステム(600)はまた、1つまたは複数の通信ネットワークへのインターフェースを含んでもよい。ネットワークは、例えば、無線、有線、光であってもよい。ネットワークはさらに、ローカル、広域、都市、車両、および産業、リアルタイム、遅延耐性などであってよい。ネットワークの例には、EthernetなどのLAN、無線LAN、GSM、3G、4G、5G、LTEなどを含むセルラネットワーク、ケーブルテレビ、衛星テレビおよび地上波テレビを含むテレビの有線または無線ワイドエリアデジタルネットワーク、CANBusを含む車両用および産業用などが含まれる。特定のネットワークは、一般に、特定の汎用データポートまたは周辺バス(649)(例えば、コンピュータシステム(600)のUSBポートなど)に接続された外部ネットワークインターフェースアダプタを必要とし、他のものは一般に、以下に記載されるようにシステムバスへの接続によってコンピュータシステム(600)のコアに統合される(例えば、PCコンピュータシステムへのイーサネットインターフェースまたはスマートフォンコンピュータシステムへのセルラネットワークインターフェース)。これらのネットワークのいずれかを使用して、コンピュータシステム(600)は、他のエンティティと通信し得る。そのような通信は、単方向の受信のみ(例えば、放送TV)、単方向送信のみ(例えば、特定のCANbusデバイスへのCANbus)、または双方向、例えばローカルエリアまたはワイドエリアデジタルネットワークを使用する他のコンピュータシステムへの通信であり得る。特定のプロトコルおよびプロトコルスタックは、上記で説明したように、それらのネットワークおよびネットワークインターフェースのそれぞれで使用され得る。
【0054】
前述のヒューマンインターフェースデバイス、人間がアクセス可能な記憶デバイス、およびネットワークインターフェースは、コンピュータシステム(600)のコア(640)に取り付けられ得る。
【0055】
コア(640)は、1つまたは複数の中央処理装置(CPU)(641)、グラフィック処理装置(GPU)(642)、フィールドプログラマブルゲートエリア(FPGA:Field Programmable Gate Area)(643)の形態の専用プログラマブル処理装置、および特定のタスク用のハードウェアアクセラレータ(644)などを含んでもよい。このようなデバイスを、読出し専用メモリ(ROM)(645)、ランダムアクセスメモリ(646)、内部にあってユーザが直接操作し得ないハードドライブ、SSDなどの内部大容量記憶装置(647)とともにシステムバス(648)を通じて接続してもよい。いくつかのコンピュータシステムでは、システムバス(648)は、追加のCPU、GPUなどによる拡張を可能にするために、1つまたは複数の物理プラグの形態でアクセス可能であり得る。周辺機器を、コアのシステムバス(648)に直接取り付けることも、周辺バス649を介して取り付けることも可能である。周辺バス用のアーキテクチャには、PCI、USBなどが含まれる。
【0056】
CPU(641)、GPU(642)、FPGA(643)、およびアクセラレータ(644)は、組み合わせて上述のコンピュータコードを構成し得る特定の命令を実行し得る。そのコンピュータコードは、ROM(645)またはRAM(646)に記憶され得る。また、一時データが、RAM(646)に記憶されてもよいが、永続データが、例えば内部大容量記憶装置(647)に記憶されてもよい。任意のメモリデバイスへの高速記憶および検索は、1つまたは複数のCPU(641)、GPU(642)、大容量記憶装置(647)、ROM(645)、RAM(646)などと密接に関連付けられ得るキャッシュメモリの使用によって可能にされ得る。
【0057】
コンピュータ可読媒体は、様々なコンピュータ実装動作を実行するためのコンピュータコードを有し得る。媒体およびコンピュータコードは、本開示の目的のために特別に設計および構成されたものであってもよいし、またはコンピュータソフトウェア技術の当業者に周知の利用可能な種類のものであってもよい。
【0058】
限定ではなく、例として、アーキテクチャ(600)、特にコア(640)を有するコンピュータシステムは、1つまたは複数の有形のコンピュータ可読媒体で具現化されたソフトウェアを実行するプロセッサ(CPU、GPU、FPGA、アクセラレータなどを含む)の結果として機能を提供することができる。そのようなコンピュータ可読媒体は、上述のようなユーザアクセス可能な大容量記憶装置、ならびにコア内部大容量記憶装置(647)またはROM(645)などの非一時的な性質のコア(640)の特定の記憶装置に関連付けられた媒体であり得る。本開示の様々な実施形態を実装するソフトウェアは、そのようなデバイスに記憶され、コア(640)によって実行され得る。コンピュータ可読媒体は、特定のニーズに応じて、1つまたは複数のメモリデバイスまたはチップを含み得る。ソフトウェアは、コア(640)、および具体的にはその中の(CPU、GPU、FPGAなどを含む)プロセッサに、RAM(646)に記憶されたデータ構造を定義することと、ソフトウェアによって定義されたプロセスに従ってそのようなデータ構造を変更することと、を含む、本明細書に記載された特定のプロセス、または特定のプロセスの特定の部分を実行させ得る。加えて、または代替として、コンピュータシステムは、回路(例えば、アクセラレータ(644))にハードワイヤードされた、または他の方法で具現化されたロジックの結果として機能性を提供してもよく、この回路はソフトウェアの代わりに、またはソフトウェアと共に動作して、本明細書に記載された特定プロセス、または特定プロセスの特定の部分を実行し得る。ソフトウェアへの参照は、ロジックを包含することができ、その逆も同様である。コンピュータ可読媒体への言及は、実行のためのソフトウェアを記憶する回路(集積回路(IC)など)、実行のためのロジックを具体化する回路、またはこれらの両方を包含し得る。本開示は、ハードウェアとソフトウェアの任意の適切な組み合わせを包含する。
【0059】
本開示はいくつかの例示的な実施形態を説明してきたが、本開示の範囲内に入る修正、置換、および様々な代替等価物がある。したがって、当業者は、本明細書では明示的に示されていないか、または記載されていないが、本開示の原理を具体化し、したがってその趣旨および範囲内にある多数のシステムおよび方法を考案できることが理解されよう。
【0060】
前述の開示は、例示および説明を提供しているが、網羅的であることも、実装形態を厳密に開示の形態に限定することも意図されていない。修正形態および変形形態が上記の開示に照らして可能であり、または実装形態の実践から取得されてもよい。
【0061】
本明細書に開示されるプロセス/フローチャートにおけるブロックの特定の順序または階層は、例示的な手法の例示であることが理解される。設計上の選好に基づいて、プロセス/フローチャート内のブロックの特定の順序または階層が再配置されてもよいことが理解される。さらに、いくつかのブロックを組み合わせたり、省略したりしてもよい。添付の方法請求項は、サンプルの順序で様々なブロックの要素を提示し、提示された特定の順序または階層に限定されることを意味しない。
【0062】
いくつかの実施形態は、任意の可能な技術的詳細レベルの統合におけるシステム、方法、および/またはコンピュータ可読媒体に関することができる。さらに、上述した構成要素のうちの1つまたは複数は、コンピュータ可読媒体上に記憶され、少なくとも1つのプロセッサによって実行可能な命令として実装され得る(および/または少なくとも1つのプロセッサを含み得る)。コンピュータ可読媒体は、プロセッサに動作を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読非一時的記憶媒体を含むことができる。
【0063】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持および記憶することができる有形のデバイスとすることができる。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、または上記の任意の適切な組み合わせであってもよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストは、以下を、すなわち、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM:random access memory)、読出し専用メモリ(ROM:read-only memory)、消去可能プログラマブル読出し専用メモリ(EPROM:erasable programmable read-only memoryまたはフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM:static random access memory)、ポータブルコンパクトディスク読出し専用メモリ(CD-ROM:compact disc read-only memory)、デジタル多用途ディスク(DVD)、メモリスティック、フロッピーディスク、命令が記録されたパンチカードまたは溝内の隆起構造などの機械的に符号化されたデバイス、および上記の任意の適切な組み合わせを含む。本明細書で使用されるコンピュータ可読記憶媒体は、電波もしくは他の自由に伝搬する電磁波、導波路もしくは他の伝送媒体を伝搬する電磁波(例えば、光ファイバケーブルを通過する光パルス)、または電線を介して伝送される電気信号などの一時的な信号自体であると解釈されるべきではない。
【0064】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスにダウンロードすることができ、またはネットワーク、例えばインターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、および/もしくは無線ネットワークを介して外部コンピュータもしくは外部記憶デバイスにダウンロードすることができる。ネットワークは、銅製伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、および/またはエッジサーバを含むことができる。各コンピューティング/処理デバイス内のネットワークアダプタカードまたはネットワークインターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶するためにコンピュータ可読プログラム命令を転送する。
【0065】
動作を実行するためのコンピュータ可読プログラムコード/命令は、アセンブラ命令、命令セットアーキテクチャ(ISA:instruction-set-architecture)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路の構成データ、またはSmalltalkもしくはC++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは同様のプログラミング言語などの手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組み合わせで記述されたソースコードもしくはオブジェクトコードのいずれかであってもよい。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロンソフトウェアパッケージとして、部分的にユーザのコンピュータ上かつ部分的にリモートコンピュータ上で、または完全にリモートコンピュータもしくはサーバ上で実行することができる。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(LAN)もしくはワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよいし、または(例えば、インターネットサービスプロバイダを使用したインターネットを介して)外部コンピュータへの接続がなされてもよい。いくつかの実施形態では、例えばプログラマブル論理回路、フィールドプログラマブルゲートアレイ(FPGA)、またはプログラマブル論理アレイ(PLA:programmable logic array)を含む電子回路が、態様または動作を実行するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路をパーソナライズすることによってコンピュータ可読プログラム命令を実行することができる。
【0066】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサによって実行される命令が、フローチャートおよび/またはブロック図のブロックで指定された機能/動作を実装するための手段を作成するようにマシンを生成するために、汎用コンピュータ、専用コンピュータ、または他のプログラマブルデータ処理装置のプロセッサに提供することができる。これらのコンピュータ可読プログラム命令はまた、記憶された命令を有するコンピュータ可読記憶媒体が、フローチャートおよび/またはブロック図のブロックで指定された機能/動作の態様を実装する命令を含む製品を含むように、コンピュータ、プログラマブルデータ処理装置、および/または他のデバイスに特定の方法で機能するように指示し得るコンピュータ可読記憶媒体に記憶することができる。
【0067】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラマブル装置、または他のデバイス上で実行される命令がフローチャートおよび/またはブロック図のブロックで指定された機能/動作を実装するように、コンピュータ実装プロセスを生成するために一連の動作ステップがコンピュータ、他のプログラマブル装置、または他のデバイス上で実行されるよう、コンピュータ、他のプログラマブルデータ処理装置、または他のデバイス上にロードすることができる。
【0068】
図のフローチャートおよびブロック図は、様々な実施形態によるシステム、方法、およびコンピュータ可読媒体の可能な実装形態のアーキテクチャ、機能、および動作を示す。これに関して、フローチャートまたはブロック図の各ブロックは、指定された論理機能を実装するための1つまたは複数の実行可能命令を含むモジュール、セグメント、または命令の一部を表すことができる。方法、コンピュータシステム、およびコンピュータ可読媒体は、図に示されているものと比べて、追加のブロック、より少ないブロック、異なるブロック、または異なる配置のブロックを含んでもよい。一部の代替の実装形態では、ブロックに記載された機能は、図に記載されているのとは異なる順序で実行されてもよい。例えば、連続して示されている2つのブロックは、実際には、同時にまたは実質的に同時に実行されてもよく、またはブロックは、関連する機能に応じて、場合によっては逆の順序で実行されてもよい。ブロック図および/またはフローチャート図の各ブロック、ならびにブロック図および/またはフローチャート図のブロックの組み合わせは、指定された機能もしくは動作を実行する、または専用ハードウェアとコンピュータ命令との組み合わせを実現する、専用ハードウェアベースのシステムによって実装され得ることにも留意されたい。
【0069】
本明細書に記載のシステムおよび/または方法は、ハードウェア、ファームウェア、またはハードウェアとソフトウェアとの組み合わせの異なる形態で実装されてもよいことは明らかであろう。これらのシステムおよび/または方法を実装するために使用される実際の専用の制御ハードウェアまたはソフトウェアコードは、実施態様を限定するものではない。したがって、システムおよび/または方法の動作ならびに挙動は、特定のソフトウェアコードを参照することなく本明細書に記載されており、ソフトウェアおよびハードウェアは、本明細書の記載に基づいてシステムおよび/または方法を実装するように設計され得ることが理解される。
【0070】
上記の開示は、以下に列挙される実施形態も包含する。
【0071】
(1)ローカルエリアネットワーク(LAN)を介して1つまたは複数の追加のネットワークノードに接続されたネットワークノードの少なくとも1つのプロセッサによって実行される方法であって、ネットワークノードおよび1つまたは複数の追加のネットワークノードは、クラウドを形成し、方法は、第1のタイマを第1の値に設定するステップであって、第1のタイマは、1つまたは複数の追加のネットワークノードのうちの1つがクラウド内のアクティブコントローラであるかどうかを判定することに関連付けられている、ステップと、第1のタイマを開始するステップと、第1のタイマが満了する前に、1つまたは複数の追加のネットワークノードのうちの1つがアクティブコントローラであることを示す第1のメッセージが受信されたかどうかを判定するステップと、第1のタイマが満了する前に第1のメッセージが受信されたと判定するステップに基づいて、アクティブコントローラである1つまたは複数の追加のネットワークノードのうちの1つと同期するステップと、第1のタイマを再起動するステップと、を含む、方法。
【0072】
(2)同期するステップが、ステータス更新のためにアクティブコントローラである1つまたは複数の追加のネットワークノードのうちの1つにサブスクライブするステップを含む、特徴(1)に記載の方法。
【0073】
(3)同期するステップが、アクティブコントローラである1つまたは複数の追加のネットワークノードのうちの1つから1つまたは複数のマルチキャスト更新を受信するステップを含む、特徴(1)または(2)に記載の方法。
【0074】
(4)同期するステップが、ステータス更新のために周期的な間隔でアクティブコントローラである1つまたは複数の追加のネットワークノードのうちの1つをポーリングするステップを含む、特徴(1)から(3)のいずれか一項に記載の方法。
【0075】
(5)同期するステップが、(i)リソースを要求している1つまたは複数の追加のデバイスからのデバイスのセット、(ii)ワーカとして動作している1つまたは複数の追加のデバイスからのデバイスのセット、(iii)タスクのセット、(iv)ワーカとして動作している1つまたは複数の追加のデバイスからのデバイスのセットに割り当てられたタスクのセット、および(v)ワーカとして動作している1つまたは複数の追加のデバイスからのデバイスのセットに割り当てられたタスクのセットの結果のセットのうちの1つまたは複数を決定するために、アクティブコントローラである1つまたは複数の追加のネットワークノードのうちの1つの状態と同期するステップを含む、特徴(1)から(4)のいずれか一項に記載の方法。
【0076】
(6)第1のメッセージが受信されることなく満了する第1のタイマに基づいて、クラウド内のアクティブコントローラとして、1つまたは複数の追加のネットワークノードからの少なくとも1つのネットワークノードに1つまたは複数のタスクを割り当てるステップをさらに含む、特徴(1)から(5)のいずれか一項に記載の方法。
【0077】
(7)第2のタイマを第2の値に設定するステップと、第1のメッセージが受信されることなく満了する第1のタイマに基づいて、第2のタイマを開始するステップと、第2のタイマの満了に基づいて、またはアクティブコントローラの識別を要求する1つまたは複数の追加のネットワークノードのうちの別のネットワークノードからの第2のメッセージの受信に基づいて、1つまたは複数の追加のネットワークノードのうちの各ネットワークノードに、ネットワークノードがクラウド内のアクティブコントローラであることを示す第2のメッセージをブロードキャストするステップと、をさらに含む、特徴(1)から(6)のいずれか一項に記載の方法。
【0078】
(8)ローカルエリアネットワーク(LAN)を介して1つまたは複数の追加のネットワークノードに接続された装置であって、装置および1つまたは複数の追加のネットワークノードは、クラウドを形成し、装置は、コンピュータプログラムコードを記憶するように構成された少なくとも1つのメモリと、コンピュータプログラムコードにアクセスし、コンピュータプログラムコードによって命令されるように動作するように構成された少なくとも1つのプロセッサであって、コンピュータプログラムコードは、少なくとも1つのプロセッサに、第1のタイマを第1の値に設定させるように構成された第1の設定コードであって、第1のタイマは、1つまたは複数の追加のネットワークノードのうちの1つがクラウド内のアクティブコントローラであるかどうかを判定することに関連付けられている、第1の設定コードと、少なくとも1つのプロセッサに、第1のタイマを開始させるように構成された第1の開始コードと、少なくとも1つのプロセッサに、第1のタイマが満了する前に、1つまたは複数の追加のネットワークノードのうちの1つがアクティブコントローラであることを示す第1のメッセージが受信されたかどうかを判定させるように構成された判定コードと、同期コードと、再開始コードと、を含み、第1のタイマが満了する前に第1のメッセージが受信されたと判定するステップに基づいて、同期コードは、少なくとも1つのプロセッサに、アクティブコントローラである1つまたは複数の追加のネットワークノードのうちの1つと同期させるように構成され、再開始コードは、少なくとも1つのプロセッサに、第1のタイマを再開始させるように構成される、少なくとも1つのプロセッサと、を備える、装置。
【0079】
(9)同期コードが、少なくとも1つのプロセッサに、ステータス更新のためにアクティブコントローラである1つまたは複数の追加のネットワークノードのうちの1つにサブスクライブさせるようにさらに構成される、特徴(8)に記載の装置。
【0080】
(10)同期コードが、少なくとも1つのプロセッサに、アクティブコントローラである1つまたは複数の追加のネットワークノードのうちの1つから1つまたは複数のマルチキャスト更新を受信させるようにさらに構成される、特徴(8)または(9)に記載の装置。
【0081】
(11)同期コードが、少なくとも1つのプロセッサに、ステータス更新のために周期的な間隔でアクティブコントローラである1つまたは複数の追加のネットワークノードのうちの1つをポーリングさせるようにさらに構成される、特徴(8)から(10)のいずれか一項に記載の装置。
【0082】
(12)同期コードが、少なくとも1つのプロセッサに、(i)リソースを要求している1つまたは複数の追加のデバイスからのデバイスのセット、(ii)ワーカとして動作している1つまたは複数の追加のデバイスからのデバイスのセット、(iii)タスクのセット、(iv)ワーカとして動作している1つまたは複数の追加のデバイスからのデバイスのセットに割り当てられたタスクのセット、および(v)ワーカとして動作している1つまたは複数の追加のデバイスからのデバイスのセットに割り当てられたタスクのセットの結果のセットのうちの1つまたは複数を決定するために、アクティブコントローラである1つまたは複数の追加のネットワークノードのうちの1つの状態を同期させるように構成される、特徴(8)から(11)のいずれか一項に記載の装置。
【0083】
(13)コンピュータプログラムコードが、割り当てコードをさらに含み、第1のメッセージが受信されることなく満了する第1のタイマに基づいて、割り当てコードは、少なくとも1つのプロセッサに、クラウド内のアクティブコントローラとして、1つまたは複数の追加のネットワークノードからの少なくとも1つのネットワークノードに1つまたは複数のタスクを割り当てさせるように構成される、特徴(8)から(12)のいずれか一項に記載の装置。
【0084】
(14)コンピュータプログラムコードが、少なくとも1つのプロセッサに、第2のタイマを第2の値に設定させるように構成された第2の設定コードと、開始コードと、ブロードキャスティングコードと、をさらに含み、第1のメッセージが受信されることなく満了する第1のタイマに基づいて、開始コードは、少なくとも1つのプロセッサに、第2のタイマを開始させるように構成され、第2のタイマの満了に基づいて、またはアクティブコントローラの識別を要求する1つまたは複数の追加のネットワークノードのうちの別のネットワークノードからの第2のメッセージの受信に基づいて、ブロードキャスティングコードは、少なくとも1つのプロセッサに、1つまたは複数の追加のネットワークノードのうちの各ネットワークノードに、ネットワークノードがクラウド内のアクティブコントローラであることを示す第2のメッセージをブロードキャストさせるように構成される、特徴(8)から(13)のいずれか一項に記載の装置。
【0085】
(15)命令が記憶された非一時的コンピュータ可読媒体であって、ローカルエリアネットワーク(LAN)を介して1つまたは複数の追加のネットワークノードに接続されたネットワークノード内のプロセッサによって実行されると、ネットワークノードおよび1つまたは複数の追加のネットワークノードは、クラウドを形成し、ネットワークノードに、第1のタイマを第1の値に設定するステップであって、第1のタイマは、1つまたは複数の追加のネットワークノードのうちの1つがクラウド内のアクティブコントローラであるかどうかを判定することに関連付けられている、ステップと、第1のタイマを開始するステップと、第1のタイマが満了する前に、1つまたは複数の追加のネットワークノードのうちの1つがアクティブコントローラであることを示す第1のメッセージが受信されたかどうかを判定するステップと、第1のタイマが満了する前に第1のメッセージが受信されたと判定するステップに基づいて、アクティブコントローラである1つまたは複数の追加のネットワークノードのうちの1つと同期するステップと、第1のタイマを再起動するステップと、を含む方法を実行させる、非一時的コンピュータ可読媒体。
【0086】
(16)同期するステップが、ステータス更新のためにアクティブコントローラである1つまたは複数の追加のネットワークノードのうちの1つにサブスクライブするステップを含む、特徴(15)に記載の非一時的コンピュータ可読媒体。
【0087】
(17)同期するステップが、アクティブコントローラである1つまたは複数の追加のネットワークノードのうちの1つから1つまたは複数のマルチキャスト更新を受信するステップを含む、特徴(15)または(16)のいずれか一項に記載の非一時的コンピュータ可読媒体。
【0088】
(18)同期するステップが、ステータス更新のために周期的な間隔でアクティブコントローラである1つまたは複数の追加のネットワークノードのうちの1つをポーリングするステップを含む、特徴(15)から(17)のいずれか一項に記載の非一時的コンピュータ可読媒体。
【0089】
(19)同期するステップが、(i)リソースを要求している1つまたは複数の追加のデバイスからのデバイスのセット、(ii)ワーカとして動作している1つまたは複数の追加のデバイスからのデバイスのセット、(iii)タスクのセット、(iv)ワーカとして動作している1つまたは複数の追加のデバイスからのデバイスのセットに割り当てられたタスクのセット、および(v)ワーカとして動作している1つまたは複数の追加のデバイスからのデバイスのセットに割り当てられたタスクのセットの結果のセットのうちの1つまたは複数を決定するために、アクティブコントローラである1つまたは複数の追加のネットワークノードのうちの1つの状態と同期するステップを含む、特徴(15)から(18)のいずれか一項に記載の非一時的コンピュータ可読媒体。
【0090】
(20)第1のメッセージが受信されることなく満了する第1のタイマに基づいて、クラウド内のアクティブコントローラとして、1つまたは複数の追加のネットワークノードからの少なくとも1つのネットワークノードに1つまたは複数のタスクを割り当てるステップをさらに含む、特徴(15)から(19)のいずれか一項に記載の非一時的コンピュータ可読媒体。
【符号の説明】
【0091】
101 ローカルエリアネットワーク(LAN)
102 デバイス
103 デバイス
104 デバイス
105 デバイス
106 デバイス
107 アクティブコントローラ
108 ゲートウェイルータ
301 アクティブコントローラ
302 確認応答
303 SLA回答
304 ワーカ
305 アナウンス/ブロードキャスト
306 SLA要求
307 接続
401 サブタスク
402 サブタスク
403 ワーカ
404 サブタスク
405 ワーカ
406 サブタスク
407 ワーカ
408 ワーカ
409 サブタスク
410 サブタスク
411 タスク
412 アクティブコントローラ
501 アクティブコントローラ
502 タスク
503 サブタスク
504 ワーカ
505 利用可能なコントローラ
600 コンピュータシステム
601 キーボード
602 マウス
603 トラックパッド
605 ジョイスティック
606 マイク
607 スキャナ
608 カメラ
609 スピーカ
610 タッチスクリーン
621 CD/DVDまたは同様の媒体
622 サムドライブ
623 リムーバブルハードドライブまたはソリッドステートドライブ
640 コア
641 中央処理装置(CPU)
642 グラフィック処理装置(GPU)
643 フィールドプログラマブルゲートエリア(FPGA)
644 ハードウェアアクセラレータ
645 読出し専用メモリ(ROM)
646 ランダムアクセスメモリ(RAM)
647 内部大容量記憶装置
648 システムバス
649 周辺バス
【国際調査報告】