JP2014109800A - 分散処理方法、情報処理装置、及びプログラム - Google Patents

分散処理方法、情報処理装置、及びプログラム Download PDF

Info

Publication number
JP2014109800A
JP2014109800A JP2012262501A JP2012262501A JP2014109800A JP 2014109800 A JP2014109800 A JP 2014109800A JP 2012262501 A JP2012262501 A JP 2012262501A JP 2012262501 A JP2012262501 A JP 2012262501A JP 2014109800 A JP2014109800 A JP 2014109800A
Authority
JP
Japan
Prior art keywords
server
processing
information processing
execution
processing apparatus
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
JP2012262501A
Other languages
English (en)
Other versions
JP5949506B2 (ja
Inventor
Koichi Yamazaki
浩一 山崎
Kazuki Matsui
一樹 松井
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2012262501A priority Critical patent/JP5949506B2/ja
Priority to US14/047,112 priority patent/US20140156735A1/en
Publication of JP2014109800A publication Critical patent/JP2014109800A/ja
Application granted granted Critical
Publication of JP5949506B2 publication Critical patent/JP5949506B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/28Timers or timing mechanisms used in protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5013Request control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • H04L43/0817Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking functioning

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】処理の実行結果の取得が大きく遅れるリスクを低減すること。
【解決手段】第1及び第2の情報処理装置10、20を含むシステムが実行する分散処理方法が提供される。当該分散処理方法では、第1の情報処理装置10で実行可能な一の処理13を第1の情報処理装置10に代わって実行するよう、第2の情報処理装置20に対して要求し、第2の情報処理装置20による一の処理13の実行結果を取得する前に、要求からの経過時間が閾値Tthを超えたか判定し、経過時間が閾値Tthを超えたと判定した場合、第1の情報処理装置10で一の処理13を開始し、第1の情報処理装置10による一の処理13の実行結果と第2の情報処理装置20による一の処理13の実行結果とのうち先に取得した実行結果を使用する。
【選択図】図1

Description

本発明は、分散処理方法、情報処理装置、及びプログラムに関する。
近年、情報漏洩対策や導入コスト及び運用管理コストの低減を図るため、クラウドコンピューティングの利用が広がってきている。クラウドコンピューティングでは、ネットワーク上にある高性能なCentral Processing Unit(CPU)を備えたサーバ又はサーバ群によって処理が行われる。クラウドコンピューティングを利用することにより、一般的なパーソナルコンピュータやスマートフォンなどの電子機器よりも高速にアプリケーションソフトウェアを実行することが可能である。
通常、携帯電話機やデジタルカメラなどの組み込み機器は、処理速度が比較的遅く、実装される機能にも制限がある。そのため、こうした電子機器をクラウドコンピューティングシステムと連携させて、処理速度の向上や機能向上を図ることが考えられる。例えば、デジタルスチルカメラで撮像した静止画像に基づいて物体認識を行う場合に、デジタルスチルカメラ自体で画像処理を行おうとすると処理時間が長くなると共に、デジタルスチルカメラのバッテリ消費も大きくなってしまうおそれがある。そこで、画像処理の少なくとも一部をクラウドコンピューティングシステムに実行させることで、処理速度の向上及びバッテリ消費の抑制を実現することが考えられる。
しかし、サーバ・クライアント型のシステムでは、サーバとクライアントとの間のネットワークに障害が発生した場合や、サーバでのアプリケーションソフトウェアの実行時にエラーが発生した場合に、クライアントが処理結果を得られなくなるおそれがある。そこで、サーバ・クライアント型のシステムの耐障害性を高める仕組みが提案されている。
耐障害性を高める仕組みに関連して、例えば、複数の計算ノードと、当該複数の計算ノードによる計算プログラムの並列実行を制御する管理ノードとを含む計算機システムが提案されている。この計算機システムでは、複数の計算ノードが互いに異なるハードウェア環境、ソフトウェア環境、外部接続機器環境、及びプログラム起動環境となるように設定されている。このような設定により、計算プログラムに存在する特定のバグが全ての計算ノードで同時に活性化しないようにして耐障害性を高めている。
また、時系列データを高速実行する仕組みに関連して、サーバノードと、時系列データを分割した複数の分割データを処理する複数のクライアントノードとを含む情報処理システムが提案されている。この情報処理システムでは、時系列データの一部が複数の分割データに重複して含まれるように時系列データが分割される。複数のクライアントノードは、複数の分割データに対する予測計算を並列的に実行する。サーバノードは、複数のクライアントノードが実行した結果を集約し、出力用の時系列データを作成する。
特開2004−295738号公報 特開2006−252394号公報
上記のように、ある情報処理装置(例えば、処理速度が比較的遅いクライアント)が、自装置で実行するよりも早く実行結果が得られることを期待して、他の情報処理装置(例えば、処理速度が比較的速いサーバ)に処理を依頼することがある。多くの場合、依頼元の情報処理装置は、期待通りに早く他の情報処理装置から実行結果を得られる。
しかし、処理を依頼するタイミングによっては、依頼先の情報処理装置の負荷が高い場合や、依頼先の情報処理装置が属するネットワークの混雑度が高いこともある。そのため、依頼元の情報処理装置は、常に期待通りに早く実行結果を得られるとは限らず、実行結果が得られるまでに要する時間が大きく遅延するというリスクがある。
そこで、1つの側面では、本発明は、処理の実行結果の取得が大きく遅れるリスクを低減した分散処理方法、情報処理装置、及びプログラムを提供することを目的とする。
1つの態様では、第1及び第2の情報処理装置を含むシステムが実行する分散処理方法が提供される。分散処理方法では、第1の情報処理装置で実行可能な一の処理を第1の情報処理装置に代わって実行するよう、第2の情報処理装置に対して要求する。第2の情報処理装置による一の処理の実行結果を取得する前に、要求からの経過時間が閾値を超えたか判定する。経過時間が閾値を超えたと判定した場合、第1の情報処理装置で一の処理を開始し、第1の情報処理装置による一の処理の実行結果と第2の情報処理装置による一の処理の実行結果とのうち先に取得した実行結果を使用する。
また、1つの態様では、通信部と制御部とを有する情報処理装置が提供される。通信部は、情報処理装置で実行可能な一の処理を情報処理装置に代わって実行するよう、他の情報処理装置に対して要求し、他の情報処理装置による一の処理の実行結果を取得する。制御部は、他の情報処理装置による一の処理の実行結果が取得される前に、要求からの経過時間が閾値を超えたか判定し、経過時間が閾値を超えたと判定した場合、情報処理装置で一の処理を開始し、情報処理装置による一の処理の実行結果と他の情報処理装置による一の処理の実行結果とのうち先に取得された実行結果を使用する。
また、1つの態様では、コンピュータに次の処理を実行させるプログラムが提供される。コンピュータで実行可能な一の処理をコンピュータに代わって実行するよう、他のコンピュータに対して要求する。他のコンピュータによる一の処理の実行結果を取得する前に、要求からの経過時間が閾値を超えたか判定する。経過時間が閾値を超えたと判定した場合、コンピュータで一の処理を開始し、コンピュータによる一の処理の実行結果と他のコンピュータによる一の処理の実行結果とのうち先に取得した実行結果を使用する。
1つの側面では、処理の実行結果の取得が大きく遅れるリスクを低減できる。
第1の実施の形態に係る情報処理装置の例を示した図である。 クラウド連携機能について説明した図である。 第2の実施の形態に係る情報処理システムの例を示した図である。 第2の実施の形態に係る端末装置のハードウェアの例を示した図である。 第2の実施の形態に係る端末装置の機能の例を示したブロック図である。 第2の実施の形態に係るサーバ装置の機能の例を示したブロック図である。 第2の実施の形態に係る拡張実行の例を示した図である。 第2の実施の形態に係る端末装置の処理時間保存部に格納される情報の例を示した図である。 第2の実施の形態に係るサーバ装置の処理時間保存部に格納される情報の例を示した図である。 第2の実施の形態に係るサーバ処理時間の予測方法について説明する図である。 第2の実施の形態に係るサーバ装置の処理時間保存部に格納される統計情報の例を示した図である。 第2の実施の形態に係る通信状況の検出方法に用いるパケットの例を示した図である。 第2の実施の形態に係る拡張実行の一変形例を示した図である。 第2の実施の形態に係る拡張実行時にサーバ装置で処理異常が発生した場合の動作例について説明した第1の図である。 第2の実施の形態に係る拡張実行時にサーバ装置で処理異常が発生した場合の動作例について説明した第2の図である。 第2の実施の形態に係る端末装置及びサーバ装置の動作例を示した第1の図である。 第2の実施の形態に係る端末装置及びサーバ装置の動作例を示した第2の図である。 第2の実施の形態に係る端末装置の実行管理部の動作例を示した第1の図である。 第2の実施の形態に係る端末装置の実行管理部の動作例を示した第2の図である。 第2の実施の形態に係る端末装置の実行管理部の動作例を示した第3の図である。 第2の実施の形態に係る端末装置の端末側拡張実行部の動作例を示した第1の図である。 第2の実施の形態に係る端末装置の端末側拡張実行部の動作例を示した第2の図である。 第2の実施の形態に係る端末装置のサーバ処理時間予測部の動作例を示した図である。 第2の実施の形態に係る端末装置の端末処理時間計測部の動作例を示した図である。 第2の実施の形態に係るサーバ装置のサーバ側拡張実行部の動作例を示した図である。 第2の実施の形態に係るサーバ装置のサーバ処理時間管理部の動作例を示した図である。
以下、図面を参照しながら実施の形態について説明する。
[第1の実施の形態]
第1の実施の形態について説明する。
図1は、第1の実施の形態に係る情報処理装置の例を示した図である。
第1の実施の形態に係る第1の情報処理装置10は、第2の情報処理装置20と通信可能である。例えば、第1の情報処理装置10は、ネットワーク5を介して第2の情報処理装置20と通信することができる。
ネットワーク5は、有線通信網であってもよいし、無線通信網であってもよい。第2の情報処理装置20は、1台の情報処理装置であってもよいし、複数台の情報処理装置を接続した情報処理システムであってもよい。このような情報処理システムとしては、例えば、クラウドコンピューティングシステムなどを利用することができる。
第1の情報処理装置10は、通信部11及び制御部12を有する。第1の情報処理装置10は、Random Access Memory(RAM)などの揮発性記憶装置や、Hard Disk Drive(HDD)やフラッシュメモリなどの不揮発性記憶装置をさらに有していてもよい。
通信部11及び制御部12の機能は、例えば、Central Processing Unit(CPU)やDigital Signal Processor(DSP)などのプロセッサにより実現可能である。但し、通信部11及び制御部12の機能は、Application Specific Integrated Circuit(ASIC)やField Programmable Gate Array(FPGA)などのプロセッサ以外の電子回路によっても実現可能である。通信部11及び制御部12は、例えば、上記の揮発性記憶装置や不揮発性記憶装置に記憶されたプログラムを実行する。
通信部11は、第1の情報処理装置10で実行可能な一の処理13を第1の情報処理装置10に代わって実行するよう、第2の情報処理装置20に対して要求し、第2の情報処理装置20による一の処理13の実行結果を取得する。
例えば、第1の情報処理装置10で実行可能なアプリケーションプログラム(以下、単にアプリケーションと呼ぶ場合がある。)の一部処理を一の処理13として第2の情報処理装置20に実行するように要求する。一例として、第1の情報処理装置10で画像データの処理を実行する場合に、顔認識処理や高解像度化処理などの負荷の高い一部の処理を第2の情報処理装置20に実行するように要求するケースなどが考えられる。このように、アプリケーションの一部処理を第2の情報処理装置20に実行させることで、第1の情報処理装置10の負担を軽減することができる。
制御部12は、第2の情報処理装置20による一の処理13の実行結果が取得される前に、要求からの経過時間が閾値Tthを超えたか判定する。閾値Tthとしては、例えば、一の処理13と同じ処理を過去に第2の情報処理装置20が実行した際に計測された経過時間などが利用され得る。制御部12は、経過時間が閾値Tthを超えたと判定した場合、第1の情報処理装置10で一の処理13を開始し、第1の情報処理装置10による一の処理13の実行結果と第2の情報処理装置20による一の処理13の実行結果とのうち先に取得された実行結果を使用する。
上記のように、閾値Tthを超えた場合に第1の情報処理装置10が自ら一の処理13を実行開始するため、何らかの事情で第2の情報処理装置20の処理が大きく遅延した場合でも、自ら処理を実行して素早く実行結果を得られる場合がある。さらに、第1の情報処理装置10により一の処理13を開始した場合でも、先に取得された実行結果が使用されるため、第2の情報処理装置20により先に実行結果が取得された場合には、第1の情報処理装置10による実行結果を待たずに一の処理13に続く処理を実行開始できる。従って、第1の実施の形態によれば、処理の実行結果の取得が大きく遅れるリスクを低減することができる。
以上、第1の実施の形態について説明した。
[第2の実施の形態]
第2の実施の形態について説明する。
まず、電子機器とクラウドコンピューティングシステムとを連携させて処理の高速化又は高機能化を実現するクラウド連携機能について説明する。なお、クラウド連携機能が搭載され得る電子機器としては、例えば、デジタルスチルカメラ、デジタルビデオカメラ、携帯電話、スマートフォン、タブレット型コンピュータ、ノート型コンピュータ、又はカーナビゲーションシステムなどが考えられる。また、クラウドコンピューティングシステムに代えて、1台又は複数台のコンピュータから成る他のコンピューティングシステムを適用しても同様の機能が実現可能である。
図2は、クラウド連携機能について説明した図である。
図2の例では、デジタルスチルカメラとクラウドコンピューティングシステムとを連携させるクラウド連携機能が示されている。通常、デジタルスチルカメラの処理能力は、クラウドコンピューティングシステムが提供する処理能力よりも低い。そのため、クラウドコンピューティングシステムと連携させることでデジタルスチルカメラが実行する処理を高速に実行することが可能になる。また、デジタルスチルカメラが実行する処理の量を減らすことができるため、デジタルスチルカメラのバッテリ消費が抑制される。
また、クラウドコンピューティングシステムは、デジタルスチルカメラが有していない機能を提供し得る。例えば、クラウドコンピューティングシステムは、デジタルスチルカメラが搭載している画像編集機能よりも高度な画像処理(例えば、高度な物体認識処理、高度なエフェクト処理、高度な高解像度化処理など)の機能を提供し得る。そのため、クラウドコンピューティングシステムと連携させることでデジタルスチルカメラが搭載していない高度な機能を利用することが可能になる。
クラウド連携機能は、図2に示すような方法で実現される。まず、デジタルスチルカメラが処理前のデータをクラウドコンピューティングシステムに送信する。次に、処理前のデータを受信したクラウドコンピューティングシステムが処理を実行して処理後のデータを生成し、デジタルスチルカメラに送信する。次に、処理後のデータを受信したデジタルスチルカメラは、処理後のデータを利用する。この方法を適用すれば、例えば、クラウドコンピューティングシステムを利用して高度な画像処理を実行することやRAW画像を現像することなどが可能になる。
但し、デジタルスチルカメラでも実行可能な処理の場合、クラウド連携機能を利用せずにデジタルスチルカメラで処理する方が早く処理結果を得られる場合もある。例えば、データの送受信にかかる時間よりもデジタルスチルカメラによる処理時間の方が短いような負荷の軽い処理を実行する場合、デジタルスチルカメラで処理を実行する方が早く処理結果を得られる。また、ネットワークの負荷やクラウドコンピューティングシステムの負荷が高い場合、処理が大幅に遅延する場合があり、このような場合もデジタルスチルカメラで処理を実行する方が早く処理結果を得られる可能性が高い。
そこで、第2の実施の形態においては、上述したクラウド連携機能のように端末装置がサーバ装置と連携して処理を実行する状況を考え、処理を委託したサーバ装置の処理が遅延した場合でも端末装置で素早く処理の実行を開始可能にする連携処理方法を提案する。以下、端末装置から委託された処理をサーバ装置が実行することを「拡張実行」と呼ぶ場合がある。
(システムについて)
図3は、第2の実施の形態に係る情報処理システムの例を示した図である。
図3に示すように、第2の実施の形態に係る情報処理システム100は、複数の端末装置110と、サーバ装置130とを含む。複数の端末装置110は、ネットワーク94を介してサーバ装置130と接続されている。図3の例ではサーバ装置130を1台しか記載していないが、情報処理システム100には複数のサーバ装置130が含まれていてもよい。但し、以下では、1台のサーバ装置130に注目して説明を進める。情報処理システム100には、ネットワーク94を介して又は直接的にサーバ装置130に接続された記憶装置(非図示)が含まれていてもよい。
サーバ装置130は、情報処理装置の一例である。サーバ装置130の機能は、端末装置110よりも高い演算能力や大きな記憶容量を有する一又は複数のコンピュータ(上述したクラウドコンピューティングシステムを含む。)、或いは、コンピュータとストレージシステムとの組み合わせにより実現可能である。
端末装置110は、情報処理装置の一例である。端末装置110の機能は、例えば、上述したクラウド連携機能を搭載した様々な電子機器などにより実現可能である。端末装置110の機能は、図4に示すようなハードウェアにより実現可能である。
(端末装置のハードウェアについて)
図4は、第2の実施の形態に係る端末装置のハードウェアの例を示した図である。
図4に示すように、端末装置110は、例えば、CPU901、RAM902、HDD903、画像信号処理部904、入力信号処理部905、ディスクドライブ906、及び通信インターフェース907を有する。なお、端末装置110は、Charge Coupled Device Image Sensor(CCD)やComplementary Metal Oxide Semiconductor(CMOS)などの撮像素子(非図示)を有していてもよい。また、端末装置110は、撮像素子から出力された画像信号を処理する信号処理回路(非図示)を有していてもよい。
なお、CPU901は、第1の実施の形態の通信部11及び制御部12の一例である。また、第1の実施の形態の通信部11の機能を実現するために通信インターフェース907も利用される。
CPU901は、プログラムに記述された命令を実行する演算器を含むプロセッサである。CPU901は、HDD903に記憶されているプログラムやデータの少なくとも一部をRAM902にロードし、プログラムに記述された命令を実行する。なお、CPU901は、複数のプロセッサコアを含んでいてもよい。また、端末装置110は、複数のCPU901を搭載していてもよい。この場合、端末装置110は、処理を並列実行することができる。
RAM902は、CPU901が実行するプログラムや、処理に用いられるデータを一時的に記憶するための揮発性メモリである。なお、端末装置110は、RAM902とは異なる種類のメモリを有していてもよい。また、端末装置110は、複数のメモリを備えていてもよい。
HDD903は、Operating System(OS)、ファームウェア、或いは、アプリケーションソフトウェアなどのプログラムや、処理に用いられるデータなどを記憶する不揮発性記憶装置の一例である。なお、端末装置110は、フラッシュメモリやSolid State Drive(SSD)など、HDD903とは異なる種類の記憶装置を有していてもよい。また、端末装置110は、複数の記憶装置を有していてもよい。
画像信号処理部904は、CPU901による制御を受け、端末装置110に接続された表示装置91に画像を出力する。表示装置91は、例えば、Cathode Ray Tube(CRT)ディスプレイ、Liquid Crystal Display(LCD)、Plasma Display Panel(PDP)、Organic Electro-Luminescence Display(OELD)などの表示デバイスである。なお、端末装置110は、表示装置91を搭載していてもよい。
入力信号処理部905は、端末装置110に接続された入力デバイス92から入力信号を取得し、CPU901に通知する。入力デバイス92としては、例えば、マウス、キーボード、タッチパネル、タッチパッド、トラックボール、リモートコントローラ、ボタンスイッチなどを用いることができる。なお、端末装置110は、入力デバイス92を搭載していてもよい。
ディスクドライブ906は、記録媒体93に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体93としては、例えば、Flexible Disk(FD)、HDDなどの磁気ディスク、Compact Disc(CD)やDigital Versatile Disc(DVD)などの光ディスク、Magneto-Optical disk(MO)などの光磁気ディスクを用いることができる。なお、半導体メモリを記録媒体93として用い、ディスクドライブ906を半導体メモリの読み取り装置に置き換えてもよい。ディスクドライブ906は、例えば、CPU901による制御を受け、記録媒体93から読み取ったプログラムやデータをRAM902又はHDD903に格納する。
通信インターフェース907は、ネットワーク94を介して他のコンピュータと通信を行うためのインターフェースである。通信インターフェース907は、有線インターフェースであってもよいし、無線インターフェースであってもよい。例えば、通信インターフェース907は、Local Area Network(LAN)、Wide Area Network(WAN)、インターネットなどのネットワークに接続される。
なお、サーバ装置130の機能は、端末装置110と同様に図4に示すようなハードウェアにより実現することが可能である。但し、サーバ装置130に搭載されるCPU901は端末装置110よりも高性能なCPUであることが好ましい。また、サーバ装置130に搭載されるRAM902やHDD903の記憶容量は端末装置110よりも大容量であることが好ましい。また、サーバ装置130は、図4に示したハードウェアを有するコンピュータを、ネットワーク94を介して複数台接続したコンピューティングシステムであってもよい。
(端末装置について)
図5は、第2の実施の形態に係る端末装置の機能の例を示したブロック図である。
図5に示すように、端末装置110は、端末側処理部111と、実行管理部112と、処理時間保存部113と、サーバ処理時間予測部114と、通信部115と、端末側拡張実行部116と、端末処理時間計測部117とを有する。
端末側処理部111、実行管理部112、サーバ処理時間予測部114、端末側拡張実行部116、端末処理時間計測部117は、CPU901が実行するプログラムのモジュールとして実現できる。端末側処理部111、実行管理部112、サーバ処理時間予測部114、端末側拡張実行部116、端末処理時間計測部117が有する機能の一部又は全部をソフトウェアではなく電子回路として実現することも可能である。処理時間保存部113は、RAM902やHDD903に確保された記憶領域である。通信部115の機能は、通信インターフェース907により実現できる。
(端末側処理部111)
端末側処理部111は、アプリケーションの処理を実行する。
端末側処理部111は、例えば、端末装置110が起動した際に所定のアプリケーションの処理を実行する。端末側処理部111は、ユーザがアプリケーションの種類を指定して実行を指示した場合に、指定されたアプリケーションの処理を実行する。例えば、端末側処理部111は、音声データ、画像データ、テキストデータなどのコンテンツを扱うアプリケーションの処理を実行する。
端末側処理部111は、アプリケーションの処理を実行する際、RAM902やHDD903などに格納されたパラメータの値や実行コードを読み出し、読み出したパラメータの値や実行コードを用いてアプリケーションの処理を実行する。実行コードは、コンパイルされたバイナリコードであってもよいし、スクリプト言語で記述されたコードであってもよい。
端末側処理部111は、後述する実行管理部112又は端末側拡張実行部116によりアプリケーションの処理を停止するように指示された場合に、RAM902やHDD903などに格納されたパラメータの値などを含む状態データを出力する。状態データは、処理の停止時までに実行された処理を引き継いでアプリケーションの処理を継続実行するために利用される。
例えば、JAVA(登録商標)アプリケーションの処理を実行する場合、RAM902やHDD903などにスタック領域及びヒープ領域と呼ばれるメモリ領域が確保される。スタック領域には、一時的に参照するローカル変数の値や、どこまで命令を実行したかを示すポインタ(アドレス)が格納される。ヒープ領域には、動的に生成されたデータが格納される。これらスタック領域及びヒープ領域に格納されるデータは状態データの一例である。
(実行管理部112)
実行管理部112は、端末側処理部111の動作を制御する。例えば、実行管理部112は、端末装置110が起動した際に端末側処理部111に所定のアプリケーションの処理を実行させる。実行管理部112は、ユーザがアプリケーションの種類を指定して実行を指示した場合に、指定されたアプリケーションの処理を端末側処理部111に実行させる。実行管理部112は、ユーザがアプリケーションの処理を停止するように指示した場合に、端末側処理部111を制御して、指示されたアプリケーションの処理を停止させる。
実行管理部112は、端末側拡張実行部116の動作を制御する。例えば、実行管理部112は、後述する拡張実行の開始指示を予め受けている場合や、処理内容又は実行環境に応じて端末側拡張実行部116に拡張実行を開始させる。
拡張実行の開始指示を予め受けている場合とは、例えば、アプリケーションの設定として、所定の処理を実行する際に拡張実行を行うことが設定されている場合などである。一例として、画像処理アプリケーションにおいて高解像度化処理を拡張実行で行うように設定されている場合などが考えられる。この場合、実行管理部112は、高解像度化処理を実行させる際に端末側拡張実行部116に拡張実行を開始させる。なお、ある連続して実行される一又は複数の処理をまとめて「区間」と表現する。
プログラム中に拡張実行が可能な処理区間(以下、拡張実行可能区間)が予め設定されている場合も考えられる。この場合、実行管理部112は、拡張実行可能区間に達した際に端末側拡張実行部116に拡張実行を開始させる。なお、端末側拡張実行部116に拡張実行の開始を通知するに当たり、実行管理部112は、拡張実行の効果が期待できるか否かを判断し、効果が期待できる場合に拡張実行を開始させてもよい。
拡張実行とは、端末装置110が実行する処理の一部をサーバ装置130に委託することで、端末装置110とサーバ装置130とで連携してアプリケーションの処理を実行する方法である。例えば、端末装置110よりも高い演算能力を有するサーバ装置130に処理の一部を委託すれば、端末装置110が単独で全ての処理を実行するよりも高速に処理を完了できる可能性が高い。但し、サーバ装置130の負荷状況や通信状況などの影響で、拡張実行の効果が得られない可能性もある。そこで、実行管理部112は、拡張実行の効果が期待できる場合に、端末側拡張実行部116に拡張実行の開始を通知する。
例えば、実行管理部112は、端末装置110とサーバ装置130との間の通信状況を確認する。実行管理部112は、サーバ装置130の負荷状況を確認する。さらに、実行管理部112は、現時点における通信状況及び負荷状況においてサーバ装置130に対して拡張実行可能区間の処理を委託した場合に当該処理が完了するまでに要する時間(以下、サーバ処理時間)を予測する。例えば、過去にサーバ装置130が同じアプリケーションの処理を実行した際に計測されたサーバ処理時間の情報がある場合、実行管理部112は、その情報が示すサーバ処理時間を現時点で予測されるサーバ処理時間とする。
なお、サーバ処理時間の予測方法については後述する。実行管理部112は、サーバ処理時間と所定の閾値とを比較する。所定の閾値としては、例えば、同じアプリケーションの拡張実行可能区間の処理を端末装置110が単独で全て実行した場合にかかる時間(以下、端末処理時間)を予測し、その予測値が用いられる。この予測値は、過去に同じアプリケーションの処理を端末装置110が実行した際に計測された端末処理時間の情報などから得られる。なお、所定の閾値は、ユーザにより予め決められた値であってもよい。
実行管理部112は、サーバ処理時間が所定の閾値よりも小さい場合(拡張実行の効果が期待できる場合)、端末側拡張実行部116に拡張実行の開始を通知する。一方、サーバ処理時間が所定の閾値よりも大きい場合(拡張実行の効果が期待できない場合)、実行管理部112は、端末側処理部111に処理を継続して実行させる。この場合、拡張実行可能区間の処理についても、端末側処理部111が処理を実行する。
端末側拡張実行部116に拡張実行の開始を通知した場合、実行管理部112は、拡張実行の開始からサーバ処理時間が経過するまでの間、サーバ装置130から状態データが送信されてくるのを待つ。この状態データは、拡張実行可能区間の処理をサーバ装置130が実行し終えた時点で得られる状態データである。この状態データを受信した場合、実行管理部112は、端末側拡張実行部116に拡張実行の終了を通知する。そして、実行管理部112は、サーバ装置130から受信した状態データを用いて拡張実行可能区間後の処理を端末側処理部111に実行させる。
一方、サーバ処理時間が経過してもサーバ装置130から状態データが得られない場合、実行管理部112は、端末側処理部111に処理の再開を通知し、拡張実行可能区間の処理を実行させる。このように、実行管理部112は、サーバ処理時間の経過に応じて、端末側処理部111に拡張実行可能区間の処理を実行させる。そのため、何らかの事情でサーバ装置130の処理が滞っている場合にも、端末装置110が素早く自身で拡張実行可能区間の処理を開始することができるようになる。
サーバ処理時間の経過後、端末側処理部111による拡張実行可能区間の処理が完了する前にサーバ装置130から状態データを受信した場合、実行管理部112は、端末側処理部111が実行する拡張実行可能区間の処理を停止させ、端末側拡張実行部116に拡張実行の終了を通知する。そして、実行管理部112は、サーバ装置130から受信した状態データを用いて拡張実行可能区間後の処理を端末側処理部111に実行させる。このように、端末装置110自身が拡張実行可能区間の処理を開始した場合であっても、先にサーバ装置130から状態データが得られた場合には、先に得られた状態データを利用して拡張実行可能区間後の処理が実行される。
サーバ装置130の処理が大きく遅延している場合、サーバ装置130から状態データが得られる前に端末側処理部111で拡張実行可能区間の処理が完了する場合もある。この場合、実行管理部112は、端末側処理部111に拡張実行可能区間後の処理を継続して実行させ、端末側拡張実行部116に拡張実行の終了を通知する。サーバ装置130から状態データを受信した場合、実行管理部112は、サーバ装置130から受信した状態データを破棄する。このように、先に端末側処理部111で拡張実行可能区間の処理が完了した場合には、そのまま継続して拡張実行可能区間後の処理が実行される。
(処理時間保存部113)
処理時間保存部113は、端末処理時間を保存する記憶領域である。処理時間保存部113には、端末側処理部111によりアプリケーションの処理が実行された際に計測された端末処理時間が格納される。例えば、処理時間保存部113には、アプリケーションの種類毎に端末処理時間が格納される。なお、端末側処理部111によりアプリケーションの処理が実行される直前の端末装置110の負荷状況と共に、その処理が実行された際に計測された端末処理時間が処理時間保存部113に格納されていてもよい。負荷状況を表す情報としては、例えば、処理が実行される時点から所定時間前までの期間に観測されたCPU使用率の平均値(以下、平均CPU使用率)を利用することができる。
(サーバ処理時間予測部114)
サーバ処理時間予測部114は、現在実行中のアプリケーションと同じアプリケーションについて過去に計測されたサーバ処理時間の情報を実行管理部112が取得できない場合に、所望のサーバ処理時間を予測する。例えば、サーバ処理時間予測部114は、現在実行中のアプリケーションとは異なるアプリケーションについて過去に計測されたサーバ処理時間の情報を用いて、所望のサーバ処理時間を予測する。
なお、サーバ処理時間予測部114は、サーバ装置130の負荷状況や端末装置110とサーバ装置130との間の通信状況を考慮して、所望のサーバ処理時間を予測してもよい。負荷状況を表す情報としては、例えば、平均CPU使用率を利用することができる。通信状況を表す情報としては、例えば、所定サイズのデータを端末装置110が送信してからサーバ装置130が受信するまでの時間(以下、データ送信時間)などの情報を利用することができる。サーバ処理時間の予測方法についてはさらに後述する。
(通信部115)
通信部115は、サーバ装置130と通信するための通信手段である。例えば、通信部115は、拡張実行に利用する状態データを送受信する。通信部115は、サーバ装置130からサーバ処理時間や他の端末装置110の端末処理時間の情報を受信する。通信部115は、後述する端末処理時間計測部117により計測された端末処理時間の情報をサーバ装置130に送信する。
サーバ装置130との間の通信状況を確認する際、通信部115は、例えば、データ送信時間の計測用パケット(送信時刻の情報を含む。)をサーバ装置130に送信する。そして、通信部115は、データ送信時間の情報(送信時刻及び受信時刻の情報)を含む計測用パケットをサーバ装置130から受信する。これら計測用パケットの送受信は、実行管理部112が拡張実行を行うか否かを判断する前に行われる。
(端末側拡張実行部116)
端末側拡張実行部116は、拡張実行を行う際に端末側処理部111を制御する。例えば、実行管理部112から拡張実行の開始通知を受けると、端末側処理部111が実行している拡張実行可能区間前の処理を停止させ、端末側処理部111が出力した状態データをサーバ装置130に送信する。サーバ装置130から状態データを受信した実行管理部112から端末側処理部111の動作再開の通知を受けると、端末側拡張実行部116は、端末側処理部111に拡張実行可能区間後の処理を開始させる。
端末側拡張実行部116は、端末側処理部111に拡張実行可能区間の処理を実行させる場合、端末処理時間計測部117に端末処理時間を計測させる。例えば、端末側処理部111が拡張実行可能区間の処理を開始した際、端末側拡張実行部116は、端末処理時間計測部117に端末処理時間の計測を開始させる。そして、端末側処理部111が拡張実行可能区間の処理を完了した際、端末側拡張実行部116は、端末処理時間計測部117に端末処理時間の計測を終了させる。
拡張実行可能区間の処理を実行中に、実行管理部112から端末側処理部111の動作停止の通知を受けると、端末側拡張実行部116は、端末側処理部111が実行中の拡張実行可能区間の処理を停止させる。さらに、端末側拡張実行部116は、端末処理時間計測部117に端末処理時間の計測を終了させる。
(端末処理時間計測部117)
端末処理時間計測部117は、端末処理時間を計測する。例えば、端末側拡張実行部116から端末処理時間の計測開始が通知されると、端末処理時間計測部117は、端末処理時間の計測を開始する。端末側拡張実行部116から端末処理時間の計測終了が通知されると、端末処理時間計測部117は、端末処理時間の計測を終了する。そして、端末処理時間計測部117は、計測開始から計測終了までの時間を端末処理時間とする。端末処理時間計測部117は、端末処理時間の情報を処理時間保存部113に格納する。
なお、端末処理時間計測部117は、端末側処理部111が実行したアプリケーションの種類に対応付けて端末処理時間の情報を処理時間保存部113に格納する。端末装置110の負荷状況が得られている場合、端末処理時間計測部117は、さらに負荷状況の情報を端末処理時間の情報に対応付けて処理時間保存部113に格納する。端末処理時間計測部117は、端末処理時間の情報をサーバ装置130に送信する。負荷状況が得られている場合、端末処理時間計測部117は、負荷状況の情報も併せて送信する。
以上、端末装置110の機能について説明した。
(サーバ装置について)
図6は、第2の実施の形態に係るサーバ装置の機能の例を示したブロック図である。
図6に示すように、サーバ装置130は、通信部131と、サーバ側処理部132と、サーバ側拡張実行部133と、サーバ処理時間管理部134と、処理時間保存部135とを有する。
サーバ側処理部132、サーバ側拡張実行部133、サーバ処理時間管理部134は、CPU901が実行するプログラムのモジュールとして実現できる。サーバ側処理部132、サーバ側拡張実行部133、サーバ処理時間管理部134が有する機能の一部又は全部をソフトウェアではなく電子回路として実現することも可能である。通信部131の機能は、通信インターフェース907により実現できる。処理時間保存部135は、RAM902やHDD903に確保された記憶領域である。
(通信部131)
通信部131は、端末装置110と通信するための通信手段である。例えば、通信部131は、拡張実行に利用する状態データを送受信する。通信部131は、端末装置110との間の通信状況を確認するために端末装置110から送信されたデータ送信時間の計測用パケット(送信時刻の情報を含む。)を受信する。この計測用パケットを受信した通信部131は、データ送信時間の情報(送信時刻及び受信時刻の情報)を含む計測用パケットを端末装置110に送信する。
通信部131は、処理時間保存部135に格納されたサーバ処理時間や他の端末装置110の端末処理時間の情報を拡張実行の相手となる端末装置110に送信する。例えば、端末装置110からサーバ処理時間の情報に対する送信要求を受けた場合に、通信部131は、当該送信要求に応じて、処理時間保存部135に格納されたサーバ処理時間の情報を送信する。通信部131は、端末装置110の端末処理時間計測部117により計測された端末処理時間の情報を受信する。
(サーバ側処理部132)
サーバ側処理部132は、アプリケーションの処理を実行する。例えば、サーバ側拡張実行部133は、拡張実行可能区間の処理を実行する。この場合、サーバ側拡張実行部133は、端末装置110から受信した状態データを利用して拡張実行可能区間の処理を実行する。拡張実行可能区間の処理を完了した場合、サーバ側処理部132は、RAM902やHDD903などに格納されたパラメータの値を含む状態データを出力する。状態データは、拡張実行可能区間後の処理を継続して実行するために利用される。状態データは、例えば、スタック領域及びヒープ領域に格納されたデータである。
(サーバ側拡張実行部133)
サーバ側拡張実行部133は、サーバ側処理部132に拡張実行可能区間の処理を実行させる。例えば、サーバ側拡張実行部133は、端末装置110から受信した状態データをサーバ側処理部132に提供し、この状態データを利用してサーバ側処理部132に拡張実行可能区間の処理を実行させる。
サーバ側拡張実行部133は、サーバ処理時間管理部134にサーバ処理時間を計測させる。例えば、サーバ側拡張実行部133は、サーバ側処理部132が拡張実行可能区間の処理を開始するとサーバ処理時間管理部134にサーバ処理時間の計測を開始させる。サーバ側拡張実行部133は、サーバ側処理部132が拡張実行可能区間の処理を終了するとサーバ処理時間管理部134にサーバ処理時間の計測を終了させる。
サーバ側拡張実行部133は、サーバ側処理部132による拡張実行可能区間の処理が開始される直前にサーバ装置130の負荷状況を確認する。負荷状況を示す情報としては、例えば、平均CPU使用率などを利用することができる。サーバ側拡張実行部133は、負荷状況を示す情報を端末装置110に送信する。サーバ側拡張実行部133は、負荷状況を示す情報をサーバ処理時間管理部134に提供する。
サーバ側拡張実行部133は、サーバ側処理部132による拡張実行可能区間の処理が完了して状態データが出力されると、この状態データを端末装置110に送信する。
(サーバ処理時間管理部134)
サーバ処理時間管理部134は、サーバ処理時間を計測する。例えば、サーバ側拡張実行部133からサーバ処理時間の計測開始が通知されると、サーバ処理時間管理部134は、サーバ処理時間の計測を開始する。サーバ側拡張実行部133からサーバ処理時間の計測終了が通知されると、サーバ処理時間管理部134は、サーバ処理時間の計測を終了する。そして、サーバ処理時間管理部134は、計測開始から計測終了までの時間をサーバ処理時間とする。サーバ処理時間管理部134は、サーバ処理時間の情報を処理時間保存部135に格納する。
なお、サーバ処理時間管理部134は、サーバ側処理部132が実行したアプリケーションの種類に対応付けてサーバ処理時間の情報を処理時間保存部135に格納する。サーバ装置130の負荷状況が得られている場合、サーバ処理時間管理部134は、さらに負荷状況の情報を対応付けてサーバ処理時間の情報を処理時間保存部135に格納する。
端末装置110から端末処理時間を受信した場合、サーバ処理時間管理部134は、受信した端末処理時間をアプリケーションの種類及び端末装置110の識別情報を示す情報に対応付けて処理時間保存部135に格納する。その端末処理時間に対応する端末装置110の負荷状況を示す情報が得られている場合、サーバ処理時間管理部134は、負荷状況を示す情報を端末処理時間に対応付けて処理時間保存部135に格納する。
(処理時間保存部135)
処理時間保存部135は、サーバ処理時間及び端末処理時間を保存する記憶領域である。処理時間保存部135には、サーバ処理時間管理部134により計測されたサーバ処理時間の情報、及び端末装置110から受信した端末処理時間の情報が格納される。
例えば、処理時間保存部135には、アプリケーションの種類を示す情報、サーバ装置130の負荷状況を示す情報、及び通信状況を示す情報と対応付けてサーバ処理時間の情報が格納される。処理時間保存部135には、アプリケーションの種類を示す情報、端末装置110の負荷状況を示す情報、及び端末装置110の識別情報と対応付けて端末処理時間の情報が格納される。
なお、図6の例では、処理時間保存部135がサーバ装置130の内部に記載されているが、サーバ装置130の外部に接続された記憶装置(非図示)に処理時間保存部135を設け、当該記憶装置を利用するような仕組みに変形することも可能である。
以上、サーバ装置130の機能について説明した。
(拡張実行について)
図7は、第2の実施の形態に係る拡張実行の例を示した図である。
図7の例では、時系列で実行される処理#1、#2、…、#6、…について考える。なお、処理#1、#2を第1区間と呼び、処理#3〜#5を第2区間と呼び、処理#6以降を第3区間と呼ぶ。第2区間の処理は拡張実行可能区間である。画像処理アプリケーションの場合を例に挙げると、第1区間では符号化された画像データの復号や表示などの処理が行われ、第2区間では顔認識の処理が行われ、第3区間では顔認識の結果を表示する処理などが行われる。
図7の例では、チェックポイントA、Bが予め設定されている。なお、チェックポイントとは、JAVAアプリケーションの処理を実行する装置間でマイグレーションを行う際に一方の装置で実行状態を示す状態データを保存する処理又は技術を言う。チェックポイントの設定は、例えば、プログラムやプログラムに付随する設定ファイルに記述される。なお、端末装置110及びサーバ装置130が、チェックポイントの設定を記述した設定ファイルをプログラムとは別に保持していてもよい。
端末装置110は、処理#1、#2を実行した後、スタック領域及びヒープ領域内のデータを状態データとして保存する(チェックポイントA)。そして、端末装置110は、保存した状態データを圧縮してサーバ装置130に送信する。
状態データを受信したサーバ装置130は、アプリケーションを起動し、RAM902やHDD903などのメモリ領域にスタック領域及びヒープ領域を確保する。そして、サーバ装置130は、端末装置110から受信した状態データをスタック領域及びヒープ領域に上書きし、第2区間の処理#3を実行開始する。なお、サーバ装置130は、メモリアドレスのアドレス変換を行う場合もある。サーバ装置130は、アプリケーションの実行コードを予め保持していてもよいし、状態データと共に端末装置110から受信してもよい。
第2区間の処理#3〜#5を実行し終えると、サーバ装置130は、スタック領域及びヒープ領域内のデータを状態データとして保存する(チェックポイントB)。そして、サーバ装置130は、保存した状態データを圧縮して端末装置110に送信する。
状態データを受信した端末装置110は、サーバ装置130から受信した状態データをスタック領域及びヒープ領域に上書きし、第3区間の処理#6を実行開始する。なお、端末装置110は、メモリアドレスのアドレス変換を行う場合もある。このように、状態データを利用することで拡張実行可能区間の処理をサーバ装置130で実行し、その処理結果を引き継いで端末装置110が拡張実行可能区間後の処理を実行することが可能になる。
以上、拡張実行の例について説明した。
(端末装置及びサーバ装置が保持する情報について)
図8は、第2の実施の形態に係る端末装置の処理時間保存部に格納される情報の例を示した図である。
端末装置110の処理時間保存部113には、端末処理時間の情報が格納される。図8に示すように、処理時間保存部113には、端末処理時間の情報と共に、アプリケーションの種類を示すアプリケーション識別情報、及びその端末処理時間を計測する直前の負荷状況を示す情報が対応付けて格納される。
例えば、端末装置110がAPP−Aというアプリケーションの処理を過去に実行した際に計測された端末処理時間が320秒である場合、APP−A及び320秒という情報が処理時間保存部113に対応付けて格納される。このAPP−Aの処理を実行開始する直前の端末装置110の負荷状況を示す情報(例えば、実行開始前の所定期間におけるCPU使用率の平均値(23%))が得られている場合、この情報も端末処理時間の情報に対応付けて格納される。
このように、アプリケーションの種類及び負荷状況に応じた端末処理時間の情報を保持しておくことで、端末装置110で拡張実行可能区間の処理を実行する際に、当該処理にかかる時間を見積もることが可能になる。例えば、同じアプリケーションに対応付けられ、現時点での負荷状況と近い負荷状況の情報に対応付けられた端末処理時間の情報があれば、その端末処理時間と同程度の時間で処理が完了すると予測できる。また、処理時間保存部113に格納された端末処理時間の情報は、後述するように、サーバ処理時間の予測に利用することができる。
図9は、第2の実施の形態に係るサーバ装置の処理時間保存部に格納される情報の例を示した図である。
サーバ装置130の処理時間保存部135には、端末処理時間の情報及びサーバ処理時間の情報が格納される。なお、端末処理時間の情報は、対応する端末装置110の識別情報(図9の例では端末装置#1など)に対応付けて格納される。サーバ処理時間の情報は、サーバ装置130の識別情報(図9の例ではサーバ装置#1)に対応付けて格納される。
処理時間保存部135には、端末処理時間の情報と共に、アプリケーションの種類を示すアプリケーション識別情報、及びその端末処理時間を計測する直前の端末装置110の負荷状況を示す情報が対応付けて格納される。処理時間保存部135には、サーバ処理時間の情報と共に、アプリケーションの種類を示すアプリケーション識別情報、及びそのサーバ処理時間を計測する直前のサーバ装置130の負荷状況を示す情報が対応付けて格納される。
例えば、サーバ装置130がAPP−Bというアプリケーションの処理を過去に実行した際に計測されたサーバ処理時間が145秒である場合、APP−B及び145秒という情報が処理時間保存部135に対応付けて格納される。このAPP−Bの処理を実行開始する直前のサーバ装置130の負荷状況を示す情報(例えば、実行開始前の所定期間におけるCPU使用率の平均値(61%))が得られている場合、この情報もサーバ処理時間の情報に対応付けて格納される。
このように、アプリケーションの種類及び負荷状況に応じたサーバ処理時間の情報を保持しておくことで、サーバ装置130で拡張実行可能区間の処理を実行する際に、当該処理にかかる時間を見積もることが可能になる。例えば、同じアプリケーションに対応付けられ、現時点での負荷状況と近い負荷状況の情報に対応付けられたサーバ処理時間の情報があれば、そのサーバ処理時間と同程度の時間で処理が完了すると予測できる。また、処理時間保存部135に格納されたサーバ処理時間の情報は、後述するように、アプリケーションの種類などが異なるサーバ処理時間の予測に利用することができる。
端末装置110がAPP−Aというアプリケーションの処理を過去に実行した際に計測された端末処理時間が320秒である場合、APP−A及び320秒という情報が処理時間保存部135に対応付けて格納される。このAPP−Aの処理を実行開始する直前の端末装置110の負荷状況を示す情報(例えば、実行開始前の所定期間におけるCPU使用率の平均値(23%))が得られている場合、この情報も端末処理時間の情報に対応付けて格納される。この情報もサーバ処理時間の予測に利用することができる。
以上、端末装置及びサーバ装置が保持する情報について説明した。なお、図9の例では記載を省略したが、処理時間保存部135には、サーバ処理時間の情報に対応付けて通信状況を示す情報(例えば、データ送信時間の情報)が格納されていてもよい。
(サーバ処理時間の予測方法について)
拡張実行を行う際、端末装置110は、過去にサーバ装置130が同じアプリケーションの処理を実行した際に計測されたサーバ処理時間の情報を利用する。但し、現在実行しようとしているアプリケーションに対応するサーバ処理時間の情報がない場合、端末装置110は、所望のアプリケーションに対応するサーバ処理時間を予測する。このようなサーバ処理時間の予測方法について以下で説明する。
図10は、第2の実施の形態に係るサーバ処理時間の予測方法について説明する図である。
一例として、APP−Aというアプリケーションの処理をサーバ装置130で実行した場合のサーバ処理時間を予測する2通りの方法(予測方法#1、#2)を紹介する。なお、予測方法#1、#2の適用条件は図10に示した通りである。
(予測方法#1)
予測方法#1は、同じアプリケーションに対応するサーバ処理時間と端末処理時間との比がアプリケーションの種類が変わっても同じであると仮定して、所望のサーバ処理時間を予測する方法である。
例えば、予測方法#1は、APP−A及びAPP−Bに対応する端末処理時間があり、かつ、APP−Bに対応するサーバ処理時間がある場合に適用される。なお、APP−Aに対応するサーバ処理時間を予測する場合であるから、APP−Aに対応するサーバ処理時間はない。APP−Bは、APP−Aとは異なるアプリケーションの一例である。
APP−Bに対応する端末処理時間をTBT、APP−Bに対応するサーバ処理時間をTBS、APP−Aに対応する端末処理時間をTATと表記する。予測方法#1によれば、端末装置110は、端末処理時間TAT、TBT、及びサーバ処理時間TBSに基づいてサーバ処理時間TASを下記の式(1)により計算することができる。
Figure 2014109800
(予測方法#2)
予測方法#2は、APP−Aに対応するサーバ処理時間TASを予測する端末装置110(第1端末と表記する。)とは別の端末装置110(第2端末と表記する。)で計測された情報を利用してサーバ処理時間TASを予測する方法である。より詳細には、予測方法#2は、2つの異なるアプリケーションを実行する際に計測される処理時間の比は、装置の種類が変わっても同程度であると仮定して、所望のサーバ処理時間を予測する方法である。
例えば、予測方法#2は、APP−Bに対応するサーバ処理時間TBSがあり、かつ、APP−Aに対応する第2端末の端末処理時間TxAT、及びAPP−Bに対応する第2端末の端末処理時間TxBTがある場合に適用される。予測方法#2によれば、端末装置110は、サーバ処理時間TBS、及び第2端末の端末処理時間TxAT、TxBTに基づいてサーバ処理時間TASを下記の式(2)により計算することができる。
Figure 2014109800
(並行実行)
上記の予測方法#1、#2のいずれも適用できない場合がある。例えば、図10に示すように、APP−Bに対応するサーバ処理時間TBSがない場合、上記の予測方法#1、#2は適用できない。APP−Bに対応するサーバ処理時間TBSがある場合でも、第1端末の端末処理時間TAT、TBTの少なくとも一方がなく、かつ、第2端末の端末処理時間TxAT、TxBTの少なくとも一方がないとき、予測方法#1、#2は適用できない。予測方法#1、#2が適用できない場合、APP−Aにおける拡張実行可能区間の処理を端末装置110とサーバ装置130とで共に実行する。
端末装置110とサーバ装置130とで共にAPP−Aの処理を実行することで、APP−Aに対応するサーバ処理時間及び端末処理時間が得られる。そして、次回以降、APP−Aを拡張実行する際にはAPP−Aに対応するサーバ処理時間を利用することができるようになる。
なお、予測方法#1、#2のいずれも適用できない場合、拡張実行に利用するサーバ処理時間の情報として、予め設定された時間情報を利用してもよい。
(利用する情報について)
端末装置110やサーバ装置130では、同じアプリケーションの処理が何度も実行されることがある。そのため、図9に示したように、1つのアプリケーションについて複数の端末処理時間の情報及び複数のサーバ処理時間の情報が得られ得る。このような場合、同じアプリケーションについて過去に計測された複数のサーバ処理時間の平均値、最頻値、最新値などを上記の予測方法#1、#2に利用する方法が考えられる。端末処理時間についても同様である。
(負荷状況を考慮する方法)
ここで、図11を参照しながら、サーバ装置130の負荷状況を考慮したサーバ処理時間の予測方法について説明する。図11は、第2の実施の形態に係るサーバ装置の処理時間保存部に格納される統計情報の例を示した図である。
拡張実行可能区間の処理をサーバ装置130に委託するか否かを判断する際、サーバ装置130で当該処理を実行する場合と端末装置110で当該処理を実行する場合とでいずれが早く処理結果を得られるかを確認することがある。例えば、過去に計測されたサーバ処理時間と端末処理時間との比較が行われる。このとき、過去に同じアプリケーションを実行した際の負荷状況を考慮したサーバ処理時間を利用することで、より正確な判断を行うことが可能になる。
負荷状況を考慮する場合、端末装置110は、現時点でのサーバ装置130の負荷状況に対応するサーバ処理時間の情報をサーバ装置130に要求する。図9に示したように、サーバ処理時間とサーバ装置130の負荷状況とが対応付けて処理時間保存部135に格納されているため、サーバ装置130は、端末装置110から受けた要求に応じて、現時点での負荷状況に対応するサーバ処理時間を検索できる。
現時点での負荷状況に対応するサーバ処理時間の情報がある場合、サーバ装置130は、端末装置110に対してサーバ処理時間の情報を提供する。現時点での負荷状況に対応するサーバ処理時間の情報がない場合、端末装置110は、その負荷状況に対応するサーバ処理時間を予測する。この予測の方法(予測方法#3)について説明する。なお、予測方法#3は、上記の予測方法#1、#2と組み合わせて利用される。
図9に示したように、処理時間保存部135には、負荷状況に応じて、同じアプリケーションについて複数のサーバ処理時間が格納される。そこで、サーバ処理時間の統計情報を利用する方法について考える。例えば、平均CPU使用率(負荷状況)が50%から60%の範囲内にある場合に過去に計測されたAPP−Bに対応するサーバ処理時間を取得し、その平均値や中央値などをサーバ処理時間の統計情報として利用する。なお、平均値や中央値などの計算は、サーバ処理時間管理部134により実行される。サーバ処理時間の統計情報は、図11に示すように処理時間保存部135に格納される。
例えば、図11の表に記載のTB50は、平均CPU使用率(負荷状況)が50%から60%の範囲内にある場合に過去に計測されたAPP−Bに対応するサーバ処理時間の統計情報である。なお、図11の表に記載の(未格納)という表示は、その表示がある欄に対応するサーバ処理時間の情報が得られていないことを示している。例えば、所望の負荷状況の範囲内について過去にサーバ処理時間が計測されておらず、予測方法#1、#2により予測もできない場合が(未格納)という表示の欄に対応する。
予測方法#3では、処理時間保存部135に格納されているサーバ処理時間の統計情報から、(未格納)という表示の欄に対応するサーバ処理時間の統計情報を予測する。一例として、平均CPU使用率(負荷状況)が70%から80%の範囲内にある場合に過去に計測されたAPP−Cに対応するサーバ処理時間の統計情報TC70を予測する方法について考える。図11の表に記載のある統計情報TB50、TB70、TC50を利用し、例えば、下記の式(3)に基づいて統計情報TC70を予測する。
Figure 2014109800
予測方法#3を適用すれば、所望の負荷状況の範囲内について過去にサーバ処理時間が計測されておらず、予測方法#1、#2により予測もできない場合でも、サーバ処理時間の統計情報が得られることがある。
(通信状況を測定する方法について)
図12は、第2の実施の形態に係る通信状況の検出方法に用いるパケットの例を示した図である。通信状況は、所定サイズのデータを端末装置110からサーバ装置130へと送信した際に要した時間(データ送信時間)を用いて評価することができる。データ送信時間は、例えば、図12に示すようなパケットを利用して測定可能である。
図12(A)に示したパケットは、端末装置110からサーバ装置130へと送信される要求パケットである。一方、図12(B)に示したパケットは、サーバ装置130から端末装置110へと送信される応答パケットである。
図12(A)に示すように、要求パケットは、通信状況検出用パケット識別情報、データ長、送信時刻、及びデータを含む。要求パケットに含まれるデータは、一定サイズのデータである。なお、このデータの内容は任意であり、例えば、0x00のようなNULLデータでもよい。通信状況検出用パケット識別情報は、要求パケットを識別するための情報である。データ長は、要求パケットに含まれるデータの長さを示す情報である。送信時刻は、端末装置110が要求パケットを送信した時刻を示す情報(タイムスタンプ)である。
図12(B)に示すように、応答パケットは、通信状況検出用パケット識別情報、要求パケットのデータ長、送信時刻、及び受信時刻を含む。応答パケットは、要求パケットに応じてサーバ装置130から端末装置110へと送信される。通信状況検出用パケット識別情報は、要求パケットの通信状況検出用パケット識別情報と同じ情報である。要求パケットのデータ長は、要求パケットに含まれるデータ長と同じ情報である。送信時刻は、要求パケットに含まれる送信時刻と同じ情報である。受信時刻は、サーバ装置130が要求パケットを受信した時刻を示す情報(タイムスタンプ)である。
応答パケットを受信した端末装置110は、応答パケットに含まれる送信時刻及び受信時刻から、要求パケットの送信に要したデータ送信時間を計算する。端末装置110は、応答パケットに含まれる要求パケットのデータ長及び計算したデータ送信時間を用いて、単位データ長当たりのデータ送信時間である送信レートを計算する。
送信レートに状態データのサイズをかけると、拡張実行の際に行う状態データの送信にかかる時間を予測することができる。拡張実行の際にアプリケーション自体をサーバ装置130に送信する場合、アプリケーションのサイズを送信レートにかけることで、アプリケーションの送信にかかる時間を予測することができる。これら予測した時間と、過去に計測されたサーバ処理時間とを合算した時間が、通信状況を考慮した場合における、サーバ装置130で拡張実行可能区間の処理が完了するまでの時間の予測値となる。
(拡張実行の変形例について)
ここで、変形例について説明する。
(第1変形例)
図13は、第2の実施の形態に係る拡張実行の一変形例を示した図である。
図13の例では、処理#1〜#4のうち、処理#2〜#4が連携処理により実行される。端末装置110は、処理#1を実行した後、拡張実行を開始してサーバ装置130に処理#2〜#4を実行させる。これまで説明した方法では、予測したサーバ処理時間Tの経過後、端末装置110は、処理#2〜#4を実行していた。第1変形例では、サーバ処理時間Tの経過時点でサーバ装置130が完了している処理を端末装置110で利用する。
例えば、端末装置110は、サーバ処理時間Tの経過時に、サーバ装置130に対して状態データを送信するように依頼する。この依頼を受けたサーバ装置130は、アプリケーションの処理を一時停止して状態データを保存する。さらに、サーバ装置130は、保存した状態データを端末装置110に送信する。状態データを受信した端末装置110は、サーバ装置130から受信した状態データを利用して処理#4を開始する。
第1変形例に係る方法を適用することで、処理#2、#3の処理を省略できる分だけ端末装置110の処理負担を軽減することができる。処理負担の軽減により、端末装置110のバッテリ消費を抑制することができる。また、より早く処理#4の結果を得られる。
(第2変形例)
図14は、第2の実施の形態に係る拡張実行時にサーバ装置で処理異常が発生した場合の動作例について説明した第1の図である。
拡張実行を開始し、サーバ装置130でアプリケーションの処理を実行中に、処理異常が発生した場合の対処方法について考える。例えば、次のチェックポイントに到達する前に、アプリケーションが異常停止(ハングアップ)又は異常終了し、待っても次のチェックポイントまで到達することが期待できず、端末装置110に応答できない状態になった場合を想定する。
これまで説明してきた方法によれば、上記のような処理異常が発生した場合、予測したサーバ処理時間の経過を待って端末装置110が処理を開始する。第2変形例では、予測したサーバ処理時間Tの経過を待たずに端末装置110が処理を開始できるようにする。
例えば、上記のような処理異常が発生した場合、サーバ装置130は、端末装置110に対して処理異常の発生を通知する。この通知を受けた端末装置110は、予測したサーバ処理時間Tの経過を待たずに拡張実行可能区間の処理#2〜#4を開始する。
第2変形例によれば、予測したサーバ処理時間Tの経過前に端末装置110が処理#2を開始するため、予測したサーバ処理時間Tの経過を待つ場合に比べて、端末装置110による処理#2〜#4の結果をより早く得ることができる。
(第3変形例)
図15は、第2の実施の形態に係る拡張実行時にサーバ装置で処理異常が発生した場合の動作例について説明した第2の図である。
第3変形例では、第2変形例と同様に、サーバ装置130で処理異常が発生した場合に、予測したサーバ処理時間Tの経過を待たずに端末装置110が処理を開始できるようにする。但し、第3変形例では、図15に示すように、処理異常の発生を知らせる通知と共にサーバ装置130から端末装置110へと状態データを送信する。状態データを受信した端末装置110は、受信した状態データを用いて処理(図15の例では処理#3、#4)を開始する。
第3変形例によれば、処理異常の発生前にサーバ装置130が完了した処理#2を端末装置110があらためて実行せずに済むため、端末装置110の処理負担を軽減することができる。処理負担の軽減により、端末装置110のバッテリ消費を抑制することができる。また、より早く処理#4の結果を得られる。
なお、処理異常が発生した時点で状態データを端末装置110に送信するのではなく、定期的に状態データを端末装置110へと送信するようにしてもよい。この場合、端末装置110は、サーバ装置130で処理異常が発生する前に保存された状態データを利用して安全に拡張実行可能区間の処理を開始できるようになる。
(端末装置及びサーバ装置の動作)
図16は、第2の実施の形態に係る端末装置及びサーバ装置の動作例を示した第1の図である。
(S101)端末装置110は、アプリケーションの処理を開始する。例えば、端末装置110を起動したタイミングで所定のアプリケーションの処理が開始される。ユーザによりアプリケーションの種類を指定して当該アプリケーションの処理を開始するように指示を受けた場合も、端末装置110は、そのアプリケーションの処理を開始する。
端末装置110は、アプリケーションの処理を開始する際に拡張実行を行うか否かを判断する。例えば、端末装置110は、アプリケーションに拡張実行を行うことが設定されているかを確認し、設定されている場合には拡張実行可能区間の処理について拡張実行を行う。拡張実行を行うことが設定されていない場合、端末装置110は、単独でアプリケーションの処理を実行する。以下、拡張実行を行うことが設定されているものとして説明を進める。
(S102)端末装置110は、拡張実行を開始するか否かを判断する。例えば、端末装置110は、拡張実行可能区間に達した場合に拡張実行を開始する。拡張実行可能区間を示す情報は、例えば、アプリケーションに予め設定されているか、端末装置110及びサーバ装置130が保持する設定ファイルに記述されている。拡張実行可能区間に達した場合、S103の動作に移る。拡張実行可能区間に達していない場合、端末装置110がアプリケーションの処理を継続しつつ、S102の動作を行う。
なお、端末装置110は、ユーザの指示に応じて拡張実行を開始してもよい。この場合、端末装置110は、ユーザの指示に応じてS103の動作に移る。ユーザの指示は、端末装置110から入力されてもよいし、サーバ装置130から入力されてもよい。
(S103)端末装置110は、アプリケーションの処理を一時停止して状態データを保存し、サーバ装置130が保持するサーバ処理時間の情報を確認する。例えば、端末装置110は、処理を一時停止したアプリケーションと同じアプリケーションについて過去にサーバ装置130が処理を実行した際に計測されたサーバ処理時間の情報があるか否かをサーバ装置130に問い合わせる。この問い合わせに応じてサーバ装置130は、該当するサーバ処理時間の情報があるか否かを端末装置110に回答する。
(S104)S103でサーバ処理時間の情報があると回答された場合、端末装置110は、S105の動作に移る。S103でサーバ処理時間の情報がないと回答された場合、端末装置110は、S106の動作に移る。
(S105)端末装置110は、S103で問い合わせたサーバ処理時間の情報をサーバ装置130から取得する。端末装置110は、取得した情報が示すサーバ処理時間で拡張実行可能区間の処理をサーバ装置130が完了できると予測する。サーバ処理時間の情報を取得した端末装置110は、S107の動作に移る。なお、端末装置110が取得した情報が示すサーバ処理時間を以下では「予測したサーバ処理時間」と呼ぶことにする。
(S106)端末装置110は、自身が保持する端末処理時間の情報及びサーバ装置130が保持する他のアプリケーションに対応するサーバ処理時間の情報を取得する。そして、端末装置110は、取得した端末処理時間の情報及びサーバ処理時間の情報を利用して所望のサーバ処理時間を予測する。例えば、端末装置110は、上述した予測方法#1や#2に基づいて所望のアプリケーションに対応するサーバ処理時間を予測する。なお、S106で予測したサーバ処理時間も以下で「予測したサーバ処理時間」と呼ぶ。
(S107)端末装置110は、通信状況を確認する。例えば、端末装置110は、上述した通信状況検出用のパケットをサーバ装置130との間で送受信し、データ送信時間を計測する。
端末装置110は、現時点におけるサーバ装置130の負荷状況に応じたサーバ処理時間の情報を要求する。この要求を受けたサーバ装置130は、現時点における負荷状況(例えば、平均CPU使用率)を確認し、その負荷状況に対応するサーバ処理時間の情報を検索する。所望のサーバ処理時間の情報を保持していない場合、サーバ装置130は、例えば、上述した予測方法#3に基づいてサーバ処理時間を予測する。所望のサーバ処理時間が得られた場合、サーバ装置130は、そのサーバ処理時間の情報を端末装置110に送信する。
サーバ装置130から負荷状況に応じたサーバ処理時間の情報が得られた場合、端末装置110は、負荷状況に応じたサーバ処理時間にデータ送信時間を合算した時間(以下、第1予測時間)と、自身が保持する端末処理時間とを比較する。但し、サーバ装置130から負荷状況に応じたサーバ処理時間の情報が得られなかった場合、端末装置110は、S105又はS106で得た、予測したサーバ処理時間にデータ送信時間を合算した時間(以下、第2予測時間)と、自身が保持する端末処理時間とを比較する。
第1又は第2予測時間が端末処理時間よりも長い場合、端末装置110は、S108の動作に移る。一方、第1又は第2予測時間が端末処理時間よりも短い場合、端末装置110は、S109の動作に移る。
(S108)端末装置110は、拡張実行可能区間の処理を含むアプリケーションの処理を単独で実行する。端末装置110が単独でアプリケーションの処理を全て完了すると図16及び図17に記載の一連の動作は終了する。
(S109)端末装置110は、状態データをサーバ装置130に送信する。状態データを受信したサーバ装置130は、受信した状態データを利用して拡張実行可能区間の処理を開始すると共に、サーバ処理時間の計測を開始する。なお、サーバ装置130は、拡張実行可能区間の処理が完了した場合にサーバ処理時間の計測を終了すると共に状態データを保存し、保存した状態データを端末装置110に送信する。
(S110)端末装置110は、サーバ装置130から状態データを受信したか否かを判定する。サーバ装置130から状態データを受信した場合、端末装置110は、図17に記載のS117の動作に移る。サーバ装置130から状態データを受信していない場合、端末装置110は、S111の動作に移る。
(S111)端末装置110は、サーバ装置130に状態データを送信した時点を基準に、第2予測時間を経過したか否かを判定する。第2予測時間を経過した場合、端末装置110は、S112の動作に移る。一方、第2予測時間を経過していない場合、端末装置110は、S110の動作に移る。
(S112)端末装置110は、拡張実行可能区間の処理を実行開始すると共に、端末処理時間の計測を開始する。そして、端末装置110は、図17に記載のS113の動作に移る。
図17は、第2の実施の形態に係る端末装置及びサーバ装置の動作例を示した第2の図である。
(S113)端末装置110が自身で拡張実行可能区間の処理を完了したか、又は端末装置110がサーバ装置130から状態データを受信した場合、端末装置110は、S114の動作に移る。それ以外の場合、端末装置110は、S113の動作を繰り返す。
(S114)端末装置110が自身で拡張実行可能区間の処理を完了した場合、端末装置110は、端末処理時間の計測を終了し、S116の動作に移る。一方、端末装置110がサーバ装置130から状態データを受信した場合、端末装置110は、S115の動作に移る。
(S115)端末装置110は、拡張実行可能区間の処理を停止し、端末処理時間の計測を終了する。その後、端末装置110は、S117の動作に移る。つまり、端末装置110が拡張実行可能区間の処理を実行中にサーバ装置130から状態データを受信した場合には、端末装置110が実行中の当該処理を停止し、動作を先に進める。なお、拡張実行可能区間の処理を完了したサーバ装置130は、サーバ処理時間を保存する。
(S116)端末装置110は、計測した端末処理時間を自身で保持すると共に、サーバ装置130に送信する。その後、端末装置110は、S117の動作に移る。
(S117)端末装置110は、拡張実行可能区間後の処理を実行する。サーバ装置130から状態データを受信した場合、端末装置110は、受信した状態データを利用して拡張実行可能区間後の処理を実行する。例えば、端末装置110は、受信した状態データをスタック領域及びヒープ領域に上書きし、拡張実行可能区間後の処理を実行開始する。
端末装置110が自身で拡張実行可能区間の処理を完了した場合、拡張実行可能区間の処理結果がスタック領域及びヒープ領域に書き込まれているため、端末装置110は、そのまま拡張実行可能区間後の処理を継続実行する。
(S118)端末装置110は、拡張実行可能区間後の処理を実行中にサーバ装置130から状態データを受信したか否かを判定する。既にサーバ装置130から状態データを受信している場合には再び状態データが端末装置110に送信されない。この場合、端末装置110によりアプリケーションの処理が全て完了すると図16及び図17に記載の一連の動作は終了する。
一方、サーバ装置130から状態データを受信する前に端末装置110が自身で拡張実行可能区間の処理を完了した場合には、拡張実行可能区間後の処理を実行中に端末装置110がサーバ装置130から状態データを受信することがある。この場合、端末装置110は、S119の動作に移る。
(S119)端末装置110は、サーバ装置130から受信した状態データを破棄する。拡張実行可能区間の処理を完了したサーバ装置130は、サーバ処理時間を保持する。端末装置110によりアプリケーションの処理が全て完了すると図16及び図17に記載の一連の動作は終了する。
以上、端末装置110及びサーバ装置130の動作例について説明した。
(実行管理部の動作)
図18は、第2の実施の形態に係る端末装置の実行管理部の動作例を示した第1の図である。実行管理部112の動作例について説明する。
(S131)実行管理部112は、アプリケーションの処理を開始するか否かを判定する。例えば、端末装置110を起動したタイミングで所定のアプリケーションの処理が開始される設定の場合、実行管理部112は、端末装置110の起動と共にS132の動作に移る。ユーザによりアプリケーションの種類を指定して当該アプリケーションの処理を開始するように指示を受けた場合に、実行管理部112が、S132の動作に移るようにしてもよい。
なお、実行管理部112は、アプリケーションの処理を開始する際に拡張実行を行うか否かを判断する。例えば、実行管理部112は、アプリケーションに拡張実行を行うことが設定されているかを確認し、設定されている場合には拡張実行可能区間の処理について拡張実行を行う。拡張実行を行うことが設定されていない場合、実行管理部112は、端末側処理部111に単独でアプリケーションの処理を実行させる。以下、拡張実行を行うことが設定されているものとして説明を進める。
(S132)実行管理部112は、端末側処理部111にアプリケーションの処理を開始するように通知する。
(S133)実行管理部112は、拡張実行を開始するか否かを判断する。例えば、実行管理部112は、拡張実行可能区間に達した場合に拡張実行を開始する。拡張実行可能区間を示す情報は、例えば、アプリケーションに予め設定されているか、端末装置110及びサーバ装置130が保持する設定ファイルに記述されている。端末側処理部111の実行する処理が拡張実行可能区間に達した場合、実行管理部112は、S134の動作に移る。拡張実行可能区間に達していない場合、実行管理部112は、拡張実行可能区間に達するまで待機する。
なお、端末装置110は、ユーザの指示に応じて拡張実行を開始してもよい。この場合、端末装置110は、ユーザの指示に応じてS103の動作に移る。ユーザの指示は、端末装置110から入力されてもよいし、サーバ装置130から入力されてもよい。
(S134)実行管理部112は、サーバ装置130が保持するサーバ処理時間の情報を確認する。例えば、実行管理部112は、拡張実行を行うアプリケーションと同じアプリケーションについて過去にサーバ装置130が処理を実行した際に計測されたサーバ処理時間の情報があるか否かをサーバ装置130に問い合わせる。
(S135)S134でサーバ装置130からサーバ処理時間の情報があると回答を受けた場合、実行管理部112は、S136の動作に移る。S134でサーバ装置130からサーバ処理時間の情報がないと回答を受けた場合、実行管理部112は、S137の動作に移る。
(S136)実行管理部112は、S134で問い合わせたサーバ処理時間の情報をサーバ装置130から取得する。サーバ処理時間の情報を取得した実行管理部112は、S139の動作に移る。
(S137)実行管理部112は、サーバ処理時間予測部114にサーバ処理時間の予測を依頼する。
(S138)実行管理部112は、サーバ処理時間予測部114からサーバ処理時間の予測結果を取得するまで待機し、サーバ処理時間の予測結果を取得した場合にはS139の動作に移る。
(S139)実行管理部112は、通信状況を確認する。例えば、実行管理部112は、通信部115に対し、上述した通信状況検出用のパケットをサーバ装置130との間で送受信させ、データ送信時間を計測させる。
実行管理部112は、現時点におけるサーバ装置130の負荷状況に応じたサーバ処理時間の情報を要求する。サーバ装置130から負荷状況に応じたサーバ処理時間の情報が得られた場合、実行管理部112は、負荷状況に応じたサーバ処理時間にデータ送信時間を合算した時間(第1予測時間)と、処理時間保存部113に格納されている端末処理時間とを比較する。
但し、サーバ装置130から負荷状況に応じたサーバ処理時間の情報が得られなかった場合、実行管理部112は、S136で取得したサーバ処理時間又はS138で取得した予測結果にデータ送信時間を合算した時間(第2予測時間)と、処理時間保存部113に格納されている端末処理時間とを比較する。
第1又は第2予測時間が端末処理時間よりも長い場合、実行管理部112は、S140の動作に移る。一方、第1又は第2予測時間が端末処理時間よりも短い場合、実行管理部112は、S141の動作に移る。
なお、比較する端末処理時間が処理時間保存部113にない場合、第1又は第2予測時間と所定の閾値とが比較され、第1又は第2予測時間が所定の閾値よりも長い場合、実行管理部112は、S140の動作に移る。一方、第1又は第2予測時間が所定の閾値よりも短い場合、実行管理部112は、S141の動作に移る。
(S140)実行管理部112は、端末側処理部111に拡張実行可能区間の処理を含むアプリケーションの処理を継続して実行させる。
(S141)実行管理部112は、端末側拡張実行部116に対して拡張実行可能区間の処理を実行開始するように通知し、図19に記載のS142の動作に移る。
図19は、第2の実施の形態に係る端末装置の実行管理部の動作例を示した第2の図である。
(S142)実行管理部112は、サーバ装置130から状態データを取得したか否かを判定する。サーバ装置130から状態データを取得した場合、実行管理部112は、S148の動作に移る。一方、実行管理部112は、サーバ装置130から状態データを取得していない場合、S143の動作に移る。
(S143)実行管理部112は、S141で実行開始を通知してから第2予測時間が経過したか否かを判定する。第2予測時間が経過した場合、実行管理部112は、S144の動作に移る。一方、第2予測時間が経過していない場合、実行管理部112は、S142の動作に移る。
(S144)実行管理部112は、端末側拡張実行部116に対して端末側処理部111の動作再開を通知する。つまり、実行管理部112は、端末側処理部111に拡張実行可能区間の処理を実行開始させるように端末側拡張実行部116に指示する。
(S145)実行管理部112は、端末側処理部111による拡張実行可能区間の処理が完了するか、又はサーバ装置130から状態データを受信するまで待機する。端末側処理部111による拡張実行可能区間の処理が完了するか、又はサーバ装置130から状態データを受信した場合、実行管理部112は、S146の動作に移る。
(S146)実行管理部112は、S145で端末側処理部111による拡張実行可能区間の処理が完了したことを確認した場合、S148の動作に移る。一方、端末側処理部111による拡張実行可能区間の処理が完了する前にS145でサーバ装置130から状態データを受信した場合、実行管理部112は、S147の動作に移る。
(S147)実行管理部112は、端末側拡張実行部116に対して端末側処理部111の動作停止を通知する。つまり、実行管理部112は、端末側処理部111が実行中の拡張実行可能区間の処理を停止させるように端末側拡張実行部116に指示する。
(S148)実行管理部112は、端末側拡張実行部116に対して拡張実行の終了を通知し、図20に記載のS149の動作に移る。
図20は、第2の実施の形態に係る端末装置の実行管理部の動作例を示した第3の図である。
(S149)実行管理部112は、拡張実行で得られた拡張実行可能区間の処理の結果を利用して、拡張実行可能区間後の処理を端末側処理部111に継続実行させる。
(S150)サーバ装置130から状態データを受信する前に、端末側処理部111で拡張実行可能区間の処理を完了した場合、実行管理部112は、その後にサーバ装置130から状態データを受信する場合がある。このような状態データをサーバ装置130から受信した場合、実行管理部112は、S151の動作に移る。それ以外の場合、実行管理部112は、図18〜図20に示した一連の動作を終了する。
(S151)実行管理部112は、サーバ装置130から受信した状態データを破棄する。そして、実行管理部112は、図18〜図20に示した一連の動作を終了する。
(端末側拡張実行部の動作)
図21は、第2の実施の形態に係る端末装置の端末側拡張実行部の動作例を示した第1の図である。端末側拡張実行部116の動作例について説明する。
(S161)端末側拡張実行部116は、実行管理部112から拡張実行可能区間の処理を開始するように指示する開始通知を取得するまで待機する。この開始通知を取得した場合、端末側拡張実行部116は、S162の動作に移る。
(S162)端末側拡張実行部116は、端末側処理部111の動作を停止させ、端末側処理部111が保存した状態データを取得する。例えば、端末側拡張実行部116は、端末側処理部111が利用するスタック領域及びヒープ領域のデータを取得する。
(S163)端末側拡張実行部116は、S162で取得した状態データをサーバ装置130に送信する。
(S164)端末側拡張実行部116は、実行管理部112から端末側処理部111に実行可能区間の処理を再開するように指示する動作再開の通知を取得したか否かを判定する。この通知を取得した場合、端末側拡張実行部116は、図22に記載のS166の動作に移る。一方、この通知を取得していない場合、端末側拡張実行部116は、S165の動作に移る。
(S165)端末側拡張実行部116は、実行管理部112から拡張実行を終了するように指示する終了通知を取得したか否かを判定する。この終了通知を取得した場合、端末側拡張実行部116は、図21及び図22に示した一連の動作を終了する。一方、この終了通知を取得していない場合、端末側拡張実行部116は、S164の動作に移る。
図22は、第2の実施の形態に係る端末装置の端末側拡張実行部の動作例を示した第2の図である。
(S166)端末側拡張実行部116は、端末処理時間計測部117に対して端末処理時間の計測開始を通知する。
(S167)端末側拡張実行部116は、端末側処理部111に対して拡張実行可能区間の処理を実行するように通知する。なお、S166とS167の動作は順序を入れ替えてもよい。
(S168)端末側拡張実行部116は、実行管理部112から端末側処理部111の動作を停止するように指示する動作停止の通知を取得したか否かを判定する。この動作停止の通知を取得した場合、端末側拡張実行部116は、S169の動作に移る。一方、この動作停止の通知を取得していない場合、端末側拡張実行部116は、S171の動作に移る。
(S169)端末側拡張実行部116は、拡張実行可能区間の処理を実行中の端末側処理部111の動作を停止させる。
(S170)端末側拡張実行部116は、端末処理時間計測部117に端末処理時間の計測終了を通知し、S173の動作に移る。
(S171)端末側拡張実行部116は、端末側処理部111で拡張実行可能区間の処理を完了したか否かを判定する。端末側処理部111で拡張実行可能区間の処理を完了した場合、端末側拡張実行部116は、S172の動作に移る。一方、端末側処理部111で拡張実行可能区間の処理を完了していない場合、端末側拡張実行部116は、S168の動作に移る。
(S172)端末側拡張実行部116は、端末処理時間計測部117に端末処理時間の計測終了を通知する。
(S173)端末側拡張実行部116は、実行管理部112から拡張実行の終了通知を取得するまで待機する。実行管理部112から拡張実行の終了通知を取得した場合、端末側拡張実行部116は、図21及び図22に示した一連の処理を終了する。
(サーバ処理時間予測部の動作)
図23は、第2の実施の形態に係る端末装置のサーバ処理時間予測部の動作例を示した図である。サーバ処理時間予測部114の動作例について説明する。
(S181)サーバ処理時間予測部114は、実行管理部112から予測依頼を取得するまで待機する。実行管理部112から予測依頼を取得した場合、サーバ処理時間予測部114は、S182の動作に移る。
(S182)サーバ処理時間予測部114は、上述した予測方法#1、#2により所望のサーバ処理時間を予測する。つまり、サーバ処理時間予測部114は、現在実行中のアプリケーションと同じアプリケーションの拡張実行可能区間の処理をサーバ装置130で実行した場合にかかるサーバ処理時間の予測値を算出する。
(S183)サーバ処理時間予測部114は、算出したサーバ処理時間の予測値を予測結果として実行管理部112に通知し、図23に示した一連の処理を終了する。
(端末処理時間計測部の動作)
図24は、第2の実施の形態に係る端末装置の端末処理時間計測部の動作例を示した図である。端末処理時間計測部117の動作例について説明する。
(S191)端末処理時間計測部117は、端末側拡張実行部116から計測開始の通知を取得するまで待機する。端末側拡張実行部116から計測開始の通知を取得した場合、端末処理時間計測部117は、S192の動作に移る。
(S192)端末処理時間計測部117は、端末処理時間の計測を開始する。
(S193)端末処理時間計測部117は、端末側拡張実行部116から計測終了の通知を取得するまで端末処理時間の計測を継続する。端末側拡張実行部116から計測終了の通知を取得した場合、端末処理時間計測部117は、S194の動作に移る。
(S194)端末処理時間計測部117は、端末処理時間の計測を終了する。
(S195)端末処理時間計測部117は、計測した端末処理時間の情報を処理時間保存部113に格納する。
(S196)端末処理時間計測部117は、計測した端末処理時間の情報をサーバ装置130に送信する。なお、S195とS196の動作は順序を入れ替えてもよい。S196の動作を完了すると、端末処理時間計測部117は、図24に示した一連の動作を終了する。
(サーバ側拡張実行部の動作)
図25は、第2の実施の形態に係るサーバ装置のサーバ側拡張実行部の動作例を示した図である。サーバ側拡張実行部133の動作例について説明する。
(S201)サーバ側拡張実行部133は、端末装置110から状態データを受信するまで待機する。端末装置110から状態データを受信した場合、サーバ側拡張実行部133は、S202の動作に移る。
(S202)サーバ側拡張実行部133は、サーバ処理時間管理部134にサーバ処理時間の計測開始を通知する。
(S203)サーバ側拡張実行部133は、サーバ側処理部132に、受信した状態データを提供して拡張実行可能区間の処理を実行させる。なお、S202とS203の動作は順序を入れ替えてもよい。
(S204)サーバ側拡張実行部133は、サーバ側処理部132が拡張実行可能区間の完了後に保存する状態データをサーバ側処理部132から取得するまで待機する。サーバ側処理部132から状態データを取得した場合、サーバ側拡張実行部133は、S205の動作に移る。
(S205)サーバ側拡張実行部133は、サーバ処理時間管理部134にサーバ処理時間の計測終了を通知する。
(S206)サーバ側拡張実行部133は、サーバ側処理部132から取得した状態データを端末装置110に送信し、図25に示した一連の動作を終了する。
(サーバ処理時間管理部の動作)
図26は、第2の実施の形態に係るサーバ装置のサーバ処理時間管理部の動作例を示した図である。サーバ処理時間管理部134の動作例について説明する。
(S211)サーバ処理時間管理部134は、サーバ側拡張実行部133から計測開始の通知を取得するまで待機する。サーバ側拡張実行部133から計測開始の通知を取得した場合、サーバ処理時間管理部134は、S212の動作に移る。
(S212)サーバ処理時間管理部134は、サーバ処理時間の計測を開始する。
(S213)サーバ処理時間管理部134は、サーバ側拡張実行部133から計測終了の通知を取得するまで計測を継続する。サーバ側拡張実行部133から計測終了の通知を取得した場合、サーバ処理時間管理部134は、S214の動作に移る。
(S214)サーバ処理時間管理部134は、サーバ処理時間の計測を終了する。
(S215)サーバ処理時間管理部134は、計測したサーバ処理時間の情報を処理時間保存部135に格納する。
(S216)サーバ処理時間管理部134は、端末装置110から端末処理時間の情報を受信したか否かを判定する。端末装置110から端末処理時間の情報を受信した場合、サーバ処理時間管理部134は、S217の動作に移る。端末装置110から端末処理時間の情報を受信していない場合、サーバ処理時間管理部134は、図26に示した一連の動作を終了する。
(S217)サーバ処理時間管理部134は、端末装置110から受信した端末処理時間の情報を当該端末装置110の識別情報に対応付けて処理時間保存部135に格納し、図26に示した一連の動作を終了する。
以上、第2の実施の形態について説明した。第2の実施の形態によれば、拡張実行可能区間の処理をサーバ装置130に実行させる際、予測したサーバ処理時間が経過してもサーバ装置130から処理結果が得られない場合でも端末装置110が素早く処理を実行開始できるようになる。その結果、処理の実行結果の取得が大きく遅れるリスクを低減できる。
上記説明の中で、サーバ処理時間を端末装置110が予測する例を示したが、例えば、サーバ処理時間をサーバ装置130が予測する仕組みへと変形することも可能である。上記説明の中で、端末装置110からサーバ装置130へとデータを送信する際のデータ送信時間を考慮する例を示したが、同様の方法でサーバ装置130から端末装置110へとデータを送信する際のデータ送信時間を更に考慮してもよい。こうした変形例についても第2の実施の形態の技術的範囲に属する。
5 ネットワーク
10 第1の情報処理装置
11 通信部
12 制御部
13 一の処理
20 第2の情報処理装置
100 情報処理システム
110 端末装置
111 端末側処理部
112 実行管理部
113 処理時間保存部
114 サーバ処理時間予測部
115 通信部
116 端末側拡張実行部
117 端末処理時間計測部
130 サーバ装置
131 通信部
132 サーバ側処理部
133 サーバ側拡張実行部
134 サーバ処理時間管理部
135 処理時間保存部

Claims (8)

  1. 第1及び第2の情報処理装置を含むシステムが実行する分散処理方法であって、
    前記第1の情報処理装置で実行可能な一の処理を前記第1の情報処理装置に代わって実行するよう、前記第2の情報処理装置に対して要求し、
    前記第2の情報処理装置による前記一の処理の実行結果を取得する前に、前記要求からの経過時間が閾値を超えたか判定し、
    前記経過時間が前記閾値を超えたと判定した場合、前記第1の情報処理装置で前記一の処理を開始し、前記第1の情報処理装置による前記一の処理の実行結果と前記第2の情報処理装置による前記一の処理の実行結果とのうち先に取得した実行結果を使用する、
    分散処理方法。
  2. 同一のソフトウェア内に前記一の処理と他の一の処理とが規定されており、前記一の処理は前記他の一の処理の後に実行される処理であり、
    前記要求の前に、前記第1の情報処理装置で前記他の一の処理を実行して前記ソフトウェアの動作を一時停止させ、前記第1の情報処理装置で前記一の処理を開始するときは、一時停止している前記ソフトウェアの動作を再開させる、
    請求項1に記載の分散処理方法。
  3. 前記第2の情報処理装置による前記一の処理の実行結果は、前記一の処理が終了したときの前記第2の情報処理装置のメモリ状態を示すデータを含み、
    前記第2の情報処理装置による前記一の処理の実行結果を先に取得した場合、前記メモリ状態を示すデータを用いて前記第1の情報処理装置のメモリの内容を更新することで、前記第1の情報処理装置による前記一の処理を終了させる、
    請求項1又は2に記載の分散処理方法。
  4. 前記経過時間が前記閾値を超えたと判定した場合、前記第2の情報処理装置による前記一の処理の途中経過を示す情報を前記第1の情報処理装置に転送し、
    前記第1の情報処理装置で前記一の処理を開始するときは、前記途中経過を示す情報を用いて、前記一の処理を前記第2の情報処理装置から引き継ぐ、
    請求項1乃至3の何れか一項に記載の分散処理方法。
  5. 過去に前記第1の情報処理装置で前記一の処理を実行したときの第1の実行時間と、過去に前記第1の情報処理装置で前記一の処理とは異なる他の種類の処理を実行したときの第2の実行時間と、過去に前記第2の情報処理装置で前記他の種類の処理を実行したときの第3の実行時間とを記憶装置に登録しておき、
    前記閾値として、前記第2の情報処理装置で前記一の処理を実行した場合の実行時間の期待値を、前記第1、第2及び第3の実行時間に基づいて算出する、
    請求項1乃至4の何れか一項に記載の分散処理方法。
  6. 過去に前記第1及び第2の情報処理装置とは異なる第3の情報処理装置で前記一の処理を実行したときの第1の実行時間と、過去に前記第3の情報処理装置で前記一の処理とは異なる他の種類の処理を実行したときの第2の実行時間と、過去に前記第2の情報処理装置で前記他の種類の処理を実行したときの第3の実行時間とを記憶装置に登録しておき、
    前記閾値として、前記第2の情報処理装置で前記一の処理を実行した場合の実行時間の期待値を、前記第1、第2及び第3の実行時間に基づいて算出する、
    請求項1乃至4の何れか一項に記載の分散処理方法。
  7. 他の情報処理装置と通信可能な情報処理装置であって、
    前記情報処理装置で実行可能な一の処理を前記情報処理装置に代わって実行するよう、前記他の情報処理装置に対して要求し、前記他の情報処理装置による前記一の処理の実行結果を取得する通信部と、
    前記他の情報処理装置による前記一の処理の実行結果が取得される前に、前記要求からの経過時間が閾値を超えたか判定し、前記経過時間が前記閾値を超えたと判定した場合、前記情報処理装置で前記一の処理を開始し、前記情報処理装置による前記一の処理の実行結果と前記他の情報処理装置による前記一の処理の実行結果とのうち先に取得された実行結果を使用する制御部と、
    を有する情報処理装置。
  8. コンピュータに、
    前記コンピュータで実行可能な一の処理を前記コンピュータに代わって実行するよう、他のコンピュータに対して要求し、
    前記他のコンピュータによる前記一の処理の実行結果を取得する前に、前記要求からの経過時間が閾値を超えたか判定し、
    前記経過時間が前記閾値を超えたと判定した場合、前記コンピュータで前記一の処理を開始し、前記コンピュータによる前記一の処理の実行結果と前記他のコンピュータによる前記一の処理の実行結果とのうち先に取得した実行結果を使用する、
    処理を実行させるプログラム。
JP2012262501A 2012-11-30 2012-11-30 分散処理方法、情報処理装置、及びプログラム Expired - Fee Related JP5949506B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012262501A JP5949506B2 (ja) 2012-11-30 2012-11-30 分散処理方法、情報処理装置、及びプログラム
US14/047,112 US20140156735A1 (en) 2012-11-30 2013-10-07 Distributed processing method and information processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012262501A JP5949506B2 (ja) 2012-11-30 2012-11-30 分散処理方法、情報処理装置、及びプログラム

Publications (2)

Publication Number Publication Date
JP2014109800A true JP2014109800A (ja) 2014-06-12
JP5949506B2 JP5949506B2 (ja) 2016-07-06

Family

ID=50826568

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012262501A Expired - Fee Related JP5949506B2 (ja) 2012-11-30 2012-11-30 分散処理方法、情報処理装置、及びプログラム

Country Status (2)

Country Link
US (1) US20140156735A1 (ja)
JP (1) JP5949506B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020135512A (ja) * 2019-02-21 2020-08-31 日本電気株式会社 アプリケーション実行装置、方法及びプログラム
WO2020240954A1 (ja) * 2019-05-28 2020-12-03 株式会社日立製作所 情報処理システム、及び情報処理システムの制御方法
JP2020198068A (ja) * 2019-05-28 2020-12-10 株式会社日立製作所 情報処理システム、及び情報処理システムの制御方法

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9693010B2 (en) * 2014-03-11 2017-06-27 Sony Corporation Method, electronic device, and server for generating digitally processed pictures
US10133775B1 (en) * 2014-03-19 2018-11-20 Amazon Technologies, Inc. Run time prediction for data queries
WO2015190895A1 (en) * 2014-06-13 2015-12-17 Samsung Electronics Co., Ltd. Method and device for selective communication service in communication system
JPWO2016047096A1 (ja) * 2014-09-24 2017-06-29 日本電気株式会社 アプリケーションサーバ、クラウド装置、記憶媒体アクセス監視方法およびコンピュータ・プログラム
US20160112502A1 (en) * 2014-10-20 2016-04-21 Cisco Technology, Inc. Distributed computing based on deep packet inspection by network devices along network path to computing device
JP2016194755A (ja) * 2015-03-31 2016-11-17 ソニー株式会社 情報処理装置、情報処理方法、およびプログラム
KR102402584B1 (ko) * 2015-08-26 2022-05-27 삼성전자주식회사 사용자 어플리케이션의 특성에 따른 연산 디바이스 동적 제어 기법
US10853125B2 (en) * 2016-08-19 2020-12-01 Oracle International Corporation Resource efficient acceleration of datastream analytics processing using an analytics accelerator
US10565464B2 (en) * 2017-12-21 2020-02-18 At&T Intellectual Property I, L.P. Adaptive cloud offloading of mobile augmented reality
CN112889031A (zh) * 2018-10-19 2021-06-01 瑞典爱立信有限公司 计算系统中数据处理的同步
US11886888B2 (en) * 2019-03-28 2024-01-30 Lenovo (Singapore) Pte. Ltd. Reduced application view during loading
US11652722B2 (en) * 2020-06-19 2023-05-16 Apple Inc. High frequency probing for network bandwidth estimation using video data in real-time video conference
CN112104481B (zh) * 2020-08-06 2023-09-22 深圳丽泽智能科技有限公司 一种设备批量管理方法、装置、终端设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004062603A (ja) * 2002-07-30 2004-02-26 Dainippon Printing Co Ltd 並列処理システム、サーバ、並列処理方法、プログラム、及び、記録媒体
WO2006100752A1 (ja) * 2005-03-22 2006-09-28 Fujitsu Limited 分散処理管理装置、分散処理管理方法、分散処理管理プログラム
JP2012058837A (ja) * 2010-09-06 2012-03-22 Sony Corp 端末装置、情報処理システム、依頼先選択方法、及びプログラム

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02287858A (ja) * 1989-04-28 1990-11-27 Toshiba Corp 分散処理システムのリスタート方式
JPH0784973A (ja) * 1993-09-16 1995-03-31 Fujitsu Ltd マルチ処理プロセッサ制御装置および制御方法
CA2199108C (en) * 1996-03-05 2002-04-23 Hirotoshi Maegawa Parallel distributed processing system and method of same
GB2323944A (en) * 1997-04-01 1998-10-07 Ibm Parallel data processing system
JP2000148997A (ja) * 1998-11-13 2000-05-30 Minolta Co Ltd 画像処理装置
JP2002215599A (ja) * 2001-01-18 2002-08-02 Mitsubishi Electric Corp マルチプロセッサシステムおよびその制御方法
US7093004B2 (en) * 2002-02-04 2006-08-15 Datasynapse, Inc. Using execution statistics to select tasks for redundant assignment in a distributed computing platform
US7495791B2 (en) * 2004-10-06 2009-02-24 Xerox Corporation Load sharing among networked image processing devices
US7669081B2 (en) * 2006-09-27 2010-02-23 Raytheon Company Systems and methods for scheduling, processing, and monitoring tasks
US8707016B2 (en) * 2008-02-01 2014-04-22 International Business Machines Corporation Thread partitioning in a multi-core environment
US8321558B1 (en) * 2009-03-31 2012-11-27 Amazon Technologies, Inc. Dynamically monitoring and modifying distributed execution of programs
US8595289B2 (en) * 2010-09-21 2013-11-26 Telefonaktiebolaget L M Ericsson (Publ) Cloud phone with distributed processing
US9069459B2 (en) * 2011-05-03 2015-06-30 Microsoft Technology Licensing, Llc Multi-threaded conditional processing of user interactions for gesture processing using rendering thread or gesture processing thread based on threshold latency
US8874805B2 (en) * 2012-11-19 2014-10-28 International Business Machines Corporation Offloading input/output (I/O) completion operations

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004062603A (ja) * 2002-07-30 2004-02-26 Dainippon Printing Co Ltd 並列処理システム、サーバ、並列処理方法、プログラム、及び、記録媒体
WO2006100752A1 (ja) * 2005-03-22 2006-09-28 Fujitsu Limited 分散処理管理装置、分散処理管理方法、分散処理管理プログラム
JP2012058837A (ja) * 2010-09-06 2012-03-22 Sony Corp 端末装置、情報処理システム、依頼先選択方法、及びプログラム

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020135512A (ja) * 2019-02-21 2020-08-31 日本電気株式会社 アプリケーション実行装置、方法及びプログラム
JP7279401B2 (ja) 2019-02-21 2023-05-23 日本電気株式会社 アプリケーション実行装置、方法及びプログラム
WO2020240954A1 (ja) * 2019-05-28 2020-12-03 株式会社日立製作所 情報処理システム、及び情報処理システムの制御方法
JP2020198068A (ja) * 2019-05-28 2020-12-10 株式会社日立製作所 情報処理システム、及び情報処理システムの制御方法
KR20210041056A (ko) * 2019-05-28 2021-04-14 가부시끼가이샤 히다치 세이사꾸쇼 정보 처리 시스템, 및 정보 처리 시스템의 제어 방법
CN112673353A (zh) * 2019-05-28 2021-04-16 株式会社日立制作所 信息处理系统及信息处理系统的控制方法
JP7189104B2 (ja) 2019-05-28 2022-12-13 株式会社日立製作所 情報処理システム、及び情報処理システムの制御方法
US11539788B2 (en) 2019-05-28 2022-12-27 Hitachi, Ltd. Information processing system and method of controlling information processing system
KR102523389B1 (ko) * 2019-05-28 2023-04-20 가부시끼가이샤 히다치 세이사꾸쇼 정보 처리 시스템, 및 정보 처리 시스템의 제어 방법

Also Published As

Publication number Publication date
US20140156735A1 (en) 2014-06-05
JP5949506B2 (ja) 2016-07-06

Similar Documents

Publication Publication Date Title
JP5949506B2 (ja) 分散処理方法、情報処理装置、及びプログラム
US11223704B2 (en) Event service for local client applications through local server
JP6689873B2 (ja) プロセッサ/コプロセッサ構成に対するデータのオフローディング及びオンローディングのための技術
US8977681B2 (en) Pre-fetching data
US20180246768A1 (en) Mobile edge compute dynamic acceleration assignment
US9870256B2 (en) Hardware acceleration wait time awareness in central processing units with multi-thread architectures
US20170289000A1 (en) Systems and methods for controlling processing performance
CN109214632B (zh) 一种风险控制方法及设备
CN109496418B (zh) 文件下载方法、装置及设备/终端/服务器
US20170078913A1 (en) Electronic device and method for controlling transmission control protocol thereof
US10270877B2 (en) Enhanced storage clients
US20150363252A1 (en) Determining and correcting software server error conditions
JP2018509015A (ja) エネルギ効率的な無線データ転送
US20140020113A1 (en) Mechanism to Synchronize Clients in a Digital Rights Management Environment
US10616363B2 (en) Constraint based signal for intelligent and optimized end user mobile experience enhancement
JP2014164568A (ja) 端末装置、分散処理方法、分散処理プログラムおよび分散処理システム
CN110058926B (zh) 用于处理gpu任务的方法、设备和计算机可读介质
CN113810433A (zh) 文件上传方法、装置和计算机设备
EP2766806B1 (en) Event service for local client applications through local server
US20150160945A1 (en) Allocation of load instruction(s) to a queue buffer in a processor system based on prediction of an instruction pipeline hazard
US9584620B1 (en) Caching in storage clients
US10305640B2 (en) Communication method of node in content centric network (CCN) and the node
US9794881B2 (en) Method and apparatus for controlling aperiodic traffic in electronic device
JP2011095869A (ja) リクエスト情報処理方法および計算機システム
US11012537B2 (en) Method for handling long-running client-server processes

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150706

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160314

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160322

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160422

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: 20160510

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160523

R150 Certificate of patent or registration of utility model

Ref document number: 5949506

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees