(57)【要約】[課題]分散処理における処理単位であるタスクの処理に要する資源量を、余剰の資源を使用せずに予測できる資源予測装置を提供する。[解決手段]資源予測装置２０は、分散処理における処理単位であるタスクが処理される際に求められるタスク処理情報を入力とし、タスクが処理される際に使用される資源量を、過去のタスク処理情報と、過去のタスク処理情報に対応するタスクが処理された際に使用された資源量との関係を示す資源使用量予測モデルを用いて予測する資源使用量予測部２２を備える。
2016084327.tif 000002
【特許請求の範囲】
【請求項１】
分散処理における処理単位であるタスクが処理される際に求められるタスク処理情報を入力とし、前記タスクが処理される際に使用される資源量を、過去のタスク処理情報と、前記過去のタスク処理情報に対応するタスクが処理された際に使用された資源量との関係を示す資源使用量予測モデルを用いて予測する資源使用量予測手段を備える
資源予測装置。
【請求項２】
過去のタスク処理情報と、前記過去のタスク処理情報に対応するタスクが処理された際に使用された資源量とを入力として、資源使用量予測モデルを生成する資源使用量予測モデル生成手段を更に備える
請求項１に記載の資源予測装置。
【請求項３】
タスク処理情報には、前記タスク処理情報に対応するタスクの処理における入力データの構成に関する情報であるメタ情報と、前記タスクの処理に使用されるプログラムの構成情報とが含まれる
請求項１または請求項２記載の資源予測装置。
【請求項４】
資源使用量予測モデル生成手段は、過去のタスク処理情報と、前記過去のタスク処理情報に対応するタスクが処理された際の前記タスクの処理時間との関係を資源使用量予測モデルに反映し、
資源使用量予測手段は、入力としたタスク処理情報に対応するタスクの処理時間を前記資源使用量予測モデルを用いて予測する
請求項２記載の資源予測装置。
【請求項５】
分散処理における処理単位であるタスクが処理される際に求められるタスク処理情報を入力とし、前記タスクが処理される際に使用される資源量を、過去のタスク処理情報と、前記過去のタスク処理情報に対応するタスクが処理された際に使用された資源量との関係を示す資源使用量予測モデルを用いて予測する
資源予測方法。
【請求項６】
過去のタスク処理情報と、前記過去のタスク処理情報に対応するタスクが処理された際に使用された資源量とを入力として、資源使用量予測モデルを生成する
請求項５記載の資源予測方法。
【請求項７】
コンピュータに、
分散処理における処理単位であるタスクが処理される際に求められるタスク処理情報を入力とし、前記タスクが処理される際に使用される資源量を、過去のタスク処理情報と、前記過去のタスク処理情報に対応するタスクが処理された際に使用された資源量との関係を示す資源使用量予測モデルを用いて予測する予測処理
を実行させるための資源予測プログラムを格納する記録媒体。
【請求項８】
コンピュータに、
過去のタスク処理情報と、前記過去のタスク処理情報に対応するタスクが処理された際に使用された資源量とを入力として、資源使用量予測モデルを生成する生成処理を実行させる
請求項７記載の記録媒体。
【請求項９】
請求項１乃至４のいずれかに記載の資源予測装置と、
前記資源予測装置の分散処理における処理単位であるタスクを実行する少なくとも一つのワーカマシンと、
前記少なくとも一つのワーカマシンにおける各ワーカマシンに前記タスクを割り当てるマスタサーバと、
を備える分散処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機の資源における割当量を予測する装置等に関し、特に計算機クラスタ等で稼働する分散処理システムにおける処理割り当てに使用される資源予測装置等に関する。
【背景技術】
【０００２】
ジョブを分割することによって生成された複数のタスクが、複数の計算機（以下、処理サーバという。）に分散される分散処理システムが開発されている。分散処理システムは、タスクを処理する処理サーバと、タスクの割り当てを制御するマスタサーバとを含む。分散処理システムでは、分散された各タスクが、各処理サーバで実行される。【０００３】
タスクを実行できる状態になると、処理サーバには、分散処理システムのマスタサーバから新たなタスクが割り当てられる。割り当てられたタスクが確実に処理されるために、タスクが割り当てられた処理サーバには、タスクの処理に要する計算機資源（以下、単に「資源」と記載）を確保することが求められる。資源は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）コア、メモリ、ディスクである。資源が確保されていない場合、処理サーバのタスクの処理性能が劣化したり、タスクが途中で異常終了したりすることがある。【０００４】
処理サーバがタスクの処理に要する資源を確保するために、タスクの割り当て元であるマスタサーバには、割り当て先の処理サーバがタスクの処理に要する資源量を予め把握することが求められる。しかし、通常タスクの処理に要する資源量をタスクの実行前に把握することは困難であるため、タスクの処理に要する資源量を推定する技術が求められる。【０００５】
特許文献１〜３および非特許文献１〜２には、タスクの処理に要する資源量の推定に関連する技術が記載されている。【０００６】
特許文献１は、過去に実行されたタスクにおいて使用された資源量のログから、資源使用量と負荷値の関係を推定する技術を開示する。【０００７】
特許文献２は、プログラムが生じる負荷特性を推定するシステムを開示する。【０００８】
特許文献３は、時間区間毎の物理リソースのピーク使用量を予測する予測部を含む仮想マシン配置構成制御装置を開示する。【０００９】
非特許文献１は、ウェーブレット変換を用いて仮想マシンが使用した資源量の推移情報から資源量推移の基底関数を導出し、導出された基底関数を用いることによって将来の必要資源量を推定する技術を開示する。【００１０】
非特許文献２は、協調フィルタリングを用いて、過去のタスク実行履歴と今後割り当てる予定のタスクの短時間試験実行の結果から、サービスレベル目標（ＳＬＯ：Ｓｅｒｖｉｃｅ  Ｌｅｖｅｌ  Ｏｂｊｅｃｔｉｖｅ）を満たすために必要な資源量を推定する技術を開示する。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特許第５３５４１３８号公報
【特許文献２】国際公開第２０１１／０７１０１０号
【特許文献３】特開２０１２−１５９９２８号公報
【非特許文献】
【００１２】
【非特許文献１】Hiep Nguyen, Zhiming Shen, Xiaohui Gu, Sethuraman Subbiah, John Wilkes. “AGILE: elastic distributed resource scaling for Infrastructure-as-a-Service.” In Proc. of the 10th International Conference on Autonomic Computing (ICAC ’13), pp. 69-82, 2013.
【非特許文献２】Christina Delimitrou and Christos Kozyrakis. “Quasar: Resource-Efficient and QoS-Aware Cluster Management.” In Proc. of the 19th International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS ’14), pp.127-144, 2014.
【発明の概要】
【発明が解決しようとする課題】
【００１３】
特許文献１および特許文献２が開示する技術は、タスクが処理サーバに与える負荷を予測できるが、タスクの処理に要する資源量までは予測できない。【００１４】
特許文献３が開示する技術は、仮想マシンが使用する資源量を予測の対象にしており、分散処理におけるタスクの処理に要する資源量を予測の対象にしていない。【００１５】
非特許文献１が開示する技術は、仮想マシンにおいて稼働する処理サーバを対象にしており、分散処理のタスクを処理する処理サーバを対象にしていない。【００１６】
非特許文献２が開示する技術は、分散処理のタスクを対象にしている。しかし、非特許文献２が開示する技術を使用した場合、資源使用量の予測のために余剰な資源が求められる。その理由は、資源使用量を予測する際、非特許文献２に記載されている技術は、サーバや分散処理のタスク等の予測の対象の属性情報を、予測の都度観測するためである。予測の対象の属性情報は、例えば、処理の実行に要するメモリ量の単位時間当たりの増加率である。【００１７】
そこで、本発明は、上述した課題を解決することを目的とする。即ち、本発明は、分散処理における処理単位であるタスクの処理に要する資源量を、余剰の資源を使用せずに予測できる資源予測装置等を提供することを目的とする。
【課題を解決するための手段】
【００１８】
上記課題を解決するため、本発明の第１の特徴は、分散処理における処理単位であるタスクが処理される際に求められるタスク処理情報を入力とし、タスクが処理される際に使用される資源量を、過去のタスク処理情報と、過去のタスク処理情報に対応するタスクが処理された際に使用された資源量との関係を示す資源使用量予測モデルを用いて予測する資源使用量予測部を備える資源予測装置である。【００１９】
本発明の第２の特徴は、分散処理における処理単位であるタスクが処理される際に求められるタスク処理情報を入力とし、タスクが処理される際に使用される資源量を、過去のタスク処理情報と、過去のタスク処理情報に対応するタスクが処理された際に使用された資源量との関係を示す資源使用量予測モデルを用いて予測する資源予測方法である。【００２０】
本発明の第３の特徴は、コンピュータに、分散処理における処理単位であるタスクが処理される際に求められるタスク処理情報を入力とし、タスクが処理される際に使用される資源量を、過去のタスク処理情報と、過去のタスク処理情報に対応するタスクが処理された際に使用された資源量との関係を示す資源使用量予測モデルを用いて予測する予測処理を実行させる資源予測プログラム記録媒体である。【００２１】
本発明の第４の特徴は、資源予測装置を含み、分散処理を行う分散処理システムであって、資源予測装置は、分散処理における処理単位であるタスクが処理される際に求められるタスク処理情報を入力とし、タスクが処理される際に使用される資源量を、過去のタスク処理情報と、過去のタスク処理情報に対応するタスクが処理された際に使用された資源量との関係を示す資源使用量予測モデルを用いて予測する資源使用量予測部を含む分散処理システムである。
【発明の効果】
【００２２】
本発明によれば、分散処理における処理単位であるタスクの処理に要する資源量を、余剰の資源を使用せずに予測することが可能となる。
【図面の簡単な説明】
【００２３】
【図１】本発明の第１の実施形態に係る資源予測装置を含む分散処理システムの構成例を示すブロック図である。
【図２】分散処理システムによる学習処理の動作を示すフローチャートである。
【図３】資源使用量予測モデル生成部が受信するプログラム学習リストの一例を示す説明図である。
【図４】分散処理システムによる予測処理の動作を示すフローチャートである。
【図５】資源使用量予測部が受信するプログラム予測リストの一例を示す説明図である。
【図６】分散処理システムによる学習処理の他の動作を示すフローチャートである。
【図７】資源使用量予測モデル生成部が受信する情報が示すプログラムの処理フローの構造的特徴の一例を示す説明図である。
【図８】資源使用量予測モデル生成部が受信する入力データの一例を示す説明図である。
【図９】曜日の列で二値展開された入力データの一例を示す説明図である。
【図１０】資源使用量予測モデル生成部が生成する学習データの一例を示す説明図である。
【図１１】分散処理システムによる予測処理の他の動作を示すフローチャートである。
【図１２】資源使用量予測部が受信する入力データの一例を示す説明図である。
【図１３】本発明の第２の実施形態に係る資源予測装置の概要を示すブロック図である。
【図１４】本発明の第２の実施形態に係る資源予測装置を含む分散処理システムの概要を示すブロック図である。
【図１５】分散処理システムによる学習処理の動作を示すフローチャートである。
【図１６】分散処理システムによる予測処理の動作を示すフローチャートである。
【図１７】本発明の実施形態に係る資源予測装置等を実施可能な情報処理装置の概要を示すブロック図である。
【発明を実施するための形態】
【００２４】
＜第１の実施形態＞
［構成の説明］
以下、本発明の第１の実施形態を、図面を参照して説明する。図１は、本実施形態に係る資源予測装置２００を含む分散処理システム１００の構成例を示すブロック図である。図１に示す分散処理システム１００は、資源予測装置２００と、マスタサーバ３００と、ワーカマシン４０１〜４０２とを含む。
【００２５】
本実施形態における資源予測装置２００は、図１に示すように、１台以上の計算機（マスタサーバ３００、ワーカマシン４０１〜４０２等）で構成された分散処理システムにおいて動作する。なお、資源予測装置２００は、分散処理システムに含まれずに、対象にする分散処理システムの外部に設けられていてもよい。分散処理システムの外部に設けられている場合、資源予測装置２００は、対象にする分散処理システムと通信可能に接続する。
【００２６】
また、本実施形態における分散処理システム１００は、図１に示すように、マスタサーバ３００と、複数台のワーカマシン４０１〜４０２とを含む。
【００２７】
マスタサーバ３００は、ワーカマシン４０１〜４０２にタスクを割り当てる機能を有する。ワーカマシン４０１〜４０２は、マスタサーバ３００から割り当てられたタスクを実行し、処理結果を出力する機能を有する。
【００２８】
なお、分散処理システム１００は、マスタサーバを１台以上含んでもよい。また、分散処理システム１００は、冗長化された複数台のマスタサーバを含んでもよい。また、ピアツーピア（Ｐ２Ｐ：Ｐｅｅｒ  ｔｏ  Ｐｅｅｒ）システムのように、分散処理システム１００におけるマスタサーバ３００とワーカマシン４０１〜４０２は、区別されていなくてもよい。
【００２９】
図１に示すように、資源予測装置２００は、資源使用量予測モデル生成部２０１と、資源使用量予測部２０２とを含む。
【００３０】
資源使用量予測モデル生成部２０１は、資源使用量の予測モデルを出力する機能を有する。資源使用量予測モデル生成部２０１は、処理の特徴を示す情報と、処理が行われた際に観測される情報とをマスタサーバ３００からの入力として受け付ける。次いで、資源使用量予測モデル生成部２０１は、受け付けた情報に基づいて、機械学習アルゴリズム等を用いて計算を行い、資源使用量の予測モデルを生成する。
【００３１】
処理の特徴を示す情報は、例えば、処理対象である入力データのメタ情報と、処理プログラムの構成情報である。処理が行われた際に観測される情報は、例えば、処理に要した資源量と、処理時間等の性能値である。
【００３２】
入力データのメタ情報は、例えば、行列形式の入力データにおける列ラベル、行数や列数といったデータサイズに関する情報、各列の平均値、分散、最大値、最小値、濃度である。
【００３３】
処理プログラムの構成情報は、例えば、起動対象のプログラムに与えられる引数、設定ファイルで指定された値、プログラムコードに現れるシンボル名、呼び出される関数の種類と呼び出される回数である。
【００３４】
処理に要した資源量は、例えば、ＣＰＵ使用率、ＣＰＵコア使用数、メモリ使用量、ディスク使用量、ディスクＩ／Ｏの発生頻度、単位時間当たりの読み書き量、通信ネットワーク送受信量、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等のアクセラレータの使用率である。
【００３５】
資源使用量予測モデル生成部２０１が出力する資源使用量の予測モデルは、例えば、線形結合された関数式や、分岐条件を示す式や、この二つの式が組み合わせられた式である。
【００３６】
資源使用量予測モデル生成部２０１は、予測モデルを導出する際に使用する学習アルゴリズムに様々な種類のアルゴリズムを使用できる。例えば、資源使用量予測モデル生成部２０１は、重回帰分析を用いて予測モデルを導出できる。また、資源使用量予測モデル生成部２０１は、回帰木を用いてタスクを分類し、分類により生成されたそれぞれのタスク集合に対して重回帰分析を行うことによっても予測モデルを導出できる。本実施形態は、資源使用量予測モデル生成部２０１が用いる機械学習アルゴリズムによって限定されない。
【００３７】
なお、資源使用量予測モデル生成部２０１は、必要に応じて、分散処理システム１００の稼働中に生成した資源使用量の予測モデルを随時更新し、更新の都度予測モデルを資源使用量予測部２０２に出力してもよい。
【００３８】
資源使用量予測部２０２は、処理の特徴を示す情報をマスタサーバ３００からの入力として受け付け、処理に要する資源量や処理時間等の性能値等、処理が行われた際に観測される指標の予測値を計算し、出力する機能を有する。資源使用量予測部２０２は、資源使用量予測モデル生成部２０１が出力した資源使用量の予測モデルを用いて、処理が行われた際に観測される指標の予測値を計算する。
【００３９】
なお、本実施形態の資源予測装置２００は、例えば、記憶媒体に格納されているプログラムに従って処理を実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）によって実現される。また、資源予測装置２００は、ハードウェアによって実現されてもよい。
【００４０】
また、資源使用量予測モデル生成部２０１および資源使用量予測部２０２は、例えば、プログラム制御に従って処理を実行するＣＰＵによって実現される。
【００４１】
［動作の説明］
以下、本実施形態の分散処理システム１００の動作を、図面を参照して説明する。分散処理システム１００の動作は、学習処理と、予測処理とで構成される。
【００４２】
学習処理は、処理の特徴を示す情報と、処理が実施された際に観測された指標値との関係を特定する処理である。予測処理は、処理の特徴を示す情報から、処理が実施された際に観測される指標値を予測する処理である。分散処理システム１００は、各処理を非同期に実施できる。
【００４３】
最初に、図１５のフローチャートを参照して、学習処理を説明する。分散処理システム１００の利用者は、実行したいジョブをマスタサーバ３００に送信し、マスタサーバ３００がこのジョブを受信する（ステップＳ１）。送信されるジョブには、例えば、処理プログラムとプログラムへの入力データが含まれる。
【００４４】
分散処理システム１００のマスタサーバ３００は、分散処理システム１００の利用者が送信した入力データと処理プログラムから、処理の特徴を示す情報を抽出する。次いで、マスタサーバ３００は、処理が実行された際に観測された情報を収集する。
【００４５】
具体的には、マスタサーバ３００は、利用者から与えられたジョブを複数のタスクに分割し、分割されたタスクを各ワーカマシンに割り当てる。そして、マスタサーバ３００は、各ワーカマシンから、タスクを実行した際に観測された資源使用量等を受信する（ステップＳ２）。
【００４６】
マスタサーバ３００は、ステップＳ１〜Ｓ２で取得した情報を資源使用量予測モデル生成部２０１に与える（ステップＳ３）。例えば、マスタサーバ３００は、入力データのメタ情報、処理プログラムの構成情報および資源使用量の観測値を、資源使用量予測モデル生成部２０１に送信する。
【００４７】
上記のように、分散処理システム１００のマスタサーバ３００は、処理の特徴を示す情報の抽出や、処理が実行された際に観測された情報の収集を行う。マスタサーバ３００は、取得した情報を資源使用量予測モデル生成部２０１に与える。なお、ステップＳ１〜Ｓ３における処理を行う主体は、マスタサーバ３００でなくてもよい。
【００４８】
例えば、処理の特徴を示す情報の抽出は、分散処理システム１００の利用者が行ってもよい。また、処理が実行された際に観測された情報の収集は、マスタサーバ３００の代わりに、ワーカマシン４０１〜４０２が行ってもよい。その場合、ワーカマシン４０１〜４０２は、収集した情報を直接資源使用量予測モデル生成部２０１に送信する。
【００４９】
資源使用量予測モデル生成部２０１は、処理の特徴を示す情報と、処理が実行された際に観測された情報とを入力として受け付ける。次いで、資源使用量予測モデル生成部２０１は、受け付けた情報に基づいて計算を行い、資源使用量の予測モデルを生成する。
【００５０】
資源使用量予測モデル生成部２０１は、生成した資源使用量の予測モデルを資源使用量予測部２０２に出力する（ステップＳ４）。出力した後、分散処理システム１００は、学習処理を終了する。
【００５１】
次に、図１６のフローチャートを参照して、予測処理を説明する。分散処理システム１００の利用者は、実行したいジョブをマスタサーバ３００に送信し、マスタサーバ３００がこのジョブを受信する（ステップＳ５）。送信されるジョブは、ステップＳ１で送信されたジョブと同じでなくてもよい。
【００５２】
マスタサーバ３００は、分散処理システム１００の利用者から与えられたジョブを複数のタスクに分割し、分割されたタスクを各ワーカマシンに割り当てる。ここで、分割されたタスクが割り当てられる際、マスタサーバ３００がタスクの処理に要する資源量や処理の性能値等を考慮する場合を想定する。
【００５３】
本実施形態におけるマスタサーバ３００は、利用者から実行を指示された処理（ジョブ）の特徴を示す情報を資源使用量予測部２０２に与える。具体的には、マスタサーバ３００は、入力データのメタ情報と処理プログラムの構成情報を資源使用量予測部２０２に送信する（ステップＳ６）。
【００５４】
資源使用量予測部２０２は、処理の特徴を示す情報を入力として受け付ける。次いで、資源使用量予測部２０２は、資源使用量予測モデル生成部２０１が出力した資源使用量の予測モデルを用いて、入力情報を基に処理が行われた際に観測される指標の予測値を計算する。資源使用量予測部２０２は、計算した予測値をマスタサーバ３００に対して送信する（ステップＳ７）。
【００５５】
マスタサーバ３００は、資源使用量予測部２０２が送信した、使用資源量や処理時間等の、処理が実行された際に観測される指標の予測値を受信する。
【００５６】
マスタサーバ３００は、受信した予測値に基づいて、割り当てる処理を選択し、割り当て先のワーカマシンを選択する。また、マスタサーバ３００は、受信した予測値を用いて、ワーカマシンへのタスク割り当てと資源の配分を同時に実施してもよい（ステップＳ８）。タスク割り当て等が行われた後、分散処理システム１００は、予測処理を終了する。
【００５７】
本実施形態における資源予測装置２００は、資源使用量予測部２０２がタスクの処理に要する資源量を、資源使用量の予測モデルを用いて、精度よく推定することによって、タスクを処理するワーカマシンに対して割り当てられる資源量を最小の量にすることができる。余分な資源量がワーカマシンに割り当てられない場合、分散処理システム全体における資源の利用効率が向上する。従って、分散処理システムは、例えば、資源の利用効率が最大になるように各ワーカマシンに資源を割り当てることによって、同時に実行できるタスク数を増加させることができ、結果的にタスクの集合であるジョブの完了時間を早めることができる。
【００５８】
また、本実施形態における資源予測装置２００は、余剰の資源を使用せずに資源使用量を予測できる。その理由は、資源使用量予測モデル生成部２０１が、タスクの属性情報と、分散処理システムでタスクが実行された際に観測された資源使用量との関係を示す予測モデルを構築し、システム稼働中に予測モデルを随時更新するためである。また、資源使用量予測部２０２が、構築された予測モデルを用いて資源使用量を予測するためである。すなわち、予測の際に改めて属性情報と資源使用量との関係を計算しなくてもよいため、資源予測装置２００は、余剰の資源を使用しない。
【００５９】
（具体例１）
本具体例における資源予測装置２００では、資源使用量予測モデル生成部２０１が、入力データサイズおよびプログラムの種類とメモリ使用量との関係を学習して数理モデルを生成する。さらに、本具体例における資源予測装置２００では、資源使用量予測部２０２が、資源使用量予測モデル生成部２０１の生成した数理モデルを用いて、処理の実行に要するメモリ量を予測する。
【００６０】
本具体例における資源使用量予測モデル生成部２０１は、ユーザが実行を指示した処理における入力データのサイズとプログラムの種類を示す情報を、マスタサーバ３００等から受信する。また、本具体例における資源使用量予測モデル生成部２０１は、ユーザが実行を指示した処理がワーカマシンで実行された際に使用されたメモリ量の情報を、マスタサーバ３００等から受信する。
【００６１】
最初に、本具体例における分散処理システム１００による具体的な学習処理を、図２を参照して説明する。図２は、分散処理システム１００による学習処理の動作を示すフローチャートである。
【００６２】
本具体例における資源使用量予測モデル生成部２０１は、受信したプログラムリストに含まれるプログラム情報を、プログラムの種類で分類する（ステップＳ１１１）。
【００６３】
本具体例における資源使用量予測モデル生成部２０１が受信するプログラム学習リストの例を図３に示す。図３は、資源使用量予測モデル生成部２０１が受信するプログラム学習リストの一例を示す説明図である。
【００６４】
図３に示すプログラム学習リストを構成する各プログラム学習情報は、プログラムの種類と、入力データのサイズと、メモリ使用量とで構成される。プログラムの種類は、学習対象になるプログラムの種類である。
【００６５】
入力データのサイズは、学習対象のプログラムに対して入力されたデータのサイズであり、図３に示す値はサンプル数を意味する。メモリ使用量は、学習対象のプログラムに対して入力データのサイズが示す大きさのデータが入力され、プログラムが実行された際に使用されたメモリ量であり、図３に示す値の単位はキロバイト（ＫＢ）である。
【００６６】
図３に示すプログラムリストには、「回帰分析Ａ」というプログラムと、「判別分析Ｂ」というプログラムに関するプログラム情報が含まれている。プログラム情報には、サンプル数で示される入力データのサイズの情報と、メモリ使用量の情報が含まれている。
【００６７】
次いで、資源使用量予測モデル生成部２０１は、受信したプログラムリストから分類されたプログラムの種類ごとに単回帰分析を行う（ステップＳ１１３）。単回帰分析を行うことによって、資源使用量予測モデル生成部２０１は、入力データのサイズとメモリ使用量との関係を示す予測モデルを生成する。
【００６８】
例えば、図３に示すプログラムリストが受信された場合、資源使用量予測モデル生成部２０１が生成する回帰分析Ａに関する予測モデルは、サンプル数をｘ、メモリ使用量をｙとすると、ｙ＝５．６６３８ｘ＋５１１３０になる。
【００６９】
資源使用量予測モデル生成部２０１は、受信したプログラムリストから分類された全てのプログラムの種類に対して、予測モデルを生成する（ステップＳ１１２）。全ての予測モデルを生成した場合（ステップＳ１１４における判定条件が成立）、資源使用量予測モデル生成部２０１は、生成した予測モデルを資源使用量予測部２０２に出力する。出力した後、資源使用量予測モデル生成部２０１は、学習処理を終了する。
【００７０】
次に、本具体例における分散処理システム１００による具体的な予測処理を、図４を参照して説明する。図４は、分散処理システム１００による予測処理の動作を示すフローチャートである。
【００７１】
本具体例における資源使用量予測部２０２は、資源使用量予測モデル生成部２０１が生成した予測モデルを用いて、プログラムの種類と入力データのサイズから、メモリ使用量を予測する。資源使用量予測部２０２は、受信したプログラム予測リストに含まれるプログラム予測情報が示すプログラムの種類に対応する予測モデルを選択する（ステップＳ１２１）。
【００７２】
本具体例における資源使用量予測部２０２が受信するプログラム予測リストの例を図５に示す。図５は、資源使用量予測部２０２が受信するプログラム予測リストの一例を示す説明図である。
【００７３】
図５に示すプログラム予測リストを構成する各プログラム予測情報は、プログラムの種類と、入力データのサイズとで構成される。プログラムの種類は、予測対象になるプログラムの種類である。入力データのサイズは、予測対象のプログラムに対して入力される予定のデータのサイズであり、図５に示す値はサンプル数を意味する。
【００７４】
例えば、図５に示すプログラム予測リストの最初のプログラム予測情報のプログラムの種類は回帰分析Ａであるため、資源使用量予測部２０２は、最初のプログラム予測情報に対応する予測処理において回帰分析Ａ用の予測モデルを選択する。
【００７５】
次いで、資源使用量予測部２０２は、予測モデルに対して入力データのサイズを与え、メモリ使用量の予測値を計算する（ステップＳ１２２）。
【００７６】
例えば、図５に示すプログラム予測リストの最初のプログラム予測情報の入力データのサイズｘは、ｘ＝１５００である。回帰分析Ａ用の予測モデルがｙ＝５．６６３８ｘ＋５１１３０である場合、最初のプログラム予測情報に対応する処理において使用されるメモリ量ｙは、５．６６３８×１５００＋５１１３０＝５９６２５．７（ＫＢ）になる。
【００７７】
次いで、資源使用量予測部２０２は、予測したメモリ使用量をマスタサーバ３００に送信する。マスタサーバ３００は、送信された予測値に基づいて、処理を割り当てることができるワーカマシンを選択したり、処理の実行に使用されるメモリ量を制限するように指示したりする。予測値を送信した後、資源使用量予測部２０２は、予測処理を終了する。
【００７８】
（具体例２）
本具体例における資源予測装置２００では、資源使用量予測モデル生成部２０１が、プログラムの処理フローの構造的特徴および入力データのメタ情報と、ディスク使用量との関係を学習して数理モデルを生成する。さらに、本具体例における資源予測装置２００では、資源使用量予測部２０２が、資源使用量予測モデル生成部２０１の生成した数理モデルを用いて、処理の実行に要するディスク量を予測する。
【００７９】
本具体例における資源使用量予測モデル生成部２０１は、ユーザが実行を指示したプログラムの処理フローの構造的特徴を示す情報と入力データのメタ情報を示す情報を、マスタサーバ３００等から受信する。また、本具体例における資源使用量予測モデル生成部２０１は、ユーザが実行を指示したプログラムがワーカマシンで実行された際に使用されたディスク量の情報を、マスタサーバ３００等から受信する。
【００８０】
最初に、本具体例における分散処理システム１００による具体的な学習処理を、図６を参照して説明する。図６は、分散処理システム１００による学習処理の他の動作を示すフローチャートである。
【００８１】
本具体例における資源使用量予測モデル生成部２０１は、受信した情報が示すプログラムの処理フローの構造的特徴を解釈して、処理の単位と処理対象の種類を抽出する（ステップＳ２１１）。
【００８２】
図７は、資源使用量予測モデル生成部２０１が受信する情報が示すプログラムの処理フローの構造的特徴の一例を示す説明図である。図７には、プログラムの処理フローの構造的特徴が、無閉路有向グラフで示されている。
【００８３】
図７に示す処理フローは、対応するプログラムにおいて、入力データの読み込み処理、対象属性として指定された列の値に対する二値展開処理、二値展開処理により生成されたデータの出力処理の順に処理が行われることを意味する。ここで、本具体例における二値展開処理は、列の値に対して、指定された値であるか否かを示すバイナリ値の列を追加する処理に相当する。
【００８４】
本具体例における資源使用量予測モデル生成部２０１は、図７に示す無閉路有向グラフの内容が含まれる情報から、プログラムの処理の単位として「データ読み込み」、「二値展開」、「結合と書き出し」の３種類があることを抽出する。また、資源使用量予測モデル生成部２０１は、二値展開の対象の列が「曜日」であることも抽出する。
【００８５】
次いで、資源使用量予測モデル生成部２０１は、上記の抽出された情報と入力データのメタ情報から、処理に関する属性情報を生成する（ステップＳ２１３）。
【００８６】
図８は、資源使用量予測モデル生成部２０１が受信する入力データの一例を示す説明図である。図８に示す入力データは、時刻と、気温と、曜日と、消費電力量とで構成される。
【００８７】
本具体例では、入力データのメタ情報として、入力データサイズと、列の名前と、列のデータサイズとが求められる。また、図８に示す入力データがプログラムに入力される場合、曜日列の値の種類数が求められる。図８に示す入力データにおいて、曜日列の値の種類数は、曜日列の値が月、火、土の３種類であることから、３になる。
【００８８】
図８に示す入力データが、曜日の列で二値展開されたデータの例を図９に示す。図９は、曜日の列で二値展開された入力データの一例を示す説明図である。図９に示す入力データは、時刻と、気温と、指定された曜日であるか否かを示すバイナリ値と、消費電力量とで構成される。
【００８９】
例えば、図８に示す最初の行の入力データにおいて、曜日の値は「月」である。よって、図９に示す最初の行の入力データにおいて、判定内容が「月曜日か？」に対するバイナリ値はTrueになる。同様に、判定内容が「火曜日か？」および「土曜日か？」に対するバイナリ値はFalseになる。
【００９０】
資源使用量予測モデル生成部２０１は、受信するプログラムの処理フローの全ての処理の単位に対して、属性情報を生成する（ステップＳ２１２）。全ての属性情報を生成した場合（ステップＳ２１４における判定条件が成立）、資源使用量予測モデル生成部２０１は、生成された属性情報に、処理に要したディスク量の情報を結合することによって、学習データを生成する。
【００９１】
図１０は、資源使用量予測モデル生成部２０１が生成する学習データの一例を示す説明図である。図１０に示す学習データは、入力データサイズと、二値展開対象列の数と、二値展開対象列の値の種類と、一列当たりのデータサイズと、ディスク使用量とで構成される。資源使用量予測モデル生成部２０１は、例えば、図１０に示す学習データを用いて、ディスク使用量の予測モデルを生成する（ステップＳ２１５）。
【００９２】
本具体例において、資源使用量予測モデル生成部２０１は、二値展開対象列の数をｘ１、二値展開対象列の値の種類をｘ２、一列当たりのデータサイズをａ、入力データサイズをｂ、ディスク使用量をｙとした場合、ｙ＝ａ×ｘ２−ａ×ｘ１＋ｂという予測モデルを出力する。出力された予測モデルは、入力データサイズｂに、二値展開された際に増加するデータサイズ（ａ×ｘ２−ａ×ｘ１）が加えられたデータサイズが、ディスク使用量に相当することを意味する。
【００９３】
資源使用量予測モデル生成部２０１は、生成した予測モデルを資源使用量予測部２０２に出力する。出力した後、資源使用量予測モデル生成部２０１は、学習処理を終了する。
【００９４】
次に、本具体例における分散処理システム１００による具体的な予測処理を、図１１を参照して説明する。図１１は、分散処理システム１００による予測処理の他の動作を示すフローチャートである。
【００９５】
本具体例における資源使用量予測部２０２は、資源使用量予測モデル生成部２０１が生成した予測モデルを用いて、ディスク使用量を予測する。ディスク使用量を予測する際、資源使用量予測部２０２は、ユーザが実行を指示したプログラムの処理フローの構造的特徴を示す情報と入力データのメタ情報を示す情報を入力とする（ステップＳ２２１）。
【００９６】
図１２は、資源使用量予測部２０２が受信する入力データの一例を示す説明図である。資源使用量予測部２０２は、予測モデルに対して入力データサイズ、二値展開対象列の数、二値展開対象列の値の種類、一列当たりのデータサイズを与え、ディスク使用量の予測値を計算する。
【００９７】
ディスク使用量の予測モデルがｙ=ａ×ｘ２−ａ×ｘ１＋ｂである場合を例に、ディスク使用量の予測値の計算例を説明する。ここで、予測モデルにおけるｘ１は二値展開対象列の数、ｘ２は二値展開対象列の値の種類、ａは一列当たりのデータサイズ、ｂは入力データサイズ、ｙはディスク使用量である。
【００９８】
図１２に示す最初の行の入力データに対応する処理の場合、ディスク使用量の予測値ｙ１は、ｙ１＝８×７３−８×４＋１００＝６５２（ＫＢ）になる。また、図１２に示す二番目の行の入力データに対応する処理の場合、ディスク使用量の予測値ｙ２は、ｙ２＝１×２５−１×２＋２５＝４８（ＫＢ）になる。
【００９９】
次いで、資源使用量予測部２０２は、予測したディスク使用量をマスタサーバ３００に送信する。マスタサーバ３００は、送信された予測値に基づいて、処理を割り当てることができるワーカマシンを選択したり、処理に使用されるディスク量の制限を指示したりする。予測値を送信した後、資源使用量予測部２０２は、予測処理を終了する。
上述のように、本発明の第１の実施形態によると、分散処理における処理単位であるタスクの処理に要する資源量を、余剰の資源を使用せずに予測することができる。この理由は、資源使用量予測部２０２が、分散処理における処理単位であるタスクが処理される際に求められるタスク処理情報を入力とし、タスクが処理される際に使用される資源量を予測するからである。当該予測には、過去のタスク処理情報と、過去のタスク処理情報に対応するタスクが処理された際に使用された資源量との関係を示す資源使用量の予測モデルが用いられる。
【０１００】
＜第２の実施形態＞
本発明の第２の実施形態に係る資源予測装置２０について、図１３を参照して説明する。本実施形態における資源予測装置２０は、資源使用量予測部２２（例えば、資源使用量予測部２０２）を備える。資源使用量予測部２２は、分散処理における処理単位であるタスクが処理される際に求められるタスク処理情報を入力とし、タスクが処理される際に使用される資源量を、過去のタスク処理情報と、過去のタスク処理情報に対応するタスクが処理された際に使用された資源量との関係を示す資源使用量の予測モデルを用いて予測する。
【０１０１】
そのような構成により、資源予測装置は、分散処理における処理単位であるタスクの処理に要する資源量を、余剰の資源を使用せずに予測できる。
【０１０２】
また、資源予測装置２０は、過去のタスク処理情報と、過去のタスク処理情報に対応するタスクが処理された際に使用された資源量とを入力として、資源使用量の予測モデルを生成する資源使用量予測モデル生成部（例えば、資源使用量予測モデル生成部２０１）を備えてもよい。
【０１０３】
そのような構成により、資源予測装置２０は、過去のタスク処理情報と、過去のタスク処理情報に対応するタスクが処理された際に観測された資源の使用量との関係を示す資源使用量の予測モデルを作成できる。
【０１０４】
また、タスク処理情報には、タスク処理情報に対応するタスクの処理における入力データの構成に関する情報であるメタ情報と、タスクの処理に使用されるプログラムの構成情報とが含まれていてもよい。
【０１０５】
そのような構成により、資源予測装置２０は、タスクの処理における入力データの構成に関する情報であるメタ情報と、タスクの処理に使用されるプログラムの構成情報とに基づいて、資源の使用量を予測できる。
【０１０６】
また、資源使用量予測モデル生成部は、過去のタスク処理情報と、過去のタスク処理情報に対応するタスクが処理された際のタスクの処理時間との関係を資源使用量の予測モデルに反映し、資源使用量予測部２２は、入力としたタスク処理情報に対応するタスクの処理時間を、資源使用量の予測モデルを用いて予測してもよい。
【０１０７】
そのような構成により、資源予測装置は、分散処理における処理単位であるタスクの処理時間を予測できる。
【０１０８】
本実施形態における資源予測装置２０は、図１４に示すように分散処理システム１０に含まれていてもよい。分散処理システム１０は、資源予測装置２０を含み、分散処理を行う分散処理システムである。資源予測装置２０は、資源使用量予測部２２（例えば、資源使用量予測部２０２）を含む。資源使用量予測部２２は、分散処理における処理単位であるタスクが処理される際に求められるタスク処理情報を入力とし、タスクが処理される際に使用される資源量を、過去のタスク処理情報と、過去のタスク処理情報に対応するタスクが処理された際に使用された資源量との関係を示す資源使用量の予測モデルを用いて予測する。
【０１０９】
そのような構成により、分散処理システムは、分散処理における処理単位であるタスクの処理に要する資源量を、余剰の資源を使用せずに予測できる。
【０１１０】
また、資源予測装置２０は、過去のタスク処理情報と、過去のタスク処理情報に対応するタスクが処理された際に使用された資源量とを入力として、資源使用量の予測モデルを生成する資源使用量予測モデル生成部（例えば、資源使用量予測モデル生成部２０１）を備えてもよい。
【０１１１】
そのような構成により、分散処理システムは、過去のタスク処理情報と、過去のタスク処理情報に対応するタスクが処理された際に観測された資源の使用量との関係を示す資源使用量予測モデルを作成できる。
本発明の各実施形態において、各装置（システム）の各構成要素 は、機能単位のブロックを示している。各装置（システム）の各構成要素の一部又は全部は、例えば図１７に示すような情報処理装置５００とプログラムとの任意の組み合わせにより実現される。情報処理装置５００は、一例として、以下のような構成を含む。
・ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）５０１
・ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）５０２
・ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）５０３
・ＲＡＭ５０３にロードされるプログラム５０４
・プログラム５０４を格納する記憶装置５０５
・記録媒体５０６の読み書きを行うドライブ装置５０７
・通信ネットワーク５０９と接続する通信インターフェース５０８
・データの入出力を行う入出力インターフェース５１０
・各構成要素を接続するバス５１１
各実施形態における各装置の各構成要素は、これらの機能を実現するプログラム５０４をＣＰＵ５０１が取得して実行することで実現される。各装置の各構成要素の機能を実現するプログラム５０４は、例えば、予め記憶装置５０５やＲＡＭ５０３に格納されており、必要に応じてＣＰＵ５０１が読み出す。なお、プログラム５０４は、通信ネットワーク５０９を介してＣＰＵ５０１に供給されてもよいし、予め記録媒体５０６に格納されており、ドライブ装置５０７が当該プログラムを読み出してＣＰＵ５０１に供給してもよい。
各装置の実現方法には、様々な変形例がある。例えば、各装置は、構成要素毎にそれぞれ別個の情報処理装置５００とプログラムとの任意の組み合わせにより実現されてもよい。また、各装置が備える複数の構成要素が、一つの情報処理装置５００とプログラムとの任意の組み合わせにより実現されてもよい。
また、各装置の各構成要素の一部又は全部は、その他の汎用または専用の回路 、プロセッサ等やこれらの組み合わせによって実現される。これらは、単一のチップ によって構成されてもよいし、バスを介して接続される複数のチップ によって構成されてもよい。
各装置の各構成要素の一部又は全部は、上述した回路等とプログラムとの組み合わせによって実現されてもよい。
各装置の各構成要素の一部又は全部が複数の情報処理装置や回路等により実現される場合には、複数の情報処理装置や回路等は、集中配置されてもよいし、分散配置されてもよい。例えば、情報処理装置や回路等は、クライアントアンドサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。
以上、上述した実施形態を模範的な例として本発明を説明した。しかしながら、本発明は、上述した実施形態には限定されない。即ち、本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
この出願は２０１４年１１月２７日に出願された日本出願特願２０１４−２３９４６５を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【０１１２】
１０、１００  分散処理システム
２０、２００  資源予測装置
２０１  資源使用量予測モデル生成部
２２、２０２  資源使用量予測部
３００  マスタサーバ
４０１〜４０２  ワーカマシン
【図１】
2016084327.tif 000003
【図２】
2016084327.tif 000004
【図３】
2016084327.tif 000005
【図４】
2016084327.tif 000006
【図５】
2016084327.tif 000007
【図６】
2016084327.tif 000008
【図７】
2016084327.tif 000009
【図８】
2016084327.tif 000010
【図９】
2016084327.tif 000011
【図１０】
2016084327.tif 000012
【図１１】
2016084327.tif 000013
【図１２】
2016084327.tif 000014
【図１３】
2016084327.tif 000015
【図１４】
2016084327.tif 000016
【図１５】
2016084327.tif 000017
【図１６】
2016084327.tif 000018
【図１７】
2016084327.tif 000019
【手続補正書】
【提出日】平成29年5月18日(2017.5.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項７
【補正方法】変更
【補正の内容】
【請求項７】
コンピュータに、
分散処理における処理単位であるタスクが処理される際に求められるタスク処理情報を入力とし、前記タスクが処理される際に使用される資源量を、過去のタスク処理情報と、前記過去のタスク処理情報に対応するタスクが処理された際に使用された資源量との関係を示す資源使用量予測モデルを用いて予測する予測処理
を実行させるための資源予測プログラム。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項８
【補正方法】変更
【補正の内容】
【請求項８】
コンピュータに、
過去のタスク処理情報と、前記過去のタスク処理情報に対応するタスクが処理された際に使用された資源量とを入力として、資源使用量予測モデルを生成する生成処理を実行させる
請求項７記載の資源予測プログラム。
【国際調査報告】
2016084327.tif 000020
2016084327.tif 000021