以下に、本願に係るコンピュータシステム及びシステム制御方法の実施形態を図面に基づいて詳細に説明する。なお、この実施形態により本願に係るコンピュータシステム及びシステム制御方法が限定されるものではない。
(第1の実施形態)
[第1の実施形態に係るコンピュータシステムの構成]
まず、図1を用いて、第1の実施形態に係るコンピュータシステムについて説明する。図1は、第1の実施形態に係るコンピュータシステム1の構成例を示す図である。図1に例示するように、第1の実施形態に係るコンピュータシステム1には、管理装置100と、移動端末200と、クラウドサーバ300とが含まれる。
第1の実施形態に係るコンピュータシステム1では、移動端末200及びクラウドサーバ300において同一のアプリケーションが実行される。管理装置100は、移動端末200及びクラウドサーバ300におけるアプリケーションの実行状況を管理する。かかる管理装置100は、ネットワークNを介して移動端末200と通信可能に接続される。また、管理装置100は、クラウドサーバ300とも通信可能に接続される。
移動端末200は、例えば、携帯電話機やPDA等の情報処理装置であって、ネットワークNと無線通信を行うことにより、管理装置100と通信可能に接続される。かかる移動端末200は、利用者による操作に従ってアプリケーションを実行したり、所定の時刻になった際にアプリケーションを実行したり、起動中に常駐型のアプリケーションを常に実行したりする。
なお、第1の実施形態に係る移動端末200は、スマートフォンであり、Android(登録商標)等のモバイルOS(Operating System)がインストールされているものとする。すなわち、第1の実施形態に係る移動端末200は、例えば、モバイルOS上で動作するアプリケーションを実行する。
クラウドサーバ300は、1台以上の物理装置が含まれ、かかる物理装置によって仮想的な移動端末、仮想的なPC、仮想的なサーバ装置、仮想的な通信装置、仮想的な外部記憶装置などを含む仮想装置群が形成される。第1の実施形態に係るクラウドサーバ300は、移動端末200に対応する仮想移動端末301を形成する。そして、クラウドサーバ300は、かかる仮想移動端末301によって、移動端末200において実行されるアプリケーションと同一のアプリケーションを実行する。
なお、図1に示した例において、管理装置100は、物理的に存在する物理装置であってもよいし、クラウドサーバ300によって実現される仮想装置であってもよいし、図示しない他のクラウドサーバによって実現される仮想装置であってもよい。
[第1の実施形態に係るコンピュータシステムによる処理例]
次に、図2を用いて、第1の実施形態に係るコンピュータシステム1による処理について説明する。図2は、第1の実施形態に係るコンピュータシステム1による処理の一例を説明するための説明図である。
図2に示した例において、移動端末200及びクラウドサーバ300は、同一のアプリケーションXを同時に実行する。移動端末200におけるアプリケーションXの実行環境は、物理的な装置で実行されることを示す物理実行環境Pに該当する。また、クラウドサーバ300におけるアプリケーションXの実行環境は、仮想的な仮想移動端末301で実行されることを示す仮想実行環境Vに該当する。
アプリケーションXは、移動端末200及びクラウドサーバ300に対して共通の実行態様となるように、中間コード(バイトコード)化されている。すなわち、移動端末200及びクラウドサーバ300は、アプリケーションXに対応する同一のバイナリコードを実行することで、それぞれ同一の実行結果を得る。かかるアプリケーションXの実行時に行われる全体処理は、所定の部分処理毎に区分けすることができる。部分処理の一例としては、関数型プログラムの場合には「関数」、オブジェクト指向プログラムの場合には「メソッド」などが挙げられる。図2では、アプリケーションXによる全体処理が部分処理J1〜J10に区分けされる例を示している。
また、移動端末200及びクラウドサーバ300は、各種アプリケーションを実行する際に、アプリケーションの実行状況等を確認するタイミングであるチェックポイントが設定される。そして、移動端末200及びクラウドサーバ300は、チェックポイントが設定されている時刻になった場合に、アプリケーションをどこまで実行したかを示す進捗情報を管理装置100に通知する。第1の実施形態では、一定の時間間隔(例えば、1分、5分、30分など)毎にチェックポイントが設定されるものとする。
このような前提の下、図2に示した例において、移動端末200(物理実行環境P)は、1番目のチェックポイントCP1の時点で、部分処理J1の実行を完了している。このとき、移動端末200は、部分処理J1の実行が完了したことを示す進捗情報を管理装置100に通知する。同様に、クラウドサーバ300(仮想実行環境V)は、チェックポイントCP1の時点で、部分処理J1の実行を完了しており、部分処理J1の実行が完了したことを示す進捗情報を管理装置100に通知する。
管理装置100は、チェックポイントCP1の時点で、移動端末200及びクラウドサーバ300から進捗情報を受信する。ここでは、管理装置100は、移動端末200及びクラウドサーバ300から受信した進捗情報に差異がないので、移動端末200及びクラウドサーバ300に対して処理を行わない。
続いて、2番目のチェックポイントCP2の時点において、移動端末200は、図中に点線で示した部分処理J2まで実行を完了しているものとする。かかる場合に、移動端末200は、部分処理J1及びJ2の実行が完了したことを示す進捗情報を管理装置100に通知する。一方、クラウドサーバ300は、チェックポイントCP2の時点で、部分処理J5の実行を完了しているものとする。かかる場合に、クラウドサーバ300は、部分処理J1〜J5の実行が完了したことを示す進捗情報を管理装置100に通知する。
管理装置100は、チェックポイントCP2の時点において、移動端末200及びクラウドサーバ300から受信した進捗情報に基づいて、移動端末200では部分処理J2まで実行が完了しているが、クラウドサーバ300では部分処理J5まで実行が完了していることを検知する。かかる場合に、管理装置100は、移動端末200及びクラウドサーバ300における実行済みの部分処理数の差が所定の処理数閾値以上であるか否かを判定する。そして、管理装置100は、実行済みの部分処理数の差が処理数閾値(ここでは、処理数閾値「3」とする)以上である場合には、移動端末200及びクラウドサーバ300におけるアプリケーションXの実行状況を同期させる。
具体的には、管理装置100は、実行済みの部分処理数が多いクラウドサーバ300から、「継続(continuation)」を取得する。ここで、「継続(continuation)」とは、これから実行する計算処理がデータとして具現化されたデータを示し、これまでの計算処理で到達した計算状態(CPU、スタック、ヒープ、プログラムカウンタ)をスナップショットとして切りとったデータ構造に相当する。
図2の例では、実行済みの部分処理数の差「3」が処理数閾値「3」以上であるので、管理装置100は、部分処理J5が完了した時点での継続(continuation)をクラウドサーバ300から取得し、取得した継続(continuation)を移動端末200に送信する。移動端末200は、管理装置100から受信した継続(continuation)を実行することで、アプリケーションXの実行状況を部分処理J5の実行完了まで進めることができる。
続いて、チェックポイントCP3の時点では、移動端末200は、図中に点線で示した部分処理J8まで実行を完了しているものとする。かかる場合に、移動端末200は、部分処理J1〜J8の実行が完了したことを示す進捗情報を管理装置100に通知する。一方、クラウドサーバ300は、チェックポイントCP3の時点で、部分処理J10まで実行を完了しているものとする。かかる場合に、クラウドサーバ300は、部分処理J1〜J10の実行が完了したことを示す進捗情報を管理装置100に通知する。
管理装置100は、チェックポイントCP3の時点において、移動端末200及びクラウドサーバ300における実行済みの部分処理数の差「2」が処理数閾値「3」以上でないと判定する。かかる場合には、管理装置100は、移動端末200及びクラウドサーバ300におけるアプリケーションXの実行状況を同期させない。すなわち、管理装置100は、移動端末200とクラウドサーバ300との間で継続(continuation)の受け渡しを行わせない。
このように、第1の実施形態に係るコンピュータシステム1では、複数の情報処理装置である移動端末200及びクラウドサーバ300におけるアプリケーションの実行状況を同期させる。具体的には、コンピュータシステム1では、一方の情報処理装置(移動端末200又はクラウドサーバ300)よりも他方の情報処理装置(移動端末200又はクラウドサーバ300)の方がアプリケーションの実行が進行している場合に、実行が遅れている一方の情報処理装置の実行状況を、実行が進行している他方の情報処理装置の実行状況に同期させる。
これにより、第1の実施形態に係るコンピュータシステム1では、移動端末200におけるアプリケーションの実行状況がクラウドサーバ300よりも遅れている場合には、移動端末200におけるアプリケーションの実行状況をクラウドサーバ300における実行状況まで進行させることができる。また、第1の実施形態に係るコンピュータシステム1では、クラウドサーバ300におけるアプリケーションの実行状況が移動端末200よりも遅れている場合には、クラウドサーバ300におけるアプリケーションの実行状況を移動端末200における実行状況まで進行させることができる。すなわち、コンピュータシステム1では、移動端末200等の情報処理装置における実行環境が変化する場合であっても、アプリケーションの実行を維持することができる。
例えば、移動端末200は、アプリケーションの実行中に、IPアドレスが変化したり、電波が届かない環境に置かれたり、電池切れが発生したりすることがある。そして、移動端末200は、このように実行環境が変化した場合には、アプリケーションの実行が遅延、中断又は停止することがある。しかし、第1の実施形態に係るコンピュータシステム1では、移動端末200におけるアプリケーションの実行に遅延等が発生した場合であっても、クラウドサーバ300においてアプリケーションの実行が維持される。このため、コンピュータシステム1では、移動端末200の実行環境が改善された場合に、かかる移動端末200の実行状況をクラウドサーバ300の実行状況に同期させることができる。このようなことから、第1の実施形態に係るコンピュータシステム1では、スマートフォンのような移動端末200における実行環境が変化する場合であっても、アプリケーションを継続的に実行することができる。
そして、コンピュータシステム1では、移動端末200(物理実行環境P)と、クラウドサーバ300(仮想実行環境V)のように、複数の実行環境でアプリケーションが実行されるが、同一のアプリケーションが双方の実行環境内において実行される。すなわち、コンピュータシステム1において実行されるアプリケーションを開発するアプリ開発者は、物理装置内で実行されるアプリケーションを開発すればよいので、物理装置及び仮想装置における資源の位置、性能、設計情報、固有機能等の実行環境を理解して注意深く設計することを要せず、実行環境を意識した実行制御ロジックをコーディングすることを要しない。このようなことから、第1の実施形態に係るコンピュータシステム1は、移動端末200等の情報処理装置における実行環境が変化する場合であっても、アプリケーションを継続的に実行することができる実行環境を提供することができるとともに、アプリ開発のアプリケーション開発にかかる生産性の低下を抑制することができる。
なお、上記図2では、部分処理J1、J2、・・、J10の順に実行される例を示したが、部分処理の実行順序はこの例に限られない。例えば、アプリケーション実行時には、同一の部分処理が繰り返し実行される場合や、分岐処理によって実行されない部分処理が存在する場合もある。したがって、移動端末200や仮想移動端末301が管理装置100に送信する進捗情報には、「部分処理J1=1回実行、部分処理J2=3回実行」といった例も含まれる。
[第1の実施形態に係る各装置の構成]
次に、図3を用いて、第1の実施形態に係るコンピュータシステム1に含まれる各装置の構成について説明する。図3は、第1の実施形態に係る各装置の構成例を示す図である。なお、図3に示したクラウドサーバ300が有する各処理部は、仮想移動端末301によって実現される。図3に示すように、管理装置100は、チェックポイント定義部111と、チェックポイント合成部112と、分散データ共有部120と、継続分散共有部130とを有する。
チェックポイント定義部111は、アプリケーションの実行状況等を確認するタイミングであるチェックポイントが定義されたチェックポイント設定データを生成する。第1の実施形態に係るチェックポイント定義部111は、所定の時間間隔毎であることが定義されたチェックポイント設定データを生成する。そして、チェックポイント定義部111は、アプリケーションのソースコード及びチェックポイント設定データをチェックポイント合成部112に出力する。
なお、チェックポイント定義部111は、例えば、移動端末200によって実行され得るアプリケーションのソースコードを図示しない記憶部に保持する。そして、チェックポイント定義部111は、移動端末200によって所定のアプリケーションが実行される場合に、かかるアプリケーションを識別する情報を移動端末200から受信することで、移動端末200で実行されるアプリケーションに対応するソースコードを記憶部から取得する。また、例えば、チェックポイント定義部111がソースコードを保持するのではなく、移動端末200やクラウドサーバ300や仮想移動端末301や図示しない記憶部がソースコードを保持してもよい。かかる場合には、チェックポイント定義部111は、ソースコードを保持する装置から、移動端末200で実行されるアプリケーションに対応するソースコードを取得する。
チェックポイント合成部112は、チェックポイント定義部111によって生成されたチェックポイント設定データに基づいて、チェックポイントが定義された中間コードを生成する。第1の実施形態に係るチェックポイント合成部112は、チェックポイントが所定の時間間隔毎であることが定義された中間コードを生成する。そして、チェックポイント合成部112は、チェックポイント定義済みの中間コードを移動端末200及び仮想移動端末301に出力する。なお、チェックポイント合成部112は、移動端末200及び仮想移動端末301に対して共通の実行態様となるように、チェックポイント定義部111から出力されたソースコードを中間コード化する。
分散データ共有部120は、移動端末200及び仮想移動端末301から送信される進捗情報等に基づいて、移動端末200と仮想移動端末301との間で継続(continuation)の引き渡しを行わせるか否かを判定する。なお、分散データ共有部120による処理については後述する。
継続分散共有部130は、分散データ共有部120によって継続(continuation)の引き渡しを要すると判定された場合に、移動端末200及び仮想移動端末301の一方から継続(continuation)を取得し、取得した継続(continuation)を移動端末200及び仮想移動端末301の他方に提供する。
また、図3に示すように、移動端末200は、プログラム配置部211と、実行制御部212と、チェックポイントトリガ部220と、収集部230と、継続データ化部241と、継続適用部242とを有する。
プログラム配置部211は、チェックポイント合成部112からチェックポイント定義済みの中間コードを受信し、受信した中間コードを実行制御部212に出力する。これにより、プログラム配置部211は、実行制御部212にアプリケーションを実行させる。
実行制御部212は、プログラム配置部211から出力されたチェックポイント定義済みの中間コードを処理することで、アプリケーションを実行する。かかる実行制御部212は、物理実行環境Pである移動端末200内の計算資源(CPU時間、メモリ使用量等の計算リソース)を用いて、アプリケーションを実行する。
チェックポイントトリガ部220は、実行制御部212による実行制御の動作プロセスに対して、チェックポイント定義部111で定義されたチェックポイントを監視する。そして、チェックポイントトリガ部220は、チェックポイントとなった場合に、イベントを発生させて、収集部230に対して移動端末200(物理実行環境P)における実行状態に関する各種情報を測定させる。
また、第1の実施形態に係るチェックポイントトリガ部220は、実行制御部212によって実行済みの部分処理を示す進捗情報を収集部230に通知する。具体的には、実行制御部212によって実行される中間コードには、部分処理の実行完了時に実行制御部212が完了通知するための目印となるマーキングコードが所定の部分処理毎に埋め込まれる。このようなマーキングコードは、例えば、アプリ開発者であるプログラマ等によって埋め込まれる。また、例えば、アプリ開発者がマーキングコードを明示的に埋め込まなくても、メタプログラミング(アスペクト指向プログラミング)等を活用して、関数の評価結果やメソッドが送り返すメッセージを取得する論理的節目を自動的にマークできる手法によって、上記マーキングコードが埋め込まれてもよい。かかる手法を用いた場合には、実行時にどの処理単位(関数評価、メソッド実施)を何回実行したかをメタレベルのハッシュテーブル等に記録して実行状況を管理することが可能となる。そして、チェックポイントトリガ部220は、かかる完了通知を実行制御部212から受信することで、実行制御部212によって進捗情報を取得することができる。
なお、第1の実施形態において、チェックポイントトリガ部220は、実行制御レベル(メタ実行レベル)で独立したスレッドを起こし、ローカルタイマを参照しながら一定の時間が経過するたびに(チェックポイントに達した時点で)、収集部230に対して実行状態に関する各種情報を測定するように割り込みを発生させてもよい。ここで、移動端末200(物理実行環境P)に、チェックポイントとなる一定の時間間隔が設定されている場合には、チェックポイント定義部111は、チェックポイント設定データを生成しなくてよく、また、チェックポイント合成部112は、チェックポイントが定義された中間コードを生成しなくてよい。
収集部230は、チェックポイントトリガ部220からチェックポイントである旨の通知を受け付けた場合に、移動端末200(物理実行環境P)における実行状態に関する各種(移動端末200が消費した資源に関する資源情報等)を収集する。第1の実施形態に係る収集部230は、電力測定部231を有する。
電力測定部231は、移動端末200(物理実行環境P)における実行状態の要素として、移動端末200が要した消費電力を測定する。例えば、電力測定部231は、実行制御部212によってアプリケーションの実行が開始されてから現チェックポイントに至るまでに移動端末200が要した消費電力の累積を測定する。また、例えば、電力測定部231は、前回のチェックポイントから現チェックポイントまでに移動端末200が要した消費電力を測定する。第1の実施形態では、電力測定部231は、消費電力の累積を測定するものとする。なお、電力測定部231は、例えば、消費電力をモニタリングするための専用デバイス等によって移動端末200によって消費された電力を取得することができる。また、例えば、スマートフォン等には消費電力を監視するアプリや機構が一般的に搭載されているので、電力測定部231は、このようなアプリや機構を用いて消費電力を取得することができる。
そして、収集部230は、チェックポイントトリガ部220から通知された進捗情報と、電力測定部231によって測定された消費電力を示す消費電力情報を分散データ共有部120に送信する。
ここで、第1の実施形態において、管理装置100の分散データ共有部120は、チェックポイントのたびに、移動端末200の収集部230から進捗情報及び消費電力情報を受信するとともに、クラウドサーバ300上に形成された仮想移動端末301の収集部330からも進捗情報及び消費電力情報を受信する。かかる分散データ共有部120は、双方から受信した進捗情報を比較することにより、移動端末200と仮想移動端末301との間でアプリケーションの実行にかかる進捗に差異があるか否かを判定する。具体的には、分散データ共有部120は、移動端末200において実行済みの部分処理の数と、仮想移動端末301において実行済みの部分処理の数との差異が所定の処理数閾値以上であるか否かを判定する。
また、図2の説明では省略したが、分散データ共有部120は、実行済みの部分処理の数の差異が所定の処理数閾値以上である場合であっても、移動端末200及び仮想移動端末301から受信した消費電力情報に基づいて、移動端末200と仮想移動端末301との間で継続(continuation)を送受するべきか否かを判定する。具体的には、分散データ共有部120は、移動端末200の消費電力と仮想移動端末301の消費電力との差異を算出する。そして、分散データ共有部120は、算出した消費電力の差異が、移動端末200又は仮想移動端末301が継続(continuation)を受信するのに要すると想定される消費電力(以下、「想定消費電力」と表記する場合がある)よりも大きいか否かを判定する。そして、分散データ共有部120は、消費電力の差異が想定消費電力よりも大きい場合には、継続(continuation)を送受するべきであると判定し、消費電力の差異が受信側の想定消費電力以下である場合には、継続(continuation)を送受するべきでないと判定する。
このような分散データ共有部120による処理の一例について説明する。ここでは、処理数閾値が「3」であるものとする。また、分散データ共有部120が、移動端末200から進捗情報「J1〜J5」及び消費電力情報「50」を受信し、仮想移動端末301から進捗情報「J1〜J10」及び消費電力情報「200」を受信したものとする。
かかる場合に、分散データ共有部120は、移動端末200よりも仮想移動端末301の方が実行済みの部分処理が5個多く、双方の実行済みの部分処理数の差異が処理数閾値「3」以上であると判定する。この例の場合、分散データ共有部120は、消費電力情報に基づいて、仮想移動端末301の継続(continuation)を移動端末200に提供するか否かを判定する。具体的には、分散データ共有部120は、仮想移動端末301の消費電力情報「200」と、移動端末200の消費電力情報「50」との差「150」を算出する。これにより、分散データ共有部120は、移動端末200が部分処理「J6〜J10」を実行するのに消費電力「150」を要すると推定できる。
ここで、分散データ共有部120は、移動端末200が仮想移動端末301の継続(continuation)を受信するのに要すると想定される消費電力を取得する。例えば、分散データ共有部120は、移動端末200が継続(continuation)を受信及び適用するのに要する既知の想定消費電力を所定の記憶部に記憶しておき、かかる記憶部から想定消費電力を取得する。ここでは、分散データ共有部120によって取得される想定消費電力が「100」であるものとする。すなわち、ここの例では、上記において算出された消費電力情報の差「150」が想定消費電力「100」よりも大きい。かかる場合に、分散データ共有部120は、移動端末200が部分処理「J6〜J10」を実行するのに要する消費電力「150」が、仮想移動端末301の継続(continuation)を移動端末200が受信するのに要する想定消費電力「100」よりも大きいと判定できる。このため、分散データ共有部120は、移動端末200に仮想移動端末301の継続(continuation)を提供した方が消費電力を抑制することができるので、継続(continuation)を送受するべきであると判定する。
また、上記例において、分散データ共有部120が、移動端末200から進捗情報「J1〜J7」及び消費電力情報「150」を受信し、仮想移動端末301から進捗情報「J1〜J10」及び消費電力情報「200」を受信したものとする。この例の場合、分散データ共有部120は、消費電力情報に基づいて、仮想移動端末301の継続(continuation)を移動端末200に提供するか否かを判定する。
具体的には、分散データ共有部120は、仮想移動端末301の消費電力情報「200」と、移動端末200の消費電力情報「150」との差「50」を算出する。これにより、分散データ共有部120は、移動端末200が部分処理「J8〜J10」を実行するのに消費電力「50」を要すると推定できる。また、分散データ共有部120は、上記例と同様に、移動端末200が継続(continuation)を受信するのに要すると想定される消費電力「100」を取得する。かかる場合に、分散データ共有部120は、移動端末200が部分処理「J8〜J10」を実行するのに要する消費電力「50」が、仮想移動端末301の継続(continuation)を移動端末200が受信するのに要する想定消費電力「100」以下であると判定できる。このため、分散データ共有部120は、移動端末200に仮想移動端末301の継続(continuation)を提供しない方が消費電力を抑制することができるので、継続(continuation)を送受するべきでないと判定する。
このような分散データ共有部120は、一方の情報処理装置(移動端末200又は仮想移動端末301)に対して、他方の情報処理装置(移動端末200又は仮想移動端末301)の継続(continuation)を提供すべきであると判定した場合には、他方の情報処理装置に対して継続(continuation)を生成するように指示する。例えば、分散データ共有部120は、仮想移動端末301の継続(continuation)を移動端末200に提供すべきであると判定した場合には、仮想移動端末301の継続データ化部341に対して、継続(continuation)を生成するように指示する。
継続データ化部241は、任意の時点における計算状態(CPU、スタック、ヒープ、プログラムカウンタ)をスナップショットとして保存したデータ構造に相当する継続(continuation)を生成する。かかる継続データ化部241は、分散データ共有部120による指示に従って継続(continuation)を生成し、生成した継続(continuation)を継続分散共有部130に送信する。かかる継続分散共有部130は、継続データ化部241から受信した継続(continuation)を、仮想移動端末301の継続適用部342に送信する。また、継続分散共有部130は、仮想移動端末301の継続データ化部341から継続(continuation)を受信した場合には、受信した継続(continuation)を移動端末200の継続適用部242に送信する。
継続適用部242は、継続分散共有部130から、仮想移動端末301の継続データ化部341によって生成された継続(continuation)を受信した場合に、受信した継続(continuation)を実行制御部212に適用する。具体的には、継続適用部242は、継続分散共有部130から提供された継続(continuation)を実行することで、移動端末200と仮想移動端末301におけるアプリケーションの実行状況を同期させる。
また、図3に示すように、クラウドサーバ300は、プログラム配置部311と、実行制御部312と、チェックポイントトリガ部320と、収集部330と、継続データ化部341と、継続適用部342とを有する。これらの各処理部は、図1に示した仮想移動端末301によって実現される処理部であって、クラウドサーバ300(仮想実行環境V)内において、上記の移動端末200が有する各処理部と同様の処理を行う。なお、一般的には、クラウドサーバ300の計算資源(メモリ、CPUパワー、電力、ストレージ)は安定供給が期待できる。高速・安定電源・確実なデータ保管能力から、不安定な通信状態にある移動端末200より確実な実行結果を達成できる期待がある。
[第1の実施形態に係るコンピュータシステムによる処理手順]
次に、図4を用いて、第1の実施形態に係るコンピュータシステム1による処理の手順について説明する。図4は、第1の実施形態に係るコンピュータシステム1による処理手順を示すフローチャートである。
図4に示すように、管理装置100のチェックポイント合成部112は、チェックポイント定義済みの中間コードを生成し、生成したチェックポイント定義済みの中間コードを、移動端末200とクラウドサーバ300に形成された仮想移動端末301に送信する(ステップS101)。
移動端末200の実行制御部212は、管理装置100から送信されたチェックポイント定義済みの中間コードを処理することで、アプリケーションを実行制御する(ステップS102)。同様に、仮想移動端末301の実行制御部312は、管理装置100から送信されたチェックポイント定義済みの中間コードを処理することで、アプリケーションを実行制御する(ステップS103)。
そして、移動端末200のチェックポイントトリガ部220は、実行制御部212によってアプリケーションが実行されている場合に、チェックポイントとなったか否かを監視する(ステップS104)。同様に、仮想移動端末301のチェックポイントトリガ部320は、実行制御部312によってアプリケーションが実行されている場合に、チェックポイントとなったか否かを監視する(ステップS105)。
そして、移動端末200の電力測定部231は、チェックポイントとなった場合に(ステップS104肯定)、消費電力を測定する(ステップS106)。そして、収集部230は、進捗情報、消費電力情報を管理装置100に送信する(ステップS107)。同様に、仮想移動端末301の電力測定部331は、チェックポイントとなった場合に(ステップS105肯定)、消費電力を測定する(ステップS108)。そして、収集部330は、進捗情報、消費電力情報を管理装置100に送信する(ステップS109)。
続いて、管理装置100の分散データ共有部120は、移動端末200及び仮想移動端末301から送信される進捗情報等に基づいて、移動端末200と仮想移動端末301との間で継続(continuation)の引き渡しを行わせるか否かを判定する(ステップS110)。
ここでは、分散データ共有部120は、仮想移動端末301の継続(continuation)を移動端末200に引き渡しさせると判定するものとする。かかる場合に、分散データ共有部120は、仮想移動端末301に対して、継続(continuation)を生成するよう指示する(ステップS111)。かかる指示を受け付けた仮想移動端末301の継続データ化部341は、継続(continuation)を生成して管理装置100に送信する(ステップS112)。
管理装置100の継続分散共有部130は、仮想移動端末301から受信した継続(continuation)を移動端末200に提供する(ステップS113)。そして、移動端末200の継続適用部242は、管理装置100から受信した継続(continuation)を実行制御部212に適用する(ステップS114)。
[第1の実施形態の効果]
上述してきたように、第1の実施形態に係るコンピュータシステム1には、同一のアプリケーションを実行する複数の情報処理装置として、移動端末200及び仮想移動端末301が含まれる。また、コンピュータシステム1には、移動端末200及び仮想移動端末301を管理する管理装置100が含まれる。そして、移動端末200は、アプリケーションを実行制御する実行制御部212と、実行制御部212におけるアプリケーションの実行にかかる進捗を示す進捗情報を収集する収集部230と、管理装置100の指示に従って、アプリケーションを実行中の実行制御部212における計算状態を示す計算状態情報として継続(continuation)を生成する継続データ化部241と、管理装置100から継続(continuation)が提供された場合に、かかる継続(continuation)を実行制御部212における計算状態に適用する継続適用部242とを有する。また、仮想移動端末301は、移動端末200と同様の構成を有する。また、管理装置100は、移動端末200及び仮想移動端末301の収集部によって収集された各進捗情報を比較することにより、移動端末200とクラウドサーバ300との間でアプリケーションの実行にかかる進捗に差異があるか否かを判定する分散データ共有部120と、分散データ共有部120による進捗の差異の有無に応じて、移動端末200又はクラウドサーバ300に対して継続(continuation)を生成させ、生成された継続(continuation)を移動端末200又はクラウドサーバ300に提供する継続分散共有部130とを有する。
これにより、第1の実施形態に係るコンピュータシステム1では、移動端末200等の情報処理装置における実行環境が変化する場合であっても、アプリケーションを継続的に実行することができる実行環境を提供することができるとともに、アプリ開発者のアプリケーション開発にかかる生産性の低下を抑制することができる。
また、例えば、写真の編集処理など高度に専門的で複雑なアプリケーションは、従来では独自のスタンドアロンプログラムで実装されていたが、昨今、スマートフォン(多機能電話装置)等でも利用される動きが加速している。一方、デバイスの省電力化・低コスト化の動きも加速しており、低速デバイスでのコンピューティングは依然としてニーズが高い。すなわち、移動中の低速デバイスで高度で複雑なアプリケーションを利用したいといった相反するコンピューティングニーズが拡大しているといえる。
第1の実施形態に係るコンピュータシステム1では、移動端末200と仮想移動端末301におけるアプリケーションの実行状況を同期させるので、例えば、移動中の低速デバイスは、高度なアプリケーションを実行した場合であっても、省電力かつ高速にレスポンス結果を得ることができる。また、アプリ開発者は、デバイスの違い(高速、低速)を予め意識せずにアプリケーションの設計・実装を行うことができるので、既存のアプリ開発スタイル(ノウハウ)を大胆におき変えずに設計・実装することができる。
なお、上記第1の実施形態において、分散データ共有部120は、移動端末200の消費電力と仮想移動端末301の消費電力との差異が、移動端末200又は仮想移動端末301が継続(continuation)を受信するのに要すると想定される消費電力(想定消費電力)よりも大きいか否かを判定する。しかし、分散データ共有部120による判定処理はこの例に限られない。
例えば、分散データ共有部120は、移動端末200及び仮想移動端末301における双方の合計消費電力を極力低減するために、移動端末200及び仮想移動端末301における消費電力の差異が、移動端末200又は仮想移動端末301が継続(continuation)を送信及び受信するのに要すると想定される消費電力よりも大きいか否かを判定してもよい。
また、例えば、仮想移動端末301が実現されるクラウドサーバ300環境では安定した電力供給が可能であり消費電力の低減が重要視されない前提が存在する場合には、分散データ共有部120は、移動端末200における消費電力の低減を優先してもよい。具体的には、分散データ共有部120は、仮想移動端末301の継続(continuation)を移動端末200に送信する場合に、上記例のように、移動端末200及び仮想移動端末301における消費電力の差異が、移動端末200が仮想移動端末301の継続(continuation)を受信するのに要すると想定される消費電力よりも大きいか否かを判定する。
また、分散データ共有部120は、移動端末200及び仮想移動端末301における過去の消費電力をプロファイルとして蓄積しておき、移動端末200と仮想移動端末301における消費電力の比率に基づいて、想定消費電力を推定してもよい。例えば、分散データ共有部120は、かかる比率を用いて、仮想移動端末301の消費電力を移動端末200の消費電力に換算するなどして、移動端末200の消費電力を推定する。
(第2の実施形態)
上記第1の実施形態では、チェックポイントが一定の時間間隔毎に設定される例を示した。しかし、チェックポイントは、所定の部分処理毎に設定されてもよい。第2の実施形態では、チェックポイントが所定の部分処理毎に設定される例について説明する。なお、第2の実施形態では、以下に説明する移動端末500及びクラウドサーバ600によって、同一のアプリケーションが長期間に渡って繰り返し実行されるものとする。例えば、第2の実施形態におけるアプリケーションは、何度も繰り返し実行される常住プログラム等に該当する。
[第2の実施形態に係る各装置の構成]
まず、図5を用いて、第2の実施形態に係るコンピュータシステム2に含まれる各装置の構成について説明する。図5は、第2の実施形態に係る各装置の構成例を示す図である。図5に示すように、第2の実施形態に係るコンピュータシステム2には、管理装置400と、移動端末500と、クラウドサーバ600とが含まれる。なお、以下では、既に示した構成部位と同様の機能を有する部位には同一符号を付すこととして、その詳細な説明を省略する。また、第2の実施形態に係るコンピュータシステム2の構成は、図1に示した構成例と同様であるので、以下では説明を省略する。
管理装置400は、図5に示すように、チェックポイント定義部411と、チェックポイント合成部412と、分散データ共有部420と、プロファイル記憶部440と、チェックポイント改変部450とを有する。また、移動端末500は、チェックポイントトリガ部520と、収集部530と、プロファイル生成部540とを有する。また、クラウドサーバ600は、移動端末500に対応する仮想移動端末(以下、「仮想移動端末601」とする)を形成し、かかる仮想移動端末601によって実現される処理部として、収集部630と、プロファイル生成部640とを有する。なお、収集部630及びプロファイル生成部640は、収集部530及びプロファイル生成部540に対応する処理部であるので、以下では説明を省略する。また、以下では、管理装置400及び移動端末500が有する処理部について、処理の順序に沿って説明する。
管理装置400のチェックポイント定義部411は、アプリケーションのソースコードに含まれる所定の部分処理(関数やメソッド)毎に、チェックポイントが定義されたチェックポイント設定データを生成する。チェックポイントを埋め込む位置は、アプリ開発者であるプログラマ等によって指定される。例えば、第2の実施形態に係るチェックポイント定義部411は、アプリ開発者であるプログラマ等が利用する端末装置の表示装置にソースコードを表示するなどして、アプリ開発者であるプログラマ等と対話的にチェックポイントを埋め込む位置を指定させる。なお、第1の実施形態でも説明したように、メタプログラミング(アスペクト指向プログラミング)等を活用することで、アプリ開発者が明示的にチェックポイントを埋め込まなくても、自動的にチェックポイントを埋め込むこともできる。
管理装置400のチェックポイント合成部412は、チェックポイント定義部411によって生成されたチェックポイント設定データに基づいて、チェックポイントが定義された中間コードを生成する。例えば、第2の実施形態に係るチェックポイント合成部412は、アスペクト指向におけるインターセプトのロジックの織り込み又は自己反映計算モデルであるメタロジックの定義に基づくプログラムコードの合成及び翻訳により、チェックポイント定義済みの中間コードを生成する。
移動端末500のチェックポイントトリガ部520は、実行制御部212による実行制御の動作プロセスに対して、チェックポイント定義部411で定義されたチェックポイントを監視する。そして、チェックポイントトリガ部520は、チェックポイントとなった場合に、イベントを発生させて、収集部530に対して移動端末500(物理実行環境P)における実行状態を測定させる。
また、第2の実施形態に係るチェックポイントトリガ部520は、チェックポイントとなった場合に、かかるチェックポイントを特定するための進捗情報(CP情報)として収集部530に通知する。
移動端末500の収集部530は、図5に示すように、電力測定部531と、計時部532とを有する。第2の実施形態に係る電力測定部531は、移動端末500(物理実行環境P)における実行状態の要素として、前回のチェックポイントから現チェックポイントまでに移動端末500が要した消費電力を測定する。
計時部532は、移動端末500(物理実行環境P)における実行状態の要素として、移動端末500におけるアプリケーションの処理時間を計時する。例えば、計時部532は、前回のチェックポイントから現チェックポイントまでの経過時間を処理時間として計時する。また、例えば、計時部532は、実行制御部212によってアプリケーションの実行が開始されてから現チェックポイントに至るまでの累積の経過時間を処理時間として計時する。第2の実施形態では、計時部532は、チェックポイント間の経過時間を処理時間として計時するものとする。
そして、収集部530は、チェックポイントのたびにチェックポイントトリガ部220から通知される進捗情報(CP情報)と、電力測定部531によって測定された消費電力を示す消費電力情報と、計時部532によって計時された処理時間を示す処理時間情報とをプロファイル生成部540に出力するとともに、進捗情報(CP情報)を分散データ共有部420に送信する。
プロファイル生成部540は、収集部530から出力された進捗情報、消費電力情報及び処理時間情報を用いて、常駐プログラムであるアプリケーションの実行プロファイルを生成する。具体的には、プロファイル生成部540は、部分処理間における消費電力及び処理時間を実行プロファイルとして生成し、生成した実行プロファイルを管理装置400のプロファイル記憶部440に格納する。
ここで、図6を用いて、プロファイル生成部540によって生成される実行プロファイルについて説明する。図6は、第2の実施形態に係るプロファイル生成部540によって生成される実行プロファイルの一例を概念的に示す図である。
図6に示すように、プロファイル生成部540は、各チェックポイント間の消費電力情報及び処理時間情報を記録する。図6に示した例では、チェックポイントCP11の次は、チェックポイントCP12又はCP13を通る例を示しており、チェックポイントCP12の次は、チェックポイントCP14又はCP15を通る例を示している。これは、アプリケーションには分岐処理が存在するからであり、アプリケーションに定義されたチェックポイントCP11、CP12、・・・、CP19の順に実行されるとは限らないからである。
そして、プロファイル生成部540は、収集部530から順次出力される進捗情報であるCP情報を図6に示した例のようにマッピングする。例えば、収集部530によって、チェックポイントCP11を示すCP情報が出力された後に、チェックポイントCP12を示すCP情報が出力された場合には、プロファイル生成部540は、図6に示すように、チェックポイントCP11からチェックポイントCP12へ接続する。さらに、プロファイル生成部540は、チェックポイントCP11からチェックポイントCP12までに移動端末500が要した消費電力「Δe」として、チェックポイントCP12において収集部530から出力された消費電力情報(図6では、「e12」)を設定する。また、プロファイル生成部540は、チェックポイントCP11からチェックポイントCP12までの処理時間「Δt」として、チェックポイントCP12において収集部530から出力された処理時間情報(図6では、「t12」)を設定する。
また、実行制御部212によって中間コードが繰り返し実行されることにより、収集部530によって、チェックポイントCP11を示すCP情報が再度出力された後に、チェックポイントCP13を示すCP情報が出力された場合には、プロファイル生成部540は、図6に示すように、チェックポイントCP11からチェックポイントCP13へ接続する。そして、プロファイル生成部540は、チェックポイントCP11からチェックポイントCP13までの消費電力「Δe」(図6では、「e13」)と、処理時間「Δt」(図6では、「t13」)とを設定する。
すなわち、プロファイル生成部540によって生成される実行プロファイルは、実行制御部212によるアプリケーションの実行状況として、各チェックポイント間における消費電力及び処理時間を示すこととなる。
なお、仮想移動端末601のプロファイル生成部640も、図6に例示した実行プロファイルを生成する。ここで、仮想移動端末601は、移動端末500と同一のアプリケーションを実行する。したがって、プロファイル生成部540及びプロファイル生成部640によって生成される各実行プロファイルは、チェックポイント間の接続関係が同一となる。しかし、移動端末500と仮想移動端末601におけるアプリケーションの実行速度等は同一でないので、双方の実行プロファイルに設定される消費電力「Δe」や処理時間「Δt」については異なる。
管理装置400のプロファイル記憶部440は、プロファイル生成部540及び640によって生成された実行プロファイルを記憶する。すなわち、プロファイル記憶部440は、図6に例示したような実行プロファイルを所定のデータ構造(例えば、ハッシュテーブル、Key−Value−Store等)により記憶する。
管理装置400の分散データ共有部420は、チェックポイントのたびに、移動端末500の収集部530から進捗情報を受信し、仮想移動端末601の収集部630からも進捗情報を受信する。ただし、移動端末500と仮想移動端末601とでは、アプリケーションの実行にかかる処理時間が異なるので、分散データ共有部420は、移動端末500及び仮想移動端末601の双方から同時に進捗情報を受信しないことが多い。
分散データ共有部420は、移動端末500及び仮想移動端末601から受信した進捗情報を比較することにより、移動端末500と仮想移動端末601との間でアプリケーションの実行にかかる進捗に差異があるか否かを判定する。
具体的には、第2の実施形態に係る分散データ共有部420は、移動端末500から進捗情報を受信した場合に、移動端末500において通過したチェックポイントを蓄積しておき、仮想移動端末601から進捗情報を受信した場合に、仮想移動端末601において通過したチェックポイントを蓄積しておく。例えば、分散データ共有部420は、移動端末500や仮想移動端末601の通過チェックポイントとして、「CP11、CP12、CP14、・・・」といった情報を蓄積する。
そして、分散データ共有部420は、移動端末500から進捗情報を受信した場合には、かかる進捗情報(CP情報)によって示される通過チェックポイントと、蓄積しておいた仮想移動端末601の通過チェックポイントとに差異があるか否かを判定する。また、分散データ共有部420は、仮想移動端末601から進捗情報を受信した場合には、かかる進捗情報(CP情報)によって示される通過チェックポイントと、蓄積しておいた移動端末500の通過チェックポイントとに差異があるか否かを判定する。例えば、分散データ共有部420は、移動端末500の通過チェックポイント数と、仮想移動端末601の通過チェックポイント数との差異が所定のCP閾値以上であるか否かを判定する。
そして、分散データ共有部420は、通過チェックポイントに差異がある場合に、プロファイル記憶部440に記憶されている実行プロファイルの消費電力又は処理時間に基づいて、移動端末500と仮想移動端末601との間で継続(continuation)を送受するべきか否かを判定する。
このような分散データ共有部420による処理の一例について説明する。ここでは、CP閾値が「1」であるものとする。また、チェックポイントの接続関係は図6に示した例であるものとする。また、分散データ共有部420が、移動端末500の通過チェックポイントとして「CP11」を蓄積しており、同様に、仮想移動端末601の通過チェックポイントとして「CP11」を蓄積しているものとする。また、分散データ共有部420が、仮想移動端末601から進捗情報「CP12」を受信したものとする。
かかる場合に、分散データ共有部420は、仮想移動端末601の通過チェックポイントに「CP12」を追加して「CP11、CP12」を蓄積する。この例の場合、移動端末500の通過チェックポイント数が「1」であり、仮想移動端末601の通過チェックポイント数が「2」であり、その差がCP閾値「1」以上である。このとき、分散データ共有部420は、移動端末500の実行プロファイルにおける消費電力又は処理時間に基づいて、仮想移動端末601の継続(continuation)を移動端末500に提供するか否かを判定する。
分散データ共有部420が消費電力に基づいて判定する例について説明する。分散データ共有部420は、仮想移動端末601から進捗情報を受信した際に、プロファイル記憶部440から、図6に例示したような移動端末500の実行プロファイルを取得する。この時点では、移動端末500の通過チェックポイントがCP11であり、仮想移動端末601の通過チェックポイントがCP12である。ここで、分散データ共有部420は、図6に示した実行プロファイルを参照して、移動端末500がチェックポイントCP11からチェックポイントCP12までに要する消費電力「Δe=e12」を取得する。
また、分散データ共有部420は、移動端末500が仮想移動端末601の継続(continuation)を受信するのに要すると想定される想定消費電力を取得する。そして、分散データ共有部420は、プロファイル記憶部440から取得した消費電力「Δe=e12」が想定消費電力よりも所定の電力閾値以上大きい場合には、移動端末500に仮想移動端末601の継続(continuation)を提供するべきであると判定する。これは、移動端末500がチェックポイントCP11からチェックポイントCP12を通過するまでに要する消費電力「Δe=e12」が、少なくとも移動端末500が仮想移動端末601の継続(continuation)を受信するのに要する想定消費電力以上であると判定できるからである。
一方、分散データ共有部420は、消費電力「Δe=e12」が想定消費電力よりも所定の電力閾値以上大きくない場合には、移動端末500に仮想移動端末601の継続(continuation)を提供するべきでないと判定する。
続いて、分散データ共有部420が処理時間に基づいて判定する例について説明する。分散データ共有部420は、仮想移動端末601から進捗情報を受信した際に、プロファイル記憶部440から、図6に例示したような移動端末500の実行プロファイルを取得する。この時点では、移動端末500の通過チェックポイントがCP11であり、仮想移動端末601の通過チェックポイントがCP12である。ここで、分散データ共有部420は、図6に示した実行プロファイルを参照して、移動端末500がチェックポイントCP11からチェックポイントCP12までに要する処理時間「Δt=t12」を取得する。
また、分散データ共有部420は、移動端末500が仮想移動端末601の継続(continuation)を受信するのに要すると想定される想定処理時間を取得する。そして、分散データ共有部420は、プロファイル記憶部440から取得した処理時間「Δt=t12」が想定処理時間よりも所定の時間閾値以上大きい場合には、移動端末500に仮想移動端末601の継続(continuation)を提供するべきであると判定する。これは、移動端末500がチェックポイントCP11からチェックポイントCP12を通過するまでに要する処理時間「Δt=t12」が、少なくとも移動端末500が仮想移動端末601の継続(continuation)を受信するのに要する処理時間以上であると判定できるからである。
一方、分散データ共有部420は、処理時間「Δt=t12」が想定処理時間よりも所定の電力閾値以上大きくない場合には、移動端末500に仮想移動端末601の継続(continuation)を提供するべきでないと判定する。
管理装置400のチェックポイント改変部450は、プロファイル記憶部440に記憶されている実行プロファイルを分析し、中間コードに定義されるチェックポイントを改変させる。チェックポイント改変部450は、プロファイル記憶部440に蓄積されている実行プロファイルを分析することにより、毎回同様の消費電力や処理時間が得られるチェックポイントについては自明であると判定し、かかるチェックポイントをスキップするようにチェックポイント定義部411に指示する。例えば、図6に示した例において、「CP11→CP12」における「Δe」及び「Δt」が毎回同様の値である場合には、チェックポイントCP11からチェックポイントCP12までの消費電量や処理時間については自明であるといえる。かかる場合に、チェックポイント改変部450は、チェックポイントCP12を削除するようにチェックポイント定義部411に指示する。
かかるチェックポイント定義部411は、チェックポイント改変部450からの指示に従って、新たにチェックポイントが定義されたチェックポイント設定データを生成する。そして、チェックポイント合成部412は、新たなチェックポイントが定義された中間コードを生成し、実行制御部212がかかる中間コードを実行制御することとなる。
これにより、第2の実施形態に係るコンピュータシステム2では、プログラマ等によって初期設定されたチェックポイントに固執せずに、自明なチェックポイントについてはスキップすることができ、チェックポイントにおいて発生するオーバヘッドを軽減することができる。
[第2の実施形態の効果]
上述してきたように、第2の実施形態に係るコンピュータシステム2では、チェックポイントが所定の部分処理毎に設定される場合であっても、移動端末500等の情報処理装置における実行環境が変化する状況において、アプリケーションを継続的に実行することができる実行環境を提供することができるとともに、アプリ開発者のアプリケーション開発にかかる生産性の低下を抑制することができる。
第2の実施形態に係るコンピュータシステム2では、消費電力又は処理時間に基づいて、継続(continuation)の受け渡しを行うか否かを判定するので、分散した計算資源にまたがったアプリケーションを単一のプログラムとして設計・実装可能であり、単一のプログラムで異なる物理処理環境群、仮想処理環境群のいずれかの装置の性能低下や故障トラブルを回避して実行できる。
(第3の実施形態)
上述したコンピュータシステム1及び2は、上記実施形態以外にも種々の異なる形態にて実施されてよい。そこで、第3の実施形態では、上記のコンピュータシステム1及び2の他の実施形態について説明する。
[装置の組合せ]
上記の実施形態では、例えば、移動端末及び仮想移動端末を例に挙げて説明した。すなわち、上記の実施形態では、物理装置及び仮想装置に同一のアプリケーションを実行させる例について説明した。しかし、上述したコンピュータシステム1及び2は、複数の物理装置に同一のアプリケーションを実行させて、複数の物理装置におけるアプリケーションの実行状況を同期させてもよい。また、この例に限られず、上述したコンピュータシステム1及び2は、複数の仮想装置に同一のアプリケーションを実行させてもよい。
また、上述したコンピュータシステム1及び2は、移動端末及び仮想移動端末に同一のアプリケーションを実行させるのではなく、物理的に存在する通信装置(ルータ、モバイルルータ、ホームゲートウェイ等)と仮想的な通信装置(ルータ等)に同一のアプリケーションを実行させてもよい。また、上述したコンピュータシステム1及び2は、単一の移動端末及び単一の仮想移動端末に同一のアプリケーションを実行させるのではなく、複数の物理装置により形成される物理装置群と、複数の仮想装置により形成される仮想装置群とに対して同一のアプリケーションを実行させてもよい。
[資源情報]
また、上記の実施形態では、収集部230や530等が、チェックポイント時に、移動端末200が消費した資源情報として「消費電力」や「処理時間」等を収集する例を示した。しかし、収集部230や530等は、チェックポイント時に、メモリ使用量、ネットワーク通信状態(ネットワーク負荷)などを収集してもよい。そして、例えば、分散データ共有部120は、仮想移動端末301のメモリ使用量が閾値以上である場合や、管理装置100と仮想移動端末301とのネットワーク負荷が閾値以上である場合には、仮想移動端末301の継続(continuation)を移動端末200に提供しないと判定してもよい。
[実行プロファイル]
また、第2の実施形態に係るプロファイル生成部540や640は、実行制御部212や312による計算回数の実績値、処理時間の実績値、消費電力の実績値、メモリ使用量の実績値、ファイルアクセスの実績値、ネットワーク通信料の実績値等の履歴を実行プロファイルとして蓄積してもよい。これにより、プロファイル記憶部440に記憶されている実行プロファイルを参照することで、常駐型プログラムの最適な実行環境を選択することができる。例えば、実行プロファイルに含まれる各種パラメータを考慮して、特定の部分処理のみを移動端末500側で実行させ、他の部分処理については仮想移動端末601側で実行させる等の最適化を実現することができる。
また、このような実行プロファイルを参照することにより、例えば、部分処理毎に、ファイルアクセスやネットワークトラフィックの実績が0のまま推移している場合には、故障やデータ損失の危険性を察知し回避する活用が可能になる。このように長期間の実行プロファイルを活用することで、1日前より1日後、1週間前より1週間後、1ヶ月前より1ヶ月後の実行制御を見直し、最適な計算資源の利用を再計画しながら、高速処理、データ保全、省電力処理、セキュリティ遵守の処理制御指針に合わせたセルフチューニングが容易となる。
[システム構成]
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、図6に示したチェックポイントの通過順序は一例であって任意に変更することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
[プログラム]
また、上記実施形態において説明した管理装置100や移動端末200や仮想移動端末301等の各種装置が実行する処理をコンピュータが実行可能な言語で記述したプログラムを作成することもできる。例えば、管理装置100が実行する処理をコンピュータが実行可能な言語で記述した管理プログラムを作成することもできる。また、例えば、移動端末200が実行する処理をコンピュータが実行可能な言語で記述した情報処理プログラムを作成することもできる。この場合、コンピュータが管理プログラムや情報処理プログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、かかる管理プログラムや情報処理プログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録された管理プログラムや情報処理プログラムをコンピュータに読み込ませて実行することにより上記実施形態と同様の処理を実現してもよい。以下に、一例として、図3に示した管理装置100と同様の機能を実現する管理プログラムを実行するコンピュータの一例を説明する。
図7は、管理プログラムを実行するコンピュータ1000を示す図である。図7に例示するように、コンピュータ1000は、例えば、メモリ1010と、CPU1020と、ハードディスクドライブインタフェース1030と、ディスクドライブインタフェース1040と、シリアルポートインタフェース1050と、ビデオアダプタ1060と、ネットワークインタフェース1070とを有し、これらの各部はバス1080によって接続される。
メモリ1010は、図7に例示するように、ROM(Read Only Memory)1011及びRAM1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、図7に例示するように、ハードディスクドライブ1031に接続される。ディスクドライブインタフェース1040は、図7に例示するように、ディスクドライブ1041に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブに挿入される。シリアルポートインタフェース1050は、図7に例示するように、例えばマウス1051、キーボード1052に接続される。ビデオアダプタ1060は、図7に例示するように、例えばディスプレイ1061に接続される。
ここで、図7に例示するように、ハードディスクドライブ1031は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093、プログラムデータ1094を記憶する。すなわち、上記の管理プログラムは、コンピュータ1000によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ1031に記憶される。例えば、図3に例示したチェックポイント定義部111と同様の情報処理を実行するチェックポイント定義手順と、チェックポイント合成部112と同様の情報処理を実行するチェックポイント合成手順と、分散データ共有部120と同様の情報処理を実行する判定手順と、継続分散共有部130と同様の情報処理を実行する提供手順とが記述されたプログラムモジュール1093が、ハードディスクドライブ1031に記憶される。
そして、CPU1020が、メモリ1010やハードディスクドライブ1031に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出し、チェックポイント定義手順、チェックポイント合成手順、判定手順、提供手順を実行する。
なお、管理プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1031に記憶される場合に限られず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ等を介してCPU1020によって読み出されてもよい。あるいは、管理プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ネットワーク(LAN(Local Area Network)、WAN(Wide Area Network)等)を介して接続された他のコンピュータに記憶され、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。