JP2015222476A - 並列計算機システム,プロセス制御プログラム,及び並列計算機システムの制御方法 - Google Patents

並列計算機システム,プロセス制御プログラム,及び並列計算機システムの制御方法 Download PDF

Info

Publication number
JP2015222476A
JP2015222476A JP2014106115A JP2014106115A JP2015222476A JP 2015222476 A JP2015222476 A JP 2015222476A JP 2014106115 A JP2014106115 A JP 2014106115A JP 2014106115 A JP2014106115 A JP 2014106115A JP 2015222476 A JP2015222476 A JP 2015222476A
Authority
JP
Japan
Prior art keywords
monitoring
submaster
processes
monitoring process
worker
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
JP2014106115A
Other languages
English (en)
Other versions
JP6303806B2 (ja
Inventor
真 中島
Makoto Nakajima
真 中島
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 JP2014106115A priority Critical patent/JP6303806B2/ja
Priority to EP15168275.4A priority patent/EP2950212A3/en
Priority to US14/718,132 priority patent/US9942309B2/en
Publication of JP2015222476A publication Critical patent/JP2015222476A/ja
Application granted granted Critical
Publication of JP6303806B2 publication Critical patent/JP6303806B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • 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]
    • G06F9/5061Partitioning or combining of resources
    • 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]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0715Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a system implementing multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Factory Administration (AREA)
  • Debugging And Monitoring (AREA)
  • Multi Processors (AREA)

Abstract

【課題】配下のプロセスの監視負荷の低減及び計算ノードの利用効率向上を図ることが可能となる技術を提供する。
【解決手段】所定計算をそれぞれ行う複数の計算プロセスと複数の監視プロセスとを生成し、各監視プロセスが自身の直下に配置された監視プロセス及び計算プロセスを監視する監視の階層構造を形成する並列プログラムを実行可能な複数の計算ノードを含む。監視プロセスが割り当てられた各計算ノードが、割り当てられた監視プロセスの配下の計算プロセスの総数の目標値である第1の目標値と、割り当てられた監視プロセスの直下に配置される監視プロセス及び計算プロセスの数の目標値である第2の目標値とに基づいて、監視の階層構造を変更する処理を行う。
【選択図】図3

Description

本開示は、並列計算機システム,プロセス制御プログラム,及び並列計算機システムの制御方法に関する。
従来、複数の計算ノードを含む並列計算機システムにて使用されるプログラムとして、マスタワーカ型並列プログラムがある。マスタワーカ型並列プログラムには、単階層マスタワーカ型並列プログラムと、多階層マスタワーカ型並列プログラムとがある。
単層型マスタワーカ型並列プログラムでは、当該並列プログラムで実行する計算タスクが複数のサブタスクに分割される。各サブタスクは、計算機クラスタに属する任意の計算ノード上で実行可能である。実行が開始されたサブタスクは、計算ノードの異常(例えば、計算ノードのハードウェア故障や、ソフトウェア故障など)が発生しない限り、有限時間で終了する。
或るサブタスクの実行が他のサブタスクの実行結果に依存する場合も存在する。例えば、サブタスクAがサブタスクBの実行結果に依存している場合、サブタスクBの実行終了後、サブタスクAの実行が開始される。互いに依存関係のないサブタスクについては、同時に(並列に)実行可能である。
単階層マスタワーカ型並列プログラムでは、1つのマスタプロセスと、複数個のワーカプロセスが生成される。これらのプロセスは、並列プログラムとして利用可能な計算ノード(計算クラスタ上の全計算ノードが利用できる場合、ジョブと呼ばれる単位が割り当て
られた計算ノードのみが利用可能な場合などが考えられる) 上に生成される。
マスタプロセスは、サブタスクの管理・実行制御を行う。ワーカプロセスは、マスタプロセスからの依頼を受け、サブタスクの実行を行う。マスタプロセスは、実行開始可能なサブタスクを検索し、ワーカプロセスに当該サブタスクを実行するように依頼する。依頼を受けたワーカプロセスは、サブタスクの実行を開始し、サブタスクの実行が終了すると、マスタプロセスに終了及び実行を通知する。マスタプロセスは実行結果の集計を行う。すべてのサブタスクの実行終了を以て、並列プログラムのタスクが終了する。
マスタプロセスは、ワーカプロセスの状態(動作)監視も行う。マスタプロセスは、定期的にワーカプロセスと通信するなどの方法によって、サブタスクが正常に実行されているかどうかを検知することができる。計算ノードの異常などの理由によってサブタスクが異常終了した場合には、マスタプロセスは、異常終了したサブタスクを実行していたワーカプロセスが異常状態にあると判断する。そして、マスタプロセスは、異常状態と判断したワーカプロセスを利用可能なワーカプロセスから除外する。このとき、マスタプロセスは、異常状態と判断したワーカプロセスで実行していたサブタスクの実行を他のワーカプロセスに依頼する。
多階層マスタワーカ型並列プログラムでは、1つのマスタプロセスと、固定された階層構造を有する複数個のサブマスタプロセスと、複数個のワーカプロセスが生成される。マスタプロセスは、ワーカプロセスを直接監視するのではなく、サブマスタプロセスを監視する。サブマスタプロセスは、自身の配下にあるワーカプロセスを監視する。このような形式で、ワーカプロセス全体の監視が行われる。
特開2011−118899号公報 特開2005−242986号公報 特開2003−280933号公報 特開2008−243216号公報
単階層マスタワーカ型並列プログラムでは、単一のマスタプロセスがすべてのワーカプロセスを監視する。このため、ワーカプロセスの数に比例してマスタプロセスの監視負荷が増加する。したがって、大規模なマスタワーカ型並列プログラムを実行しようとすると、マスタプロセスの監視コストが膨大となるおそれがあった。これに対し、多階層マスタワーカ並列プログラムでは、マスタプロセス及びサブマスタプロセスのそれぞれが直接監視するプロセス数が減る。このため、一つのプロセスが担う監視負荷を単階層マスタワーカ並列プログラムよりも低減することができる。
しかしながら、多階層マスタワーカ型並列プログラムにも、以下の問題があった。すなわち、単階層マスタワーカ型並列プログラムでは、サブタスクの実行に関わらないプロセスはマスタプロセスのみである。このため、実際の計算処理を行わない計算ノードはマスタプロセスを実行する1つの計算ノードだけである。これに対し、多階層マスタワーカ型並列プログラムでは、マスタプロセスだけでなくサブマスタプロセスもサブタスクを実行しない。このように、多階層マスタワーカ並列プログラムでは、単階層マスタワーカプログラムよりも実際の計算処理を行わない計算ノード数が多くなるため、計算ノードの利用効率(ノード利用効率)が低下する問題があった。
本開示の目的は、プロセスの監視負荷の低減を可能とし、かつ計算ノードの利用効率を高めることを可能とする技術を提供することにある。
本開示の一態様は、所定計算をそれぞれ行う複数の計算プロセスと複数の監視プロセスとを生成し、各監視プロセスが自身の直下に配置された監視プロセス及び計算プロセスを監視する監視の階層構造を形成する並列プログラムを実行可能な複数の計算ノードであって、各計算ノードが、前記計算プロセスが割り当てられたときに前記計算プロセスとして動作し、前記監視プロセスが割り当てられたときに前記監視プロセスとして動作する複数の計算ノードを含み、
前記監視プロセスが割り当てられた各計算ノードが、割り当てられた監視プロセスの配下の計算プロセスの総数の目標値である第1の目標値と、前記割り当てられた監視プロセスの直下に配置される監視プロセス及び計算プロセスの数の目標値である第2の目標値とに基づいて、前記監視の階層構造を変更する処理を行う
ことを特徴とする並列計算機システムである。
本開示によれば、プロセスの監視負荷の低減を可能とし、かつ計算ノードの利用効率を高めることが可能となる。
図1は、並列計算機システムの一例を示す。 図2は、計算ノードの構成例を示す。 図3は、“ワーカプロセス総数”が“10000”であり、“直下の配下プロセス数”が2であるときの監視の階層構造を模式的に示す。 図4は、サブマスタプロセスとして動作する計算ノード(CPU)における処理を示すフローチャートである。 図5は、サブマスタプロセスとして動作する計算ノード(CPU)における処理を示すフローチャートである。 図6は、サブマスタプロセスとして動作する計算ノード(CPU)における処理を示すフローチャートである。 図7は、サブマスタプロセスとして動作する計算ノード(CPU)における処理を示すフローチャートである。 図8は、サブマスタプロセスとして動作する計算ノード(CPU)における処理を示すフローチャートである。 図9は、サブマスタプロセスとして動作する計算ノード(CPU)における処理を示すフローチャートである。 図10は、サブマスタプロセスとして動作する計算ノード(CPU)における処理を示すフローチャートである。 図11は、サブマスタプロセス(マスタプロセスを含む)の処理にあたって使用されるパラメータを示すテーブルを示す図である。 図12は、サブマスタプロセス(マスタプロセス含む)の処理に当たってサブマスタプロセスが管理するリスト群のテーブルを示す図である。 図13は、マスタプロセスとして動作する計算ノード(CPU)における処理を示すフローチャートである。
以下、図面を参照して本発明の実施形態について説明する。実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。
<並列計算機システムの構成例>
図1は、マスタワーカ型並列プログラム(以下、単に「並列プログラム」と表記する)を実行する並列計算機システムの構成例を示す。並列計算機システムは、複数の計算ノードNがネットワーク(NW)を介して接続された計算機クラスタを含む。
図2は、計算ノードNの構成例を示す図である。計算ノードNは、プロセッサ及びメモリを含むコンピュータである。例えば、パーソナルコンピュータ(PC)のような汎用のコンピュータ或いは専用のコンピュータが適用される。但し、並列計算機システムは、複数のプロセッサ及びメモリが内部ネットワークで接続されることによって形成された計算機クラスタを含む1又は2以上のコンピュータであっても良い。各計算ノードNは、他の計算ノードNの通信用のアドレスを知っており(記憶装置上に記憶しており)、各計算ノードN間で通信可能となっている。
図2において、計算ノードNは、バスBを介して接続されたCentral Processing Unit
(CPU)11と、メモリ12と、ネットワーク(NW)との通信インタフェース(通信IF)13と、入出力装置(コンソール)14を含む。CPU11は、プロセッサ(制御装置)の一例である。
メモリ12は、不揮発性記憶媒体と、揮発性記憶媒体とを含む。不揮発性記憶媒体は、例えば、Read Only Memory(ROM),ハードディスク,Solid State Drive(SSD)
,EEPROM,フラッシュメモリなどであり、CPU11によって実行されるプログラムや、プログラムの実行に際して使用されるデータを記憶する。プログラムには、並列プログラム(プロセス制御プログラム)が含まれる。揮発性記憶媒体は、例えばRandom Acc
ess Memory(RAM)であり、CPU11の作業領域として使用される。メモリ12は、「記憶装置」、「記憶媒体」の一例である。
通信IF6は、通信に係る信号変換、プロトコル変換を司る装置である。CPU11は、メモリ12に記憶された並列プログラムをロードして実行することによって、以下に説明するマスタプロセス,サブマスタプロセス,ワーカプロセスの何れかとして動作する。本実施形態では、マスタプロセス,サブマスタプロセス,及びワーカプロセスのそれぞれは、1つの計算ノードN上で動作する。計算ノードN同士は、ネットワーク(NW)を介してメッセージをやりとりすることで、プロセス間通信を行う。
入出力装置14は、キー,ボタン,ポインティングデバイス(マウス,タッチパネル等)等の少なくとも1つで形成される入力装置と、ディスプレイ装置(表示装置)とを含む。入力装置は、オペレータ(ユーザ)による情報の入力に使用される。ディスプレイ装置は、情報を表示する。
<並列プログラム>
次に、実施形態に係る並列プログラムについて説明する。並列プログラムでは、投入されたマスタワーカ型ジョブ(以下単に「ジョブ」という)を実行するための計算タスクが複数のサブタスクに分割される。計算タスクは、並列プログラムの実行によって行われる「処理」の一例であり、サブタスクは、「処理の一部」、「計算」の一例である。
また、並列プログラムの実行に使用される複数の計算ノードN上で、マスタプロセス,サブマスタプロセス,ワーカプロセスが生成される。各計算ノードNは、マスタプロセス,サブマスタプロセス,ワーカプロセスとして動作する。以下の説明において、マスタプロセス,サブマスタプロセス,ワーカプロセスを区別しない場合には、単に「プロセス」と表記することもある。
マスタプロセスは、サブタスクの管理及び実行制御を行う。すなわち、マスタプロセスは、ジョブの実行中の各時点で実行可能となったサブタスクを検索及び選択し、ワーカプロセスを生成する(ワーカプロセスを計算ノードNに割り当てる)。ワーカプロセスは、選択されたサブタスクを実行し、実行結果をマスタプロセスに返す。ワーカプロセスは、実行結果の返却後、終了(消滅)する。サブマスタプロセスは、サブマスタプロセス自身の配下とされたワーカプロセスの管理(状態の監視(異常検出)、実行結果の受領など)を行う。
本実施形態に係る並列プログラムでは、マスタプロセス及びサブマスタプロセスによる監視の階層構造が形成される。すなわち、マスタプロセスを頂点として、階層構造を有する複数のサブマスタプロセスのツリーが形成される。マスタプロセス及び各サブマスタプロセスは、サブマスタプロセス及びワーカプロセスを直下の配下プロセス(子プロセス)として持つことができ、直下の配下プロセスを管理(監視)する。マスタプロセス及びサブマスタプロセスのそれぞれは、「監視プロセス」の一例であり、ワーカプロセスは「計算プロセス」の一例である。
本実施形態に係る並列プログラムでは、監視負荷の低減及び計算ノード利用効率の向上を図ることができるように、プロセス監視構造(監視の階層構造)の動的な変更が行われる。すなわち、本実施形態では、ジョブの実行中において、サブマスタプロセスの生成及び消滅に係る処理と、サブマスタプロセス間でのワーカプロセス管理権の委譲(階層構造におけるワーカプロセスの配置位置の変更)に係る処理とが実行される。
複数の計算ノードNを計算資源としてジョブが割り当てられるとき、ジョブを実行可能
な計算ノードNの群(計算ノード群)と、当該計算ノード群の使用時間とが決定される。このとき、ジョブが要求する計算資源の大きさに応じて、複数の計算ノードNの全てがジョブに割り当てられることもあれば、複数の計算ノードNの一部がジョブに割り当てられることもある。ジョブの実行中において、ジョブに割り当てられた計算ノード群をなす各計算ノードNは、プロセスの割り当てに応じて、マスタプロセス,サブマスタプロセス,ワーカプロセスのいずれかとして動作することができる。
ジョブの実行中において、同時に(並列に)動作するワーカプロセスの個数は、計算タスクに係る計算の進捗によって常に変化し続ける。また、ワーカプロセスの個数に応じて、好適と考えられるマスタプロセス及びサブマスタプロセスによって形成される監視の階層構造は変化する。
例えば、監視対象のプロセス数が多いほど、監視に必要な計算資源やワーカプロセスで生じた異常の検出時間が増加する。さらに、ワーカプロセス数が膨大な場合では、監視に必要な計算資源の割り当てが行えない場合があり得る。ワーカプロセスの異常検出のための処理時間が増加する場合には、異常発生状態からの復帰処理や、サブタスク終了時の結果回収処理の即時性が低下する。逆に、監視用の階層数を増やした場合、ジョブの実行に利用可能な計算資源のうち、ワーカプロセスが利用可能な計算資源の割合が減少してしまう。
そこで、マスタプロセス及びサブマスタプロセスのそれぞれが直下の配下プロセスすべての死活判断(消滅させるか否か)に要する時間は、判断対象となるプロセス数に対して単調非減少であると仮定する。また、或る上位プロセスが下位に存する1つの配下プロセスを監視するために必要な時間は、当該配下プロセスが階層構造のどの位置に属するかに依存せず、ほぼ一定値であるとする。
上記のような仮定の下で、ジョブ実行中の各時点で存在するマスタプロセス及びサブマスタプロセスについて、直下の配下プロセス数ができるだけ均一になるように各サブマスタプロセスに対してサブマスタプロセス及びワーカプロセスが配置されれば、より効率的な監視が図られると考えられる。
なぜなら、直下の配下プロセス数が不均一であると、以下の問題が生じる。すなわち、サブマスタプロセスが周期的、或いは定期的な監視を行う場合において、或るサブマスタプロセスXの配下のワーカプロセス数が他のサブマスタプロセスの配下のワーカプロセス数より多いと、サブマスタプロセスXの監視処理の時間が他のサブマスタプロセスの監視処理の時間より長くなる。
例えば、サブマスタプロセスXの監視対象の配下プロセス数が3であるのに対し、他のサブマスタプロセスの全ての直下の配下プロセスが2である場合を仮定する。この場合、1つの配下プロセスに対する監視処理の時間が一定値であると、サブマスタプロセスXの監視処理の時間が他のサブマスタプロセスにおける監視処理の時間よりも長くなる。
この結果、1回のサブマスタプロセス全体の監視処理に要するトータルの時間が、サブマスタプロセスXにおける監視処理の時間に引きずられて長くなってしまう。このような監視処理の長期化を回避するために、本実施形態に係る並列プログラムでは、直下の配下プロセス数が均一となるようにプロセス(サブマスタプロセス,ワーカプロセス)の配置が行われる。
或るプロセスの直下に存在する配下プロセスの個数が均一である場合、監視の階層構造を決定するパラメータは、(1)“ワーカプロセス総数”と、(2)“直下の配下プロセ
ス数”との2つとなる。階層の深さ(マスタプロセスとワーカプロセスとの間に存在する
サブマスタプロセスの数) は、上記2つのパラメータに依存して決定される。
本実施形態では、各サブマスタプロセスに対し、“配下のワーカプロセス総数(配下ワーカプロセス総数)”の目標値、及び、“直下の配下プロセス数”の目標値が通知される。通知を受けたサブマスタプロセスは、自身が管理するパラメータが通知された目標値以下となるように、サブマスタプロセス自身及びサブマスタプロセス自身の直下にある配下プロセス(サブマスタプロセス,ワーカプロセス)を制御する。配下ワーカプロセス総数の目標値は、「第1の目標値」の一例であり、直下の配下プロセス数の目標値は、「第2の目標値」の一例である。
各階層における“配下ワーカプロセス総数”の目標値は、ジョブ実行の各時点での“ワーカプロセス総数”と、“サブマスタプロセスの階層の深さ”とにより、自動的に決定することができる。例えば、サブマスタプロセス自身がマスタプロセスから数えてn(nは自然数)番目(n階層目)のサブマスタプロセスである場合には、ワーカプロセスの総数をサブマスタプロセス自身の直下の配下プロセス数のn乗で割った数(小数点以下切り上
げ) で計算することができる。但し、上記計算において、マスタプロセスは0番目と数えられる。
図3は、例として、“ワーカプロセス総数”が“10000”であり、“直下の配下プロセス数”が“2”であるときの監視の階層構造を模式的に示す。このケースでは、n番目のサブマスタプロセスへの設定値(“配下ワーカプロセス総数”の目標値)は、10000/2(小数点以下は切り上げ)で計算することができる。
すなわち、1番目(第1層)のサブマスタプロセスへの設定値は5000、2番目(第2層)のサブマスタプロセスへの設定値は2500, ... となる。14番目(第14層)以降は、設定値が1となる。後述するサブマスタプロセスでの処理に従えば、設定値が1のサブマスタプロセスは生成されないか消滅するので、上述したケースにおける“サブマスタプロセスの階層の深さ”は13段となる。そして、第13層に位置する各サブマスタプロセスの配下に1又は2のワーカプロセスが配置される。
“直下の配下プロセス数”の目標値として、マスタワーカ型ジョブの実現方法に応じた値が設定される。一般に、単一のマスタプロセス又はサブマスタプロセスが短時間で多くの直下の配下プロセスの監視を行うことが可能な場合には、当該目標値として大きな値を設定することが可能である。
“直下の配下プロセス数”の目標値の設定方法に制限はなく、ユーザが入出力装置14を用いてマニュアルで設定してもよく、所定のアルゴリズムで自動的に設定されるようにしても良い。“直下の配下プロセス数”は、ジョブの実行中において固定的に使用されても良いが、ジョブの実行中に動的に変更されるようにしても良い。動的な変更も、マニュアルや所定アルゴリズムで実施することができる。
さらに、実施形態に係る並列プログラムでは、マスタプロセス及びサブマスタプロセスは、以下のような処理を行う。
(1)マスタプロセスは、ジョブ実行中の各時点において実行可能となったサブタスクを選択し、ワーカプロセスを生成し、生成したワーカプロセスに選択したサブタスクを実行させる。
(2)マスタプロセスは、“配下ワーカプロセス総数”の目標値および“直下の配下プロセス数”の目標値をマスタプロセスの配下プロセスに通知する。通知を受けたサブマス
タプロセスは、さらに配下のサブマスタプロセスに対し(存在する場合)、上記目標値の通知を行う。このようにして、サブマスタプロセスは、各目標値を配下のサブマスタプロセスに伝搬する。これによって、各目標値は、全てのサブマスタプロセスに伝搬される。但し、“配下ワーカプロセス総数”の目標値は、配下のサブマスタプロセスに適した値に更新される。
(3)目標値を通知されたサブマスタプロセスは、自プロセス(サブマスタプロセス自身)の“配下プロセス総数”が目標値を超過している場合には、サブマスタプロセス自身の上位プロセス(マスタプロセス、サブマスタプロセス)に対し、超過した分のワーカプロセスの管理を委譲する。管理を委譲された上位プロセス(上位のサブマスタプロセス)は、以下の処理を行う。すなわち、上位のサブマスタプロセスは、上位のサブマスタプロセス自身の直下のサブマスタプロセスであって、“配下ワーカプロセス総数”が目標値を下回っているサブマスタプロセスが存在すれば、当該サブマスタプロセスに超過分のワーカプロセスの管理を委譲する。このとき、管理を委譲可能な配下のサブマスタプロセスが存在しない場合には、管理を委譲されたサブマスタプロセスはさらに上位のサブマスタプロセスに管理を委譲する。
(4)サブマスタプロセスは、“配下サブマスタプロセス総数”は目標値以下であるが、“直下の配下プロセス数”が目標値を超過する場合には、サブマスタプロセス自身の直下にサブマスタプロセスを生成する。そして、サブマスタプロセスは、生成したサブマスタプロセスに超過分のワーカプロセスの管理を委譲する。
(5)或るサブマスタプロセスAにおいて、サブマスタプロセスAの配下にあるサブマスタプロセスBの配下にあるワーカプロセスをサブマスタプロセスAの配下に変更してもサブマスタプロセスAが管理する“直下の配下プロセス数”を超過しない場合がある。この場合、当該サブマスタプロセスAは、サブマスタプロセスBの配下にあるワーカプロセスをサブマスタプロセスAの配下に変更し、変更した配下プロセスの管理をサブマスタプロセスAに委譲させる。このとき、サブマスタプロセスBは、自発的な終了処理、または上位プロセスからの指示に従って終了する。
<サブマスタプロセスにおける処理>
次に、サブマスタプロセスの処理例について説明する。図4〜図10は、各サブマスタプロセスの処理例を示すフローチャートである。図11は、サブマスタプロセス(マスタプロセスを含む)の処理にあたって使用されるパラメータを示すテーブルを示す図であり、図12は、サブマスタプロセス(マスタプロセス含む)の処理に当たってサブマスタプロセスが管理するリスト群のテーブルを示す図である。
図4〜図10に示す処理は、上記(3)〜(5)に示したサブマスタプロセスの具体的な処理内容を示す。フローチャートに示す処理は、サブマスタプロセスとして動作する計算ノードNのCPU11によって実行される。図11に示すパラメータ及び図12に示すリスト群は、サブマスタプロセスとして動作する計算ノードNのメモリ12に記憶される。
図11において、サブマスタプロセス(マスタプロセス)として動作する計算ノードNのメモリ12には、パラメータとして、“num_child”,“num_descendant”,及び“num_child_descendant”が記憶される。“num_child”は、サブマスタプロセス(マスタプロセス)自身の直下の(子の)配下プロセスの数の目標値である。“num_child”は、「第
2の目標値」の一例である。
“num_descendant”は、マスタプロセス及び各サブマスタプロセスにおいて、その時点
で実行されている(または実行を開始しようとしている)配下ワーカプロセス総数を示し、配下のワーカプロセスの増減に応じて増減する値である。
“num_descendant”の値は、マスタプロセス及び各サブマスタプロセスで独自に計算される。マスタプロセスにおいては、新たにワーカプロセスを生成し、空き状態の計算ノードNにワーカプロセスによるサブタスクの実行を依頼したときに、マスタプロセス自身が管理する“num_descendant”の値を増加させる。一方、マスタプロセスは、下位プロセスからワーカプロセスの終了通知を受信した場合に、マスタプロセス自身が管理する“num_descendant”の値を増加させる。
これに対し、サブマスタプロセスにおいては、上位プロセスからワーカプロセスの管理権が委譲された場合に、サブマスタプロセス自身が管理する“num_descendant”の値を増加させる。一方、サブマスタプロセスは、下位プロセスからワーカプロセスの終了通知を受信した場合に、サブマスタプロセス自身が管理する“num_descendant”の値を減少させる。
“num_child_descendant”は、サブマスタプロセス(マスタプロセス)の直下の(子の)サブマスタプロセスの配下のワーカプロセス総数の目標値を示す変数である。“num_child_descendant”は、「第1の目標値」の一例である。
図12において、サブマスタプロセス(マスタプロセス)として動作する計算ノードNのメモリ12には、リスト群として、ワーカリスト“worker_list”と、サブマスタリス
ト“submaster_list”と、消滅サブマスタリスト“dead_submaster_list”とが記憶され
る。
ワーカリスト“worker_list”は、サブマスタプロセス自身の直下に配置されたワーカ
プロセスのリストである。サブマスタプロセスは、ワーカリストに登録された各ワーカプロセスに対する管理(監視など)を行う。ワーカリストには、サブマスタプロセスの直下に位置する各ワーカプロセスの情報(識別情報、属性情報など)が情報要素(要素ともいう)として登録される。図12の例では、各ワーカプロセスa,b,c・・・の情報が”worker_a”, “worker_b” “worker_c”,..として登録されている。
サブマスタリスト“submaster_list”は、サブマスタプロセス自身の直下に配置されたサブマスタプロセスのリストである。サブマスタリストは、情報要素として、直下にある各サブマスタプロセスに関する情報を含む。当該情報には、例えば、サブマスタプロセスの識別情報や、サブマスタプロセスの配下ワーカプロセスの数(子孫ワーカプロセス数)などが含まれる。子孫ワーカプロセス総数は、後述する処理において増減する。図12の例では、各サブマスタプロセスa,b,c・・・の情報が”sub_a”, “sub_b” “sub_c”,..として登録されている。
消滅サブマスタリスト“dead_submaster_list”は、サブマスタプロセス自身の配下の
サブマスタプロセスであって、終了(消滅)を決定したサブマスタプロセス(消滅サブマスタプロセス)のリストである。消滅サブマスタリストには、情報要素として、各消滅サブマスタプロセスの情報(サブマスタリストに登録されていた情報)が記憶される。図12の例では、各サブマスタプロセスx,y,z・・・の情報が”sub_x”, “sub_y” “sub_z”,..として登録されている。
図4において、処理が開始されると、最初の001において、サブマスタプロセス(CPU11)は、初期設定を行う。初期設定として、サブマスタプロセスは、メモリ12に記憶された “num_child”及び “num_descendant”の各値を0に設定する。また、サブ
マスタプロセスは、ワーカリスト“worker_list”,サブマスタリスト“submaster_list
”及び消滅サブマスタリスト“dead_submaster_list”を空(ヌル)に設定する。
次の002では、サブマスタプロセスは、ワーカリスト,サブマスタリスト,消滅サブマスタリストの各要素数がそれぞれ0(リストが空)であるか、又は親プロセスからのリクエストが受信可能か否かを判定する。002の条件が満たされる場合には(002,YES)、処理が003に進み、条件が満たされない場合には(002,NO)、処理が009に進む。
ここに、“worker_list.length”は、ワーカリストの要素数であり、サブマスタプロセス自身の直下にあるワーカプロセス数を示す。“submaster_list.length”は、サブマス
タリストの要素数であり、サブマスタプロセスの直下にあるサブマスタプロセス数を示す。“dead_submaster_list.length”は、消滅サブマスタリストの要素数であり、消滅サブマスタプロセスの数を示す。要素数は、例えば、CPU11が各リストに記憶された要素数を計数することで得られる。要素数は、事前に算出してリスト中に記憶しておき、002で参照するようにしても良い。
次の003では、サブマスタプロセスは、親プロセスからのリクエストを含むメッセージが到来するまで処理を待機する状態となる。リクエストが受信されると、サブマスタプロセスは、当該リクエストを変数“recev_req”(親プロセスから来たリクエストの内容
)に代入する。
次の004では、サブマスタプロセスは、変数“recev_req”に代入されたリクエスト
がサブマスタプロセス自身の「終了通知」であるか否かを判定する。このとき、リクエストが「終了通知」であれば(004,YES)であれば、処理が005(図5)に進む。これに対し、「終了通知」でなければ、処理が008に進む。
005では、サブマスタプロセスは、サブマスタリスト“submaster_list”に登録されている配下のサブマスタプロセスの全てに対して「終了通知」を送信する。サブマスタプロセス自身の終了に伴い、配下のサブマスタプロセスも終了させるためである。
次の006において、サブマスタプロセスは、サブマスタリスト“submaster_list”に登録されている配下のサブマスタプロセスから終了レスポンスを受信する。すると、サブマスタプロセスは、当該終了レスポンスを送信したサブマスタプロセスをサブマスタリストから取り除く。このとき、サブマスタプロセスは、終了レスポンスを含むメッセージを適宜の手法で親プロセスに送信する。
次の007で、サブマスタプロセスは、終了通知を送信した全てのサブマスタプロセスからの終了レスポンスを受信すると、親プロセスに対して終了通知(親からの終了通知に対する終了レスポンス)を送り、サブマスタプロセス自身を終了する。これにより、サブマスタプロセスは消滅する。
このように、サブマスタプロセスは、親プロセスから「終了通知」を受信した場合には、サブマスタプロセス自身の直下のサブマスタプロセスを終了させて、親プロセスに終了の報告を行った後に消滅する。なお、直下のサブマスタプロセスも、配下のサブマスタプロセスがあれば、終了通知を送信する(004、005)。結果として、或るサブマスタプロセスが消滅するときには、そのサブマスタプロセスが位置する階層より下位に位置する配下の(子孫の)サブマスタプロセスも消滅する。
図4に戻って、004から008に処理が進んだ場合、すなわち、「終了通知」以外の
リクエストが受信された場合には、008において、次の処理が実行される。サブマスタプロセスは、メモリ12に記憶された“num_child”の値を、リクエストで指定された直
下の配下プロセス数の目標値“recv_req.num_child”に設定(更新)する。また、サブマスタプロセスは、メモリ12に記憶された “num_descendant”の値を、リクエストで指
定された“num_descendant”の値“recv_req.num_descendant”に設定(更新)する。
さらに、サブマスタプロセスは、リクエストに含まれたワーカリストを、サブマスタプロセス自身のワーカリストに追加する(worker_list.push(recv_req.worker_list))。“worker_list.push”は、リクエスト中のワーカリストをサブマスタプロセスのワーカリストに追加する関数である。ワーカリストに登録されたワーカプロセスが、当該サブマスタプロセスの直下にある監視対象のワーカプロセスに該当する。ワーカリストの追加は、CPU11がリクエスト中の各ワーカプロセスの情報をメモリ12上のワーカリストに要素として登録することで行われる。
次の009以降で、サブマスタプロセスは、配下プロセス数の監視処理を行う。009では、サブマスタプロセスは、サブマスタリスト“submaster_list”に登録されている配下サブマスタプロセスの情報を、子孫ワーカプロセスの数(各サブマスタプロセスの配下のワーカプロセスの総数)について昇順(少ない順)にソートする。009の処理が終了すると、処理が010へ進む。なお、009において、サブマスタリストがヌルであれば、そのまま010へ進む。
次の010(図6)では、サブマスタプロセスは、“num_child_descendant”の値を算出する。すなわち、サブマスタプロセスは、メモリ12の“num_descendant”の値を メ
モリ12の“num_child”の値で除した値を“num_child_descendant”として設定する(
メモリ12に記憶する)。ここで、“div_ceil()”は、小数点以下を切り上げる除算を行うことを意味する。上記除算の結果として、小数点以下を切り上げた値が設定される。010の処理が、上述した“ワーカプロセス総数/(直下の配下プロセス数)”の演算に相当し、“num_child_descendant”の値が、直下のサブマスタプロセスに通知される「第1の目標値」となる。
次の011では、サブマスタプロセスは、サブマスタプロセス自身の直下にあるサブマスタプロセス数“submaster_list.length”がサブマスタプロセスの直下の配下プロセス
数の目標値“num_child”より大きいか否か(目標値を超過しているか否か)を判定する
。このとき、直下のサブマスタプロセス数が目標値を超過している場合(011,YES)には、処理が012に進み、そうでない場合(011,NO)には、処理が014(図7)に進む。
なお、011において、サブマスタリストが空(ヌル)であれば、“submaster_list.length”の値は0として扱われ、処理が014に進む。以降の処理においても、サブマス
タリストがヌルであれば、“submaster_list.length”の値は0として扱われる。
012では、サブマスタプロセスは、目標値“num_child”を超過したサブマスタプロ
セスを消滅させるために、サブマスタリスト“submaster_list”の先頭に登録されたサブマスタプロセス(0番目のサブマスタプロセス:submaster_list[0])に対し、「終了通
知」を送信する。
次の013では、サブマスタプロセスは、サブマスタリスト“submaster_list”から0番目の要素(先頭の要素)を取り除き、消滅サブマスタリスト“dead_submaster_list”
に追加する。「終了通知」の送信先に該当するサブマスタプロセスからのレスポンスの待ち受けに使用するためである。
その後、処理が011に戻り、サブマスタプロセスは、再び直下のサブマスタプロセス数が目標値“num_child”を超過しているか否かを判定する。このとき、未だ目標値を超
過している場合には、サブマスタリストの先頭(submaster_list[0])に対する012及
び013の処理が実行される。このようにして、サブマスタプロセス自身の直下のサブマスタプロセス数が目標値“num_child”以下になるまで、011〜013のループ処理が
繰り返される。
処理が図7の014に進んだ場合には、サブマスタプロセスは、サブマスタプロセス自身の直下にあるサブマスタプロセスの数“submaster_list.length”とサブマスタプロセ
ス自身の直下にあるワーカプロセスの数“worker_list.length”との和(直下の配下プロセス数(子プロセス数))を求める。サブマスタプロセスは、求めた直下の配下プロセス数が、サブマスタプロセス自身の直下の配下プロセス数の目標値“num_child”以下か否
かを判定する。このとき、直下の配下プロセス数が目標値を上回るとき(014,NO)には、処理が022(図8)に進む。これに対し、直下の配下プロセス数が目標値以下のとき(014,YES)には、処理が015に進む。
015では、サブマスタプロセスは、ループカウンタiの値を0に設定する。また、サブマスタプロセスは、変数“new_num_child”として、現在の直下の配下プロセス数“worker_list.length+submaster_list.length”を設定する。
016〜021の処理では、サブマスタリストのi番目(最初は先頭)から順に直下のサブマスタプロセスの配下プロセス数を検査する。サブマスタプロセスは、直下のサブマスタプロセスの配下ワーカプロセス数が所定条件を満たせば、当該サブマスタプロセスを消滅させる。さらに、サブマスタプロセスは、当該サブマスタプロセスの配下のワーカプロセスの配置位置をサブマスタプロセス自身の直下に引き上げる。
具体的に説明すると、016では、サブマスタプロセスは、ループカウンタiの値が直下のサブマスタプロセス数“submaster_list.length”より小さいか否かを判定する。こ
のとき、iの値が直下のサブマスタプロセス数より小さいとき(016,YES)には、処理が017に進み、そうでないとき(016,NO)には、処理が033(図10)に進む。当該処理は、サブマスタリストのi番目(最初は先頭(=0))のサブマスタプロセスから順に、リスト中の全サブマスタプロセスについて017〜021のループ処理を行うことを意味する。以下、サブマスタリストにおけるi番目の要素(サブマスタプロセス)を“サブマスタプロセス[i]”と表記する。
017では、サブマスタプロセスは、現在の直下の配下プロセス数“new_num_child”
とサブマスタプロセス[i]の子孫のワーカプロセス総数“submaster_list[i].num_descendant”との和から1を減じたものを算出する。そして、サブマスタプロセスは、算出した値がサブマスタプロセス自身の直下の配下プロセス数の目標値“num_child”以下か否か
を判定する。このとき、算出値が目標値以下であれば(017,YES)、処理が018に進み、そうでなければ(017,NO)、処理が021に進む。
017の処理によって、現在の直下の配下プロセス数にサブマスタプロセス[i]の配下ワーカプロセス総数を加えても目標値“num_child”を超えないか否かが検査される。目
標値を超えないことは、当該サブマスタプロセス[i]の配下ワーカプロセスの管理を上位プロセスに委譲(移管)しても問題ない(目標値以下に収まる)ことを意味する。なお、上記算出値の算出において減じられる1は、管理権の委譲(ワーカプロセスの配置変更)に伴い消滅させるサブマスタプロセスの数を表している。
018では、サブマスタプロセスは、サブマスタプロセス[i]に対して「終了通知」を送信する。次の019では、サブマスタプロセスは、サブマスタリストからi番目の要素(サブマスタプロセス[i])を取り除き、消滅サブマスタリスト“dead_submaster_list
”に追加する。
次の020では、現在の直下の配下プロセス数“new_num_child”に、サブマスタプロ
セス[i]の子孫プロセス数からサブマスタプロセス[i]の数(1)を減じたもの“(submaster_list[i].num_descendant)−1”を加える。
次の021では、サブマスタプロセスは、サブマスタリストにおいて次のサブマスタプロセスを指すようにループカウンタiの値を設定する。その後、処理が016に戻る。その後、サブマスタリストの残りのサブマスタプロセスがあれば、017〜021の処理が実行される。
サブマスタリスト中の全てのサブマスタプロセスについて017〜021の処理が終了すると、016にてNOの判定がなされ、処理が033(図10)に進む。なお、017の処理においてNOの判定がなされた場合には、以降の処理を終了して、処理が033に進むようにしても良い。
022(図8)に処理が進むと、サブマスタプロセスは、ループカウンタiの値を0に設定する。次の023では、サブマスタプロセスは、ループカウンタiの値が直下のサブマスタプロセス数“submaster_list.length”より小さいか否かを判定する。このとき、
iの値が直下のサブマスタプロセス数より小さいとき(023,YES)には、処理が024に進み、そうでないとき(023,NO)には、処理が029(図9)に進む。
以下の024〜028では、サブマスタプロセスは、自プロセスの直下のサブマスタプロセスに空きがあれば、当該サブマスタプロセスに自プロセスの直下のワーカプロセスの管理権を委譲する(配置変更を行う)ためのループ処理を実行する。
具体的には、024では、サブマスタプロセス[i]の配下ワーカプロセス総数“submaster_list[i].num_descendant”が、サブマスタプロセス自身の直下のサブマスタプロセスの配下ワーカプロセス総数の目標値“num_child_descendant”未満であるかが判定される。このとき、サブマスタプロセス[i]の配下ワーカプロセス総数が目標値未満であれば(024,YES)、処理が025に進み、そうでなければ(024,NO)、処理が028へ進む。
025へ処理が進むことは、サブマスタプロセス[i]にさらなるワーカプロセスを管理する余裕があることを意味する。次の025では、サブマスタプロセスは、目標値“num_child_descendant”から“submaster_list[i].num_descendant”を減じた値を求める。この減算値は、サブマスタプロセス[i]に対してさらに割り当て可能なワーカプロセスの数(余裕の数)を意味する。
サブマスタプロセスは、サブマスタプロセス自身の直下にあるワーカプロセスの数“worker_list.length”が上記の減算値以上であるか否かを判定する。このとき、ワーカプロセスの数が減算値以上であれば(025,YES)、処理が026に進み、そうでなければ(025,NO)、処理が027に進む。
026では、サブマスタプロセスは、ワーカリスト“worker_list”から、上記減算値
(余裕の数)と同数のワーカプロセスを取り除き、サブマスタプロセス[i]に割り当てる。このとき、サブマスタプロセスは、サブマスタプロセス[i]の子孫ワーカプロセス数を
割り当てたワーカプロセスの数だけ増加させる。その後、処理が028に進む。026の処理により、サブマスタプロセス[i]の直下にある配下ワーカプロセス数が目標値“num_child_descendant”となる。
これに対し、027に処理が進んだ場合には、サブマスタプロセスは、ワーカリストにある全てのワーカプロセス(サブマスタプロセス自身の直下にある配下のワーカプロセスの全て)をサブマスタプロセス[i]に割り当てる。サブマスタプロセス[i]にある余裕の数がサブマスタプロセスの直下のワーカプロセス数より多いからである。このとき、サブマスタプロセスは、サブマスタプロセス[i]の子孫ワーカプロセス数を割り当てたワーカプロセスの数だけ増加させる。その後、処理が028に進む。
028では、サブマスタプロセスは、サブマスタリストにおける次のサブマスタプロセスを指すようにiの値を設定する。その後、処理が023に戻る。サブマスタプロセスの直下にある全てのサブマスタプロセスに関する024〜028の処理が終了すると、023にてNOの判定がなされ、処理が029(図9)に進む。
029では、サブマスタプロセスは、サブマスタプロセス自身の直下にあるサブマスタプロセスの数“submaster_list.length”がサブマスタプロセス自身の直下の配下プロセ
ス数の目標値“num_child”未満であるか否かを判定する(条件1)。また、サブマスタ
プロセスは、サブマスタプロセス自身の直下のプロセス数(submaster_list.length+worker_list.length)が目標値“num_child”より大きいかを判定する(条件2)。
このとき、条件1及び条件2が共に満たされるとき(029,YES)には、処理が030に進み、そうでない場合(029,NO)には、処理が033(図10)に進む。030に処理が進むことは、サブマスタプロセスの直下の配下プロセス数が目標値を超過している一方で、サブマスタプロセス自身の直下に新たなサブマスタプロセスを作成する余裕があることを意味する。
030では、サブマスタプロセスは、新たなサブマスタプロセスを作成する。次の031では、ワーカリスト(worker_list)からサブマスタプロセス自身の直下のサブマスタ
プロセスの配下ワーカプロセス総数の目標値(num_child_descendant)と同数のワーカプロセスを取り除き、新たなサブマスタプロセスに割り当てる(管理権を委譲する)。このとき、サブマスタプロセスは、新たなサブマスタプロセスの子孫ワーカプロセス数として、割り当てたワーカプロセスの数を設定する。
032では、サブマスタプロセスは、サブマスタリストの要素として、新たなサブマスタプロセスの情報をサブマスタリストに追加する。その後、サブマスタプロセスは、処理を029に戻す。029において再び条件1及び条件2が満たされる場合には(029,YES)、030〜032の処理が実行される。これに対し、029にてNOの判定がなされた場合には、処理が033(図10)に進む。
033では、サブマスタプロセス自身の配下プロセスに送信するリクエストを生成する。すなわち、サブマスタプロセスは、“num_child”の送信リクエスト“send_req.num_child”として、サブマスタプロセス自身の直下の配下プロセス数の目標値“num_child”を設定する。また、サブマスタプロセスは、“num_descendant”の送信リクエスト“send_req.num_descendant”として、010で算出されメモリ12に記憶した“num_child_descendant”の値を設定する。
さらに、サブマスタプロセスは、“worker_list”の送信リスト“send_req.worker_list”として、これまでの処理においてサブマスタプロセスと紐づけられた(サブマスタプ
ロセスに割り当てられた)ワーカプロセスの情報を設定する。
次の034では、サブマスタリスト(submaster_list)中の各要素、すなわち、サブマスタリストに登録された各サブマスタプロセスに対して033で生成したリクエストを含むメッセージを送信する。但し、送信されるリクエストの内容は、各サブマスタプロセスに対するワーカプロセスの割り当て状況によって相違する。
035では、サブマスタプロセスは、サブマスタリストの要素に該当するサブマスタプロセス、消滅サブマスタリストの要素に該当するサブマスタプロセスからのレスポンスを含むメッセージが到着していれば、当該レスポンスを受信する。レスポンスが終了レスポンスである場合には、サブマスタプロセスは、当該終了レスポンスの送信元のサブマスタプロセスを、サブマスタリスト又は消滅サブマスタリストから取り除く。
また、サブマスタプロセスは、レスポンスの内容にワーカプロセスの情報(配下プロセスから管理が委譲されたワーカプロセスの管理情報)が含まれる場合には、当該ワーカプロセスの情報をワーカリストに追加する。また、サブマスタプロセスは、レスポンスにワーカプロセスによるサブタスクの実行結果が含まれる場合には、当該結果を結果リスト(result_list)に追加する。
036では、サブマスタプロセスに到着したレスポンスとして、ワーカリスト中の要素に該当するワーカプロセスが終了レスポンス及びサブタスクの実行結果を受け取った場合には、サブマスタプロセスは、当該ワーカプロセスの情報をワーカリストから取り除くとともに、実行結果を結果リストに追加する。このように、マスタプロセスから依頼された処理の実行が終了したワーカプロセスは消滅したものとして扱われる。
サブマスタプロセスは、ワーカプロセスの情報をワーカリストから取り除く場合には、サブマスタリストを参照し、当該ワーカプロセスを直下に有していたサブマスタプロセスの子孫ワーカプロセス数を減らす。このとき、サブマスタプロセスは、“num_descendant”の値を減少させる。
037では、サブマスタプロセスは、サブマスタプロセス自身の親プロセス(サブマスタプロセス又はマスタプロセス)に結果リストの内容を送信する。結果リストの内容は、最終的にマスタプロセスに到達し、マスタプロセスはサブタスクの実行結果を集計する。
また、サブマスタプロセスは、自プロセスの子孫ワーカプロセス数(配下ワーカプロセス数)が目標値“num_descendant”を超過している場合には、超過分の数に相当するワーカプロセスの情報をワーカリストから取り除く。取り除いた情報は、親プロセス(サブマスタプロセス又はマスタプロセス)に送信する。親プロセス(上位のサブマスタプロセス)において、ワーカリストから取り除かれた情報は、親プロセスのワーカリストに追加され、親プロセスの直下のワーカプロセスとして扱われる。037の処理が終了すると、処理が002(図4)に戻る。
<マスタプロセスにおける処理>
マスタプロセスは、これまでに説明したサブマスタプロセスが有する機構に加え、サブタスクを選択する機構とワーカプロセスを生成する機構とを備えたプロセスである。サブマスタプロセスは、マスタプロセスによって生成されたワーカプロセスの管理権を受け取るだけであるが、マスタプロセスは、自らワーカプロセスを生成し、マスタプロセス自身の直下の配下にすることができる。
マスタプロセスの具体的な処理は、図4〜図10に示したサブマスタプロセスの処理と
ほぼ同様である。但し、以下の点で、サブマスタプロセスの処理と異なる。図13は、マスタプロセスの処理例を示すフローチャートである。すなわち、図13に示すように、図4の002に相当する002Aにおいて、マスタプロセスは、「親プロセスからのリクエストが受信可能か」の判定に代えて、「新規のサブタスクが実行可能か否か」の判定を行う。このとき、新規のサブタスクが実行可能であれば(002A,YES)、003Aにおいて、実行可能なサブタスクについてワーカプロセスを生成する。
次の004Aでは、マスタプロセスは、全てのサブタスクが終了したか否かの判定を行う。このとき、全てのサブタスクが終了している場合には(004A,YES)、マスタプロセスは、図5の005〜007の処理を実行し、処理を終了する。但し、マスタプロセスの上位プロセスは存在しない。このため、マスタプロセスは、006における親プロセスへの終了レスポンスの転送や007における親プロセスへの終了通知送信は行わない。
004Aにおいて、全てのサブタスクが終了していない場合には(004A,NO)、マスタプロセスは、008Aにて、以下の処理を行う。すなわち、“num_child”の値と
して、上位プロセスから通知された値ではなく、マニュアル操作や所定アルゴリズムで設定された(メモリ12に予め記憶されている)“直下の配下プロセス数”の値を“num_child”に設定する。また、マスタプロセスは、003Aにて生成したワーカプロセスの数
(ワーカプロセス総数)を“num_descendant”の値に設定する。さらに、003Aにて生成したワーカプロセスの情報をワーカリストに追加する。その後、処理が009に進む。
以上の処理を除き、マスタプロセスは、図6〜図10に示したサブマスタプロセスの処理と同じ処理を行う。このため、詳細な説明は省略する。マスタプロセスは、008Aで設定した“num_child”及び “num_descendant”を用いて“num_child_descendant”を算出する(図6の010)。また、マスタプロセスは、003Aにて生成したワーカプロセスの数が“num_child”を上回っていれば、直下にサブマスタプロセスを生成する(図9
,030)。このとき、マスタプロセスは、該サブマスタプロセスに“num_child_descendant”の数のワーカプロセスを割り当てる(031)。
さらに、マスタプロセスは、当該サブマスタプロセスに対して“num_child”及び “num_descendant”(010で算出した“num_child_descendant”)及びワーカリストのリクエストを送信(通知)する(図10の033,034)。これによって、マスタプロセスの直下のサブマスタプロセスは、図4の003でリクエストを受信することができる。さらに、直下のサブマスタプロセスは、008で“num_child”及び“num_descendant”の
設定並びにワーカリストの追加を行うことができ、以降の処理を行うことが可能となる。
<並列プログラム実行時の動作>
ジョブを実行する並列プログラムの実行に際しては、例えば、ジョブ実行の開始時点での初期設定として、ジョブが割り当てられた複数の計算ノードN上で、マスタプロセスと、必要な数のサブマスタプロセス及びワーカプロセスが生成され、各計算ノードNに割り当てられる。
すなわち、ジョブ実行開始に当たり、或る計算ノードN上にマスタプロセスが生成され、マスタプロセスが開始時点で実行可能なサブタスクを選択し、ワーカプロセスを生成する(他の計算ノードにワーカプロセスを割り当て、実行を依頼する)(図11,003A)。当該ワーカプロセスとして動作する計算ノードNは、サブタスクを実行する。
マスタプロセスは、ワーカプロセスの生成に係る処理を繰り返して、ジョブ実行開始時点でのワーカプロセス総数(例えば10000)を求める(図11,003A)。マスタ
プロセスは、予め設定された(メモリ12に記憶された)「直下の配下プロセス数」(例えば2)を用いて、マスタプロセスの直下の(子の)各サブマスタプロセスに対する配下ワーカプロセス総数“5000”を求める(図6,010)。
マスタプロセスは、「直下の配下プロセス数=2」に従って、2つのサブマスタプロセスを生成する(他の計算ノードNにサブマスタプロセスを割り当てて当該サブマスタプロセスの実行を依頼する)(図8,022〜028のループ)。そして、マスタプロセスは5000のワーカプロセスの管理(監視)を、各サブマスタプロセスに依頼する(図10,033,034)。
マスタプロセスの直下に位置する(マスタプロセスの子プロセスに該当する)各サブマスタプロセス(第1層)は、図4〜図10に示した処理を行う。このとき、サブマスタプロセスは、003(図4)において、マスタプロセスからリクエストを受信する。リクエストの内容は、“num_child=2”,“num_descendant=5000”,“worker_list(5
000個分のワーカプロセスのリスト)”である。各サブマスタプロセスは、010(図6)において、“num_child_descendant=2500”を求める。そして、各サブマスタプロセスは、029〜032のループ(図9)において、サブマスタプロセス自身の直下に2つのサブマスタプロセス(第2層)を生成する(030)。マスタプロセスは、2500個分のワーカプロセスの管理権を、各配下のサブマスタプロセス(第2層)に委譲する(031)。
033及び034(図10)で、リクエストが直下のサブマスタプロセスのそれぞれとして動作予定の計算ノードNに送られ、各計算ノードNがサブマスタプロセス(第2層)として動作することで、サブマスタプロセス(第2層)が動作する。生成された第2層のサブマスタプロセスは、図4〜図10に示した処理を実行することで、さらに、配下に2つのサブマスタプロセス(第3層)を持つ状態となる。このような動作が繰り返されることで、図3に示したようなサブマスタプロセスの階層構造が形成されていく。このとき、ワーカプロセスの管理権は、下層のサブマスタプロセスに委譲される。
第13層の各サブマスタプロセスに通知される目標値は、“num_child=2”,“num_descendant=2”であり、ワーカリスト“worker_list”には、1個又は2個のワーカプロセスの情報が含まれた状態となる。この場合、029(図9)の条件は満たされないのでNOの判定がなされる。従って、第14層のサブマスタプロセスは生成されず、第13層に位置するサブマスタプロセス(8192個)が10000個のワーカプロセスのうちの1個又は2個を監視する状態となる(図3参照)。
022〜028の処理によって、マスタプロセス及び各サブマスタプロセスは、直下にサブマスタプロセスを生成してワーカプロセスの管理(監視)を依頼するので、自身の監視負荷を軽減(低減)することができる。そして、ワーカプロセスが最下層のサブマスタプロセスに配置された時点で、マスタプロセス及び各サブマスタプロセスが負担する監視コスト(監視対象のプロセス数)は目標値の2個以下に納まるので、各プロセスの監視コストを均一に分散することができる。すなわち、トータルの監視時間の長期化を抑えることができる。これは、ジョブ実行の高速化に貢献する。
サブマスタプロセスは、図4〜図10に示した処理の実行において、図6の011〜013のループ処理や、図7の014〜021の処理を実行することで、サブマスタプロセスを終了させることができる。これによって、サブマスタプロセスの終了によって空き状態となった計算ノードNをワーカプロセスの実行に使用することができる。よって計算ノードの利用効率を高めることが可能となる。
生成されたワーカプロセスがサブタスクを実行することで、ジョブの実行が進む。ワーカプロセスはサブタスクの実行が終了すると、実行結果を上位プロセス(サブマスタプロセス,マスタプロセス)に返却し、消滅する。一方、マスタプロセスは、未実行のサブタスク(例えば、或るサブタスクの実行結果を利用するサブタスク)が実行可能となると、当該サブタスクを実行するためのワーカプロセスを生成し、当該サブタスクを実行させる。
このように、ジョブ実行の進行に伴い、複数の計算ノードN上に存在するワーカプロセスの総数は変化する。マスタプロセスは、適宜のタイミングにおいて、ワーカプロセス総数の変化に伴い更新した“num_descendant”を含むリクエストを下位プロセスに送信することができる。典型的には、マスタプロセスは、新たなワーカプロセスを生成した場合、当該ワーカプロセスをマスタプロセス自身の直下に配置し、“num_child”の値に従って
、当該ワーカプロセスの配置位置を下位プロセスに移動させる。或いは、ワーカプロセスの減少に基づき、階層数が減少するように更新した“num_descendant”を含むリクエストを下位プロセスに送信する。
これによって、ジョブの実行に使用される計算ノード群のうち、マスタプロセス及びサブマスタプロセスが割り当てられた計算ノードNの割合をワーカプロセスが割り当てられた計算ノードNの割合より小さくすることができ、計算ノードNが効率的に利用されている状態を維持することができる。また、新規のワーカプロセスのために計算ノードを空けておくことができる。
或いは、マスタプロセスは、ワーカプロセスの増減に応じて、適宜のタイミングで更新した“num_child”の値を含むリクエストを下位プロセスに送信することができる。例え
ば、ワーカプロセス数の減少に伴い“num_child”の値を増加させたり、ワーカプロセス
数の増加に伴い“num_child”の値を減少させたりすることができる。この場合でも、マ
スタプロセス及びサブマスタプロセスが監視する(直下に配置される)プロセス数は、マスタプロセス及びサブマスタプロセス間で均等となるので、監視コストの均一化が維持される。
実施形態では、マスタプロセス,サブマスタプロセス,及びワーカプロセスによって形成される階層構造は、マスタプロセス及びサブマスタプロセスのそれぞれとして動作する複数の計算ノードNのメモリ12にて分散管理される。
上述したように、マスタプロセス及びサブマスタプロセスは、直下の配下のプロセス(サブマスタプロセス,ワーカプロセス)の情報を、ワーカリスト“worker_list”,及び
サブマスタリスト“submaster_list”(図12)で管理する。ワーカリスト“worker_list”,及びサブマスタリスト“submaster_list”は、マスタプロセスとして動作する計算
ノードN,サブマスタプロセスとして動作する計算ノードNのそれぞれのメモリ12に記憶される。
マスタプロセス及びサブマスタプロセスのそれぞれは、自プロセスの直下にサブマスタプロセスを生成することができる。当該生成は、マスタプロセス又はサブマスタプロセスとして動作する計算ノードNが空き状態の計算ノードNに新たにサブマスタプロセスとして動作することを依頼することで行われる。マスタプロセスとして動作する計算ノードNにおいて、他の各計算ノードNのアドレスは既知である。このとき、マスタプロセス又はサブマスタプロセスを管理するサブマスタリスト(メモリ12)の情報要素に新たなサブマスタプロセスの情報が追加される。これによって、階層構造が変更される。
また、新たなサブマスタプロセスを生成したマスタプロセス又はサブマスタプロセスと
して動作する計算ノードN(CPU11)は、新たなサブマスタプロセスが管理するワーカプロセスの情報を送る。新たにサブマスタプロセスとして動作する計算ノードNのCPU11は、例えば、上記依頼の送信元アドレスから、新たなサブマスタプロセスの上位プロセスの存在位置を認識することができる。また、当該CPU11は、ワーカプロセスの情報をメモリ12上のワーカリスト(図12)に追加する。これによって、ワーカプロセスの配置位置が、上位プロセスから直下のサブマスタプロセスへ変更されたこととなる。
マスタプロセス又はサブマスタプロセスとして動作する計算ノードN(CPU11)は、直下のサブマスタプロセスを消滅させる場合に、当該直下のサブマスタプロセスとして動作する計算ノードNに終了通知を送信し、メモリ12に記憶されたサブマスタリスト(図6)から、終了対象のサブマスタプロセスの情報を削除する。これによって、サブマスタプロセスが階層構造から消滅した状態となる。但し、消滅させるサブマスタプロセスへ終了通知を送ってから、その応答が受信されるまでの間は、当該サブマスタプロセスの情報が消滅サブマスタリスト(図12)に登録される。
さらに、サブマスタプロセスとして動作する計算ノードNは、当該サブマスタプロセスの直下のワーカプロセスの位置を上位プロセスの直下に移動させる場合には、移動対象のワーカプロセスの情報を、上位プロセスとして動作する計算ノードNに送る。このとき、当該計算ノードNは、移動対象のワーカプロセスの情報をメモリ12のワーカリスト(図12)から削除する。一方、ワーカプロセスの情報を受信した計算ノードNは、メモリ12に記憶されたワーカリスト(図12)にワーカプロセスの情報を追加する。これによって、ワーカプロセスの配置位置が上位プロセスへ変更される。このとき、例えば、ワーカプロセスの上位プロセスとして動作する計算ノードNがワーカプロセスとして動作する計算ノードNに通知を行うことで、当該計算ノードNは、上位プロセスのアドレスを知ることができ、ワーカプロセスの終了時に、上位プロセスに終了通知を送ることができるようになる。終了通知を受けた上位プロセスのCPU11は、終了通知に対応するワーカプロセスの情報をメモリ12のワーカリストから削除する。これによって、階層構造から当該ワーカプロセスが消滅した状態となる。
以上のように、各計算ノードNは、通知や依頼の送信元のアドレスをメモリ12で管理することで、階層構造上の上位プロセスを認識することができる。各計算ノードNは、直下の配下のサブマスタプロセス及びワーカプロセスの情報をメモリ12に記憶したサブマスタリスト及びワーカリストで管理する。そして、各計算ノードNは、ワーカプロセスの情報を計算ノードN間でやりとりすることで、階層構造におけるワーカプロセスの配置位置を変更することができる。また、マスタプロセス又はサブマスタプロセスとして動作する各計算ノードNが自ノードのメモリ12に記憶されたサブマスタリストを更新する。これによって、階層構造上で、サブマスタプロセスが新たに発生したり、消滅したりする。
実施形態によれば、マスタプロセス及びサブマスタプロセスのそれぞれ(監視プロセス)において、配下ワーカプロセスの総数の目標値(第1の目標値)と直下の配下プロセス数の目標値(第2の目標値)とに基づいて、監視の階層構造を変更する処理が実行される。これによって、ジョブ実行中に変化するワーカプロセス数に応じて、プロセス監視の即応性とノード利用効率のトレードオフ関係を考慮し、より良いプロセスの階層構造を維持することが可能となる。換言すれば、監視負荷を抑え且つ計算ノードの利用効率の向上を図ることができる。従って、並列計算機システムにおける計算資源の効率的な利用や、効率的な資源割当によるジョブ実行の高速化を図ることができる。
N・・・計算ノード
11・・・CPU
12・・・メモリ
13・・・通信インタフェース

Claims (10)

  1. 所定計算をそれぞれ行う複数の計算プロセスと複数の監視プロセスとを生成し、各監視プロセスが自身の直下に配置された監視プロセス及び計算プロセスを監視する監視の階層構造を形成する並列プログラムを実行可能な複数の計算ノードであって、各計算ノードが、前記計算プロセスが割り当てられたときに前記計算プロセスとして動作し、前記監視プロセスが割り当てられたときに前記監視プロセスとして動作する複数の計算ノードを含み、
    前記監視プロセスが割り当てられた各計算ノードが、割り当てられた監視プロセスの配下の計算プロセスの総数の目標値である第1の目標値と、前記割り当てられた監視プロセスの直下に配置される監視プロセス及び計算プロセスの数の目標値である第2の目標値とに基づいて、前記監視の階層構造を変更する処理を行う
    ことを特徴とする並列計算機システム。
  2. 前記監視プロセスが割り当てられた各計算ノードは、前記監視の階層構造を変更する処理として、前記割り当てられた監視プロセスの直下の監視プロセスの生成及び消滅、並びに前記直下の監視プロセスの生成及び消滅に伴う計算プロセスの配置変更を制御する
    請求項1に記載の並列計算機システム。
  3. 前記監視プロセスが割り当てられた各計算ノードは、前記割り当てられた監視プロセスの配下の計算プロセスの総数が前記第1の目標値を超過するときに、前記第1の目標値を超過する数の計算プロセスの配置位置を前記割り当てられた監視プロセスの上位プロセスに該当する監視プロセスの直下に変更することを決定する
    請求項1又は2に記載の並列計算機システム。
  4. 前記監視プロセスが割り当てられた各計算ノードは、前記割り当てられた監視プロセスの直下に計算プロセスが配置されており、且つ直下に配置された監視プロセス及び計算プロセスの数が前記第2の目標値を超過しており、さらに前記割り当てられた監視プロセスの直下に配下プロセス数が前記第2の目標値を下回る配下の監視プロセスが存在するときに、前記配下の監視プロセスの配下プロセス数が前記第2の目標値を超えない範囲で前記割り当てられた監視プロセスの直下にある計算プロセスの配置位置を前記配下の監視プロセスの直下に変更することを決定する
    請求項1から3のいずれか1項に記載の並列計算機システム。
  5. 前記監視プロセスが割り当てられた各計算ノードは、前記割り当てられた監視プロセスの直下に配置された監視プロセスの数が前記第2の目標値を下回っているが、前記割り当てられた監視プロセスの直下に配置された監視プロセス及び計算プロセスの数が前記第2の目標値を上回る場合には、前記割り当てられた監視プロセスの直下に新たな監視プロセスを生成し、前記割り当てられた監視プロセスの直下にある計算プロセスの一部又は全部の配置位置を前記新たな監視プロセスの直下に変更することを決定する
    請求項1から4のいずれか1項に記載の並列計算機システム。
  6. 前記監視プロセスが割り当てられた各計算ノードは、前記割り当てられた監視プロセスの直下に配置された或る監視プロセスの直下にある計算プロセスの配置位置を前記割り当てられた監視プロセスの直下に変更しても当該割り当てられた監視プロセスの直下に配置される監視プロセス及び計算プロセスの数が前記第2の目標値を超えないときに、前記或る監視プロセスを終了させて前記或る監視プロセスの直下にある計算プロセスの配置位置を前記割り当てられた監視プロセスの直下に変更することを決定する
    請求項1から4のいずれか1項に記載の並列計算機システム。
  7. 前記監視プロセスが割り当てられた各計算ノードは、前記第1の目標値を前記割り当てられた監視プロセス向けに供給された第2の目標値で除して求めた値を、前記割り当てられた監視プロセスの直下に配置された監視プロセスにおける第2の目標値に決定する
    請求項1から6のいずれか1項に記載の並列計算機システム。
  8. 前記監視プロセスが割り当てられた各計算ノードは、前記割り当てられた監視プロセスの直下に配置された監視プロセスの数が前記第2の目標値を超過するときに、前記直下に配置された監視プロセスの数が前記第2の目標値以下となるように、前記直下に配置された監視プロセスのうちの一部を終了させることを決定する
    請求項1から7のいずれか1項に記載の並列計算機システム。
  9. 複数の計算ノードによって実行される、所定計算をそれぞれ行う複数の計算プロセスと複数の監視プロセスとを生成し、各監視プロセスが自身の直下に配置された監視プロセス及び計算プロセスを監視する監視の階層構造を形成するプロセス制御プログラムであって、
    各計算ノードに対し、
    前記計算プロセスが割り当てられたときに前記計算プロセスとして動作する処理と、
    前記監視プロセスが割り当てられたときに前記監視プロセスとして動作し、割り当てられた監視プロセスの配下の計算プロセスの総数の目標値である第1の目標値と、前記割り当てられた監視プロセスの直下に配置される監視プロセス及び計算プロセスの数の目標値である第2の目標値とに基づいて、前記監視の階層構造を変更する処理と
    を実行させるプロセス制御プログラム。
  10. 複数の計算ノードによって実行される、所定計算をそれぞれ行う複数の計算プロセスと複数の監視プロセスとを生成し、各監視プロセスが自身の直下に配置された監視プロセス及び計算プロセスを監視する監視の階層構造を形成する並列プログラムを実行可能な複数の計算ノードを含む並列計算機システムの制御方法であって、
    各計算ノードが、
    前記計算プロセスが割り当てられたときに前記計算プロセスとして動作し、
    前記監視プロセスが割り当てられたときに前記監視プロセスとして動作し、割り当てられた監視プロセスの配下の計算プロセスの総数の目標値である第1の目標値と、前記割り当てられた監視プロセスの直下に配置される監視プロセス及び計算プロセスの数の目標値である第2の目標値とに基づいて、前記監視の階層構造を変更する処理を行う
    ことを含む並列計算機システムの制御方法。
JP2014106115A 2014-05-22 2014-05-22 並列計算機システム,プロセス制御プログラム,及び並列計算機システムの制御方法 Active JP6303806B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2014106115A JP6303806B2 (ja) 2014-05-22 2014-05-22 並列計算機システム,プロセス制御プログラム,及び並列計算機システムの制御方法
EP15168275.4A EP2950212A3 (en) 2014-05-22 2015-05-19 Parallel computer system and method for controlling parallel computer system
US14/718,132 US9942309B2 (en) 2014-05-22 2015-05-21 Parallel computer system and method for controlling parallel computer system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014106115A JP6303806B2 (ja) 2014-05-22 2014-05-22 並列計算機システム,プロセス制御プログラム,及び並列計算機システムの制御方法

Publications (2)

Publication Number Publication Date
JP2015222476A true JP2015222476A (ja) 2015-12-10
JP6303806B2 JP6303806B2 (ja) 2018-04-04

Family

ID=53189715

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014106115A Active JP6303806B2 (ja) 2014-05-22 2014-05-22 並列計算機システム,プロセス制御プログラム,及び並列計算機システムの制御方法

Country Status (3)

Country Link
US (1) US9942309B2 (ja)
EP (1) EP2950212A3 (ja)
JP (1) JP6303806B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2551518B (en) 2016-06-20 2020-06-03 Jaguar Land Rover Ltd Control system having a hierarchical distributed architecture
CN106776034B (zh) * 2016-12-27 2020-07-31 国网浙江省电力公司电力科学研究院 一种任务批处理计算方法、主站计算机及系统
US10642718B2 (en) * 2018-07-31 2020-05-05 Nutanix, Inc. Framework for testing distributed systems

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005346563A (ja) * 2004-06-04 2005-12-15 Mitsubishi Electric Corp 並列処理システムおよび並列処理方法
WO2006029714A2 (en) * 2004-09-13 2006-03-23 Fujitsu Siemens Computers, Inc. Method and computer arrangement for controlling and monitoring a plurality of servers
US20090037571A1 (en) * 2007-08-02 2009-02-05 Erol Bozak Dynamic Agent Formation For Efficient Data Provisioning
JP2010045720A (ja) * 2008-08-18 2010-02-25 Oki Electric Ind Co Ltd ネットワークシステム、ノード及び通信プログラム
US20120303670A1 (en) * 2011-05-26 2012-11-29 Gillen Robert E Cloud computing method for dynamically scaling a process across physical machine boundaries
JP2014063418A (ja) * 2012-09-24 2014-04-10 Fujitsu Ltd 管理プログラム、管理方法、管理装置及び情報処理システム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7418470B2 (en) 2000-06-26 2008-08-26 Massively Parallel Technologies, Inc. Parallel processing systems and method
EP1502203A2 (en) 2002-01-10 2005-02-02 Massively Parallel Technologies, Inc. Parallel processing systems and method
JP2003280933A (ja) 2002-03-20 2003-10-03 Nippon Telegr & Teleph Corp <Ntt> リソース管理プロセスのn重化システム
JP4203001B2 (ja) 2004-01-28 2008-12-24 株式会社東芝 並列計算方法、並列計算プログラム及び計算機
CN102486739B (zh) * 2009-11-30 2015-03-25 国际商业机器公司 高性能计算集群中分发数据的方法和系统
US20120185776A1 (en) * 2011-01-14 2012-07-19 Microsoft Corporation Analyzing resource consumption of software executing during a usage scenario
US9185007B2 (en) * 2013-04-30 2015-11-10 Splunk Inc. Proactive monitoring tree with severity state sorting
US9142049B2 (en) * 2013-04-30 2015-09-22 Splunk Inc. Proactive monitoring tree providing distribution stream chart with branch overlay
US9230001B2 (en) * 2013-11-14 2016-01-05 Vmware, Inc. Intelligent data propagation using performance monitoring
US9413849B2 (en) * 2013-12-05 2016-08-09 International Business Machines Corporation Distributing an executable job load file to compute nodes in a parallel computer

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005346563A (ja) * 2004-06-04 2005-12-15 Mitsubishi Electric Corp 並列処理システムおよび並列処理方法
WO2006029714A2 (en) * 2004-09-13 2006-03-23 Fujitsu Siemens Computers, Inc. Method and computer arrangement for controlling and monitoring a plurality of servers
US20090037571A1 (en) * 2007-08-02 2009-02-05 Erol Bozak Dynamic Agent Formation For Efficient Data Provisioning
JP2010045720A (ja) * 2008-08-18 2010-02-25 Oki Electric Ind Co Ltd ネットワークシステム、ノード及び通信プログラム
US20120303670A1 (en) * 2011-05-26 2012-11-29 Gillen Robert E Cloud computing method for dynamically scaling a process across physical machine boundaries
JP2014063418A (ja) * 2012-09-24 2014-04-10 Fujitsu Ltd 管理プログラム、管理方法、管理装置及び情報処理システム

Also Published As

Publication number Publication date
US20150341424A1 (en) 2015-11-26
US9942309B2 (en) 2018-04-10
EP2950212A2 (en) 2015-12-02
EP2950212A3 (en) 2016-01-27
JP6303806B2 (ja) 2018-04-04

Similar Documents

Publication Publication Date Title
US8219997B2 (en) Execution the job that is divided into job tasks based on the estimated completion time
CN107851039B (zh) 用于资源管理的系统和方法
JP6364880B2 (ja) 並列計算機システム,ジョブ管理装置の制御プログラム,及び並列計算機システムの制御方法
JP5332065B2 (ja) クラスタ構成管理方法、管理装置及びプログラム
JP6233413B2 (ja) タスク割り当て判定装置、制御方法、及びプログラム
JP7003874B2 (ja) リソース予約管理装置、リソース予約管理方法およびリソース予約管理プログラム
KR20130088512A (ko) 클러스터 컴퓨팅 환경에서의 자원 관리 장치 및 방법
KR20130115553A (ko) 동적 자원 관리를 위한 2단계 자원 관리 방법 및 장치
KR20160087706A (ko) 가상화 플랫폼을 고려한 분산 데이터 처리 시스템의 자원 할당 장치 및 할당 방법
JP2012058815A (ja) 計算機システム、及び、計算機システムの制御方法
CN108701132B (zh) 资源管理系统和方法
JP2011065645A (ja) マルチコアプロセッサシステム
JP6303806B2 (ja) 並列計算機システム,プロセス制御プログラム,及び並列計算機システムの制御方法
WO2016092856A1 (ja) 情報処理装置、情報処理システム、タスク処理方法、及び、プログラムを記憶する記憶媒体
KR20130019698A (ko) 사용자 스케줄러와 마이그레이션(Migration)을 통한 자원 최적화 방법 및 시스템
Garala et al. A performance analysis of load Balancing algorithms in Cloud environment
Selvi et al. Resource allocation issues and challenges in cloud computing
WO2018235739A1 (ja) 情報処理システムおよびリソース割り当て方法
JP5321195B2 (ja) 監視制御システム、監視制御方法、監視制御サーバ及び監視制御プログラム
JP2008204243A (ja) ジョブ実行制御方法およびシステム
JP5879117B2 (ja) 情報処理システムおよび運用管理方法
JP2010191567A (ja) 情報管理装置及び情報管理方法等
JP2010282550A (ja) 仮想計算機システム及びその物理資源の割当方法
CN115904640A (zh) 分布式任务处理系统及方法
JP2011215812A (ja) 仮想計算機管理方法、計算機システム及びリソース管理プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170206

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171121

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171212

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180117

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180219

R150 Certificate of patent or registration of utility model

Ref document number: 6303806

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150