JP2017010473A - ジョブ実行制御システム及び方法 - Google Patents

ジョブ実行制御システム及び方法 Download PDF

Info

Publication number
JP2017010473A
JP2017010473A JP2015128241A JP2015128241A JP2017010473A JP 2017010473 A JP2017010473 A JP 2017010473A JP 2015128241 A JP2015128241 A JP 2015128241A JP 2015128241 A JP2015128241 A JP 2015128241A JP 2017010473 A JP2017010473 A JP 2017010473A
Authority
JP
Japan
Prior art keywords
job
thread
threads
cpu cores
thread manager
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.)
Pending
Application number
JP2015128241A
Other languages
English (en)
Inventor
矢野 純一
Junichi Yano
純一 矢野
秀夫 酒井
Hideo Sakai
秀夫 酒井
平野 智哉
Tomoya Hirano
智哉 平野
崇一 西蔭
Shuichi Nishikage
崇一 西蔭
俊雄 貴田
Toshio Takada
俊雄 貴田
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.)
Nomura Research Institute Ltd
Original Assignee
Nomura Research Institute 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 Nomura Research Institute Ltd filed Critical Nomura Research Institute Ltd
Priority to JP2015128241A priority Critical patent/JP2017010473A/ja
Publication of JP2017010473A publication Critical patent/JP2017010473A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】並列処理中に何れかのジョブについて生じたエラーによって他のジョブに悪影響が生じないプログラムの実行環境を提供する。
【解決手段】ジョブ実行制御システム10は、予め起動された第1のJVMプロセス20〜第3のJVMプロセス24と、CPUコア管理テーブル26を有するスレッドマネージャ16と、ジョブサーバ14を備える。ジョブサーバ14は、新ジョブ実行時、未使用の第2のJVMプロセス22を割り当て、スレッドマネージャ16にCPUコアの空き数を照会し、空き数の範囲内でスレッドを起動し、各スレッドに割り当て処理を実行させる。プロセス22は、起動したスレッド数と、処理が完了したスレッド数をスレッドマネージャ16に通知する。スレッドマネージャ16は、ジョブサーバ14からの照会時にCPUコアの空き数を通知し、プロセス22から通知があった際にCPUコア管理テーブル26を更新する。
【選択図】図1

Description

この発明はジョブ実行制御システム及び方法に係り、特に、一つのプロセス内に複数のスレッドを起動させ、スレッド単位で異なる処理を並列実行させる技術の改良に関する。
JAVA(登録商標)言語で実装されたバッチ処理基盤においては、一般的に、複数のプログラムから構成されるデータフロー処理が、1ジョブとしてまとめて実行される。
この際、先後関係に無いジョブ同士は、上記バッチ処理基盤の機能により、一つのJVM(JAVA仮想マシン)プロセス内に起動された複数のスレッドを用いて、並列処理に付される(非特許文献1参照)。
スタックトレースインターネットURL:http://music.geocities.jp/kreisler_liebesleid/java/stackTrace.html 検索日:2015年6月22日
図3はその一例を示すものであり、相互に先後関係を有しないジョブXとジョブYに対して、一つのJVMプロセス50内に起動された3つのスレッドがそれぞれ割り当てられている。
すなわち、ジョブXにおいては第1のプログラム52及び第2のプログラム54による並列処理が実行されるため、第1のスレッド56及び第2のスレッド58がそれぞれに割り当てられているのに対し、ジョブYではプログラム60による単独処理が実行されるため、第3のスレッド62のみが割り当てられている。

この場合、ジョブXとジョブYは、JVMプロセス50のメモリ空間上にロードされたクラスライブラリ64を共同利用しながら、それぞれ独自の処理を実行する。
また、各スレッドにはそれぞれ固有のCPUコアが割り当てられているため、各ジョブにおいては相互に独立した高速な処理が確保される。
しかしながら、ジョブXとジョブYは同一のJVMプロセス50内で稼働しているため、何れか一方に生じた例外処理によって他方の処理が阻害されるという問題が生じる。例えば、ジョブXの第1のプログラム52においてメモリ不足に起因するエラーが発生した場合、JVMプロセス50全体が異常終了してしまうため、ジョブXの第2のプログラム54については勿論であるが、ジョブY用のプログラム60についてまでも同時に異常終了が発生する。
この発明は、このような現状を鑑みて案出されたものであり、並列処理されている何れかのジョブについて生じたエラーによって他のジョブに悪影響が生じることのない、プログラムの実行環境を提供することを目的としている。
上記の目的を達成するため、請求項1に記載したジョブ実行制御システムは、複数のCPUコアを有するコンピュータのメモリ上に予め起動された複数のプロセスと、上記CPUコアの利用状況を管理するテーブルを有するスレッドマネージャと、ジョブサーバとを備え、このジョブサーバは、新たなジョブの実行時に上記プロセスの中で現在未使用のものを当該新規ジョブに専用的に割り当てる処理と、上記スレッドマネージャに現時点におけるCPUコアの空き数を照会する処理と、現時点におけるCPUコアの空き数の範囲内で、上記新規ジョブに割り当てたプロセス上に必要数のスレッドを起動する処理と、起動したスレッドに当該ジョブ実行用のプログラムを割り当てて、具体的な処理を開始させる処理を実行し、上記プロセスは、当該プロセス内に起動されたスレッドの数を上記スレッドマネージャに通知する処理と、当該プロセス内におけるスレッドの処理が完了した際に、当該スレッドを削除すると共に、削除したスレッドの数を上記スレッドマネージャに通知する処理を実行し、上記スレッドマネージャは、上記ジョブサーバからCPUコアの空き数の照会があった際に、上記テーブルを参照して、現時点におけるCPUコアの空き数を通知する処理と、上記プロセスから起動されたスレッド数の通知があった際に、これに基づいて上記テーブルを更新する処理と、上記プロセスから処理が完了したスレッド数の通知があった際に、これに基づいて上記テーブルを更新する処理を実行することを特徴としている。
請求項2に記載したジョブ実行制御システムは、請求項1のシステムであって、さらに、上記の各プロセスに関しては予めそれぞれのクラスライブラリが起動されていることを特徴としている。
請求項3に記載したジョブ実行制御システムは、請求項1または2のシステムであって、さらに、上記ジョブが複数のプログラムによる並列処理を含んでいる場合に、上記ジョブサーバは、同一のプロセス内に複数のスレッドを起動させ、各プログラムに別個のスレッドを割り当てることを特徴としている。
請求項4に記載したジョブ実行制御方法は、複数のCPUコアを有するコンピュータのメモリ上に予め起動された複数のプロセスと、上記CPUコアの利用状況を管理するテーブルを有するスレッドマネージャと、ジョブサーバとを備えたシステムにおいて、上記ジョブサーバが、新たなジョブの実行時に上記プロセスの中で現在未使用のものを当該新規ジョブに専用的に割り当てると共に、上記スレッドマネージャに現時点におけるCPUコアの空き数を照会するステップと、上記スレッドマネージャが、上記テーブルを参照し、現時点におけるCPUコアの空き数を上記ジョブサーバに通知するステップと、上記ジョブサーバが、現時点におけるCPUコアの空き数の範囲内で、上記ジョブに割り当てたプロセス上に必要数のスレッドを起動すると共に、当該ジョブ実行用のプログラムを割り当てて、具体的な処理を開始させるステップと、上記プロセスが、起動されたスレッドの数を上記スレッドマネージャに通知するステップと、上記スレッドマネージャが、上記プロセスから通知されたスレッド数に基づいて上記テーブルを更新するステップと、上記プロセスが、当該プロセス内におけるスレッドの処理が完了した際に、当該スレッドを削除すると共に、削除したスレッドの数を上記スレッドマネージャに通知するステップと、上記スレッドマネージャが、上記プロセスから通知されたスレッド数に基づいて上記テーブルを更新するステップからなることを特徴としている。
請求項1に記載のジョブ実行制御システム及び請求項4に記載のジョブ実行方法によれば、ジョブ単位で異なるプロセスが専用的に割り当てられ、プロセス間での並列化が図られているため、あるスレッドにおいて実行中のプログラムについてエラーが生じても、他のプロセス上で稼働しているジョブに影響が及ぶことがない。
また、スレッドマネージャにより、全プロセスを通じたCPUコアの利用状況が管理されているため、数に限りのあるCPUコアを複数のプロセス間で効率的に使い回すことが可能となる。
請求項2に記載のジョブ実行制御システムの場合、待機中の各プロセスについてはクラスライブラリが事前にロードされているため、ジョブ実行時にロードする必要がなく、迅速な処理が確保される利点が生じる。
請求項3に記載のジョブ実行制御システムにあっては、ジョブが複数のプログラムに基づく並列処理によって実行される場合に、それぞれのプログラムに別個のスレッドを割り当てることができ、効率的な処理が可能となる。
図1は、この発明に係るジョブ実行制御システム10の機能構成を示すブロック図であり、ジョブ実行管理部12と、ジョブサーバ14と、スレッドマネージャ16と、プロセスプーリング機構18と、プロセスプーリング機構18上に起動された第1のJVMプロセス20、第2のJVMプロセス22、第3のJVMプロセス24を備えている。
上記ジョブ実行管理部12、ジョブサーバ14、スレッドマネージャ16は、コンピュータのCPUが、OS及び専用のアプリケーションプログラムに従って動作することにより実現される。
このコンピュータは、複数のCPUコアを備えた所謂マルチコア・コンピュータよりなる。
また、上記スレッドマネージャ16は、CPUコアの空き状況を管理するためのCPUコア管理テーブル26を備えている。
上記プロセスプーリング機構18は、コンピュータのメモリ上に第1のJVMプロセス20〜第3のJVMプロセス24を予め起動し、利用時まで待機させておくことを可能にする、JAVA実行環境によって提供される仕組みを意味している。なお、予め起動しておくJVMプロセスの数に限定はない。
各JVMプロセスを起動する際には、それぞれのクラスライブラリ28もメモリ上にロードされるが、スレッドは利用時まで起動されることがない。
因みに、図1においては第1のJVMプロセス20が既に利用中であり、ジョブ1用の第1のプログラム30及び第2のプログラム32を処理するために、第1のスレッド34及び第2のスレッド36が起動している状態が示されている。
これに対し、第2のJVMプロセス22はまさに利用開始される直前の状態が示されており(詳細は後述)、第3のJVMプロセス24は完全な待機状態にある様子が示されている。
以下において、図2のフローチャートに従い、このシステム10の処理手順について説明する。
まず、上記ジョブ実行管理部12が、事前に策定されたバッチ処理のデータフロー設計データに従い、ジョブサーバ14に対してジョブ2用の第1のプログラム38、第2のプログラム40、第3のプログラム42の起動を要求する(S10)。
これを受けたジョブサーバ14は、プロセスプーリング機構18上に起動している各JVMプロセスの中から、待機中のJVMプロセスをジョブ2に割り当てる(S12)。
上記の通り、第1のJVMプロセス20がジョブ1のために稼働中であるため、ジョブサーバ14は第2のJVMプロセス22をジョブ2に割り当てる。
つぎにジョブサーバ14は、スレッドマネージャ16に対してCPUコアの空き状況を照会する(S14)。
これを受けたスレッドマネージャ16は、CPUコア管理テーブル26を参照し、現状で割り当て可能なCPUコアの空き数をジョブサーバ14に通知する(S16)。
図1においては、6個のCPUコアの中の2個がジョブ1に割り当て済であるため、「空き数:4」がスレッドマネージャ16からジョブサーバ14に返される。
ここで、ジョブ2の実行に必要なプログラムの数は3であり、CPUコアの空き数よりも小さいため、ジョブサーバ14は第2のJVMプロセス22上に3つのスレッド(第1のスレッド44、第2のスレッド46、第3のスレッド48)を起動し(S18)、各スレッドにジョブ2用の第1のプログラム38〜第3のプログラム42を割り当てて並列実行させる(S20)。
第2のJVMプロセス22からスレッドマネージャ16に対しては、起動されたスレッドの数が通知される(S22)。
これを受けたスレッドマネージャ16は、CPUコア管理テーブル26の値(使用コア数と空きコア数)を更新する(S24)。
そして、各スレッドにおける処理が完了した時点で、第2のJVMプロセス22は当該スレッドを削除すると共に、スレッドマネージャ16に対して処理の完了したスレッド数を通知する(S26)。
これを受けたスレッドマネージャ16は、CPUコア管理テーブル26の値を更新する(S28)。
このシステム10の場合、上記のようにジョブ単位で異なるJVMプロセスが割り当てられ、JVMプロセス間での並列化が図られているため、あるスレッドにおいて実行中のプログラムについてエラーが生じても、他のJVMプロセス上で稼働しているジョブに影響が及ぶことがない。
また、スレッドマネージャ16により、全JVMプロセスを通じたCPUコアの利用状況が管理されているため、数に限りのあるCPUコアを複数のJVMプロセス間で効率的に使い回すことが可能となる。
なお、上記のS16において、スレッドマネージャ16から通知されたCPUコアの空き数が必要数に達しない場合、ジョブサーバ14はその時点で可能な数のスレッドを立ちあげて一部のプログラムによる処理を開始させる一方、スレッドマネージャ16に対して定期的に空き数の照会を行う。
そして、CPUコアの新たな空きが発生する度に、次のスレッドを立ちあげて残りのプログラムによる処理を開始させる。
上記の通り、プロセスプーリング機構18上に待機中の各JVMプロセスについては、クラスライブラリ28が事前にロードされているため、ジョブ実行時にロードする必要がなく、迅速な処理が確保される。
上記においては、一つのジョブが複数のスレッドによって並列処理される例を示したが、一つのジョブ内で並列処理が発生しない場合には、JVMプロセス上に一つのスレッドのみが起動されることは言うまでもない。
上記においては、この発明をJAVA言語で実装されたバッチ処理基盤に適用する例を示したが、他のマルチスレッド対応言語(例えばC++)で実装されたバッチ処理基盤に適用することも当然に可能である。
この発明に係るジョブ実行制御システムの機能構成を示すブロック図である。 このシステムにおける処理手順を示すフローチャートである。 JAVA実行環境における複数ジョブの一般的な並列処理方法を示す模式図である。
10 ジョブ実行制御システム
12 ジョブ実行管理部
14 ジョブサーバ
16 スレッドマネージャ
18 プロセスプーリング機構
20 第1のJVMプロセス
22 第2のJVMプロセス
24 第3のJVMプロセス
26 CPUコア管理テーブル
28 クラスライブラリ
30 ジョブ1用の第1のプログラム
32 ジョブ1用の第2のプログラム
34 第1のJVMプロセス内の第1のスレッド
36 第1のJVMプロセス内の第2のスレッド
38 ジョブ2用の第1のプログラム
40 ジョブ2用の第2のプログラム
42 ジョブ2用の第3のプログラム
44 第2のJVMプロセス内の第1のスレッド
46 第2のJVMプロセス内の第2のスレッド
48 第2のJVMプロセス内の第3のスレッド

Claims (4)

  1. 複数のCPUコアを有するコンピュータのメモリ上に予め起動された複数のプロセスと、
    上記CPUコアの利用状況を管理するテーブルを有するスレッドマネージャと、
    ジョブサーバとを備え、
    このジョブサーバは、新たなジョブの実行時に上記プロセスの中で現在未使用のものを当該新規ジョブに専用的に割り当てる処理と、
    上記スレッドマネージャに現時点におけるCPUコアの空き数を照会する処理と、
    現時点におけるCPUコアの空き数の範囲内で、上記新規ジョブに割り当てたプロセス上に必要数のスレッドを起動する処理と、
    起動したスレッドに当該ジョブ実行用のプログラムを割り当てて、具体的な処理を開始させる処理を実行し、
    上記プロセスは、当該プロセス内に起動されたスレッドの数を上記スレッドマネージャに通知する処理と、
    当該プロセス内におけるスレッドの処理が完了した際に、当該スレッドを削除すると共に、削除したスレッドの数を上記スレッドマネージャに通知する処理を実行し、
    上記スレッドマネージャは、上記ジョブサーバからCPUコアの空き数の照会があった際に、上記テーブルを参照して、現時点におけるCPUコアの空き数を通知する処理と、
    上記プロセスから起動されたスレッド数の通知があった際に、これに基づいて上記テーブルを更新する処理と、
    上記プロセスから処理が完了したスレッド数の通知があった際に、これに基づいて上記テーブルを更新する処理を実行することを特徴とするジョブ実行制御システム。
  2. 上記の各プロセスに関しては、予めそれぞれのクラスライブラリが起動されていることを特徴とする請求項1のジョブ実行制御システム。
  3. 上記ジョブが複数のプログラムによる並列処理を含んでいる場合に、上記ジョブサーバは、同一のプロセス内に複数のスレッドを起動させ、各プログラムに別個のスレッドを割り当てることを特徴とする請求項1または2のジョブ実行制御システム。
  4. 複数のCPUコアを有するコンピュータのメモリ上に予め起動された複数のプロセスと、上記CPUコアの利用状況を管理するテーブルを有するスレッドマネージャと、ジョブサーバとを備えたシステムにおいて、
    上記ジョブサーバが、新たなジョブの実行時に上記プロセスの中で現在未使用のものを当該新規ジョブに専用的に割り当てると共に、上記スレッドマネージャに現時点におけるCPUコアの空き数を照会するステップと、
    上記スレッドマネージャが、上記テーブルを参照し、現時点におけるCPUコアの空き数を上記ジョブサーバに通知するステップと、
    上記ジョブサーバが、現時点におけるCPUコアの空き数の範囲内で、上記ジョブに割り当てたプロセス上に必要数のスレッドを起動すると共に、当該ジョブ実行用のプログラムを割り当てて、具体的な処理を開始させるステップと、
    上記プロセスが、起動されたスレッドの数を上記スレッドマネージャに通知するステップと、
    上記スレッドマネージャが、上記プロセスから通知されたスレッド数に基づいて上記テーブルを更新するステップと、
    上記プロセスが、当該プロセス内におけるスレッドの処理が完了した際に、当該スレッドを削除すると共に、削除したスレッドの数を上記スレッドマネージャに通知するステップと、
    上記スレッドマネージャが、上記プロセスから通知されたスレッド数に基づいて上記テーブルを更新するステップと、
    からなることを特徴とするジョブ実行制御方法。
JP2015128241A 2015-06-26 2015-06-26 ジョブ実行制御システム及び方法 Pending JP2017010473A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015128241A JP2017010473A (ja) 2015-06-26 2015-06-26 ジョブ実行制御システム及び方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015128241A JP2017010473A (ja) 2015-06-26 2015-06-26 ジョブ実行制御システム及び方法

Publications (1)

Publication Number Publication Date
JP2017010473A true JP2017010473A (ja) 2017-01-12

Family

ID=57763719

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015128241A Pending JP2017010473A (ja) 2015-06-26 2015-06-26 ジョブ実行制御システム及び方法

Country Status (1)

Country Link
JP (1) JP2017010473A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109144706A (zh) * 2017-06-15 2019-01-04 阿里巴巴集团控股有限公司 一种cpu资源的动态分配方法、装置及物理机
WO2019071616A1 (zh) * 2017-10-09 2019-04-18 华为技术有限公司 一种处理方法及装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109144706A (zh) * 2017-06-15 2019-01-04 阿里巴巴集团控股有限公司 一种cpu资源的动态分配方法、装置及物理机
WO2019071616A1 (zh) * 2017-10-09 2019-04-18 华为技术有限公司 一种处理方法及装置

Similar Documents

Publication Publication Date Title
US10831551B2 (en) Computing session workload scheduling and management of parent-child tasks using a blocking yield API to block and unblock the parent task
US11102287B2 (en) Minimizing service restart by optimally resizing service pools
US20120166498A1 (en) Garbage collection in a multiple virtual machine environment
JP6840099B2 (ja) サービス提供システム、資源割り当て方法、及び資源割り当てプログラム
US9092272B2 (en) Preparing parallel tasks to use a synchronization register
JP2011065645A (ja) マルチコアプロセッサシステム
EP3054384B1 (en) System and method for memory synchronization of a multi-core system
KR20090108868A (ko) 가상 머신 관리 시스템 및 그의 프로세서 자원 관리방법
US20160371123A1 (en) Data Processing Method and Apparatus
WO2016092856A1 (ja) 情報処理装置、情報処理システム、タスク処理方法、及び、プログラムを記憶する記憶媒体
JP6010975B2 (ja) ジョブ管理装置、ジョブ管理方法、及びプログラム
JP5790758B2 (ja) スケジューリング方法およびスケジューリングシステム
WO2023284171A1 (zh) 一种系统重启后的资源分配方法、系统及相关组件
JP2017010473A (ja) ジョブ実行制御システム及び方法
US20120124339A1 (en) Processor core selection based at least in part upon at least one inter-dependency
JP7122299B2 (ja) 処理タスクを実行するための方法、装置、デバイス、および記憶媒体
JP5447666B2 (ja) マルチプロセッサシステムおよびスケジューリング方法
US10824640B1 (en) Framework for scheduling concurrent replication cycles
JP5417626B2 (ja) 管理計算機、ジョブスケジューリング方法及びジョブスケジューリングプログラム
JP6445876B2 (ja) リソース割当装置、リソース割当システム、および、リソース割当方法
US20240061698A1 (en) Managing the assignment of virtual machines to non-uniform memory access nodes
JP7168630B2 (ja) 計算機システム及びジョブの実行制御方法
US8566829B1 (en) Cooperative multi-level scheduler for virtual engines
Shi et al. DFlow: Efficient Dataflow-based Invocation Workflow Execution for Function-as-a-Service
CN115080199A (zh) 任务调度方法、系统、设备、存储介质及程序产品