(57)【要約】【課題】、複数種のハードウェアへのネットワーク機能の配置を迅速に行う。【解決手段】記憶部１４が、機能の配置先の候補である複数種のハードウェアのそれぞれのリソース消費量と性能を表す性能情報とを含む統計情報１４ａを記憶し、受付部１５ａが、複数種のハードウェアに対応したハードウェア記述言語である高位言語による機能の記述内容と、要求される性能を表す性能要件との入力を受け付け、性能予測部１５ｂが、ハードウェアごとに、記述内容と所定のアルゴリズムとを用いて、予測される性能である予測性能と、予測されるリソース消費量である予測リソース消費量とを算出し、デバイス選択部１５ｃが、算出された予測性能および性能情報が性能要件を満たし、かつ予測リソース消費量とリソース消費量との合計値がリソース容量以下であるハードウェアを、配置先として選択する。【選択図】図２
2019212069.tif 000002
【特許請求の範囲】
【請求項１】
機能の配置先の候補である複数種のハードウェアのそれぞれのリソース消費量と性能を表す性能情報とを含む統計情報を記憶する記憶部と、
複数種のハードウェアに対応したハードウェア記述言語である高位言語による機能の記述内容と、要求される性能を表す性能要件との入力を受け付ける受付部と、
ハードウェアごとに、前記記述内容と所定のアルゴリズムとを用いて、予測される性能である予測性能と、予測されるリソース消費量である予測リソース消費量とを算出する予測部と、
算出された前記予測性能および前記性能情報が前記性能要件を満たし、かつ前記予測リソース消費量と前記リソース消費量との合計値がリソース容量以下であるハードウェアを、配置先として選択する選択部と、
を備えることを特徴とする配置装置。
【請求項２】
前記予測部は、さらに前記記述内容と、該記述内容に対応する機能について測定された前記リソース消費量および前記性能情報とを用いた学習により、前記アルゴリズムを生成することを特徴とする請求項１に記載の配置装置。
【請求項３】
ハードウェアのリソース容量から前記リソース消費量を減算した値であるリソース許容量が前記予測リソース消費量より小さい場合に、前記記述内容を分割し、前記リソース許容量が前記予測リソース消費量より大きい場合に、該リソース許容量の範囲で複数の機能の前記記述内容を結合する編集部を、さらに備えることを特徴とする請求項１または２に記載の配置装置。
【請求項４】
機能の配置先の候補である複数種のハードウェアのそれぞれのリソース消費量と性能を表す性能情報とを含む統計情報を記憶する記憶部を備えた配置装置において実行される配置方法であって、
複数種のハードウェアに対応したハードウェア記述言語である高位言語による機能の記述内容と、要求される性能を表す性能要件との入力を受け付ける受付工程と、
ハードウェアごとに、前記記述内容と所定のアルゴリズムとを用いて、予測される性能である予測性能と、予測されるリソース消費量である予測リソース消費量とを算出する予測工程と、
算出された前記予測性能および前記性能情報が前記性能要件を満たし、かつ前記予測リソース消費量と前記リソース消費量との合計値がリソース容量以下であるハードウェアを、配置先として選択する選択工程と、
を含んだことを特徴とする配置方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、配置装置および配置方法に関する。
【背景技術】
【０００２】
キャリアネットワークにおいて、トラヒックの増加に伴って、サーバのＣＰＵ（Central  Processing  Unit）のパケット処理負荷が増加している。そこで、サーバのＣＰＵ負荷をオフロードするため、ＣＰＵとは異なるハードウェア種別のアクセラレータをサーバと組み合わせて、ネットワーク機能（以下、単に機能とも記す。）の処理を分散させる技術が知られている（非特許文献１参照）。このように、ハードウェア（以下、デバイスとも記す。）を組み合わせて、システム全体の性能の向上を図る技術が検討されている。
【０００３】
その場合に、アクセラレータに使用するハードウェアプロセッサによって、システムのアーキテクチャの特徴やネットワーク機能の実現手法が異なる。そこで、これらの違いを隠蔽して機能開発を効率化するために、抽象度を高めて複数種のデバイスに対応したハードウェア記述言語であるＰ４等の高位言語が提案されている（非特許文献２〜４参照）。
【０００４】
また、アクセラレータを１つのネットワーク機能で占有するとリソースに無駄が生じるため、アクセラレータには複数の機能を配置することが望ましい。そして、システム全体の性能向上を図るためには、複数種のハードウェアを組み合わせたシステム構成が必要である。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】J.F.Zazo,  et  al.,  “A  PCIe  DMA  engine  to  support  the  virtualization  of  40  Gbps  FPGA-accelerated  network  appliances”,  inReconfigurableComputing  and  FPGAs,  pp.1-6,  2015年
【非特許文献２】「P4/CによるSmartNICファームウェア開発の取組み」、[online]、2017年、富士通、[2018年5月11日検索]、インターネット＜URL:https://www.okinawaopenlabs.com/ood/2017/wp-content/uploads/sites/4/2017/12/fujitsu_3.pdf＞
【非特許文献３】]P.Bosshart,  et  al.,  “P4:  Programming  Protocol-Independent  Packet  Processors”,  SIGCOMM  CCR,  vol.44,  no.3,  pp.87-95,  2014年
【非特許文献４】Henning  Stubbe,  “P4  Compiler  &  Interpreter:  A  Survey”,  Proc.  Future  Internet  (FI)  Innov.  Internet  Technol.  Mobile  Commun.  (IITM).  Vol.47,  pp.47-52,  2017年
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来、複数種のハードウェアを用いてネットワーク機能を実現する場合に、ハードウェアごとに異なるシミュレーションや動作確認を実行することにより、処理性能や消費リソース容量を確認していた。そのため、シミュレーションや動作確認に長時間を要し、迅速にネットワーク機能の配置を行うことができなかった。その結果、リソースに無駄が生じる場合があった。
【０００７】
本発明は、上記に鑑みてなされたものであって、複数種のハードウェアへのネットワーク機能の配置を迅速に行うことを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、本発明に係る配置装置は、機能の配置先の候補である複数種のハードウェアのそれぞれのリソース消費量と性能を表す性能情報とを含む統計情報を記憶する記憶部と、複数種のハードウェアに対応したハードウェア記述言語である高位言語による機能の記述内容と、要求される性能を表す性能要件との入力を受け付ける受付部と、ハードウェアごとに、前記記述内容と所定のアルゴリズムとを用いて、予測される性能である予測性能と、予測されるリソース消費量である予測リソース消費量とを算出する予測部と、算出された前記予測性能および前記性能情報が前記性能要件を満たし、前記予測リソース消費量と前記リソース消費量との合計値がリソース容量以下であるハードウェアを、配置先として選択する選択部と、を備えることを特徴とする。
【発明の効果】
【０００９】
本発明によれば、複数種のハードウェアへのネットワーク機能の配置を迅速に行うことができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、本実施形態に係る配置装置の対象システムを説明するための説明図である。
【図２】図２は、配置装置の概略構成を例示する模式図である。
【図３】図３は、統計情報のデータ構成を例示する図である。
【図４】図４は、配置装置の処理を説明するための説明図である。
【図５】図５は、配置処理手順を例示するフローチャートである。
【図６】図６は、配置プログラムを実行するコンピュータを例示する図である。
【発明を実施するための形態】
【００１１】
以下、図面を参照して、本発明の一実施形態を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。また、図面の記載において、同一部分には同一の符号を付して示している。
【００１２】
［対象システム］
図１は、本実施形態に係る配置装置の対象システムを説明するための説明図である。図１に示すように、配置装置による配置処理の対象となるシステムは、サーバにアクセラレータが組み込まれて構成される。アクセラレータは、ＮＰ（Network  Processor）やＦＰＧＡ（Field  Programmable  Gate  Array）等のサーバのＣＰＵとは種別の異なるハードウェアで実現される。
【００１３】
このシステムにおいて、アクセラレータが通信ネットワークの他のネットワーク装置から受信したパケットのトラヒックが、パケットに対して要求される処理に応じて、アクセラレータまたはサーバのＣＰＵに振り分けられる。アクセラレータには、サーバのＣＰＵの負荷要因となるネットワーク機能が配置される。これにより、サーバのＣＰＵ負荷をアクセラレータにオフロードすることが可能となる。
【００１４】
本実施形態の配置装置は、このようなシステムにおいて、各ネットワーク機能をＣＰＵ、またはアクセラレータのいずれのハードウェアに配置するかを決定する配置処理を実行する。
【００１５】
［配置装置の構成］
図２は、配置装置１０の概略構成を例示する模式図である。図２に例示するように、本実施形態の配置装置１０は、ワークステーションやパソコン等の汎用コンピュータで実現され、入力部１１、出力部１２、通信制御部１３、記憶部１４、および制御部１５を備える。
【００１６】
入力部１１は、キーボードやマウス等の入力デバイスを用いて実現され、操作者による入力操作に対応して、制御部１５に対して処理開始などの各種指示情報を入力する。出力部１２は、液晶ディスプレイなどの表示装置、プリンター等の印刷装置、情報通信装置等によって実現される。通信制御部１３は、ＬＡＮ（Local  Area  Network）やインターネットなどの電気通信回線を介したネットワーク装置等の外部の装置との通信を制御する。例えば、通信制御部１３は、図１に例示した配置処理対象のシステムから、ＣＰＵ、ＮＰ、またはＦＰＧＡ等のハードウェアについての性能の測定値等を受信する。
【００１７】
記憶部１４は、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。なお、記憶部１４は、ＬＡＮやインターネット等の電気通信回線を介して制御部１５と通信する構成でもよい。
【００１８】
本実施形態において、記憶部１４には、統計情報１４ａが記憶されている。この統計情報１４ａは、機能の配置先の候補である複数種のハードウェアのそれぞれのリソース消費量と性能を表す性能情報とを含む情報である。
【００１９】
ここで、図３は、統計情報１４ａのデータ構成を例示する図である。図３に例示するように、統計情報１４ａは、デバイスごとのリソース消費量と性能情報とを含む。図３には、デバイスとして、ＣＰＵ、ＦＰＧＡ１、ＦＰＧＡ２等が例示されている。
【００２０】
リソース消費量は、各デバイスの使用率（％）等で表される実績値である。図３に示す例では、リソース消費量には、さらに、デバイスごとに異なる詳細な情報が含まれる。例えば、図３に示すＣＰＵのリソース消費量には、コア数、コア数使用量、メモリ数、メモリ使用量等が含まれ、ＦＰＧＡ１のリソース消費量には、ＦＦ（フリップフロップ）数、ＦＦ使用量、ＬＵＴ（ルックアップテーブル）数、ＬＵＴ使用量等が含まれている。
【００２１】
性能情報は、スループット（Ｇｂｐｓ）、遅延（ｍｓ）等を含む実績値である。ここで、スループットとは、各デバイスが一定時間内に処理できるデータ量である。また、遅延は、例えば、パケットを送信してから、受信した側が送信側にＡＣＫパケットを送信し、送信側でそれを受信するまでの時間で表される。
【００２２】
また、統計情報１４ａは、ステータスと、使用機能とを含む。ステータスは、各デバイスが使用可能か否かを示す情報であり、「稼働」あるいは「故障」で表される。配置装置１０は、後述する配置処理において、ステータスが「稼働」であるデバイスを対象に、ネットワーク機能の配置先として選択する。
【００２３】
また、使用機能は、各デバイスに配置されている機能と、各機能によるリソース消費量の実績値とで表される。配置装置１０は、後述する配置処理において、高位言語のソースコードを、ネットワーク機能の配置先として選択したデバイスのソースコードに変換し、変換したソースコードを用いてその機能のリソース消費量を測定し、この測定値を実績値として用いて、統計情報１４ａを更新する。なお、上記の「リソース消費量」は、各デバイスに配置されている全ての「使用機能」のリソース消費量の合計値に相当する。
【００２４】
図２の説明に戻る。制御部１５は、ＣＰＵ等で実現され、メモリに記憶された処理プログラムを実行し、図２に示すように、受付部１５ａ、性能予測部１５ｂ、デバイス選択部１５ｃ、高位言語編集部１５ｄ、変換部１５ｅおよび配置実行部１５ｆとして機能する。
【００２５】
受付部１５ａは、複数種のハードウェアに対応したハードウェア記述言語である高位言語による機能の記述内容と、要求される性能を表す性能要件との入力を受け付ける。具体的には、受付部１５ａは、入力部１１または通信制御部１３を介して、配置処理の対象とされる機能の高位言語で記述されたソースコードと、スループットや遅延等の性能についての要求条件である性能要件の入力を受け付ける。
【００２６】
性能予測部１５ｂは、予測部として機能する。すなわち、性能予測部１５ｂは、ハードウェアごとに、高位言語の記述内容と所定のアルゴリズムとを用いて、予測される処理性能である予測性能と、予測されるリソース消費量である予測リソース消費量とを算出する。
【００２７】
また、性能予測部１５ｂは、高位言語の記述内容と、この記述内容に対応する機能について測定されたリソース消費量および性能情報とを用いた学習により、アルゴリズムを生成する。
【００２８】
具体的には、性能予測部１５ｂは、機能の高位言語のソースコードと、この機能についての実績値としての統計情報１４ａのリソース消費量および性能情報とを用いて、高位言語のソースコードと各ハードウェアのリソース消費量および性能情報との関係を学習する。これにより、性能予測部１５ｂは、高位言語のソースコードと各ハードウェアのリソース消費量および性能情報との関係を算出するアルゴリズムを生成する。性能予測部１５ｂは、生成したアルゴリズムを記憶部１４に記憶させる。
【００２９】
そして、性能予測部１５ｂは、ハードウェアごとに、生成したアルゴリズムを適用して、配置処理の対象として入力された機能の高位言語のソースコードから、予測される性能すなわち予測性能と、予測されるリソース消費量すなわち予測リソース消費量とを算出する。
【００３０】
デバイス選択部１５ｃは、選択部として機能する。すなわち、デバイス選択部１５ｃは、算出された予測性能および性能情報が性能要件を満たし、かつ予測リソース消費量とリソース消費量との合計値がリソース容量以下であるハードウェアを、配置先として選択する。
【００３１】
具体的には、デバイス選択部１５ｃは、ハードウェアごとに、入力された性能要件と算出された予測性能とハードウェアについての統計情報１４ａの性能情報とを比較する。そして、デバイス選択部１５ｃは、予測性能、性能情報の双方が性能要件を満たす場合に、このハードウェアを配置先の候補とする。
【００３２】
次に、デバイス選択部１５ｃは、算出されたリソース予測リソース消費量と統計情報１４ａのリソース消費量との合計値を算出する。そして、デバイス選択部１５ｃは、算出した合計値がこのハードウェアのリソース容量以下である場合に、このハードウェアを機能の配置先として選択する。
【００３３】
ここで、図４は、配置装置１０の処理を説明するための説明図である。図４に示す例では、デバイス選択部１５ｃは、選択機能部と比較機能部とで構成されている。そして、選択機能部が、性能予測部１５ｂに対して、機能の配置先として適切か否かを判定する処理のターゲットのデバイスを順に指定している。この場合には、まず、選択機能部は、予め入力部１１または通信制御部１３を介して入力され記憶部１４に記憶されている初期配置情報を参照し、初期配置情報で指定されているデバイスを、最初のターゲットのデバイスとして、デバイス選択部１５ｃに通知する。
【００３４】
また、デバイス選択部１５ｃの選択機能部は、受付部１５ａとして機能して、配置処理の対象として入力された機能の高位言語のソースコードを受け付けて、性能予測部１５ｂに転送する。
【００３５】
性能予測部１５ｂは、指定されたデバイスについて、高位言語のソースコードとアルゴリズムとを用いて、予測性能と予測リソース消費量とを算出し、予測結果としてデバイス選択部１５ｃの比較機能部に転送する。このアルゴリズムは、性能予測部１５ｂが、予め機能の高位言語のソースコードと、この機能についての実績値としての統計情報１４ａのリソース消費量および性能情報とを用いて生成したものである。
【００３６】
デバイス選択部１５ｃの比較機能部は、受付部１５ａとして機能して、性能要件を受け付ける。また、比較機能部は、入力された性能要件と、予測結果と、このデバイスについての統計情報１４ａの性能情報およびリソース消費量とを比較する。
【００３７】
そして、比較機能部は、算出された予測性能および性能情報が性能要件を満たし、かつ予測リソース消費量とデバイスのリソース消費量との合計値がこのデバイスのリソース容量の範囲内である場合に、判定結果ＯＫとして、このデバイスを配置先として選択する。
【００３８】
なお、比較機能部は、判定結果ＯＫではない場合には、判定結果ＮＧとして、ターゲットのデバイスの変更を選択機能部に指示する。このようにして、選択機能部が、性能予測部１５ｂに対して、配置処理の配置先のターゲットのデバイスを順に指定する。ターゲットのデバイスの指定順は特に限定されないが、例えば、リソース消費量が少ない順、すなわち、デバイスのリソース容量からデバイスのリソース消費量を減算したリソース許容量が大きい順に指定されればよい。
【００３９】
図３に示した統計情報１４ａにおいて、入力された性能要件が遅延５ｍｓ、スループット１０Ｇｂｐｓである場合に、ターゲットのデバイスがＣＰＵの場合には、遅延１００ｍｓ、スループット１Ｇｂｐｓであり、性能要件を満たさない。したがって、比較機能部は、判定結果ＮＧとして、選択機能部にターゲットのデバイスの変更を指示する。
【００４０】
そこで、選択機能部は、ターゲットのデバイスをＦＰＧＡ１に変更する。その場合に、統計情報１４ａにおいて、ＦＰＧＡ１の遅延１ｍｓ、スループット４０Ｇｂｐｓであり、性能要件を満たす。したがって、選択機能部は、予測性能が性能要件を満たし、かつ予測リソース消費量とリソース消費量との合計値がデバイスのリソース容量以下であれば、ＦＰＧＡ１を機能の配置先として決定する。
【００４１】
例えば、ＦＰＧＡ１のリソース消費量が１０％、予測リソース消費量が２０％、またリソース容量が１００％であれば、予測リソース消費量とリソース消費量との合計はリソース容量以下であるため、配置先として決定される。なお、この場合には、配置後のＦＰＧＡ１のリソース消費量は３０％になる。また、この場合には、ＣＰＵのリソース消費量は変化しない。
【００４２】
なお、デバイス選択部１５ｃの比較機能部は、さらに統計情報１４ａのステータスを参照し、ターゲットのデバイスが故障していないことを確認したうえで、配置先として決定する。
【００４３】
このように、配置装置１０では、配置対象の機能の高位言語によるソースコードを用いて、機能によるリソース消費量と性能情報を予測することができる。そのため、シミュレーションや実機による動作確認を実行しなくても、機能の配置先のハードウェアを迅速かつ適切に選択することが可能となる。
【００４４】
図２の説明に戻る。高位言語編集部１５ｄは、編集部として機能する。すなわち、高位言語編集部１５ｄは、ハードウェアのリソース容量からリソース消費量を減算した値であるリソース許容量が予測リソース消費量より小さい場合に、高位言語による記述内容を分割する。また、高位言語編集部１５ｄは、リソース許容量が予測リソース消費量より大きい場合に、該リソース許容量の範囲で複数の機能の高位言語による記述内容を結合する。
【００４５】
変換部１５ｅは、機能の高位言語によるソースコードをハードウェアに対応したソースコードに変換する。また、配置実行部１５ｆは、ハードウェアに対応したソースコードを用いて、統計情報を測定する。
【００４６】
具体的には、高位言語編集部１５ｄは、例えば図４に示すように、比較機能部による判定結果がＮＧの場合に、配置処理の対象の機能の高位言語のソースコードを用いて分割あるいは他の機能のソースコードと結合する等の編集を行う。また、高位言語編集部１５ｄは、編集後のソースコードをデバイス選択部１５ｃに引き渡す。その場合に、デバイス選択部１５ｃは、編集後のソースコードで記述される機能を配置処理の対象に変更して、後続の処理を行う。
【００４７】
また、上記の配置処理により機能の配置先のデバイスが決定した場合に、変換部１５ｅが、デバイス選択部１５ｃから受け取った機能の高位言語によるソースコードを、決定したデバイスのソースコードに変換し、配置実行部１５ｆに引き渡す。
【００４８】
配置実行部１５ｆは、変換部１５ｅが変換したソースコードを用いて、機能のシミュレーションまたは実機における動作確認を実行する。そして、配置実行部１５ｆは、その機能のリソース消費量を測定し、この測定値を実績値として用いて、統計情報１４ａを更新する。すなわち、配置後の機能のリソース消費量を用いて、統計情報１４ａの「使用機能」および「リソース消費量」を更新する。
【００４９】
この更新された統計情報１４ａを用いて、性能予測部１５ｂが性能予測に用いるアルゴリズムを生成し記憶部１４のアルゴリズムを更新する。これにより、アルゴリズムの精度が向上する。
【００５０】
［配置処理］
次に、図５を参照して、本実施形態に係る配置装置による配置処理について説明する。図５は、配置処理手順を例示するフローチャートである。図５のフローチャートは、例えば、ユーザが開始を指示したタイミングで開始される。
【００５１】
最初に、配置装置は、各デバイスから、デバイスの種別と、遅延、スループット等の性能情報を取得して（ステップＳ１）、統計情報１４ａとして記憶部１４に記憶する（ステップＳ２）。また、配置装置は、各デバイスのリソース消費量を取得する（ステップＳ３）。
【００５２】
次に、受付部１５ａが、配置処理対象の機能の高位言語によるソースコードと、性能要件との入力を受け付ける（ステップＳ４）。本実施形態では、受付部１５ａは、性能要件として、遅延要件およびスループット要件の入力を受け付ける。また、受付部１５ａは、配置処理のターゲットとするデバイスの初期値である初期配置情報との入力を受け付けて、統計情報１４ａのデバイスを識別する登録番号ｉ（ｉ＝０，１，…）についての初期化処理（ｉ＝０）を行う（ステップＳ４〜Ｓ５）。
【００５３】
次に、デバイス選択部１５ｃの選択機能部が、初期配置情報が入力されていることを確認し（ステップＳ６）、入力されている場合に（ステップＳ６、Ｙｅｓ）、初期配置情報のデバイスが配置先として存在することを確認する（ステップＳ７）。選択機能部は、初期配置情報のデバイスが配置先として存在する場合に（ステップＳ７、Ｙｅｓ）、このデバイスを配置処理のターゲットのデバイスとして選択する（ステップＳ８）。
【００５４】
一方、選択機能部は、初期配置情報が入力されていない場合（ステップＳ６、Ｎｏ）、または初期配置情報のデバイスが配置先として存在しない場合には（ステップＳ７、Ｎｏ）、統計情報１４ａの登録番号ｉに基づいて配置処理のターゲットのデバイスを選択する（ステップＳ９）。
【００５５】
選択機能部は、選択したデバイスを指定する情報と、高位言語のソースコードとを性能予測部１５ｂに転送する（ステップＳ１０）。その場合に、性能予測部１５ｂは、予測リソース消費量と予測性能とを算出し（ステップＳ２１）、算出した予測結果をデバイス選択部１５ｃの比較機能部に出力する（ステップＳ２２）。本実施形態では、予測性能として、性能要件に対応して、遅延およびスループットの予測値が比較機能部に出力される。
【００５６】
比較機能部は、性能要件が入力されていることを確認する。比較機能部は、まず、遅延要件が入力されていることを確認し（ステップＳ３１）、入力されている場合に（ステップＳ３１、Ｙｅｓ）、予想結果および統計情報１４ａの遅延が遅延要件を満たすか否かを確認する（ステップＳ３２）。比較機能部は、予想結果および統計情報１４ａの遅延が遅延要件を満たす場合に（ステップＳ３２、Ｙｅｓ）、ステップＳ３３に処理を進め、満たさない場合に（ステップＳ３２、Ｎｏ）、ステップＳ３６に処理を進める。
【００５７】
ステップＳ３３の処理では、比較機能部が、スループット要件が入力されていることを確認し、入力されている場合に（ステップＳ３３、Ｙｅｓ）、予想結果および統計情報１４ａのスループットがスループット要件を満たすか否かを確認する（ステップＳ３４）。比較機能部は、予想結果および統計情報１４ａのスループットがスループット要件を満たす場合に（ステップＳ３４、Ｙｅｓ）、ステップＳ３５に処理を進め、満たさない場合に（ステップＳ３４、Ｎｏ）、ステップＳ３６に処理を進める。
【００５８】
ステップＳ３５の処理では、比較機能部が、予測結果の予測リソース消費量と統計情報１４ａのリソース消費量との合計値がこのデバイスのリソース容量以下の許容範囲か否かを確認する。比較機能部は、合計値が許容範囲ではない場合に（ステップＳ３５、Ｎｏ）、ステップＳ３６に処理を進め、許容範囲である場合に（ステップＳ３５、Ｙｅｓ）、このデバイスを機能の配置先として選択し、ステップＳ３７に処理を進める。
【００５９】
ステップＳ３６の処理では、比較機能部が、統計情報１４ａのデバイスを識別する登録番号ｉのインクリメントを行って、ステップＳ９に処理を戻す。
【００６０】
ステップＳ３７の処理では、比較機能部が、変換部１５ｅに、機能の配置先として選択したデバイスと高位言語のソースコードとを通知して、コンパイラ処理の実行を指示する（ステップＳ３７）。
【００６１】
変換部１５ｅは、高位言語のソースコードを配置先のデバイスのソースコードに変換するコンパイラ処理を実行し、配置実行部１５ｆに引き渡す。配置実行部１５ｆは、コンパイラ処理された機能をデバイスに配置し（ステップＳ４１）、配置された機能のリソース消費量を測定し（ステップＳ４２）、この測定値を実績値として用いて統計情報１４ａを更新する。これにより、一連の配置処理が終了する。
【００６２】
以上、説明したように、本実施形態の配置装置１０では、記憶部１４が、機能の配置先の候補である複数種のハードウェアのそれぞれのリソース消費量と性能を表す性能情報とを含む統計情報１４ａを記憶する。また、受付部１５ａが、複数種のハードウェアに対応したハードウェア記述言語である高位言語による機能の記述内容と、要求される性能を表す性能要件との入力を受け付ける。また、性能予測部１５ｂが、ハードウェアごとに、前記記述内容と所定のアルゴリズムとを用いて、予測される性能である予測性能と、予測されるリソース消費量である予測リソース消費量とを算出する。また、デバイス選択部１５ｃが、算出された予測性能および統計情報１４ａの性能情報が性能要件を満たし、かつ算出された予測リソース消費量と統計情報１４ａのリソース消費量との合計値がリソース容量以下であるハードウェアを、配置先として選択する。
【００６３】
これにより、配置装置１０では、配置対象の機能の高位言語によるソースコードを用いて機能によるリソース消費量と性能情報を予測することができる。そのため、シミュレーションや実機による動作確認を実行しなくても、機能の配置先のハードウェアを迅速かつ適切に選択することが可能となる。したがって、配置装置１０の配置処理によれば、複数種のハードウェアへのネットワーク機能の配置を迅速に行うことが可能となる。
【００６４】
また、性能予測部１５ｂは、高位言語による記述内容と、該記述内容に対応して測定されたリソース消費量および性能情報とを用いた学習により、アルゴリズムを生成する。これにより、性能予測に用いられるアルゴリズムの精度が向上する。
【００６５】
また、高位言語編集部１５ｄは、ハードウェアのリソース容量からリソース消費量を減算した値であるリソース許容量が予測リソース消費量より小さい場合に、高位言語による記述内容を分割し、リソース許容量が予測リソース消費量より大きい場合に、該リソース許容量の範囲で複数の機能の高位言語による記述内容を結合する。これにより、さらに適切にネットワーク機能の配置を行うことが可能となる。
【００６６】
［プログラム］
上記実施形態に係る配置装置１０が実行する処理をコンピュータが実行可能な言語で記述したプログラムを作成することもできる。一実施形態として、配置装置１０は、パッケージソフトウェアやオンラインソフトウェアとして上記の配置処理を実行する配置プログラムを所望のコンピュータにインストールさせることによって実装できる。例えば、上記の配置プログラムを情報処理装置に実行させることにより、情報処理装置を配置装置１０として機能させることができる。ここで言う情報処理装置には、デスクトップ型またはノート型のパーソナルコンピュータが含まれる。また、その他にも、情報処理装置にはスマートフォン、携帯電話機やＰＨＳ（Personal  Handyphone  System）等の移動体通信端末、さらには、ＰＤＡ（Personal  Digital  Assistants）等のスレート端末等がその範疇に含まれる。
【００６７】
また、配置装置１０は、ユーザが使用する端末装置をクライアントとし、当該クライアントに上記の配置処理に関するサービスを提供するサーバ装置として実装することもできる。例えば、配置装置１０は、性能要件と機能の高位言語によるソースコードとを入力とし、機能の配置先のハードウェアを出力する配置処理サービスを提供するサーバ装置として実装される。この場合、配置装置１０は、Ｗｅｂサーバとして実装することとしてもよいし、アウトソーシングによって上記の配置処理に関するサービスを提供するクラウドとして実装することとしてもかまわない。以下に、配置装置１０と同様の機能を実現する配置プログラムを実行するコンピュータの一例を説明する。
【００６８】
図６は、配置プログラムを実行するコンピュータの一例を示す図である。コンピュータ１０００は、例えば、メモリ１０１０と、ＣＰＵ１０２０と、ハードディスクドライブインタフェース１０３０と、ディスクドライブインタフェース１０４０と、シリアルポートインタフェース１０５０と、ビデオアダプタ１０６０と、ネットワークインタフェース１０７０とを有する。これらの各部は、バス１０８０によって接続される。
【００６９】
メモリ１０１０は、ＲＯＭ（Read  Only  Memory）１０１１およびＲＡＭ１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、ハードディスクドライブ１０３１に接続される。ディスクドライブインタフェース１０４０は、ディスクドライブ１０４１に接続される。ディスクドライブ１０４１には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース１０５０には、例えば、マウス１０５１およびキーボード１０５２が接続される。ビデオアダプタ１０６０には、例えば、ディスプレイ１０６１が接続される。
【００７０】
ここで、ハードディスクドライブ１０３１は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３およびプログラムデータ１０９４を記憶する。上記実施形態で説明した各情報は、例えばハードディスクドライブ１０３１やメモリ１０１０に記憶される。
【００７１】
また、配置プログラムは、例えば、コンピュータ１０００によって実行される指令が記述されたプログラムモジュール１０９３として、ハードディスクドライブ１０３１に記憶される。具体的には、上記実施形態で説明した配置装置１０が実行する各処理が記述されたプログラムモジュール１０９３が、ハードディスクドライブ１０３１に記憶される。
【００７２】
また、配置プログラムによる情報処理に用いられるデータは、プログラムデータ１０９４として、例えば、ハードディスクドライブ１０３１に記憶される。そして、ＣＰＵ１０２０が、ハードディスクドライブ１０３１に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出して、上述した各手順を実行する。
【００７３】
なお、配置プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０３１に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ１０４１等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、配置プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ＬＡＮ（Local  Area  Network）やＷＡＮ（Wide  Area  Network）等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【００７４】
以上、本発明者によってなされた発明を適用した実施形態について説明したが、本実施形態による本発明の開示の一部をなす記述および図面により本発明は限定されることはない。すなわち、本実施形態に基づいて当業者等によりなされる他の実施形態、実施例および運用技術等は全て本発明の範疇に含まれる。
【符号の説明】
【００７５】
１０  配置装置
１１  入力部
１２  出力部
１３  通信制御部
１４  記憶部
１４ａ  統計情報
１５  制御部
１５ａ  受付部
１５ｂ  性能予測部
１５ｃ  デバイス選択部
１５ｄ  高位言語編集部
１５ｅ  変換部
１５ｆ  配置実行部
【図１】
2019212069.tif 000003
【図２】
2019212069.tif 000004
【図３】
2019212069.tif 000005
【図４】
2019212069.tif 000006
【図５】
2019212069.tif 000007
【図６】
2019212069.tif 000008