(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024163686
(43)【公開日】2024-11-22
(54)【発明の名称】ジョブ実行制御プログラム、情報処理装置及びジョブ実行制御方法
(51)【国際特許分類】
G06F 9/50 20060101AFI20241115BHJP
G06F 11/34 20060101ALI20241115BHJP
【FI】
G06F9/50 150A
G06F11/34 119
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2023079512
(22)【出願日】2023-05-12
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110003421
【氏名又は名称】弁理士法人フィールズ国際特許事務所
(72)【発明者】
【氏名】林 英里香
(72)【発明者】
【氏名】大辻 弘貴
【テーマコード(参考)】
5B042
【Fターム(参考)】
5B042GA33
5B042JJ20
5B042JJ29
5B042MA08
5B042MA14
5B042MC33
(57)【要約】
【課題】各ジョブの実行性能の低下を抑制することを可能とするジョブ実行制御プログラム、情報処理装置及びジョブ実行制御方法を提供する。
【解決手段】第1メモリ群を用いた場合における各ジョブの第1実行時間と、第1メモリ群よりもアクセスに時間を要する第2メモリ群を用いた場合における各ジョブの第2実行時間とを記憶した記憶部を参照し、特定ジョブに対応する第1実行時間と第2実行時間とを特定し、特定した第1実行時間と第2実行時間との乖離度合いを示す値を算出し、算出した値が所定の条件を満たすか否かに基づいて、第1メモリ群と第2メモリ群とから特定ジョブを実行する特定メモリ群を決定する。
【選択図】
図18
【特許請求の範囲】
【請求項1】
第1メモリ群を用いた場合における各ジョブの第1実行時間と、前記第1メモリ群よりもアクセスに時間を要する第2メモリ群を用いた場合における各ジョブの第2実行時間とを記憶した記憶部を参照し、特定ジョブに対応する前記第1実行時間と前記第2実行時間とを特定し、
特定した前記第1実行時間と前記第2実行時間との乖離度合いを示す値を算出し、
算出した前記値が所定の条件を満たすか否かに基づいて、前記第1メモリ群と前記第2メモリ群とから前記特定ジョブを実行する特定メモリ群を決定する、
処理をコンピュータに実行させることを特徴とするジョブ実行制御プログラム。
【請求項2】
請求項1において、
前記第1メモリ群は、1以上のローカルメモリから構成されるメモリ群であり、
前記第2メモリ群は、1以上のローカルメモリから構成されるメモリ群、または、1以上のローカルメモリと1以上のリモートメモリとから構成されるメモリ群である、
ことを特徴とするジョブ実行制御プログラム。
【請求項3】
請求項1において、
前記算出する処理では、前記第2実行時間に対する前記第1実行時間の割合を前記値として算出し、
前記決定する処理では、前記値が第1閾値未満である場合、前記第1メモリ群を用いることによって前記特定ジョブを実行することを決定し、前記値が前記第1閾値以上である場合、前記第2メモリ群を用いることによって前記特定ジョブを実行することを決定する、
ことを特徴とするジョブ実行制御プログラム。
【請求項4】
請求項1において、
前記決定する処理では、
前記特定ジョブの実行時に用いられるメモリ群が複数であり、かつ、前記値が第1閾値以上である場合、前記第1メモリ群を複数用いることによって前記特定ジョブを実行することを決定し、前記特定ジョブの実行時に用いられるメモリ群が複数であり、かつ、前記値が前記第1閾値未満である場合、前記第2メモリ群を複数用いることによって前記特定ジョブを実行することを決定する、
ことを特徴とするジョブ実行制御プログラム。
【請求項5】
請求項1において、
前記記憶部は、各ジョブの実行時におけるメモリに対するアクセス頻度を記憶し、さらに、
前記決定する処理において前記特定メモリ群として前記第1メモリ群に決定された場合、前記記憶部を参照し、前記特定ジョブに対応する前記アクセス頻度を特定し、
特定した前記アクセス頻度が第2閾値以上である場合、前記特定メモリ群を前記第1メモリ群から前記第2メモリ群に変更する、
処理をコンピュータに実行させることを特徴とするジョブ実行制御プログラム。
【請求項6】
第1メモリ群を用いた場合における各ジョブの第1実行時間と、前記第1メモリ群よりもアクセスに時間を要する第2メモリ群を用いた場合における各ジョブの第2実行時間とを記憶した記憶部を参照し、特定ジョブに対応する前記第1実行時間と前記第2実行時間とを特定する時間特定部と、
特定した前記第1実行時間と前記第2実行時間との乖離度合いを示す値を算出する乖離度算出部と、
算出した前記値が所定の条件を満たすか否かに基づいて、前記第1メモリ群と前記第2メモリ群とから前記特定ジョブを実行する特定メモリ群を決定するメモリ群決定部と、を有する、
ことを特徴とする情報処理装置。
【請求項7】
第1メモリ群を用いた場合における各ジョブの第1実行時間と、前記第1メモリ群よりもアクセスに時間を要する第2メモリ群を用いた場合における各ジョブの第2実行時間とを記憶した記憶部を参照し、特定ジョブに対応する前記第1実行時間と前記第2実行時間とを特定し、
特定した前記第1実行時間と前記第2実行時間との乖離度合いを示す値を算出し、
算出した前記値が所定の条件を満たすか否かに基づいて、前記第1メモリ群と前記第2メモリ群とから前記特定ジョブを実行する特定メモリ群を決定する、
処理をコンピュータが実行することを特徴とするジョブ実行制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ジョブ実行制御プログラム、情報処理装置及びジョブ実行制御方法に関する。
【背景技術】
【0002】
利用者に対してサービスを提供する事業者(以下、単に事業者とも呼ぶ)は、例えば、サービスの提供を行うために必要な業務システムの構築を行う。そして、事業者は、このような業務システムにおいて、例えば、各ジョブの実行時間の決定等を行うジョブスケジューラを動作させる。
【0003】
具体的に、ジョブスケジューラは、例えば、新たなジョブが投入された場合、各ノードにおけるジョブの実行状況等の情報に基づいて、新たなジョブを実行可能なノードを特定する。そして、ジョブスケジューラは、例えば、特定したノードのうちのいずれかに対して新たなジョブの実行指示を行う(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
ここで、各ジョブの実行に必要となるメモリの量が各ノード(以下、単に実行ノードとも呼ぶ)に搭載されているメモリ(以下、ローカルメモリとも呼ぶ)の量より多い場合、ジョブスケジューラは、例えば、いずれかのノードに対して、CXL(Compute Express Link)メモリ等の外部メモリ(以下、リモートメモリとも呼ぶ)を割り当てる。そして、外部メモリが割り当てられたノードは、例えば、自ノードに搭載されたローカルメモリに加えて、割り当てられたリモートメモリについても用いることによって各ジョブの実行を行う。
【0006】
ここで、リモートメモリに対してアクセスを行う際のレイテンシは、例えば、ローカルメモリに対してアクセスを行う際のレイテンシよりも大きい。そのため、ジョブスケジューラは、例えば、各ジョブの実行特性等に応じて、リモートメモリが割り当てられるノードとリモートメモリが割り当てられないノードとのうちのいずれかを選択することが好ましい。すなわち、ジョブスケジューラは、例えば、各ジョブの実行ノードを、各ジョブの実行性能の低下の抑制が可能になるように決定することが好ましい。
【0007】
そこで、一つの側面では、本発明は、各ジョブの実行性能の低下を抑制することを可能とするジョブ実行制御プログラム、情報処理装置及びジョブ実行制御方法を提供することを目的とする。
【課題を解決するための手段】
【0008】
実施の形態の一態様は、第1メモリ群を用いた場合における各ジョブの第1実行時間と、前記第1メモリ群よりもアクセスに時間を要する第2メモリ群を用いた場合における各ジョブの第2実行時間とを記憶した記憶部を参照し、特定ジョブに対応する前記第1実行時間と前記第2実行時間とを特定し、特定した前記第1実行時間と前記第2実行時間との乖離度合いを示す値を算出し、算出した前記値が所定の条件を満たすか否かに基づいて、前記第1メモリ群と前記第2メモリ群とから前記特定ジョブを実行する特定メモリ群を決定する。
【発明の効果】
【0009】
一つの側面によれば、各ジョブの実行性能の低下を抑制することが可能になる。
【図面の簡単な説明】
【0010】
【
図1】
図1は、情報処理システム10の構成について説明する図である。
【
図2】
図2は、CXLメモリRMを用いない場合におけるジョブ管理情報131の具体例について説明する図である。
【
図3】
図3は、CXLメモリRMを使用する場合におけるジョブ管理情報131の具体例について説明する図である。
【
図4】
図4は、情報処理システム10の構成について説明する図である。
【
図5】
図5は、情報処理システム10の構成について説明する図である。
【
図6】
図6は、情報処理装置1のハードウエア構成を説明する図である。
【
図7】
図7は、第1の実施の形態における情報処理装置1の機能について説明する図である。
【
図8】
図8は、第1の実施の形態における情報格納領域130に記憶される情報について説明する図である。
【
図9】
図9は、第1の実施の形態におけるジョブ制御処理の概略を説明するフローチャート図である。
【
図10】
図10は、第1の実施の形態におけるジョブ制御処理の詳細について説明するシーケンスチャート図である。
【
図11】
図11は、第1の実施の形態におけるジョブ制御処理の詳細について説明するシーケンスチャート図である。
【
図12】
図12は、第1の実施の形態におけるジョブ制御処理の詳細について説明するシーケンスチャート図である。
【
図13】
図13は、第1の実施の形態におけるジョブ制御処理の詳細について説明するシーケンスチャート図である。
【
図14】
図14は、第1の実施の形態におけるジョブ制御処理の詳細について説明するシーケンスチャート図である。
【
図15】
図15は、第1の実施の形態におけるジョブ制御処理の詳細について説明するシーケンスチャート図である。
【
図16】
図16は、実行回数情報133の具体例について説明する図である。
【
図17】
図17は、実行回数情報133の具体例について説明する図である。
【
図18】
図18は、実行時間情報132の具体例について説明する図である。
【
図19】
図19は、実行回数情報133の具体例について説明する図である。
【
図20】
図20は、実行時間情報132の具体例について説明する図である。
【
図21】
図21は、実行時間情報132の具体例について説明する図である。
【発明を実施するための形態】
【0011】
以下、図面を参照して本開示の実施の形態について説明する。しかしながら、かかる説明は限定的な意味に解釈されるべきではなく、特許請求の範囲に記載の主題を限定するものではない。また、本開示の趣旨及び範囲から逸脱することがなく様々な変更や置換や改変をすることができる。また、異なる実施の形態を適宜組み合わせることができる。
【0012】
[第1の実施の形態における情報処理システムの構成]
初めに、情報処理システム10の構成について説明を行う。
図1、
図4及び
図5は、情報処理システム10の構成について説明する図である。
【0013】
情報処理システム10は、例えば、情報処理装置1と、ノード2aと、ノード2bと、ノード2cと、ノード2dと、スイッチ3と、メモリ筐体4aと、メモリ筐体4bと、メモリ筐体4cと、メモリ筐体4dとを有する。以下、ノード2a、ノード2b、ノード2c及びノード2dを総称して単にノード2とも呼ぶ。また、メモリ筐体4a、メモリ筐体4b、メモリ筐体4c及びメモリ筐体4dを総称して単にメモリ筐体4とも呼ぶ。なお、以下、情報処理システム10が4台のノード2を有する場合について説明を行うが、情報処理システム10は、例えば、4台以外の台数のノード2を有するものであってもよい。また、情報処理システム10が4台のメモリ筐体4を有する場合について説明を行うが、情報処理システム10は、例えば、4台以外の台数のメモリ筐体4を有するものであってもよい。
【0014】
情報処理装置1は、例えば、物理マシンであり、各ノード2において実行されるジョブの実行タイミングのスケジューリングを行うプログラム1a(以下、ジョブスケジューラ1aとも呼ぶ)が動作する情報処理装置1である。
【0015】
ノード2は、例えば、物理マシンであり、ジョブスケジューラ1aによって行われたスケジューリングに従ってジョブの実行を行う。なお、ノード2は、例えば、HPC(High Performance Computing)システムを構成するノードであってよい。
【0016】
具体的に、
図1に示す例において、ノード2aには、2つのローカルメモリLMが搭載され、ノード2bには、2つのローカルメモリLMが搭載され、ノード2cには、4つのローカルメモリLMが搭載され、ノード2dには、4つのローカルメモリLMが搭載されている。
【0017】
スイッチ3は、例えば、各ノード2と各メモリ筐体4とを接続する装置である。以下、スイッチ3がCXLスイッチ3であるものとして説明を行う。
【0018】
メモリ筐体4は、例えば、各ノード2からアクセスが可能なリモートメモリRMを格納する筐体である。以下、リモートメモリRMがCXLメモリRMであるものとして説明を行う。
【0019】
具体的に、
図1に示す例において、メモリ筐体4aには、3つのCXLメモリRMが格納され、メモリ筐体4bには、3つのCXLメモリRMが格納され、メモリ筐体4cには、2つのCXLメモリRMが格納され、メモリ筐体4dには、2つのCXLメモリRMが格納されている。
【0020】
そして、ジョブスケジューラ1aは、例えば、実行対象のジョブ(以下、実行対象ジョブまたは特定ジョブとも呼ぶ)の実行を開始する場合において、実行対象ジョブの実行に要するメモリの量が実行対象ジョブの実行ノード2に搭載されたメモリ(ローカルメモリLM)の量よりも多い場合、実行対象ジョブの実行ノード2に対して必要なCXLメモリRMを割り当てる。
【0021】
これにより、ジョブスケジューラ1aは、例えば、実行対象ジョブの実行に要するメモリの量が実行対象ジョブの実行ノード2に搭載されたメモリの量よりも多い場合であっても、実行対象ジョブを実行させることが可能になる。
【0022】
[CXLメモリを用いない場合における実行対象ジョブの実行時の具体例]
次に、CXLメモリRMを用いない場合における実行対象ジョブの実行時の具体例について説明を行う。具体的に、各実行対象ジョブの実行が各ノード2に搭載されたローカルメモリLMを用いることによって行われる場合の具体例について説明を行う。
【0023】
[CXLメモリRMを用いない場合におけるジョブ管理情報の具体例]
初めに、CXLメモリRMを用いない場合におけるジョブ管理情報131の具体例について説明を行う。
図2は、CXLメモリRMを用いない場合におけるジョブ管理情報131の具体例について説明する図である。ジョブ管理情報131は、例えば、ジョブスケジューラ1aが生成する情報であって、各実行対象ジョブの実行に要するメモリ量や実行ノード2を含む情報である。
【0024】
なお、以下、各ローカルメモリLM及び各CXLメモリRMが32GBの記憶領域を有するメモリであるものとして説明を行う。また、以下、ノード2a及びノード2bがCXLメモリRMの割り当てが行われる可能性があるノード2であり、ノード2c及びノード2dがCXLメモリRMの割り当てが行われないノード2であるものとして説明を行う。
【0025】
図2に示すジョブ管理情報131は、例えば、各実行対象ジョブを識別するジョブIDが設定される「ジョブID」と、各実行対象ジョブの実行に要するメモリの量(例えば、各実行対象ジョブの実行を行う作業者によって予め指定されたメモリの量)が設定される「メモリ量」と、各実行対象ジョブの実行ノード2が設定される「実行ノード」と、各実行対象ジョブの実行状態が設定される「実行状態」とを項目として有する。「実行状態」には、例えば、各実行対象ジョブが実行中であることを示す「実行中」、または、各実行対象ジョブが待機中(実行待ち)であることを示す「待機中」が設定される。
【0026】
具体的に、
図2に示すジョブ管理情報131において、例えば、1行目の情報には、「ジョブID」として「10」が設定され、「メモリ量」として「128GB」が設定され、「実行ノード」として「ノード2c」が設定され、「状態」として「実行中」が設定されている。
【0027】
すなわち、
図1に示す例において、ノード2cには、4つのローカルメモリLM(128GBのローカルメモリLM)が搭載されている。また、
図2に示すジョブ管理情報131には、「ジョブID」が「10」である実行対象ジョブの「メモリ量」として「128GB」が設定されている。そのため、ジョブスケジューラ1aは、例えば、ノード2cに搭載されているローカルメモリLMが他の用途に使用されていない場合、ノード2cにおいて「ジョブID」が「10」である実行対象ジョブを実行することが可能であると判定し、「ジョブID」が「10」である実行対象ジョブをノード2cに実行させる。
【0028】
また、
図2に示すジョブ管理情報131において、例えば、2行目の情報には、「ジョブID」として「11」が設定され、「メモリ量」として「128GB」が設定され、「実行ノード」として「ノード2d」が設定され、「状態」として「実行中」が設定されている。
【0029】
すなわち、
図1に示す例において、ノード2dには、4つのローカルメモリLM(128GBのローカルメモリLM)が搭載されている。また、
図2に示すジョブ管理情報131には、「ジョブID」が「11」である実行対象ジョブの「メモリ量」として「128GB」が設定されている。そのため、ジョブスケジューラ1aは、例えば、ノード2dに搭載されているローカルメモリLMが他の用途に使用されていない場合、ノード2dにおいて「ジョブID」が「11」である実行対象ジョブを実行することが可能であると判定し、「ジョブID」が「11」である実行対象ジョブをノード2dに実行させる。
【0030】
また、
図2に示すジョブ管理情報131において、例えば、3行目の情報には、「ジョブID」として「12」が設定され、「メモリ量」として「128GB」が設定され、「実行ノード」として「ノード2c」が設定され、「状態」として「待機中」が設定されている。
【0031】
すなわち、
図1に示す例において、ノード2cには、4つのローカルメモリLM(128GBのローカルメモリLM)が搭載されている。また、
図2に示すジョブ管理情報131には、「ジョブID」が「10」である実行対象ジョブの「メモリ量」として「128GB」が設定されている。そのため、ジョブスケジューラ1aは、例えば、ノード2cに搭載されているローカルメモリLMが他の用途に使用されていない場合、ノード2cにおいて「ジョブID」が「10」である実行対象ジョブを実行することが可能であると判定する。
【0032】
しかしながら、
図2に示すジョブ管理情報131は、例えば、ノード2cに搭載されているローカルメモリLMの全てが他の実行対象ジョブ(「ジョブID」が「10」であるジョブ)の実行に用いられていることを示している。また、
図2に示すジョブ管理情報131は、例えば、ノード2dに搭載されているローカルメモリLMの全てが他の実行対象ジョブ(「ジョブID」が「11」であるジョブ)の実行に用いられていることを示している。さらに、
図2に示すジョブ管理情報131は、例えば、ノード2a及びノード2bのそれぞれに搭載されているローカルメモリLMの量が少なく、「ジョブID」が「12」である実行対象ジョブをノード2aまたはノード2bにおいて実行することができないことを示している。
【0033】
そのため、ジョブスケジューラ1aは、例えば、「ジョブID」が「12」である実行対象ジョブの実行を、ノード2cにおいて実行中の他の実行対象ジョブ(「ジョブID」が「10」であるジョブ)の実行が終了するまで待機させる。
【0034】
[CXLメモリを使用する場合における実行対象ジョブの実行時の具体例]
次に、CXLメモリRMを使用する場合における実行対象ジョブの実行時の具体例について説明を行う。具体的に、各ノード2に搭載されたローカルメモリLM及びCXLメモリRMを用いて各実行対象ジョブの実行を行う場合の具体例について説明を行う。
【0035】
[CXLメモリRMを使用する場合におけるジョブ管理情報の具体例]
初めに、CXLメモリRMを使用する場合におけるジョブ管理情報131の具体例について説明を行う。
図3は、CXLメモリRMを使用する場合におけるジョブ管理情報131の具体例について説明する図である。以下、
図2で説明したジョブ管理情報131と異なる点について説明を行う。
【0036】
図3に示すジョブ管理情報131において、例えば、3行目の情報には、「ジョブID」として「12」が設定され、「メモリ量」として「128GB」が設定され、「実行ノード」として「ノード2a」が設定され、「状態」として「実行中」が設定されている。
【0037】
すなわち、ジョブスケジューラ1aは、
図4に示すように、例えば、メモリ筐体4aに格納されている1つのCXLメモリRM(メモリ筐体4aにおける破線部分に対応するCXLメモリRM)と、メモリ筐体4bに格納されている1つのCXLメモリRM(メモリ筐体4bにおける破線部分に対応するCXLメモリRM)とをノード2aに割り当てる。そして、ジョブスケジューラ1aは、例えば、「ジョブID」が「12」である実行対象ジョブにノード2aを実行させる。
【0038】
これにより、ジョブスケジューラ1aは、
図2で説明した場合と異なり、例えば、「ジョブID」が「12」である実行対象ジョブを、ローカルメモリLMの搭載量(64GB)が実行対象ジョブの実行に必要なメモリ量(128GB)よりも少ないノード2(ノード2a)において実行することが可能になる。そのため、ジョブスケジューラ1aは、例えば、各実行対象ジョブの実行待ちの発生を抑制することが可能になり、各実行対象ジョブの実行終了までに要する時間を短縮することが可能になる。なお、以下、各ノード2に搭載されている1以上のローカルメモリLMと各ノード2に割り当てられた1以上のCXLメモリRMとを総称して単にメモリ群とも呼ぶ。
【0039】
ここで、
図5に示すように、ノード2のCPU(Central Processing Unit)21からメモリ筐体4に格納されたCXLメモリRMに対してアクセスを行う場合のレイテンシは、例えば、ノード2のCPU21から同一のノード2に搭載されたローカルメモリLMに対してアクセスを行う場合のレイテンシよりも大きい。そのため、同一のメモリ量を用いることが可能な複数のノード2が存在する場合であっても、CXLメモリRMの割り当てられているノード2における実行対象ジョブの実行時間は、例えば、CXLメモリRMが割り当てられていないノード2における実行対象ジョブの実行時間よりも長くなる。したがって、ジョブスケジューラ1aは、例えば、CXLメモリRMが割り当てられないノード2において多くの実行対象ジョブを実行させることが好ましい。
【0040】
しかしながら、CXLメモリRMが割り当てられないノード2において多くの実行対象ジョブを実行させる場合、CXLメモリRMが割り当てられないノード2では、例えば、実行待ちの実行対象ジョブが多く発生し、各実行対象ジョブの実行を効率的に行うことができない可能性がある。そのため、ジョブスケジューラ1aは、例えば、各実行対象ジョブの実行性能の低下を抑制することが可能な範囲内において、CXLメモリRMが割り当てられる可能性があるノード2において一部の実行対象ジョブを実行させることが好ましい。したがって、ジョブスケジューラ1aは、例えば、各実行対象ジョブの実行特性等に応じて、各実行対象ジョブの実行ノード2を、CXLメモリRMが割り当てられる可能性があるノード2(例えば、
図4におけるノード2aやノード2b)とCXLメモリRMが割り当てられないノード2(例えば、
図4におけるノード2cやノード2d)とのうちのいずれかに決定することが好ましい。
【0041】
そこで、本実施の形態におけるジョブスケジューラ1aは、例えば、第1メモリ群を用いた場合における各実行対象ジョブの実行時間(以下、第1実行時間とも呼ぶ)と、第1メモリ群よりもアクセスに時間を要する第2メモリ群を用いた場合における各実行対象ジョブの実行時間(以下、第2実行時間とも呼ぶ)とを記憶した記憶部を参照し、実行対象ジョブに対応する第1実行時間と第2実行時間とを特定する。第1メモリ群は、例えば、CXLメモリRMが割り当てられないノード2に対応するメモリ群(例えば、1以上のローカルメモリLMからなるメモリ群)である。また、第2メモリ群は、例えば、CXLメモリRMが割り当てられる可能性があるノード2に対応するメモリ群(例えば、1以上のローカルメモリLMからなるメモリ群、または、1以上のローカルメモリLMと1以上のCXLメモリRMとからなるメモリ群)である。
【0042】
そして、ジョブスケジューラ1aは、例えば、特定した第1実行時間と第2実行時間との乖離度合いを示す値(以下、単に値とも呼ぶ)を算出する。具体的に、ジョブスケジューラ1aは、例えば、第2実行時間に対する第1実行時間の割合を値として算出する。
【0043】
その後、ジョブスケジューラ1aは、例えば、算出した値が所定の条件を満たすか否かに基づいて、第1メモリ群と第2メモリ群とから実行対象ジョブを実行するメモリ群(以下、特定メモリ群とも呼ぶ)を決定する。具体的に、ジョブスケジューラ1aは、例えば、乖離度合いを示す値が閾値(以下、第1閾値とも呼ぶ)未満である場合、第1メモリ群を用いることによって実行対象ジョブを実行することを決定し、乖離度合いを示す値が第1閾値以上である場合、第2メモリ群を用いることによって実行対象ジョブを実行することを決定する。
【0044】
すなわち、本実施の形態におけるジョブスケジューラ1aは、例えば、予め記憶部に記憶した第1実行時間及び第2実行時間を参照することによって、各ジョブに対応する第1実行時間と第2実行時間との乖離の大きさを判定する。そして、ジョブスケジューラ1aは、例えば、乖離が大きいと判定した実行対象ジョブを、CXLメモリRMが割り当てられたノード2において実行した場合に実行性能が大きく低下する実行対象ジョブ(言い換えれば、CXLメモリRMが割り当てられたノード2での実行に適していない実行対象ジョブ)であると推定する。また、ジョブスケジューラ1aは、例えば、乖離が大きくないと判定した実行対象ジョブを、CXLメモリRMが割り当てられたノード2において実行した場合であっても実行性能が大きく低下しない実行対象ジョブ(言い換えれば、CXLメモリRMが割り当てられたノード2での実行に適している実行対象ジョブ)であると推定する。
【0045】
そして、ジョブスケジューラ1aは、例えば、CXLメモリRMが割り当てられたノード2での実行に適していないと判定した実行対象ジョブを、CXLメモリRMが割り当てられないノード2(例えば、
図4におけるノード2cやノード2d)において実行させることを決定する。また、ジョブスケジューラ1aは、例えば、CXLメモリRMが割り当てられたノード2での実行に適していると判定した実行対象ジョブを、CXLメモリRMが割り当てられる可能性があるノード2(例えば、
図4におけるノード2aやノード2b)において実行させることを決定する。
【0046】
これにより、本実施の形態におけるジョブスケジューラ1aは、例えば、各ノード2における実行対象ジョブの実行待ちの発生を抑制することが可能になるとともに、各実行対象ジョブの実行性能の低下を抑制することが可能になる。
【0047】
[情報処理システム10のハードウエア構成]
次に、情報処理システム10のハードウエア構成について説明を行う。
図6は、情報処理装置1のハードウエア構成を説明する図である。
【0048】
情報処理装置1は、
図6に示すように、例えば、プロセッサであるCPU(Central Processing Unit)101と、メモリ102と、通信装置(I/Oインタフェース)103と、記憶装置104とを有する。各部は、バス105を介して互いに接続される。
【0049】
記憶装置104は、例えば、実行対象ジョブの実行制御を行う処理(以下、ジョブ制御処理とも呼ぶ)を行うためのプログラム110を記憶するプログラム格納領域(図示せず)を有する。また、記憶装置104は、例えば、ジョブ制御処理を行う際に用いられる情報を記憶する記憶部130(以下、情報格納領域130とも呼ぶ)を有する。なお、記憶装置104は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)であってよい。
【0050】
CPU101は、例えば、記憶装置104からメモリ102にロードされたプログラム110を実行してジョブ制御処理を行う。
【0051】
通信装置103は、例えば、インターネット等のネットワーク(図示せず)を介して各ノード2と通信を行う。
【0052】
[第1の実施の形態における通信システムの機能]
次に、第1の実施の形態における情報処理システム10の機能について説明を行う。
図7は、第1の実施の形態における情報処理装置1の機能について説明する図である。また、
図8は、第1の実施の形態における情報格納領域130に記憶される情報について説明する図である。
【0053】
情報処理装置1は、
図7に示すように、例えば、CPU101やメモリ102等のハードウエアとプログラム110とが有機的に協働することにより、ジョブスケジューラ1aの機能として、ジョブ受付部111と、時間特定部112と、乖離度算出部113と、メモリ群決定部114と、ジョブ実行部115と、情報管理部116と、メモリ群再決定部117とを含む各種機能を実現する。
【0054】
また、情報格納領域130は、
図8に示すように、例えば、ジョブ管理情報131と、実行時間情報132と、実行回数情報133とを記憶する。なお、実行回数情報133については後述する。
【0055】
ジョブ受付部111は、例えば、各実行対象ジョブの実行を行う作業者が操作端末(図示せず)を介して行った実行対象ジョブの実行指示を受け付ける。
【0056】
時間特定部112は、例えば、情報格納領域130に記憶された実行時間情報132を参照して、ジョブ受付部111が実行指示を受け付けた実行対象ジョブに対応する第1実行時間と第2実行時間とを特定する。実行時間情報132は、例えば、各実行対象ジョブに対応する第1実行時間と第2実行時間とを含む情報である。
【0057】
乖離度算出部113は、例えば、時間特定部112が特定した第1実行時間と第2実行時間との乖離度合いを示す値を算出する。具体的に、乖離度算出部113は、例えば、第2実行時間に対する第1実行時間の割合を算出する。
【0058】
メモリ群決定部114は、例えば、乖離度算出部113が算出した値が所定の条件を満たすか否かに基づいて、ジョブ受付部111が実行指示を受け付けた実行対象ジョブの実行ノード2を、CXLメモリRMが割り当てられないノード2(第1メモリ群を有するノード2)とCXLメモリRMが割り当てられる可能性があるノード2(第2メモリ群を有するノード2)とから決定する。
【0059】
具体的に、メモリ群決定部114は、例えば、乖離度算出部113が算出した値が第1閾値未満である場合、CXLメモリRMが割り当てられないノード2において実行対象ジョブを実行することを決定し、乖離度算出部113が算出した値が第1閾値以上である場合、CXLメモリRMが割り当てられる可能性があるノード2において実行対象ジョブを実行することを決定する。
【0060】
なお、メモリ群決定部114は、例えば、実行対象ジョブの実行ノード2を決定するとともに、実行対象ジョブを実行する時刻(以下、実行開始時刻とも呼ぶ)を決定するものであってもよい。
【0061】
ジョブ実行部115は、例えば、ジョブ受付部111が実行指示を受け付けた実行対象ジョブを、メモリ群決定部114が決定したノード2において実行する。
【0062】
情報管理部116は、例えば、メモリ群決定部114によって決定された実行対象ジョブの実行ノード2を、ジョブ管理情報131の一部として情報格納領域130に記憶する。
【0063】
具体的に、情報管理部116は、例えば、実行対象ジョブの実行ノード2と、実行対象ジョブのジョブIDと、実行対象ジョブが用いるメモリ量とを、ジョブ管理情報131の一部として情報格納領域130に記憶する。
【0064】
なお、情報管理部116は、例えば、メモリ群決定部114が決定した実行開始時刻を、ジョブ管理情報131の一部として情報格納領域130に記憶するものであってもよい。
【0065】
また、情報管理部116は、例えば、ジョブ実行部115が実行した実行対象ジョブの実行時間(第1実行時間または第2実行時間)を、実行時間情報132の一部として情報格納領域130に記憶する。
【0066】
メモリ群再決定部117は、例えば、CXLメモリRMが割り当てられないノード2における実行待ちの実行対象ジョブ(以下、待機ジョブとも呼ぶ)のメモリアクセス頻度(単位時間あたりのメモリアクセス回数)に応じて、メモリ群決定部114によって決定された実行ノード2(ジョブ受付部111が実行指示を受け付けた実行対象ジョブの実行ノード2)を変更する。
【0067】
[第1の実施の形態におけるジョブ制御処理の概略]
次に、第1の実施の形態の概略について説明する。
図9は、第1の実施の形態におけるジョブ制御処理の概略を説明するフローチャート図である。
【0068】
ジョブスケジューラ1aは、
図9に示すように、例えば、情報格納領域130に記憶した実行時間情報132を参照し、実行対象ジョブに対応する第1実行時間を特定する(S1)。
【0069】
また、ジョブスケジューラ1aは、例えば、情報格納領域130に記憶した実行時間情報132を参照し、実行対象ジョブに対応する第2実行時間を特定する(S2)。
【0070】
そして、ジョブスケジューラ1aは、例えば、S1の処理で特定した第1実行時間と、S2の処理で特定した第2実行時間との乖離度合いを示す値を算出する(S3)。
【0071】
その後、ジョブスケジューラ1aは、例えば、S3の処理で算出した値が所定の条件を満たすか否かに基づいて、第1メモリ群と第2メモリ群とから実行対象ジョブを実行する特定メモリ群を決定する(S4)。
【0072】
これにより、本実施の形態におけるジョブスケジューラ1aは、例えば、各ノード2における実行対象ジョブの実行待ちの発生を抑制することが可能になるとともに、各実行対象ジョブの実行性能の低下を抑制することが可能になる。
【0073】
[第1の実施の形態におけるジョブ制御処理の詳細]
次に、第1の実施の形態におけるジョブ制御処理の詳細について説明する。
図10から
図15は、第1の実施の形態におけるジョブ制御処理の詳細について説明するシーケンスチャート図である。また、
図16から
図21は、第1の実施の形態におけるジョブ制御処理の詳細について説明する図である。
【0074】
[メモリ決定処理]
初めに、ジョブ実行制御処理のうち、各実行対象ジョブを実行するメモリ群(ノード2)を決定する処理(以下、メモリ決定処理とも呼ぶ)の具体例について説明を行う。
図10及び
図11は、メモリ決定処理について説明するシーケンスチャート図である。
【0075】
ジョブ受付部111は、
図10に示すように、例えば、実行対象ジョブの実行を行う作業者によって実行対象ジョブの実行指示を受け付けるまで待機する(S11のNO)。
【0076】
そして、実行対象ジョブの実行指示を受け付けた場合(S11のYES)、メモリ群決定部114は、例えば、情報格納領域130に記憶された実行回数情報133を参照し、受け付けた実行指示に対応する実行対象ジョブについての情報が含まれているか否かを判定する(S12)。実行回数情報133は、例えば、各実行対象ジョブの実行回数を含む情報である。
【0077】
すなわち、メモリ群決定部114は、例えば、S11の処理で受け付けた実行指示に対応する実行対象ジョブが各ノード2において過去に実行された実行対象ジョブであるか否かを判定する。以下、実行回数情報133の具体例について説明を行う。
【0078】
[実行回数情報の具体例]
図16、
図17及び
図19は、実行回数情報133の具体例について説明する図である。
【0079】
図16等に示すジョブ実行回数情報133は、例えば、各実行対象ジョブが最初に実行されたタイミングの順序が設定される「実行順序」と、各実行対象ジョブを構成する各プログラム(各実行対象ジョブの実行に伴って実行される各プログラム)のプログラムIDが設定される「プログラムID」と、各実行対象ジョブの実行回数が設定される「実行回数」とを項目として有する。
【0080】
具体的に、
図16に示す実行回数情報133において、例えば、1行目の情報には、「実行順序」として「1」が設定され、「プログラムID」として「PG1」及び「PG2」が設定され、「実行回数」として「4(回)」が設定されている。
【0081】
また、
図16に示す実行回数情報133において、例えば、2行目の情報には、「実行順序」として「2」が設定され、「プログラムID」として「PG1」及び「PG5」が設定され、「実行回数」として「2(回)」が設定されている。
図16に含まれる他の情報についての説明は省略する。
【0082】
すなわち、
図16に示す実行回数情報133には、例えば、プログラムIDがPG1及びPG5のそれぞれである各プログラムを含む実行対象ジョブについての情報(2行目の情報)が含まれている。そのため、例えば、S11の処理において受け付けた実行指示に対応する実行対象ジョブに含まれる各プログラムのプログラムIDがPG1及びPG5である場合、メモリ群決定部114は、S11の処理において受け付けた実行指示に対応する実行対象ジョブについての情報が実行回数情報133に含まれていると判定する。
【0083】
そして、情報管理部116は、この場合、例えば、
図17の下線部分に示すように、プログラムIDがPG1及びPG5のそれぞれである各プログラムを含むジョブについての情報(2行目の情報)における「実行回数」に設定された値に1を加算する。
【0084】
図10に戻り、S11の処理において受け付けた実行指示に対応する実行対象ジョブについての情報が実行回数情報133に含まれていると判定した場合(S12のYES)、時間特定部112は、例えば、情報格納領域130に記憶された実行時間情報132を参照し、S11の処理において受け付けた実行指示に対応する実行対象ジョブをCXLメモリRMが割り当てられないノード2(第1メモリ群を有するノード2)において実行した場合における実行時間(第1実行時間)と、S11の処理において受け付けた実行指示に対応する実行対象ジョブをCXLメモリRMが割り当てられる可能性があるノード2(第2メモリ群を有するノード2)において実行した場合における実行時間(第2実行時間)とのそれぞれが記憶されているか否かを判定する(S14)。
【0085】
その結果、CXLメモリRMが割り当てられないノード2において実行した場合における実行時間と、CXLメモリRMが割り当てられる可能性があるノード2において実行した場合における実行時間とのそれぞれが実行時間情報132に記憶されていると判定した場合(S14のYES)、時間特定部112は、
図11に示すように、例えば、S11の処理において受け付けた実行指示に対応する実行対象ジョブをCXLメモリRMが割り当てられないノード2において実行した場合における実行時間を特定する(S21)。
【0086】
また、時間特定部112は、この場合、例えば、S11の処理において受け付けた実行指示に対応する実行対象ジョブをCXLメモリRMが割り当てられる可能性があるノード2において実行した場合における実行時間を特定する(S22)。以下、実行時間情報132の具体例について説明を行う。
【0087】
[実行時間情報の具体例]
図18、
図20及び
図21は、実行時間情報132の具体例について説明する図である。
【0088】
図18等に示す実行時間情報132は、例えば、各実行対象ジョブが最初に実行されたタイミングの順序が設定される「実行順序」と、各実行対象ジョブを構成する各プログラム(各実行対象ジョブの実行に伴って実行される各プログラム)のプログラムIDが設定される「プログラムID」とを項目として有する。また、
図18等に示す実行時間情報132は、例えば、CXLメモリRMが割り当てられないノード2において各実行対象ジョブを実行した場合における実行時間(第1実行時間)が設定される「第1実行時間」と、CXLメモリRMが割り当てられる可能性があるノード2において各実行対象ジョブを実行した場合における実行時間(第2実行時間)が設定される「第2実行時間」と、各実行対象ジョブを実行した場合におけるメモリアクセス頻度が設定される「アクセス頻度」とを項目として有する。「アクセス頻度」には、例えば、各実行対象ジョブの実行開始時間から所定時間後(例えば、T秒後)におけるメモリアクセス頻度(以下、第1メモリアクセス頻度とも呼ぶ)、各実行対象ジョブの実行開始時間と実行終了時間との真ん中の時間におけるメモリアクセス頻度(以下、第2メモリアクセス頻度とも呼ぶ)、または、各実行対象ジョブの実行終了時間の所定時間前(例えば、T秒前)におけるメモリアクセス頻度(以下、第3メモリアクセス頻度とも呼ぶ)が設定される。なお、「アクセス頻度」には、例えば、第1メモリアクセス頻度と第2メモリアクセス頻度と第3メモリアクセス頻度との平均値が設定されるものであってもよい。また、「アクセス頻度」には、例えば、第1メモリアクセス頻度と第2メモリアクセス頻度と第3メモリアクセス頻度との全てが設定されるものであってもよい。以下、情報が設定されていない項目には、「-」が設定されるものとして説明を行う。
【0089】
具体的に、
図18に示す実行時間情報132において、例えば、1行目の情報には、「実行順序」として「1」が設定され、「プログラムID」として「PG1」及び「PG2」が設定され、「第1実行時間」として「-」が設定され、「第2実行時間」として「-」が設定され、「アクセス頻度」として「-」が設定されている。
【0090】
また、
図18に示す実行時間情報132において、例えば、2行目の情報には、「実行順序」として「2」が設定され、「プログラムID」として「PG1」及び「PG5」が設定され、「第1実行時間」として「10s」が設定され、「第2実行時間」として「20s」が設定され、「アクセス頻度」として「100MB」が設定されている。
【0091】
また、
図18に示す実行時間情報132において、例えば、4行目の情報には、「実行順序」として「4」が設定され、「プログラムID」として「PG4」が設定され、「第1実行時間」として「-」が設定され、「第2実行時間」として「20s」が設定され、「アクセス頻度」として「200MB」が設定されている。
図18に含まれる他の情報についての説明は省略する。
【0092】
すなわち、
図18に示す実行時間情報132において、例えば、プログラムIDがPG1及びPG5のそれぞれである各プログラムを含む実行対象ジョブについての情報(2行目の情報)における「第1実行時間」と「第2実行時間」には、「10s」と「20s」とがそれぞれ設定されている。そのため、例えば、S11の処理において受け付けた実行指示に対応する実行対象ジョブに含まれる各プログラムのプログラムIDがPG1及びPG5である場合、時間特定部112は、S21の処理において第1実行時間として10msを特定し、S22の処理において第2実行時間として20msを特定する。
【0093】
図11に戻り、乖離度算出部113は、例えば、S21の処理で特定した実行時間と、S22の処理で特定した実行時間との乖離度合いを示す値を算出する(S23)。
【0094】
具体的に、例えば、S21の処理において第1実行時間として10msを特定し、S22の処理において第2実行時間として20msを特定した場合、乖離度算出部113は、S22の処理で特定した20msに対するS21の処理で特定した10msの割合である0.5を算出する。
【0095】
その後、メモリ群決定部114は、例えば、S23の処理で算出した値が閾値(第1閾値)未満であるか否かを判定する(S24)。
【0096】
その結果、S23の処理で算出した値が閾値未満であると判定した場合(S24のYES)、メモリ群決定部114は、例えば、S11の処理で実行指示を受け付けた実行対象ジョブの実行ノード2を、CXLメモリRMが割り当てられないノード2(第1メモリ群を有するノード2)に決定する(S25)。
【0097】
すなわち、S23の処理で算出した値が閾値未満である実行対象ジョブは、例えば、CXLメモリRMが割り当てられる可能性があるノード2において実行された場合、CXLメモリRMが割り当てられないノード2において実行された場合よりも実行時間が大幅に長くなる可能性がある実行対象ジョブであると判断できる。そのため、メモリ群決定部114は、例えば、S23の処理で算出した値が閾値未満である実行対象ジョブの実行ノード2を、CXLメモリRMが割り当てられないノード2に決定する。
【0098】
一方、S23の処理で算出した値が閾値以上であると判定した場合(S24のNO)、メモリ群決定部114は、例えば、S11の処理で実行指示を受け付けた実行対象ジョブの実行ノード2を、CXLメモリRMが割り当てられる可能性があるノード2(第2メモリ群を有するノード2)に決定する(S13)。
【0099】
すなわち、S23の処理で算出した値が閾値以上である実行対象ジョブは、例えば、CXLメモリRMが割り当てられる可能性があるノード2において実行された場合であっても、CXLメモリRMが割り当てられないノード2において実行された場合と実行時間が大きく変わらない実行対象ジョブであると判断できる。そのため、メモリ群決定部114は、例えば、S23の処理で算出した値が閾値以上である実行対象ジョブの実行ノード2を、CXLメモリRMが割り当てられる可能性があるノード2に決定する。
【0100】
これにより、ジョブスケジューラ1aは、例えば、CXLメモリRMが割り当てられないノード2において実行させる実行対象ジョブの数(すなわち、待機ジョブの発生数)を抑制しながら、各実行対象ジョブの実行時における実行性能の低下を抑制することが可能になる。
【0101】
なお、メモリ群決定部114は、例えば、S13の処理及びS25の処理において、S11の処理で実行指示を受け付けた実行対象ジョブの実行に要するメモリの量等に応じて、複数台のノード2を実行ノード2として決定するものであってもよい。
【0102】
一方、CXLメモリRMが割り当てられないノード2において実行した場合における実行時間と、CXLメモリRMが割り当てられる可能性があるノード2において実行した場合における実行時間とのうちの少なくともいずれかが記憶されていないと判定した場合(S14のNO)、時間特定部112等は、例えば、S21の処理からS24の処理を行わない。
【0103】
そして、メモリ群決定部114は、例えば、S11の処理において受け付けた実行指示に対応する実行対象ジョブの実行ノード2を、CXLメモリRMが割り当てられる可能性があるノード2に決定する(S13)。
【0104】
その後、情報管理部116は、
図19の下線部分に示すように、例えば、S11の処理において受け付けた実行指示に対応する実行対象ジョブに対応する情報を実行回数情報133の一部として情報格納領域130に記憶する。
【0105】
なお、メモリ群決定部114は、例えば、S11の処理において受け付けた実行指示に対応する実行対象ジョブについての情報が実行回数情報133に含まれていないと判定した場合においても同様に(S12のNO)、S13の処理を行う。
【0106】
そして、メモリ群決定部114は、例えば、S13の処理またはS25の処理の後、メモリ決定処理を終了する。
【0107】
[ジョブ実行処理]
次に、ジョブ実行制御処理のうち、各実行対象ジョブを実行する処理(以下、ジョブ実行処理とも呼ぶ)の具体例について説明を行う。
図12及び
図13は、ジョブ実行処理について説明するシーケンスチャート図である。
【0108】
ジョブ実行部115は、
図12に示すように、例えば、ジョブ実行タイミングまで待機する(S101のNO)。ジョブ実行タイミングは、例えば、各実行対象ジョブの実行開始時刻(ジョブ管理情報131に含まれる実行開始時刻)であってよい。
【0109】
そして、ジョブ実行タイミングになった場合(S101のYES)、ジョブ実行部115は、例えば、S101の処理においてジョブ実行タイミングになった実行対象ジョブを実行させる(S102)。
【0110】
具体的に、ジョブ実行部115は、例えば、情報格納領域130に記憶されたジョブ管理情報131を参照し、S101の処理においてジョブ実行タイミングになった実行対象ジョブの実行ノード2を特定する。そして、ジョブ実行部115は、例えば、特定した実行ノード2において、S101の処理においてジョブ実行タイミングになった実行対象ジョブを実行させる。
【0111】
続いて、ジョブ実行部115は、例えば、情報格納領域130に記憶された実行時間情報132を参照し、S102の処理で実行した実行対象ジョブをCXLメモリRMが割り当てられないノード2(第1メモリ群を有するノード2)において実行した場合における実行時間(第1実行時間)と、S102の処理で実行した実行対象ジョブをCXLメモリRMが割り当てられる可能性があるノード2(第2メモリ群を有するノード2)において実行した場合における実行時間(第2実行時間)とのそれぞれが記憶されているか否かを判定する(S103)。
【0112】
その結果、S102の処理で実行した実行対象ジョブをCXLメモリRMが割り当てられないノード2において実行した場合における実行時間と、S102の処理で実行した実行対象ジョブをCXLメモリRMが割り当てられる可能性があるノード2において実行した場合における実行時間とのうちの少なくともいずれかが記憶されていないと判定した場合(S103のNO)、ジョブ実行部115は、例えば、S101の処理においてジョブ実行タイミングになった実行対象ジョブを、CXLメモリRMが割り当てられないノード2においても実行する(S104)。
【0113】
すなわち、
図10等で説明したメモリ決定処理において、第1実行時間と第2実行時間とのうちの少なくともいずれかが記憶されていないと判定された実行対象ジョブの実行ノード2は、CXLメモリRMが割り当てられる可能性があるノード2に決定される(S13)。そのため、ジョブ実行部115は、例えば、CXLメモリRMが割り当てられる可能性があるノード2における各実行対象ジョブの1回目の実行を、CXLメモリRMが割り当てられないノード2における各実行対象ジョブの1回目の実行よりも先に行う。したがって、第1実行時間と第2実行時間とのうちの少なくともいずれかが実行時間情報132の一部として記憶されていない場合とは、少なくとも第1実行時間が記憶されていない場合であると判断できる。
【0114】
そこで、ジョブ実行部115は、例えば、第1実行時間と第2実行時間とのうちの少なくともいずれかが記憶されていないと判定した場合、CXLメモリRMが割り当てられる可能性がある各ノード2が他の用途に使用されているか否かを判定する。その結果、他の用途に使用されていないノード2が存在すると判定した場合、ジョブ実行部115は、例えば、存在すると判定したノード2においても実行対象ジョブを実行する。
【0115】
これにより、情報管理部116は、例えば、各ノード2における実行対象ジョブの実行完了に応じて、第1実行時間と第2実行時間との両方を取得することが可能になる。
【0116】
なお、他の用途に使用されていないノード2が存在しないと判定した場合、ジョブ実行部115は、例えば、S104からS106の処理を行わないものであってよい。
【0117】
図13に戻り、情報管理部116は、例えば、CXLメモリRMが割り当てられないノード2における実行対象ジョブの実行の完了に応じて、CXLメモリRMが割り当てられないノード2における実行対象ジョブの実行時間(第1実行時間)を取得する(S105)。
【0118】
すなわち、情報管理部116は、例えば、S104の処理で実行した実行対象ジョブの実行完了に応じて、S104の処理で実行した実行対象ジョブの実行時間を取得する。
【0119】
そして、情報管理部116は、例えば、S105の処理で取得した実行時間を実行時間情報132の一部として情報格納領域130に記憶する(S106)。
【0120】
その後、ジョブ実行部115は、
図14に示すように、例えば、情報格納領域130に記憶された実行時間情報132を参照し、S102の処理で実行した実行対象ジョブをCXLメモリRMが割り当てられる可能性があるノード2において実行した場合における実行時間(第2実行時間)が記憶されているか否かを判定する(S111)。
【0121】
その結果、S102の処理で実行した実行対象ジョブをCXLメモリRMが割り当てられる可能性があるノード2において実行した場合における実行時間が記憶されていないと判定した場合(S111のNO)、情報管理部116は、例えば、CXLメモリRMが割り当てられる可能性があるノード2における実行対象ジョブの実行の完了に応じて、CXLメモリRMが割り当てられる可能性があるノード2における実行対象ジョブの実行時間(第2実行時間)を取得する(S112)。
【0122】
すなわち、情報管理部116は、例えば、S102の処理で実行した実行対象ジョブの実行完了に応じて、S102の処理で実行した実行対象ジョブの実行時間を取得する。
【0123】
そして、情報管理部116は、例えば、S112の処理で取得した実行時間を実行時間情報132の一部として情報格納領域130に記憶する(S113)。
【0124】
一方、S102の処理で実行した実行対象ジョブをCXLメモリRMが割り当てられる可能性があるノード2において実行した場合における実行時間が記憶されていると判定した場合(S111のYES)、情報管理部116は、例えば、S112の処理及びS113の処理を行わない。
【0125】
そして、ジョブ実行部115は、例えば、ジョブ実行処理を終了する。なお、ジョブ実行部115は、例えば、S102の処理で実行した実行対象ジョブをCXLメモリRMが割り当てられないノード2において実行した場合における実行時間と、S102の処理で実行した実行対象ジョブをCXLメモリRMが割り当てられる可能性があるノード2において実行した場合における実行時間とのそれぞれが記憶されていると判定した場合においても同様に(S103のYES)、ジョブ実行処理を終了する。
【0126】
これにより、ジョブスケジューラ1aは、例えば、各実行対象ジョブに対応する実行時間を実行時間情報132として情報格納領域130に蓄積することが可能になる。
【0127】
[S106の処理及びS113の処理の具体例]
次に、S106の処理及びS113の処理の具体例について説明を行う。
【0128】
例えば、
図18に示す実行時間情報132における「プログラムID」に「PG1」及び「PG2」が設定された情報(1行目の情報)における「第1実行時間」、「第2実行時間」及び「アクセス頻度」のそれぞれには、情報が設定されていない。
【0129】
そのため、S101の処理においてジョブ実行タイミングになった実行対象ジョブに含まれるプログラムのプログラムIDがPG1及びPG2である場合、情報管理部116は、
図20の下線部分に示すように、例えば、S105の処理で取得した第1実行時間を「第1実行時間」に設定し、S112の処理で取得した第2実行時間を「第2実行時間」に設定する。また、情報管理部116は、
図20の下線部分に示すように、例えば、S101の処理においてジョブ実行タイミングになった実行対象ジョブの実行中において測定されたメモリアクセス頻度を「アクセス頻度」に設定する。
【0130】
また、例えば、
図18に示す実行時間情報132における「プログラムID」に「PG4」が設定された情報(4行目の情報)における「第1実行時間」には、情報が設定されていない。
【0131】
そのため、例えば、S101の処理においてジョブ実行タイミングになった実行対象ジョブに含まれるプログラムのプログラムIDがPG4である場合、情報管理部116は、
図21の下線部分に示すように、例えば、S105の処理で取得した第1実行時間を「第1実行時間」に設定する。
【0132】
[メモリ再決定処理]
次に、ジョブ実行制御処理のうち、各実行対象ジョブを実行するメモリ群(ノード2)を再決定する処理(以下、メモリ再決定処理とも呼ぶ)の具体例について説明を行う。
図14及び
図15は、メモリ再決定処理について説明するシーケンスチャート図である。
【0133】
メモリ群再決定部117は、
図14に示すように、例えば、再決定タイミングになるまで待機する(S31のNO)。再決定タイミングは、例えば、数時間ごとのタイミングであってよい。
【0134】
そして、再決定タイミングになった場合(S31のYES)、メモリ群再決定部117は、例えば、CXLメモリRMが割り当てられないノード2(第1メモリ群を有するノード2)に決定された待機ジョブが存在するか否かを判定する(S32)。
【0135】
その結果、CXLメモリRMが割り当てられないノード2に決定された待機ジョブが存在すると判定した場合(S32のYES)、メモリ群再決定部117は、例えば、待機ジョブのうちの1つを特定する(S33)。
【0136】
続いて、メモリ群再決定部117は、例えば、S33の処理で特定した待機ジョブが複数のノード2に跨って実行される実行対象ジョブ(以下、並列処理を行う実行対象ジョブとも呼ぶ)であるか否かを判定する(S34)。
【0137】
具体的に、メモリ群再決定部117は、例えば、S33の処理で特定した待機ジョブの実行に要するメモリの量が、CXLメモリRMが割り当てられないノード2(1台のノード2)に搭載されたメモリの量を超えている場合、S33の処理で特定した待機ジョブが複数のノード2に跨って実行される実行対象ジョブであると判定する。
【0138】
その結果、S33の処理で特定した待機ジョブが複数のノード2に跨って実行される実行対象ジョブであると判定した場合(S34のYES)、メモリ群再決定部117は、例えば、S33の処理で特定した待機ジョブの実行ノード2を、CXLメモリRMが割り当てられないノード2であってメモリ群の構成が同一である複数のノード2、または、CXLメモリRMが割り当てられる可能性があるノード2であってメモリ群の構成が同一である複数のノード2に決定する(S35)。
【0139】
具体的に、メモリ群再決定部117は、例えば、CXLメモリRMが割り当てられないノード2であってローカルメモリLMの搭載数が同一である複数のノード2(例えば、
図1等で説明したノード2c及びノード2d)において、S33の処理で特定した待機ジョブの実行ノード2を実行することが可能であると判定した場合、S33の処理で特定した待機ジョブの実行ノード2を、CXLメモリRMが割り当てられないノード2であってローカルメモリLMの搭載数が同一である複数のノード2に決定する。
【0140】
一方、メモリ群再決定部117は、例えば、CXLメモリRMが割り当てられないノード2であってローカルメモリLMの搭載数が同一である複数のノード2において、S33の処理で特定した待機ジョブの実行ノード2を実行することができないと判定した場合、S33の処理で特定した待機ジョブの実行ノード2を、CXLメモリRMが割り当てられる可能性があるノード2であってローカルメモリLMの搭載数が同一である複数のノード2(例えば、
図1等で説明したノード2a及びノード2b)に決定する。さらに、ジョブスケジューラ1aは、この場合、例えば、S33の処理で特定した待機ジョブの実行ノード2のそれぞれに割り当てられるCXLメモリRMの数を同数にする。
【0141】
すなわち、待機ジョブを複数のノード2において実行する場合、各ノード2では、例えば、所定の処理単位ごとに、各処理単位における処理結果の集約が行われる。そのため、各ノード2におけるメモリ群の構成が異なる場合、実行速度の速いノード2では、例えば、実行速度が遅いノード2における処理の完了を待つ時間が発生し、実行速度が速いノード2における実行対象ジョブの実行性能が低下する。
【0142】
そこで、メモリ群再決定部117は、例えば、S33の処理で特定した待機ジョブが複数のノード2に跨って実行されるジョブである場合、S33の処理で特定した待機ジョブを実行する複数の実行ノード2を、メモリ群の構成が同一である複数のノード2に決定する。
【0143】
これにより、ジョブスケジューラ1aは、例えば、待機ジョブを実行する複数の実行ノード2間における処理速度の差異の発生を抑制することが可能になる。そのため、ジョブスケジューラ1aは、例えば、各ノード2における実行対象ジョブの実行性能の低下を抑制することが可能になる。
【0144】
図14に戻り、S33の処理で特定した待機ジョブが複数のノード2に跨って実行される実行対象ジョブでないと判定した場合(S34のNO)、メモリ群再決定部117は、
図15に示すように、例えば、情報格納領域130に記憶された実行時間情報132を参照し、S33の処理で特定した待機ジョブのメモリアクセス頻度を特定する(S41)。
【0145】
そして、S41の処理で特定したメモリアクセス頻度が閾値(以下、第2閾値とも呼ぶ)以上であると判定した場合(S42のYES)、メモリ群再決定部117は、例えば、S33の処理で特定した待機ジョブの実行ノード2を、CXLメモリRMが割り当てられる可能性があるノード2に決定(変更)する(S43)。
【0146】
一方、S41の処理で特定したメモリアクセス頻度が第2閾値未満であると判定した場合(S42のNO)、メモリ群再決定部117は、例えば、S43の処理を行わない。
【0147】
すなわち、メモリアクセス頻度が大きい待機ジョブは、例えば、CXLメモリRMが割り当てられないノード2において実行させる場合、メモリアクセス頻度が小さい実行対象ジョブと比較して、同一のノード2において実行される他の実行対象ジョブの性能を低下させる可能性が高いものと判断できる。そのため、メモリ群再決定部117は、例えば、メモリアクセス頻度が閾値以上である待機ジョブの実行ノード2をCXLメモリRMが割り当てられる可能性があるノード2に変更することにより、CXLメモリRMが割り当てられないノード2において実行する各実行対象ジョブの性能低下を抑制する。
【0148】
その後、メモリ群再決定部117は、例えば、S33の処理において全ての待機ジョブを特定したか否かを判定する(S36)。なお、メモリ群再決定部117は、例えば、S35の処理の後においても同様に、S36の処理を行う。
【0149】
その結果、S33の処理において全ての待機ジョブを特定していないと判定した場合(S36のNO)、メモリ群再決定部117は、例えば、S33以降の処理を再度行う。
【0150】
一方、S33の処理において全ての待機ジョブを特定したと判定した場合(S36のYES)、または、待機ジョブが存在しないと判定した場合(S32のNO)、メモリ群再決定部117は、例えば、メモリ再決定処理を終了する。
【0151】
なお、メモリ再決定処理を行ったにも関わらず、実行ノード2が変更された待機ジョブが存在しなかった場合、メモリ群再決定部117は、例えば、少なくとも一部の待機ジョブ(例えば、実行順序が最先の待機ジョブ)の実行ノード2を、CXLメモリRMが割り当てられる可能性があるノード2に変更するものであってもよい。
【0152】
このように、本実施の形態におけるジョブスケジューラ1aは、例えば、第1メモリ群を用いた場合における各実行対象ジョブの第1実行時間と、第2メモリ群を用いた場合における各実行対象ジョブの第2実行時間とを記憶した情報格納領域130を参照し、実行対象ジョブに対応する第1実行時間と第2実行時間とを特定する。
【0153】
そして、ジョブスケジューラ1aは、例えば、特定した第1実行時間と第2実行時間との乖離度合いを示す値を算出する。その後、ジョブスケジューラ1aは、例えば、算出した値が所定の条件を満たすか否かに基づいて、第1メモリ群と第2メモリ群とから実行対象ジョブを実行する特定メモリ群を決定する。
【0154】
すなわち、本実施の形態におけるジョブスケジューラ1aは、例えば、予め記憶部に記憶した第1実行時間及び第2実行時間を参照することによって、各実行対象ジョブに対応する第1実行時間と第2実行時間との乖離の大きさを判定する。そして、ジョブスケジューラ1aは、例えば、乖離が大きいと判定した実行対象ジョブを、CXLメモリRMが割り当てられたノード2において実行した場合に実行性能が大きく低下する実行対象ジョブ(言い換えれば、CXLメモリRMが割り当てられたノード2での実行に適していない実行対象ジョブ)であると推定する。また、ジョブスケジューラ1aは、例えば、乖離が大きいと判定しなかった実行対象ジョブを、CXLメモリRMが割り当てられたノード2において実行した場合であっても実行性能が大きく低下しない実行対象ジョブ(言い換えれば、CXLメモリRMが割り当てられたノード2での実行に適している実行対象ジョブ)であると推定する。
【0155】
そして、ジョブスケジューラ1aは、例えば、CXLメモリRMが割り当てられたノード2での実行に適していないと判定した実行対象ジョブを、CXLメモリRMが割り当てられないノード2(例えば、
図4におけるノード2cやノード2d)において実行させることを決定する。また、ジョブスケジューラ1aは、例えば、CXLメモリRMが割り当てられたノード2での実行に適していると判定した実行対象ジョブを、CXLメモリRMが割り当てられる可能性があるノード2(例えば、
図4におけるノード2aやノード2b)において実行させることを決定する。
【0156】
これにより、本実施の形態におけるジョブスケジューラ1aは、例えば、各ノード2における実行対象ジョブの実行待ちの発生を抑制することが可能になるとともに、各実行対象ジョブの実行性能の低下を抑制することが可能になる。
【0157】
以上の実施の形態をまとめると、以下の付記のとおりである。
【0158】
(付記1)
第1メモリ群を用いた場合における各ジョブの第1実行時間と、前記第1メモリ群よりもアクセスに時間を要する第2メモリ群を用いた場合における各ジョブの第2実行時間とを記憶した記憶部を参照し、特定ジョブに対応する前記第1実行時間と前記第2実行時間とを特定し、
特定した前記第1実行時間と前記第2実行時間との乖離度合いを示す値を算出し、
算出した前記値が所定の条件を満たすか否かに基づいて、前記第1メモリ群と前記第2メモリ群とから前記特定ジョブを実行する特定メモリ群を決定する、
処理をコンピュータに実行させることを特徴とするジョブ実行制御プログラム。
【0159】
(付記2)
付記1において、
前記第1メモリ群は、1以上のローカルメモリから構成されるメモリ群であり、
前記第2メモリ群は、1以上のローカルメモリから構成されるメモリ群、または、1以上のローカルメモリと1以上のリモートメモリとから構成されるメモリ群である、
ことを特徴とするジョブ実行制御プログラム。
【0160】
(付記3)
付記2において、
前記1以上のリモートメモリのそれぞれは、CXL(Compute Express Link)メモリである、
ことを特徴とするジョブ実行制御プログラム。
【0161】
(付記4)
付記1において、
前記算出する処理では、前記第2実行時間に対する前記第1実行時間の割合を前記値として算出し、
前記決定する処理では、前記値が第1閾値未満である場合、前記第1メモリ群を用いることによって前記特定ジョブを実行することを決定し、前記値が前記第1閾値以上である場合、前記第2メモリ群を用いることによって前記特定ジョブを実行することを決定する、
ことを特徴とするジョブ実行制御プログラム。
【0162】
(付記5)
付記1において、さらに、
前記特定ジョブに対応する前記第1実行時間が前記記憶部に記憶されていない場合、前記第1メモリ群を用いて前記特定ジョブを実行することにより、前記特定ジョブに対応する前記第1実行時間を取得し、
取得した前記第1実行時間を前記記憶部に記憶する、
処理をコンピュータに実行させることを特徴とするジョブ実行制御プログラム。
【0163】
(付記6)
付記1において、さらに、
前記特定ジョブに対応する前記第2実行時間が前記記憶部に記憶されていない場合、前記第2メモリ群を用いて前記特定ジョブを実行することにより、前記特定ジョブに対応する前記第2実行時間を取得し、
取得した前記第2実行時間を前記記憶部に記憶する、
処理をコンピュータに実行させることを特徴とするジョブ実行制御プログラム。
【0164】
(付記7)
付記1において、
前記決定する処理では、
前記特定ジョブの実行時に用いられるメモリ群が複数であり、かつ、前記値が第1閾値以上である場合、前記第1メモリ群を複数用いることによって前記特定ジョブを実行することを決定し、前記特定ジョブの実行時に用いられるメモリ群が複数であり、かつ、前記値が前記第1閾値未満である場合、前記第2メモリ群を複数用いることによって前記特定ジョブを実行することを決定する、
ことを特徴とするジョブ実行制御プログラム。
【0165】
(付記8)
付記1において、
前記記憶部は、各ジョブの実行時におけるメモリに対するアクセス頻度を記憶し、さらに、
前記決定する処理において前記特定メモリ群として前記第1メモリ群に決定された場合、前記記憶部を参照し、前記特定ジョブに対応する前記アクセス頻度を特定し、
特定した前記アクセス頻度が第2閾値以上である場合、前記特定メモリ群を前記第1メモリ群から前記第2メモリ群に変更する、
処理をコンピュータに実行させることを特徴とするジョブ実行制御プログラム。
【0166】
(付記9)
第1メモリ群を用いた場合における各ジョブの第1実行時間と、前記第1メモリ群よりもアクセスに時間を要する第2メモリ群を用いた場合における各ジョブの第2実行時間とを記憶した記憶部を参照し、特定ジョブに対応する前記第1実行時間と前記第2実行時間とを特定する時間特定部と、
特定した前記第1実行時間と前記第2実行時間との乖離度合いを示す値を算出する乖離度算出部と、
算出した前記値が所定の条件を満たすか否かに基づいて、前記第1メモリ群と前記第2メモリ群とから前記特定ジョブを実行する特定メモリ群を決定するメモリ群決定部と、を有する、
ことを特徴とする情報処理装置。
【0167】
(付記10)
第1メモリ群を用いた場合における各ジョブの第1実行時間と、前記第1メモリ群よりもアクセスに時間を要する第2メモリ群を用いた場合における各ジョブの第2実行時間とを記憶した記憶部を参照し、特定ジョブに対応する前記第1実行時間と前記第2実行時間とを特定し、
特定した前記第1実行時間と前記第2実行時間との乖離度合いを示す値を算出し、
算出した前記値が所定の条件を満たすか否かに基づいて、前記第1メモリ群と前記第2メモリ群とから前記特定ジョブを実行する特定メモリ群を決定する、
処理をコンピュータが実行することを特徴とするジョブ実行制御方法。
【符号の説明】
【0168】
1:情報処理装置 1a:ジョブスケジューラ
2:ノード 3:スイッチ
4:メモリ筐体 10:情報処理システム
101:CPU 102:メモリ
103:I/Oインタフェース 104:記憶装置
105:バス 130:情報格納領域