JP7238616B2 - 並列処理装置、ジョブ管理プログラム、及びジョブ管理方法 - Google Patents

並列処理装置、ジョブ管理プログラム、及びジョブ管理方法 Download PDF

Info

Publication number
JP7238616B2
JP7238616B2 JP2019108523A JP2019108523A JP7238616B2 JP 7238616 B2 JP7238616 B2 JP 7238616B2 JP 2019108523 A JP2019108523 A JP 2019108523A JP 2019108523 A JP2019108523 A JP 2019108523A JP 7238616 B2 JP7238616 B2 JP 7238616B2
Authority
JP
Japan
Prior art keywords
job
jobs
time
time range
resource
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.)
Active
Application number
JP2019108523A
Other languages
English (en)
Other versions
JP2020201741A (ja
Inventor
章孝 岩田
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 JP2019108523A priority Critical patent/JP7238616B2/ja
Priority to EP20170673.6A priority patent/EP3751417B1/en
Priority to US16/857,232 priority patent/US11693668B2/en
Priority to CN202010392041.5A priority patent/CN112068949A/zh
Publication of JP2020201741A publication Critical patent/JP2020201741A/ja
Application granted granted Critical
Publication of JP7238616B2 publication Critical patent/JP7238616B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • 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
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Multi Processors (AREA)

Description

本発明は、並列処理装置、ジョブ管理プログラム、及びジョブ管理方法に関する。
大規模並列計算機システムは、計算資源を有する多数の計算ノードを含み、ユーザによって投入された複数のジョブを並列に実行する。各計算ノードは、単一のCPU(Central Processing Unit)又は複数のCPUを含む計算機(コンピュータ)であり、各CPUは、単一又は複数のコアを含む。
並列計算機システムのジョブスケジューラは、各ジョブの実行開始に先立って、計算資源割り当てを含むジョブスケジューリングを行う。ジョブスケジューラは、計算ノードの計算資源の中から、そのジョブが要求する空き計算資源を選択して、そのジョブに割り当てる。
例えば、単一のCPUを含む計算ノードの計算資源は、CPU時間で表されることがあり、複数のCPUを含む計算ノードの計算資源は、CPUの個数×CPU時間(又はコアの個数×CPU時間)で表されることがある。また、複数の計算ノードを並列に専有して使用するジョブが要求する計算資源は、計算ノードの個数×(占有)使用時間等によって表されることがある。計算資源は、単に資源と呼ばれることもある。
図1は、並列計算機システムにおけるジョブスケジューリングの例を示している。まず、新規ジョブ投入(手順A1)において、ユーザは、「所定個数の計算ノードを所定時間だけ連続して使用する」という条件を指定して、ジョブを投入(サブミット)し、ジョブスケジューリングをジョブスケジューラ101に依頼する。以下では、ジョブが要求する計算資源を、“計算ノードの個数×使用時間”の形式で記載することがある。
計算ノードのネットワークトポロジがメッシュ又はトーラスである場合、ユーザは、使用する計算ノードを指定する際に、ジョブが使用する範囲のメッシュ又はトーラスの形状を指定することもある。例えば、3次元形状の場合、縦、横、及び高さを表す各辺の計算ノードの個数が指定される。
次に、ジョブスケジューラ101は、ジョブ受け付け(手順A2)において、投入されたジョブを、一定間隔でまとめて受け付ける。図1の例では、ジョブ16~ジョブ20がまとめて受け付けられている。このうち、ジョブ16、ジョブ18、及びジョブ20は、ユーザU1のジョブであり、ジョブ17は、ユーザU2のジョブであり、ジョブ19は、ユーザU3のジョブである。
次に、ジョブスケジューラ101は、ジョブ選択(手順A3)において、受け付けられたジョブを含むすべての実行待ちジョブを、決められた優先度(グループ優先度、ユーザ優先度等)に従って、優先度の高いものから順にソートする。これにより、ジョブ16~ジョブ20と、ジョブ6、ジョブ8、ジョブ3、ジョブ5、及びジョブ10とが、優先度順に並べ換えられる。ジョブ3、ジョブ5、及びジョブ10は、ユーザU1のジョブであり、ジョブ6及びジョブ8は、ユーザU3のジョブである。
次に、ジョブスケジューラ101は、計算資源選択(手順A4)において、各ジョブが要求する空き計算資源を探索し、その空き計算資源をジョブに対して割り当てる。これにより、優先度の高い順に各ジョブの実行が開始されるように、計算資源割り当てが行われる。
例えば、現在時刻において実行中のジョブは、ジョブ1及びジョブ2であり、ジョブ1には、“2×5”(2個の計算ノード×5時間)の計算資源が割り当てられ、ジョブ2には、“1×3”の計算資源が割り当てられている。一方、実行待ちジョブであるジョブ17に対しては、“3×3”の計算資源が割り当てられ、ジョブ6に対しては、“2×3”の計算資源が割り当てられ、ジョブ8に対しては、“4×1”の計算資源が割り当てられる。ジョブ5に対しては、バックフィルスケジューリングにより、“2×3”の計算資源が割り当てられる。
バックフィルスケジューリングは、優先度の高い順に計算資源を割り当てるスケジューリングの順方向とは逆向きに、既に他のジョブに割り当て済みの時間帯の隙間を埋めるようにして、処理対象のジョブに計算資源を割り当てるスケジューリング処理である。割り当て済みの時間帯の隙間を埋める処理は、バックフィルと呼ばれる。バックフィルスケジューリングによれば、比較的少ない計算ノードを比較的短い時間使用するジョブJ1が、より優先度の高いジョブJ2の実行開始を妨げない範囲で、ジョブJ2よりも早く開始されることがある。
次に、ジョブスケジューラ101は、ジョブ実行(手順A5)において、実行開始時刻が到来したジョブから順に、割り当てられた計算資源を使用するジョブが開始されるように、計算ノードを制御する。
図2は、計算ノードのネットワークトポロジが1次元トーラスである場合の計算資源割り当てテーブルの例を示している。縦軸は計算ノードを表し、横軸は時刻(単位は時間)を表す。計算ノードの総数は8個である。各ジョブに割り当てられる計算資源は、連続する1つ以上の計算ノードを一方の辺とし、それらの計算ノードが連続して使用される使用時間を他方の辺とする、長方形によって表される。
jobA~jobRは、ジョブの名称(ジョブ名)であり、ジョブ名の後の括弧内に記載されたP1~P15は、ジョブの優先度を表す。数字が小さいジョブほど優先度が高くなる。ジョブ名の後の括弧内に記載されたRUNは、実行中ジョブを表す。
jobA~jobCは実行中ジョブであり、jobD~jobRは実行待ちジョブである。各ジョブのジョブ名が記載された長方形は、そのジョブが要求する計算資源を表す。例えば、優先度P2を有するjobEが要求する計算資源は、“3×6”である。
ジョブスケジューリングが開始されると、まず、ジョブスケジューラ101は、計算資源割り当てテーブルをクリアし、現在時刻0における実行中ジョブの割り当て状況を設定する。
jobAには2個の計算ノードが割り当てられており、jobAの残り使用時間は7時間である。そこで、jobAの割り当て状況として“2×7”が設定される。同様にして、jobBの割り当て状況として“1×9”が設定され、jobCの割り当て状況として、“1×4”が設定される。
次に、ジョブスケジューラ101は、実行待ちジョブを優先度順にソートして、優先度の高いジョブから順に、バックフィルスケジューリングを適用しない計算資源割り当てを行う。
まず、最も高い優先度P1を有するjobDが処理対象として選択される。jobDが要求する計算資源は“7×5”であるため、計算資源割り当てテーブルにおいて、現在時刻0から未来へ向かって、連続する7個の計算ノードが連続して5時間空いている空き計算資源が探索される。この場合、現在時刻0から9時間後の時刻9において、“7×5”の空き計算資源が見つかり、jobDに対して、その空き計算資源が割り当てられる。
次に、2番目に高い優先度P2を有するjobEが処理対象として選択される。jobEの優先度はjobDの優先度よりも低いため、jobEの実行開始時刻がjobDの実行開始時刻よりも遅くなるように、計算資源割り当てを行うことが望ましい。jobEが要求する計算資源は“3×6”であるため、jobDの実行開始時刻である時刻9から未来へ向かって、連続する3個の計算ノードが連続して6時間空いている空き計算資源が探索される。この場合、現在時刻0から14時間後の時刻14において、“3×6”の空き計算資源が見つかり、jobEに対して、その空き計算資源が割り当てられる。
同様にして、優先度P3を有するjobFから優先度P15を有するjobRまで、順番に空き計算資源が探索され、最終的に、図2の計算資源割り当てテーブルが示すような計算資源割り当てが行われる。
しかし、各ジョブが要求する計算資源が大きいほど、その条件に合う空き計算資源が見つかる時刻は遅くなりやすく、結果として、虫食いのように、割り当てられない空き計算資源が多数発生することになる。このため、現在時刻0において実行中ジョブが使用している計算ノードの個数は4個であり、計算ノードの総数の半分に過ぎない。したがって、並列計算機システムの稼働率は50%であり、稼働率が低くなる。
このような空き計算資源の隙間を埋めて、並列計算機システムの稼働率を向上させるために、バックフィルスケジューリングを適用することが効果的である。
図3は、図2の実行待ちジョブに対してバックフィルスケジューリングを適用した場合の計算資源割り当てテーブルの例を示している。この場合、jobH、jobJ、jobK、jobL、jobM、jobN、jobO、jobP、及びjobQが、優先度の高い他のジョブよりも早く開始されるように、計算資源割り当てが行われる。
現在時刻0における実行中ジョブの割り当て状況の設定と、最も高い優先度P1を有するjobDに対する計算資源割り当ては、図2と同様にして行われる。
次に、2番目に高い優先度P2を有するjobEが処理対象として選択される。バックフィルスケジューリングでは、現在時刻0から未来へ向かって、連続する3個の計算ノードが連続して6時間空いている空き計算資源が探索される。このとき、jobEよりも高い優先度を有するjobDには、既に計算資源が割り当てられているので、現在時刻0から空き計算資源を探索しても、jobDの実行開始が妨げられることはない。
しかし、現在時刻0からjobDの実行開始時刻である時刻9までの時間帯において、バックフィル可能な“3×6”の空き計算資源が見つからないため、時刻14を実行開始時刻とする“3×6”の空き計算資源が、jobEに対して割り当てられる。
同様にして、優先度P3を有するjobFと優先度P4を有するjobGに対して、現在時刻0から未来へ向かって空き計算資源が探索されるが、バックフィル可能な空き計算資源が見つからない。そこで、時刻14を実行開始時刻とする“2×11”の空き計算資源が、jobFに対して割り当てられ、時刻25を実行開始時刻とする“4×4”の空き計算資源が、jobGに対して割り当てられる。
次に、優先度P5を有するjobHに対して、現在時刻0から未来へ向かって空き計算資源が探索される。この場合、時刻7において、バックフィル可能な“4×2”の空き計算資源が見つかり、jobHに対して、その空き計算資源が割り当てられる。
以降、jobI~jobRに対しても、現在時刻0から未来へ向かって空き計算資源が探索され、バックフィル可能な空き計算資源が見つかれば、バックフィルによる計算資源割り当てが行われる。一方、バックフィル可能な空き計算資源が見つからなければ、図2と同様の計算資源割り当てが行われ、最終的に、図3の計算資源割り当てテーブルが示すような計算資源割り当てが行われる。
図3と図2とを比較すると、バックフィルスケジューリングによって、各ジョブが要求する空き計算資源が見つかる時刻が早くなり、割り当てられない空き計算資源が減少していることが分かる。
また、図3において、優先度P9を有するjobLと優先度P13を有するjobPについては、現在時刻0を実行開始時刻とする計算資源が割り当てられており、ジョブの実行が直ちに開始される。このため、現在時刻0において実行中ジョブが使用している計算ノードの個数は6個になり、並列計算機システムの稼働率は75%になる。したがって、バックフィルスケジューリングによって、稼働率が向上することが分かる。
バックフィルスケジューリングに関連して、空き資源が発見されたときに、未割り当てのジョブの中から空き資源に割り当て可能なジョブを検索する並列計算機システムが知られている(例えば、特許文献1を参照)。ワークフロージョブの場合に、要件情報と段情報とに基づきマッピング処理を実行するスケジューラ装置も知られている(例えば、特許文献2を参照)。遅延禁止ジョブのジョブ実行開始時刻を遅延させない追越可能ジョブを判別するジョブスケジューリングシステムも知られている(例えば、特許文献3を参照)。
特開2015-194923号公報 特開2015-185003号公報 特開2012-173753号公報
従来の並列計算機システムにおいて、ジョブスケジューリングにバックフィルスケジューリングを適用した場合、ジョブスケジューリングに長い時間がかかることがある。
なお、かかる問題は、1次元トーラスのネットワークトポロジを有する並列計算機システム等の並列処理装置に限らず、他のネットワークトポロジを有する並列処理装置においても生ずるものである。
1つの側面において、本発明は、並列処理装置において、バックフィルスケジューリングを適用したジョブスケジューリングを効率化することを目的とする。
1つの案では、並列処理装置は、複数の計算ノードと、それらの計算ノードの計算資源をジョブに割り当てるジョブ管理装置とを含み、ジョブ管理装置は、決定部及び探索部を含む。
決定部は、実行中ジョブと実行待ちジョブとを含む複数のジョブそれぞれの予定実行時間に基づいて、資源探索時間範囲を決定する。探索部は、資源探索時間範囲内において、複数の計算ノードの計算資源の中から、複数のジョブのうち処理対象の実行待ちジョブに対して割り当てる空き計算資源を、バックフィルスケジューリングにより探索する。
実施形態によれば、並列処理装置において、バックフィルスケジューリングを適用したジョブスケジューリングを効率化することができる。
ジョブスケジューリングを示す図である。 計算資源割り当てテーブルを示す図である。 バックフィルスケジューリングを適用した場合の計算資源割り当てテーブルを示す図である。 固定値の資源探索時間範囲が設定された計算資源割り当てテーブルを示す図である。 短い資源探索時間範囲が設定された計算資源割り当てテーブルを示す図である。 並列処理装置の機能的構成図である。 ジョブ管理処理のフローチャートである。 並列計算機システムの構成図である。 ジョブ管理装置の機能的構成図である。 ジョブ情報テーブルを示す図である。 資源探索時間範囲及びバックフィル許可時間範囲が設定された計算資源割り当てテーブルを示す図である。 ジョブスケジューリングのフローチャートである。 資源選択処理のフローチャートである。 第1探索処理のフローチャートである。 第2探索処理のフローチャートである。 計算ノードとして用いられる情報処理装置の構成図である。 ジョブ管理装置として用いられる情報処理装置の構成図である。
以下、図面を参照しながら、実施形態を詳細に説明する。
ジョブスケジューリングで用いられる計算資源割り当てテーブルの形式は、ネットワークトポロジがFat Tree、メッシュ、又はトーラス等のいずれであるかによって変化する。
例えば、Fat Treeの場合、各計算ノードが他のすべての計算ノードと接続されているため、計算ノード間の連続性は重要ではない。このため、計算資源割り当てテーブルは、ある時間帯において連続して使用できる計算ノードの個数を表現できれば十分である。
一方、トーラスの場合、計算ノード間の連続性が重要になり、さらに、トーラスの形状として、1次元トーラス、2次元トーラス、又は3次元トーラスのいずれであるかを表現できることが望ましい。例えば、3次元トーラスの場合、ジョブが要求する個数の計算ノードがX軸、Y軸、又はZ軸の方向に連続しており、かつ、それらの計算ノードがある時間帯に連続して使用される、という状況を表現できることが望ましい。
ネットワークトポロジが2次元トーラス、3次元トーラス、メッシュ、又はFat Treeの場合であっても、図2に示した1次元トーラスの場合の同様にして、計算資源割り当てテーブルを生成することが可能である。
しかしながら、並列計算機システムが大規模になるとともにネットワークトポロジが複雑になり、かつ、投入されるジョブが膨大な個数になると、ジョブスケジューリングに長い時間がかかる。例えば、1万個程度の計算ノードを含む大規模並列計算機システムにおいて、1000個~100万個のジョブが投入された場合、ジョブスケジューリングの処理時間が10分~1時間になることがある。
また、各ジョブが要求する計算資源が大きくなるほど、その条件に合う空き計算資源が見つかる時刻は遅くなりやすく、結果として、空き状態(ジョブが実行されていない状態)の計算ノードでジョブが実行され難くなる。このため、並列計算機システムの稼働率が低下する。
そこで、空き計算資源を探索する時間範囲を所定範囲に制限することで、ジョブスケジューリングの処理時間が長くなることを抑止する方法が考えられる。
図4は、固定値の資源探索時間範囲が設定された計算資源割り当てテーブルの例を示している。図4の計算資源割り当てテーブルでは、現在時刻0から時刻24までの資源探索時間範囲T1が設定されており、資源探索時間範囲T1を用いて、図2の実行待ちジョブに対するバックフィルスケジューリングが行われる。
現在時刻0における実行中ジョブの割り当て状況の設定と、優先度P1を有するjobD及び優先度P2を有するjobEに対する計算資源割り当ては、図3と同様にして行われる。
次に、優先度P3を有するjobFが処理対象として選択される。バックフィルスケジューリングでは、現在時刻0から未来へ向かって、連続する2個の計算ノードが連続して11時間空いている空き計算資源が探索される。このとき、jobFよりも高い優先度を有するjobD及びjobEには、既に計算資源が割り当てられているので、現在時刻0から空き計算資源を探索しても、これらのジョブの実行開始が妨げられることはない。
しかし、バックフィル可能な“2×11”の空き計算資源が見つからないため、時刻14を実行開始時刻とする“2×11”の空き計算資源が、jobFに対して割り当てられる。この場合、jobFの実行終了時刻が時刻25になり、資源探索時間範囲T1を超えてしまうが、計算資源割り当て不可ジョブが発生していないため、この空き計算資源の割り当てが許容される。
次に、優先度P4を有するjobGが処理対象として選択され、現在時刻0から未来へ向かって、連続する4個の計算ノードが連続して4時間空いている空き計算資源が探索されるが、資源探索時間範囲T1内で“4×4”の空き計算資源が見つからない。この場合、時刻24以降の時間範囲における資源探索は行われず、jobGは、計算資源割り当て不可ジョブとして記録される。
このように、資源探索時間範囲T1を超える時間範囲における資源探索を省略することで、処理時間が無制限に長くなることが回避される。
次に、優先度P5を有するjobH~優先度P9を有するjobLに対して、資源探索時間範囲T1内で空き計算資源が探索され、空き計算資源が見つかれば、計算資源割り当てが行われる。一方、資源探索時間範囲T1内で空き計算資源が見つからなければ、処理対象のジョブが、計算資源割り当て不可ジョブとして記録される。これにより、jobH、jobJ、jobK、及びjobLに対して空き計算資源が割り当てられ、jobIは、計算資源割り当て不可ジョブとして記録される。
次に、優先度P10を有するjobMが処理対象として選択され、現在時刻0から未来へ向かって、連続する3個の計算ノードが連続して9時間空いている空き計算資源が探索される。この場合、バックフィル可能な“3×9”の空き計算資源は見つからないが、時刻17を実行開始時刻とする“3×9”の空き計算資源が見つかる。
しかし、jobMの実行終了時刻が時刻26になって、資源探索時間範囲T1を超えてしまい、かつ、計算資源割り当て不可ジョブが発生している。
計算資源割り当て不可ジョブが発生している場合、資源探索時間範囲T1を超える時間範囲の計算資源は、資源探索時間範囲T1が設定されていなければ、処理対象のジョブよりも高い優先度を有する他のジョブに割り当てられる可能性がある計算資源である。このため、計算資源割り当て不可ジョブが発生している場合、処理対象のジョブに対して、資源探索時間範囲T1を超える時間範囲の計算資源を割り当てることは許容されない。したがって、jobMに対する空き計算資源の割り当ては許容されず、jobMは、計算資源割り当て不可ジョブとして記録される。
次に、優先度P11を有するjobN~優先度P15を有するjobRに対して、資源探索時間範囲T1内で空き計算資源が探索される。その結果、jobN及びjobPに対して空き計算資源が割り当てられ、jobO、jobQ、及びjobRは、計算資源割り当て不可ジョブとして記録されて、最終的に、図4の計算資源割り当てテーブルが示すような計算資源割り当てが行われる。
図4では、説明を分かりやすくするために、資源探索時間範囲T1が24時間に設定されているが、一般的な運用では、資源探索時間範囲T1が1週間~1月程度に設定されることが多い。
このようなジョブスケジューリングでは、資源探索時間範囲T1が長いほど、投入されたジョブに対してバックフィル可能な空き計算資源が見つかる確率が高くなる。しかし、資源探索時間範囲T1が長過ぎる場合、1回の探索処理の時間が長くなり過ぎる可能性が高くなる。長大な資源探索時間範囲T1を探索しても、結局、バックフィル可能な空き計算資源が見つからないこともあり、その場合、結果的に長い処理時間が無駄になる。
また、計算資源割り当て不可ジョブが発生した場合、バックフィルによって遅い時刻に空き計算資源を割り当てられたジョブが、より高い優先度を有する他のジョブの実行開始を妨げる可能性が高くなる。この場合、優先度の低いジョブに割り当てられた空き計算資源は、資源探索時間範囲T1が設定されていなければ、そのジョブよりも高い優先度を有する他のジョブに割り当てられた可能性がある。
例えば、図3の計算資源割り当てテーブルでは、優先度P10を有するjobMに対して、時刻17を実行開始時刻とする“3×9”の空き計算資源が割り当てられている。一方、図4の計算資源割り当てテーブルでは、優先度P11を有するjobNに対して、時刻17を実行開始時刻とする“3×2”の空き計算資源が割り当てられ、jobMに対して、空き計算資源が割り当てられていない。したがって、jobNが、より高い優先度を有するjobMの実行開始を妨げている。
これに対して、資源探索時間範囲T1を短くすれば、1回の探索処理の時間を短縮することができ、優先度の低いジョブが優先度の高いジョブの実行開始を妨げる可能性が低くなる。
図5は、短い資源探索時間範囲が設定された計算資源割り当てテーブルの例を示している。図5の計算資源割り当てテーブルでは、現在時刻0から時刻8までの資源探索時間範囲T2が設定されており、資源探索時間範囲T2は8時間である。この場合、jobJ、jobL、及びjobPに対して空き計算資源が割り当てられ、他のジョブは計算資源割り当て不可ジョブとして記録される。
しかし、短い資源探索時間範囲T2を用いた場合、投入されたジョブに対してバックフィル可能な空き計算資源が見つかる確率は低くなる。例えば、図4の計算資源割り当てテーブルでは、jobH、jobK、及びjobNに対して、バックフィル可能な空き計算資源が割り当てられているが、図5の計算資源割り当てテーブルでは、これらのジョブに対して空き計算資源が割り当てられていない。
このように、資源探索時間範囲が短過ぎる場合、1回の探索処理の時間は短くなるが、空き計算資源が見つからない確率が高くなるため、結果的には、無駄な処理時間が長くなる可能性がある。
また、長い使用時間を要求するジョブに対して、バックフィル可能な空き計算資源が見つからなくなる可能性が高くなる。例えば、図5のjobFが要求する使用時間は11時間であり、資源探索時間範囲T2よりも長いため、資源探索時間範囲T2内でバックフィル可能な空き計算資源は見つからない。
さらに、優先度の高い実行待ちジョブが計算資源割り当て不可ジョブとして記録される確率が高くなり、そのジョブがいつまでも実行されない状況(いわゆるスタベーション問題)が発生する可能性が高くなる。例えば、図5の計算資源割り当てテーブルでは、最も高い優先度P1を有するjobDが計算資源割り当て不可ジョブとして記録されており、いつまでも実行されない状況が発生する。
図6は、実施形態の並列処理装置の機能的構成例を示している。図6の並列処理装置601は、計算ノード611-1~計算ノード611-N(Nは2以上の整数)及びジョブ管理装置612を含む。ジョブ管理装置612は、決定部621及び探索部622を含み、計算ノード611-1~計算ノード611-Nの計算資源をジョブに割り当てる。
図7は、図6のジョブ管理装置612が行うジョブ管理処理の例を示すフローチャートである。まず、決定部621は、実行中ジョブと実行待ちジョブとを含む複数のジョブそれぞれの予定実行時間に基づいて、資源探索時間範囲を決定する(ステップ701)。
次に、探索部622は、資源探索時間範囲内において、計算ノード611-1~計算ノード611-Nの計算資源の中から、処理対象の実行待ちジョブに対して割り当てる空き計算資源を、バックフィルスケジューリングにより探索する(ステップ702)。
図6の並列処理装置601によれば、並列処理装置において、バックフィルスケジューリングを適用したジョブスケジューリングを効率化することができる。
図8は、図6の並列処理装置601の具体例である並列計算機システム801の構成例を示している。図8の並列計算機システム801は、計算ノード811-1~計算ノード811-N及びジョブ管理装置812を含み、各計算ノード811-i(i=1~N)はジョブ管理装置812に接続されている。計算ノード811-1~計算ノード811-Nのネットワークトポロジは、Fat Tree、メッシュ、又はトーラス等であってもよい。
計算ノード811-i及びジョブ管理装置812は、図6の計算ノード611-i及びジョブ管理装置612にそれぞれ対応する。
図9は、図8のジョブ管理装置812の機能的構成例を示している。図9のジョブ管理装置812は、決定部901、探索部902、及び記憶部903を含む。決定部901及び探索部902は、図6の決定部621及び探索部622にそれぞれ対応し、ジョブスケジューラとして動作する。記憶部903は、ジョブ情報テーブル911、資源探索時間範囲912、バックフィル許可時間範囲913、フラグ914、及び計算資源割り当てテーブル915を記憶する。
ジョブ情報テーブル911は、各ジョブの情報を保持する。資源探索時間範囲912は、空き計算資源を探索する時間範囲を表し、sc_start及びsc_endをパラメータとして含む。sc_startは、資源探索時間範囲912の開始時刻を表し、sc_endは、資源探索時間範囲912の終了時刻を表す。sc_start及びsc_endは、動的に変更される。
資源探索時間範囲912は、並列計算機システム801に投入されている実行中ジョブ及び実行待ちジョブを含む、複数のジョブそれぞれの予定実行時間に基づいて決定される。例えば、ジョブの予定実行時間としては、そのジョブが要求する計算ノードの使用時間が用いられる。
バックフィル許可時間範囲913は、バックフィル可能な時間範囲を表し、bf_start及びbf_endをパラメータとして含む。bf_startは、バックフィル許可時間範囲913の開始時刻を表し、bf_endは、バックフィル許可時間範囲913の終了時刻を表す。bf_start及びbf_endは、動的に変更される。
フラグ914は、ON又はOFFの値を有し、バックフィル許可時間範囲913を適用するか否かを示す。ONは、バックフィル許可時間範囲913を適用することを示し、OFFは、バックフィル許可時間範囲913を適用しないことを示す。フラグ914の値は、動的に切り替えられる。
計算資源割り当てテーブル915は、各ジョブに対する計算資源の割り当て状況を保持する。
図10は、ジョブ情報テーブル911の例を示している。図10のジョブ情報テーブル911は、ジョブID、ジョブ名、計算ノードの個数、使用時間、優先度、及びジョブ状態を含む。
ジョブIDは、ジョブの識別情報であり、ジョブ名は、ジョブの名称である。計算ノードの個数は、ジョブが要求する計算ノードの個数を表し、使用時間は、ジョブが要求する計算ノードの使用時間を表す。使用時間の単位は、時間(H)である。
優先度は、ジョブの優先度を表し、ジョブ状態は、ジョブが実行中ジョブ又は実行待ちジョブのいずれであるかを表す。jobA~jobCは実行中ジョブであり、jobD~jobRは実行待ちジョブである。
例えば、実行中ジョブであるjobAは、“2×7”の計算資源を要求しており、優先度P1を有する実行待ちジョブであるjobDは、“7×5”の計算資源を要求している。
決定部901及び探索部902は、記憶部903が記憶する情報を用いて、バックフィルスケジューリングを適用したジョブスケジューリングを行う。ジョブスケジューリングの開始時に、決定部901は、資源探索時間範囲912及びバックフィル許可時間範囲913を決定し、フラグ914をOFFに設定する。
フラグ914がOFFである場合、探索部902は、資源探索時間範囲912内において、計算ノード811-1~計算ノード811-Nの計算資源の中から、処理対象の実行待ちジョブに対して割り当てる空き計算資源を探索する。
空き計算資源が見つかった場合、探索部902は、見つかった空き計算資源を処理対象の実行待ちジョブに対して割り当て、空き計算資源の割り当て結果を、計算資源割り当てテーブル915に記録する。
一方、空き計算資源が見つからない場合、探索部902は、処理対象の実行待ちジョブを、計算資源割り当て不可ジョブとして計算資源割り当てテーブル915に記録し、フラグ914をONに設定する。
フラグ914がONに設定された場合、探索部902は、資源探索時間範囲912の代わりに、バックフィル許可時間範囲913内において、次の実行待ちジョブに対して割り当てる空き計算資源を探索する。
決定部901は、1回の探索処理の時間が比較的短く、かつ、探索処理が結果的に無駄になる確率が比較的低くなるように、資源探索時間範囲912及びバックフィル許可時間範囲913を決定する。例えば、以下のような決定方法により、資源探索時間範囲912及びバックフィル許可時間範囲913が決定される。
(1)資源探索時間範囲912の決定方法
決定部901は、sc_startとして、ジョブスケジューリングの開始時刻である現在時刻を設定する。そして、決定部901は、現在時刻における実行中ジョブ及び実行待ちジョブが要求する使用時間の最大値を、sc_startに加算することで、sc_endを決定する。この場合、sc_startに使用時間の最大値を加算して得られる時刻よりも所定値だけ遅い時刻が、sc_endとして設定される。
sc_endとして設定される時刻は、計算資源割り当てテーブル915において単位時間毎に区切られた時刻のうち、sc_startと使用時間の最大値とを加算して得られる時刻の直後の時刻であってもよい。例えば、単位時間が1時間であり、加算結果が時刻10.5を示している場合、時刻11がsc_endとして設定され、加算結果が時刻11を示している場合、時刻12がsc_endとして設定される。
このような決定方法によれば、資源探索時間範囲912が長くなり過ぎないため、1回の探索処理の時間が長くなり過ぎる可能性が低くなる。
また、資源探索時間範囲912が短くなり過ぎないため、バックフィル可能な空き計算資源が見つかる確率が高くなり、結果的に無駄な処理時間が長くなる可能性が低くなる。資源探索時間範囲912が短くなり過ぎないため、図5のjobFのように、長い使用時間を要求するジョブに対しても、バックフィル可能な空き計算資源が見つかる可能性が高くなる。
また、資源探索時間範囲912が短くなり過ぎないため、図5のjobDのように、優先度の高い実行待ちジョブが計算資源割り当て不可ジョブとして記録される確率が低くなり、スタベーション問題が発生する可能性が低くなる。
(2)バックフィル許可時間範囲913の決定方法
決定部901は、bf_startとして、sc_startと同じ時刻を設定し、bf_endとして、現在時刻における1つ以上の実行中ジョブがすべて終了する時刻以降の時刻を設定する。
bf_endとして設定される時刻は、計算資源割り当てテーブル915において単位時間毎に区切られた時刻のうち、すべての実行中ジョブが終了する時刻以降の時刻であってもよい。例えば、単位時間が1時間であり、時刻9においてすべての実行中ジョブが終了する場合、時刻9がbf_endとして設定され、時刻9.5においてすべての実行中ジョブが終了する場合、時刻10がbf_endとして設定される。
バックフィル許可時間範囲913を用いて探索処理を行うことで、計算資源割り当て不可ジョブが発生した場合であっても、バックフィルによって遅い時刻の空き計算資源が割り当てられる確率が低くなる。したがって、優先度の低いジョブが優先度の高いジョブの実行開始を妨げる可能性が低くなる。
また、資源探索時間範囲912が長い場合であっても、バックフィル許可時間範囲913内で空き計算資源を探索することで、1回の探索処理の時間が長くなり過ぎる可能性が低くなる。
このように、資源探索時間範囲912及びバックフィル許可時間範囲913を用いてジョブスケジューリングを行うことで、大規模並列計算機システムにおいて大量のジョブが投入される場合であっても、ジョブスケジューリングを高速化することができる。これにより、ジョブが開始されるまでの時間を短縮するとともに、並列計算機システムの稼働率を向上させることが可能になる。
なお、バックフィル許可時間範囲913は必ずしも使用する必要はなく、資源探索時間範囲912のみを用いてジョブスケジューリングを行ってもよい。
図11は、計算ノード811-1~計算ノード811-Nのネットワークトポロジが1次元トーラスである場合の計算資源割り当てテーブル915の例を示している。縦軸は計算ノードを表し、横軸は時刻(単位は時間)を表す。計算ノードの総数は8個である。
図11の計算資源割り当てテーブル915には、図10に示したjobA~jobRが記録されている。このうち、実行中ジョブであるjobA~jobCの実行開始時刻は、現在時刻0である。資源探索時間範囲T11は、資源探索時間範囲912に対応し、バックフィル許可時間範囲T12は、バックフィル許可時間範囲913に対応する。
図12は、ジョブ管理装置812が行うジョブスケジューリングの例を示すフローチャートである。まず、決定部901は、資源探索時間範囲912及びバックフィル許可時間範囲913を決定し、フラグ914をOFFに設定する(ステップ1201)。
このとき、決定部901は、sc_start及びbf_startに現在時刻0を設定し、sc_endにmaxtime1を設定し、bf_endにmaxtime2を設定する。そして、決定部901は、フラグ914に対応するbf_flagにOFFを設定する。
maxtime1は、計算資源割り当てテーブル915において単位時間毎に区切られた時刻のうち、ジョブが要求する使用時間の最大値を現在時刻0に加算して得られる時刻の直後の時刻である。maxtime2は、計算資源割り当てテーブル915において単位時間毎に区切られた時刻のうち、実行中ジョブの残り使用時間の最大値を現在時刻0に加算して得られる時刻以降の時刻である。
実行中ジョブの残り使用時間としては、そのジョブが要求する計算ノードの使用時間から、現在時刻0において既に経過している実行時間を差し引いた、残りの使用時間が用いられる。したがって、実行中ジョブの残り使用時間の最大値を現在時刻0に加算して得られる時刻は、実行中ジョブがすべて終了する時刻を表す。
例えば、図10のジョブ情報テーブル911では、jobA~jobRが要求する使用時間の最大値は、jobF及びjobOの使用時間の11時間である。そこで、現在時刻0に11時間を加算して得られる時刻11よりも1時間だけ遅い時刻12が、sc_endに設定される。したがって、資源探索時間範囲T11は、現在時刻0から時刻12までの時間範囲であり、その長さは12時間である。
また、実行中ジョブであるjobA~jobCの残り使用時間は、それらのジョブが要求する使用時間と一致し、残り使用時間の最大値は、jobBの残り使用時間の9時間である。そこで、現在時刻0に9時間を加算して得られる時刻9が、bf_endに設定される。したがって、バックフィル許可時間範囲T12は、現在時刻0から時刻9までの時間範囲であり、その長さは9時間である。
次に、探索部902は、計算資源割り当てテーブル915をクリアして(ステップ1202)、実行中ジョブの割り当て状況を計算資源割り当てテーブル915に設定する(ステップ1203)。
これにより、図11に示すように、jobAが要求する“2×7”の計算資源、jobBが要求する“1×9”の計算資源、及びjobCが要求する“1×4”の計算資源が、計算資源割り当てテーブル915に記録される。
次に、探索部902は、実行待ちジョブを優先度順にソートし(ステップ1204)、ソート結果の中から最も高い優先度を有する先頭の実行待ちジョブを抽出して、JOBに設定する(ステップ1205)。
次に、探索部902は、JOBが示す実行待ちジョブを処理対象として、資源選択処理を行い(ステップ1206)、ソート結果から抽出されていない残りの実行待ちジョブの個数(残りジョブ数)をチェックする(ステップ1207)。
探索部902は、残りジョブ数が0でない場合(ステップ1207,YES)、ステップ1205以降の処理を繰り返し、残りジョブ数が0である場合(ステップ1207,NO)、処理を終了する。
図13は、図12のステップ1206における資源選択処理の例を示すフローチャートである。まず、探索部902は、bf_flagの値をチェックする(ステップ1301)。探索部902は、bf_flagがONである場合(ステップ1301,YES)、第1探索処理を行い(ステップ1302)、bf_flagがOFFである場合(ステップ1301,NO)、第2探索処理を行う(ステップ1303)。その後、探索部902は、図12のステップ1207以降の処理を行う。
図14は、図13のステップ1302における第1探索処理の例を示すフローチャートである。第1探索処理では、バックフィル許可時間範囲T12内において、JOBが示す実行待ちジョブが要求する空き計算資源が探索される。
まず、探索部902は、JOBが示す実行待ちジョブが要求する計算ノードの個数をNODEに設定し、その実行待ちジョブが要求する使用時間をELAPSEに設定し、ELAPSEの値をetimeに設定する(ステップ1401)。そして、探索部902は、etimeをbf_endと比較する(ステップ1402)。
etimeがbf_end以下である場合(ステップ1402,NO)、探索部902は、計算資源割り当てテーブル915の先頭位置を実行開始時刻とする、“NODE×ELAPSE”の空き計算資源が存在するか否かをチェックする(ステップ1403)。計算資源割り当てテーブル915の先頭位置は、現在時刻0に対応する。
“NODE×ELAPSE”の空き計算資源が存在する場合(ステップ1403,YES)、探索部902は、先頭位置から計算機資源割り当てを行う(ステップ1404)。これにより、JOBが示す実行待ちジョブに対する空き計算資源の割り当て結果が、計算資源割り当てテーブル915に記録される。その後、探索部902は、図12のステップ1207以降の処理を行う。
etimeがbf_endよりも大きい場合(ステップ1402,YES)、又は“NODE×ELAPSE”の空き計算資源が存在しない場合(ステップ1403,NO)、探索部902は、図12のステップ1207以降の処理を行う。この場合、探索部902は、JOBが示す実行待ちジョブを、計算資源割り当て不可ジョブとして計算資源割り当てテーブル915に記録する。
図14の第1探索処理によれば、バックフィルによって割り当てられる計算資源の実行開始時刻が、計算資源割り当てテーブル915の先頭位置である現在時刻0に限定される。したがって、実行待ちジョブの実行開始時刻が現在時刻0よりも遅くなることがなく、優先度の低いジョブが優先度の高いジョブの実行開始を妨げる可能性がより低くなる。
図15は、図13のステップ1303における第2探索処理の例を示すフローチャートである。第2探索処理では、資源探索時間範囲T11内において、JOBが示す実行待ちジョブが要求する空き計算資源が探索される。
まず、探索部902は、JOBが示す実行待ちジョブが要求する計算ノードの個数をNODEに設定し、その実行待ちジョブが要求する使用時間をELAPSEに設定し、sc_startの値をstimeに設定する(ステップ1501)。そして、探索部902は、stimeをsc_endと比較する(ステップ1502)。
stimeがsc_end未満である場合(ステップ1502,NO)、探索部902は、計算資源割り当てテーブル915のstimeを実行開始時刻とする、“NODE×ELAPSE”の空き計算資源が存在するか否かをチェックする(ステップ1503)。
“NODE×ELAPSE”の空き計算資源が存在する場合(ステップ1503,YES)、探索部902は、stimeから計算機資源割り当てを行う(ステップ1504)。これにより、JOBが示す実行待ちジョブに対する空き計算資源の割り当て結果が、計算資源割り当てテーブル915に記録される。その後、探索部902は、図12のステップ1207以降の処理を行う。
一方、“NODE×ELAPSE”の空き計算資源が存在しない場合(ステップ1503,NO)、探索部902は、stimeを単位時間だけインクリメントして(ステップ1505)、ステップ1502以降の処理を繰り返す。
stimeがsc_end以上である場合(ステップ1502,YES)、探索部902は、bf_flagにONを設定して(ステップ1506)、図12のステップ1207以降の処理を行う。この場合、探索部902は、JOBが示す実行待ちジョブを、計算資源割り当て不可ジョブとして計算資源割り当てテーブル915に記録する。
このように、資源探索時間範囲T11内において、JOBが示す実行待ちジョブに対して割り当てる空き計算資源が存在しない場合、bf_flagにONが設定される。したがって、bf_flag=ONは、計算資源割り当て不可ジョブが発生していることを示し、bf_flag=OFFは、計算資源割り当て不可ジョブが発生していないことを示す。計算資源割り当て不可ジョブが発生している場合、資源探索時間範囲T11内のどの時刻から計算資源を割り当てる処理も、バックフィルに該当する。
bf_flagをOFFからONに変更することで、次回以降に抽出される実行待ちジョブに対して図14の第1探索処理を適用し、バックフィル許可時間範囲T12を用いたバックフィルスケジューリングを行うことが可能になる。
例えば、図10のジョブ情報テーブル911では、実行待ちジョブであるjobD~jobRが優先度順にソートされており、最初に、最も高い優先度P1を有するjobDがJOBに設定される。このとき、bf_flagがOFFであるため、jobDを処理対象として、図15の第2探索処理が行われる。jobDが要求する計算資源は“7×5”であるため、資源探索時間範囲T11内で現在時刻0から未来へ向かって、連続する7個の計算ノードが連続して5時間空いている空き計算資源が探索される。
しかし、バックフィル可能な“7×5”の空き計算資源が見つからないため、実行中ジョブがすべて終了する時刻9を実行開始時刻とする、“7×5”の空き計算資源が、jobDに対して割り当てられる。この場合、jobDの実行終了時刻が時刻14になり、資源探索時間範囲T11を超えてしまうが、bf_flagがOFFであり、計算資源割り当て不可ジョブが発生していないため、この空き計算資源の割り当てが許容される。
次に、優先度P2を有するjobEを処理対象として、図15の第2探索処理が行われる。jobEが要求する計算資源は“3×6”であるため、資源探索時間範囲T11内で現在時刻0から未来へ向かって、連続する3個の計算ノードが連続して6時間空いている空き計算資源が探索される。
しかし、資源探索時間範囲T11内で“3×6”の空き計算資源が見つからないため、時刻12以降の時間範囲における資源探索は行われず、jobEは、計算資源割り当て不可ジョブとして記録される。これにより、最初の計算資源割り当て不可ジョブが発生したため、bf_flagにONが設定される。
次に、優先度P3を有するjobFがJOBに設定される。このとき、bf_flagがONであるため、jobFを処理対象として、図14の第1探索処理が行われる。しかし、jobFが要求する使用時間は11時間であり、バックフィル許可時間範囲T12の長さは9時間であるため、etime>bf_endとなる。このため、jobFに対する計算資源割り当ては行われず、jobFは、計算資源割り当て不可ジョブとして記録される。
次に、優先度P4を有するjobG~優先度P7を有するjobJを順番に処理対象として、図14の第1探索処理が行われるが、空き計算資源が見つからないため、jobG~jobJは、計算資源割り当て不可ジョブとして記録される。
次に、優先度P8を有するjobKを処理対象として、図14の第1探索処理が行われる。jobKが要求する計算資源は“1×9”であるため、バックフィル許可時間範囲T12内で、1個の計算ノードが現在時刻0から連続して5時間空いている空き計算資源が探索される。そして、バックフィルにより、現在時刻0を実行開始時刻とする“1×9”の空き計算資源が、jobKに対して割り当てられる。
次に、優先度P9を有するjobL~優先度P15を有するjobRを順番に処理対象として、図14の第1探索処理が行われ、空き計算資源が見つかれば、バックフィルによる計算資源割り当てが行われる。一方、空き計算資源が見つからなければ、処理対象のジョブが、計算資源割り当て不可ジョブとして記録される。
これにより、jobL、jobP、及びjobQに対して、現在時刻0を実行開始時刻とする空き計算資源が割り当てられ、jobM、jobN、jobO、及びjobRは、計算資源割り当て不可ジョブとして記録される。最終的に、図11の計算資源割り当てテーブル915が示すような計算資源割り当てが行われる。
図11の計算資源割り当てテーブル915では、現在時刻0において、jobK、jobL、jobP、及びjobQに対して、バックフィルによる計算資源割り当てが行われており、ジョブの実行が直ちに開始される。このため、現在時刻0において実行中ジョブが使用している計算ノードの個数は8個になり、並列計算機システムの稼働率は100%になる。したがって、図3~図5の割り当て結果よりも稼働率が向上する。
図6の並列処理装置601及び図8の並列計算機システム801の構成は一例に過ぎず、並列処理装置601又は並列計算機システム801の用途又は条件に応じて一部の構成要素を省略又は変更してもよい。
図6のジョブ管理装置612及び図8のジョブ管理装置812の構成は一例に過ぎず、並列処理装置601又は並列計算機システム801の用途又は条件に応じて一部の構成要素を省略又は変更してもよい。
図7及び図12~図15のフローチャートは一例に過ぎず、ジョブ管理装置の構成又は条件に応じて一部の処理を省略又は変更してもよい。例えば、図12のジョブスケジューリングにおいてバックフィル許可時間範囲913を使用しない場合は、図13のステップ1301及びステップ1302の処理、図14の第1探索処理、及び図15のステップ1506の処理を省略することができる。
図1に示したジョブスケジューリングは一例に過ぎず、ジョブスケジューリングは、投入されるジョブに応じて変化する。図2~図5及び図11に示した計算資源割り当てテーブルは一例に過ぎず、計算資源割り当てテーブルは、投入されるジョブとジョブスケジューリングのアルゴリズムに応じて変化する。図10に示したジョブ情報テーブルは一例に過ぎず、ジョブ情報テーブルは、投入されるジョブに応じて変化する。
図16は、図6の計算ノード611-i及び図8の計算ノード811-iとして用いられる情報処理装置(コンピュータ)の構成例を示している。図16の情報処理装置は、CPU1601、メモリ1602、及びインタフェース1603を含む。これらの構成要素はバス1604により互いに接続されている。
メモリ1602は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)等の半導体メモリであり、投入されたジョブのプログラムとジョブの実行に用いられるデータとを記憶する。CPU1601(プロセッサ)は、メモリ1602を利用してプログラムを実行することにより、ジョブを実行する。情報処理装置は、複数のCPUを含んでいてもよい。
インタフェース1603は、並列処理装置601又は並列計算機システム801内のネットワークに接続され、他の計算ノードと通信する通信インタフェース回路である。
図17は、図6のジョブ管理装置612及び図8のジョブ管理装置812として用いられる情報処理装置(コンピュータ)の構成例を示している。図17の情報処理装置は、CPU1701、メモリ1702、入力装置1703、出力装置1704、補助記憶装置1705、媒体駆動装置1706、インタフェース1707、及びインタフェース1708を含む。これらの構成要素はバス1709により互いに接続されている。
メモリ1702は、例えば、ROM、RAM等の半導体メモリであり、処理に用いられるプログラム及びデータを記憶する。メモリ1702は、図9の記憶部903として用いることができる。
CPU1701(プロセッサ)は、例えば、メモリ1702を利用してプログラムを実行することにより、図6の決定部621及び探索部622として動作する。CPU1701は、メモリ1702を利用してプログラムを実行することにより、図9の決定部901及び探索部902としても動作する。
入力装置1703は、例えば、キーボード、ポインティングデバイス等であり、オペレータ又はユーザからの指示又は情報の入力に用いられる。出力装置1704は、例えば、表示装置、プリンタ、スピーカ等であり、オペレータ又はユーザへの問い合わせ又は指示、及び処理結果の出力に用いられる。処理結果は、計算資源割り当てテーブル915が示す割り当て結果であってもよく、ジョブの実行結果であってもよい。
補助記憶装置1705は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置、テープ装置等である。補助記憶装置1705は、ハードディスクドライブ又はフラッシュメモリであってもよい。情報処理装置は、補助記憶装置1705にプログラム及びデータを格納しておき、それらをメモリ1702にロードして使用することができる。補助記憶装置1705は、図9の記憶部903として用いることができる。
媒体駆動装置1706は、可搬型記録媒体1710を駆動し、その記録内容にアクセスする。可搬型記録媒体1710は、メモリデバイス、フレキシブルディスク、光ディスク、光磁気ディスク等である。可搬型記録媒体1710は、CD-ROM(Compact Disk Read Only Memory)、DVD(Digital Versatile Disk)、USB(Universal Serial Bus)メモリ等であってもよい。オペレータ又はユーザは、この可搬型記録媒体1710にプログラム及びデータを格納しておき、それらをメモリ1702にロードして使用することができる。
このように、処理に用いられるプログラム及びデータを格納するコンピュータ読み取り可能な記録媒体は、メモリ1702、補助記憶装置1705、又は可搬型記録媒体1710のような、物理的な(非一時的な)記録媒体である。
インタフェース1707は、並列処理装置601又は並列計算機システム801内のネットワークに接続され、計算ノード611-i又は計算ノード811-iと通信する通信インタフェース回路である。
インタフェース1708は、LAN(Local Area Network)、WAN(Wide Area Network)等の通信ネットワークに接続され、外部の装置と通信する通信インタフェース回路である。情報処理装置は、プログラム及びデータを外部の装置からインタフェース1708を介して受信し、それらをメモリ1702にロードして使用することができる。
なお、情報処理装置が図17のすべての構成要素を含む必要はなく、用途又は条件に応じて一部の構成要素を省略することも可能である。例えば、オペレータ又はユーザとのインタフェースが不要な場合は、入力装置1703及び出力装置1704を省略してもよい。可搬型記録媒体1710又は外部の通信ネットワークを使用しない場合は、媒体駆動装置1706又はインタフェース1708を省略してもよい。
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
図4乃至図17を参照しながら説明した実施形態に関し、さらに以下の付記を開示する。
(付記1)
複数の計算ノードと、
前記複数の計算ノードの計算資源をジョブに割り当てるジョブ管理装置とを備え、
前記ジョブ管理装置は、
実行中ジョブと実行待ちジョブとを含む複数のジョブそれぞれの予定実行時間に基づいて、資源探索時間範囲を決定する決定部と、
前記資源探索時間範囲内において、前記複数の計算ノードの計算資源の中から、前記複数のジョブのうち処理対象の実行待ちジョブに対して割り当てる空き計算資源を、バックフィルスケジューリングにより探索する探索部とを含むことを特徴とする並列処理装置。
(付記2)
前記決定部は、前記複数のジョブそれぞれの予定実行時間の最大値を、前記資源探索時間範囲の開始時刻に加算することで、前記資源探索時間範囲を決定することを特徴とする付記1記載の並列処理装置。
(付記3)
前記ジョブ管理装置は、フラグを記憶する記憶部をさらに含み、
前記フラグは、前記資源探索時間範囲の開始時刻から1つ以上の実行中ジョブがすべて終了する時刻までのバックフィル許可時間範囲を適用するか否かを示し、
前記探索部は、前記フラグが前記バックフィル許可時間範囲を適用しないことを示す値である場合、前記資源探索時間範囲内において、前記処理対象の実行待ちジョブに対して割り当てる空き計算資源を探索し、前記フラグが前記バックフィル許可時間範囲を適用することを示す値である場合、前記バックフィル許可時間範囲内において、前記処理対象の実行待ちジョブに対して割り当てる空き計算資源を探索することを特徴とする付記1又は2記載の並列処理装置。
(付記4)
前記探索部は、前記資源探索時間範囲内において、前記処理対象の実行待ちジョブよりも前に選択した実行待ちジョブに対して割り当てる空き計算資源が存在しない場合、前記フラグを、前記バックフィル許可時間範囲を適用することを示す値に設定することを特徴とする付記3記載の並列処理装置。
(付記5)
前記探索部は、前記フラグが前記バックフィル許可時間範囲を適用することを示す値である場合、前記バックフィル許可時間範囲内において、前記資源探索時間範囲の開始時刻を実行開始時刻とする空き計算資源を、前記処理対象の実行待ちジョブに対して割り当てることを特徴とする付記3又は4記載の並列処理装置。
(付記6)
複数の計算ノードの計算資源をジョブに割り当てる際に、実行中ジョブと実行待ちジョブとを含む複数のジョブそれぞれの予定実行時間に基づいて、資源探索時間範囲を決定し、
前記資源探索時間範囲内において、前記複数の計算ノードの計算資源の中から、前記複数のジョブのうち処理対象の実行待ちジョブに対して割り当てる空き計算資源を、バックフィルスケジューリングにより探索する、
処理をコンピュータに実行させるためのジョブ管理プログラム。
(付記7)
前記コンピュータは、前記複数のジョブそれぞれの予定実行時間の最大値を、前記資源探索時間範囲の開始時刻に加算することで、前記資源探索時間範囲を決定することを特徴とする付記6記載のジョブ管理プログラム。
(付記8)
前記コンピュータは、
前記資源探索時間範囲の開始時刻から1つ以上の実行中ジョブがすべて終了する時刻までのバックフィル許可時間範囲を適用するか否かを示すフラグを記憶し、
前記フラグが前記バックフィル許可時間範囲を適用しないことを示す値である場合、前記資源探索時間範囲内において、前記処理対象の実行待ちジョブに対して割り当てる空き計算資源を探索し、
前記フラグが前記バックフィル許可時間範囲を適用することを示す値である場合、前記バックフィル許可時間範囲内において、前記処理対象の実行待ちジョブに対して割り当てる空き計算資源を探索する、
ことを特徴とする付記6又は7記載のジョブ管理プログラム。
(付記9)
前記コンピュータは、前記資源探索時間範囲内において、前記処理対象の実行待ちジョブよりも前に選択した実行待ちジョブに対して割り当てる空き計算資源が存在しない場合、前記フラグを、前記バックフィル許可時間範囲を適用することを示す値に設定することを特徴とする付記8記載のジョブ管理プログラム。
(付記10)
前記コンピュータは、前記フラグが前記バックフィル許可時間範囲を適用することを示す値である場合、前記バックフィル許可時間範囲内において、前記資源探索時間範囲の開始時刻を実行開始時刻とする空き計算資源を、前記処理対象の実行待ちジョブに対して割り当てることを特徴とする付記8又は9記載のジョブ管理プログラム。
(付記11)
コンピュータによって実行されるジョブ管理方法であって、
前記コンピュータが、
複数の計算ノードの計算資源をジョブに割り当てる際に、実行中ジョブと実行待ちジョブとを含む複数のジョブそれぞれの予定実行時間に基づいて、資源探索時間範囲を決定し、
前記資源探索時間範囲内において、前記複数の計算ノードの計算資源の中から、前記複数のジョブのうち処理対象の実行待ちジョブに対して割り当てる空き計算資源を、バックフィルスケジューリングにより探索する、
ことを特徴とするジョブ管理方法。
(付記12)
前記コンピュータは、前記複数のジョブそれぞれの予定実行時間の最大値を、前記資源探索時間範囲の開始時刻に加算することで、前記資源探索時間範囲を決定することを特徴とする付記11記載のジョブ管理方法。
(付記13)
前記コンピュータは、
前記資源探索時間範囲の開始時刻から1つ以上の実行中ジョブがすべて終了する時刻までのバックフィル許可時間範囲を適用するか否かを示すフラグを記憶し、
前記フラグが前記バックフィル許可時間範囲を適用しないことを示す値である場合、前記資源探索時間範囲内において、前記処理対象の実行待ちジョブに対して割り当てる空き計算資源を探索し、
前記フラグが前記バックフィル許可時間範囲を適用することを示す値である場合、前記バックフィル許可時間範囲内において、前記処理対象の実行待ちジョブに対して割り当てる空き計算資源を探索する、
ことを特徴とする付記11又は12記載のジョブ管理方法。
(付記14)
前記コンピュータは、前記資源探索時間範囲内において、前記処理対象の実行待ちジョブよりも前に選択した実行待ちジョブに対して割り当てる空き計算資源が存在しない場合、前記フラグを、前記バックフィル許可時間範囲を適用することを示す値に設定することを特徴とする付記13記載のジョブ管理方法。
(付記15)
前記コンピュータは、前記フラグが前記バックフィル許可時間範囲を適用することを示す値である場合、前記バックフィル許可時間範囲内において、前記資源探索時間範囲の開始時刻を実行開始時刻とする空き計算資源を、前記処理対象の実行待ちジョブに対して割り当てることを特徴とする付記13又は14記載のジョブ管理方法。
101 ジョブスケジューラ
601 並列処理装置
611-1~611-N、811-1~811-N 計算ノード
612、812 ジョブ管理装置
621、901 決定部
622、902 探索部
801 並列計算機システム
812 ジョブ管理装置
903 記憶部
911 ジョブ情報テーブル
912 資源探索時間範囲
913 バックフィル許可時間範囲
914 フラグ
915 計算資源割り当てテーブル
1601、1701 CPU
1602、1702 メモリ
1603、1707、1708 インタフェース
1604、1709 バス
1703 入力装置
1704 出力装置
1705 補助記憶装置
1706 媒体駆動装置
1710 可搬型記録媒体

Claims (7)

  1. 複数の計算ノードと、
    前記複数の計算ノードの計算資源をジョブに割り当てるジョブ管理装置とを備え、
    前記ジョブ管理装置は、
    実行中ジョブと実行待ちジョブとを含む複数のジョブそれぞれの予定実行時間に基づいて、資源探索時間範囲を決定する決定部と、
    前記資源探索時間範囲内において、前記複数の計算ノードの計算資源の中から、前記複数のジョブのうち処理対象の実行待ちジョブに対して割り当てる空き計算資源を、バックフィルスケジューリングにより探索する探索部とを含むことを特徴とする並列処理装置。
  2. 前記決定部は、前記複数のジョブそれぞれの予定実行時間の最大値を、前記資源探索時間範囲の開始時刻に加算することで、前記資源探索時間範囲を決定することを特徴とする請求項1記載の並列処理装置。
  3. 前記ジョブ管理装置は、フラグを記憶する記憶部をさらに含み、
    前記フラグは、前記資源探索時間範囲の開始時刻から1つ以上の実行中ジョブがすべて終了する時刻までのバックフィル許可時間範囲を適用するか否かを示し、
    前記探索部は、前記フラグが前記バックフィル許可時間範囲を適用しないことを示す値である場合、前記資源探索時間範囲内において、前記処理対象の実行待ちジョブに対して割り当てる空き計算資源を探索し、前記フラグが前記バックフィル許可時間範囲を適用することを示す値である場合、前記バックフィル許可時間範囲内において、前記処理対象の実行待ちジョブに対して割り当てる空き計算資源を探索することを特徴とする請求項1又は2記載の並列処理装置。
  4. 前記探索部は、前記資源探索時間範囲内において、前記処理対象の実行待ちジョブよりも前に選択した実行待ちジョブに対して割り当てる空き計算資源が存在しない場合、前記フラグを、前記バックフィル許可時間範囲を適用することを示す値に設定することを特徴とする請求項3記載の並列処理装置。
  5. 前記探索部は、前記フラグが前記バックフィル許可時間範囲を適用することを示す値である場合、前記バックフィル許可時間範囲内において、前記資源探索時間範囲の開始時刻を実行開始時刻とする空き計算資源を、前記処理対象の実行待ちジョブに対して割り当てることを特徴とする請求項3又は4記載の並列処理装置。
  6. 複数の計算ノードの計算資源をジョブに割り当てる際に、実行中ジョブと実行待ちジョブとを含む複数のジョブそれぞれの予定実行時間に基づいて、資源探索時間範囲を決定し、
    前記資源探索時間範囲内において、前記複数の計算ノードの計算資源の中から、前記複数のジョブのうち処理対象の実行待ちジョブに対して割り当てる空き計算資源を、バックフィルスケジューリングにより探索する、
    処理をコンピュータに実行させるためのジョブ管理プログラム。
  7. コンピュータによって実行されるジョブ管理方法であって、
    前記コンピュータが、
    複数の計算ノードの計算資源をジョブに割り当てる際に、実行中ジョブと実行待ちジョブとを含む複数のジョブそれぞれの予定実行時間に基づいて、資源探索時間範囲を決定し、
    前記資源探索時間範囲内において、前記複数の計算ノードの計算資源の中から、前記複数のジョブのうち処理対象の実行待ちジョブに対して割り当てる空き計算資源を、バックフィルスケジューリングにより探索する、
    ことを特徴とするジョブ管理方法。
JP2019108523A 2019-06-11 2019-06-11 並列処理装置、ジョブ管理プログラム、及びジョブ管理方法 Active JP7238616B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2019108523A JP7238616B2 (ja) 2019-06-11 2019-06-11 並列処理装置、ジョブ管理プログラム、及びジョブ管理方法
EP20170673.6A EP3751417B1 (en) 2019-06-11 2020-04-21 Parallel processing apparatus, job management program, and job management method
US16/857,232 US11693668B2 (en) 2019-06-11 2020-04-24 Parallel processing apparatus, storage medium, and job management method
CN202010392041.5A CN112068949A (zh) 2019-06-11 2020-05-11 并行处理设备、存储介质以及作业管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019108523A JP7238616B2 (ja) 2019-06-11 2019-06-11 並列処理装置、ジョブ管理プログラム、及びジョブ管理方法

Publications (2)

Publication Number Publication Date
JP2020201741A JP2020201741A (ja) 2020-12-17
JP7238616B2 true JP7238616B2 (ja) 2023-03-14

Family

ID=70390908

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019108523A Active JP7238616B2 (ja) 2019-06-11 2019-06-11 並列処理装置、ジョブ管理プログラム、及びジョブ管理方法

Country Status (4)

Country Link
US (1) US11693668B2 (ja)
EP (1) EP3751417B1 (ja)
JP (1) JP7238616B2 (ja)
CN (1) CN112068949A (ja)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020194248A1 (en) 2001-05-01 2002-12-19 The Regents Of The University Of California Dedicated heterogeneous node scheduling including backfill scheduling
US20070143760A1 (en) 2005-12-15 2007-06-21 International Business Machines Corporation Scheduling of computer jobs employing dynamically determined top job party
JP2012173753A (ja) 2011-02-17 2012-09-10 Nec Corp ジョブスケジューリングシステム、ジョブスケジューリング方法及びプログラム
JP2015185003A (ja) 2014-03-25 2015-10-22 日本電気株式会社 スケジューラ装置及びそのスケジューリング方法、演算処理システム、並びにコンピュータ・プログラム
JP2015194923A (ja) 2014-03-31 2015-11-05 富士通株式会社 並列計算機システム,ジョブ管理装置の制御プログラム,及び並列計算機システムの制御方法
JP2017211751A (ja) 2016-05-24 2017-11-30 日本電信電話株式会社 リソース割り当て装置、リソース割り当て方法、及びリソース割り当てプログラム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9563470B2 (en) * 2013-12-23 2017-02-07 International Business Machines Corporation Backfill scheduling for embarrassingly parallel jobs
CN104317650B (zh) * 2014-10-10 2018-05-01 北京工业大学 一种面向Map/Reduce型海量数据处理平台的作业调度方法
US10768984B2 (en) * 2015-06-11 2020-09-08 Honeywell International Inc. Systems and methods for scheduling tasks using sliding time windows
US9983907B2 (en) * 2015-10-27 2018-05-29 International Business Machines Corporation Resource-aware backfill job scheduling
CN105718312B (zh) * 2016-01-20 2018-10-30 华南理工大学 面向生物基因测序计算任务的多队列回填作业调度方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020194248A1 (en) 2001-05-01 2002-12-19 The Regents Of The University Of California Dedicated heterogeneous node scheduling including backfill scheduling
US20070143760A1 (en) 2005-12-15 2007-06-21 International Business Machines Corporation Scheduling of computer jobs employing dynamically determined top job party
JP2012173753A (ja) 2011-02-17 2012-09-10 Nec Corp ジョブスケジューリングシステム、ジョブスケジューリング方法及びプログラム
JP2015185003A (ja) 2014-03-25 2015-10-22 日本電気株式会社 スケジューラ装置及びそのスケジューリング方法、演算処理システム、並びにコンピュータ・プログラム
JP2015194923A (ja) 2014-03-31 2015-11-05 富士通株式会社 並列計算機システム,ジョブ管理装置の制御プログラム,及び並列計算機システムの制御方法
JP2017211751A (ja) 2016-05-24 2017-11-30 日本電信電話株式会社 リソース割り当て装置、リソース割り当て方法、及びリソース割り当てプログラム

Also Published As

Publication number Publication date
US11693668B2 (en) 2023-07-04
EP3751417A1 (en) 2020-12-16
CN112068949A (zh) 2020-12-11
JP2020201741A (ja) 2020-12-17
US20200394045A1 (en) 2020-12-17
EP3751417B1 (en) 2023-03-29

Similar Documents

Publication Publication Date Title
KR101644800B1 (ko) 컴퓨팅 시스템 및 방법
JP4185103B2 (ja) 実行可能プログラムをスケジューリングするためのシステム及び方法
US20050081208A1 (en) Framework for pluggable schedulers
RU2538920C2 (ru) Способ распределения задач сервером вычислительной системы, машиночитаемый носитель информации и система для реализации способа
JP6364880B2 (ja) 並列計算機システム,ジョブ管理装置の制御プログラム,及び並列計算機システムの制御方法
US20110161637A1 (en) Apparatus and method for parallel processing
JPWO2017131187A1 (ja) アクセラレータ制御装置、アクセラレータ制御方法およびプログラム
JP6885193B2 (ja) 並列処理装置、ジョブ管理方法、およびジョブ管理プログラム
US20060101086A1 (en) Data sorting method and system
JPH05189281A (ja) 記憶装置のファイル割当て方式
JP2008065713A (ja) マルチプロセッサシステム及び割込み制御方法
US9740530B2 (en) Decreasing the priority of a user based on an allocation ratio
CN111625339A (zh) 集群资源调度方法、装置、介质和计算设备
CN113254179B (zh) 基于高响应比的作业调度方法、系统、终端、存储介质
JP2013182502A (ja) リソース配分システム、リソース配分方法、及びリソース配分プログラム
CN110750330A (zh) 一种虚拟机创建方法、系统、电子设备及存储介质
JP7238616B2 (ja) 並列処理装置、ジョブ管理プログラム、及びジョブ管理方法
US10394615B2 (en) Information processing apparatus and job management method
CN114489807A (zh) 在计算节点上分配对作业的处理
CN117234691A (zh) 任务调度方法及装置
CN111143063A (zh) 任务的资源预约方法及装置
JP2015148909A (ja) 並列計算機システム、並列計算機システムの制御方法及び管理ノードの制御プログラム
CN112395063B (zh) 一种动态多线程调度方法及系统
KR101558807B1 (ko) 호스트 프로세서와 협업 프로세서 간에 협업 처리를 위한 프로세서 스케줄링 방법 및 그 방법을 수행하는 호스트 프로세서
JP2924725B2 (ja) バッファ割り当て制御システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220308

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230123

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230131

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230213

R150 Certificate of patent or registration of utility model

Ref document number: 7238616

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150