JP6839673B2 - アプリケーション分割装置、方法およびプログラム - Google Patents

アプリケーション分割装置、方法およびプログラム Download PDF

Info

Publication number
JP6839673B2
JP6839673B2 JP2018026047A JP2018026047A JP6839673B2 JP 6839673 B2 JP6839673 B2 JP 6839673B2 JP 2018026047 A JP2018026047 A JP 2018026047A JP 2018026047 A JP2018026047 A JP 2018026047A JP 6839673 B2 JP6839673 B2 JP 6839673B2
Authority
JP
Japan
Prior art keywords
application
function
divided
division
functions
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
JP2018026047A
Other languages
English (en)
Other versions
JP2019144656A (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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
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 filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2018026047A priority Critical patent/JP6839673B2/ja
Priority to US16/969,506 priority patent/US11269623B2/en
Priority to PCT/JP2019/005265 priority patent/WO2019160008A1/ja
Publication of JP2019144656A publication Critical patent/JP2019144656A/ja
Application granted granted Critical
Publication of JP6839673B2 publication Critical patent/JP6839673B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • 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]
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)

Description

この発明の一態様は、垂直分散環境において、分散処理されるアプリケーションを複数のロジックに分割するアプリケーション分割装置、方法、およびプログラムに関する。
近年、IoT(モノのインターネット(Internet-of-Things))の普及とともに、身近にある様々な機器がインターネットにつながるようになり、それらの機器が取得した情報を収集し、利活用することが容易となってきている。このような背景のもと、情報収集の効率化や応答時間の高速化を実現するために、複数のアプリケーションロジック(入力データに対して何かしらの処理を行い、データを出力するものを、以降では「ロジック」と呼ぶ)を、垂直分散環境において地理的に分散されたマシンに配置して実行する分散アプリケーションへの期待が高まっている。例えば、IoT機器が送信した情報を集約するロジックを中継サーバに配置することで、クラウドサーバへデータを送信する際の通信量を削減できる。また、アプリケーションの利用者に対し地理的に近いサーバに、利用者の端末と頻繁に通信するロジックを配置することで、アプリケーションの応答時間を短縮できる。
アプリケーションを複数のマシンで分散的に動作させるためには、アプリケーションを複数のロジックに分割し、各マシンに配置する必要があることが知られている(例えば、非特許文献1参照)。ここで、アプリケーションをどのように分割し、どのように分散配置するかによって、アプリケーションの性能は大きく変化する。これは、ロジック間のデータの受け渡しがマシン間の通信で行われるようになることや、ロジックの処理時間がそれを動作させるマシンの性能に強く依存することに起因する。そのため、アプリケーション性能を最大化させるためには、最適なアプリケーション分割および配置を決定する技術が必要となる。例えば、開発者が定義した関数を1つのロジックとして分割し、ある性能(マシン間のトラヒック、スループット、処理時間など)を最大化できる最適な分散配置を自動で決定する手法が知られている(例えば、非特許文献2参照)。ここで、関数とは、一般に、ある出力を得るために必要な処理を1つにまとめたものをいう。例えば、指定された2点間の距離を計算したい場合、各点のx座標の差を計算する処理と、y座標の差を計算する処理と、それぞれの差分の二乗を加算した値の平方根を計算する処理とが、1つの関数として定義される。また、最適な分散配置の決定には、線形計画問題をはじめとする最適化問題を解くという手法を用いることができる(例えば、非特許文献3参照)。
そのような分散配置の対象となるアプリケーションの一例として、ソースコード中で複数の関数が定義されている、顔認識アプリケーションが公開されている(例えば、非特許文献4参照)。また、プログラム内の処理ロジック間には、データ依存関係や制御依存関係があることも知られている(例えば、非特許文献5参照)。
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/〉 Github, Inc.、顔認識:Plain Face Detector & Gender Recognizer、[online]、インターネット〈URL:https://github.com/MinhasKamal/GenderRecognizer〉 Jeanne Ferrante, et al.、「The Program Dependence Graph and Its Use in Optimization」、ACM Transactions on Programming Languages and Systems, vol.9, no.3, pp.319-349, 1987
アプリケーション分割および配置に関する従来の技術では、アプリケーションを複数のロジックに分割し、各マシンに分散配置する際、開発者が定義した関数を1つのロジックとして扱うため、次のような問題をかかえている。
第1に、開発者が定義した関数が、アプリケーション性能を最大化する上で最適な形になっていない場合(例えば、すべての処理を1つの関数の中に記述した場合など)、開発者が定義した関数を1つのロジックとして扱う従来技術では、アプリケーション性能を向上しきれない場合がある。
第2に、アプリケーションの開発時に関数がアプリケーション性能を最大化する上で最適な形になるように開発者に要求することは、関数間で受け渡しされるデータ量や、各関数の処理時間など、様々な性能指標について意識しながら開発することを開発者にしいることになり、開発時の負担が大きくなる。
この発明は、上記事情に着目してなされたもので、その目的とするところは、開発者による関数定義に依存せずに関数をさらに複数のロジックへ分割できるようにするアプリケーション分割装置、方法、およびプログラムを提供することにある。
上記課題を解決するためにこの発明の第1の態様は、複数の情報処理装置によって分散処理されるアプリケーションを複数のロジックに分割するアプリケーション分割装置にあって、前記アプリケーションのソースコードを取得する取得部と、前記ソースコード内で定義される複数の関数を識別し、前記ソースコードを前記複数の関数に分割する第1の分割部と、分割された前記関数の各々について、あらかじめ設定されたルールに従い、さらに分割可能か否かを判定する判定部と、分割可能であると判定された場合、前記関数が複数のロジックから成ると判定され、1または複数の行を含む複数の関数として分割する第2の分割部とを具備するようにしたものである。
この発明の第2の態様は、前記第1の分割部および前記第2の分割部により分割された複数の関数を前記複数の情報処理装置に割り当てる分散配置部をさらに具備するようにしたものである。
この発明の第3の態様は、前記分散配置部が、前記ソースコード内で定義される複数の関数のうち、前記第2の分割部により分割されていない関数についてはその関数単位で、前記第2の分割部により分割された関数については分割後の関数単位で、前記複数の情報処理装置への最適な分散配置を決定する配置決定部を備えるようにしたものである。
この発明の第4の態様は、前記判定部が、前記ルールに従い、2つの処理の間にデータ依存関係および制御依存関係が存在しないと判定されたことに基づいて、前記2つの処理が分割可能であると判定するようにしたものである。
この発明の第5の態様は、前記判定部が、前記ルールに従い、2つの処理の間にデータ依存関係または制御依存関係が存在するが前記2つの処理を分割した場合に実行順序の逆転がないと判定されたことに基づいて、前記2つの処理が分割可能であると判定するようにしたものである。
この発明の第6の態様は、前記判定部が、前記ルールに従い、2つの処理が、直列化および直列化復元可能に標準設定されていないデータ型によるデータ依存関係があると判定されたことに基づいて、前記2つの処理が分割可能でないと判定するようにしたものである。
この発明の第1の態様によれば、複数の情報処理装置によって分散処理されるアプリケーションのソースコードが取得され、ソースコード内で定義される複数の関数が識別され、ソースコードが複数の関数に分割される。そして、分割された関数の各々について、あらかじめ設定されたルールに従い、さらに分割可能か否かが判定され、分割可能であると判定された場合、関数が複数のロジックから成るものと判定され、1または複数の行を含む複数の関数へと分割される。これにより、開発者による関数定義に依存せず、開発者が定義した関数をさらに複数のロジック(関数)へと分割することができる。
この発明の第2の態様によれば、分割された複数の関数および分割された複数のロジックが複数の情報処理装置に割り当てられる。これにより、アプリケーションの分割処理から、分割された複数の関数を複数の情報処理装置に分散配置する処理までを、開発者またはシステムの運用者の操作に依存せずに自動的に行うことが可能となる。
この発明の第3の態様によれば、ソースコード内で定義される複数の関数のうち、分割されていない関数についてはその関数単位で、分割された関数については分割後の関数単位で、複数の情報処理装置への最適な分散配置が決定される。これにより、開発者による関数定義に依存せず、分割された関数の分散配置をより詳細な条件下で最適化して、アプリケーションの最適な分散処理を実現することができる。
この発明の第4の態様によれば、2つの処理の間にデータ依存関係および制御依存関係が存在しないと判定されたことに基づいて、当該2つの処理が分割可能であると判定される。これにより、開発者による関数定義に依存せず、処理間の依存関係の有無の判定に基づいて、関数をさらに分割可能か否か判定することができる。
この発明の第5の態様によれば、2つの処理の間にデータ依存関係または制御依存関係が存在する場合でも2つの処理を分割した場合に実行順序の逆転がないと判定されたことに基づいて、当該2つの処理が分割可能であると判定される。これにより、開発者による関数定義に依存せず、実行順序の逆転の有無の判定に基づいて、関数をさらに分割可能か否か判定することができる。
この発明の第6の態様によれば、2つの処理が、直列化および直列化復元可能に標準設定されていないデータ型によるデータ依存関係があると判定されたことに基づいて、当該2つの処理が分割可能でないと判定される。これにより、開発者による関数定義に依存せず、2つの処理がどのようなデータ型によるデータ依存関係にあるかの判定に基づいて、関数をさらに分割可能か否か判定することができる。
すなわちこの発明の各態様によれば、開発者による関数定義に依存せずに関数をさらに複数のロジックへ分割できるようにしたアプリケーション分割装置、方法、およびプログラムを提供することができる。
図1は、この発明の一実施形態に係るアプリケーション分割装置を含むシステムの一例を示す概略構成図である。 図2は、図1に示したアプリケーション分割装置の機能構成を示すブロック図である。 図3は、図2に示したアプリケーション分割装置による処理手順の一例を示すフローチャートである。 図4は、図3に示した処理のうち分割可否の判定処理の一例を示すフローチャートである。 図5は、行単位の分割が不可能な箇所の一例を示す図である。 図6は、一実施形態に係るアプリケーション分割装置による関数の分割および配置のイメージを示す図である。 図7は、一実施形態に係るアプリケーション分割装置による関数の分割および配置フローを示す図である。
以下、図面を参照してこの発明に係わる実施形態を説明する。
[一実施形態]
(構成)
図1は、この発明の一実施形態に係るアプリケーション分割装置を含むシステムの一例を示す概略構成図である。
このシステムは、通信ネットワークNWを介して通信可能なアプリケーション分割装置1と、アプリケーションの分散処理を担うエッジサーバESV1,ESV2,…ESVi(まとめてエッジサーバESVと言う)と、1または複数のエッジサーバESVを介してクラウド上のアプリケーションを利用可能なユーザ端末UT1,UT2,UT3,UT4,…UTj(以後まとめてユーザ端末UTと言う)を備えている。ユーザ端末UTには、例えば、スマートフォン、ラップトップコンピュータ、自動車、その他のIoT機器が用いられる。なお、図示したユーザ端末UTは一例にすぎず、固定端末であっても移動端末であってもよく、任意の数の様々な機器を含み得る。また、ユーザ端末UTは、必ずしもエッジサーバESVを経由する必要はなく、エッジサーバESVを経由せずに通信ネットワークNWを介してクラウド上に配置されたアプリケーションを利用することもできる。
エッジサーバESVは、大規模データセンタ上に展開されたクラウド環境に対し、ユーザのより近くに配置された小規模データセンタを構成し、例えば、サーバコンピュータやパーソナルコンピュータなど種々のマシンを含む。
通信ネットワークNWは、例えばインターネットに代表されるIP(Internet Protocol)網と、このIP網に対しアクセスするための複数のアクセス網とから構成される。アクセス網としては、光ファイバを使用した有線網はもとより、例えば3G又は4G等の規格の下で動作する携帯電話網や、無線LAN(Local Area Network)等が用いられる。
アプリケーション分割装置1は、一実施形態に係るアプリケーション分割装置であり、システム管理者等が操作可能なサーバコンピュータやパーソナルコンピュータである。
図2は、図1に示したアプリケーション分割装置1の機能構成を示すブロック図である。
アプリケーション分割装置1は、通信インタフェースユニット11と、処理ユニット12と、記憶ユニット13とを備えている。
通信インタフェースユニット11は、例えば有線または無線インタフェースを有しており、通信ネットワークNWを介して、クラウド上に配置されたアプリケーション(アプリ)管理サーバ(図示省略)およびエッジサーバESVとの間での情報の送受信を可能にする。なお、アプリ管理サーバの機能とアプリケーション分割装置1の機能が1つのクラウドコンピュータに設けられる構成であってもよい。
記憶ユニット13は、記憶媒体として例えばHDD(Hard Disk Drive)またはSSD(Solid State Drive)等の随時書込および読み出しが可能な不揮発性メモリを用いたものであり、この実施形態を実現するために必要な記憶領域として、プログラム記憶部の他に、判定ルール記憶部131と、エッジサーバ情報記憶部132とを備えている。
判定ルール記憶部131は、開発者が定義した関数をさらに分割可能か否かを判定する際に使用される判定ルールを記憶する。判定ルールについては後に詳しく説明する。
エッジサーバ情報記憶部132は、位置情報や動作環境、処理性能など、エッジサーバESVに関する情報を記憶する。
なお、判定ルール記憶部131と、エッジサーバ情報記憶部132は、必ずしもアプリケーション分割装置1に内蔵されたものでなくてもよく、例えばクラウドに配置されたアプリ管理サーバやデータベースサーバ等の外部の記憶装置に設けられたものでもよい。この場合アプリケーション分割装置1は、通信ネットワークNWを介して上記クラウドのデータベースサーバ等にアクセスすることにより、必要なデータを取得し使用する。
処理ユニット12は、図示しないCPU(Central Processing Unit)等のハードウェアプロセッサと作業用メモリとを有し、この実施形態を実施する上で必要な処理機能として、ソースコード取得部121と、ソースコード分割部122と、判定部123と、関数分割部124と、分散配置部125とを備える。これらの制御機能は、上記記憶ユニット13のプログラム記憶部に格納されたプログラムを上記ハードウェアプロセッサに実行させることにより実現される。
ソースコード取得部121は、例えばアプリ管理サーバから分散処理の対象となるアプリケーションのソースコードを取得する。
ソースコード分割部122は、取得されたソースコード内で定義される複数の関数を識別し、ソースコードを複数の関数に分割する。
判定部123は、分割された関数の各々について、判定ルール記憶部131に記憶された判定ルールに従い、さらに分割可能な箇所があるか否かを判定する。
関数分割部124は、関数にさらに分割可能な箇所があると判定された場合に、その関数を分割可能な箇所で複数のロジック(関数)へと分割する。このときの分割単位はソースコードの行となる。
分散配置部125は、性能計測部1251と、配置決定部1252とを備える。
性能計測部1251は、分散処理の対象となる関数の各々に関し、動作環境における性能を計測する。
配置決定部1252は、計測された性能と、エッジサーバ情報記憶部132に記憶された各エッジサーバの配置位置や処理性能等を表す情報を含む属性情報に基づいて、要求される性能が最も高くなるロジック(関数)の配置を決定する。
(動作)
次に、以上のように構成されたアプリケーション分割装置1による情報処理動作を説明する。図3はその処理手順と処理内容を示すフローチャートである。
(1)開始トリガの受信
アプリケーション分割装置1は、ステップS30によりアプリケーション分割処理を開始するトリガの有無を監視している。この状態で、例えばアプリ開発者またはシステム管理者が管理用端末を通じてアプリケーション分割処理の開始要求を入力し、この開始要求をトリガとして受け取ると、アプリケーション分割装置1は以下の処理を実行する。
(2)ソースコードの取得
アプリケーション分割装置1は、ステップS31において、ソースコード取得部121の制御の下、例えばアプリ管理サーバから分散処理の対象であるアプリケーションのソースコードを取得する。なお、アプリケーションのソースコードを、アプリ開発者またはシステム管理者が使用する管理用端末から取得するようにしてもよい。
(3)ソースコードを関数に分割
アプリケーション分割装置1は、ステップS32において、ソースコード分割部122の制御の下、ソースコード内で定義される複数の関数を識別し、ソースコードを複数の関数に分割する。
(4)行ごとの分割可否の判定
アプリケーション分割装置1は、ステップS33において、分割された関数の各々について、複数の行を含むか否かを判定する。関数が1行の処理からなる場合、さらなる分割は実行されず、ステップS37に移行する。関数が複数の行を含む場合、ステップS34に移行する。
アプリケーション分割装置1は、ステップS34において、判定部123の制御の下、分割された関数の各々について、判定ルール記憶部131に記憶された判定ルールに従い、さらに行ごとに分割可能か否かを判定する。
(4−1)判定ルール
ここで、アプリケーションを異なるマシンに分散配置することを前提として、関数を行単位の処理に分割しようとする場合、関数は単純に1行ごとに分割することができない。これは、ソースコード内に分割が可能な箇所と不可能な箇所が存在するためである。例えば図5において、図中左のfor文を図のように分割し、上の処理から順番に実行したとすると、L2の処理とL3の処理の実行順序が変わってしまい、a[i]に格納される数値が変わってしまう。これはL3の出力データがL2の入力データになっている(データ依存関係にある)ためである。このような分割は、元の関数の出力結果、ひいてはアプリケーション全体の動作を変えてしまいかねないため、行うべきではない。また、if文やbreak文など、当該処理の結果によって、それ以降の処理を実行するか否かが決まる処理、つまり制御依存関係にある処理も、実行順序が逆転するとアプリケーションの動作が変わってしまう場合があるため、分割時には注意する必要がある。
さらに、処理間でやり取りされるデータの型も、行単位の分割が困難な場所を形成している。これは、異なるマシン間で送信できるように、つまり直列化できるように標準設定されているデータ型と、これが標準設定されていないデータ型とがあるためである。直列化が標準設定されていないデータ型については、処理を追加することによって直列化することは不可能ではない。しかし、一般に公開されているライブラリ内のデータ型などの他の開発者が定義したデータ型については、開発言語によっては、ライブラリ自体がコンパイルされており、直列化のための処理の追加が非常に困難な場合がある。
このような条件に対応するため、この発明の一実施形態では、関数の分割における3つのルール(判定ルール)を定義した。
ルール1) 互いにデータ依存関係および制御依存関係がない2つの処理は分割可能
ルール2) 互いにデータ依存関係または制御依存関係にある2つの処理において、分割による実行順序の逆転がなければ、その処理は分割可能
ルール3) 互いにデータ依存関係にある2つの処理において、直列化および直列化復元が標準設定されているデータ型で依存している場合、その処理は分割可能
上記ルールを用いることによって、開発者が定義した関数を、異なるマシンに配置できる形で、かつアプリケーション全体の動作を変えることなく分割することができる。
(4−2)判定フロー
図4は、図3のステップS34において判定部123により実行される判定処理の一例を示すフローチャートである。判定部123は、上記判定ルールに従い、2つの処理が分割可能か否かを判定することにより、各関数について、さらに分割可能な箇所を識別する。
先ずステップS341において、判定部123は、2つの処理の間にデータ依存関係があるか否かを判定する。データ依存関係があると判定された場合、ステップS342に移行する。
ステップS342において、判定部123は、2つの処理の間のデータ依存関係が、標準で直列化可能なデータによるものであるか否かを判定する。データ依存関係が標準で直列化可能なデータによるものであると判定された場合、ステップS343に移行する。
ステップS343において、判定部123は、2つの処理を分割したときに実行順序の逆転があるか否かを判定する。実行順序の逆転がないと判定された場合、ステップS344に移行し、2つの処理が分割可能と判定し、判定を終了する。一方、ステップS343において、実行順序の逆転があると判定された場合、判定部123は、ステップS345に移行し、2つの処理が分割不可能と判定し、判定を終了する。
ステップS342において、2つの処理の間のデータ依存関係が、標準で直列化可能なデータによるものでないと判定された場合、判定部123は、ステップS345に移行し、2つの処理が分割不可能と判定し、判定を終了する。
ステップS341において、2つの処理の間にデータ依存関係がないと判定された場合、判定部123は、ステップS346に移行し、2つの処理の間に制御依存関係があるか否かを判定する。制御依存関係があると判定された場合、判定部123は、ステップS343に移行し、前述したように、2つの処理を分割したときに実行順序の逆転があるか否かを判定する。一方、ステップS346において、制御依存関係がないと判定された場合、判定部123は、ステップS344に移行し、2つの処理が分割可能と判定し、判定を終了する。
判定部123は、判定対象の関数について、分割可能な箇所と分割不可能な箇所とを識別するため、上記判定処理を繰り返し実行する。
(5)関数の分割
アプリケーション分割装置1は、ステップS35において、ステップS34の判定結果を受け取り、対象の関数について分割可能な箇所があったか否かを判定する。分割可能な箇所があった場合、アプリケーション分割装置1は、ステップS36に移行して、関数分割部124の制御の下、分割可能な箇所で関数をさらに複数の関数へと分割する。ステップS35において、分割可能な箇所がないと判定された場合、ステップS36をスキップしてステップS37に移行する。
アプリケーション分割装置1は、ステップS37において、取得されたソースコード内で定義されるすべての関数についてさらなる分割の可否の判定(および分割可能な場合には分割処理)が行われたか否かを判定する。すべての関数について判定が終了していないと判定された場合、ステップS33に戻り、判定が終了していない関数についてステップS33〜S36の処理を繰り返す。ステップS37において、すべての関数について判定が終了したと判定された場合、ステップS38に移行する。
(6)ロジック(関数)の配置の決定
次いで、アプリケーション分割装置1は、ステップS38において、分散配置部125の制御の下、アプリケーションを複数のマシンで分散的に動作させるため、各マシンへの関数の最適な分散配置を決定する。すなわち、アプリケーションのソースコード内で定義されたすべての関数について、ステップS36において複数の関数へと分割された関数は分割後の関数ごとに、分割されなかった関数はその関数ごとに、要求される性能を最大化できる配置先マシンを決定する。
図6は、一実施形態に係るアプリケーション分割装置1による関数の分割および配置のイメージを示す図である。ここでは、関数Aが4行の処理から成り、その他の関数が1行の処理から成るケースを想定して説明する。まず、通信ネットワークNW等を介してアプリケーションPのソースコードが取得され、アプリケーションPのソースコード内で定義されている関数がそれぞれ1つのロジックとして分割される。その後、各関数について各行の処理を異なる関数として分割し、これらの関数に対して、要求される性能を最大化できる配置先マシンを決定する。そのため図6に示した例では、関数Aがさらに4つの関数(関数a1〜a4)に分割され、それぞれが異なるマシンに配置されている。このように、一実施形態では、開発者が定義した関数(関数A)がさらに複数のロジック(関数a1〜a4)に分割され、複数のマシンに分散配置される。
図7は、一実施形態に係るアプリケーション分割装置1による関数の分割および配置フローの一例を示す図である。まず、ステップS71において、ソースコード分割部により、取得されたソースコード中の関数が識別され(ステップS711)、ソースコードが関数ごとに分割される(図6における関数A,B,C)。これらが関数分割部に出力され、ステップS72において、関数分割部により、関数内の処理間のデータ依存関係および制御依存関係が解析される(ステップS721)。その後、解析結果に対して上述のルールが適用され(ステップS722)、分割可能箇所が識別される。得られた分割可能箇所に基づいて、各関数(図6における関数A)が、複数の関数(図6における関数a1〜a4)として分割される(ステップS723)。こうして、ソースコードが関数(ロジック)ごとに分割される。
次いで、ステップS73において、性能計測部により、動作環境における各関数の性能が計測される。例えば、マシンZ上での処理時間を計測する場合、各関数をマシンZ上で複数回動作させ、処理終了までに要した平均時間をその関数の処理時間、すなわちマシンZ上での性能値のひとつとする。このようにして得られた性能値、およびマシン間のネットワーク遅延や各マシンのメモリなどの動作環境情報をもとに、ステップS74において、配置決定部により、上述したような線形計画問題をはじめとする最適化問題を解くことによって、要求される性能が最も高くなるロジックの配置が計算される。
例えば、各関数の入出力データ量、各配置先候補のマシン上での処理時間、マシン間のネットワーク遅延をもとに、「500ミリ秒以内の処理時間になる配置の中で、最もマシン間のトラヒックが小さくなる配置」が計算される。また、他の例として、各関数の入出力データ量、各関数の各配置先候補のマシン上でのメモリ使用量、各マシンのメモリをもとに、「各マシン上でのメモリ使用量が70%を超えない配置の中で、最もマシン間のトラヒックが小さくなる配置」を計算することも考えられる。
(7)システムの検証
一実施形態に係るアプリケーション分割装置1によりアプリケーションが分散配置されたシステムの有効性を確認するために、例えば、インターネットのGithub.com(https://github.com/MinhasKamal/GenderRecognizer)で公開されている顔認識アプリケーションを用い、以下の環境を想定して比較検証を行った。
(i)スマートフォンやノートPCなどのユーザ端末と、クラウドの、2種類のマシンが存在する。
(ii)ユーザ端末が所持している画像に対して顔認識を行い、性別情報が付与された顔の写真のみをクラウド上に保存する。(そのため、顔の写真をマシン上に出力する処理はクラウドを想定したマシン以外には配置できないという条件がある。)
(iii)最大化するアプリケーション性能は、ユーザ端末とクラウドとの間の、アプリケーション層におけるトラヒックとする。
(iv)顔認識を行う対象は、25人の人物が写っている集合写真(423[KB])とする。
ここで、上記顔認識アプリケーションのソースコードでは、主に以下の関数が定義されている。
(関数1)snipFace関数:顔検出を行い、写真からその部分だけ切り取る。
(関数2)predict関数:入力された顔写真に写っている人が、男性か女性かを認識する。
(関数3)main関数:snipFace関数を呼び出して顔写真の枚数をカウントし、すべての顔写真に対してPredict関数を呼び出し、その結果を顔写真に付与してマシン上に出力する。
従来技術を用いた場合、上記の各関数を1つのロジックとして分割したソースコードが出力される。しかし、画像をマシン上に出力する処理をクラウドにしか配置できない状況では、main関数をクラウド上にしか配置できなくなるため、配置決定部において、すべての関数をクラウド上に配置する組み合わせが最もトラヒックが小さくなると算出される。この場合、ユーザ端末とクラウドとの間のトラヒックは集合写真サイズの423[KB]となる。
一方、一実施形態を用いた場合、従来技術と同様に関数を識別した後、関数分割部において、各関数を行単位に分割するため、従来技術ではボトルネックとなっていたmain関数を、各関数を呼び出す関数群と、顔の写真をマシン上に出力する関数とに分割できる。このため、配置決定部において、snipFace関数およびsnipFace関数を呼び出して顔写真の枚数をカウントする関数をユーザ端末に配置し、その他の関数をクラウドに配置する組み合わせが最もトラヒックが小さくなると算出される。この場合、ユーザ端末とクラウドとの間のトラヒックは、顔写真の合計サイズ、およびその枚数情報のサイズを加算した71[KB]となり、従来技術と比較して85%のトラヒック削減が可能となる。
このように、一実施形態に係るアプリケーション分割装置1を用いると、関数単位で分割を行うよりも詳細な条件下で最適化できる。さらに、開発者が定義した関数をさらに細かく分割するため、すべての処理がひとつの関数に書かれているソースコードのような、細かく関数が分かれていないものに対しても、アプリケーション性能を最大化できるアプリケーション分割および配置を行うことができる。そのため、開発者は関数間で受け渡しされるデータ量や各関数の処理時間などの性能を意識することなく開発できるようになる。
(効果)
以上詳述したように、この発明の一実施形態では、アプリケーションのソースコードが取得され、該ソースコード内で定義される複数の関数が識別され、該ソースコードが先ず複数の関数に分割される。そして、分割された関数の各々について、あらかじめ設定された判定ルールに従い、さらに行単位で分割可能か否かが判定され、行単位で分割可能であると判定された場合、関数がさらに行単位で複数のロジック(関数)へと分割される。
したがって、一実施形態によれば、開発者による関数定義に依存せず、取得されたソースコード内で定義される関数をさらに行単位のロジックへと分割することができる。すなわち、分散アプリケーションの開発時に開発者に不要な負担をしいることなく、開発者が定義した関数を、異なるマシンに配置できる形で、かつアプリケーション全体の動作を変えることなく、分割することができる。
また、一実施形態によれば、分割された関数の各々が複数のマシンX,Y,Zに割り当てられる。これにより、開発者による関数定義に依存せず、より細分化された関数を用いて、アプリケーションのより効率的な分散処理を実現することができる。
また、一実施形態によれば、ソースコード内で定義される複数の関数のうち、分割されていない関数については関数ごとに、分割された関数については分割後の関数ごとに、複数のマシンX,Y,Zへの最適な分散配置が決定される。これにより、アプリケーションの分散処理にあたり、各関数の配置先について、より細分化された関数を用いて最適化問題を解くことができ、より良いアプリケーション性能を達成することができる。また、アプリケーションの分割処理から、分割された複数のロジックを複数のマシンX,Y,Zに分散配置する処理までを、開発者またはシステムの運用者の操作に依存せずに自動的に行うことが可能となる。
また、一実施形態によれば、ルール1に従い、2つの処理の間にデータ依存関係および制御依存関係が存在しないと判定されたことに基づいて、当該2つの処理が分割可能であると判定される。これにより、開発者による関数定義に依存せず、処理間の依存関係の有無を判定するという簡潔な手法で、関数をさらに行単位の処理に分割可能か否か判定することができる。
また、一実施形態によれば、ルール2に従い、2つの処理の間にデータ依存関係または制御依存関係が存在するが2つの処理を分割した場合に実行順序の逆転がないと判定されたことに基づいて、当該2つの処理が分割可能であると判定される。これにより、開発者による関数定義に依存せず、実行順序の逆転の有無を判定するという簡潔な手法で、データ依存関係または制御依存関係が存在する場合でも関数をさらに行単位の処理に分割可能か否かを判定することができる。
また、一実施形態によれば、ルール3に従い、2つの処理が、直列化および直列化復元可能に標準設定されていないデータ型によるデータ依存関係があると判定されたことに基づいて、当該2つの処理が分割可能でないと判定される。これにより、開発者による関数定義に依存せず、2つの処理間にデータ依存関係がある場合にも、データ依存関係に関与するデータの型に基づいて、関数をさらに行単位の処理に分割可能か否かを判定することができる。
開発者が定義した関数がアプリケーション性能を最大化する上で最適な形になっていない場合(例えば、すべての処理を1つの関数の中に記述した場合など)、従来技術では、アプリケーション性能を最大化できるアプリケーション分割および配置を行うことは不可能であった。そのような場合にも、一実施形態によれば、上記のように、開発者が定義した関数をさらに行単位の処理に分割し、それらの処理群に対して、性能を最大化できる処理の配置を計算することで、開発者による関数定義に依存しない最適なアプリケーション分割と配置を決定することができる。
また開発者が、関数間で受け渡しされるデータ量や各関数の処理時間などの性能指標を意識せずに開発したとしても、一実施形態に係る発明の適用によって、アプリケーション性能を最大化できるアプリケーション分割および配置を計算できるため、分散アプリケーション開発時の開発者の負担が減少する。
開発者が定義した関数を分割する際に、単純に1行ごとの処理に分割してしまうと、アプリケーションの動作が変わってしまう可能性があるため、分散処理を正しく行えないという問題がある。そのような問題についても、一実施形態によれば、実行順序、データ依存関係、制御依存関係、およびデータの型を考慮したルールを設定し、分割してもアプリケーションの動作が変わらない箇所と、動作が変わる箇所を識別することによって解消することができた。これにより、開発者による関数定義に依存せず、開発者が定義した関数を、異なるマシンに配置できる形で、かつアプリケーション全体の動作を変えることなく分割することができる。
[他の実施形態]
なお、この発明は上記実施形態に限定されるものではない。
例えば、図1に示した実施形態では、エッジサーバESV1,ESV2,…ESViがアプリケーションの分散処理を担うものとして説明したが、図6に例示されるように、分割されたアプリケーションロジックがアプリケーションを利用するユーザ端末UT上で実行されるものとすることもできる。同様に、分割されたアプリケーションロジックがクラウド上で実行されることもできる。
また、ユーザ端末UTは必ずしもエッジサーバESVを経由してアプリケーションを利用しなければならないわけではなく、インターネットを通じてクラウド上に配置されたアプリケーションを利用することも可能である。
その他、ルール1〜3の判定順序についても、図示したフローに限定されるものではなく、この発明の要旨を逸脱しない範囲で種々変形して実施可能である。
要するにこの発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
1…アプリケーション分割装置、11…通信インタフェースユニット、12…処理ユニット、13…記憶ユニット、121…ソースコード取得部、122…ソースコード分割部、123…判定部、124…関数分割部、125…分散配置部、131…判定ルール記憶部、132…エッジサーバ情報記憶部、1251…性能計測部、1252…配置決定部。

Claims (7)

  1. 複数の情報処理装置によって分散処理されるアプリケーションを複数のロジックに分割するアプリケーション分割装置であって、
    前記アプリケーションのソースコードを取得する取得部と、
    前記ソースコード内で定義される複数の関数を識別し、前記ソースコードを前記複数の関数に分割する第1の分割部と、
    分割された前記関数の各々について、あらかじめ設定されたルールに従い、さらに分割可能か否かを判定する判定部と、
    分割可能であると判定された場合、前記関数を1または複数の行を含む複数の関数に分割する第2の分割部と
    前記第1の分割部および前記第2の分割部により分割された複数の関数を前記複数の情報処理装置に割り当てる分散配置部と
    を具備するアプリケーション分割装置。
  2. 前記分散配置部は、
    前記ソースコード内で定義される複数の関数のうち、前記第2の分割部により分割されていない関数については関数単位で、前記第2の分割部により分割された関数については分割後の関数単位で、前記複数の情報処理装置への最適な分散配置を決定する配置決定部を備える、請求項に記載のアプリケーション分割装置。
  3. 前記判定部は、前記ルールに従い、2つの処理の間にデータ依存関係および制御依存関係が存在しないと判定されたことに基づいて、前記2つの処理が分割可能であると判定する、請求項1に記載のアプリケーション分割装置。
  4. 前記判定部は、前記ルールに従い、2つの処理の間にデータ依存関係または制御依存関係が存在するが前記2つの処理を分割した場合に実行順序の逆転がないと判定されたことに基づいて、前記2つの処理が分割可能であると判定する、請求項1に記載のアプリケーション分割装置。
  5. 前記判定部は、前記ルールに従い、2つの処理が、直列化および直列化復元可能に標準設定されていないデータ型によるデータ依存関係があると判定されたことに基づいて、前記2つの処理が分割可能でないと判定する、請求項1に記載のアプリケーション分割装置。
  6. 複数の情報処理装置によって分散処理されるアプリケーションを複数のロジックに分割するアプリケーション分割装置が実行する、アプリケーション分割方法であって、
    前記アプリケーションのソースコードを取得する過程と、
    前記ソースコード内で定義される複数の関数を識別し、前記ソースコードを前記複数の関数に分割する第1の分割過程と、
    分割された前記関数の各々について、あらかじめ設定されたルールに従い、さらに分割可能か否かを判定する過程と、
    分割可能であると判定された場合、前記関数を1または複数の行を含む複数の関数に分割する第2の分割過程と
    前記第1の分割過程および前記第2の分割過程において分割された複数の関数を前記複数の情報処理装置に割り当てる過程と
    を具備するアプリケーション分割方法。
  7. 請求項1乃至請求項のいずれかに記載の装置の各部による処理をプロセッサに実行させるプログラム。

JP2018026047A 2018-02-16 2018-02-16 アプリケーション分割装置、方法およびプログラム Active JP6839673B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2018026047A JP6839673B2 (ja) 2018-02-16 2018-02-16 アプリケーション分割装置、方法およびプログラム
US16/969,506 US11269623B2 (en) 2018-02-16 2019-02-14 Application division device, method and program
PCT/JP2019/005265 WO2019160008A1 (ja) 2018-02-16 2019-02-14 アプリケーション分割装置、方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018026047A JP6839673B2 (ja) 2018-02-16 2018-02-16 アプリケーション分割装置、方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2019144656A JP2019144656A (ja) 2019-08-29
JP6839673B2 true JP6839673B2 (ja) 2021-03-10

Family

ID=67618682

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018026047A Active JP6839673B2 (ja) 2018-02-16 2018-02-16 アプリケーション分割装置、方法およびプログラム

Country Status (3)

Country Link
US (1) US11269623B2 (ja)
JP (1) JP6839673B2 (ja)
WO (1) WO2019160008A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7263970B2 (ja) 2019-08-06 2023-04-25 株式会社デンソー 熱交換器
JP7484038B2 (ja) 2019-11-21 2024-05-16 日本電気株式会社 データ分割装置、データ分割方法及びプログラム。
CN111859383B (zh) * 2020-06-08 2021-08-06 西安电子科技大学 软件自动分割方法、***、存储介质、计算机设备、终端

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8843909B2 (en) * 2001-05-11 2014-09-23 Ca, Inc. Method and apparatus for transforming legacy software applications into modern object-oriented distributed systems
US20030163801A1 (en) * 2001-10-31 2003-08-28 Metacyber.Net Computer-based method for defining a patch in computer source code including conditional compilation cell groups
US8060865B2 (en) * 2006-01-12 2011-11-15 Microsoft Corporation Build-time enforcement of architectural partitioning in computer application
JP2007199869A (ja) * 2006-01-24 2007-08-09 Univ Nagoya デバイス連携機構の自動分散化プログラム、装置およびデバイス連携機構
US9038040B2 (en) * 2006-01-25 2015-05-19 International Business Machines Corporation Method for partitioning programs between a general purpose core and one or more accelerators
JP5170408B2 (ja) * 2008-03-31 2013-03-27 日本電気株式会社 自動分散化システム及び自動分散化方法
US8887154B2 (en) * 2012-09-06 2014-11-11 Imagine Communications Corp. Systems and methods for partitioning computing applications to optimize deployment resources
US10241761B2 (en) * 2014-12-29 2019-03-26 Nvidia Corporation System and method for compiler support for compile time customization of code
US9715375B1 (en) * 2016-01-27 2017-07-25 International Business Machines Corporation Parallel compilation of software application

Also Published As

Publication number Publication date
JP2019144656A (ja) 2019-08-29
US11269623B2 (en) 2022-03-08
WO2019160008A1 (ja) 2019-08-22
US20200401399A1 (en) 2020-12-24

Similar Documents

Publication Publication Date Title
Dai et al. Cloud infrastructure resource allocation for big data applications
Agliamzanov et al. Hydrology@ Home: a distributed volunteer computing framework for hydrological research and applications
TW201820165A (zh) 用於雲端巨量資料運算架構之伺服器及其雲端運算資源最佳化方法
US8819683B2 (en) Scalable distributed compute based on business rules
Batista et al. Performance evaluation of resource management in cloud computing environments
US10078843B2 (en) Systems and methods for analyzing consumer sentiment with social perspective insight
JP6839673B2 (ja) アプリケーション分割装置、方法およびプログラム
Almeida et al. Smart at what cost? characterising mobile deep neural networks in the wild
CN109614227B (zh) 任务资源调配方法、装置、电子设备及计算机可读介质
US10866838B2 (en) Cluster computing service assurance apparatus and method
Andrade et al. Performance and availability trade-offs in fog–cloud iot environments
US20200186595A1 (en) Facilitating management of communications systems
US10482268B1 (en) Systems and methods for access management
CN113989058A (zh) 一种服务生成方法和装置
US11409564B2 (en) Resource allocation for tuning hyperparameters of large-scale deep learning workloads
Wu et al. Re-entrant flowshop scheduling with learning considerations to minimize the makespan
US20180260246A1 (en) Runtime piggybacking of concurrent jobs in task-parallel machine learning programs
EP4113307A1 (en) Onboarding of monitoring tools
JP7450190B2 (ja) 特許情報処理装置、特許情報処理方法、およびプログラム
US11775264B2 (en) Efficient deployment of machine learning and deep learning model's pipeline for serving service level agreement
US20180005249A1 (en) Optimize a resource allocation plan corresponding to a legacy software product sustenance
TWI545453B (zh) 分散式系統及其資料庫管理方法及管理系統
JP2023545316A (ja) システム性能に対する複数のアプリケーションの影響の決定
Tang et al. To cloud or not to cloud: an on-line scheduler for dynamic privacy-protection of deep learning workload on edge devices
Beach et al. Integrating acceleration devices using CometCloud

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200220

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201124

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210122

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210215

R150 Certificate of patent or registration of utility model

Ref document number: 6839673

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150