JP2017117048A - 制御プログラム、制御装置、および制御方法 - Google Patents

制御プログラム、制御装置、および制御方法 Download PDF

Info

Publication number
JP2017117048A
JP2017117048A JP2015249469A JP2015249469A JP2017117048A JP 2017117048 A JP2017117048 A JP 2017117048A JP 2015249469 A JP2015249469 A JP 2015249469A JP 2015249469 A JP2015249469 A JP 2015249469A JP 2017117048 A JP2017117048 A JP 2017117048A
Authority
JP
Japan
Prior art keywords
task
size
time
area
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2015249469A
Other languages
English (en)
Other versions
JP6485343B2 (ja
Inventor
松田 雄一
Yuichi Matsuda
雄一 松田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2015249469A priority Critical patent/JP6485343B2/ja
Publication of JP2017117048A publication Critical patent/JP2017117048A/ja
Application granted granted Critical
Publication of JP6485343B2 publication Critical patent/JP6485343B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】メモリ割り当て変更の要否を適切に判断すること。【解決手段】制御装置101は、実行装置102から、実行装置102のメモリが有する記憶領域から割り当てられた、処理用領域mpのサイズおよび転送用領域mtのサイズを取得する。次に、図1Bの(2)で示すように、制御装置101は、実行時間Ta、Tbを算出し、実行時間Tbから実行時間Taを減じた時間rtを算出する。時間rtは、メモリの割り当て変更にかかる時間を考慮した場合における、使用量uに基づき転送用領域mtのサイズを変更した場合にタスク111を繰り返し実行する、すなわち、データ処理の実行の際にかかる時間が短縮する時間である。そして、図1Bの(3)で示すように、制御装置101は、時間rtに基づいて、メモリの割り当てを変更するか否かを判断する。【選択図】図1B

Description

本発明は、制御プログラム、制御装置、および制御方法に関する。
従来、ディスク等の外部のI/O(Input/Output)を伴わず、内部メモリを用いてデータ処理を行う、インメモリ型のデータ処理と呼ばれる技術がある。さらに、インメモリ型のデータ処理を、JavaVM(JVM:Java Virtual Machine Javaは登録商標)に実行させる技術がある。また、インメモリ型のデータ処理では、データ処理のタスクを実行するマシンのメモリから割り当てられた、タスクを繰り返し実行する際にタスクによって用いられる処理用領域と、タスクの実行結果を転送する転送用領域とが用いられる。
関連する先行技術として、例えば、内蔵メモリと外部メモリの利用状況の変化を計測した計測結果を基に、内蔵メモリの構成を変更、内蔵メモリと外部メモリに格納されたデータを移動、内蔵メモリまたは外部メモリの領域を変更するものがある。また、所定時間においてCPU(Central Processing Unit)が全CPUに割り当て可能な部分から確保したメモリ量に基づきCPUのメモリ需要予測量を求め、求めた予測量に基づき全CPUに割り当て可能な部分から確保したメモリを所定のCPUのみに割り当てられた部分に移す技術がある。また、並列計算機上でリモートメモリ書き込みによりデータ転送する際に、各計算機上のデータ転送用のメモリ領域を、予め通信相手ごとに固定された領域と動的に割り当てられる領域とに分割し、転送データ長によってこれら領域を使い分ける技術がある。送受信データ領域として使用するためのページ固定領域を、各ノードのオペレーティング・システムの起動時に設定したサイズに基づいて、各ノードの物理アドレス空間上に確保する技術がある。
国際公開第2011/045931号 特開平10−320358号公報 特開平10−143486号公報 特開平6−110845号公報
しかしながら、従来技術によれば、インメモリ型のデータ処理において、メモリの割り当て変更の要否を判断することが難しい。例えば、データ処理のタスクの実行結果のデータサイズが転送用領域のサイズを超えると、ディスクへの書き出しが行われることになり、ディスクに書き出す分、データ処理にかかる時間が増加する。そこで、転送用領域の割り当て量を変更するにしても、割り当て変更のためにタスクを実行するJVMを再起動するといった時間がかかる。従って、メモリ割り当ての変更を行ったとしても、データ処理にかかる時間の増加を抑えることができるとは限らない。
1つの側面では、本発明は、メモリ割り当て変更の要否を適切に判断することができる制御プログラム、制御装置、および制御方法を提供することを目的とする。
本発明の一側面によれば、メモリが有する記憶領域のうち、タスクを繰り返し実行する際にタスクによって用いられる処理用領域のサイズおよびタスクの実行結果を転送する転送用領域のサイズを取得し、タスクを実行した際に使用されたタスクが用いた処理用領域の使用量と、取得した処理用領域のサイズおよび転送用領域のサイズとに基づいて、使用量に基づき転送用領域のサイズを変更した場合にタスクを繰り返し実行する際にかかる時間が短縮する短縮時間を算出し、算出した短縮時間と、メモリの割り当て変更にかかる時間とに基づいて、メモリの割り当てを変更するか否かを判断する制御プログラム、制御装置、および制御方法が提案される。
本発明の一態様によれば、メモリ割り当て変更の要否を適切に判断することができるという効果を奏する。
図1Aは、本実施の形態にかかる制御装置101の動作例を示す説明図(その1)である。 図1Bは、本実施の形態にかかる制御装置101の動作例を示す説明図(その2)である。 図2は、インメモリ型データ処理システム200の構成例を示す説明図である。 図3は、マスタマシン201のハードウェア構成例を示す説明図である。 図4は、マスタマシン201の機能構成例を示すブロック図である。 図5は、単一マシンがデータ処理を行う場合のタスク111の割り当て例を示す説明図である。 図6は、単一マシンにおけるデータ処理手順の一例を示すフローチャートである。 図7は、複数マシンでデータ処理を行う場合のタスク111の割り当て例を示す説明図である。 図8は、複数マシンでデータ処理を行う場合のタスク111の実行例を示す説明図である。 図9は、複数マシンにおけるデータ処理手順の一例を示すフローチャートである。
以下に図面を参照して、開示の制御プログラム、制御装置、および制御方法の実施の形態を詳細に説明する。
図1A、図1Bは、本実施の形態にかかる制御装置101の動作例を示す説明図である。制御装置101は、インメモリ型のデータ処理を実行するマシンを制御するコンピュータである。制御装置101は、例えば、サーバである。ここで、インメモリ型のデータ処理は、ディスク等の外部のI/Oを伴わず、内部のメモリを用いてデータ処理を行うものである。インメモリ型のデータ処理では、メモリ上に存在する処理結果をそのまま次の処理へ使うことができる。
ここで、データ処理の1回の処理を、「タスク」と呼称する。そして、同じタスクを繰り返すような機械学習を実装するようなアプリケーションソフトウェアでは、インメモリ型のデータ処理が有効である。以下、アプリケーションソフトウェアを、「アプリ」と称する。ここで、タスクは、アプリの実行単位となるジョブが分割された最小の実行単位を指す。
機械学習の説明例を、下記参考文献1、2内に示す。
(参考文献1:ビッグデータ時代の機械学習アルゴリズム:オンライン学習、[平成27年9月24日検索]、http://www.nttdata.com/jp/ja/insights/trend_keyword/2014110601.html)
(参考文献2:クラシックな機械学習の入門 7. オンライン学習、[平成27年9月24日検索]、http://www.slideshare.net/hirsoshnakagawa3/ss−32274089)
このため、インメモリ型のデータ処理は、同一マシンや異なるマシン間でのタスクの繰り返しを用いて、インメモリ型のデータ処理を実行するマシンに並列分散するように割り当てる。また、インメモリ型のデータ処理では、アプリを実行する際に用いられる処理用領域と、複数の処理用領域に格納されたタスクの実行結果を統合したり、タスクの実行結果の一部や全部を他のマシンに転送したりするために用いられる転送用領域とを有する。
機械学習のアプリの処理内容は利用者が任意に指定することができる。また、タスクに用いる処理用領域のデータサイズは、タスクによって異なる。処理用領域と転送用領域との総和は、タスクを実行する装置のメモリの総量を超えることはない。タスクの実行中に処理用領域が不足した場合には、タスクの実行が遅くなる。また、タスクの実行中に転送用領域が不足した場合には、タスクの実行結果の一部を、タスクを実行する装置のディスク、例えば、磁気ディスクドライブ(Hard Disk Drive:HDD)に書き出すこともある。
また、制御装置101は、インメモリ型のデータ処理を実行するマシンとして、JVMに実行させる。JVMを動作させる装置は、制御装置101とは異なる1以上の装置でもよいし、制御装置101でもよいし、制御装置101とは異なる1以上の装置と制御装置101とでもよい。インメモリ型のデータ処理をJVMが実行する際には、JVMの起動時に、処理用領域と転送用領域とが割り当てられる。
しかしながら、インメモリ型のデータ処理において、処理用領域と転送用領域との割り当て変更の要否を判断することが難しい。以下、処理用領域と転送用領域との割り当て変更を、「メモリの割り当て変更」と呼称する。例えば、データ処理のタスクの実行結果のデータサイズが転送用領域のサイズを超えると、ディスクへの書き出しが行われることになり、ディスクに書き出す分、データ処理にかかる時間が増加する。そこで、転送用領域の割り当て量を変更するにしても、割り当て変更のためにタスクを実行するJVMを再起動するといった時間がかかる。従って、メモリ割り当ての変更を行ったとしても、データ処理にかかる時間の増加を抑えることができるとは限らない。
ここで、機械学習の場合には、1回目のタスクで実行したメモリ量がわかれば、2回目以降のタスクにおいても、ほぼ同じようなメモリ量を使用することになる。そこで、本実施の形態では、インメモリ型のデータ処理のタスクを実行した際に、処理用領域の使用量に基づき転送用領域を増やすことで短縮する時間と、メモリの割り当て変更にかかる時間から、メモリの割り当て変更の要否を判断する方法を行う。
図1A、図1Bを用いて、制御装置101の動作例を示す。図1A、図1Bの例では、JVMを動作させる装置が、実行装置102であるとする。図1Aに示すように、制御装置101は、複数の実行装置102と接続される。実行装置102は、制御装置101の指示により、タスク111をn回実行するものとする。nは、2以上の整数である。
図1Aの(1)で示すように、制御装置101は、実行装置102から、実行装置102のメモリが有する記憶領域から割り当てられた、処理用領域mpのサイズおよび転送用領域mtのサイズを取得する。取得するタイミングとして、制御装置101は、データ処理を行う前に取得してもよいし、データ処理中に取得してもよい。
次に、図1Bの(2)で示すように、制御装置101は、第1の時間として実行時間Tbと、第2の時間として実行時間Taを算出し、実行時間Tbから実行時間Taを減じた時間rtを算出する。時間rtは、使用量uに基づき転送用領域mtのサイズを変更した場合にタスク111を繰り返し実行する、すなわち、データ処理の実行の際にかかる時間が短縮する時間である。また、時間rtは、メモリの割り当て変更にかかる時間を考慮した際のデータ処理の実行の際にかかる時間が短縮する時間でもある。実行時間Taは、メモリの割り当て変更を行った場合のデータ処理の実行時間である。また、実行時間Tbは、メモリの割り当て変更を行わない場合のデータ処理の実行時間である。
制御装置101は、タスク111を実行した際にかかった時間T1に基づいて、実行時間Tbを算出する。例えば、制御装置101は、時間T1にnを乗算した値を、Tbとして算出する。
また、制御装置101は、T1、タスク111を実行した際に使用されたタスク111が用いた処理用領域mpの使用量u、メモリの割り当て変更にかかる時間rat、処理用領域mpのサイズ、および転送用領域mtのサイズに基づいて、実行時間Taを算出する。メモリの割り当て変更にかかる時間ratは、メモリの割り当てを変更するためにJVMを再起動するのにかかる時間である。例えば、制御装置101は、下記(1)式に従って、Taを算出する。
Ta=T1+T2×(n−1)+rat …(1)
ここで、T2は、メモリの割り当て変更を行った場合にタスク111を実行する際にかかる時間である。例えば、制御装置101は、T1に、メモリの割り当て変更により転送用領域mtが増える倍率の逆数を乗算して得られた値を、T2として算出する。そして、転送用領域mtが増える分は、図1Aの例では、処理用領域mpから使用量uを除いた空き容量となる斜線の網掛けの領域の部分である。
図1Bのグラフ112に、実行時間Ta、Tb、時間rt、メモリの割り当て変更にかかる時間ratが示す量を図示してある。時間rtは、グラフ112で示すように、TbからTaを減じた値となる。
なお、実行時間Ta、Tb、時間rtを算出するタイミングは、タスク111を1回実行した以降から、タスク111のn回目の実行の前までであればいつでもよいが、好ましくは、タスク111を1回実行した後がよい。
そして、図1Bの(3)で示すように、制御装置101は、時間rtに基づいて、メモリの割り当てを変更するか否かを判断する。例えば、制御装置101は、時間rtが0以上であれば、メモリの割り当てを変更すると判断し、そうでなければ、メモリの割り当てを変更しないと判断する。
このように、制御装置101は、メモリの割り当て変更にかかる時間ratを考慮して、メモリの割り当て変更の要否を適切に判断することができ、結果、データ処理にかかる時間を短縮することができる。
なお、メモリの割り当ての変更を判断する方法は、図1Bで説明した方法に限らない。例えば、制御装置101は、タスク111を実行した際に使用されたタスク111が用いた処理用領域mpの使用量uと、取得した処理用領域mpのサイズおよび転送用領域mtのサイズとに基づいて、短縮時間を算出してもよい。この短縮時間は、使用量uに基づき転送用領域mtのサイズを変更した場合にタスク111を繰り返し実行する、すなわち、データ処理の実行の際にかかる時間が短縮する時間である。また、この短縮時間は、メモリの割り当て変更にかかる時間ratを考慮しない際のデータ処理の実行の際にかかる時間が短縮する時間である。例えば、短縮時間は、下記(2)式により求められる。
短縮時間=(T1−T2)×(n−1) …(2)
ここで、(2)式は、(1)式と、Tb=T1×nから下記の様に導くことができる式である。
短縮時間=Tb−(Ta−rat)
⇔短縮時間=T1×n−(T1+T2×(n−1))
⇔短縮時間=T1×(n−1)−T2×(n−1)
⇔短縮時間=(T1−T2)×(n−1)
そして、制御装置101は、算出した短縮時間と、メモリの割り当て変更にかかる時間ratとに基づいて、メモリの割り当てを変更するか否かを判断する。具体的な判断例として、制御装置101は、短縮時間とメモリの割り当て変更にかかる時間ratとを比較して、短縮時間が小さければ、メモリの割り当てを変更すると判断し、そうでなければ、メモリの割り当てを変更しないと判断する。
なお、図1A、図1Bの説明では、JVMがインメモリ型のデータ処理を実行したが、これに限らない。例えば、専用のアプリが、インメモリ型のデータ処理を実行してもよい。そして、専用のアプリは、処理用領域mpと転送用領域mtとの割り当て変更を、一旦終了させないと行えないものとする。この場合、メモリの割り当て変更にかかる時間ratは、専用アプリの再起動にかかる時間である。次に、制御装置101をインメモリ型データ処理システムに適用した場合の例について、図2を用いて説明する。
図2は、インメモリ型データ処理システム200の構成例を示す説明図である。インメモリ型データ処理システム200は、マスタマシン201と、スレーブマシン202−1〜mと、クライアント端末203とを有する。マスタマシン201と、スレーブマシン202−1〜mとは、ネットワーク211によりそれぞれ接続する。また、マスタマシン201とクライアント端末203とは、ネットワーク212により接続する。ここで、マスタマシン201は、図1Aで示した制御装置101に相当する。また、スレーブマシン202−1〜mは、図1Aで示した実行装置102に相当する。
マスタマシン201は、インメモリ型データ処理システム200を制御するコンピュータである。スレーブマシン202−1〜mは、マスタマシン201の指示に従って、タスク111を実行するコンピュータである。クライアント端末203は、インメモリ型データ処理システム200を利用する利用者が操作するコンピュータである。
次に、インメモリ型データ処理システム200に含まれるコンピュータのハードウェアとして、マスタマシン201のハードウェア構成例を図3で示す。スレーブマシン202のハードウェア構成は、マスタマシン201のハードウェア構成と同様であるため、説明を省略する。
(マスタマシン201のハードウェア)
図3は、マスタマシン201のハードウェア構成例を示す説明図である。図3において、マスタマシン201は、CPU301と、ROM(Read−Only Memory)302と、RAM(Random Access Memory)303と、を含む。また、マスタマシン201は、ディスクドライブ304およびディスク305と、通信インターフェース306と、を含む。また、CPU301〜ディスクドライブ304、通信インターフェース306はバス307によってそれぞれ接続される。
CPU301は、マスタマシン201の全体の制御を司る演算処理装置である。CPU301は、複数のプロセッサコアを有してもよい。
ROM302は、ブートプログラムなどのプログラムを記憶する不揮発性メモリである。RAM303は、CPU301のワークエリアとして使用される揮発性メモリである。
ディスクドライブ304は、CPU301の制御に従ってディスク305に対するデータのリードおよびライトを制御する制御装置である。ディスクドライブ304には、例えば、磁気ディスクドライブ、光ディスクドライブ、ソリッドステートドライブなどを採用することができる。ディスク305は、ディスクドライブ304の制御で書き込まれたデータを記憶する不揮発性メモリである。例えばディスクドライブ304が磁気ディスクドライブである場合、ディスク305には、磁気ディスクを採用することができる。また、ディスクドライブ304が光ディスクドライブである場合、ディスク305には、光ディスクを採用することができる。また、ディスクドライブ304がソリッドステートドライブである場合、ディスク305には、半導体素子によって形成された半導体メモリ、いわゆる半導体ディスクを採用することができる。
通信インターフェース306は、ネットワーク211、212と内部のインターフェースを司り、他の装置からのデータの入出力を制御する制御装置である。具体的に、通信インターフェース306は、通信回線を通じてネットワーク211、212を介して他の装置に接続される。通信インターフェース306には、例えば、モデムやLANアダプタなどを採用することができる。
また、インメモリ型データ処理システム200の管理者が、マスタマシン201を直接操作する場合、マスタマシン201は、ディスプレイ、キーボード、マウスといったハードウェアを有してもよい。また、クライアント端末203も、マスタマシン201が有するハードウェアと同等のハードウェアと、ディスプレイ、キーボード、マウスといったハードウェアとを有する。
(マスタマシン201の機能構成例)
図4は、マスタマシン201の機能構成例を示すブロック図である。マスタマシン201は、制御部400を有する。制御部400は、取得部401と、判定部402と、算出部403と、判断部404と、割り当て変更部405とを含む。制御部400は、記憶装置に記憶されたプログラムをCPU301が実行することにより、各部の機能を実現する。記憶装置とは、具体的には、例えば、図3に示したROM302、RAM303、ディスク305などである。また、各部の処理結果は、CPU301のレジスタや、CPU301のキャッシュメモリ、RAM303等に格納される。
以下に、単一マシンがデータ処理を行う場合と、複数マシンがデータ処理を行う場合とに分けて各部の説明を行う。ここで、データ処理を単一マシンが行うか複数マシンが行うかについては、例えば、インメモリ型データ処理システム200によって決め打ちでもよいし、データ処理を行うアプリによって決め打ちでもよい。または、マスタマシン201は、スレーブマシン202−1〜mの負荷状況に基づいて、データ処理を単一マシンが行うか複数マシンが行うか決定してもよい。例えば、データ処理を行うアプリが複数マシンで行うことが可能であるとする。そして、スレーブマシン202−1〜mの負荷がほぼ均等であれば、マスタマシン201は、データ処理をスレーブマシン202−1〜mに行わせると決定してもよい。または、マスタマシン201は、スレーブマシン202−1〜mのうち他と比べて負荷が少ない1つのスレーブマシン202に、データ処理を行わせると決定してもよい。
まず、単一マシンがデータ処理を行う場合の各部の説明を行う。取得部401は、スレーブマシン202の処理用領域mpのサイズおよび転送用領域mtのサイズを取得する。
判定部402は、タスク111の実行履歴に基づいて、タスク111の実行中にメモリが有する記憶領域とは異なる他の記憶領域にタスク111の実行結果を書き出したか否かを判定する。メモリが有する記憶領域とは異なる他の記憶領域とは、例えば、スレーブマシン202が有するRAMとは異なるディスクの記憶領域である。また、他の記憶領域は、スレーブマシン202がアクセス可能な、ディスク以外の外部の記憶装置でもよい。タスク111の実行履歴には、転送用領域mtにタスク111の実行結果が載りきれずにディスクへ書き出したデータ量が記載されている。従って、判定部402は、例えば、タスク111の実行履歴に、転送用領域mtにタスク111の実行結果が載りきれずにディスクへ書き出したデータ量が0より大きければ、他の記憶領域としてディスクにタスク111の実行結果を書き出したと判定する。
算出部403は、タスク111を実行した際に使用されたタスク111が用いた処理用領域mpの使用量uと、取得部401が取得した処理用領域mpのサイズおよび転送用領域mtのサイズとに基づいて、短縮時間を算出する。ここで、使用量uは、1回目のタスクを実行した後であれば、1回目のタスクを実行した際の使用量である。また、1からn−1の間のx回目のタスクを実行した後であれば、使用量uは、x回目のタスクを実行した際の使用量でもよいし、1回目のタスクを実行した際の使用量からx回目のタスクを実行した際の使用量までの平均値でもよい。また、算出部403は、他の記憶領域にタスク111の実行結果を書き出したと判定部402が判定した場合に、短縮時間を算出してもよい。
また、算出部403は、タスク111を実行した際にかかった時間T1に基づいて、実行時間Tbを算出するとともに、時間T1と、使用量uと、時間ratと、処理用領域mpのサイズおよび転送用領域mtのサイズとに基づいて、実行時間Taを算出してもよい。具体的な算出例は、図1Bで説明したとおりである。
また、算出部403は、第3の時間として、使用量に基づき転送用領域mtのサイズを変更した場合のタスク111を繰り返し実行する際にかかる時間とを算出してもよい。具体的には、算出部403は、時間T1と、タスク111を実行した際に使用されたタスク111が用いた処理用領域mpの使用量と、取得した処理用領域mpおよび転送用領域mtのサイズとに基づいて、第3の時間を算出してもよい。第3の時間は、図1Bのグラフ112では、T1+T2×(n−1)、すなわち、Ta−ratに相当する。
判断部404は、算出部403が算出した短縮時間と、メモリの割り当て変更にかかる時間ratとに基づいて、メモリの割り当てを変更するか否かを判断する。
また、判断部404は、実行時間Tbから実行時間Taを減じた時間rtに基づいて、メモリの割り当てを変更するか否かを判断してもよい。具体的には、判断部404は、時間rtが0以上であれば、メモリの割り当てを変更すると判断し、そうでなければ、メモリの割り当てを変更しないと判断する。
また、判断部404は、実行時間Tbから第3の時間を減じた時間と、メモリの割り当て変更にかかる時間ratとの比較結果に基づいて、メモリの割り当てを変更するか否かを判断してもよい。実行時間Tbから第3の時間を減じた時間は、(T1−T2)×(n−1)に相当する。例えば、判断部404は、実行時間Tbから第3の時間を減じた時間が時間rat以上であれば、メモリの割り当てを変更すると判断し、そうでなければ、メモリの割り当てを変更しないと判断する。
割り当て変更部405は、判断部404がメモリの割り当てを変更すると判断した場合に、スレーブマシン202のメモリ割り当てを変更する。具体的には、割り当て変更部405は、スレーブマシン202上で動作するJVMを停止させ、JVMのメモリを設定し、JVMを再起動させる。
次に、複数マシンがデータ処理を行う場合の各部の説明を行う。まず、複数マシンの場合、スレーブマシン202−1〜mの各々が、各々のスレーブマシン202の処理用領域mpを用いてタスク111を実行する。ここで、処理用領域mpは、各々のスレーブマシン202の間で同一のサイズとなる。そして、各々のスレーブマシン202は、スレーブマシン202−1〜mがタスク111を完了させた後に、各々のスレーブマシン202の転送用領域mtを用いて、各々のコンピュータの間でタスク111の実行結果を転送する転送処理を実行する。ここで、転送用領域mtは、各々のスレーブマシン202の間で同一のサイズとなる。そして、各々のスレーブマシン202は、転送された実行結果に基づいてタスク111を再び実行する。
取得部401は、スレーブマシン202−1〜mのうちのいずれかのスレーブマシン202から、処理用領域mpのサイズおよび転送用領域mtのサイズを取得する。
判定部402は、スレーブマシン202−1〜mのうちのいずれかがタスク111の実行中にいずれかが有するメモリが有する記憶領域とは異なる他の記憶領域にタスク111の実行結果を書き出したか否かを判定する。ここで、判定部402は、各々のスレーブマシン202のタスク111の実行履歴に基づき、スレーブマシン202−1〜mのどれか1つでも他の記憶領域に実行結果を書き出していれば、他の記憶領域にタスク111の実行結果を書き出したと判定する。
そして、判定部402がいずれかのスレーブマシン202がタスク111の実行結果を当該他の記憶領域に書き出したと判定したとする。この場合、算出部403は、タスク111を実行した際に使用されたタスク111が用いた処理用領域mpの使用量と、取得した処理用領域mpおよび転送用領域mtのサイズとに基づいて、短縮時間を算出する。ここでの短縮時間は、メモリの割り当て変更にかかる時間ratを考慮しない場合における、スレーブマシン202−1〜mがタスク111を繰り返し実行する際にかかる時間が短縮する時間である。
割り当て変更部405は、判断部404がメモリの割り当てを変更すると判断した場合に、スレーブマシン202−1〜m全てのメモリ割り当てを変更する。
(単一マシンがデータ処理を行う場合)
次に、第1の実施例として単一マシンがデータ処理を行う場合について、図5、図6を用いて説明する。
図5は、単一マシンがデータ処理を行う場合のタスク111の割り当て例を示す説明図である。図5では、単位マシンとしてスレーブマシン202−1がデータ処理を行う場合のタスク111の割り当て例を示す。ここで、クライアント端末203によりアプリ実行の指示が行われると、マスタマシン201は、ジョブ501を生成し、1つのスレーブマシン202として、スレーブマシン202−1に、タスク111を割り当てることによりデータ処理を実行する。ここで、データ処理の1回の処理を「ステージ」と呼称する。図5の例では、スレーブマシン202−1は、ステージ0としてデータを読み込み、ステージ1〜nとしてデータ処理の1回分の処理であるタスク111がマスタマシン201によって割り当てられ、割り当てられたタスク111を実行する。
ここで、図5、図6では、説明の簡略化のため、処理用領域mp、転送用領域mtと記載した場合、スレーブマシン202−1の処理用領域mp、転送用領域mtであることを示す。また、処理用領域mp、転送用領域mtの後に、「_sx」が付与された符号は、単一マシンにおいて、ステージxにおける処理用領域mp、転送用領域mtであることを示す。xは0以上n以下の整数である。
データ処理を実行する間、マスタマシン201は、転送するデータが転送用領域mtに載りきれずに、スレーブマシン202−1のディスクに書き出したか否かを監視する。転送するデータが転送用領域mtに載りきれないと判断した場合、マスタマシン201は、JVMの再立ち上げに伴うメモリの割り当て変更を行ってデータ処理を実行する方法を行う際の実行時間Taを算出する。また、マスタマシン201は、メモリの割り当て変更を行わずにデータ処理を実行する方法を行う際の実行時間Tbを算出する。実行時間Ta、Tbの算出例については、図5の説明終了後に説明する。そして、マスタマシン201は、実行時間Ta、Tbを比較し、短い時間となった方を選択し、選択した方法によりデータ処理を継続する。
図5では、ステージ1が終わった後にメモリの割り当て変更を行う場合の例を示す。具体的には、マスタマシン201は、ステージ1が終わった際に、転送するデータが転送用領域mt_s1に載りきれなかったと判断する。そして、マスタマシン201は、実行時間Ta、Tbをそれぞれ算出する。図5では、実行時間Taが実行時間Tbより短かったとして、マスタマシン201は、スレーブマシン202−1に、スレーブマシン202−1上で動作するJVMの再立ち上げを行いメモリの割り当て変更を行わせる。メモリの割り当て変更を行った結果、転送用領域mt_s2の記憶容量が、転送用領域mt_s1の記憶容量よりも増加することになる。
メモリの割り当て変更を行った後、スレーブマシン202−1は、転送処理を行った後、ステージ2として、割り当て変更を行った処理用領域mp_s2を用いて1回の処理を行い、転送用領域mt_s2にデータを格納する。続けて、スレーブマシン202−1は、ステージ3〜nを実行する。
(単一マシンにおける実行時間の算出例)
次に、単一マシンにおける実行時間Ta、Tbの算出例について説明する。まず、実行時間Taの算出例について示す。マスタマシン201は、実行時間Taを算出するため、下記(sa1)式に従って、データ処理におけるステージ2以降の1つのタスク111にかかる時間T2を算出する。
T2=T1×(M1/M2) …(sa1)
ここで、T1は、データ処理におけるステージ1にかかった時間を示す。なお、単一マシンの例では、1つのステージにかかる時間であるT1やT2は、該当のステージにおいて、タスク111にかかった時間と一致する。また、M1は、ステージ1におけるJVMの転送用領域mt_s1のサイズを示す。また、M2は、転送用領域mtを変更する際のステージ2以降におけるJVMの転送用領域mt_s2のサイズを示す。マスタマシン201は、例えば、mt_s1のサイズからタスク111が使用した使用量を引いた値をM1に追加した値を、M2としてもよい。または、マスタマシン201は、mt_s1のサイズから使用量を引いた値と、実際にディスク305に書き出したデータのサイズとのうち、小さい値をM1に追加した値を、M2としてもよい。なお、(sa1)式は、あくまでも概算であり、実際にステージ2にかかる時間とは異なる場合がある。
そして、マスタマシン201は、下記(sa2)式に従って、単一マシンにおける実行時間Taを算出する。
Ta=T1+(Ts+Tm+Tr)+(T2×(n−1)) …(sa2)
ここで、Tsは、JVMの停止にかかる時間を示す。Tmは、JVMのメモリを設定する処理にかかる時間を示す。Trは、JVMの再起動にかかる時間を示す。従って、(sa2)式における第2項は、メモリの割り当て変更を行う処理にかかる時間を示す。また、Ts、Tm、Trは、予め実測され、それぞれ固定値として与えられる。
次に、単一マシンにおける実行時間Tbの算出例について示す。マスタマシン201は、(sb1)式に従って、実行時間Tbを算出する。
Tb=T1×n …(sb1)
次に、単一マシンにおけるデータ処理のフローチャートについて、図6を用いて説明する。
図6は、単一マシンにおけるデータ処理手順の一例を示すフローチャートである。単一マシンにおけるデータ処理は、1つのスレーブマシン202でデータ処理を行う処理である。
マスタマシン201は、アプリを実行開始する(ステップS601)。そして、マスタマシン201は、スレーブマシン202から処理用領域mpのサイズおよび転送用領域mtのサイズを取得する(ステップS602)。次に、マスタマシン201の指示によって、スレーブマシン202は、データ処理に含まれる1回目のタスク111を実行する(ステップS603)。
そして、マスタマシン201は、スレーブマシン202から1回目のタスク111の実行結果を受信した後、スレーブマシン202が転送用領域mtにデータが載りきれずにディスクに書き出したか否かを判断する(ステップS604)。スレーブマシン202が転送用領域mtにデータが載りきれずにディスクに書き出した場合(ステップS604:Yes)、マスタマシン201は、メモリの割り当て変更を行う場合の実行時間Taを算出する(ステップS605)。また、マスタマシン201は、メモリの割り当て変更を行わない場合の実行時間Tbを算出する(ステップS606)。
そして、マスタマシン201は、TaがTb以下か否かを判断する(ステップS607)。TaがTb以下である場合(ステップS607:Yes)、マスタマシン201がスレーブマシン202に指示した後、スレーブマシン202は、メモリの割り当てを変更する(ステップS608)。
ステップS608の処理終了後、TaがTbより大きい場合(ステップS607:No)またはスレーブマシン202が転送用領域mtにデータが載りきれずにディスクに書き出していない場合(ステップS604:No)、マスタマシン201の指示によって、スレーブマシン202は、2回目以降のタスク111を実行する(ステップS609)。次に、マスタマシン201は、タスク111をn回繰り返したか否かを判断する(ステップS610)。タスク111をn回繰り返していない場合(ステップS610:No)、マスタマシン201は、ステップS609の処理に移行する。なお、スレーブマシン202は、ステップS603の処理によりタスク111を1回実行したため、ステップS609の処理によりタスク111をn−1回実行することになる。
一方、タスク111をn回繰り返した場合(ステップS610:Yes)、マスタマシン201は、単一マシンにおけるデータ処理を終了する。ここで、ステップS605〜S607の各処理では、Ta、Tbを算出した後に、TaとTbとを比較していたが、これに限らない。例えば、マスタマシン201は、ステップS605〜S607の各処理の代わりに、下記不等式を実行し、不等式が満たされればステップS607:Yesとし、不等式が満たされなければステップS607:Noとしてもよい。
Tb−Ta≧0
そして、Tb、Taに対し(sa2)式、(sb1)式を用いると、上記不等式は、下記のように変形することができる。
(T1×n)−(T1+(Ts+Tm+Tr)+(T2×(n−1)))≧0
⇔(T1−T2)×(n−1)−(Ts+Tm+Tr)≧0
ここで、(Ts+Tm+Tr)は、図1Bで示したメモリの割り当て変更にかかる時間ratに相当する。
(複数マシンが協働してデータ処理を行う場合)
次に、第2の実施例として複数マシンが協働してデータ処理を行う場合について、図7〜図9を用いて説明する。ここで、説明の簡略化のため、スレーブマシン202のそれぞれの上で、1つのJVMが動作されるものとする。実際には、スレーブマシン202のそれぞれの上で、複数のJVMが動作されてもよい。複数のJVMが動作される場合には、例えば、スレーブマシン202のCPUの各コア上で、JVMが動作するようにしてもよい。
ここで、図7〜図9では、説明の簡略化のため、処理用領域mp、転送用領域mtと記載した場合、スレーブマシン202−1〜mのそれぞれの処理用領域mp、転送用領域mtであることを示す。また、処理用領域mp、転送用領域mtの後に、「_mx」が付与された符号は、複数マシンにおいて、ステージxにおける処理用領域mp、転送用領域mtであることを示す。xは0以上n以下の整数である。
図7は、複数マシンでデータ処理を行う場合のタスク111の割り当て例を示す説明図である。複数マシンの場合、クライアント端末203からアプリ実行の指示が行われると、マスタマシン201は、ジョブ501を生成し、複数のスレーブマシン202として、スレーブマシン202−1〜mにタスク111を割り当てることによりデータ処理を実行する。複数マシンの場合、スレーブマシン202−1〜mが1つのタスク111を実行開始してからスレーブマシン202−1〜mの全てが1つのタスク111を終了するまでを、1ステージとする。
本実施の形態では、インメモリ型データ処理システム200は、nステージまで実行するものとする。そして、図7の例では、ステージ1の状態を示す。図7の例では、スレーブマシン202−1、mが、タスク111の実行中に転送用領域mt_m1にデータが書ききれず、スレーブマシン202−1、mそれぞれのディスクに書き出したことを示す。
図8は、複数マシンでデータ処理を行う場合のタスク111の実行例を示す説明図である。図8では、複数マシンとしてスレーブマシン202−1〜mが協働してデータ処理を行う場合の、各ステージのタスク111の割り当て例を示す。
図8の例では、時刻t1sにステージ1が開始し、スレーブマシン202−1〜mの全てがタスク111を終了させた時刻t1eにステージ1が終了する。そして図8の例では、スレーブマシン202−1は、時刻t1sにタスク111の実行を開始し、時刻t1eより前にタスク111を終了する。また、スレーブマシン202−mは、時刻t1sより後にタスク111の実行を開始し、時刻t1eにタスク111を終了する。図8で示すように、時刻t1eまでにスレーブマシン202−1〜mの全てがタスク111を終了させると、スレーブマシン202−1〜mは、転送処理を実行する。
図8の例では、スレーブマシン202−1〜mは、時刻t2sまでに転送処理を完了させている。そして、時刻t2sからステージ2が開始し、スレーブマシン202−1〜mの全てがタスク111を終了させた時刻t2eにステージ2が終了する。
(複数マシンにおける実行時間の算出例)
次に、複数マシンにおける実行時間Ta、Tbの算出例について説明する。まず、実行時間Taの算出例について示す。マスタマシン201は、実行時間Taを算出するため、下記(ma1)式に従って、データ処理におけるステージ2以降の1つのタスク111にかかる時間T2を算出する。
T2=T1×(M1/M2) …(ma1)
ここで、T1は、データ処理におけるステージ1にかかった時間を示す。なお、複数マシンの例では、1ステージ内での並列処理を行うため、1つのステージにかかる時間であるT1やT2は、1タスクの処理時間×マシン台数のような単純計算にはならない。また、M1は、ステージ1におけるスレーブマシン202−1〜m上で動作するJVMの転送用領域mt_m1のサイズの総和を示す。同様に、M2は、転送用領域mtを変更する際のステージ2以降におけるスレーブマシン202−1〜m上で動作するJVMの転送用領域mt_m2のサイズの総和を示す。マスタマシン201は、例えばスレーブマシン202−1〜m上で動作するJVMがタスク111を実行した際にタスク111に使用した使用量を、mt_m1のサイズの総和から引いた値を算出する。そして、マスタマシン201は、算出して得られた値をM1に追加した値を、M2としてもよい。なお、(ma1)式は、あくまでも概算であり、実際にステージ2にかかる時間とは異なる場合がある。
そして、マスタマシン201は、下記(ma2)式に従って、単一マシンにおける実行時間Taを算出する。
Ta=T1+(Ts+Tm+Tr)+(T2×(n−1)) …(ma2)
ここで、Tsは、JVMの停止にかかる時間を示す。Tmは、JVMのメモリを設定する処理にかかる時間を示す。Trは、JVMの再起動にかかる時間を示す。従って、(ma2)式における第2項は、メモリの割り当て変更を行う処理にかかる時間を示す。また、Ts、Tm、Trは、予め実測され、それぞれ固定値として与えられる。
次に、複数マシンにおける実行時間Tbの算出例について示す。マスタマシン201は、(mb1)式に従って、実行時間Tbを算出する。
Tb=T1×n …(mb1)
次に、複数マシンにおけるデータ処理のフローチャートについて、図9を用いて説明する。
図9は、複数マシンにおけるデータ処理手順の一例を示すフローチャートである。複数マシンにおけるデータ処理は、複数のスレーブマシン202でデータ処理を行う処理である。
マスタマシン201は、アプリを実行開始する(ステップS901)。そして、マスタマシン201は、スレーブマシン202−1〜mのいずれかから処理用領域mpのサイズおよび転送用領域mtのサイズを取得する(ステップS902)。次に、マスタマシン201の指示によって、スレーブマシン202−1〜mは、データ処理に含まれる1回目のタスク111を実行する(ステップS903)。
そして、マスタマシン201は、スレーブマシン202−1〜mの全てから1回目のタスク111の実行結果を受信した後、転送用領域mtにデータが載りきれずにディスクに書き出したスレーブマシン202があるか否かを判断する(ステップS904)。転送用領域mtにデータが載りきれずにディスクに書き出したスレーブマシン202がある場合(ステップS904:Yes)、マスタマシン201は、スレーブマシン202−1〜mの全てに対してメモリの割り当て変更を行う場合の実行時間Taを算出する(ステップS905)。また、マスタマシン201は、メモリの割り当て変更を行わない場合の実行時間Tbを算出する(ステップS906)。
そして、マスタマシン201は、TaがTb以下か否かを判断する(ステップS907)。TaがTb以下である場合(ステップS907:Yes)、マスタマシン201がスレーブマシン202−1〜mに指示した後、スレーブマシン202−1〜mは、メモリの割り当てを変更する(ステップS908)。
ステップS908の処理終了後、TaがTbより大きい場合(ステップS907:No)または転送用領域mtにデータが載りきれずにディスクに書き出したスレーブマシン202がない場合(ステップS904:No)、マスタマシン201の指示によって、スレーブマシン202−1〜mは、2回目以降のタスク111を実行する(ステップS909)。次に、マスタマシン201は、タスク111をn回繰り返したか否かを判断する(ステップS910)。タスク111をn回繰り返していない場合(ステップS910:No)、マスタマシン201は、ステップS909の処理に移行する。なお、スレーブマシン202−1〜mは、ステップS903の処理によりタスク111を1回実行したため、ステップS909の処理によりタスク111をn−1回実行することになる。
一方、タスク111をn回繰り返した場合(ステップS910:Yes)、マスタマシン201は、複数マシンにおけるデータ処理を終了する。ここで、単一マシンがデータ処理を行う場合と同様に、複数マシンが協働してデータ処理を行う場合でも、ステップS905〜S907の各処理では、Ta、Tbを算出した後に、TaとTbとを比較していたが、これに限らない。例えば、マスタマシン201は、ステップS905〜S907の各処理の代わりに、下記不等式を実行し、不等式が満たされればステップS907:Yesとし、不等式が満たされなければステップS907:Noとしてもよい。
Tb−Ta≧0
上記不等式の変形は、単一マシンがデータ処理を行う場合と同様であるため、説明を省略する。
以上説明したように、マスタマシン201は、インメモリ型のデータ処理のタスクの1回目を実行した際に、使用量uに基づき転送用領域を増やすことで短縮する時間と、メモリの割り当て変更にかかる時間ratとから、メモリの割り当て変更の要否を判断する。また、マスタマシン201は、実行時間Tbから実行時間Taを減じた時間rtに基づいて、メモリの割り当て変更の要否を判断してもよい。これにより、マスタマシン201は、メモリの割り当て変更にかかる時間ratを考慮して、メモリの割り当て変更の要否を適切に判断することができ、結果、データ処理にかかる時間を短縮することができる。
また、マスタマシン201は、タスク111の実行中にディスクにタスク111の実行結果を書き出したと判定した場合に、時間rtを算出してもよい。これにより、タスク111の実行中にディスクにタスク111の実行結果を書き出したときに限り時間rtを算出することになるため、マスタマシン201にかかる負荷を抑えることができる。
また、マスタマシン201は、複数のスレーブマシン202の各々にタスク111を実行させ、複数のスレーブマシン202の全てがタスク111の完了後に、複数のスレーブマシン202の各々に転送処理を実行させ、再び、タスク111を実行させてもよい。これにより、インメモリ型データ処理システム200は、インメモリ型のデータ処理を、複数のスレーブマシン202を用いて分散しつつ並列に実行することができる。
また、マスタマシン201は、複数マシンがデータ処理を行う場合、複数のスレーブマシン202のいずれかがタスク111の実行中にディスクにタスク111の実行結果を書き出した場合に、短縮時間を算出してもよい。これにより、複数マシンがデータ処理を行う場合でも、タスク111の実行中にディスクにタスク111の実行結果を書き出したスレーブマシン202がなければ短縮時間を算出しなくてよいため、マスタマシン201にかかる負荷を抑えることができる。
また、マスタマシン201は、メモリの割り当てに要する時間を考慮して、メモリ割り当て変更の要否を判断することができる。また、転送用領域でデータあふれが起きる際に発生する処理速度の低下を抑制することができる。
なお、本実施の形態で説明した制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本制御プログラムは、ハードディスク、フレキシブルディスク、CD−ROM(Compact Disc−Read Only Memory)、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本制御プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)コンピュータに、
メモリが有する記憶領域から割り当てられた、タスクを繰り返し実行する際に前記タスクによって用いられる処理用領域のサイズおよび前記タスクの実行結果を転送する転送用領域のサイズを取得し、
前記タスクを実行した際に使用された前記タスクが用いた前記処理用領域の使用量と、取得した前記処理用領域のサイズおよび前記転送用領域のサイズとに基づいて、前記使用量に基づき前記転送用領域のサイズを変更した場合に前記タスクを繰り返し実行する際にかかる時間が短縮する短縮時間を算出し、
算出した前記短縮時間と、前記メモリの割り当て変更にかかる時間とに基づいて、前記メモリの割り当てを変更するか否かを判断する、
処理を実行させることを特徴とする制御プログラム。
(付記2)前記コンピュータに、
前記タスクの実行履歴に基づいて、前記タスクの実行中に前記メモリが有する記憶領域とは異なる他の記憶領域に前記タスクの実行結果を書き出したか否かを判定する、処理を実行させ、
前記算出する処理は、
前記タスクの実行結果を前記他の記憶領域に書き出したと判定した場合、前記使用量と、取得した前記処理用領域のサイズと前記転送用領域のサイズとに基づいて、前記使用量に基づき前記転送用領域のサイズを変更した場合に前記タスクを繰り返し実行する際にかかる時間が短縮する短縮時間を算出する、
ことを特徴とする付記1に記載の制御プログラム。
(付記3)前記算出する処理は、
前記タスクを実行した際にかかった時間に基づいて、前記サイズを変更しない場合の前記タスクを繰り返し実行する際にかかる第1の時間を算出するとともに、前記タスクを実行した際にかかった時間と、前記使用量と、前記メモリの割り当て変更にかかる時間と、取得した前記処理用領域のサイズおよび前記転送用領域のサイズとに基づいて、前記使用量に基づき前記転送用領域のサイズを変更した場合の前記タスクを繰り返し実行する際にかかる第2の時間を算出し、
前記判断する処理は、
算出した前記第1の時間から前記第2の時間を減ずることにより得られる時間に基づいて、前記メモリの割り当てを変更するか否かを判断する、
ことを特徴とする付記2に記載の制御プログラム。
(付記4)前記コンピュータに接続する複数のコンピュータの各々のコンピュータが、前記各々のコンピュータのメモリが有する記憶領域のうちの前記各々のコンピュータの間で同一のサイズとなる処理用領域を用いて前記タスクを実行し、前記複数のコンピュータが前記タスクを完了させた後に当該記憶領域のうちの前記各々のコンピュータの間で同一のサイズとなる転送用領域を用いて前記各々のコンピュータの間で前記タスクの実行結果を転送し、転送された前記実行結果に基づいて前記タスクを再び実行する、
ことを特徴とする付記2または3に記載の制御プログラム。
(付記5)前記取得する処理は、
前記複数のコンピュータのうちのいずれかのコンピュータから、当該処理用領域のサイズおよび当該転送用領域のサイズを取得し、
前記判定する処理は、
前記各々のコンピュータの前記タスクの実行履歴に基づいて、前記複数のコンピュータのうちのいずれかのコンピュータが前記タスクの実行中に当該いずれかのコンピュータが有するメモリが有する記憶領域とは異なる他の記憶領域に前記タスクの実行結果を書き出したか否かを判定し、
前記算出する処理は、
当該いずれかのコンピュータが前記タスクの実行結果を当該他の記憶領域に書き出したと判定した場合、前記タスクを実行した際に使用された前記タスクが用いた当該処理用領域の使用量と、取得した当該処理用領域のサイズおよび当該転送用領域のサイズとに基づいて、前記複数のコンピュータが前記タスクを繰り返し実行する際にかかる時間が短縮する短縮時間を算出し、
前記判断する処理は、
算出した前記短縮時間と、前記メモリの割り当て変更にかかる時間とに基づいて、前記メモリの割り当てを変更するか否かを判断する、
ことを特徴とする付記4に記載の制御プログラム。
(付記6)前記算出する処理は、
前記タスクを実行した際にかかった時間に基づいて、前記サイズを変更しない場合の前記タスクを繰り返し実行する際にかかる第1の時間を算出するとともに、前記タスクを実行した際にかかった時間と、前記使用量と、取得した前記処理用領域のサイズおよび前記転送用領域のサイズとに基づいて、前記使用量に基づき前記転送用領域のサイズを変更した場合の前記タスクを繰り返し実行する際にかかる第3の時間を算出し、
前記判断する処理は、
前記第1の時間から前記第3の時間を減じた時間と、前記メモリの割り当て変更にかかる時間との比較結果に基づいて、前記メモリの割り当てを変更するか否かを判断する、
ことを特徴とする付記1〜5のいずれか一つに記載の制御プログラム。
(付記7)メモリが有する記憶領域から割り当てられた、タスクを繰り返し実行する際に前記タスクによって用いられる処理用領域のサイズおよび前記タスクの実行結果を転送する転送用領域のサイズを取得し、
前記タスクを実行した際に使用された前記タスクが用いた前記処理用領域の使用量と、取得した前記処理用領域のサイズおよび前記転送用領域のサイズとに基づいて、前記使用量に基づき前記転送用領域のサイズを変更した場合に前記タスクを繰り返し実行する際にかかる時間が短縮する短縮時間を算出し、
算出した前記短縮時間と、前記メモリの割り当て変更にかかる時間とに基づいて、前記メモリの割り当てを変更するか否かを判断する、
制御部を有することを特徴とする制御装置。
(付記8)コンピュータが、
メモリが有する記憶領域から割り当てられた、タスクを繰り返し実行する際に前記タスクによって用いられる処理用領域のサイズおよび前記タスクの実行結果を転送する転送用領域のサイズを取得し、
前記タスクを実行した際に使用された前記タスクが用いた前記処理用領域の使用量と、取得した前記処理用領域のサイズおよび前記転送用領域のサイズとに基づいて、前記使用量に基づき前記転送用領域のサイズを変更した場合に前記タスクを繰り返し実行する際にかかる時間が短縮する短縮時間を算出し、
算出した前記短縮時間と、前記メモリの割り当て変更にかかる時間とに基づいて、前記メモリの割り当てを変更するか否かを判断する、
処理を実行することを特徴とする制御方法。
mp 処理用領域
mt 転送用領域
u 使用量
T1、T2 実行時間
101 制御装置
102 実行装置
111 タスク
201 マスタマシン
202−1〜m スレーブマシン
400 制御部
401 取得部
402 判定部
403 算出部
404 判断部
405 割り当て変更部

Claims (7)

  1. コンピュータに、
    メモリが有する記憶領域から割り当てられた、タスクを繰り返し実行する際に前記タスクによって用いられる処理用領域のサイズおよび前記タスクの実行結果を転送する転送用領域のサイズを取得し、
    前記タスクを実行した際に使用された前記タスクが用いた前記処理用領域の使用量と、取得した前記処理用領域のサイズおよび前記転送用領域のサイズとに基づいて、前記使用量に基づき前記転送用領域のサイズを変更した場合に前記タスクを繰り返し実行する際にかかる時間が短縮する短縮時間を算出し、
    算出した前記短縮時間と、前記メモリの割り当て変更にかかる時間とに基づいて、前記メモリの割り当てを変更するか否かを判断する、
    処理を実行させることを特徴とする制御プログラム。
  2. 前記コンピュータに、
    前記タスクの実行履歴に基づいて、前記タスクの実行中に前記メモリが有する記憶領域とは異なる他の記憶領域に前記タスクの実行結果を書き出したか否かを判定する、処理を実行させ、
    前記算出する処理は、
    前記タスクの実行結果を前記他の記憶領域に書き出したと判定した場合、前記使用量と、取得した前記処理用領域のサイズと前記転送用領域のサイズとに基づいて、前記使用量に基づき前記転送用領域のサイズを変更した場合に前記タスクを繰り返し実行する際にかかる時間が短縮する短縮時間を算出する、
    ことを特徴とする請求項1に記載の制御プログラム。
  3. 前記算出する処理は、
    前記タスクを実行した際にかかった時間に基づいて、前記サイズを変更しない場合の前記タスクを繰り返し実行する際にかかる第1の時間を算出するとともに、前記タスクを実行した際にかかった時間と、前記使用量と、前記メモリの割り当て変更にかかる時間と、取得した前記処理用領域のサイズおよび前記転送用領域のサイズとに基づいて、前記使用量に基づき前記転送用領域のサイズを変更した場合の前記タスクを繰り返し実行する際にかかる第2の時間を算出し、
    前記判断する処理は、
    算出した前記第1の時間から前記第2の時間を減ずることにより得られる時間に基づいて、前記メモリの割り当てを変更するか否かを判断する、
    ことを特徴とする請求項2に記載の制御プログラム。
  4. 前記コンピュータに接続する複数のコンピュータの各々のコンピュータが、前記各々のコンピュータのメモリが有する記憶領域のうちの前記各々のコンピュータの間で同一のサイズとなる処理用領域を用いて前記タスクを実行し、前記複数のコンピュータが前記タスクを完了させた後に当該記憶領域のうちの前記各々のコンピュータの間で同一のサイズとなる転送用領域を用いて前記各々のコンピュータの間で前記タスクの実行結果を転送し、転送された前記実行結果に基づいて前記タスクを再び実行する、
    ことを特徴とする請求項2または3に記載の制御プログラム。
  5. 前記取得する処理は、
    前記複数のコンピュータのうちのいずれかのコンピュータから、当該処理用領域のサイズおよび当該転送用領域のサイズを取得し、
    前記判定する処理は、
    前記各々のコンピュータの前記タスクの実行履歴に基づいて、前記複数のコンピュータのうちのいずれかのコンピュータが前記タスクの実行中に当該いずれかのコンピュータが有するメモリが有する記憶領域とは異なる他の記憶領域に前記タスクの実行結果を書き出したか否かを判定し、
    前記算出する処理は、
    当該いずれかのコンピュータが前記タスクの実行結果を当該他の記憶領域に書き出したと判定した場合、前記タスクを実行した際に使用された前記タスクが用いた当該処理用領域の使用量と、取得した当該処理用領域のサイズおよび当該転送用領域のサイズとに基づいて、前記複数のコンピュータが前記タスクを繰り返し実行する際にかかる時間が短縮する短縮時間を算出し、
    前記判断する処理は、
    算出した前記短縮時間と、前記メモリの割り当て変更にかかる時間とに基づいて、前記メモリの割り当てを変更するか否かを判断する、
    ことを特徴とする請求項4に記載の制御プログラム。
  6. メモリが有する記憶領域から割り当てられた、タスクを繰り返し実行する際に前記タスクによって用いられる処理用領域のサイズおよび前記タスクの実行結果を転送する転送用領域のサイズを取得し、
    前記タスクを実行した際に使用された前記タスクが用いた前記処理用領域の使用量と、取得した前記処理用領域のサイズおよび前記転送用領域のサイズとに基づいて、前記使用量に基づき前記転送用領域のサイズを変更した場合に前記タスクを繰り返し実行する際にかかる時間が短縮する短縮時間を算出し、
    算出した前記短縮時間と、前記メモリの割り当て変更にかかる時間とに基づいて、前記メモリの割り当てを変更するか否かを判断する、
    制御部を有することを特徴とする制御装置。
  7. コンピュータが、
    メモリが有する記憶領域から割り当てられた、タスクを繰り返し実行する際に前記タスクによって用いられる処理用領域のサイズおよび前記タスクの実行結果を転送する転送用領域のサイズを取得し、
    前記タスクを実行した際に使用された前記タスクが用いた前記処理用領域の使用量と、取得した前記処理用領域のサイズおよび前記転送用領域のサイズとに基づいて、前記使用量に基づき前記転送用領域のサイズを変更した場合に前記タスクを繰り返し実行する際にかかる時間が短縮する短縮時間を算出し、
    算出した前記短縮時間と、前記メモリの割り当て変更にかかる時間とに基づいて、前記メモリの割り当てを変更するか否かを判断する、
    処理を実行することを特徴とする制御方法。
JP2015249469A 2015-12-22 2015-12-22 制御プログラム、制御装置、および制御方法 Active JP6485343B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015249469A JP6485343B2 (ja) 2015-12-22 2015-12-22 制御プログラム、制御装置、および制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015249469A JP6485343B2 (ja) 2015-12-22 2015-12-22 制御プログラム、制御装置、および制御方法

Publications (2)

Publication Number Publication Date
JP2017117048A true JP2017117048A (ja) 2017-06-29
JP6485343B2 JP6485343B2 (ja) 2019-03-20

Family

ID=59234870

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015249469A Active JP6485343B2 (ja) 2015-12-22 2015-12-22 制御プログラム、制御装置、および制御方法

Country Status (1)

Country Link
JP (1) JP6485343B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023038074A1 (ja) * 2021-09-13 2023-03-16 株式会社島津製作所 細胞画像の学習時におけるメモリ容量判定システムおよび細胞画像の学習時におけるメモリ容量判定方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008132924A1 (ja) * 2007-04-13 2008-11-06 Nec Corporation 仮想計算機システムおよびその最適化方法
JP2015212855A (ja) * 2014-05-01 2015-11-26 ウイングアーク1st株式会社 インメモリ管理システムおよびインメモリ管理用プログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008132924A1 (ja) * 2007-04-13 2008-11-06 Nec Corporation 仮想計算機システムおよびその最適化方法
JP2015212855A (ja) * 2014-05-01 2015-11-26 ウイングアーク1st株式会社 インメモリ管理システムおよびインメモリ管理用プログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023038074A1 (ja) * 2021-09-13 2023-03-16 株式会社島津製作所 細胞画像の学習時におけるメモリ容量判定システムおよび細胞画像の学習時におけるメモリ容量判定方法

Also Published As

Publication number Publication date
JP6485343B2 (ja) 2019-03-20

Similar Documents

Publication Publication Date Title
US8499010B2 (en) Garbage collection in a multiple virtual machine environment
US8443178B2 (en) Operating system image shrinking apparatus and method and computer readable tangible medium storing a program for operating system image shrinking
US9547520B1 (en) Virtual machine load balancing
JP5808450B1 (ja) マルチコアプロセッサを使用して逐次プログラムを実行する制御装置
US9870042B2 (en) Apparatus and method managing power based on data
US9264309B2 (en) Enabling cluster scaling
JP7035858B2 (ja) マイグレーション管理プログラム、マイグレーション方法およびマイグレーションシステム
JP5321748B2 (ja) マルチコアプロセッサシステム、スレッド制御方法、およびスレッド制御プログラム
JP6485343B2 (ja) 制御プログラム、制御装置、および制御方法
CN104700255B (zh) 多进程处理方法、装置和系统
JP5671050B2 (ja) ランダムアクセスメモリの動的管理
JP5780296B2 (ja) スレッド処理方法、およびスレッド処理システム
JP5687603B2 (ja) プログラム変換装置、プログラム変換方法、および変換プログラム
JP6627475B2 (ja) 処理リソース制御プログラム、処理リソース制御装置、および処理リソース制御方法
US10318422B2 (en) Computer-readable recording medium storing information processing program, information processing apparatus, and information processing method
US11163594B2 (en) Rescheduling JIT compilation based on jobs of parallel distributed computing framework
JPWO2010109751A1 (ja) コンパイルシステム、コンパイル方法およびコンパイルプログラム
JP4668562B2 (ja) メモリマネジメントプログラムおよびメモリマネジメント方法
JP7339537B2 (ja) 情報処理装置、情報処理プログラム、及び情報処理方法
JP5390947B2 (ja) ジョブ管理システム、ジョブ管理装置及びそのプログラム
JP6973856B2 (ja) 情報処理装置、実行方法及びプログラムの修正方法
JP2018156146A (ja) 情報処理装置
JP2016103258A (ja) 並列演算装置、並列演算システム、およびジョブ制御プログラム
CN113946545A (zh) 一种数据存储方法、装置、电子设备及可读存储介质
JP6163795B2 (ja) 情報処理装置、装置評価システム、装置評価方法およびコンピュータプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180810

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190115

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190204

R150 Certificate of patent or registration of utility model

Ref document number: 6485343

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150