Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP7070710B2 - 分散処理支援装置、分散処理支援方法およびプログラム - Google Patents
[go: Go Back, main page]

JP7070710B2 - 分散処理支援装置、分散処理支援方法およびプログラム - Google Patents

分散処理支援装置、分散処理支援方法およびプログラム Download PDF

Info

Publication number
JP7070710B2
JP7070710B2 JP2020561200A JP2020561200A JP7070710B2 JP 7070710 B2 JP7070710 B2 JP 7070710B2 JP 2020561200 A JP2020561200 A JP 2020561200A JP 2020561200 A JP2020561200 A JP 2020561200A JP 7070710 B2 JP7070710 B2 JP 7070710B2
Authority
JP
Japan
Prior art keywords
application
arrangement pattern
logics
pattern
source code
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.)
Active
Application number
JP2020561200A
Other languages
English (en)
Other versions
JPWO2020129432A1 (ja
Inventor
和哉 松尾
雅裕 吉田
航哉 森
裕之 田中
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NTT Inc
NTT Inc USA
Original Assignee
Nippon Telegraph and Telephone Corp
NTT Inc USA
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 Nippon Telegraph and Telephone Corp, NTT Inc USA filed Critical Nippon Telegraph and Telephone Corp
Publication of JPWO2020129432A1 publication Critical patent/JPWO2020129432A1/ja
Application granted granted Critical
Publication of JP7070710B2 publication Critical patent/JP7070710B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/48Program initiating; Program switching, e.g. by interrupt
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G08SIGNALLING
    • G08GTRAFFIC CONTROL SYSTEMS
    • G08G1/00Traffic control systems for road vehicles
    • G08G1/01Detecting movement of traffic to be counted or controlled
    • G08G1/0104Measuring and analyzing of parameters relative to traffic conditions
    • G08G1/0125Traffic data processing
    • G08G1/0133Traffic data processing for classifying traffic situation
    • GPHYSICS
    • G08SIGNALLING
    • G08GTRAFFIC CONTROL SYSTEMS
    • G08G1/00Traffic control systems for road vehicles
    • G08G1/01Detecting movement of traffic to be counted or controlled
    • G08G1/0104Measuring and analyzing of parameters relative to traffic conditions
    • G08G1/0137Measuring and analyzing of parameters relative to traffic conditions for specific applications
    • G08G1/0141Measuring and analyzing of parameters relative to traffic conditions for specific applications for traffic information dissemination
    • GPHYSICS
    • G08SIGNALLING
    • G08GTRAFFIC CONTROL SYSTEMS
    • G08G1/00Traffic control systems for road vehicles
    • G08G1/01Detecting movement of traffic to be counted or controlled
    • G08G1/0104Measuring and analyzing of parameters relative to traffic conditions
    • G08G1/0137Measuring and analyzing of parameters relative to traffic conditions for specific applications
    • G08G1/0145Measuring and analyzing of parameters relative to traffic conditions for specific applications for active traffic flow control
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/501Performance criteria
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Chemical & Material Sciences (AREA)
  • Analytical Chemistry (AREA)
  • Debugging And Monitoring (AREA)
  • Multi Processors (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

この発明の一態様は、複数の情報処理装置によるアプリケーションの分散処理を支援する分散処理支援装置、分散処理支援方法、およびプログラムに関する。
近年、IoT(モノのインターネット(Internet-of-Things))の普及とともに、身近にある様々な機器がインターネットにつながるようになり、それらの機器が取得した情報を収集し、利活用することが容易となってきている。
このような背景のもと、情報収集の効率化や応答時間の高速化を実現するために、関数やクラスなどの複数のアプリケーションロジック(入力データに対して何らかの処理を行い、データを出力するものを指し、以下では単に「ロジック」と言う)を、地理的に分散されたマシンに配置して実行する分散アプリケーションへの期待が高まっている。
例えば、IoT機器が送信した情報を集約するロジックを中継サーバに配置することで、情報収集に要する通信量を削減することができる。また、アプリケーションの利用者に地理的に近いサーバに、利用者の端末と頻繁に通信するロジックを配置することで、アプリケーションの応答時間を短縮することができる。
ここで、アプリケーションを複数のマシンで分散的に動作させるためには、アプリケーションを複数のロジックに分割し、各マシンに分散配置する必要がある(例えば、非特許文献1参照)。
ここで、アプリケーションをどのように分割し、どのように分散配置するかによって、アプリケーションの性能は大きく変化する。これは、ロジック間の通信がマシン間の通信で行われるようになることや、ロジックの処理時間がそれを動作させるマシンの性能に強く依存することに起因する。そのため、アプリケーション性能を最大化させるためには、最適なアプリケーション分割および配置を決定する技術が必要となる。
後者の最適な配置の決定に関しては、アプリケーション性能(マシン間のトラヒック、スループット、処理時間など)の最大化を目的関数とする線形計画問題に変換し、この最適解を計算することで最適な配置を得ることが一般的である。しかし、分割対象のアプリケーションやその動作環境が巨大な場合、配置のパターン数が膨大な数になってしまい、実時間で最適解を計算できなくなるという課題がある。例えば、分割後の処理が100個、配置先候補のマシンが3つの場合、その配置パターン数は5.2×1047通り存在する。
このような課題を、焼きなまし法や遺伝的アルゴリズムなどの近似解法を用いることによって解決する技術が知られている(例えば、非特許文献2参照)。近似解法では、探索する配置パターンを限定するため、すべての配置パターンを探索する単純な方法よりも短い時間でアプリケーション配置の解を得ることができる。このような従来のアプリケーション分割および配置では、まず、アプリケーションのソースコード内で定義されている関数を1つのロジックとして分割し、その後、配置先候補のマシンと各関数の配置パターンを計算して、その中で最もアプリケーション性能が高くなる配置パターンの近似解(準最適解)を選出する。
より具体的には、従来技術では、まず、入力されたソースコードの中からロジック(例えば、関数やクラスなど)が識別され、このロジックごとにソースコードが分割される。これにより、ロジックと配置先候補マシンの組み合わせパターンが複数生み出される。次いで、これらの各配置パターンにおけるアプリケーション性能が計測される。例えば、各配置パターンについて、分割された各ロジックを各マシンにインストールして複数回動作させ、全体処理が終了するまでに要した平均時間をその関数の処理時間、すなわち当該配置パターンでの性能値とする。このようにして得られた性能値をもとに、線形計画問題(例えば、非特許文献3参照)をはじめとする最適化問題を、焼きなまし法や遺伝的アルゴリズムなどの近似解法によって解くことによって、要求される性能が高くなるロジックの配置を計算する。例えば、各配置パターンでの通信トラヒック、全体の処理時間、マシン間のネットワーク遅延をもとに、「500ミリ秒以内の処理時間になる配置の中で、最もマシン間のトラヒックが小さくなる配置」を最適解として、この近似解を計算する。
Alex Reznik, et al., "Developing Software for Multi-Access Edge Computing," ETSI White Paper, No.20, Sept. 2017. Jieyao Liu, et al., "Application Partitioning Algorithms in Mobile Cloud Computing: Taxonomy, Review and Future Directions," Journal of Network and Computer Applications, vol. 48, 2015. IBM ILOG CPLEX, [online], インターネット<URL:http://www.ilog.com/products/cplex/>
上記のように、従来技術を用いることで、アプリケーション性能が最も高くなる配置パターンの近似解を高速に計算することができる。しかしながら、従来技術では、近似解法を用いているため、解の最適性が保証されていない。
この課題を解決するためには、最適解を取りこぼすことなく、効率的にアプリケーションの配置を計算する方式が必要である。
この発明は上記事情に着目してなされたもので、その目的とするところは、アプリケーションの分散処理のための最適な配置を効率的に決定するための技術を提供することにある。
上記課題を解決するためにこの発明の第1の態様は、複数の情報処理装置によるアプリケーションの分散処理を支援する分散処理支援装置にあって、上記アプリケーションのソースコードを取得するソースコード取得部と、上記ソースコードを複数のロジックに分割するソースコード分割部と、上記アプリケーションにおける上記複数のロジックの処理順序と、上記複数の情報処理装置の動作環境に関する情報とに基づいて、上記複数の情報処理装置のいずれかに上記複数のロジックを分散配置するときの当該複数のロジックの配置パターンの候補を抽出する候補抽出部と、上記抽出された配置パターンの候補の中から最適な配置パターンを決定する最適パターン決定部とを具備するようにした。
上記第1の態様によれば、複数の情報処理装置によるアプリケーションの分散処理を支援する分散処理支援装置において、アプリケーションのソースコードが複数のロジックへと分割され、分割されたロジックの処理順序と情報処理装置の動作環境に関する情報とに基づいて、情報処理装置に対するロジックの配置パターンの候補が抽出され、その候補の中から最適な配置パターンが決定される。このように、分割されたロジックの配置パターンの候補を抽出してから、最適な配置パターンを決定するようにしているので、すべての組合せに係る配置パターンから最適解を決定する場合に比べて効率的に最適な配置パターンを決定することができる。
すなわちこの発明によれば、アプリケーションの分散処理のための最適な配置を効率的に決定するための技術を提供することができる。
図1は、この発明の一実施形態に係る分散処理支援装置を含むシステムの一例を示す概略構成図である。 図2は、この発明の一実施形態に係る分散処理支援装置の機能構成を示すブロック図である。 図3は、図2に示した分散処理支援装置による処理手順と処理内容を示すフローチャートである。 図4は、図2に示した分散処理支援装置による処理フローのイメージを示す略図である。 図5は、図2に示した分散処理支援装置による配置パターンの候補の抽出に用いられる有向グラフのイメージを示す図である。 図6は、非最適な配置パターンの一例を示す図である。 図7は、最適解である可能性のある配置パターンの一例を示す図である。 図8は、図2に示した分散処理支援装置で用いられる、配置パターンの候補を抽出するためのアルゴリズムの一例を示す図である。 図9は、図8に示したアルゴリズム内で使用される記号の説明を示す図である。 図10は、図8に示したアルゴリズムを説明するデータフローグラフの一例を示す図である。 図11は、図8に示したアルゴリズムを説明するグルーピングの一例を示す図である。 図12は、図2に示した分散処理支援装置の各機能部による処理フローを示すブロック図である。 図13は、従来技術および一実施形態に係る分散処理支援装置を用いた実験による、最適探索の対象となる配置パターン数の比較結果を示す図である。 図14は、従来技術および一実施形態に係る分散処理支援装置を用いた実験による、最適探索の精度の比較結果を示す図である。 図15は、この発明の一実施形態に係る分散処理支援装置を、閉路を含むデータフローグラフに適用する例を示す図である。
以下、図面を参照してこの発明に係わる実施形態を説明する。
[一実施形態]
(構成)
(システムの構成)
図1は、この発明の一実施形態に係る分散処理支援装置を含むシステムの一例を示す概略構成図である。
このシステムは、データの収集元または入力元装置としての端末デバイス群TD1~TDi(以下、まとめて「端末デバイスTD」とも言う)およびセンサ群SS1~SSj(以下、まとめて「センサSS」とも言う)と、これらの装置からネットワークNWを介してデータを取得可能な複数のクラウドサーバCSV1~CSVn(以下、まとめて「クラウドサーバCSV」とも言う)と、端末デバイスTDおよびセンサSSとクラウドサーバCSVとの間に配置された複数のエッジサーバESV1~ESVm(以下、まとめて「エッジサーバESV」とも言う)と、これら種々の装置とネットワークNWを介して通信可能な、一実施形態に係る分散処理支援装置1とを備えている。
ネットワークNWには、例えばインターネット等の公衆網と、この公衆網にアクセスするためのアクセス網とが含まれる。アクセス網には、エッジサーバESV間を接続するエッジネットワークENWも含まれる。エッジネットワークENWは、例えばLAN(Local Area Network)または無線LANにより構成される。ただし、エッジサーバESVは、エッジネットワークENWを介さずに直接インターネットに接続されてもよい。
端末デバイスTDは、通信機能を有し、1または複数のエッジサーバESVを介してクラウド上のアプリケーションを利用可能な情報処理装置で、例えば、スマートフォンやパーソナルコンピュータである。センサSSには、自動車、その他のIoT機器が含まれる。センサSSにより計測または検出されたセンシングデータは、LANや無線LAN、Bluetooth(登録商標)等の省電力無線データ通信規格を採用した無線インタフェースを介して、あるいは端末デバイスTDを経由して、あらかじめ送信先として設定されたエッジサーバESVへ送信される。図示した端末デバイスTDおよびセンサSSは一例にすぎず、固定式装置であっても移動式装置であってもよく、任意の個数の多種多様な装置を含み得る。なお、端末デバイスTDおよびセンサSSは、必ずしもエッジサーバESVまたはエッジネットワークENWを経由する必要はなく、ネットワークNWを介して直接クラウドサーバCSVにアクセスすることもできる。
エッジサーバESVは、大規模データセンタ上に展開されたクラウド環境に対し、ユーザのより近くに配置された小規模データセンタを構成し、例えば、サーバコンピュータやパーソナルコンピュータなど種々の情報処理装置を含む。
クラウドサーバCSVは、クラウドコンピュータ等の情報処理装置からなり、エッジサーバESVから送信されるセンシングデータをネットワークNWを介して受信し、蓄積する。
クラウドサーバCSVはまた、クラウド環境で利用可能なアプリケーションを提供する。クラウドサーバCSVが提供するアプリケーションには、分散アプリケーションが含まれる。分散アプリケーションは、当該クラウドサーバCSVに加えて、任意の数のエッジサーバESVおよび端末デバイスTDによる分散処理が可能である。
分散処理支援装置1は、そのような分散アプリケーションの配置先を決定することによりアプリケーションの分散処理を支援するもので、システム管理者等が操作可能なサーバコンピュータやパーソナルコンピュータである。
図2は、図1に示した一実施形態に係る分散処理支援装置1の機能構成を示す。
分散処理支援装置1は、通信インタフェースユニット10と、処理ユニット20と、記憶ユニット30とを備えている。
通信インタフェースユニット10は、例えば有線または無線インタフェースを有しており、ネットワークNWを介して、クラウドサーバSV、エッジサーバESV、または端末デバイスTDとの間で情報の送受信を可能にする。
記憶ユニット30は、記憶媒体として例えばHDD(Hard Disk Drive)またはSSD(Solid State Drive)等の随時書込および読み出しが可能な不揮発性メモリを用いたものであり、この実施形態を実現するために必要な記憶領域として、プログラム記憶部の他に、アプリケーション情報記憶部31と、分割ルール記憶部32と、動作環境情報記憶部33とを備えている。
アプリケーション情報記憶部31は、分散処理の対象となるアプリケーションに関する情報を記憶するために使用される。アプリケーションに関する情報としては、例えば、アプリケーションのソースコード中に含まれる関数の処理順序や、当該アプリケーションの入出力に関する情報が含まれる。
分割ルール記憶部32は、アプリケーションの分割に係るルールを記憶するために使用される。アプリケーションの分割に係るルールは、例えば、アプリケーションの開発者が定義した関数等の情報に基づく、分割可能なロジックを識別するために使用されるルールである。アプリケーションの分割に係るルールは、あらかじめシステム管理者等によって分割ルール記憶部32に格納されてもよいし、ネットワークNWを介して分割対象のアプリケーション情報とともに取得されてもよい。
動作環境情報記憶部33は、分散処理に関与し得る情報処理装置(以下、「マシン」とも言う)の動作環境に関する情報を記憶するために使用される。動作環境情報記憶部33は、例えば、あらかじめシステム管理者等により入力された、複数のマシンの各々についての計算能力、記憶領域、現在位置などに関する情報を格納する。これらの情報は、ネットワークNWを介して取得された最新の情報により更新されるようにしてもよい。
ただし、上記記憶部31~33は、必ずしも分散処理支援装置1に内蔵されたものでなくてもよく、例えば、USBメモリなどの外付け記憶媒体や、クラウドに配置されたデータベースサーバ等の記憶装置に設けられたものであってもよい。分散処理支援装置1は、例えば通信ネットワークNWを介して上記クラウドのデータベースサーバにアクセスすることにより、必要なデータを取得し使用することができる。
処理ユニット20は、図示しないCPU(Central Processing Unit)やMPU(Micro Processing Unit)等のハードウェアプロセッサと、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)等のメモリとを有し、この実施形態を実施するために必要な処理機能として、ソースコード取得部21と、ソースコード分割部22と、配置パターン候補抽出部23と、最適パターン決定部24とを備えている。これらの処理機能は、いずれも上記記憶ユニット30に格納されたプログラムを上記プロセッサに実行させることにより実現される。処理ユニット20は、また、ASIC(Application Specific Integrated Circuit)やFPGA(field-programmable gate array)などの集積回路を含む、他の多様な形式で実現されてもよい。
ソースコード取得部21は、通信インタフェースユニット10を介して、分散処理の対象とすべきアプリケーションのソースコードを取得する処理を行う。ソースコード取得部21は、例えば、クラウド上に配置されたアプリケーションを管理する管理サーバ(図示せず)から、ネットワークNWを介してソースコードを受信するように構成されてもよいし、図示しない入力デバイスを介してシステム管理者等により入力されたソースコードを取得するように構成されてもよい。ソースコード取得部21はまた、取得したソースコードをもとに、対象アプリケーションに関する情報を抽出して、アプリケーション情報記憶部31に格納する処理を行う。
ソースコード分割部22は、分割ルール記憶部32に格納された分割ルールをもとに、ソースコード取得部21により取得されたソースコードの中から分割可能なロジック(関数やクラスなど)を識別し、識別されたロジックごとにソースコードを分割する処理を行う。
配置パターン候補抽出部23は、ソースコード分割部22により分割されたロジックと配置先マシンの配置パターンのうち、最適解である可能性がある配置パターンの候補を抽出する処理を行う。
最適パターン決定部24は、配置パターン候補抽出部23により抽出された配置パターンの候補のうち最適な配置パターンを決定するもので、アプリ性能計測部241と、最適パターン選出部242とを備えている。
アプリ性能計測部241は、配置パターン候補抽出部23により抽出された配置パターンの候補の各々について、アプリケーション(アプリ)の性能を計測または算出する処理を行う。
最適パターン選出部242は、上記計測または算出されたアプリケーション性能に基づいて、最適な性能が得られる配置パターンを最適な配置パターンとして選出する処理を行う。
(動作)
次に、以上のように構成された分散処理支援装置1による情報処理動作を説明する。図3はその処理手順と処理内容を示すフローチャートである。
(1)開始トリガの受信
分散処理支援装置1は、ステップS1により、アプリケーションの分散配置を決定する処理を開始するためのトリガの有無を監視している。この状態で、例えばアプリケーション開発者またはシステム管理者等が管理用端末(図示せず)を通じて分散配置決定の開始要求を入力し、この開始要求をトリガとして受け取ると、分散処理支援装置1は以下の処理を実行する。
(2)ソースコードの取得
分散処理支援装置1は、ステップS2において、処理ユニット20の制御の下、ソースコード取得部21により、例えばネットワークNWを介してアプリケーション管理サーバ(図示せず)から、分散処理の対象であるアプリケーションのソースコードを取得する。ソースコード取得部21は、取得したソースコードをソースコード分割部22に渡すとともに、当該ソースコードまたは当該アプリケーションに関する情報をアプリケーション情報記憶部31に記憶させることができる。アプリケーションに関する情報には、アプリケーションのソースコードに含まれる関数の処理順序や、アプリケーションへの入力データおよび入力元マシン、アプリケーションからの出力データおよび出力先マシンに関する情報が含まれる。なお、アプリケーションのソースコードを、アプリケーション開発者またはシステム管理者が使用する管理用端末から取得するようにしてもよい。
(3)ソースコードの分割
次いで分散処理支援装置1は、ステップS3において、処理ユニット20の制御の下、ソースコード分割部22により、分割ルール記憶部32にあらかじめ記憶された分割ルールをもとに、取得されたソースコード中の分割可能なロジック(例えば、関数、クラスなど)を識別し、ソースコードを複数のロジックに分割する。
(4)配置パターンの候補の抽出
次いで分散処理支援装置1は、ステップS4において、処理ユニット20の制御の下、配置パターン候補抽出部23により、最適である可能性のある配置パターンを配置パターンの候補として抽出する処理を行う。以下、この処理について詳細に説明する。
(4-1)抽出処理の概要
対象アプリケーションにおけるロジックの処理順序やデータの入出力先マシンの情報が定まっており、かつアプリケーションの処理時間短縮やマシン間の通信量の削減を目的とする場合、明らかに最適ではない配置パターンが存在する。
一実施形態に係る分散処理支援装置1は、配置パターンの候補の抽出にあたり、アプリケーション中のロジックの処理順序ならびに分割対象のアプリケーションへデータを入力する入力元マシンおよび当該アプリケーションからのデータの出力先マシンの情報に基づいて、明らかに最適ではない配置パターンをあらかじめ除外し、重要なパターンのみから最適な解を算出する。このような抽出処理により、最適解をとりこぼすことなく、配置パターンの候補の数を削減することができる。
(4-2)有向グラフに基づく非最適な配置パターンの除外
図4は、一実施形態に係る分散処理支援装置1による処理フローのイメージを示す略図である。ここでは、ロジック(関数)の処理順およびデータの入力用のマシンと出力用のマシンとが決まっており、かつマシンZ、マシンY、マシンXの順に計算能力が高い(すなわち、マシンX,Y,Zの中では、マシンZが最も計算能力が高く、マシンXが最も計算能力が低い)という前提で説明する。
図4において、アプリケーションPのソースコードSCpが、関数main、関数A、関数B、関数Cに分割される。これらの関数の処理順序は、main,A,B,Cの順である。また、関数mainはデータを入力する関数であり、データの入力元マシンはマシンX(例えば、スマートフォンTD)、データの出力先マシンはマシンZ(例えば、クラウドサーバCSV)である。マシンYは、入出力用のマシンXおよびマシンZ以外の配置先候補マシンであり、たとえばエッジサーバESVである。
分割された関数がマシンに配置される配置パターンには、多数のパターンP1~Pnが考えられ、これらの配置パターンの中から最適解(図4に示した例ではパターンP59)が選択されることになる。
しかし、上記前提において、アプリケーション全体の処理時間を向上させたい場合には、図4に示した配置パターンのうち配置パターンP3は最適な配置パターンではないことがわかる。これは、配置パターンP1またはP2に比べて、関数Aの次に処理されるべき関数Bが、計算能力の高いマシンZから計算能力の低いマシンXへオフロードされているような配置パターンとなっており、配置パターンP3の処理時間が、配置パターンP1またはP2よりも長くなることが明確なためである。パターンP4やパターンPnについても、上述と同様の理由により、最適ではない配置パターンとして除外(枝刈り)することができる。
この最適ではない配置パターン(以下、「非最適な配置パターン」と言う)を一般化すると、以下のように表現することができる。
<非最適な配置パターン>
ある配置パターンにおいて、関数の処理順にマシン間を有向辺で結んだグラフ(以下、「処理フローグラフ」と言う)が、以下のグラフG1またはG2のいずれとも合致しない場合、その配置パターンは最適な配置ではない。
(G1)データを入力する関数が配置されているマシン(データ入力元マシン)と、データを出力する関数が配置されているマシン(データ出力先マシン)とが異なる場合:データ入力元マシンを始点、データ出力先マシンを終点として、配置先候補マシンを計算能力が低い順に1回以下通る最短有向道群
(G2)データ入力元マシンとデータ出力先マシンが同じ場合:配置先候補マシンを計算能力が低い順に1回以下通る最短有向閉路群
図5は、非最適な配置パターンであるか否かの判断例を示す略図であり、図4の例における配置先候補マシンの最短有向道群(有向道1および2(いずれも上記G1に該当))ならびに配置パターンP3の処理フローグラフを示している。図5から、配置パターンP3の処理フローグラフは、最短有向道1とも最短有向道2とも合致しないため(また上記G2にも該当しないため)、非最適な配置パターンと判定される。
(4-3)非最適な配置パターンであることの証明
ここで、ロジックの処理順序、ならびにデータ入力元マシンおよびデータ出力先マシンが決まっており、かつアプリケーションの処理時間短縮や通信量削減を目的とする環境において、上記グラフG1またはG2のいずれとも合致しない配置パターンが最適ではないことの証明について以下で説明する。
[仮定]
データ入力元マシンを始点、データ出力先マシンを終点として、配置先候補マシンを計算能力が低い順に1回以下通る最短有向道群または最短有向閉路群のいずれとも合致しない処理フローグラフを持つ配置パターンAが最適解であると仮定する。図6は、このような配置パターンAの一例を示す。
[証明]
図6に示した配置パターンAにおいて、実際にロジックが配置されているマシンの集合をMとする。配置パターンAの処理フローグラフは、最短有向道・閉路群のいずれにも合致しないため、集合Mに含まれるマシンを節点とする最短有向道・閉路群とは逆向きの有向辺eを1つ以上持つ。この有向辺eに沿ってデータを送信するロジックをl、データを受信するロジックをlとする。また、lが配置されているマシン(すなわちeの始点に当たるマシン)をm、lが配置されているマシン(すなわちeの終点に当たるマシン)をmとする。
ここで配置パターンAにおける逆向きの有向辺eがなくなるように、ロジックlをマシンmからmへ移動させた配置パターンをA’とする。図7は、そのような配置パターンA’の一例を示す。
最短有向道・閉路群では、各マシンが処理順に有向辺で結ばれており、mの計算能力はmより高い。そのため、配置パターンA’は、配置パターンAと比較して、ロジックlの処理時間が短く、かつ有向辺eに沿って流れていたデータ量分の通信量が少ない。つまり、配置パターンA’は、配置パターンAより処理時間が短く、通信量も少ない配置パターンとなるため、配置パターンAが最適解であるという仮定に矛盾する。
以上より、データ入力元マシンを始点、データ出力先マシンを終点として、配置先候補マシンを計算能力が低い順に1回以下通る最短有向道群または最短有向閉路群のいずれとも合致しない処理フローグラフを持つ配置パターンは、最適な配置パターンではない(非最適な配置パターンである)と言える。
(4-4)アルゴリズム例
図8は、一実施形態に係る分散処理支援装置1で用いられる、最適解の可能性がある配置パターンを抽出するためのアルゴリズムの一例として、アルゴリズム1を示す。
図9は、図8に示したアルゴリズム1内で使用される記号の説明を示す。
図8に示したアルゴリズム1の5,7行目の“ comb (A, i) ”は、集合Aからi個選び出した時の組み合わせの計算を示している。すなわち、図8のアルゴリズムでは、以下の手順で配置パターンの抽出を行っている。
(i)入力元マシン・出力先マシン以外の配置先候補マシン数を確認する(2行目)。
(ii)配置先候補マシンの中から、LIO (データの入出力処理が含まれるロジック群)以外のロジックを配置するマシンをi台選出する(4行目)。この各組み合わせに入出力マシンを加えたものを MCとする(5,6行目)。例えば、配置先候補マシンX,Y,Zの3台の中から入出力マシンであるX,Zを除いて0台を選ぶ場合、MC={(X,Z)}となり、1台選ぶ場合、MC={(X,Y,Z)}となる。
(iii)手順(ii)と同様に、データフローグラフ(関数の処理順に関数間を有向辺で結んだグラフ)の辺から、i+1個の辺を選出する(7行目)。この辺は、抽出される配置パターンの処理フローグラフの辺になる。図10は、データフローグラフの一例を示す図である。図10に示すデータフローグラフから2個の辺を選出する場合、EC={(e,e),(e,e),(e,e)}となる。
(iv)データフローグラフの節点にあたる各ロジックを、手順(iii)で選出したデータフローグラフの辺の始点側のロジック群と終点側のロジック群に分ける(8行目)。図11は、e,eが選出された場合のデータフローグラフの一例を示す。図11では、各ロジック(関数)群を、eの始点側のグループ1と終点側(eの始点側)のグループ2、eの終点側のグループ3に分けている。この処理を、手順(iii)で計算した辺の組み合わせごとに行う。
(v)LIO に含まれるロジックは、それぞれ入力元マシン、出力先マシンにしか配置できないという前提のもと、手順(ii)で得られたマシンの組み合わせと、手順(iv)で得られたロジックのグループの組み合わせの直積を計算することにより、配置パターンを計算する。例えば、マシンの組み合わせが(X,Z),(X,Y,Z)の2通りで、ロジックのグループの組み合わせが、以下の6通りである場合:
(g1):(main),(A,B,C)
(g2):(main,A),(B,C)
(g3):(main,A,B),(C)
(g4):(main),(A),(B,C)
(g5):(main,A),(B),(C)
(g6):(main),(A,B),(C)
配置パターンとして以下の6通りが得られる。
(p1):(X,Z),((main),(A,B,C))
・・・mainをマシンXに、A,B,CをマシンZに配置
(p2):(X,Z),((main,A),(B,C))
・・・main,AをマシンXに、B,CをマシンZに配置
(p3):(X,Z),((main,A,B),(C))
・・・main,A,BをマシンXに、CをマシンZに配置
(p4):(X,Y,Z),((main),(A),(B,C))
mainをマシンXに、AをマシンYに、B,CをマシンZに配置
(p5):(X,Y,Z),((main,A),(B),(C))
main,AをマシンXに、BをマシンYに、CをマシンZに配置
(p6):(X,Y,Z),((main),(A,B),(C))
mainをマシンXに、A,BをマシンYに、CをマシンZに配置
(5)最適配置パターンの決定
以上のように配置パターンの候補が抽出されたら、続いて分散処理支援装置1は、図のステップS5において、処理ユニット20の制御の下、最適パターン決定部24のアプリ性能計測部241により、抽出された配置パターンの候補の各々について分散アプリケーションを動作させたときのアプリケーション性能を計測または算出する。一実施形態では、アプリ性能計測部241は、アプリケーション性能として、当該アプリケーションの全処理が終了するまでに要する時間、マシン(情報処理装置)間のトラヒック量、およびマシン間のネットワーク遅延のうちの少なくとも1つを計測または算出する。
次いで、分散処理支援装置1は、ステップS6において、最適パターン決定部24の最適パターン選出部242により、計測または算出されたアプリケーション性能に基づいて、最適な性能が得られる配置パターンを最適な配置パターンとして決定する。例えば、最適パターン選出部242は、アプリ性能計測部241によって算出された、全処理が終了するまでに要する時間に基づき、その時間が最も短い配置パターンを最適な配置パターンとして選出するように構成される。あるいは、最適パターン選出部242は、マシン間のトラヒック量が最も少ない配置パターン、またはマシン間のネットワーク遅延が最も少ない配置パターンを、最適パターンとして選出するように構成される。このように、最適パターン決定部24の構成をシステム管理者等が任意に設定することにより、分散処理システムの目的に応じた最適な配置パターンを決定することが可能である。
図12は、アプリケーションの性能を向上させる配置パターンが決定されるまでの各機能部の処理フローの一例を示す。
一実施形態に係る分散処理支援装置1は、まずステップS101において、ソースコード分割部22の制御の下、入力されたアプリケーションPのソースコードの中からロジック(例えば、関数やクラスなど)を識別し、このロジックごとにソースコードを分割する。
次いで、分散処理支援装置1は、ステップS102において、配置パターン候補抽出部23の制御の下、分割された各ロジックとアプリケーションの動作環境の情報(配置先候補マシンとその計算能力)をもとに、最適解である可能性がある配置パターンのみを候補として抽出する。ここでは、例えば、図8に示したアルゴリズム1を用いて最適解である可能性がある配置パターンを抽出することにより、非最適な配置パターンを枝刈りすることができる。
次いで、分散処理支援装置1は、ステップS103において、アプリ性能計測部241の制御の下、抽出された配置パターンの各々において分散アプリケーションを実行した場合のアプリケーション性能値を計測する。
次いで、分散処理支援装置1は、ステップS104において、最適パターン選出部242の制御の下、計測されたアプリケーション性能値に基づき、抽出された配置パターンのみを全探索することによって、要求される性能が最も高くなるロジックの配置パターンを選出することができる。
図12に示した例では、図4に示した最適パターンP59のように、マシンXに対してmain関数および関数A、マシンYに対して関数B、マシンZに対して関数Cが配置される配置パターンが、最適解として決定される。
(有効性の検証)
以上で説明した技術の有効性を確認するために、以下の環境を想定したシミュレーション実験を行った。
・配置先候補マシンは5台で、入力元マシンは最も計算能力が低いマシン、出力先マシンは最も計算能力が高いマシンとする。
・分割・配置対象のアプリケーションは、2~10個の関数を持つアプリケーションで、各関数は順番に呼び出されるものとする。入力処理が含まれる関数はデータフローグラフの根に当たる関数で、出力処理が含まれる関数はデータフローグラフの葉に当たる関数である。
・各関数の処理時間は、計算能力が高いマシンに配置されるほど短くなるようにランダムに設定する。関数間の通信量はランダムに設定し、マシン間の通信遅延は、通信量が多いほど大きくなるように設定する。
以上の環境において、乱数を毎回変えながら100回の試行を行い、以下の指標の平均値を計算した。
(指標1)配置パターン数:各関数と配置先候補マシンとの組み合わせ数
(指標2)精度:配置パターンの中に最適解が含まれる割合。含まれる場合を1、含まれない場合を0とする。
また、比較手法として、すべての配置パターンを探索する単純方式(naive)と、焼きなまし法(SA)(Verbelen, Tim, et al., “Graph partitioning algorithms for optimizing software deployment in mobile cloud computing,” Future Generation Computer Systems, vol.29, No.2, pp.451-459, 2013. 参照)を適用した。焼きなまし法は、ランダムに選んだ初期解から、その性能が良くなる解が得られる方向に探索を行い、一定回数探索したときに得られる解を近似解として出力する方式である。本実験では、焼きなまし法における探索回数を、発明技術で得られる配置パターン数と同じ値に設定して評価を行った。
図13は、単純方式(naive)と、一実施形態に係る分散処理支援装置1による提案方式(proposed)とを用いたときの、指標1の比較結果を示す図である。横軸は関数の数、縦軸は最適探索の対象となる配置パターンの数を示す。図13に示したように、全配置パターンを探索する単純方式(naive)と比較して、提案方式(proposed)では大幅に配置パターン数を削減できることがわかる。特に、配置パターン数が多い関数10個の場合においては、単純方式(naive)によるすべての配置パターン数が390,625通りであるのに対し、提案方式(proposed)を用いて抽出された配置パターン数は495通りとなり、配置パターン数を99%以上削減することができた。
図14は、焼きなまし法(SA)と、一実施形態に係る分散処理支援装置1による提案方式(proposed)とを用いたときの、指標2の比較結果を示す図である。横軸は関数の数、縦軸は最適探索の精度を示す。図14に示したように、焼きなまし法(SA)では、関数の数が2個のときには高い精度(1.0)が得られたが、関数の数が3個になると精度が0.2まで落ち込み、関数の数が4個以上になると精度が著しく低下した。このように、焼きなまし法(SA)では、関数の数が多くなるほど、最適解の取得が困難になっていることがわかる。一方、提案方式(proposed)の場合、関数の数が増加した場合でも、精度は1を維持しており、上記(4-3)で証明したとおり、すべての試行において最適解を取得することができた。
なお、データフローグラフ内に閉路が存在する場合にも、上記実施形態を適用することができる。例えば、データフローグラフを複数の有向道に分割し、そのそれぞれに対して上記実施形態を適用することにより、配置パターン数を削減することができる。
図15は、そのような、閉路が存在するデータフローグラフへの上記実施形態の適用手順の一例を示す。この例では、Aを始点、Fを終点とするデータフローグラフFG1内に、Bで分岐しEで合流する閉路が存在する。はじめに、データフローグラフFG1を分割し、FG2に示されるように、2つの有向道有向道1’および2’)を得る。そして、まず有向道1’に対して上記実施形態を適用する。
実施形態を適用した結果、FG3に示されるように、有向道1’の最適な配置パターンP1’が決まったとする。この例では、A,BがマシンXに配置され、C,D,EがマシンYに配置され、FがマシンZに配置される。有向道1’の最適な配置パターンP1’が決まれば、有向道2’のデータ入力元マシン(Bを処理するマシン)およびデータ出力先マシン(Eを処理するマシン)も同時に決まることになる。そこで、これらの入力元マシンおよび出力先マシンを前提として、次に有向道2’に対して実施形態を適用することができる。図15の例では、有向道2’について、BがマシンXに配置され、EがマシンYに配置される。有向道2’に含まれるG,H,Iは、まだ配置が決定されていないので破線で図示されている。
このように、データフローグラフ内に閉路が存在する場合においても、上記実施形態を容易に適用することができる。
(効果)
以上詳述したように、この発明の一実施形態では、アプリケーションのソースコードが取得され、該ソースコードが複数のロジックへと分割され、アプリケーションにおけるこれら複数のロジックの処理順序と複数の情報処理装置の動作環境に関する情報とに基づいて、情報処理装置のいずれかに複数のロジックを分散配置するときの配置パターンの候補が抽出される。そして、この抽出された候補の中から、分散アプリケーションの各ロジックを配置するための最適な配置パターンが決定される。
分散アプリケーションの性能を向上させるために必要な、アプリケーションの各ロジックの配置問題を最適化問題として解く場合、通常、解の最適性と探索する配置パターン数の間にはトレードオフが存在する。従来の近似解法を用いて最適な配置パターンを計算しようとする場合には、高速計算が可能となるが、解の最適性が保証されず、最適な配置パターンを取得することが困難であった。
この課題に対し、一実施形態では、アプリケーション内のロジックの処理順序、配置先候補マシンの計算能力、およびアプリケーションの配置問題における目的関数の関係性に着目することにより、最適解を残しつつ、探索する配置パターン数を大幅に削減することに成功した。すなわち、最適である可能性のある配置パターンのみを抽出し(逆に言えば、可能性のない配置パターンを除外(枝刈り)し)、探索する配置パターン数を大幅に削減するようにしているので、最適解を取りこぼすことなく、最適なアプリケーションの分散配置を効率的にかつ高速に計算することができる。
また、上記のように、データフローグラフ内に閉路が存在する場合においても、実施形態を適用でき、最適解を取りこぼすことなく配置パターン数を削減することができる。
[他の実施形態]
なお、この発明は上記実施形態に限定されるものではない。
例えば、上記実施形態では、分散アプリケーションの配置先としてマシンX,マシンY,マシンZを挙げて説明した。特に上記実施形態では、マシンXがスマートフォンなどの端末デバイスTDであり、マシンYがエッジサーバESVであり、マシンZがクラウドサーバCSVである例を挙げて説明したが、これに限定されるものではない。例えば、分散アプリケーションの配置先のマシンX,マシンY,マシンZすべてを、クラウドサーバCSV、エッジサーバESV、またはスマートフォンとすることも可能であり、さらに分散アプリケーションの配置先のマシンX,マシンY,マシンZをクラウドサーバCSV、エッジサーバESV、およびスマートフォンのうちの2つにすることも可能である。
配置先マシンの数は、2個または3個に限定されるものではなく、望まれるアプリケーション性能に応じて任意の数を設定することができる。
同様に、ソースコードの分割ルールについても、アプリケーションの開発者が定義した関数単位での分割に限定されるものではなく、任意の基準を設定して、より大きな単位またはより小さな単位に分割されるようにしてもよい。
あるいは、分散処理支援装置1が備える各部21~24を、クラウドコンピュータ、エッジルータ等に分散配置し、これらの装置が互いに連携することにより上記処理を行うようにしてもよい。
その他、最適解である可能性がある配置パターンの候補を抽出するためのアルゴリズムの詳細等についても、この発明の要旨を逸脱しない範囲で種々変形して実施可能である。
例えば、上記実施形態の第1の態様として、複数の情報処理装置によるアプリケーションの分散処理を支援する分散処理支援装置(1)が、上記アプリケーションのソースコードを取得するソースコード取得部(21)と、上記ソースコードを複数のロジックに分割するソースコード分割部(22)と、上記アプリケーションにおける上記複数のロジックの処理順序と、上記複数の情報処理装置の動作環境に関する情報とに基づいて、上記複数の情報処理装置のいずれかに上記複数のロジックを分散配置するときの当該複数のロジックの配置パターンの候補を抽出する候補抽出部(23)と、上記抽出された配置パターンの候補の中から最適な配置パターンを決定する最適パターン決定部(24)とを具備するようにし得る。
第2の態様として、上記第1の態様において、上記候補抽出部(23)が、上記複数の情報処理装置をノードとし、上記アプリケーションにおける上記複数のロジックの処理順序を特定する有向辺を経路とした有向グラフを用いて、非最短経路の配置パターンを除外することによって、上記配置パターンの候補を抽出するようにし得る。
第3の態様として、上記第1の態様において、上記候補抽出部(23)が、上記複数の情報処理装置を計算能力が低いものから高いものへと順に並べたものをノードとし、上記アプリケーションにおける上記複数のロジックの処理順序を特定する有向辺を経路とした有向グラフを用いて、最短経路の配置パターンを上記配置パターンの候補として抽出するようにし得る。
第4の態様として、上記第1の態様において、上記最適パターン決定部(24)が、上記抽出された配置パターンの候補の各々について上記アプリケーションを動作させたときの全処理に係るアプリケーション性能を計測する性能計測部(241)と、上記アプリケーションの性能の計測結果に基づいて上記配置パターンの候補の中から最良の性能をもたらす配置パターンを選出する最適パターン選出部(242)とを備えるようにし得る。
第5の態様として、上記第4の態様において、さらに上記性能計測部(241)が、上記アプリケーション性能として、全処理が終了するまでに要する時間、上記情報処理装置間のトラヒック量、および上記情報処理装置間のネットワーク遅延のうちの少なくとも1つを計測するようにし得る。
上記実施形態によれば、複数の情報処理装置によるアプリケーションの分散処理を支援する分散処理支援装置において、アプリケーションのソースコードが複数のロジックへと分割され、分割されたロジックの処理順序と情報処理装置の動作環境に関する情報とに基づいて、情報処理装置に対するロジックの配置パターンの候補が抽出され、その候補の中から最適な配置パターンが決定される。このように、分割されたロジックの配置パターンの候補を抽出してから、最適な配置パターンを決定するようにしているので、すべての組合せに係る配置パターンから最適解を決定する場合に比べて効率的に最適な配置パターンを決定することができる。
また上記実施形態によれば、分割されたロジックの配置先である情報処理装置をノードとし、ロジックの処理順序を有向辺で示した有向グラフを用いて、非最短経路を除外することによって配置パターンの候補が抽出される。このように、最適解である可能性のない非最短経路を除外(枝刈り)することにより、最適解である可能性のある配置パターンを候補として維持しつつ、探索対象の数を削減して、効率的な最適探索を実行することができる。
また上記実施形態によれば、情報処理装置を計算能力の低いものから高いものへと順に並べたものをノードとし、ロジックの処理順序を有向辺で示した有向グラフを用いて、最短経路をとる配置パターンが配置パターンの候補として抽出される。このように、有向グラフのノードとして、情報処理装置を計算能力が高くなる順に並べたノードを用いて最短経路を候補として抽出しているので、ロジックの処理が進むにつれて計算能力の高い情報処理装置から計算能力の低い情報処理装置へとオフロードされるような非最適解を除外することができ、効率的な最適探索を実行することができる。
また上記実施形態によれば、抽出された配置パターンの候補の各々についてアプリケーションを動作させたときのアプリケーション性能が計測され、その計測結果に基づいて最適な配置パターンが選出される。このように、抽出された配置パターンの候補の中から、アプリケーションの性能に基づいて最適な配置パターンが選出されるので、信頼性の高い最適解の探索を行うことができる。
また上記実施形態によれば、アプリケーション性能として、全処理に要する時間、情報処理装置間のトラヒック量、およびネットワーク遅延のうちの少なくとも1つが計測される。このように、抽出された配置パターンの候補の中から、アプリケーション全体としての処理時間、トラヒック量、またはネットワーク遅延に基づいて最適な配置パターンが決定されるので、分散処理の目的に応じた最適な性能をもたらす、信頼性の高い最適解の探索を行うことができる。
以上で特定の実施形態について説明したが、これらの実施形態は、例示の目的で提示したにすぎず、発明の範囲を限定することを意図したものではない。実際、本明細書に記載された新規な実施形態は、他の様々な形態で具体化され得る。さらに、発明の範囲から逸脱することなく、本明細書に記載された実施形態の形態に対し、様々な省略、置換および変更を加えることもできる。添付の請求項およびそれらと等価のものは、本発明の主旨および範囲内に含まれるそのような形態および変形形態に及ぶことが意図されている。
1…分散処理支援装置
10…通信インタフェースユニット
20…処理ユニット
30…記憶ユニット
21…ソースコード取得部
22…ソースコード分割部
23…配置パターン候補抽出部
24…最適パターン決定部
241…アプリ性能計測部
242…最適パターン選出部
31…アプリケーション情報記憶部
32…分割ルール記憶部
33…動作環境情報記憶部

Claims (7)

  1. 複数の情報処理装置によるアプリケーションの分散処理を支援する分散処理支援装置であって、
    前記アプリケーションのソースコードを取得するソースコード取得部と、
    前記ソースコードを複数のロジックに分割するソースコード分割部と、
    前記アプリケーションにおける前記複数のロジックの処理順序と、前記複数の情報処理装置の動作環境に関する情報とに基づいて、前記複数の情報処理装置のいずれかに前記複数のロジックを分散配置するときの当該複数のロジックの配置パターンの候補を抽出する、候補抽出部と、
    前記抽出された配置パターンの候補の中から最適な配置パターンを決定する、最適パターン決定部とを具備し、
    前記候補抽出部は、前記複数の情報処理装置をノードとし、前記アプリケーションにおける前記複数のロジックの処理順序を特定する有向辺を経路とした有向グラフを用いて、非最短経路の配置パターンを除外することによって、前記配置パターンの候補を抽出する分散処理支援装置。
  2. 複数の情報処理装置によるアプリケーションの分散処理を支援する分散処理支援装置であって、
    前記アプリケーションのソースコードを取得するソースコード取得部と、
    前記ソースコードを複数のロジックに分割するソースコード分割部と、
    前記アプリケーションにおける前記複数のロジックの処理順序と、前記複数の情報処理装置の動作環境に関する情報とに基づいて、前記複数の情報処理装置のいずれかに前記複数のロジックを分散配置するときの当該複数のロジックの配置パターンの候補を抽出する、候補抽出部と、
    前記抽出された配置パターンの候補の中から最適な配置パターンを決定する、最適パターン決定部とを具備し、
    前記候補抽出部は、前記複数の情報処理装置を計算能力が低いものから高いものへと順に並べたものをノードとし、前記アプリケーションにおける前記複数のロジックの処理順序を特定する有向辺を経路とした有向グラフを用いて、最短経路の配置パターンを前記配置パターンの候補として抽出する、分散処理支援装置。
  3. 前記最適パターン決定部は、
    前記抽出された配置パターンの候補の各々について前記アプリケーションを動作させたときの全処理に係るアプリケーション性能を計測する、性能計測部と、
    前記アプリケーションの性能の計測結果に基づいて前記配置パターンの候補の中から最良の性能をもたらす配置パターンを選出する、最適パターン選出部とを備える、請求項1または2に記載の分散処理支援装置。
  4. 前記性能計測部は、
    前記アプリケーション性能として、全処理が終了するまでに要する時間、前記情報処理装置間のトラヒック量、および前記情報処理装置間のネットワーク遅延のうちの少なくとも1つを計測する、請求項に記載の分散処理支援装置。
  5. 複数の情報処理装置によるアプリケーションの分散処理を支援する分散処理支援装置が実行する、分散処理支援方法であって、
    前記アプリケーションのソースコードを取得する過程と、
    前記ソースコードを複数のロジックに分割する過程と、
    前記アプリケーションにおける前記複数のロジックの処理順序と、前記複数の情報処理装置の動作環境に関する情報とに基づいて、前記複数の情報処理装置のいずれかに前記複数のロジックを分散配置するときの当該複数のロジックの配置パターンの候補を抽出する過程と、
    前記抽出された配置パターンの候補の中から最適な配置パターンを決定する過程とを具し、
    前記抽出する過程は、前記複数の情報処理装置をノードとし、前記アプリケーションにおける前記複数のロジックの処理順序を特定する有向辺を経路とした有向グラフを用いて、非最短経路の配置パターンを除外することによって、前記配置パターンの候補を抽出する、分散処理支援方法。
  6. 複数の情報処理装置によるアプリケーションの分散処理を支援する分散処理支援装置が実行する、分散処理支援方法であって、
    前記アプリケーションのソースコードを取得する過程と、
    前記ソースコードを複数のロジックに分割する過程と、
    前記アプリケーションにおける前記複数のロジックの処理順序と、前記複数の情報処理装置の動作環境に関する情報とに基づいて、前記複数の情報処理装置のいずれかに前記複数のロジックを分散配置するときの当該複数のロジックの配置パターンの候補を抽出する過程と、
    前記抽出された配置パターンの候補の中から最適な配置パターンを決定する過程とを具し、
    前記抽出する過程は、前記複数の情報処理装置を計算能力が低いものから高いものへと順に並べたものをノードとし、前記アプリケーションにおける前記複数のロジックの処理順序を特定する有向辺を経路とした有向グラフを用いて、最短経路の配置パターンを前記配置パターンの候補として抽出する、分散処理支援方法。
  7. 請求項1乃至請求項のいずれか一項に記載の装置の各部による処理をプロセッサに実行させるプログラム。
JP2020561200A 2018-12-21 2019-11-01 分散処理支援装置、分散処理支援方法およびプログラム Active JP7070710B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2018240059 2018-12-21
JP2018240059 2018-12-21
PCT/JP2019/043067 WO2020129432A1 (ja) 2018-12-21 2019-11-01 分散処理支援装置、分散処理支援方法およびプログラム

Publications (2)

Publication Number Publication Date
JPWO2020129432A1 JPWO2020129432A1 (ja) 2021-09-09
JP7070710B2 true JP7070710B2 (ja) 2022-05-18

Family

ID=71101193

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020561200A Active JP7070710B2 (ja) 2018-12-21 2019-11-01 分散処理支援装置、分散処理支援方法およびプログラム

Country Status (5)

Country Link
US (1) US12131196B2 (ja)
EP (1) EP3901762B1 (ja)
JP (1) JP7070710B2 (ja)
CN (1) CN113227965B (ja)
WO (1) WO2020129432A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022138232A1 (ja) * 2020-12-23 2022-06-30 ソニーグループ株式会社 通信装置、通信方法、および通信システム
CN119167983B (zh) * 2024-09-24 2025-04-08 哈尔滨工业大学 面向多出口神经网络高效能推理的出口选择与分区部署策略生成方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005173788A (ja) 2003-12-09 2005-06-30 Ibm Japan Ltd オートノミック・コンピューティングシステム、実行環境制御方法及びプログラム
JP2017143365A (ja) 2016-02-09 2017-08-17 日本電信電話株式会社 アプリケーション配備システム及び方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0675786A (ja) 1992-08-26 1994-03-18 Hitachi Ltd タスクスケジュリング方法
EP2585911A4 (en) * 2010-06-22 2014-07-16 Hewlett Packard Development Co METHOD AND SYSTEM FOR DETERMINING APPLICATION OF APPLICATIONS
US9323619B2 (en) * 2013-03-15 2016-04-26 International Business Machines Corporation Deploying parallel data integration applications to distributed computing environments
US9477511B2 (en) * 2013-08-14 2016-10-25 International Business Machines Corporation Task-based modeling for parallel data integration
WO2016092677A1 (ja) * 2014-12-11 2016-06-16 株式会社日立製作所 モジュール分割支援装置、方法、及びプログラム
US9542219B1 (en) * 2015-12-17 2017-01-10 International Business Machines Corporation Automatic analysis based scheduling of jobs to appropriate cloud resources
US10565016B2 (en) * 2016-09-20 2020-02-18 International Business Machines Corporation Time frame bounded execution of computational algorithms
US10567248B2 (en) * 2016-11-29 2020-02-18 Intel Corporation Distributed assignment of video analytics tasks in cloud computing environments to reduce bandwidth utilization
US11461669B2 (en) * 2018-10-19 2022-10-04 CA Software Österreich GmbH Runtime prediction for a job of a workflow

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005173788A (ja) 2003-12-09 2005-06-30 Ibm Japan Ltd オートノミック・コンピューティングシステム、実行環境制御方法及びプログラム
JP2017143365A (ja) 2016-02-09 2017-08-17 日本電信電話株式会社 アプリケーション配備システム及び方法

Also Published As

Publication number Publication date
CN113227965B (zh) 2024-04-02
US20220068126A1 (en) 2022-03-03
EP3901762A4 (en) 2022-09-07
JPWO2020129432A1 (ja) 2021-09-09
CN113227965A (zh) 2021-08-06
WO2020129432A1 (ja) 2020-06-25
EP3901762A1 (en) 2021-10-27
US12131196B2 (en) 2024-10-29
EP3901762B1 (en) 2023-08-09

Similar Documents

Publication Publication Date Title
Sahu et al. A survey on application mapping strategies for network-on-chip design
Yakoubi et al. LICOD: A Leader-driven algorithm for community detection in complex networks
Arfat et al. Parallel shortest path graph computations of United States road network data on apache spark
US9501509B2 (en) Throwaway spatial index structure for dynamic point data
JP7070710B2 (ja) 分散処理支援装置、分散処理支援方法およびプログラム
US9934325B2 (en) Method and apparatus for distributing graph data in distributed computing environment
Chen et al. Design and implementation of an intelligent system for tourist routes recommendation based on Hadoop
KR20140088069A (ko) 하이퍼큐브 네트워크에서 데이터 전송을 최적화하기
Nirmal et al. Issues of K means clustering while migrating to map reduce paradigm with big data: A survey
Aksoy et al. Optimization of real-time wireless sensor based big data with deep autoencoder network: a tourism sector application with distributed computing
Zhou et al. Complementing travel itinerary recommendation using location-based social networks
Ostrowski An approximation of betweenness centrality for social networks
Alivand et al. Choice set generation for modeling scenic route choice behavior with geographic information systems
Priya et al. Distributed processing of location based spatial query through vantage point transformation
Zhao et al. Fast and scalable analysis of massive social graphs
Lin et al. Performance evaluation of cluster algorithms for Big Data analysis on cloud
Chowdhury et al. An efficient MapReduce-based adaptive K-means clustering for large dataset
Tang et al. Supporting continuous skyline queries in dynamically weighted road networks
Song et al. Nslpa: A node similarity based label propagation algorithm for real-time community detection
Kuikka A General method for detecting community structures in complex networks
Selvaraj et al. Global Manager-A Service Broker In An Integrated Cloud Computing, Edge Computing & IoT Environment.
Kumar et al. Classification in a Distributed System-A Study of Random Forest in the Hadoop MapReduce Framework
Sohail et al. AI Enabled Smart IoT Data Platform
Silambarasan et al. Artificial bee colony with map reducing technique for solving resource problems in clouds
Jaouadi et al. An Overview on Reducing Social Networks’ Size

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201208

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220104

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220121

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220221

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220418

R150 Certificate of patent or registration of utility model

Ref document number: 7070710

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350