JP2018018171A - 並列処理装置、ジョブスケジューリング方法、およびジョブスケジューリングプログラム - Google Patents

並列処理装置、ジョブスケジューリング方法、およびジョブスケジューリングプログラム Download PDF

Info

Publication number
JP2018018171A
JP2018018171A JP2016145711A JP2016145711A JP2018018171A JP 2018018171 A JP2018018171 A JP 2018018171A JP 2016145711 A JP2016145711 A JP 2016145711A JP 2016145711 A JP2016145711 A JP 2016145711A JP 2018018171 A JP2018018171 A JP 2018018171A
Authority
JP
Japan
Prior art keywords
job
ticket
request
resource
nodes
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.)
Withdrawn
Application number
JP2016145711A
Other languages
English (en)
Inventor
美緒 中川
Mio Nakagawa
美緒 中川
政男 早川
Masao Hayakawa
政男 早川
剛 橋本
Takeshi Hashimoto
剛 橋本
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 JP2016145711A priority Critical patent/JP2018018171A/ja
Priority to US15/586,804 priority patent/US20180024862A1/en
Publication of JP2018018171A publication Critical patent/JP2018018171A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • 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
    • G06F9/5072Grid computing
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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]
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5013Request control

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】ジョブの実行依頼が行えなくなることを抑制すること。【解決手段】スケジューラサーバssは、図1の(1)で示すように、単位時間における自身の資源を用いて、その単位時間に計算資源割り当て処理が可能なジョブの数に応じた数分のチケットtixを、スケジューラクライアントsc#1、#2に配分する。スケジューラクライアントsc#1は、図1の(2)で示すように、ジョブ投入を受け付けた場合、チケットtixを消費して、受け付けたジョブを対象とする計算資源割り当て処理を実行する依頼を、スケジューラサーバssに送信する。【選択図】図1

Description

本発明は、並列処理装置、ジョブスケジューリング方法、およびジョブスケジューリングプログラムに関する。
従来、ジョブの実行依頼を受け付けて、受け付けたジョブに計算資源を割り当てるジョブのスケジューリング処理を行う技術がある。関連する先行技術として、例えば、新規ジョブ投入に応じて、全ての情報処理装置のジョブ番号を参照し、固有の採番範囲から未使用の番号を検索し、新規のジョブ番号として登録する技術がある。また、バッチサーバが、データベースサーバにジョブの情報が登録されたら、自身が実行中のジョブ数と実施可能なジョブの最大数から現在利用率を算出し、現在利用率の大小に応じて処理を行うか、他のバッチサーバに処理を任せるか判定する技術がある。また、利用者が、グループ化した各ジョブを負荷分散単位としてジョブ登録マシンからジョブ実行マシンへ転送し、予測実行時間、ジョブ実行の進行度、予測終了時間を算出して表示させる技術がある。
特開平8−320851号公報 特開2015−5008号公報 特開平10−49504号公報
しかしながら、従来技術によれば、ジョブの実行依頼が短期間に集中すると、スケジューリング処理を行う装置にかかる負荷が増大することになる。そして、ジョブのスケジューリング処理を行う装置にかかる負荷が増大し、ジョブの実行依頼の上限数に達すると、ジョブの実行依頼が行えなくなる。
1つの側面では、本発明は、ジョブの実行依頼が行えなくなることを抑制することができる並列処理装置、ジョブスケジューリング方法、およびジョブスケジューリングプログラムを提供することを目的とする。
本発明の一側面によれば、プロセッサとメモリとを有する3以上のノードを有する並列処理装置であって、3以上のノードのうちのジョブを対象とする計算資源の割り当て処理を行う特定のノードは、単位時間の特定のノードの資源を用いて単位時間に割り当て処理が可能なジョブの数に応じた数分の割り当て処理を依頼可能な権限を示す権限情報を、3以上のノードのうちのジョブの実行要求を受け付ける複数のノードの各ノードに割り当てて、割り当てた権限情報を各ノードに送信し、各ノードは、ジョブの実行要求を受け付けた場合、特定のノードから受け付けた権限情報が示す権限を消費して、当該ジョブを対象とする割り当て処理を実行する依頼を、特定のノードに送信する並列処理装置、ジョブスケジューリング方法、およびジョブスケジューリングプログラムが提案される。
本発明の一態様によれば、ジョブの実行依頼が行えなくなることを抑制することができるという効果を奏する。
図1は、本実施の形態にかかる並列処理装置101の動作例を示す説明図である。 図2は、実施例1におけるHPCシステム200の構成例を示す説明図である。 図3は、ノードのハードウェア構成例を示す説明図である。 図4は、HPCシステム200の機能構成例を示す説明図である。 図5は、メッセージフォーマットの一例を示す説明図である。 図6は、処理時間管理表411の一例を示す説明図である。 図7は、資源チケット使用実績管理表412の一例を示す説明図である。 図8は、IDチケット使用実績管理表413の一例を示す説明図である。 図9は、資源チケット補充表414の一例を示す説明図である。 図10は、IDチケット補充表415の記憶内容の一例を示す説明図である。 図11は、スケジューラクライアントscにおけるIDチケット初期化処理手順の一例を示すフローチャートである。 図12は、スケジューラクライアントscにおけるジョブ投入処理手順の一例を示すフローチャートである。 図13は、スケジューラクライアントscにおけるジョブ実行取消処理手順の一例を示すフローチャートである。 図14は、スケジューラクライアントscにおけるジョブ取消依頼処理手順の一例を示すフローチャートである。 図15は、スケジューラクライアントscにおけるジョブ状態表示処理手順の一例を示すフローチャートである。 図16は、スケジューラクライアントscにおけるジョブ実行依頼処理手順の一例を示すフローチャートである。 図17は、スケジューラクライアントscにおけるIDチケット補充依頼処理手順の一例を示すフローチャートである。 図18は、スケジューラクライアントscにおけるメッセージ受信処理手順の一例を示すフローチャートである。 図19は、スケジューラクライアントscにおけるジョブ実行依頼メッセージ送信処理手順の一例を示すフローチャートである。 図20は、スケジューラサーバssにおける初期化処理手順の一例を示すフローチャートである。 図21は、スケジューラサーバssにおける依頼メッセージ処理手順の一例を示すフローチャートである。 図22は、スケジューラサーバssにおける既存メッセージ処理手順の一例を示すフローチャートである。 図23は、スケジューラサーバssにおけるチケット無効通知処理手順の一例を示すフローチャートである。 図24は、スケジューラサーバssにおける資源チケット補充スケジュール処理手順の一例を示すフローチャートである。 図25は、スケジューラサーバssにおけるIDチケット補充スケジュール処理手順の一例を示すフローチャートである。 図26は、スケジューラサーバssにおける計算資源割り当て処理手順の一例を示すフローチャートである。 図27は、スケジューラサーバssにおける処理時間見積り式記録処理手順の一例を示すフローチャートである。 図28は、スケジューラサーバssにおける資源チケット使用実績記録処理手順の一例を示すフローチャートである。 図29は、スケジューラサーバssにおけるチケット管理処理手順の一例を示すフローチャートである。 図30は、スケジューラサーバssにおける資源チケット発行数算出処理手順の一例を示すフローチャートである。 図31は、スケジューラサーバssにおける資源チケット発行数見積り誤差補正処理手順の一例を示すフローチャートである。 図32は、スケジューラサーバssにおける資源チケット配布処理手順の一例を示すフローチャートである。 図33は、スケジューラサーバssにおけるIDチケット使用実績記録処理手順の一例を示すフローチャートである。 図34は、スケジューラサーバssにおけるIDチケット発行数算出処理手順の一例を示すフローチャートである。 図35は、スケジューラサーバssにおけるIDチケット配布処理手順の一例を示すフローチャートである。 図36は、実施例2におけるHPCシステム3600の構成例を示す説明図である。
以下に図面を参照して、開示の並列処理装置、ジョブスケジューリング方法、およびジョブスケジューリングプログラムの実施の形態を詳細に説明する。
図1は、本実施の形態にかかる並列処理装置101の動作例を示す説明図である。並列処理装置101は、ジョブのスケジューリング処理を実行するコンピュータである。具体的には、並列処理装置101は、プロセッサとメモリとを有する3以上のノードを有し、3以上のノードのうちの複数のノードと、特定のノードとが、スケジューリング処理を連携して行う。ジョブを実行する実行主体は、並列処理装置101に含まれる3以上のノードのいずれかのノードでもよいし、並列処理装置101以外の他の装置でもよい。以下の説明では、ジョブを実行する実行主体は、並列処理装置101に含まれる3以上のノードのうちの計算ノードとする。
ここで、ジョブとは、並列処理装置101の利用者から見た処理の単位を示す。ジョブと似たような概念として、プログラムの実行単位であって、固有のメモリ空間を有するプロセスや、プログラムの実行単位であって、同一プロセスに属するもの同士でメモリ空間を共有するスレッド等がある。従って、並列処理装置101は、複数のジョブとして、複数のスレッドや複数のプロセスのスケジューリング処理を行ってもよい。ここで、ジョブは、例えば、科学技術計算等の処理といったジョブである。また、並列処理装置101は、例えば、ハイ・パフォーマンス・コンピューティング(HPC:High Performance Computing)分野で使用されるコンピュータである。
一般的に、並列計算機環境において、ジョブスケジューラにジョブの実行を依頼することを「ジョブを投入する」ないし「ジョブ投入」と呼ぶことがある。並列ジョブの実行には、スケジューリング処理として、プロセッサ、コア、計算ノードなどのジョブへの割り当て単位となる計算装置を、予めジョブの投入者が指定する数だけ、指定する長さの時間まとめて割り当てることになる。
受け付け済みとなったジョブの実行用に予約された計算ノードの集合は、予約された時間帯に、そのジョブの実行のために使用される。すなわち、「計算ノードの集合」と「時間帯」の組が、受け付け済みジョブに割り当てられたとみなすことができる。ここで、並列処理装置101の利用者は、ジョブを投入した後には、そのジョブに割り当てられた資源、特にジョブの実行開始予定時刻を確認する場合が多い。また、各ジョブが指定する「計算ノードの集合」と「時間帯」がまちまちであるため、大規模な並列計算機に対し、システム全体での計算装置の稼動率をできるだけ高くするようにジョブのスケジューリング処理を行う処理量が、大きくなりうる。特に主に中小規模のジョブの実行に使われる場合、それらのジョブは不特定多数の利用者の作業環境である利用者端末から投入する場合が多いため、比較的短い時間に多数のジョブ投入が発生することがある。
比較的短い時間に多数のジョブ投入が発生する例としては、偶然で多くの利用者が比較的短い時間に多数のジョブを投入する場合や、特定の利用者が多数のジョブを自動投入するシェルスクリプトを実行する場合などがある。ここで、シェルスクリプトによる多数ジョブの自動投入は、しばしばスクリプトの誤りが原因であって、その後、投入されたジョブがキャンセルされる場合も多い。
例えば、ある装置でジョブのスケジューリング処理を行うと、その装置の処理能力を超えた負荷が発生する場合には、ジョブの受け付けは拒否され、ジョブ投入処理自体がエラーになる。また、計算ノードの数の指定を変化させて試行錯誤することで、ジョブ終了を早めようとする利用者も存在し、このような行為も、ジョブ投入を多くする原因となる。なお、計算ノードの数の指定を変化させる理由は、指定する計算ノードの数が変わると、他のジョブの資源割り当て状況との兼ね合いで、割り当てられる資源の「時間帯」、すなわちジョブの開始時刻と打ち切り時刻が変化することがあるためである。
このような原因により、ジョブのスケジューリング処理を実行する装置の負荷が高まると、受け付け可能なジョブ数が減少し、ジョブ投入がエラーとなる場合が増加することになる。多数のジョブ投入が短時間に集中して実行された場合にジョブ投入自体がエラーになることを防止する方法としては、ジョブスケジューラを実行する装置の処理能力に十分な余裕を持てば可能とはなる。しかし、この方法では、ジョブ投入数が一般的な水準の際には、使用されない数の装置を常時稼動させることになり、費用の観点から不合理な場合がしばしばある。
そこで、本実施の形態では、スケジューリング処理を行う実行主体を、ジョブ投入を受け付ける複数のクライアントと、受け付けたジョブに計算資源を割り当てるサーバとに分ける。そして、サーバは、自身が割り当て処理可能なジョブ数分の依頼可能な権限を示す権限情報を、クライアントに配分し、クライアントは、権限情報を消費してジョブに計算資源を割り当てる処理をサーバに依頼する。
ここで、以下の記載では、スケジューリング処理を行う実行主体のうち、サーバとなるノードを、「スケジューラサーバ」とし、クライアントとなるノードを、「スケジューラクライアント」と称する。
また、権限情報には、権限情報が示す権限によって割り当て処理されるジョブに付与されるジョブの識別情報が含まれてもよい。以下の記載では、権限情報を、「チケット」と称する。また、ジョブの識別情報を、「ジョブID(IDentifier)」と称する。投入されたジョブに、システム全体で一意なジョブIDを付与し、ジョブの投入元にジョブIDを通知することは、ジョブを用いたシステムにおいて順守すべき制約条件の1つである。ここで、チケット内にジョブIDが含まれるとすると、スケジューラクライアントは、チケットがない状態でジョブ投入を受け付けると、受け付けたジョブに対してジョブIDを設定することができなくなる。そこで、本実施の形態では、前述したチケットを、計算資源を割り当てる処理をサーバに依頼可能な権限を示す「資源チケット」と、ジョブIDを有する「IDチケット」とに分けてもよい。この場合、スケジューラサーバは、IDチケットについては先行してクライアントに配分してもよい。
図1を用いて、並列処理装置101の動作例について説明する。図1に示す並列処理装置101は、ジョブ投入を受け付けるスケジューラクライアントsc#1、#2と、計算資源の割り当て処理を行う特定のノードとなるスケジューラサーバssとを有する。また、図1で示すチケットは、資源チケットとIDチケットとを含むものとする。また、計算資源の割り当て処理を、以下「計算資源割り当て処理」と称する。
スケジューラサーバssは、図1の(1)で示すように、単位時間における自身の資源を用いて、その単位時間に計算資源割り当て処理が可能なジョブの数に応じた数分のチケットtixを、スケジューラクライアントsc#1、#2に配分する。図1の例では、単位時間のスケジューラサーバssの資源を、矩形110で示す。そして、図1では、矩形110内に、破線の縁を持つジョブが4つあることが、単位時間に計算資源割り当て処理が可能なジョブの数が4であることを示す。なお、単位時間は、どのような時間間隔でもよく、例えば、数秒である。
図1の例では、スケジューラサーバssは、単位時間に計算資源割り当て処理が可能なジョブの数分の4つのチケットtix1〜4を生成する。次に、スケジューラサーバssは、チケットtix1、2をスケジューラクライアントsc#1に割り当てて、チケットtix3、4をスケジューラクライアントsc#2に割り当てる。そして、スケジューラサーバssは、割り当てたチケットtixを、スケジューラクライアントsc#1、#2に送信する。また、スケジューラサーバssは、チケットに、数秒程度の有効時間を設定してもよい。有効時間が経過したチケットは無効となる。
また、チケットtixを各スケジューラクライアントscに割り当てて、割り当てたチケットtixを、スケジューラクライアントscに送信することを、「チケットを各スケジューラクライアントscに配分する」と称する場合がある。また、各スケジューラクライアントscへ配分するチケットtixの割合は、どのようなものでもよい。例えば、スケジューラサーバssは、各スケジューラクライアントscに均等にチケットtixを配分してもよいし、各スケジューラクライアントscの処理能力に応じてチケットtixを配分してもよい。または、スケジューラサーバssは、スケジューラクライアントscからチケットを要求された数に応じてチケットtixを配分してもよい。
スケジューラクライアントscは、図1の(2)で示すように、ジョブ投入を受け付けた場合、チケットtixを消費して、受け付けたジョブを対象とする計算資源割り当て処理を実行する依頼を、スケジューラサーバssに送信する。図1の例では、スケジューラクライアントscは、並列処理装置101の利用者からジョブj1の投入を受け付けたとする。この場合、スケジューラクライアントscは、チケットtix1を消費して、ジョブj1を対象とする計算資源割り当て処理を実行する依頼を、スケジューラサーバssに送信する。これにより、並列処理装置101は、スケジューラサーバssにかかる負荷を一定範囲に抑えつつ、かつ、利用者が実行するジョブ投入についても、上限数に到達することを抑制することができる。
ここで、図1の例では、スケジューラサーバssは、単位時間に計算資源割り当て処理が可能なジョブの数と同一の数分のチケットtixを生成したが、異なる数のチケットを生成してもよい。例えば、単位時間に計算資源割り当て処理が可能なジョブの数が多く、チケットtixの生成数が多くなりすぎる場合、スケジューラサーバssは、単位時間に計算資源割り当て処理が可能なジョブの数を2以上の整数で除した数分のチケットを生成してもよい。そして、スケジューラクライアントscは、配分されたチケットを消費して、前述の整数分のジョブに対する計算資源割り当て処理を実行する依頼を、スケジューラサーバssに送信してもよい。次に、並列処理装置101を、HPCシステムに適用した場合の例を、図2を用いて説明する。
図2は、実施例1におけるHPCシステム200の構成例を示す説明図である。図2に示すHPCシステム200は、複数のスケジューラクライアントscと、スケジューラサーバssと、管理ノードadnと、複数の計算ノードcnとを有する。また、HPCシステム200は、インターネット等のネットワーク201を経由して、HPCシステム200を利用する利用者が操作する利用者端末utと接続する。
HPCシステム200でのジョブのスケジューリング処理は、スケジューラクライアントscと、スケジューラサーバssとの連携によって処理される。ここで、スケジューラクライアントsc、スケジューラサーバssは、HPCシステム200内のノードのいずれがなってもよい。
管理ノードadnは、HPCシステム200の全体を管理するノードである。計算ノードcnは、ジョブを実行するノードである。計算ノードcnの資源が、ジョブに割り当てられる計算資源となる。
利用者端末utは、HPCシステム200に対して、ジョブを投入する。投入されたジョブは、複数のスケジューラクライアントscのいずれかが受け付ける。
次に、スケジューラクライアントsc、スケジューラサーバss、管理ノードadn、計算ノードcnを総称したノードのハードウェアの構成例について、図3で説明する。
図3は、ノードのハードウェア構成例を示す説明図である。ノードは、CPU(Central Processing Unit)301と、メモリ302と、I/O(Input/Output)バスアダプタ303と、ネットワークアダプタ304と、ディスクドライブ305と、ディスク306とを有する。CPU301、メモリ302、I/Oバスアダプタ303とは、システムバス311でそれぞれ接続される。また、I/Oバスアダプタ303と、ネットワークアダプタ304と、ディスクドライブ305とは、I/Oバス312でそれぞれ接続される。
CPU301は、ノードの全体の制御を司る演算処理装置である。メモリ302は、ブートプログラムなどのプログラムを記憶する不揮発性メモリや、CPU301のワークエリアとして使用される揮発性メモリである。また、実施例1におけるジョブスケジューリングプログラムも、不揮発性メモリに記憶されてもよい。
I/Oバスアダプタ303は、CPU301が、I/Oバス312と接続するための仲立ちを行う装置である。ネットワークアダプタ304は、ネットワークに接続され、ネットワークを介してHPCシステム200内の他の装置や、利用者端末utに接続する。
ディスクドライブ305は、CPU301の制御に従ってディスク306に対するデータのリードおよびライトを制御する制御装置である。ディスクドライブ305には、例えば、磁気ディスクドライブ、光ディスクドライブ、ソリッドステートドライブなどを採用することができる。ディスク306は、ディスクドライブ305の制御で書き込まれたデータを記憶する不揮発性メモリである。例えばディスクドライブ305が磁気ディスクドライブである場合、ディスク306には、磁気ディスクを採用することができる。また、ディスクドライブ305が光ディスクドライブである場合、ディスク306には、光ディスクを採用することができる。また、ディスクドライブ305がソリッドステートドライブである場合、ディスク306には、半導体素子によって形成された半導体メモリ、いわゆる半導体ディスクを採用することができる。
なお、HPCシステム200の管理者が、例えば管理ノードadnを直接操作する場合、管理ノードadnは、図3で示したハードウェアに加え、ディスプレイ、キーボード、マウスといったハードウェアを有してもよい。また、利用者端末utは、CPU、メモリ、I/Oバスアダプタ、ネットワークアダプタ、ディスクドライブ、ディスク、ディスプレイ、キーボード、マウスを有する。
図4は、HPCシステム200の機能構成例を示す説明図である。スケジューラサーバssは、制御部400を有する。制御部400は、計算資源割り当て管理部401と、チケット管理部402とを含む。チケット管理部402は、資源チケット配布数決定部403と、IDチケット配布数決定部404と、資源チケット送信部405と、IDチケット送信部406とを有する。制御部400は、記憶装置に記憶されたジョブスケジューラプログラムをCPU301が実行することにより、各部の機能を実現する。記憶装置とは、具体的には、例えば、図3に示したメモリ302などである。また、各部の処理結果は、CPU301のレジスタや、CPU301のキャッシュメモリ等に格納される。
また、スケジューラサーバssは、記憶部410を有する。記憶部410は、メモリ302、ディスク306である。記憶部410は、処理時間管理表411と、資源チケット使用実績管理表412と、IDチケット使用実績管理表413と、資源チケット補充表414、IDチケット補充表415とを有する。
また、スケジューラクライアントscは、制御部420を有する。制御部420は、受け付け部421と、チケット通信部422と、送信部423と、ジョブ状態ローカル管理部424とを有する。制御部420は、記憶装置に記憶されたジョブスケジューラプログラムをCPU301が実行することにより、各部の機能を実現する。記憶装置とは、具体的には、例えば、図3に示したメモリ302などである。また、各部の処理結果は、CPU301のレジスタや、CPU301のキャッシュメモリ等に格納される。
また、スケジューラクライアントscは、利用者端末utから、ジョブ投入コマンド431と、ジョブ取消コマンド432と、ジョブ状態表示コマンド433とを受け付ける。ジョブ投入コマンド431は、ジョブを投入するコマンドである。ジョブ取消コマンド432は、ジョブの実行を取り消すコマンドである。ジョブ状態表示コマンド433は、ジョブの状態を取得し、取得した状態を利用者端末ut上に表示させるコマンドである。ジョブ取消コマンド432、ジョブ状態表示コマンド433には、ジョブ投入コマンド431の応答時に利用者端末utに通知したジョブIDが含まれる。
ここで、スケジューラサーバssや、スケジューラクライアントscは、HPCシステム200内のどのノードがなってもよい。例えば、HPCシステム200の管理者が、HPCシステム200内のノードから、スケジューラサーバssや、スケジューラクライアントscを指定してもよい。そして、HPCシステム200内のあるノードが、スケジューラサーバssとして指定された場合には、制御部400と記憶部410とを有することになる。また、HPCシステム200内のあるノードが、スケジューラクライアントscとして指定された場合には、制御部420を有することになる。
計算資源割り当て管理部401は、計算資源の割り当てを管理する。具体的には、計算資源割り当て管理部401は、スケジューラクライアントscから受け付けたジョブを対象とする計算資源割り当て処理を実行する。また、計算資源割り当て管理部401は、スケジューラクライアントscから受け付けたジョブと併せて受け付けた資源チケットrtixと、IDチケットitixとについて、資源チケット回収通知とIDチケット回収通知とを、チケット管理部402に送信する。
チケット管理部402は、資源チケットrtixとIDチケットitixとを管理する。資源チケット配布数決定部403は、スケジューラクライアントscに配布する資源チケットrtixの数を決定する。例えば、資源チケット配布数決定部403は、ある単位時間内で計算資源割り当て処理を行った際の対象となったジョブの数を、ある単位時間の次の単位時間のスケジューラクライアントscに配布する資源チケットrtixの数としてもよい。
また、別の方法として、計算資源割り当て管理部401が、ある単位時間内の計算資源割り当て処理を実行したとする。計算資源割り当て処理の実行に応じて、資源チケット配布数決定部403は、その処理対象となった各ジョブを実行するノードの数と、各ジョブを実行させる時間帯と、各ジョブを対象とする割り当て処理にかかった時間とを処理時間管理表411に記憶する。
次に、資源チケット配布数決定部403は、ある単位時間の後に実行する計算資源割り当て処理の対象となる各ジョブを特定する。この各ジョブは、スケジューラクライアントscから受け付けた計算資源割り当て処理の依頼から特定することができる。そして、資源チケット配布数決定部403は、処理時間管理表411を参照して、特定した各ジョブを実行するノードの数と、各ジョブを実行させる時間帯とに基づいて、各ジョブを対象とする計算資源割り当て処理にかかる時間を特定する。例えば、資源チケット配布数決定部403は、処理時間管理表411を参照して、ノードの数と、時間帯とを説明変数とし、計算資源割り当て処理にかかる時間を被説明変数とする、重回帰分析を行ってもよい。そして、資源チケット配布数決定部403は、重回帰分析で得られたモデルに、特定した各ジョブを実行するノードの数と、各ジョブを実行させる時間帯とを入力することにより、各ジョブを対象とする計算資源割り当て処理にかかる時間を特定する。
また、説明変数は、ジョブを実行するノードの数と、ジョブを実行させる時間帯に限られない。例えば、資源チケット配布数決定部403は、計算資源割り当て済みのジョブ数を、説明変数として加えてもよい。また、説明変数は、ジョブを実行するノードの数、またはジョブを実行させる時間帯のいずれか一方でもよい。
そして、資源チケット配布数決定部403は、特定した各ジョブを対象とする割り当て処理にかかる時間に基づいて、ある単位時間の後の単位時間に割り当て処理が可能なジョブの数を決定する。ある単位時間の後の単位時間は、ある単位時間の次の単位時間でもよいし、2つ次の単位時間でもよい。
IDチケット配布数決定部404は、IDチケットitixをスケジューラクライアントscに配布する数を決定する。例えば、IDチケット配布数決定部404は、ある単位時間内で計算資源割り当て処理を行った際の対象となったジョブの数を、ある単位時間の次の単位時間のスケジューラクライアントscに配布するIDチケットitixの数としてもよい。
資源チケット送信部405は、単位時間の自身の資源を用いて単位時間に割り当て処理が可能なジョブの数に応じた数分の資源チケットrtixを、スケジューラクライアントscのそれぞれに配分する。資源チケットrtixの数については、HPCシステム200の管理者が予め決めた値でもよいし、資源チケット配布数決定部403が決定した値でもよい。
IDチケット送信部406は、IDチケットitixを、スケジューラクライアントscのそれぞれに配分する。IDチケットitixの数については、HPCシステム200の管理者が予め決めた値でもよいし、IDチケット配布数決定部404が決定した値でもよい。
受け付け部421は、ジョブ投入コマンド431、ジョブ取消コマンド432、ジョブ状態表示コマンド433を受け付ける。例えば、受け付け部421は、ジョブ投入コマンド431を受け付けた場合、依頼キューに、投入されたジョブの情報を格納する。依頼キューには、利用者端末から受け付けたが、まだスケジューラサーバssに計算資源割り当て処理の実行依頼を送信していないジョブが格納される。
チケット通信部422は、スケジューラサーバssから、資源チケットrtix、IDチケットitixを受け付ける。
送信部423は、ジョブ投入コマンド431によりジョブの実行要求を受け付けた場合、資源チケットrtixを消費して、受け付けたジョブを対象とする計算資源割り当て処理を実行する依頼を、スケジューラサーバssに送信する。
また、送信部423は、ジョブ投入コマンド431によりジョブの実行要求を受け付けた場合、IDチケットのジョブIDを、受け付けたジョブに割り当てて、ジョブ投入元の利用者端末に、割り当てたジョブIDを送信する。そして、送信部423は、資源チケットrtixを消費して、割り当てたジョブIDで識別するジョブを対象とする計算資源割り当て処理を実行する依頼を、スケジューラサーバssに送信する。
ジョブ状態ローカル管理部424は、ローカルにおけるジョブの状態を管理する。例えば、ジョブ状態ローカル管理部424は、依頼キューを参照して、あるジョブIDが付与されたジョブを対象とする計算資源割り当て処理の実行依頼を、スケジューラサーバssに送信したか否かを判断する。
また、受け付け部421が、ジョブ取消コマンド432によりジョブIDを含むそのジョブの取消要求を受け付けたとする。この場合、ジョブ状態ローカル管理部424は、そのジョブを対象とする計算資源割り当て処理の実行依頼をスケジューラサーバssに送信したか否かを判断する。そして、そのジョブを対象とする割り当て処理の実行依頼をスケジューラサーバssに送信していないと判断した場合、ジョブ状態ローカル管理部424は、そのジョブを対象とする割り当て処理を実行する依頼を破棄する。具体的には、ジョブ状態ローカル管理部424は、依頼キューから、そのジョブの情報を破棄する。なお、そのジョブを対象とする割り当て処理の実行依頼をスケジューラサーバssに送信済であると判断した場合、ジョブ状態ローカル管理部424は、スケジューラサーバssに、ジョブ取消依頼を送信する。
また、受け付け部421が、ジョブ状態表示コマンド433によりジョブIDを含む当該ジョブの状態表示要求を受け付けたとする。この場合、ジョブ状態ローカル管理部424は、そのジョブを対象とする計算資源割り当て処理の実行依頼をスケジューラサーバssに送信したか否かを判断する。そして、ジョブ状態ローカル管理部424は、そのジョブを対象とする計算資源割り当て処理の実行依頼をスケジューラサーバssに送信していないと判断したとする。この場合、ジョブ状態ローカル管理部424は、そのジョブの状態を示す情報として、そのジョブに計算資源の割り当てが行われていないことを示す情報を、状態表示要求の要求元となる利用者端末utに送信する。例えば、ジョブ状態ローカル管理部424は、「ジョブID:xx 計算資源割り当て待ち」といった旨を、利用者端末utに送信する。なお、そのジョブを対象とする割り当て処理の実行依頼をスケジューラサーバssに送信済であると判断した場合、ジョブ状態ローカル管理部424は、スケジューラサーバssに、そのジョブの状態取得要求を送信する。
次に、実施例1で用いるメッセージフォーマットの一例を、図5で説明する。
図5は、メッセージフォーマットの一例を示す説明図である。図5に示すメッセージの共通フォーマット500は、実施例1で用いるメッセージフォーマットに共通するフォーマットを示す。そして、共通フォーマット500に従うメッセージとしては、ジョブ実行依頼メッセージ501、資源チケット補充依頼メッセージ502、IDチケット補充依頼メッセージ503、資源チケット配布メッセージ504、IDチケット配布メッセージ505がある。
共通フォーマット500は、共通ヘッダとして、メッセージタイプ領域および拡張領域指定領域と、拡張領域という項目を含む。メッセージタイプ領域項目には、メッセージの種類を示す識別子が格納される。ジョブ実行依頼メッセージ501〜IDチケット配布メッセージ505におけるメッセージタイプ領域項目には、各メッセージの種類を示す識別子が格納される。拡張領域指定領域項目には、拡張領域に格納される内容を指定するデータが格納される。拡張領域項目には、拡張領域指定領域で指定された項目が格納される。
ジョブ実行依頼メッセージ501は、ジョブを対象とする計算資源割り当て処理の実行依頼を行うメッセージである。ジョブ実行依頼メッセージ501の拡張領域指定領域項目には、資源チケットrtixおよびIDチケットitixのオフセットおよびデータ長が格納される。また、ジョブ実行依頼メッセージ501の拡張領域には、資源チケットrtixおよびIDチケットitixが格納される。ここで、資源チケットrtixには、資源チケットIDが含まれる。また、資源チケットrtixには、拡張情報が含まれてもよい。資源チケットrtixの拡張情報としては、例えば、その資源チケットrtixの使用期限が示された時刻である。同様に、IDチケットitixには、ジョブIDが含まれる。また、IDチケットitixには、拡張情報が含まれてもよい。拡張情報としては、例えば、そのIDチケットitixの使用期限が示された時刻である。
資源チケット補充依頼メッセージ502は、資源チケットrtixの補充を依頼するメッセージである。資源チケット補充依頼メッセージ502の拡張領域指定領域項目には、資源チケットrtixの補充依頼数が格納される。同様に、IDチケット補充依頼メッセージ503は、IDチケットitixの補充を依頼するメッセージである。そして、IDチケット補充依頼メッセージ503の拡張領域指定領域項目には、IDチケットitixの補充依頼数が格納される。
資源チケット配布メッセージ504は、資源チケットrtixを配布するメッセージである。資源チケット配布メッセージ504の拡張領域指定領域項目には、資源チケットrtixの配布数が格納される。図5の例では、資源チケット配布メッセージ504の拡張領域指定領域項目には、自然数であるmが格納されている。そして、資源チケット配布メッセージ504の拡張領域には、配布数分の資源チケットrtixが格納される。図5の例では、資源チケット配布メッセージ504の拡張領域には、m個の資源チケットrtixが格納されている。
同様に、IDチケット配布メッセージ505は、IDチケットitixを配布するメッセージである。そして、IDチケット配布メッセージ505の拡張領域指定領域項目には、IDチケットitixの配布数が格納される。図5の例では、IDチケット配布メッセージ505の拡張領域指定領域項目には、自然数であるnが格納されている。そして、IDチケット配布メッセージ505の拡張領域には、配布数分のIDチケットitixが格納される。図5の例では、IDチケット配布メッセージ505の拡張領域には、n個のIDチケットitixが格納されている。
次に、処理時間管理表411〜IDチケット補充表415の一例について、それぞれ、図6〜図10を用いて説明する。
図6は、処理時間管理表411の一例を示す説明図である。図6に示す処理時間管理表411は、レコード601−1を有する。
処理時間管理表411は、処理時間と、予約資源パラメタという項目を含む。処理時間項目には、計算資源割り当て処理にかかった処理時間を示す値が格納される。予約資源パラメタ項目には、利用者によって指定された予約資源パラメタを示す値が格納される。具体的には、予約資源パラメタ項目には、予約計算ノード数と、予約時間の長さというサブ項目を有する。予約計算ノード数サブ項目には、利用者によって指定された、ジョブを実行する計算ノードcnの個数が格納される。予約時間の長さサブ項目には、利用者によって指定された、たとえ終了していなくてもジョブの実行を打ち切るまでの時間長を示す値が格納される。
図7は、資源チケット使用実績管理表412の一例を示す説明図である。図7に示す資源チケット使用実績管理表412は、レコード701−1を有する。また、資源チケット使用実績管理表412には、書き込み位置ポインタが対応付けられる。
資源チケット使用実績管理表412は、時間帯と、使用数と、という項目を含む。時間帯項目には、時間帯を示す値が格納される。使用数項目には、時間帯項目で示す時間帯に資源チケットrtixが使用された個数が格納される。
また、資源チケット使用実績管理表412に対応付けられた書き込み位置ポインタは、資源チケット使用実績管理表412内の次に書き込むレコードの位置を示すポインタである。
図8は、IDチケット使用実績管理表413の一例を示す説明図である。図8に示すIDチケット使用実績管理表413は、レコード801−1を有する。また、IDチケット使用実績管理表413には、書き込み位置ポインタが対応付けられる。
IDチケット使用実績管理表413は、時間帯と、使用数と、という項目を含む。時間帯項目には、時間帯を示す文字列が格納される。使用数項目には、時間帯項目で示す時間帯にIDチケットitixが使用された個数が格納される。
また、IDチケット使用実績管理表413に対応付けられた書き込み位置ポインタは、IDチケット使用実績管理表413内の次に書き込むレコードの位置を示すポインタである。
図9は、資源チケット補充表414の一例を示す説明図である。図9に示す資源チケット補充表414は、レコード901−1を有する。
資源チケット補充表414は、要求時間帯と、要求元識別子と、補充依頼数と、という項目を含む。要求時間帯項目には、資源チケットrtixを要求した時刻を含む時間帯を示す文字列が格納される。要求元識別子項目には、資源チケットrtixを要求したスケジューラクライアントscを識別する識別子が格納される。補充依頼数項目には、スケジューラクライアントscが要求した資源チケットrtixの数が格納される。
図10は、IDチケット補充表415の記憶内容の一例を示す説明図である。図10に示すIDチケット補充表415は、レコード1001−1を有する。
IDチケット補充表415は、要求時間帯と、要求元識別子と、補充依頼数と、という項目を含む。要求時間帯項目には、IDチケットitixを要求した時刻を含む時間帯を示す文字列が格納される。要求元識別子項目には、IDチケットitixを要求したスケジューラクライアントscを識別する識別子が格納される。補充依頼数項目には、スケジューラクライアントscが要求したIDチケットitixの数が格納される。
次に、スケジューラクライアントscが実行するフローチャートについて、図11〜図19を用いて説明する。
図11は、スケジューラクライアントscにおけるIDチケット初期化処理手順の一例を示すフローチャートである。スケジューラクライアントscにおけるIDチケット初期化処理は、HPCシステム200の運用を開始する際に、スケジューラクライアントscが実行する処理である。
スケジューラクライアントscは、IDチケット補充依頼数を、IDチケット数の所定の基準値に設定する(ステップS1101)。次に、スケジューラクライアントscは、IDチケット補充依頼処理を実行する(ステップS1102)。IDチケット補充依頼処理は、図17で示す。ステップS1102の処理終了後、スケジューラクライアントscは、IDチケット初期化処理を終了する。
図12は、スケジューラクライアントscにおけるジョブ投入処理手順の一例を示すフローチャートである。スケジューラクライアントscにおけるジョブ投入処理は、利用者端末utからジョブ投入コマンド431によりジョブが投入された際に、スケジューラクライアントscが実行する処理である。
スケジューラクライアントscは、配布されたIDチケットitixの一つを選択し、消費する(ステップS1201)。ここで、IDチケットitixは、ステップS1102の補充依頼処理を契機として、図18で示すメッセージ受信処理により、スケジューラサーバssから配布されている。
次に、スケジューラクライアントscは、スケジューラサーバssへのジョブ実行依頼を依頼キューに追加する(ステップS1202)。そして、スケジューラクライアントscは、IDチケットitixの消費履歴を記録する(ステップS1203)。次に、スケジューラクライアントscは、IDチケット補充依頼処理を実行する(ステップS1204)。そして、スケジューラクライアントscは、選択したIDチケットitixのジョブIDを利用者端末utに送信する(ステップS1205)。ステップS1205の処理終了後、スケジューラクライアントscは、ジョブ投入処理を終了する。
図13は、スケジューラクライアントscにおけるジョブ実行取消処理手順の一例を示すフローチャートである。スケジューラクライアントscにおけるジョブ実行取消処理は、利用者端末utから、ジョブ取消要求を受け付けた場合に実行する処理である。また、スケジューラクライアントscは、利用者端末utからジョブ取消要求を受け付けた際に、取消対象のジョブIDも受け付ける。
スケジューラクライアントscは、取消対象のジョブが、スケジューラサーバssにジョブ実行依頼済みか否かを判断する(ステップS1301)。具体的には、スケジューラサーバssへジョブ実行依頼済みとなるジョブとは、後述するステップS1903の処理で対象となったジョブである。
取消対象のジョブがスケジューラサーバssにジョブ実行依頼済みである場合(ステップS1301:Yes)、スケジューラクライアントscは、ジョブ取消依頼処理を実行する(ステップS1302)。ジョブ取消依頼処理は、図14で示す。一方、スケジューラサーバssへジョブ実行依頼済みでない場合(ステップS1301:No)、スケジューラクライアントscは、依頼キューから取消対象のジョブを破棄する(ステップS1303)。そして、スケジューラクライアントscは、削除結果を、ジョブ取消コマンド432を送信した利用者端末utに通知する(ステップS1304)。
ステップS1302またはステップS1304の処理終了後、スケジューラクライアントscは、ジョブ実行取消処理を終了する。
図14は、スケジューラクライアントscにおけるジョブ取消依頼処理手順の一例を示すフローチャートである。スケジューラクライアントscにおけるジョブ取消依頼は、スケジューラサーバssに、ジョブの取消依頼を送信する処理である。
スケジューラクライアントscは、取消対象のジョブの取消依頼を、スケジューラサーバssに送信する(ステップS1401)。次に、スケジューラクライアントscは、スケジューラサーバssからの通知結果を待ち受ける(ステップS1402)。そして、スケジューラクライアントscは、スケジューラサーバssからの通知結果を、ジョブ取消コマンド432を送信した利用者端末utに通知する(ステップS1403)。ステップS1403の処理終了後、スケジューラクライアントscは、ジョブ取消依頼処理を終了する。
図15は、スケジューラクライアントscにおけるジョブ状態表示処理手順の一例を示すフローチャートである。スケジューラクライアントscにおけるジョブ状態表示処理は、利用者端末utから、ジョブ状態表示コマンド433を受け付けた場合に実行する処理である。また、スケジューラクライアントscは、利用者端末utからジョブ状態表示コマンド433を受け付けた際に、状態表示対象のジョブIDも受け付ける。
スケジューラクライアントscは、状態表示対象のジョブが、スケジューラサーバssにジョブ実行依頼済みか否かを判断する(ステップS1501)。スケジューラサーバssへのジョブ実行依頼済みである場合(ステップS1501:Yes)、スケジューラクライアントscは、状態表示対象のジョブの状態取得依頼をスケジューラサーバssに送信する(ステップS1502)。次に、スケジューラクライアントscは、スケジューラサーバssからの結果通知を待ち受ける(ステップS1503)。そして、スケジューラクライアントscは、受け付けた結果通知から、状態表示対象ジョブの状態を取得する(ステップS1504)。
一方、スケジューラサーバssへのジョブ実行依頼済みでない場合(ステップS1501:No)、スケジューラクライアントscは、スケジューラクライアントsc上の状態表示対象のジョブの状態を取得する(ステップS1505)。
ステップS1504、またはステップS1505の処理終了後、スケジューラクライアントscは、取得した状態表示対象のジョブの状態を、ジョブ状態表示コマンド433を送信した利用者端末utに送信する(ステップS1506)。ステップS1506の処理終了後、スケジューラクライアントscは、ジョブ状態表示処理を終了する。
図16は、スケジューラクライアントscにおけるジョブ実行依頼処理手順の一例を示すフローチャートである。スケジューラクライアントscにおけるジョブ実行依頼処理は、スケジューラサーバssに、計算資源割り当て処理の実行依頼を送信する処理である。計算資源割り当て処理の実行依頼は、例えば、一定時間ごとに、または、依頼キューにジョブ実行依頼が格納された際に実行する。ここで、依頼キューには、ステップS1202で示したように、ジョブ実行依頼が追加される。
スケジューラクライアントscは、依頼キューにジョブ実行依頼があるか否かを判断する(ステップS1601)。依頼キューにジョブ実行依頼がある場合(ステップS1601:Yes)、スケジューラクライアントscは、依頼キューの先頭から要素を取り出す(ステップS1602)。そして、スケジューラクライアントscは、取り出した要素となるジョブIDのジョブ実行依頼メッセージ送信処理を実行する(ステップS1603)。ジョブ実行依頼メッセージ送信処理は、図19で示す。
ステップS1603の処理終了後、または、依頼キューにジョブ実行依頼がない場合(ステップS1601:No)、スケジューラクライアントscは、ジョブ実行依頼処理を終了する。
図17は、スケジューラクライアントscにおけるIDチケット補充依頼処理手順の一例を示すフローチャートである。スケジューラクライアントscにおけるIDチケット補充依頼処理は、スケジューラサーバssに、IDチケットitixを補充するように依頼する処理である。
スケジューラクライアントscは、自身が有するIDチケット数が所定数以下か否かを判断する(ステップS1701)。自身が有するIDチケット数が所定数以下である場合(ステップS1701:Yes)、スケジューラクライアントscは、IDチケット補充依頼メッセージ503を、スケジューラサーバssに送信する(ステップS1702)。
ステップS1702の処理終了後、または自身が有するIDチケット数が所定数より大きい場合(ステップS1701:No)、スケジューラクライアントscは、IDチケット補充依頼処理を終了する。
図18は、スケジューラクライアントscにおけるメッセージ受信処理手順の一例を示すフローチャートである。スケジューラクライアントscにおけるメッセージ受信処理は、スケジューラクライアントscが、メッセージを受信した際に実行する処理である。
スケジューラクライアントscは、受信したメッセージが資源チケット配布メッセージ504またはIDチケット配布メッセージ505か否かを判断する(ステップS1801)。受信したメッセージが資源チケット配布メッセージ504またはIDチケット配布メッセージ505である場合(ステップS1801:Yes)、スケジューラクライアントscは、受信したメッセージの種類を確認する(ステップS1802)。受信したメッセージの種類が資源チケット配布メッセージ504である場合(ステップS1802:資源チケット配布メッセージ)、スケジューラクライアントscは、受信した資源チケット配布メッセージ504内の資源チケットrtixを保存する(ステップS1803)。また、受信したメッセージの種類がIDチケット配布メッセージ505である場合(ステップS1802:IDチケット配布メッセージ)、スケジューラクライアントscは、受信したIDチケット配布メッセージ505内のIDチケットitixを保存する(ステップS1804)。
また、受信したメッセージが資源チケット配布メッセージ504またはIDチケット配布メッセージ505のいずれでもない場合(ステップS1801:No)、スケジューラクライアントscは、その他のメッセージの受信処理を実行する(ステップS1805)。
ステップS1803〜ステップS1805のうちのいずれかの処理終了後、スケジューラクライアントscは、メッセージ受信処理を終了する。
図19は、スケジューラクライアントscにおけるジョブ実行依頼メッセージ送信処理手順の一例を示すフローチャートである。スケジューラクライアントscにおけるジョブ実行依頼メッセージ送信処理は、スケジューラサーバssに、ジョブ実行依頼メッセージ501を送信する処理である。また、ジョブ実行依頼メッセージ送信処理には、引数として、実行依頼対象のジョブIDが付与される。
スケジューラクライアントscは、自身が有する資源チケットrtixがあるか否かを判断する(ステップS1901)。自身が有する資源チケットrtixがある場合(ステップS1901:Yes)、スケジューラクライアントscは、自身が有する資源チケットrtixから、消費する資源チケットrtixを選択する(ステップS1902)。次に、スケジューラクライアントscは、選択した資源チケットrtixと、引数として受け付けた実行依頼対象のジョブIDを有するIDチケットitixとを含むジョブ実行依頼メッセージ501を、スケジューラサーバssに送信する(ステップS1903)。そして、スケジューラクライアントscは、スケジューラサーバssから、応答メッセージを待ち受ける(ステップS1904)。
一方、自身が有する資源チケットrtixがない場合(ステップS1901:No)、スケジューラクライアントscは、資源チケット補充依頼メッセージ502を、スケジューラサーバssに送信する(ステップS1905)。
ステップS1904、またはステップS1905の処理終了後、スケジューラクライアントscは、ジョブ実行依頼メッセージ送信処理を終了する。
また、ステップS1904の処理について、スケジューラクライアントscは、依頼キューの先頭から取り出したジョブについては、再び依頼キューの先頭に追加する。これにより、スケジューラクライアントscは、資源チケットrtixがなく、計算資源割り当て処理の実行依頼ができなかった場合でも、後ほど資源チケットrtixを得た際に、そのジョブを対象とする計算資源割り当て処理の実行依頼を送信することができる。または、ステップS1904の処理について、スケジューラクライアントscは、資源チケット配布メッセージ504を受信するまで待ち受けてもよい。
次に、スケジューラサーバssが実行するフローチャートについて、図20〜図35を用いて説明する。
図20は、スケジューラサーバssにおける初期化処理手順の一例を示すフローチャートである。スケジューラサーバssにおける初期化処理は、HPCシステム200の運用を開始する際に、スケジューラサーバssが実行する処理である。
スケジューラサーバssは、ファイルとマップされたメモリ領域を、処理時間管理表411として初期化する(ステップS2001)。次に、スケジューラサーバssは、処理時間管理表の書き込み位置ポインタを初期化する(ステップS2002)。
また、スケジューラサーバssは、ファイルとマップされたメモリ領域を、資源チケット使用実績管理表412として初期化する(ステップS2003)。次に、スケジューラサーバssは、資源チケット使用実績管理表412の書き込み位置ポインタを初期化する(ステップS2004)。
また、スケジューラサーバssは、ファイルとマップされたメモリ領域を、IDチケット使用実績管理表413として初期化する(ステップS2005)。次に、スケジューラサーバssは、IDチケット使用実績管理表413の書き込み位置ポインタを初期化する(ステップS2006)。ステップS2006の処理終了後、スケジューラサーバssは、初期化処理を終了する。
図21は、スケジューラサーバssにおける依頼メッセージ処理手順の一例を示すフローチャートである。スケジューラサーバssにおける依頼メッセージ処理は、メッセージを受信した際に、スケジューラサーバssの計算資源割り当て管理部401が実行する処理である。
計算資源割り当て管理部401は、受信したメッセージが、チケット補充依頼メッセージか否かを判断する(ステップS2101)。ここで、チケット補充依頼メッセージとは、資源チケット補充依頼メッセージ502、IDチケット補充依頼メッセージ503を総称したものである。チケット補充依頼メッセージである場合(ステップS2101:Yes)、計算資源割り当て管理部401は、受信したメッセージの種類を確認する(ステップS2102)。
受信したメッセージの種類が資源チケット補充依頼メッセージ502である場合(ステップS2102:資源チケット補充依頼メッセージ)、計算資源割り当て管理部401は、資源チケット補充スケジュール処理を実行する(ステップS2103)。資源チケット補充スケジュール処理については、図24で示す。また、受信したメッセージの種類がIDチケット補充依頼メッセージ503である場合(ステップS2102:IDチケット補充依頼メッセージ)、計算資源割り当て管理部401は、IDチケット補充スケジュール処理を実行する(ステップS2104)。IDチケット補充スケジュール処理については、図25で示す。
一方、受信したメッセージの種類がチケット補充依頼メッセージでない場合(ステップS2101:No)、計算資源割り当て管理部401は、既存メッセージ処理を実行する(ステップS2105)。既存メッセージ処理については、図22で示す。ステップS2103〜ステップS2105の処理終了後、計算資源割り当て管理部401は、依頼メッセージ処理を終了する。
図22は、スケジューラサーバssにおける既存メッセージ処理手順の一例を示すフローチャートである。スケジューラサーバssにおける既存メッセージ処理は、資源チケット補充依頼メッセージ502、IDチケット補充依頼メッセージ503以外のメッセージを受信した際に、スケジューラサーバssの計算資源割り当て管理部401が実行する処理である。
計算資源割り当て管理部401は、受信したメッセージがジョブ実行依頼メッセージ501か否かを判断する(ステップS2201)。受信したメッセージがジョブ実行依頼メッセージ501である場合(ステップS2201:Yes)、計算資源割り当て管理部401は、資源チケットrtixとIDチケットitixとが両方有効か否かを判断する(ステップS2202)。資源チケットrtixとIDチケットitixとが両方有効である場合(ステップS2202:Yes)、計算資源割り当て管理部401は、受信したジョブ実行依頼メッセージ501のジョブを対象とする計算資源割り当て処理を実行する(ステップS2203)。計算資源割り当て処理については、図26で示す。
そして、計算資源割り当て管理部401は、資源チケット回収通知を、チケット管理部402に送信する(ステップS2204)。また、計算資源割り当て管理部401は、IDチケット回収通知を、チケット管理部402に送信する(ステップS2205)。そして、計算資源割り当て管理部401は、スケジューラクライアントscに、計算資源割り当て結果を通知する(ステップS2206)。
受信したメッセージがジョブ実行依頼メッセージ501でない場合(ステップS2201:No)、計算資源割り当て管理部401は、ジョブ実行依頼メッセージ以外のメッセージ処理を実行する(ステップS2207)。また、資源チケットrtixとIDチケットitixとの少なくともいずれか一方が無効である場合(ステップS2202:No)、計算資源割り当て管理部401は、チケット無効通知処理を実行する(ステップS2208)。チケット無効通知処理は、図23で説明する。
ステップS2206〜S2208のうちのいずれかの処理終了後、計算資源割り当て管理部401は、既存メッセージ処理を終了する。
図23は、スケジューラサーバssにおけるチケット無効通知処理手順の一例を示すフローチャートである。スケジューラサーバssにおけるチケット無効通知処理は、無効となったチケットについての処理である。
計算資源割り当て管理部401は、無効となったチケットの種類を確認する(ステップS2301)。無効となったチケットの種類が資源チケットrtixである場合(ステップS2301:資源チケット)、計算資源割り当て管理部401は、資源チケット補充スケジュール処理を実行する(ステップS2302)。また、無効となったチケットの種類がIDチケットitixである場合(ステップS2301:IDチケット)、計算資源割り当て管理部401は、IDチケット補充スケジュール処理を実行する(ステップS2303)。
ステップS2302、またはステップS2303の処理終了後、計算資源割り当て管理部401は、チケット無効通知処理を終了する。
図24は、スケジューラサーバssにおける資源チケット補充スケジュール処理手順の一例を示すフローチャートである。スケジューラサーバssにおける資源チケット補充スケジュール処理は、資源チケット補充表414の更新を行う処理である。また、資源チケット補充スケジュール処理は、チケット管理部402が実行する処理である。
チケット管理部402は、要求元識別子、補充依頼数、要求時間帯を対にして資源チケット補充表414に記録する(ステップS2401)。ここで、資源チケット補充スケジュール処理は、ステップS2103の処理、またはステップS2302の処理から呼び出される。ステップS2103の処理から呼び出された場合には、チケット管理部402は、資源チケット補充表414に対して、IDチケット補充依頼メッセージ503の各項目の内容を、その各項目と同名を有する項目に格納する。
また、ステップS2302の処理から呼び出された場合には、チケット管理部402は、資源チケット補充表414の要求元識別子項目に、無効となった資源チケットrtixの送信元となるスケジューラクライアントscの識別子を格納する。また、チケット管理部402は、資源チケット補充表414の補充依頼数項目に、無効となった資源チケットrtixの数を格納する。また、チケット管理部402は、資源チケット補充表414の補充依頼数項目に、無効となった資源チケットrtixと併せて送信されたジョブの時間帯を格納する。
ステップS2401の処理終了後、チケット管理部402は、資源チケット補充スケジュール処理を終了する。
図25は、スケジューラサーバssにおけるIDチケット補充スケジュール処理手順の一例を示すフローチャートである。スケジューラサーバssにおけるIDチケット補充スケジュール処理は、IDチケット補充表415の更新を行う処理である。また、IDチケット補充スケジュール処理は、チケット管理部402が実行する処理である。
チケット管理部402は、要求元識別子、補充依頼数、要求時間帯を対にしてIDチケット補充表415に記録する(ステップS2501)。ここで、IDチケット補充スケジュール処理は、ステップS2104の処理、またはステップS2303の処理から呼び出される。それぞれの処理において、IDチケット補充表415に格納される情報は、資源チケット補充スケジュール処理と同様であるため、説明を省略する。ステップS2501の処理終了後、チケット管理部402は、IDチケット補充スケジュール処理を終了する。
図26は、スケジューラサーバssにおける計算資源割り当て処理手順の一例を示すフローチャートである。スケジューラサーバssにおける計算資源割り当て処理は、ジョブに計算資源を割り当てると共に、計算資源の予約処理にかかった時間を計測して、記録する処理である。また、計算資源割り当て処理は、計算資源割り当て管理部401と、チケット管理部402とが連携して行う処理である。
計算資源割り当て管理部401は、処理時間の計測を開始する(ステップS2601)。次に、計算資源割り当て管理部401は、計算資源の予約処理を実行する(ステップS2602)。そして、計算資源割り当て管理部401は、処理時間の計測を終了する(ステップS2603)。
計算資源割り当て管理部401は、計測した処理時間をチケット管理部402に通知し、チケット管理部402は、処理時間管理表411の現在の書き込み位置に処理時間と要求資源パラメタの組を書き込む(ステップS2604)。次に、チケット管理部402は、書き込み位置ポインタを1レコード分進める(ステップS2605)。そして、チケット管理部402は、書き込み位置ポインタが処理時間管理表411の範囲を超えるか否かを判断する(ステップS2606)。書き込み位置ポインタが処理時間管理表411の範囲を超える場合(ステップS2606:Yes)、チケット管理部402は、処理時間管理表の書き込み位置ポインタを初期化する(ステップS2607)。
ステップS2607の処理終了後、または書き込み位置ポインタが処理時間管理表411の範囲を超えない場合(ステップS2606:No)、チケット管理部402は、計算資源割り当て処理を終了する。
図27は、スケジューラサーバssにおける処理時間見積り式記録処理手順の一例を示すフローチャートである。スケジューラサーバssにおける処理時間見積り式記録処理は、計算資源の予約処理の処理時間を見積る見積り式を記録する処理である。処理時間見積り式記録処理は、例えば、一定時間ごとに実行される。また、処理時間見積り式記録処理は、チケット管理部402が実行する処理である。
チケット管理部402は、処理時間管理表411の処理時間を被説明変数とし、予約資源パラメタを説明変数とする重回帰分析を実行する(ステップS2701)。次に、チケット管理部402は、重回帰分析で求めた一次式を処理時間見積り式として登録する(ステップS2702)。ステップS2702の処理終了後、チケット管理部402は、処理時間見積り式記録処理を終了する。
図28は、スケジューラサーバssにおける資源チケット使用実績記録処理手順の一例を示すフローチャートである。スケジューラサーバssにおける資源チケット使用実績記録処理は、計算資源割り当て管理部401から資源チケット回収通知を受け付けた場合に実行する処理である。また、資源チケット使用実績記録処理は、チケット管理部402が実行する処理である。
チケット管理部402は、資源チケット回収通知を受信する(ステップS2801)。次に、チケット管理部402は、資源チケット使用実績管理表412に対し、現在の時間帯の使用数を1増加させる(ステップS2802)。ステップS2802の処理終了後、チケット管理部402は、資源チケット使用実績記録処理を終了する。
図29は、スケジューラサーバssにおけるチケット管理処理手順の一例を示すフローチャートである。スケジューラサーバssにおけるチケット管理処理は、資源チケットrtixおよびIDチケットitixを管理する処理である。チケット管理処理は、一定時間ごとに動作される。また、チケット管理処理は、チケット管理部402が実行する処理である。
チケット管理部402は、資源チケット発行数算出処理を実行する(ステップS2901)。資源チケット発行数算出処理は、図30で示す。次に、チケット管理部402は、資源チケット配布処理を実行する(ステップS2902)。資源チケット配布処理は、図32で示す。また、チケット管理部402は、IDチケット発行数算出処理を実行する(ステップS2903)。IDチケット発行数算出処理は、図34で示す。次に、チケット管理部402は、IDチケット配布処理を実行する(ステップS2904)。IDチケット配布処理は、図35で示す。ステップS2904の処理終了後、チケット管理部402は、チケット管理処理を終了する。
図30は、スケジューラサーバssにおける資源チケット発行数算出処理手順の一例を示すフローチャートである。スケジューラサーバssにおける資源チケット発行数算出処理は、発行可能な資源チケットrtixの数を算出する処理である。資源チケット発行数算出処理は、チケット管理部402が実行する処理である。
チケット管理部402は、変数「処理時間累計」を0で初期化する(ステップS3001)。次に、チケット管理部402は、変数「資源チケット発行数」を1で初期化する(ステップS3002)。そして、チケット管理部402は、資源割り当て待ちキューの先頭から、次の時間帯の資源割り当て処理対象となりうる「ジョブ実行依頼」jを取得する(ステップS3003)。次に、チケット管理部402は、jに資源割り当てを行った場合の処理時間を、処理時間見積り式で算出する(ステップS3004)。処理時間見積り式は、図27で示した処理時間見積り式記録処理により得ることができる。また、チケット管理部402は、資源チケット生成量算出処理を開始してから、ステップS3004の処理を初めて実行する際に、図27で示した処理時間見積り式記録処理を実行してもよい。
次に、チケット管理部402は、jの資源割り当てを行った場合の処理時間を「処理時間累計」に加算する(ステップS3005)。そして、チケット管理部402は、「処理時間累計」>「所定の時間間隔」×「許容可能負荷」となるか否かを判断する(ステップS3006)。ここで、許容可能負荷は、HPCシステム200の管理者が事前に決めた値であり、0より大きく1より小さい定数である。
「処理時間累計」≦「所定の時間間隔」×「許容可能負荷」となる場合(ステップS3006:No)、チケット管理部402は、ステップS3003の処理に移行する。一方、「処理時間累計」>「所定の時間間隔」×「許容可能負荷」となる場合(ステップS3006:Yes)、チケット管理部402は、「資源チケット発行数」に、資源割り当て待ちキューから取得した「ジョブ実行依頼」の数−1を代入する(ステップS3007)。そして、チケット管理部402は、資源チケット発行数見積り誤差補正処理を実行する(ステップS3008)。資源チケット所要数見積り誤差補正処理は、図31で示す。ステップS3008の処理終了後、チケット管理部402は、資源チケット発行数算出処理を終了する。
図31は、スケジューラサーバssにおける資源チケット発行数見積り誤差補正処理手順の一例を示すフローチャートである。スケジューラサーバssにおける資源チケット発行数見積り誤差補正処理は、図30のステップS3007の処理で得られた資源チケット発行数の誤差を補正する処理である。資源チケット発行数見積り誤差補正処理は、チケット管理部402が実行する処理である。
チケット管理部402は、前時間帯発行量−前時間帯使用量の計算結果を、前時間帯の資源チケット使用量見積り誤差に代入する(ステップS3101)。次に、チケット管理部402は、所定数の資源チケット使用量見積り誤差の移動平均を算出する(ステップS3102)。そして、チケット管理部402は、資源チケット使用量見積り誤差の移動平均を資源チケット発行数に加算する(ステップS3103)。
次に、チケット管理部402は、資源チケット発行数が0以下であるか否かを判断する(ステップS3104)。資源チケット発行数が0以下である場合(ステップS3104:Yes)、チケット管理部402は、資源チケット発行数に1を代入する(ステップS3105)。
ステップS3105の処理終了後、または、資源チケット発行数が0より大きい場合(ステップS3104:No)、チケット管理部402は、資源チケット発行数見積り誤差補正処理を終了する。
図32は、スケジューラサーバssにおける資源チケット配布処理手順の一例を示すフローチャートである。スケジューラサーバssにおける資源チケット配布処理は、資源チケット見積り誤差補正処理で得られた資源チケット発行数に基づいて、資源チケットrtixをスケジューラクライアントscに配布する処理である。資源チケット配布処理は、チケット管理部402が実行する処理である。
チケット管理部402は、資源チケット補充表414にレコードがあるか否かを判断する(ステップS3201)。資源チケット補充表414にレコードがある場合(ステップS3201:Yes)、チケット管理部402は、資源チケット補充表414の補充依頼数を、要求時間帯ごとに全て加算する(ステップS3202)。
ステップS3202について、具体的な説明を行う。例えば、資源チケット補充表414に、以下のようなレコード1〜4が登録されているとする。
要求時間帯:「x1:y1〜x2:y2」、要求元識別子:「sc#1」、補充依頼数「2」 …レコード1
要求時間帯:「x1:y1〜x2:y2」、要求元識別子:「sc#2」、補充依頼数「4」 …レコード2
要求時間帯:「x2:y2〜x3:y3」、要求元識別子:「sc#1」、補充依頼数「3」 …レコード3
要求時間帯:「x2:y2〜x3:y3」、要求元識別子:「sc#2」、補充依頼数「4」 …レコード4
ここで、「x1:y1〜x2:y2」は、「x2:y2〜x3:y3」の一つ前の時間帯であるとする。上述した例において、チケット管理部402は、要求時間帯ごとの補充依頼数の合計、すなわち、「x1:y1〜x2:y2」の補充依頼数の合計と、「x2:y2〜x3:y3」の補充依頼数の合計とを算出する。この場合、チケット管理部402は、「x1:y1〜x2:y2」の補充依頼数の合計6と、「x2:y2〜x3:y3」の補充依頼数の合計7とを算出する。
次に、チケット管理部402は、最も以前の要求時間帯に受け付けた補充依頼数の合計が資源チケット発行数より大きいか否かを判断する(ステップS3203)。上述した例を用いると、最も以前の要求時間帯は、「x1:y1〜x2:y2」となり、「x1:y1〜x2:y2」に受け付けた補充依頼数の合計は、6となる。
最も以前の要求時間帯に受け付けた補充依頼数の合計が資源チケット発行数以下である場合(ステップS3203:No)、チケット管理部402は、最も以前の要求時間帯について、資源チケットrtixを要求通りにスケジューラクライアントscに配分する(ステップS3204)。上述した例では、チケット管理部402は、スケジューラクライアントsc#1に、2つの資源チケットrtixを配分し、スケジューラクライアントsc#2に、4つの資源チケットrtixを配分する。そして、チケット管理部402は、資源チケット補充表414から、最も以前の要求時間帯を削除する(ステップS3205)。そして、チケット管理部402は、ステップS3201の処理に移行する。
一方、最も以前の要求時間帯に受け付けた補充依頼数の合計が資源チケット発行数より大きい場合(ステップS3203:Yes)、チケット管理部402は、最も以前の要求時間帯について、資源チケットrtixを補充依頼数に比例させてスケジューラクライアントscに配分する(ステップS3206)。上述した例において、資源チケット発行数が3であったとする。この場合、チケット管理部402は、スケジューラクライアントsc#1に、3×(2/(2+4))=1つの資源チケットrtixを配分し、スケジューラクライアントsc#2に、3×(4/(2+4))=2つの資源チケットrtixを配分する。そして、チケット管理部402は、資源チケット補充表414の最も以前の要求時間帯について、補充依頼数を配分数だけ減少させる(ステップS3207)。
ステップS3207の処理終了後、または、資源チケット補充表414にレコードがない場合(ステップS3201:No)、チケット管理部402は、資源チケット配布処理を終了する。
ここで、チケット管理部402は、資源チケット配布メッセージ504を用いてスケジューラクライアントscに資源チケットrtixを配布する。資源チケットrtixを配布するタイミングとして、チケット管理部402は、ステップS3204の処理を実行する度に、資源チケットrtixを配布することもできるが、資源チケットrtixをまとめて配布することが好ましい。具体的には、チケット管理部402は、ステップS3204の処理を実行する度に、スケジューラクライアントscごとに、ステップS3204の処理で得られた資源チケットrtixを配分する数を加算する。
そして、チケット管理部402は、ステップS3201の処理終了後、スケジューラクライアントscごとに、加算して得られた合計を配布数とする資源チケット配布メッセージ504を送信する。または、チケット管理部402は、ステップS3207の処理終了後、スケジューラクライアントscごとに、ステップS3204の処理で得られた資源チケットrtixを配分する数を加算する。そして、チケット管理部402は、スケジューラクライアントscごとに、加算して得られた合計を配布数とする資源チケット配布メッセージ504を送信する。これにより、チケット管理部402は、各要求時間帯の要求数をまとめた分の資源チケットrtixを、スケジューラクライアントscに配布することができる。
図33は、スケジューラサーバssにおけるIDチケット使用実績記録処理手順の一例を示すフローチャートである。スケジューラサーバssにおけるIDチケット使用実績記録処理は、計算資源割り当て管理部401からIDチケット回収通知を受け付けた場合に実行する処理である。また、IDチケット使用実績記録処理は、チケット管理部402が実行する処理である。
チケット管理部402は、IDチケット回収通知を受信する(ステップS3301)。次に、チケット管理部402は、IDチケット使用実績管理表413に対し、現在の時間帯の使用数を1増加させる(ステップS3302)。ステップS3302の処理終了後、チケット管理部402は、IDチケット使用実績記録処理を終了する。
図34は、スケジューラサーバssにおけるIDチケット発行数算出処理手順の一例を示すフローチャートである。スケジューラサーバssにおけるIDチケット発行数算出処理は、IDチケットitixの発行数を見積る処理である。また、IDチケット発行数算出処理は、チケット管理部402が実行する処理である。
チケット管理部402は、IDチケット補充表415の要求時間帯ごとの使用数の移動平均を推定値として決定する(ステップS3401)。次に、チケット管理部402は、移動平均が直近2回の要求時間帯で増加した否かを判断する(ステップS3402)。移動平均が直近2回の要求時間帯で増加した場合(ステップS3402:Yes)、チケット管理部402は、推定値に平均増加量を加算する(ステップS3403)。
ステップS3403の処理終了後、または、移動平均が直近2回の要求時間帯で増加していない場合(ステップS3402:No)、チケット管理部402は、IDチケット発行数算出処理を終了する。
図35は、スケジューラサーバssにおけるIDチケット配布処理手順の一例を示すフローチャートである。スケジューラサーバssにおけるIDチケット配布処理は、IDチケット所要量見積り処理で得られた推定値に基づいて、IDチケットitixをスケジューラクライアントscに配布する処理である。IDチケット配布処理は、チケット管理部402が実行する処理である。
なお、図35で示すステップS3501〜S3507は、図32で示したS3201〜S3207について、「資源チケット発行数」を、「推定値」に置換し、「資源」を「ID」に置換しただけであるため、説明を省略する。また、チケット管理部402は、IDチケット配布メッセージ505を用いてスケジューラクライアントscにIDチケットitixを配布する。
図36は、実施例2におけるHPCシステム3600の構成例を示す説明図である。図36に示すHPCシステム3600は、分散ファイルシステム上のデータベース3601により実現したものである。具体的には、データベース3601に格納されたジョブスケジューラプログラムを読み出すことにより、スケジューラサーバssは、制御部400を有し、スケジューラクライアントscは、制御部420を有する。実施例2では、もともとのジョブスケジューラシステムのメッセージ形式を変更せずに、ジョブスケジューラプログラムでのデータベース参照/更新処理でチケット関連の処理を行うことができる。従って、実施例2では、スケジューラサーバssのチケット管理部402と、他の既存部分との独立性を高めることができる。
また、各スケジューラクライアントscは、データベース3601を利用してスケジューラサーバssから配布された資源チケットrtix、IDチケットitixを共有してもよい。
以上説明したように、スケジューラサーバssは、資源チケットrtixを事前にスケジューラクライアントscに配分する。そして、スケジューラクライアントscは、配分された資源チケットを消費して、受け付けたジョブを対象にする計算資源割り当て処理をスケジューラサーバssに依頼する。これにより、HPCシステム200は、スケジューラサーバssにかかる負荷を一定範囲に抑えつつ、かつ、利用者が実行するジョブ投入についても、上限数に到達することを抑制することができる。
また、スケジューラサーバssは、IDチケットitixを事前にスケジューラクライアントscに配分してもよい。これにより、スケジューラクライアントscは、スケジューラサーバssの負荷が大きい時間帯においても、HPCシステム200全体で一意かつスケジューラサーバss上で名前空間が一元的に管理されるジョブIDを、利用者端末utに送信することができる。
また、スケジューラクライアントscは、ジョブ取消コマンド432を受け付けた場合、ジョブ取消コマンド432で指定されるジョブの計算資源割り当て処理の実行依頼をまだスケジューラサーバssに送信していないならば、その実行依頼を破棄してもよい。これにより、スケジューラクライアントscは、その実行依頼をまだスケジューラサーバssに送信していない場合、スケジューラサーバssに負荷をかけることなく、その実行依頼を取り消すことができる。このように、スケジューラクライアントscは、スクリプトの誤りや利用者の試行錯誤による大量のジョブ投入が発生しても、ジョブ実行依頼メッセージ501がスケジューラサーバssに送信される以前ならば、自身の処理だけで取り消すことができる。
また、スケジューラクライアントscは、ジョブ状態表示コマンド433を受け付けた場合に、ジョブ状態表示コマンド433で指定されるジョブの計算資源割り当て処理の実行依頼をスケジューラサーバssに送信しているか否かを判断する。そして、スケジューラクライアントscは、実行依頼をまだスケジューラサーバssに送信していないと判断したならば、そのジョブに計算資源の割り当てが行われていないことを示す情報を、利用者端末utに送信してもよい。これにより、スケジューラクライアントscは、その実行依頼をまだスケジューラサーバssに送信していない場合、スケジューラサーバssに負荷をかけることなく、ジョブ状態表示コマンド433の処理を行うことができる。
また、スケジューラサーバssは、計算資源割り当て処理を行った際の各ジョブを実行するノードの数と、各ジョブを実行させる時間帯と、各ジョブを対象とする計算資源割り当て処理にかかった時間を記憶しておく。次に、スケジューラサーバssは、記憶したノードの数、時間帯、計算資源割り当て処理にかかった時間、次の単位時間で計算資源割り当て処理を行うジョブを実行するノードの数と時間帯とから、後の単位時間に割り当て処理が可能なジョブの数を決定してもよい。これにより、スケジューラサーバssは、次の単位時間に計算資源割り当て処理が可能なジョブの数を正確に見積ることができる。
また、各スケジューラクライアントscは、スケジューラサーバssから配布された資源チケットrtix、IDチケットitixを共有してもよい。例えば、スケジューラクライアントscは、余った資源チケットrtixを、他のスケジューラクライアントscに送信してもよい。ここで、資源チケットrtixが余るということは、スケジューラサーバssの計算資源が余っていることを示している。従って、スケジューラクライアントscは、他のスケジューラクライアントscに余った資源チケットrtixを送信することにより、スケジューラサーバssの計算資源を有効利用することができる。
また、スケジューラサーバssは、ジョブ投入ごとではなく複数のジョブ投入の処理に資源チケットrtixをまとめて通信を行う。従って、スケジューラサーバssは、スケジューラクライアントscとの通信処理自体による負荷の割合が大きければ、通信間隔を大きくし多くのデータをまとめて、実効バンド幅を改善することにより、スケジューラサーバssの通信負荷を軽減することができる。
また、HPCシステム200は、以下の2つの理由により、スケジューラサーバssの負荷の極端な上昇を、利用者の挙動によらず、常に回避することができる。1つ目の理由は、供給量が時間帯により制限される資源チケットrtixによりジョブ実行依頼メッセージ501の回数が制限されることである。2つ目の理由は、ジョブ実行依頼メッセージ501や、資源チケット補充依頼メッセージ502は、利用者端末utによって送信されるものではなく、スケジューラクライアントscによって送信されるものであることである。
なお、本実施の形態で説明した並列処理方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本並列処理プログラムは、ハードディスク、フレキシブルディスク、CD−ROM(Compact Disc−Read Only Memory)、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本並列処理プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)プロセッサとメモリとを有する3以上のノードを有する並列処理装置であって、
前記3以上のノードのうちのジョブを対象とする計算資源の割り当て処理を行う特定のノードは、
単位時間の前記特定のノードの資源を用いて前記単位時間に前記割り当て処理が可能なジョブの数に応じた数分の前記割り当て処理を依頼可能な権限を示す権限情報を、前記3以上のノードのうちのジョブの実行要求を受け付ける複数のノードの各ノードに割り当てて、割り当てた前記権限情報を前記各ノードに送信し、
前記各ノードは、
ジョブの実行要求を受け付けた場合、前記特定のノードから受け付けた前記権限情報が示す権限を消費して、当該ジョブを対象とする前記割り当て処理を実行する依頼を、前記特定のノードに送信する、
ことを特徴とする並列処理装置。
(付記2)前記特定のノードは、
前記割り当て処理の対象のジョブに付与される前記対象のジョブを識別する識別情報を、前記各ノードに送信し、
前記各ノードは、
ジョブの実行要求を受け付けた場合、前記特定のノードから受け付けた前記識別情報を当該ジョブに割り当てて前記識別情報を当該ジョブの実行要求の要求元に送信し、前記権限情報が示す権限を消費して、前記識別情報で識別する当該ジョブを対象とする前記割り当て処理を実行する依頼を、前記特定のノードに送信する、
ことを特徴とする付記1に記載の並列処理装置。
(付記3)前記各ノードは、
ジョブに割り当てた識別情報を含む当該ジョブの取消要求を受け付けた場合、当該ジョブを対象とする前記割り当て処理を実行する依頼を前記特定のノードに送信したか否かを判断し、
当該ジョブを対象とする前記割り当て処理を実行する依頼を前記特定のノードに送信していないと判断した場合、当該ジョブを対象とする前記割り当て処理を実行する依頼を破棄する、
ことを特徴とする付記2に記載の並列処理装置。
(付記4)前記各ノードは、
ジョブに割り当てた識別情報を含む当該ジョブの状態表示要求を受け付けた場合、当該ジョブを対象とする前記割り当て処理を実行する依頼を前記特定のノードに送信したか否かを判断し、
当該ジョブを対象とする前記割り当て処理を実行する依頼を前記特定のノードに送信していないと判断した場合、当該ジョブに計算資源の割り当てが行われていないことを示す情報を、前記状態表示要求の要求元に送信する、
ことを特徴とする付記2または3に記載の並列処理装置。
(付記5)ジョブの実行要求および当該ジョブを対象とする前記割り当て処理を実行する依頼には、前記3以上のノードのうちの当該ジョブを実行するノードの数と、当該ジョブを実行させる時間間隔とを含み、
前記特定のノードは、
前記単位時間内の前記割り当て処理を実行したことに応じて、前記単位時間内の前記割り当て処理の対象となった各ジョブを実行するノードの数と、当該各ジョブを実行させる時間帯と、当該各ジョブを対象とする前記割り当て処理にかかった時間とを記憶し、
記憶した前記割り当て処理の対象となったジョブを実行するノードの数と、当該ジョブを実行させる時間帯と、前記割り当て処理にかかった時間とを参照して、前記各ノードから受け付けた前記割り当て処理を実行する依頼から特定される前記単位時間の後に実行する前記割り当て処理の対象となる各ジョブを実行するノードの数と、当該各ジョブを実行させる時間帯とに基づいて、当該各ジョブを対象とする前記割り当て処理にかかる時間を特定し、
特定した当該各ジョブを対象とする前記割り当て処理にかかる時間に基づいて、前記単位時間の後の単位時間に前記割り当て処理が可能なジョブの数を決定する、
ことを特徴とする付記2〜4のいずれか一つに記載の並列処理装置。
(付記6)前記各ノードの間で、前記特定のノードから受け付けた前記権限情報を共有することを特徴とする付記1〜5のいずれか一つに記載の並列処理装置。
(付記7)プロセッサとメモリとを有する3以上のノードを有する並列処理装置のジョブスケジューリング方法であって、
前記3以上のノードのうちのジョブを対象とする計算資源の割り当て処理を行う特定のノードが、
単位時間の前記特定のノードの資源を用いて前記単位時間に前記割り当て処理が可能なジョブの数に応じた数分の前記割り当て処理を依頼可能な権限を示す権限情報を、前記3以上のノードのうちのジョブの実行要求を受け付ける複数のノードの各ノードに割り当てて、割り当てた前記権限情報を前記各ノードに送信し、
前記各ノードが、
ジョブの実行要求を受け付けた場合、前記特定のノードから受け付けた前記権限情報が示す権限を消費して、当該ジョブを対象とする前記割り当て処理を実行する依頼を、前記特定のノードに送信する、
処理を実行することを特徴とするジョブスケジューリング方法。
(付記8)プロセッサとメモリとを有する3以上のノードを有する並列処理装置のジョブスケジューリングプログラムであって、
前記3以上のノードのうちのノードに、
前記ノードが前記3以上のノードのうちのジョブを対象とする計算資源の割り当て処理を行う特定のノードであれば、単位時間の前記特定のノードの資源を用いて前記単位時間に前記割り当て処理が可能なジョブの数に応じた数分の前記割り当て処理を依頼可能な権限を示す権限情報を、前記3以上のノードのうちのジョブの実行要求を受け付ける複数のノードの各ノードに割り当てて、割り当てた前記権限情報を前記各ノードに送信し、
前記ノードが前記各ノードであれば、ジョブの実行要求を受け付けた場合、前記特定のノードから受け付けた前記権限情報が示す権限を消費して、当該ジョブを対象とする前記割り当て処理を実行する依頼を、前記特定のノードに送信する、
処理を実行させることを特徴とするジョブスケジューリングプログラム。
101 並列処理装置
200 HPCシステム
400、420 制御部
401 計算資源割り当て管理部
402 チケット管理部
403 資源チケット配布数決定部
404 IDチケット配布数決定部
405 資源チケット送信部
406 IDチケット送信部
410 記憶部
411 処理時間管理表
412 資源チケット使用実績管理表
413 IDチケット使用実績管理表
414 資源チケット補充表
415 IDチケット補充表
421 受け付け部
422 チケット通信部
423 送信部
424 ジョブ状態ローカル管理部
431 ジョブ投入コマンド
432 ジョブ取消コマンド
433 ジョブ状態表示コマンド

Claims (7)

  1. プロセッサとメモリとを有する3以上のノードを有する並列処理装置であって、
    前記3以上のノードのうちのジョブを対象とする計算資源の割り当て処理を行う特定のノードは、
    単位時間の前記特定のノードの資源を用いて前記単位時間に前記割り当て処理が可能なジョブの数に応じた数分の前記割り当て処理を依頼可能な権限を示す権限情報を、前記3以上のノードのうちのジョブの実行要求を受け付ける複数のノードの各ノードに割り当てて、割り当てた前記権限情報を前記各ノードに送信し、
    前記各ノードは、
    ジョブの実行要求を受け付けた場合、前記特定のノードから受け付けた前記権限情報が示す権限を消費して、当該ジョブを対象とする前記割り当て処理を実行する依頼を、前記特定のノードに送信する、
    ことを特徴とする並列処理装置。
  2. 前記特定のノードは、
    前記割り当て処理の対象のジョブに付与される前記対象のジョブを識別する識別情報を、前記各ノードに送信し、
    前記各ノードは、
    ジョブの実行要求を受け付けた場合、前記特定のノードから受け付けた前記識別情報を当該ジョブに割り当てて前記識別情報を当該ジョブの実行要求の要求元に送信し、前記権限情報が示す権限を消費して、前記識別情報で識別する当該ジョブを対象とする前記割り当て処理を実行する依頼を、前記特定のノードに送信する、
    ことを特徴とする請求項1に記載の並列処理装置。
  3. 前記各ノードは、
    ジョブに割り当てた識別情報を含む当該ジョブの取消要求を受け付けた場合、当該ジョブを対象とする前記割り当て処理を実行する依頼を前記特定のノードに送信したか否かを判断し、
    当該ジョブを対象とする前記割り当て処理を実行する依頼を前記特定のノードに送信していないと判断した場合、当該ジョブを対象とする前記割り当て処理を実行する依頼を破棄する、
    ことを特徴とする請求項2に記載の並列処理装置。
  4. 前記各ノードは、
    ジョブに割り当てた識別情報を含む当該ジョブの状態表示要求を受け付けた場合、当該ジョブを対象とする前記割り当て処理を実行する依頼を前記特定のノードに送信したか否かを判断し、
    当該ジョブを対象とする前記割り当て処理を実行する依頼を前記特定のノードに送信していないと判断した場合、当該ジョブに計算資源の割り当てが行われていないことを示す情報を、前記状態表示要求の要求元に送信する、
    ことを特徴とする請求項2または3に記載の並列処理装置。
  5. ジョブの実行要求および当該ジョブを対象とする前記割り当て処理を実行する依頼には、前記3以上のノードのうちの当該ジョブを実行するノードの数と、当該ジョブを実行させる時間間隔とを含み、
    前記特定のノードは、
    前記単位時間内の前記割り当て処理を実行したことに応じて、前記単位時間内の前記割り当て処理の対象となった各ジョブを実行するノードの数と、当該各ジョブを実行させる時間帯と、当該各ジョブを対象とする前記割り当て処理にかかった時間とを記憶し、
    記憶した前記割り当て処理の対象となったジョブを実行するノードの数と、当該ジョブを実行させる時間帯と、前記割り当て処理にかかった時間とを参照して、前記各ノードから受け付けた前記割り当て処理を実行する依頼から特定される前記単位時間の後に実行する前記割り当て処理の対象となる各ジョブを実行するノードの数と、当該各ジョブを実行させる時間帯とに基づいて、当該各ジョブを対象とする前記割り当て処理にかかる時間を特定し、
    特定した当該各ジョブを対象とする前記割り当て処理にかかる時間に基づいて、前記単位時間の後の単位時間に前記割り当て処理が可能なジョブの数を決定する、
    ことを特徴とする請求項2〜4のいずれか一つに記載の並列処理装置。
  6. プロセッサとメモリとを有する3以上のノードを有する並列処理装置のジョブスケジューリング方法であって、
    前記3以上のノードのうちのジョブを対象とする計算資源の割り当て処理を行う特定のノードが、
    単位時間の前記特定のノードの資源を用いて前記単位時間に前記割り当て処理が可能なジョブの数に応じた数分の前記割り当て処理を依頼可能な権限を示す権限情報を、前記3以上のノードのうちのジョブの実行要求を受け付ける複数のノードの各ノードに割り当てて、割り当てた前記権限情報を前記各ノードに送信し、
    前記各ノードが、
    ジョブの実行要求を受け付けた場合、前記特定のノードから受け付けた前記権限情報が示す権限を消費して、当該ジョブを対象とする前記割り当て処理を実行する依頼を、前記特定のノードに送信する、
    処理を実行することを特徴とするジョブスケジューリング方法。
  7. プロセッサとメモリとを有する3以上のノードを有する並列処理装置のジョブスケジューリングプログラムであって、
    前記3以上のノードのうちのノードに、
    前記ノードが前記3以上のノードのうちのジョブを対象とする計算資源の割り当て処理を行う特定のノードであれば、単位時間の前記特定のノードの資源を用いて前記単位時間に前記割り当て処理が可能なジョブの数に応じた数分の前記割り当て処理を依頼可能な権限を示す権限情報を、前記3以上のノードのうちのジョブの実行要求を受け付ける複数のノードの各ノードに割り当てて、割り当てた前記権限情報を前記各ノードに送信し、
    前記ノードが前記各ノードであれば、ジョブの実行要求を受け付けた場合、前記特定のノードから受け付けた前記権限情報が示す権限を消費して、当該ジョブを対象とする前記割り当て処理を実行する依頼を、前記特定のノードに送信する、
    処理を実行させることを特徴とするジョブスケジューリングプログラム。
JP2016145711A 2016-07-25 2016-07-25 並列処理装置、ジョブスケジューリング方法、およびジョブスケジューリングプログラム Withdrawn JP2018018171A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016145711A JP2018018171A (ja) 2016-07-25 2016-07-25 並列処理装置、ジョブスケジューリング方法、およびジョブスケジューリングプログラム
US15/586,804 US20180024862A1 (en) 2016-07-25 2017-05-04 Parallel processing system, method, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016145711A JP2018018171A (ja) 2016-07-25 2016-07-25 並列処理装置、ジョブスケジューリング方法、およびジョブスケジューリングプログラム

Publications (1)

Publication Number Publication Date
JP2018018171A true JP2018018171A (ja) 2018-02-01

Family

ID=60988615

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016145711A Withdrawn JP2018018171A (ja) 2016-07-25 2016-07-25 並列処理装置、ジョブスケジューリング方法、およびジョブスケジューリングプログラム

Country Status (2)

Country Link
US (1) US20180024862A1 (ja)
JP (1) JP2018018171A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020091825A (ja) * 2018-11-26 2020-06-11 キヤノン株式会社 システム、管理装置、方法及びプログラム
KR20210086391A (ko) * 2019-12-31 2021-07-08 주식회사 포스코아이씨티 클러스터링 구성 및 원격제어가 가능한 스케줄러 서버 시스템
KR102395117B1 (ko) * 2021-09-08 2022-05-09 쿠팡 주식회사 판매된 아이템에 대한 정산을 위하여 정보를 처리하는 전자 장치 및 그 방법

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10747546B2 (en) * 2017-06-19 2020-08-18 Mitsubishi Electric Corporation Distributed allocation device, distributed allocation system, and distributed allocation method
US10990445B2 (en) * 2017-08-04 2021-04-27 Apple Inc. Hardware resource allocation system for allocating resources to threads
US10642647B2 (en) * 2018-03-19 2020-05-05 Accenture Global Solutions Limited Concurrent queueing and control command feedback loop in unified automation platforms
US11321183B2 (en) 2018-05-02 2022-05-03 Commvault Systems, Inc. Multi-tiered backup indexing
US10673943B2 (en) * 2018-05-02 2020-06-02 Commvault Systems, Inc. Network storage backup using distributed media agents
US11249863B2 (en) 2018-05-02 2022-02-15 Commvault Systems, Inc. Backup-based media agent configuration
US11416295B2 (en) * 2019-04-30 2022-08-16 Intel Corporation Technologies for providing efficient access to data in an edge infrastructure
CN110275203B (zh) * 2019-06-25 2020-11-24 山东交通学院 面向海量数据的相对波速变化计算的并行化方法及应用
US11263173B2 (en) 2019-07-30 2022-03-01 Commvault Systems, Inc. Transaction log index generation in an enterprise backup system

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003256221A (ja) * 2002-02-28 2003-09-10 Fujitsu Ltd 並列プロセス実行方法、及びマルチプロセッサ型コンピュータ
US9817645B2 (en) * 2014-09-17 2017-11-14 Sap Se Reusable application configuration with dynamic resource determination
US9218502B1 (en) * 2014-10-17 2015-12-22 Addepar, Inc. System and architecture for electronic permissions and security policies for resources in a data system

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020091825A (ja) * 2018-11-26 2020-06-11 キヤノン株式会社 システム、管理装置、方法及びプログラム
JP7214517B2 (ja) 2018-11-26 2023-01-30 キヤノン株式会社 システム、管理装置、方法及びプログラム
KR20210086391A (ko) * 2019-12-31 2021-07-08 주식회사 포스코아이씨티 클러스터링 구성 및 원격제어가 가능한 스케줄러 서버 시스템
KR102335687B1 (ko) 2019-12-31 2021-12-06 주식회사 포스코아이씨티 클러스터링 구성 및 원격제어가 가능한 스케줄러 서버 시스템
KR102395117B1 (ko) * 2021-09-08 2022-05-09 쿠팡 주식회사 판매된 아이템에 대한 정산을 위하여 정보를 처리하는 전자 장치 및 그 방법
WO2023038179A1 (ko) * 2021-09-08 2023-03-16 쿠팡 주식회사 판매된 아이템에 대한 정산을 위하여 정보를 처리하는 전자 장치 및 그 방법

Also Published As

Publication number Publication date
US20180024862A1 (en) 2018-01-25

Similar Documents

Publication Publication Date Title
JP2018018171A (ja) 並列処理装置、ジョブスケジューリング方法、およびジョブスケジューリングプログラム
Wu et al. Deadline-constrained cost optimization approaches for workflow scheduling in clouds
AU2017203274B2 (en) Burst mode control
JP5068099B2 (ja) 個々のユーザの資源使用量およびその使用量の追跡に基づいた公平な共用分のスケジューリングを行う方法およびシステム
CN110515539B (zh) 基于云存储的云磁盘挂载方法、装置、设备和存储介质
CN110008257A (zh) 数据处理方法、装置、系统、计算机设备和存储介质
JP2020173778A (ja) リソースの割り当て方法、装置、電子設備、コンピュータ可読媒体およびコンピュータプログラム
US20070127527A1 (en) Methods and apparatus for implementing a flexible multi-user advance reservation system where reservation requests are specified in terms of multiple options and where each option has an associated business value
Iorgulescu et al. Don't cry over spilled records: Memory elasticity of data-parallel applications and its application to cluster scheduling
Li et al. MapReduce delay scheduling with deadline constraint
US7437459B2 (en) Calculation of service performance grades in a multi-node environment that hosts the services
Zhang et al. Online scheduling of heterogeneous distributed machine learning jobs
CN114175602A (zh) 云资源的权限管理
JP2018156142A (ja) 並列処理装置、ステージアウト処理方法、およびジョブ管理プログラム
JP2019528521A (ja) 統計を集約するための方法および分散ストレージシステム
JPH09160890A (ja) マルチプロセッサシステム
JP2018067113A (ja) 制御装置、制御方法、および制御プログラム
US20230350723A1 (en) Computer system and placement plan proposal method
Blöcher et al. The Grand CRU Challenge
JP7173337B2 (ja) リソース管理装置、リソース管理方法およびプログラム
Georgiannakis et al. Description of the adaptive resource management problem, cost functions and performance objectives
JP2003122712A (ja) クライアント監視方法、サーバー装置、プログラム及び記録媒体
Llull Microeconomic Models for Managing Shared Datacenters
Sinha et al. Performance Evaluation of Fog Centre with Balking, Reneging and Retention
JP2023154672A (ja) スケジューリングプログラム、スケジューリング方法、および情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190409

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200116

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20200124