(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023153540
(43)【公開日】2023-10-18
(54)【発明の名称】計算機システム及びデプロイ計画の生成方法
(51)【国際特許分類】
G06F 9/50 20060101AFI20231011BHJP
【FI】
G06F9/50 150C
G06F9/50 150A
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2022062877
(22)【出願日】2022-04-05
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110001678
【氏名又は名称】藤央弁理士法人
(72)【発明者】
【氏名】郡浦 宏明
(72)【発明者】
【氏名】正村 雄介
(57)【要約】
【課題】オンプレミス型システム及びクラウドシステムへのタスクの割当てを最適化する。
【解決手段】計算機システムは、クラウドシステム及びオンプレミス型のローカルシステムと接続し、複数の機器の制御契機を検知した場合、クラウドシステム及びローカルシステムのリソースの空きに関するリソース情報を取得し、複数の機器の各々を制御するためのタスク群のデプロイパターンを生成し、複数の機器の各々のタスク群のデプロイパターンについて、機器の制御に要する予測制御時間を算出し、予測制御時間及びリソース情報に基づいて、所定の時間に制御が終了する機器の数が最大となるように複数の機器のタスク群のデプロイパターンを組み合わせてデプロイ計画を生成する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
機器を制御するためのタスク群のデプロイを制御する計算機システムであって、
少なくとも一つの計算機を備え、
クラウドシステム及びオンプレミス型のローカルシステムと接続し、
複数の前記機器の制御契機を検知した場合、前記クラウドシステム及び前記ローカルシステムのリソースの空きに関するリソース情報を取得し、
複数の前記機器の各々の前記タスク群について、一つのタスクの実行に要する処理時間の確率分布を算出する第1算出処理を実行し、
複数の前記機器の各々の前記タスク群のデプロイパターンを生成し、
前記第1算出処理の結果に基づいて、複数の前記機器の各々の前記タスク群の前記デプロイパターンについて、前記機器の制御に要する予測制御時間を算出する第2算出処理を実行し、
前記第2算出処理の結果及び前記リソース情報に基づいて、所定の時間に前記制御が終了する前記機器の数が最大となるように複数の前記機器の前記タスク群の前記デプロイパターンを組み合わせることによって、複数の前記機器の前記タスク群のデプロイ計画を生成することを特徴とする計算機システム。
【請求項2】
請求項1に記載の計算機システムであって、
前記機器の前記タスク群は、
前記機器でのみ実行される第1タスクを少なくとも一つ含み、
前記クラウドシステム及び前記ローカルシステムのいずれか一方で実行される第2タスクを少なくとも一つ含み、
前記計算機システムは、前記第1算出処理において、
前記第1タスクの処理時間の確率分布を算出し、
前記クラウドシステムで、前記第2タスクを実行した場合の処理時間の確率分布を算出し、
前記ローカルシステムで、前記第2タスクを実行した場合の処理時間の確率分布を算出することを特徴とする計算機システム。
【請求項3】
請求項2に記載の計算機システムであって、
前記第1タスクの実行履歴及び前記第2タスクの実行履歴を管理し、
前記第1タスクの実行履歴は、前記機器のスペックの情報及び処理時間を含み、
前記第2タスクの実行履歴は、実行されたシステムの識別情報及び処理時間を含み、
前記計算機システムは、前記第1算出処理において、
前記機器のスペックの情報を取得し、
前記機器のスペックに対応する前記第1タスクの実行履歴に基づいて、前記第1タスクの処理時間の確率分布を算出し、
前記クラウドシステムで実行された前記第2タスクの実行履歴に基づいて、前記クラウドシステムで、前記第2タスクを実行した場合の処理時間の確率分布を算出し、
前記ローカルシステムで実行された前記第2タスクの実行履歴に基づいて、前記ローカルシステムで、前記第2タスクを実行した場合の処理時間の確率分布を算出することを特徴とする計算機システム。
【請求項4】
請求項1に記載の計算機システムであって、
前記機器及び前記クラウドシステムの間の通信のレイテンシ、前記機器及び前記ローカルシステムの間の通信のレイテンシ、並びに、前記クラウドシステム及び前記ローカルシステムの間の通信のレイテンシを監視し、
前記第2算出処理では、
一つの前記デプロイパターンを選択し、
前記第1算出処理の結果に基づいて、選択された前記デプロイパターンにおける前記タスク群の各々の予測処理時間を算出し、
前記監視の結果に基づいて、選択された前記デプロイパターンにおける通信の予測レイテンシを算出し、
選択された前記デプロイパターンにおける前記タスク群の各々の前記予測処理時間及び前記予測レイテンシに基づいて、選択された前記デプロイパターンにおける前記予測制御時間を算出することを特徴とする計算機システム。
【請求項5】
請求項1に記載の計算機システムであって、
ユーザから、前記機器の制御の要否に関する通知を受信し、
前記通知に基づいて、制御を行う前記機器を特定することを特徴とする計算機システム。
【請求項6】
請求項1に記載の計算機システムであって、
前記タスクの処理時間の確率分布、及び前記デプロイ計画に含まれる前記デプロイパターンを表示するインタフェースを提供することを特徴とする計算機システム。
【請求項7】
計算機システムが実行する機器を制御するためのタスク群のデプロイ計画の生成方法であって、
前記計算機システムは、
少なくとも一つの計算機を備え、
クラウドシステム及びオンプレミス型のローカルシステムと接続し、
前記デプロイ計画の生成方法は、
複数の前記機器の制御契機を検知した場合、前記少なくとも一つの計算機が、前記クラウドシステム及び前記ローカルシステムのリソースの空きに関するリソース情報を取得する第1のステップと、
前記少なくとも一つの計算機が、複数の前記機器の各々の前記タスク群について、一つのタスクの実行に要する処理時間の確率分布を算出する第1算出処理を実行する第2のステップと、
前記少なくとも一つの計算機が、複数の前記機器の各々の前記タスク群のデプロイパターンを生成する第3のステップと、
前記少なくとも一つの計算機が、前記第1算出処理の結果に基づいて、複数の前記機器の各々の前記タスク群の前記デプロイパターンについて、前記機器の制御に要する予測制御時間を算出する第2算出処理を実行する第4のステップと、
前記少なくとも一つの計算機が、前記第2算出処理の結果及び前記リソース情報に基づいて、所定の時間に前記制御が終了する前記機器の数が最大となるように複数の前記機器の前記タスク群の前記デプロイパターンを組み合わせることによって、複数の前記機器の前記タスク群のデプロイ計画を生成する第5のステップと、
を含むことを特徴とするデプロイ計画の生成方法。
【請求項8】
請求項7に記載のデプロイ計画の生成方法であって、
前記機器の前記タスク群は、
前記機器でのみ実行される第1タスクを少なくとも一つ含み、
前記クラウドシステム及び前記ローカルシステムのいずれか一方で実行される第2タスクを少なくとも一つ含み、
前記第2のステップは、
前記少なくとも一つの計算機が、前記第1タスクの処理時間の確率分布を算出する第6のステップと、
前記少なくとも一つの計算機が、前記クラウドシステムで、前記第2タスクを実行した場合の処理時間の確率分布を算出する第7のステップと、
前記少なくとも一つの計算機が、前記ローカルシステムで、前記第2タスクを実行した場合の処理時間の確率分布を算出する第8のステップと、を含むことを特徴とするデプロイ計画の生成方法。
【請求項9】
請求項8に記載のデプロイ計画の生成方法であって、
前記計算機システムは、前記第1タスクの実行履歴及び前記第2タスクの実行履歴を管理し、
前記第1タスクの実行履歴は、前記機器のスペックの情報及び処理時間を含み、
前記第2タスクの実行履歴は、実行されたシステムの識別情報及び処理時間を含み、
前記デプロイ計画の生成方法は、前記少なくとも一つの計算機が、前記機器のスペックの情報を取得するステップを含み、
前記第6のステップは、前記少なくとも一つの計算機が、前記機器のスペックに対応する前記第1タスクの実行履歴に基づいて、前記第1タスクの処理時間の確率分布を算出するステップを含み、
前記第7のステップは、前記少なくとも一つの計算機が、前記クラウドシステムで実行された前記第2タスクの実行履歴に基づいて、前記クラウドシステムで、前記第2タスクを実行した場合の処理時間の確率分布を算出するステップを含み、
前記第8のステップは、前記少なくとも一つの計算機が、前記ローカルシステムで実行された前記第2タスクの実行履歴に基づいて、前記ローカルシステムで、前記第2タスクを実行した場合の処理時間の確率分布を算出するステップを含むことを特徴とするデプロイ計画の生成方法。
【請求項10】
請求項7に記載のデプロイ計画の生成方法であって、
前記少なくとも一つの計算機が、前記機器及び前記クラウドシステムの間の通信のレイテンシ、前記機器及び前記ローカルシステムの間の通信のレイテンシ、並びに、前記クラウドシステム及び前記ローカルシステムの間の通信のレイテンシを監視するステップを含み、
前記第4のステップは、
前記少なくとも一つの計算機が、一つの前記デプロイパターンを選択するステップと、
前記少なくとも一つの計算機が、前記第1算出処理の結果に基づいて、選択された前記デプロイパターンにおける前記タスク群の各々の予測処理時間を算出するステップと、
前記少なくとも一つの計算機が、前記監視の結果に基づいて、選択された前記デプロイパターンにおける通信の予測レイテンシを算出するステップと、
前記少なくとも一つの計算機が、選択された前記デプロイパターンにおける前記タスク群の各々の前記予測処理時間及び前記予測レイテンシに基づいて、選択された前記デプロイパターンにおける前記予測制御時間を算出するステップと、を含むことを特徴とするデプロイ計画の生成方法。
【請求項11】
請求項7に記載のデプロイ計画の生成方法であって、
前記少なくとも一つの計算機が、ユーザから、前記機器の制御の要否に関する通知を受信するステップと、
前記少なくとも一つの計算機が、前記通知に基づいて、制御を行う前記機器を特定するステップと、を含むことを特徴とするデプロイ計画の生成方法。
【請求項12】
請求項7に記載のデプロイ計画の生成方法であって、
前記少なくとも一つの計算機が、前記タスクの処理時間の確率分布、及び前記デプロイ計画に含まれる前記デプロイパターンを表示するインタフェースを提供するステップを含むことを特徴とするデプロイ計画の生成方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、クラウドシステム及びオンプレミス型システムへのタスクのデプロイを制御するシステム及び方法に関する。
【背景技術】
【0002】
情報量の増大に伴って、エッジコンピューティングが注目されている。また、エッジ装置を含むオンプレミス型のシステムと、クラウドシステムとを併用したシステムの利用も注目されている。
【0003】
任意のタスクを実行するアプリケーションの開発者は、開発時に、オンプレミス型のシステム及びクラウドシステムのいずれにタスクを割り当てるかを決定することが難しい。そのため、最適なタスクの割当てを実現する技術が望まれている。これに対して特許文献1に記載の技術が知られている。
【0004】
特許文献1には、「入出力装置1と、入出力データと制御プログラムとを、複数の演算サーバ3に分配する管理サーバ2と、複数の演算サーバ3と、演算結果を集約して入出
力装置に出力する集約サーバ4と、ネットワーク5、6、を備えるクラウド制御システムの制御プログラムのスケジューリング方法であって、管理サーバは、分配されたタスク毎の演算時間データを、夫々の演算サーバについて予め採取して記憶しておき、制御プログラムを分配し、演算時間が予め定める確率での基準時間以上となった場合に、次の制御周期において当該演算サーバに分配する制御プログラムの演算量が減じるように分配する。」ことが記載されている。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1に記載の技術は、クラウドシステムにおける制御プログラム(タスク)の割当てに着目した技術であり、いわゆるハイブリッドクラウドにおけるタスクの割当てについては考慮されていない。また、複数のタスクの割当てについては考慮されていない。
【0007】
本発明は、クラウドシステム及びオンプレミス型システムへの複数のタスクの割当てを実現するシステムを提供することを目的とする。
【課題を解決するための手段】
【0008】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、機器を制御するためのタスク群のデプロイを制御する計算機システムであって、少なくとも一つの計算機を備え、クラウドシステム及びオンプレミス型のローカルシステムと接続し、複数の前記機器の制御契機を検知した場合、前記クラウドシステム及び前記ローカルシステムのリソースの空きに関するリソース情報を取得し、複数の前記機器の各々の前記タスク群について、一つのタスクの実行に要する処理時間の確率分布を算出する第1算出処理を実行し、複数の前記機器の各々の前記タスク群のデプロイパターンを生成し、前記第1算出処理の結果に基づいて、複数の前記機器の各々の前記タスク群の前記デプロイパターンについて、前記機器の制御に要する予測制御時間を算出する第2算出処理を実行し、前記第2算出処理の結果及び前記リソース情報に基づいて、所定の時間に前記制御が終了する前記機器の数が最大となるように複数の前記機器の前記タスク群の前記デプロイパターンを組み合わせることによって、複数の前記機器の前記タスク群のデプロイ計画を生成する。
【発明の効果】
【0009】
本発明によれば、所定の時間内に制御が終了する機器の数が最大となるように、クラウドシステム及びローカルシステムへのタスクのデプロイが可能となる。上記した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【0010】
【
図1】実施例1のシステムの構成例を示す図である。
【
図2】実施例1のデプロイ制御サーバの構成の一例を示す図である。
【
図3】実施例1のタスク実行サーバの構成の一例を示す図である。
【
図4】実施例1の制御管理情報のデータ構造の一例を示す図である。
【
図5A】実施例1のタスク実行履歴情報のデータ構造の一例を示す図である。
【
図5B】実施例1のタスク実行履歴情報のデータ構造の一例を示す図である。
【
図6】実施例1のネットワーク状態情報のデータ構造の一例を示す図である。
【
図7】実施例1のデプロイ計画のデータ構造の一例を示す図である。
【
図8】実施例1のシステムにおけるタスクのデプロイ制御の流れを説明するシーケンス図である。
【
図9】実施例1のデプロイ制御サーバの処理の流れを示す図である。
【
図10】実施例1のデプロイ制御サーバが実行する計画生成処理を説明するフローチャートである。
【
図11】実施例1のデプロイ制御サーバが提示する画面の一例を示す図である。
【
図12】実施例1のデプロイ制御サーバが提示する画面の一例を示す図である。
【
図13】実施例1のデプロイ制御サーバが提示する画面の一例を示す図である。
【発明を実施するための形態】
【0011】
以下、本発明の実施例を、図面を用いて説明する。ただし、本発明は以下に示す実施例の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で、その具体的構成を変更し得ることは当業者であれば容易に理解される。
【0012】
以下に説明する発明の構成において、同一又は類似する構成又は機能には同一の符号を付し、重複する説明は省略する。
【0013】
本明細書等における「第1」、「第2」、「第3」等の表記は、構成要素を識別するために付するものであり、必ずしも、数又は順序を限定するものではない。
【0014】
図面等において示す各構成の位置、大きさ、形状、及び範囲等は、発明の理解を容易にするため、実際の位置、大きさ、形状、及び範囲等を表していない場合がある。したがって、本発明では、図面等に開示された位置、大きさ、形状、及び範囲等に限定されない。
【実施例0015】
図1は、実施例1のシステムの構成例を示す図である。
【0016】
システムは、クラウドシステム100及びローカルシステム101から構成される。クラウドシステム100及びローカルシステム101は、WAN(Wide Area Network)及びLAN(Local Area Network)等のネットワーク102を介して互いに接続される。ネットワークの接続方式は有線及び無線のいずれでもよい。
【0017】
クラウドシステム100は、複数の計算機を有するシステムであって、デプロイ制御サーバ110及びタスク実行サーバ111を含む。デプロイ制御サーバ110及びタスク実行サーバ111はネットワーク112を介して接続される。デプロイ制御サーバ110は制御機器120を制御するためのタスクのデプロイを制御する。タスク実行サーバ111はタスクを実行する。
【0018】
ローカルシステム101は、エッジコンピューティングに対応したオンプレミス型のシステムであって、複数の制御機器120及びタスク実行サーバ121を含む。なお、制御機器120はローカルシステム101に含まれていなくてもよい。複数の制御機器120は、ネットワーク122を介してタスク実行サーバ121と接続し、ネットワーク102を介してクラウドシステム100と接続する。また、タスク実行サーバ121はネットワーク102を介してクラウドシステム100と接続する。制御機器120は、タスクに基づいて制御される機器であり、例えば、ロボット及び車両等である。タスク実行サーバ121はタスクを実行する。ネットワーク122は、例えば、5Gに対応したネットワークが考えられる。なお、タスクは、スレッド、プロセス、及びアプリケーション等に読み替えてもよい。
【0019】
実施例1では、制御機器120の制御では、複数のタスクが実行されるものとする。また、複数のタスクのうち少なくとも一つのタスクは、制御機器120が実行するものとする。このように、制御機器120と、タスク実行サーバ111、121とが協働して、制御機器120が制御される。
【0020】
以下の説明では、制御機器120が実行するタスクを「機器タスク」と記載する。機器タスクはデプロイの対象とはならない。また、制御機器120の制御に要する時間を「制御時間」と記載し、一つのタスクの実行に要する時間を「処理時間」と記載する。
【0021】
なお、デプロイ制御サーバ110及びタスク実行サーバ111、121は、物理的な計算機を用いて実現してもよいし、仮想化技術を用いて実現してもよい。
【0022】
図2は、実施例1のデプロイ制御サーバ110の構成の一例を示す図である。
【0023】
デプロイ制御サーバ110は、プロセッサ200、主記憶装置201、副記憶装置202、入出力装置203、及びネットワークインタフェース204を有する。各ハードウェア要素は内部バスを介して互いに接続される。
【0024】
プロセッサ200は、デプロイ制御サーバ110全体の制御を行う演算装置であり、主記憶装置201に格納されるプログラムを実行する。プロセッサ200がプログラムにしたがって処理を実行することによって、特定の機能を実現する機能部(モジュール)として動作する。以下の説明では、機能部を主語に処理を説明する場合、プロセッサ200が当該機能部を実現するプログラムを実行していることを示す。
【0025】
主記憶装置201は、プロセッサ200が実行するプログラム及びプログラムが実行する情報を格納する記憶装置であり、例えば、揮発性又は不揮発性のメモリである。主記憶装置201はワークエリアとしても用いられる。
【0026】
副記憶装置202は、大容量かつ永続的にデータを格納する記憶装置であり、例えば、HDD(Hard Disk Drive)及びSSD(Solid State Drive)等である。なお、主記憶装置201に格納されるプログラム及び情報は、副記憶装置202に格納されてもよい。この場合、プロセッサ200が副記憶装置202からプログラム及び情報を読み出し、主記憶装置201にロードする。
【0027】
入出力装置203は、情報の入力及び情報の出力を行うための装置であり、例えば、キーボード、マウス、タッチパネル、及びディスプレイ等である。
【0028】
ネットワークインタフェース204は、ネットワーク介して外部の装置と接続するためのインタフェースである。
【0029】
図2に示すように、主記憶装置201は、インタフェース部210、計画生成部211、タスクデプロイ部212、情報取得部213、及びタスク実行履歴管理部214を実現するプログラムを格納する。また、主記憶装置201は、管理DB215を保持する。
【0030】
インタフェース部210は、ユーザに対して情報を提示する。計画生成部211は、タスクのデプロイ計画223を生成する。タスクデプロイ部212は、デプロイ計画223に基づいてタスクのデプロイを制御する。情報取得部213は、各種情報を取得する。タスク実行履歴管理部214は、タスクの実行履歴を管理する。
【0031】
管理DB215は、各種情報を管理するためのデータベースであり、制御管理情報220、タスク実行履歴情報221、ネットワーク状態情報222、及びデプロイ計画223を含む。制御管理情報220は、制御機器120の制御を管理するための情報である。タスク実行履歴情報221は、タスクの実行履歴を管理するための情報である。ネットワーク状態情報222は、ネットワークの通信状態を管理するための情報である。デプロイ計画223は、タスクのデプロイを制御するための情報である。
【0032】
なお、デプロイ制御サーバ110が有する各機能部については、複数の機能部を一つの機能部にまとめてもよいし、一つの機能部を機能毎に複数の機能部に分けてもよい。
【0033】
なお、複数の計算機から構成される計算機システムを用いて、デプロイ制御サーバ110が有する機能部を実現してもよい。
【0034】
図3は、実施例1のタスク実行サーバ111の構成の一例を示す図である。なお、タスク実行サーバ121を同様の構成である。
【0035】
タスク実行サーバ111は、プロセッサ300、主記憶装置301、副記憶装置302、入出力装置303、及びネットワークインタフェース304を有する。各ハードウェア要素は内部バスを介して互いに接続される。プロセッサ300、主記憶装置301、副記憶装置302、入出力装置303、及びネットワークインタフェース304は、プロセッサ200、主記憶装置201、副記憶装置202、入出力装置203、及びネットワークインタフェース204と同一のハードウェア要素である。
【0036】
図3に示すように、主記憶装置301は、タスク312を実行するインスタンス311を実現する実行環境310を提供するプログラムを格納する。インスタンス311は、例えば、仮想マシン(VM)及びコンテナ等である。
【0037】
実施例1では、車両を制御機器120とし、駐車場における車両の自動駐車を制御機器120の制御として扱う。ここで、実施例1の制御管理情報220、タスク実行履歴情報221、ネットワーク状態情報222、及びデプロイ計画223のデータ構造の一例を説明する。
【0038】
図4は、実施例1の制御管理情報220のデータ構造の一例を示す図である。
【0039】
制御管理情報220は、車両ID401、スペック402、駐車予告通知時刻403、駐車予定時刻404、ドライバ要求405、自動運転フラグ406、及びデプロイ状況407を含むエントリを格納する。一つの車両に対して一つのエントリが存在する。なお、エントリに含まれるフィールドは前述したものに限定されない。前述したフィールドのいずれかを含まなくてもよいし、また、他のフィールドを含んでもよい。
【0040】
車両ID401は、制御機器120である車両の識別情報を格納するフィールドである。スペック402は、機器タスクの実行に関わるスペックに関する情報を格納するフィールドである。スペック402には、例えば、車両に搭載されるECU(Engine Control Unit)の型、ECUの制御プログラムのバージョン、及び通信規格等が格納される。
【0041】
駐車予告通知時刻403は、車両から駐車予告通知を受信した時刻を格納するフィールドである。駐車予定時刻404は、車両の駐車制御の予測開始時刻を格納するフィールドである。
【0042】
ドライバ要求405は、ドライバの制御要求を示す値を格納するフィールドである。ドライバ要求405には、「自動」、「手動」、及び「両方」のいずれかが格納される。「自動」は自動制御による駐車を希望していることを示す。「手動」はドライバ自身による駐車を希望していることを示す。「両方」は「自動」及び「手動」のいずれでもよいことを示す。
【0043】
自動運転フラグ406は、自動制御による駐車を行うか否かを示すフラグを格納するフィールドである。自動運転フラグ406には「あり」及び「なし」のいずれかが格納される。「あり」は自動制御による駐車を行うことを示し、「なし」は手動による駐車を行うことを示す。
【0044】
デプロイ状況407は、自動制御を実現するタスクのデプロイ状況を格納するフィールドである。「C:pod-xx」はタスク実行サーバ111にデプロイされたタスクを実行するインスタンス311を表し、「L:pod-xx」はタスク実行サーバ121にデプロイされたタスクを実行するインスタンス311を表す。なお、手動で駐車を行う車両のデプロイ状況407は空欄である。
【0045】
図5A及び
図5Bは、実施例1のタスク実行履歴情報221のデータ構造の一例を示す図である。
【0046】
タスク実行履歴情報221は、クラウドシステム100及びローカルシステム101のいずれかで実行されたタスクの実行履歴を管理するためのテーブル500と、制御機器120が実行したタスク(機器タスク)の実行履歴を管理するためのテーブル510とを含む。
【0047】
テーブル500は、履歴ID501、実行場所502、タスクID503、開始時刻504、終了時刻505、及び処理時間506を含むエントリを格納する。一つのタスクに対して一つのエントリが存在する。なお、エントリに含まれるフィールドは前述したものに限定されない。前述したフィールドのいずれかを含まなくてもよいし、また、他のフィールドを含んでもよい。
【0048】
履歴ID501は、タスクの実行履歴を一意に識別するための識別情報を格納するフィールドである。実行場所502は、タスクの実行場所を格納するフィールドである。実行場所502には「クラウド」及び「ローカル」のいずれかが格納される。タスクID503は、タスクの識別情報を格納するフィールドである。タスクID503には、例えば、タスクの名称及びの種別等が格納される。なお、タスクの名称等には、制御機器120の型及びスペック等が特定できる情報が含まれているものとする。
【0049】
開始時刻504は、タスクの開始時刻を格納するフィールドである。終了時刻505は、タスクの終了時刻を格納するフィールドである。処理時間506は、タスクの処理時間を格納するフィールドである。
【0050】
テーブル510は、履歴ID511、スペック512、タスクID513、開始時刻514、終了時刻515、及び処理時間516を含むエントリを格納する。一つのタスクに対して一つのエントリが存在する。なお、エントリに含まれるフィールドは前述したものに限定されない。前述したフィールドのいずれかを含まなくてもよいし、また、他のフィールドを含んでもよい。
【0051】
履歴ID511は、タスクの実行履歴を一意に識別するための識別情報を格納するフィールドである。スペック512は、タスクを実行した制御機器120のスペックに関する情報を格納するフィールドである。タスクID513は、タスクの識別情報を格納するフィールドである。
【0052】
開始時刻514は、タスクの開始時刻を格納するフィールドである。終了時刻515は、タスクの終了時刻を格納するフィールドである。処理時間516は、タスクの処理時間を格納するフィールドである。
【0053】
図6は、実施例1のネットワーク状態情報222のデータ構造の一例を示す図である。
【0054】
ネットワーク状態情報222は、計測時刻601、第1平均通信時間602、第2平均通信時間603、及び第3平均通信時間604を含むエントリを格納する。1回の計測に対して一つのエントリが存在する。なお、エントリに含まれるフィールドは前述したものに限定されない。前述したフィールドのいずれかを含まなくてもよいし、また、他のフィールドを含んでもよい。
【0055】
計測時刻601は、通信状態の計測時刻を格納するフィールドである。第1平均通信時間602は、クラウドシステム100及びローカルシステム101の間の通信時間(レイテンシ)の平均値を格納するフィールドである。第2平均通信時間603は、クラウドシステム100及び車両の間の通信時間(レイテンシ)の平均値を格納するフィールドである。第3平均通信時間604は、タスク実行サーバ121及び車両の間の通信時間(レイテンシ)の平均値を格納するフィールドである。
【0056】
実施例1では、制御機器120及びタスク実行サーバ111、121が協働して、制御機器120が制御される。デプロイ制御サーバ110は、タスク間のデータ通信のレイテンシを見積もるためにネットワーク状態情報222を管理する。
【0057】
図7は、実施例1のデプロイ計画223のデータ構造の一例を示す図である。
【0058】
デプロイ計画223は、タスクID701及び実行場所702を含むエントリを格納する。一つのタスクに対して一つのエントリが存在する。なお、エントリに含まれるフィールドは前述したものに限定されない。前述したフィールドのいずれかを含まなくてもよいし、また、他のフィールドを含んでもよい。
【0059】
タスクID701は、タスクの識別情報を格納するフィールドである。実行場所702は、タスクの実行場所を格納するフィールドである。実行場所702には「クラウド」、「ローカル」、及び「機器」のいずれかが格納される。
【0060】
次に、システムにおけるタスクのデプロイ制御について説明する。
図8は、実施例1のシステムにおけるタスクのデプロイ制御の流れを説明するシーケンス図である。
図9は、実施例1のデプロイ制御サーバ110の処理の流れを示す図である。
【0061】
デプロイ制御サーバ110の情報取得部213は、周期的に、通信状態を計測し、計測結果をネットワーク状態情報222に格納する。
【0062】
制御機器120は、デプロイ制御サーバ110に駐車予告通知を送信する(ステップS101)。例えば、制御機器120は、駐車場の近辺に到着した場合、駐車予告通知を送信する。駐車予告通知には、車両の識別情報、車両のスペック、車両の走行状態、ドライバの制御希望が含まれる。
【0063】
デプロイ制御サーバ110の情報取得部213は、駐車予告通知を受信した場合、制御管理情報220にエントリを追加する。情報取得部213は、追加されたエントリの車両ID401、スペック402、駐車予告通知時刻403、及びドライバ要求405に値を設定する。デプロイ制御サーバ110の情報取得部213は、車両の駐車予定時刻を算出する。例えば、機械学習等で生成された予測モデルを用いて算出する方法が考えられる。予測モデルの入力としては、車両の走行状態等が考えられる。情報取得部213は、追加されたエントリの駐車予定時刻404に値を設定する。
【0064】
デプロイ制御サーバ110の計画生成部211は、所定のタイミングで、タスク実行サーバ111、121に、空きリソースの問合せを行う(ステップS102)。タスク実行サーバ111、121は、当該問合せに対して、空きリソースに関する情報を含む応答をデプロイ制御サーバ110に送信する(ステップS103)。問合せのタイミングは、例えば、駐車予告通知を受信した場合、受信した駐車予告通知の数が閾値より大きい場合、実行周期を経過した場合等が考えられる。
【0065】
デプロイ制御サーバ110の計画生成部211は、タスク実行サーバ111、121からの応答を受信した後、計画生成処理を実行する(ステップS104)。計画生成処理の詳細は
図9を用いて説明する。
【0066】
デプロイ制御サーバ110のタスクデプロイ部212は、デプロイ計画223に基づいて、制御機器120に制御情報105を送信する(ステップS105)。
【0067】
自動駐車を行う制御機器120には、タスクを実行するタスク実行サーバ111、121に接続するための接続情報を含む制御情報を送信される。接続情報は、例えば、URLである。
【0068】
デプロイ制御サーバ110のタスクデプロイ部212は、デプロイ計画223に基づいて、タスク実行サーバ111、121にデプロイ指示を送信する(ステップS106)。
【0069】
なお、全てのタスクのデプロイが終了した場合、デプロイ制御サーバ110は、デプロイ計画223を削除又は初期化する。
【0070】
タスク実行サーバ111、121は、デプロイ指示を受信した場合、インスタンス311を生成し(ステップS107)、割り当てられたタスクを実行することによって、制御機器120と協働して制御機器120を制御する(ステップS108)。なお、既存のインスタンス311を用いる場合には、インスタンス311の生成は行われない。
【0071】
タスク実行サーバ111、121は、タスクが終了した場合、デプロイ制御サーバ110にタスクの実行履歴を送信する。また、制御機器120は、機器タスクが終了した場合、デプロイ制御サーバ110に機器タスクの実行履歴を送信する。タスクの実行履歴には、タスクの情報、開始時刻、及び終了時刻等が含まれる。
【0072】
デプロイ制御サーバ110のタスク実行履歴管理部214は、タスクの実行履歴を受信した場合、タスク実行履歴情報221に登録する(ステップS109)。ここで、一つのタスクの実行履歴に対する登録処理について説明する。
【0073】
クラウドシステム100又はローカルシステム101からタスクの実行履歴を受信した場合、タスク実行履歴管理部214は、テーブル500に一つのエントリを追加し、追加されたエントリの履歴ID501に識別情報を設定する。タスク実行履歴管理部214は、追加されたエントリのタスクID503、開始時刻504、及び終了時刻505に、タスクの実行履歴に含まれる値を設定する。タスク実行履歴管理部214は、タスクの実行履歴の送信元がタスク実行サーバ111である場合、追加されたエントリの実行場所502に「クラウド」を設定し、タスクの実行履歴の送信元がタスク実行サーバ121である場合、追加されたエントリの実行場所502に「ローカル」を設定する。また、タスク実行履歴管理部214は、開始時刻及び終了時刻に基づいて処理時間を算出し、追加されたエントリの処理時間506に算出結果を設定する。
【0074】
制御機器120から実行履歴を受信した場合、タスク実行履歴管理部214は、テーブル510に一つのエントリを追加し、追加されたエントリの履歴ID511に識別情報を設定する。タスク実行履歴管理部214は、追加されたエントリのスペック512、タスクID513、開始時刻514、及び終了時刻505に、タスクの実行履歴に含まれる値を設定する。また、タスク実行履歴管理部214は、開始時刻及び終了時刻に基づいて処理時間を算出し、追加されたエントリの処理時間516に算出結果を設定する。以上が、実行履歴の登録処理の説明である。
【0075】
タスク実行サーバ111、121は、タスク終了後、一定期間経過した場合、インスタンス311を削除する(ステップS110)。
【0076】
図10は、実施例1のデプロイ制御サーバ110が実行する計画生成処理を説明するフローチャートである。
【0077】
計画生成部211は、制御管理情報220を参照して、処理対象の制御機器120のリストを生成する(ステップS201)。
【0078】
具体的には、計画生成部211は、制御管理情報220の駐車予定時刻404を参照し、駐車予定時刻が現時刻を始点としたウインドウ幅に含まれるエントリを検索する。ウインドウ幅は、例えば、8分である。計画生成部211は、検索されたエントリのドライバ要求405を参照し、ドライバ要求405が「自動」又は「両方」であるエントリを特定する。計画生成部211は、特定されたエントリの車両ID401のリストを生成する。
【0079】
計画生成部211は、制御機器120のループ処理を開始する(ステップS202)。計画生成部211は、リストの中から一つの制御機器120を選択する。
【0080】
計画生成部211は、タスク実行履歴情報221に基づいて、制御機器120の制御を実現するタスクの処理時間の確率分布(確率密度関数)を算出する(ステップS203)。具体的には、以下のような処理が実行される。
【0081】
(S203-1)計画生成部211は、選択した制御機器120の制御を実現するタスク群を特定する。
【0082】
(S203-2)計画生成部211は、特定されたタスク群の中から一つのタスクを選択する。
【0083】
(S203-3)計画生成部211は、タスク実行履歴情報221に基づいて、選択したタスクの処理時間の確率分布を算出する。
【0084】
選択されたタスクが機器タスクである場合、計画生成部211は、テーブル510のスペック512及びタスクID513を参照し、スペック及びタスクの識別情報が一致するエントリを検索する。計画生成部211は、検索されたエントリの処理時間516に基づいて、機器タスクの処理時間の確率分布を算出する。以下の説明では、算出された確率分布を第1確率分布と記載する。
【0085】
選択されたタスクが機器タスクではない場合、計画生成部211は、テーブル500のタスクID503を参照し、タスクの識別情報が一致するエントリを検索する。計画生成部211は、検索されたエントリの処理時間506に基づいて、クラウドシステム100にデプロイされたタスクの処理時間の確率分布と、ローカルシステム101にデプロイされたタスクの処理時間の確率分布とを算出する。
【0086】
具体的には、計画生成部211は、検索されたエントリの実行場所502に「クラウド」が設定されたエントリを特定する。計画生成部211は、特定されたエントリの処理時間508に基づいて、クラウドシステム100にデプロイされたタスクの処理時間の確率分布を算出する。以下の説明では、算出された確率分布を第2確率分布と記載する。また、計画生成部211は、検索されたエントリの実行場所502に「ローカル」が設定されたエントリを特定する。計画生成部211は、特定されたエントリの処理時間508に基づいて、ローカルシステム101にデプロイされたタスクの処理時間の確率分布を算出する。以下の説明では、算出された確率分布を第3確率分布と記載する。
【0087】
なお、実行履歴の数が少ない場合、計画生成部211は、デフォルトの確率分布を用いるものとする。
【0088】
(S203-4)全てのタスクについて処理が完了していない場合、計画生成部211はS203-2に戻る。全てのタスクについて処理が完了した場合、計画生成部211はステップS203の処理を終了する。以上がステップS203の処理の説明である。
【0089】
計画生成部211は、リストに登録された全ての制御機器120について処理が完了したか否かを判定する(ステップS204)。
【0090】
リストに登録された全ての制御機器120について処理が完了していない場合、計画生成部211は、ステップS202に戻り、新たな制御機器120を選択する。
【0091】
リストに登録された全ての制御機器120について処理が完了した場合、計画生成部211は、第1確率分布、第2確率分布、第3確率分布、ネットワーク状態情報222、及び空きリソースの情報に基づいて、リストに登録された制御機器120の各々の制御を実現するタスクの実行拠点を決定する(ステップS205)。具体的には、以下のような処理が実行される。
【0092】
(S205-1)計画生成部211は、各制御機器120についてデプロイパターンを生成し、デプロイパターンの制御時間を算出する。例えば、一つの制御機器120について以下のようにしてデプロイパターンの生成及び処理時間の算出が行われる。
【0093】
(S205-1-1)計画生成部211は、複数のデプロイパターンを生成する。ここでは、配置可能なシステムについて網羅的にデプロイパターンが生成される。なお、予め生成するデプロイパターンについて制約条件を課してもよい。
【0094】
(S205-1-2)計画生成部211は、デプロイパターンを選択し、第1確率分布から機器タスクの予測処理時間を算出し、また、デプロイ先のシステムの確率分布(第2確率分布又は第3確率分布)からタスクの予測処理時間を算出する。例えば、処理時間の平均値が予測処理時間として算出される。なお、平均処理時間ではなく、中央値又は確率が最も大きい処理時間が予測処理時間として算出されてもよい。計画生成部211は、ネットワーク状態情報222に基づいて予測レイテンシを算出する。例えば、最新のレイテンシが予測レイテンシとして算出される。なお、平均値等が予測レイテンシとして算出されてもよい。計画生成部211は、予測処理時間及び予測レイテンシに基づいて、デプロイパターンの予測制御時間を算出する。レイテンシを考慮することによって、制御時間をより正確に予測できる。
【0095】
(S205-1-3)全てのデプロイパターンについて処理が完了していない場合、計画生成部211はS205-1-2に戻る。全てのデプロイパターンについて処理が完了した場合、計画生成部211は、デプロイパターンと予測処理時間とを関連づけてワークエリアに記憶する。以上が、デプロイパターンの生成及び処理時間の算出に関する説明である。
【0096】
(S205-2)計画生成部211は、空きリソースの情報に基づいて、クラウドシステム100及びローカルシステム101に配置可能なタスクの上限値(配置上限値)を算出する。
【0097】
(S205-3)計画生成部211は、タスクのデプロイ先、予測制御時間、及び配置上限値から定義される評価関数に基づいて、各制御機器120のタスクのデプロイパターンの組合せを探索する。評価関数は、タスクのデプロイ先に応じたコストの合計値の最小値を求める関数が考えられる。処理時間が基準時間より大きくなるデプロイパターンを採用する場合、コストが大きくなるように関数を定義する。前述の評価関数を用いることによって、基準時間内に制御が終了する制御機器120の数が最大となるタスクのデプロイパターンの組合せを決定できる。
【0098】
なお、基準時間は予め設定されているものとする。基準時間は、例えば、4分である。
【0099】
(S205-4)計画生成部211は、デプロイパターンの組合せに基づいて、デプロイ計画223を生成する。また、計画生成部211は、処理結果に基づいて、制御管理情報220のエントリの自動運転フラグ406に値を設定する。以上がステップS205の処理の説明である。
【0100】
次に、インタフェース部210によって提示される画面について説明する。
図11、
図12、及び
図13は、実施例1のデプロイ制御サーバ110が提示する画面の一例を示す図である。
【0101】
図11に示す画面1100は、制御機器120の制御状態を表示する画面である。画面1100は、表示欄1101及びテーブル1102を含む。表示欄1101は、駐車スペースにおける車両の制御状態を視覚的に表示する欄である。テーブル1102は、車両の制御状態の詳細を表示するテーブルである。
【0102】
図12に示す画面1200は、タスクのデプロイ状況を表示する画面である。画面1200は、表示欄1201及びテーブル1202を含む。表示欄1201は、システムへのタスクのデプロイ状況を視覚的に表示する欄である。テーブル1202は、システムへのタスクのデプロイ状況の詳細を表示するテーブルである。
【0103】
図13に示す画面1300は、計画生成処理の結果を表示する画面である。画面1300は、表示欄1301、1303、1304、及び選択欄1302を含む。表示欄1301は、デプロイ計画223を生成するためのアルゴリズムを表示する欄である。実施例1では、予めアルゴリズムが設定されているものとして説明したが、ユーザがアルゴリズムを選択できるようにしてもよい。選択欄1302は、デプロイ計画223におけるデプロイパターンを表示する制御機器120を選択するため欄である。表示欄1303は、制御機器120のタスクの処理時間の確率分布を表示する欄である。表示欄1304は、制御機器120の制御時間を表示する欄である。表示欄1304には、制御時間とともに、基準時間に対する猶予時間も表示される。
【0104】
なお、予測処理時間が基準時間より大きくなる制御機器120については、縮退用のタスクに置き換えてデプロイを行うようにしてもよい。縮退用のタスクは、例えば、制御パラメータ及び制御内容等が変更されたタスクである。また、予測処理時間が基準時間より大きくなる制御機器120については、手動での駐車を指示するための制御情報を送信するようにしてもよい。
【0105】
本発明によれば、基準時間内に制御が終了する制御機器120の数が最大となるように、クラウドシステム100及びローカルシステム101へのタスクのデプロイ計画を生成することができる。
【0106】
なお、本発明は、エッジコンピューティングに対応していないオンプレミス型のシステムでも同様の効果を奏する。
【0107】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、各実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。
【0108】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるプロセッサが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、CD-ROM、DVD-ROM、ハードディスク、SSD(Solid State Drive)、光ディスク、光磁気ディスク、CD-R、磁気テープ、不揮発性のメモリカード、ROMなどが用いられる。
【0109】
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、C/C++、perl、Shell、PHP、Python、Java(登録商標)等の広範囲のプログラム又はスクリプト言語で実装できる。
【0110】
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段又はCD-RW、CD-R等の記憶媒体に格納し、コンピュータが備えるプロセッサが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。
【0111】
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。