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

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

Info

Publication number
JP2018026050A
JP2018026050A JP2016158758A JP2016158758A JP2018026050A JP 2018026050 A JP2018026050 A JP 2018026050A JP 2016158758 A JP2016158758 A JP 2016158758A JP 2016158758 A JP2016158758 A JP 2016158758A JP 2018026050 A JP2018026050 A JP 2018026050A
Authority
JP
Japan
Prior art keywords
job
nodes
time
calculation
submitted
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
JP2016158758A
Other languages
English (en)
Inventor
一繁 佐賀
Kazushige Saga
一繁 佐賀
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 JP2016158758A priority Critical patent/JP2018026050A/ja
Priority to US15/671,669 priority patent/US20180046505A1/en
Publication of JP2018026050A publication Critical patent/JP2018026050A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • 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/461Saving or restoring of program or task context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5019Workload prediction
    • 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

Abstract

【課題】ジョブの実行を迅速に開始可能にすること。
【解決手段】演算部1bは、ジョブの投入時に、投入時よりも前の実行済ジョブの情報、実行済ジョブの実行終了コード、投入対象ジョブとその他の投入済ジョブの情報、および、直前のイベントの発生時から投入時までの時間差に基づいて、イベントの発生後に投入されるジョブの投入までの時間と当該ジョブの所要ノード数とを機械学習機構N1により学習する。演算部1bは、イベントが発生すると、機械学習機構N1による学習結果を用いて、次のジョブの投入までの時間と次のジョブの所要ノード数とを予測し、予測に応じて計算ノード12,13,14,・・・それぞれの起動状態を制御する。
【選択図】図1

Description

本発明は並列処理装置、ジョブ管理プログラムおよびジョブ管理方法に関する。
複数の計算ノードを並列に用いて処理を実行する並列処理装置が利用されている。計算ノードは、情報処理を実行する処理単位である。計算ノードは、例えば、CPU(Central Processing Unit)やRAM(Random Access Memory)などを備える。並列処理装置は、多数の計算ノードを含み得る。このため、すべての計算ノードで処理(ジョブ)を実行中とは限らず、使用されていない計算ノードも存在する。そこで、使用されていない一部の計算ノードを電源オフまたはサスペンド状態として、省電力化を図ることが考えられている。
例えば、ニューラルネットワークと呼ばれる機械学習機能を用いて、電子装置の省電力化を図る提案がある。この提案では、ニューラルネットワークは、OS(Operating System)のカーネルにより実行される動作を認識するようにトレーニングされる。その後、例えば、オーディオ再生機能がSD(Secure Digital)カードに格納された歌のファイルについて実行されるとき、ニューラルネットワークはカーネルにより実行される命令パターンに基づいてこの機能の実行を認識する。そして、ニューラルネットワークは、オーディオ再生機能に使用されないWiFi(Wireless Fidelity,登録商標)やGfx(Graphics)サブシステムの電力を低減または切断させるコマンドを、電力管理システムに送る。
また、HPC(High Performance Computing)システムにおいて、エネルギー保存モードで実行されるときに性能を失わない(または、受け容れ可能な性能損失をもつ)ジョブを同定し、当該ジョブに対して性能を維持しつつ、エネルギーを節約する提案もある。
特開2011−210265号公報 特開2015−118705号公報
省電力化のために一部の計算ノードの電源切断やサスペンドを行うと、その副作用として、計算を行いたいタイミングなどに直ちに計算ノードを使用できなくなるという問題がある。計算機システムでは、ユーザが所望のタイミングでジョブを投入する運用が多い。このため、いつ、どのようなジョブが投入されるか不明なことが一般的である。そこで、例えば、ユーザがジョブを実行したいタイミングで計算ノードを電源オンする運用も考えられる。しかし、計算ノードの電源オン開始からジョブ受付可能状態になるまでには時間を要し、ジョブの実行開始が遅延してしまう。この問題は、ジョブスループットの低下や計算ノードの使用効率の低下の要因にもなる。
1つの側面では、本発明は、ジョブの実行を迅速に開始可能にすることを目的とする。
1つの態様では、並列処理装置が提供される。この並列処理装置は、複数のノードと演算部とを有する。複数のノードは、複数のジョブを実行する。演算部は、ジョブの投入時に、投入時よりも前の実行済ジョブの情報、実行済ジョブの実行終了コード、投入対象ジョブと投入済ジョブの情報、および、直前のイベントの発生時から投入時までの時間差に基づいて、当該イベントの発生後に投入されるジョブの投入までの時間と当該ジョブの所要ノード数とを機械学習機構により学習し、当該イベントが発生すると、機械学習機構による学習結果を用いて、次のジョブの投入までの時間と次のジョブの所要ノード数とを予測し、予測に応じて複数のノードそれぞれの起動状態を制御する。
1つの側面では、ジョブの実行を迅速に開始可能にする。
第1の実施の形態の並列処理装置を示す図である。 第2の実施の形態の計算システムの例を示す図である。 管理ノードのハードウェア例を示す図である。 ファイルサーバのハードウェア例を示す図である。 管理ノードの機能例を示す図である。 ニューラルネットワークの例を示す図である。 計算ノードの電源投入およびジョブ実行の例を示す図である。 管理ノードの処理例を示すフローチャートである。 学習の例を示すフローチャートである。 学習の例(続き)を示すフローチャートである。 計算ノード需要予測の例を示すフローチャートである。 再通電操作の例を示すフローチャートである。 計算ノードの起動例を示す図である。
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の並列処理装置を示す図である。並列処理装置10は、管理ノード11および計算ノード12,13,14,・・・を有する。また、並列処理装置10は、ネットワーク15を有する。管理ノード11および計算ノード12,13,14,・・・は、ネットワーク15に接続されている。ネットワーク15は、並列処理装置10の内部ネットワークである。管理ノード11は、計算ノード12,13,14,・・・に実行させるジョブを管理するノードである。計算ノード12,13,14,・・・は、ジョブを並列に実行する計算処理用のノードである。並列処理装置10は、計算ノード12,13,14,・・・の一部を用いて、1つのジョブを実行することもできるし、他の一部を用いて別のジョブを並行して実行することもできる。
ここで、計算ノード12,13,14,・・・は、全てが常時電源オンになっているわけではない。一部の計算ノードが電源オンであり、他の一部の計算ノードが電源オフであることもある。例えば、並列処理装置10は、前回のジョブ実行から所定時間ジョブ実行に用いられていない計算ノードを電源オフ(またはサスペンド)にし、省電力化を図る。
管理ノード11は、記憶部11aと演算部11bとを有する。記憶部11aは、RAMなどの揮発性の記憶装置でもよいし、フラッシュメモリなどの不揮発性の記憶装置でもよい。演算部11bは、例えば、プロセッサである。プロセッサは、CPUやDSP(Digital Signal Processor)であってもよく、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路を含んでもよい。プロセッサは、例えば、RAMに記憶されたプログラムを実行する。また、「プロセッサ」は、2以上のプロセッサの集合(マルチプロセッサ)であってもよい。また、計算ノード12,13,14,・・・も、管理ノード11と同様に、記憶部(例えば、RAM)や演算部(例えば、CPUなどのプロセッサ)を備えている。管理ノード11や計算ノード12,13,14,・・・それぞれは、「コンピュータ」と呼ばれてもよい。
記憶部11aは、演算部11bによる制御に用いられる情報を記憶する。記憶部11aは、並列処理装置10におけるイベントログを記憶する。イベントログは、ユーザのログイン履歴およびジョブ履歴を含む。ログイン履歴は、ユーザの識別情報およびログインした時刻およびログアウトした時刻の情報を含む。ジョブ履歴は、ジョブの識別情報、ジョブの実行を依頼したユーザ、ジョブの投入/実行開始/実行完了などのログ種別、ジョブの投入/実行開始/実行完了の時刻、および、ジョブの実行終了コードなどの情報を含む。ジョブの識別情報は、ジョブとして実行される目的プログラムのハッシュ値でもよい。また、記憶部11aは、演算部11bによるジョブの実行状況の学習データや、演算部11bによる計算ノードの起動スケジュールなどを記憶する。
演算部11bは、ジョブの実行状況の学習、学習結果による計算ノードの需要予測、および、需要予測に応じた各計算ノードの起動状態の制御を行う。ここで、演算部11bは、機械学習機構を用いてジョブの実行状況を学習する。演算部11bは、機械学習機構の一例として、ニューラルネットワークN1を用いてジョブの実行状況を学習する。ニューラルネットワークN1は、脳に存在する神経細胞(ニューロン)による信号伝達の仕組みを模した学習機能である。ニューラルネットワークは、ニューラルネットと呼ばれることもある。
演算部11bは、ニューラルネットワークN1に関する情報を記憶部11aに格納する。ニューラルネットワークN1は、入力層と隠れ層と出力層とを有する。入力層は、入力に対応する複数の要素が属する層である。隠れ層は、入力層と出力層との間の層であり、1または複数存在する。隠れ層には入力層からの入力データに対する所定の関数(後述の結合定数を含む)による演算結果が要素として属する(当該演算結果は出力層の入力となる)。出力層は、ニューラルネットワークN1の出力に対応する複数の要素が属する層である。
ニューラルネットワークN1による学習では、異なる層に属する要素間の結合定数を決定する。具体的には、演算部11bは、入力層の各要素と隠れ層の各要素との結合定数W11,W12,・・・,W1i、および、隠れ層の各要素と出力層の各要素との結合定数W21,W22,・・・,W2jを、教師付き学習により決定し、記憶部11aに格納する。ここで、iは、整数であり、入力層から隠れ層へ変換する関数に含まれる、入力層の各データ要素に対する結合定数の数である。jは、整数であり、隠れ層から出力層へ変換する関数に含まれる、隠れ層の各データ要素に対する結合定数の数である。
演算部11bは、計算ノード12,13,14,・・・(一部の計算ノードでもよい)に対するジョブの投入時に、当該投入時よりも前の実行済ジョブの情報、実行済ジョブの実行終了コード、および、投入対象ジョブとその他の投入済ジョブの情報を取得する。ここで、実行済ジョブの情報は、例えば、当該投入時から遡って所定数分の実行済ジョブの識別情報である。実行済ジョブの情報は、当該投入時から遡った所定期間内の実行済ジョブの識別情報でもよい。実行済ジョブの実行終了コードは、当該所定数分(または所定期間内)の実行済ジョブの終了コードである。その他の投入済ジョブの情報は、例えば、投入対象ジョブのジョブ投入時に投入済である他のジョブの識別情報である。投入対象ジョブの情報は、投入対象ジョブで利用される計算ノードの数である。実行済ジョブの情報、実行済ジョブの実行終了コード、その他の投入済ジョブの情報は、ユーザの仕事の手順に従ったジョブの投入順番(ジョブの種類とその依存関係)を認識するための情報となる。なお、実行済ジョブの実行終了コードは、ジョブの実行結果によって仕事の流れが変わり、投入するジョブが変ることを認識するための情報となる。また、当該ジョブの投入時に、演算部11bは、直前のイベントの発生時から当該投入時までの時間差を取得する。着目するイベントとしては、例えば、ユーザのログインやジョブの実行終了が考えられる。例えば、演算部11bは、記憶部11aに記憶されたイベントログを参照して、これらの情報を取得できる。また、演算部11bは、投入対象ジョブの投入指示を受け付けたときに、投入対象ジョブで利用する計算ノードの数の指示を受け付けることもある。この場合、演算部11bは、当該指示の内容から投入対象ジョブで利用される計算ノードの数を得ることができる。
演算部11bは、取得した各種の情報に基づいて、該当のイベントの発生後に投入されるジョブの投入までの時間と当該ジョブの所要ノード数とをニューラルネットワークN1により学習する。入力側の教師データ(入力層の各要素に相当)は、例えば、実行済ジョブの識別情報、実行済ジョブの実行終了コード、および、その他の投入済ジョブの識別情報である。入力側の教師データは、直前のイベントの発生時刻を示す情報を更に含んでもよい。出力側の教師データ(出力層の各要素に相当)は、当該イベントの発生時から今回の投入時までの時間差、および、今回の投入対象ジョブで所要される計算ノード数(所要ノード数)である。
図1のステップS1は、ジョブA,B,C,D,Eと順に実行され、時刻TaにおいてジョブFが投入された場合を例示している。図1の例では、紙面に向かって右側が正の時間方向である。また、ジョブが投入されたタイミングを黒色の四角形で表し、ジョブの実行が完了されたタイミングを黒色の丸で表している。ここで、ジョブの投入とは利用者がジョブの実行を依頼したタイミングであり、HPCシステムでは一般に、計算ノードなど資源の空き具合により、実行の開始が待たされることがある。このため、必ずしも投入したタイミングでジョブが実行されるとは限らない。つまり、黒色の四角形と黒色の丸を結ぶ線分は該当のジョブの実行が待たされていた期間と実行されていた期間である。黒色の四角形からある時刻に対して延びる矢印は、黒色の四角形で示される時刻から矢印の先の時刻まで、該当のジョブが実行を待たされているか実行されており、矢印の先の時刻において該当の時刻が実行待ちか実行中であることを表す。
ジョブFの投入は、並列処理装置10における1つのイベントといえる。この場合、演算部11bは上記の学習を行う。時刻Taにおいて、ジョブA,B,C,Dは実行完了している。このため、ジョブA,B,C,Dは、時刻Taにおける実行済ジョブである。ジョブEは、時刻Taにおいて実行待ちもしくは実行中である。このため、ジョブEは、時刻Taにおける投入済ジョブである。
演算部11bは、時刻Ta(ジョブFの投入時)よりも前の所定数(例えば4つ)の実行済ジョブA,B,C,Dそれぞれの識別情報、および、実行済ジョブA,B,C,Dそれぞれの直近の実行終了コードをイベントログから取得する。また、演算部11bは、時刻Taにおける投入済ジョブEの識別情報をイベントログから取得する。演算部11bは、ジョブFの投入時の指示内容からジョブFで利用する計算ノードの数を取得する。更に、演算部11bは、ジョブF投入の直前のイベントの発生時刻Txをイベントログから取得する。直前のイベントは、ジョブDの実行終了であり、時刻Txは、ジョブDの実行終了時刻である。演算部11bは、時刻Taと時刻Txとの時間差Δt1を取得する。
演算部11bは、実行済ジョブA,B,C,Dそれぞれの識別情報、および、実行済ジョブA,B,C,Dそれぞれの実行終了コード、および、投入済ジョブEの識別情報を、ニューラルネットワークN1の入力側の教師データとする。また、演算部11bは、ジョブFの所要ノード数、および、時間差Δt1を出力側の教師データとする。そして、演算部11bは、例えばバックプロパゲーション法などの教師付き学習法により、ニューラルネットワークN1の結合定数W11,W12,・・・,W1iおよびW21,W22,・・・,W2jを更新する。演算部11bは、上記の学習を繰り返し実行することで、各結合定数を実際のジョブの実行状況に適合させていく。
その後、演算部11bは、ニューラルネットワークN1による学習結果を用いて、あるイベントの発生(例えば、ユーザのログインやジョブの実行終了など)に対して、次のジョブが投入されるまでの時間と、当該次のジョブの所要ノード数を予測する。
図1のステップS2は、時刻TbでジョブDの実行が終了した場合の、演算部11bによる計算ノードの需要予測を例示している。時刻Tbにおいて、ジョブA,B,C,Dは実行完了している。このため、ジョブA,B,C,Dは、時刻Tbにおける実行済ジョブである。ジョブEは、時刻Tbにおいて実行待ちもしくは実行中である。このため、ジョブEは、時刻Tbにおける投入済ジョブである。
演算部11bは、時刻Tb以前の所定数(例えば4つ)の実行済ジョブA,B,C,Dそれぞれの識別情報、および、実行済ジョブそれぞれの直近の実行終了コードをイベントログから取得する。また、演算部11bは、時刻Tbにおける投入済ジョブEの識別情報をイベントログから取得する。演算部11bは、ニューラルネットワークN1に取得した各情報を入力し、出力層の各要素の値を計算することで、次のジョブが投入される時刻(次ジョブの投入予測時刻)Tdと、次のジョブの所要ノード数とを予測する。図1の時刻Tdにおいて示した白色の四角形は、次のジョブの投入予測時刻であることを示す。
そして、演算部11bは、こうしてニューラルネットワークN1による学習結果を用いて予測した次のジョブの投入予測時刻Tdおよび所要ノード数に基づいて、各計算ノードの起動状態を制御する。
具体的には、まず、演算部11bは、次のジョブの所要ノード数に対し、電源オフにより不足している計算ノード(不足ノード)の数を求める。そして、演算部11bは、投入予測時刻Tdに間に合うように、不足ノードの起動予定時刻Tcを決定する。演算部11bは、起動予定時刻Tcの決定に、不足ノードの起動に要する時間(起動所要時間)Δt2を考慮する。例えば、消費電力の制約(消費電力の上限)から一度に同時に電源オン開始できる計算ノードの数をNとし、不足ノードの数をMとする。また、1つの計算ノードの起動に要する時間をτとする。すると、例えば、起動所要時間Δt2=ROUNDUP(M/N)×τである。ここで、ROUNDUP関数は、小数点以下を切り上げる関数である。
演算部11bは、例えば、投入予測時刻Tdよりも起動所要時間Δt2だけ早い時刻を、不足ノードの起動予定時刻Tcとする。あるいは、演算部11bは、投入予測時刻TdよりもΔt2+α(αは所定時間)だけ早い時刻を、不足ノードの起動予定時刻Tcとしてもよい。演算部11bは、不足ノードの起動スケジュールを記憶部11aに格納する。そして、演算部11bは、起動予定時刻Tcに達すると、不足ノードに対応する計算ノードを電源オンにし、次のジョブの投入に備える。
なお、並列処理装置10を利用するユーザが複数存在する場合、演算部11bは、ユーザ毎に、計算ノードの需要の学習および予測を行ってもよい。その場合、演算部11bは、ニューラルネットワークN1をユーザ毎に用意し、該当のユーザのログインや該当のユーザによって依頼されたジョブに絞って、計算ノードの需要の学習や予測を行う。
こうして、並列処理装置10は、次のジョブの実行を迅速に開始可能にする。
ここで、省電力化のために一部の計算ノードの電源切断やサスペンドを行うと、その副作用として、計算を行いたいタイミングなどに直ちに計算ノードを使用できなくなるという問題がある。並列処理装置10では、ユーザが所望のタイミングでジョブを投入する運用が多い。このため、いつ、どのようなジョブが投入されるか不明なことが多い。例えば、ユーザがジョブを実行したいタイミングで一部の計算ノードを電源オンする運用も考えられる。しかし、計算ノードの電源オン開始から電源オン完了までには時間を要し、ジョブの実行開始が遅延してしまう。この問題は、ジョブスループットの低下や計算ノードの使用効率の低下の要因にもなる。
そこで、並列処理装置10は、ジョブ投入時、ニューラルネットワークN1を用いてジョブの実行状況を学習する。具体的には、管理ノード11は、直近に終了したジョブの識別情報、および、当該ジョブの終了コードとその他の投入済のジョブの識別情報を入力側教師データとする。また、管理ノード11は、前回のジョブ終了などのイベントから今回のジョブ投入までの時間差(相対時間)、および、今回のジョブの所要ノード数を出力側教師データとする。ログインおよび過去のジョブの実行状況や、その実行終了コードおよび現在のジョブの実行状況が、今回のジョブ投入に関連していると考えられるからである。
管理ノード11は、こうして学習した結果を利用して、次のジョブの所要ノード数と、投入タイミングとをおおよそ予測できる。このため、管理ノード11は、計算ノードの電源オフにより、所要ノード数が不足していても、予測した投入タイミングにおいて、所要ノード数分の計算ノードをジョブ受付可能な状況か、それに近い状況(ブート途中)にすることができる。例えば、管理ノード11は、ユーザのログイン後、該当のユーザのジョブの実行に必要な計算ノードの数を予測し、ジョブの投入前に必要な計算ノードを予め起動しておける。また、例えば、ジョブの終了後、終了したジョブに応じて、次のジョブの実行に必要な計算ノード数と、次のジョブが投入される時刻を予測し、計算ノードの電源管理に利用でき、次のジョブの投入前に必要な計算ノードを予め起動しておける。
こうして、並列処理装置10は、次のジョブの実行を迅速に開始可能にできる。その結果、並列処理装置10は、空き計算ノードを電源オフ(またはサスペンド)にして消費電力を低減しつつ、ジョブスループットや資源利用効率の低下を抑えることができる。
[第2の実施の形態]
図2は、第2の実施の形態の計算システムの例を示す図である。第2の実施の形態の計算システムは、多数(例えば数万〜10万程度)の計算ノードを有し、複数の計算ノードを用いてジョブを並列実行する。また、当該計算システムは、他の複数の計算ノードを用いて他のジョブを並列実行することもできる。
第2の実施の形態の計算システムは、管理ノード100および計算ノード200,200a,200b,200c,200d,200e,200f,200g,200h,・・・を有する。ここで、以下では、計算ノード200,200a,200b,200c,200d,200e,200f,200g,200h,・・・それぞれの計算ノードを指して、各計算ノードと称することがある。
管理ノード100および各計算ノードは、インタコネクトと呼ばれる計算システム内部の相互接続網に接続されている。相互接続網の形態は問わず、メッシュやトーラスなどと呼ばれる直接網であってもよい。また、管理ノード100およびファイルサーバ300および各計算ノードは、計算システム内部の管理用のネットワークにも接続されている。
管理ノード100は、ネットワーク20に接続されている。ファイルサーバ300もネットワーク20に接続されていてもよい。ネットワーク20は、計算システムが設けられたデータセンタ内のローカルネットワークでもよいし、データセンタ外の広域ネットワークでもよい。
管理ノード100は、ユーザによる計算システムへのログインや各計算ノードによるジョブの実行を管理するサーバコンピュータである。例えば、管理ノード100は、ネットワーク20に接続されたクライアントコンピュータ(図2では図示を省略)からユーザのログインを受け付ける。ユーザは、管理ノード100において実行対象のジョブの情報(ジョブ情報)の入力を行える。ジョブ情報は、各計算ノードに実行させるジョブの内容やジョブを実行させる計算ノードの数の情報などを含む。ユーザは管理ノード上のジョブ管理システムにジョブを投入する。ジョブ投入時、ユーザはジョブとして実行するプログラムのパスと引数、ならびに実行に必要な計算ノード数など実行に必要な資源の情報を指定しなくてはならない。
管理ノード100のジョブ管理システムは、投入されたジョブをどの計算ノードで実行するかをスケジューリングし(ジョブスケジューリング)、スケジュールした計算ノードでジョブの実行が可能になったら(当該計算ノードにおける他のジョブの実行が終了するなど)、当該計算ノード(一部の計算ノード)にジョブを実行させる。また、管理ノード100は、各計算ノードの電源状態の管理も行う。例えば、実行中のジョブ群が必要とする計算ノードの総数がシステム全体の計算ノード数を下回る場合や、計算システム内部のネットワーク(インタコネクト)として、メッシュ型やトーラス型などを採用するシステムの場合、空きノードのネットワーク形状とジョブが要求するネットワーク形状が合わず、空いていても使用できない計算ノードが発生した場合などである(フラグメンテーション)。そこで、管理ノード100は、このような空きノードの電源を停止したり、サスペンド状態にしたりして、省電力化を図る。なお、ユーザによるログインを受け付けるノード(ログインノード)を管理ノード100とは別個に設けてもよい。
計算ノード200は、管理ノード100から投入されたジョブを実行するサーバコンピュータである。
ファイルサーバ300は、各種データを記憶するサーバコンピュータである。例えば、サーバ300は、計算ノード200に実行させるプログラムを計算ノード200に配信することができる。
ここで、第2の実施の形態の計算システムは、複数のユーザによって利用される。当該計算システムでは、ユーザが所望のタイミングでジョブを投入することが多い。このため、いつ、どのようなジョブが投入されるか不明である。そこで、管理ノード100は、ジョブの実行状況を基に、計算ノードの需要を学習し、また、学習結果を用いて計算ノードの需要を予測することで、省電力化を図りながらジョブの実行開始を迅速化する機能を提供する。
第2の実施の形態の計算システムは、第1の実施の形態の並列処理装置10の一例である。管理ノード100は、第1の実施の形態の管理ノード11の一例である。
図3は、管理ノードのハードウェア例を示す図である。管理ノード100は、プロセッサ101、RAM102、インタコネクトアダプタ103、I/O(Input / Output)バスアダプタ104、ディスクアダプタ105およびネットワークアダプタ106を有する。
プロセッサ101は、管理ノード100の情報処理を制御する演算装置である。プロセッサ101は、複数のプロセッシング要素を含むマルチプロセッサであってもよい。プロセッサ101は、例えばCPUである。プロセッサ101は、CPUに対して、DSP、ASICおよびFPGAなどを組み合わせたものでもよい。
RAM102は、管理ノード100の主記憶装置である。RAM102は、プロセッサ101に実行させるOSのプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、RAM102は、プロセッサ101による処理に用いる各種データを記憶する。
インタコネクトアダプタ103は、インタコネクトに接続する通信インタフェースである。例えば、インタコネクトアダプタ103は、インタコネクトに属するインタコネクトルータ30に接続されている。
I/Oバスアダプタ104は、ディスクアダプタ105およびネットワークアダプタ106を接続するための接続インタフェースである。
インタコネクトアダプタ103は、I/Oバスアダプタ104に接続される場合もある。
ディスクアダプタ105は、ディスク装置40に接続されている。ディスク装置40は、管理ノード100の補助記憶装置である。ディスク装置40はHDD(Hard Disk Drive)と呼ばれてもよい。ディスク装置40は、OSのプログラム、アプリケーションプログラム、および、各種データを記憶する。管理ノード100は、補助記憶装置として、フラッシュメモリやSSDなどの他の記憶装置を管理ノード100の内部または外部に備えてもよい。
ネットワークアダプタ106は、ネットワーク20に接続する通信インタフェースである。管理ノード100は、計算システム内の管理用のネットワークに接続する通信インタフェースも備える(図示を省略している)。
ここで、各計算ノードも、管理ノード100と同様のハードウェアにより実現される。
図4は、ファイルサーバのハードウェア例を示す図である。ファイルサーバ300は、プロセッサ301、RAM302、HDD303、画像信号処理部304、入力信号処理部305、媒体リーダ306および通信インタフェース307を有する。各ユニットがファイルサーバ300のバスに接続されている。また、ファイルサーバ300は管理ノードと同様にインタコネクトアダプタ103(図4では図示を省略している)を持つ場合がある。
プロセッサ301は、サーバ300の全体を制御する。プロセッサ301は、複数のプロセッシング要素を含むマルチプロセッサであってもよい。プロセッサ301は、例えばCPU、DSP、ASICまたはFPGAなどである。また、プロセッサ301は、CPU、DSP、ASIC、FPGAなどのうちの2以上の要素の組み合わせであってもよい。
RAM302は、サーバ300の主記憶装置である。RAM302は、プロセッサ301に実行させるOSのプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、RAM302は、プロセッサ301による処理に用いる各種データを記憶する。
HDD303は、サーバ300の補助記憶装置である。HDD303には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。サーバ300は、フラッシュメモリやSSDなどの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
画像信号処理部304は、プロセッサ301からの命令に従って、サーバ300に接続されたディスプレイ51に画像を出力する。ディスプレイ51としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、有機EL(Electro-Luminescence)ディスプレイなど各種のディスプレイを用いることができる。
入力信号処理部305は、サーバ300に接続された入力デバイス52から入力信号を取得し、プロセッサ301に出力する。入力デバイス52としては、マウスやタッチパネルなどのポインティングデバイスやキーボードなどの各種の入力デバイスを用いることができる。サーバ300には、複数の種類の入力デバイスが接続されてもよい。
媒体リーダ306は、記録媒体53に記録されたプログラムやデータを読み取る装置である。記録媒体53として、例えば、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)を使用できる。また、記録媒体53として、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用することもできる。媒体リーダ306は、例えば、プロセッサ301からの命令に従って、記録媒体53から読み取ったプログラムやデータをRAM302またはHDD303に格納する。
通信インタフェース307は、ネットワーク20を介して他の装置と通信を行う。
図5は、管理ノードの機能例を示す図である。管理ノード100は、記憶部110、ログイン処理部120、ジョブ管理部130、予測部140、ジョブスケジューラ150、ジョブ実行管理部160およびノード管理部170を有する。記憶部110は、RAM102やディスク装置40に確保された記憶領域を用いて実現される。ログイン処理部120、ジョブ管理部130、予測部140、ジョブスケジューラ150、ジョブ実行管理部160およびノード管理部170は、RAM102に記憶されたプログラムをプロセッサ101が実行することで実現される。
記憶部110は、管理ノード100の各部の処理に用いられる情報を記憶する。具体的には、記憶部110は、管理ノード100で発生したユーザのログイン、ジョブの投入、実行開始、および、実行終了などのイベントに関するログを記憶する。また、記憶部110は、管理ノード100による計算ノードの需要の学習や予測に用いられる情報や、計算ノードの起動状態を制御するためのスケジュールの情報などを記憶する。
ログイン処理部120は、ユーザID(IDentifier)およびパスワードを受け付け、記憶部110に予め登録されたユーザIDおよびパスワードと照合することで、ユーザのログイン処理を行う。ログイン処理部120は、ログインに成功すると、ユーザIDを含むログイン情報を予測部140に通知する。また、ログイン処理部120は、ログイン履歴を記憶部110に格納する。ログイン履歴は、ログインしたユーザIDやログイン時刻の情報を含む。
更に、ログイン処理部120は、ユーザがログインしたことを予測部140に通知する。
ジョブ管理部130は、ログインしたユーザによるジョブ投入を受け付ける。ジョブ管理部130は、ログインしたユーザからのジョブ投入を受け付けたとき、ジョブが投入されたことを予測部140に通知する。ジョブ管理部130は、投入されたジョブのスケジューリングをジョブスケジューラ150に依頼する。ジョブ管理部130は、ジョブスケジューラ150のスケジューリング結果で指定される計算ノードを用いてジョブの実行を開始するよう、ジョブ実行管理部160に依頼する。ジョブ管理部130は、計算ノードでジョブを実行させる。ジョブ実行管理部160からジョブの実行を終了した旨の通知を受け付けると、ジョブが終了したことを予測部140に通知する。
ジョブ管理部130は、ジョブ投入、ジョブ実行開始およびジョブ終了などのジョブ履歴を記憶部110に格納する。ジョブ履歴は、該当のジョブID、時刻、ジョブ実行に用いられた計算ノード数、処理を依頼したユーザのユーザID、ジョブの実行結果として出力される終了コードを含む。
予測部140は、ジョブ管理部130からジョブ投入の通知を受け付けると、現在のジョブの実行状況に応じて、ユーザ毎に計算ノードの需要を学習する。予測部140は、ニューラルネットワークによる教師付き学習を行う。予測部140は、ニューラルネットワークによる学習結果を、ユーザIDに対応付けて記憶部110に格納する。
また、予測部140は、ログイン処理部120からのログイン情報、もしくはジョブ管理部130からのジョブ終了情報を受け付けると、記憶部110に記憶されたニューラルネットワークによる学習結果を用いて、次のジョブの投入までの予測時間、および、次のジョブの所要ノード数を予測する。予測部140は、現在時刻に次のジョブの投入までの予測時間を加えた時間を、次のジョブの投入予測時刻とする。予測部140は、次のジョブの所要ノード数および投入予測時刻の予測結果をノード管理部170に通知する。
ジョブスケジューラ150は、投入されたジョブのスケジューリングの依頼をジョブ管理部130から受け付けると、ジョブのスケジューリングを実行し、スケジューリング結果をジョブ管理部130に応答する。ジョブスケジューラ150は、計算ノードの利用スケジュールの情報をノード管理部170へ提供する機能も担う。
ジョブ実行管理部160は、ジョブ管理部130から指示された計算ノードを用いたジョブの実行を管理する。例えば、ジョブ実行管理部160は、指定されたジョブのアプリケーションのパスなど、実行に必要な情報を記憶部110から取得して該当の計算ノードに配置し、ジョブ実行のコマンドを当該計算ノードに送信することで、各計算ノードによるジョブ実行を開始させる。ジョブ実行管理部160は、各計算ノードからジョブ実行の終了を示すジョブ終了情報(前述の終了コードを含む)を受け付けると、ジョブ管理部130にジョブ終了情報を通知する。
ノード管理部170は、各計算ノードの電源オン/オフ状態やサスペンド状態などの電源状態を管理する。ノード管理部170は、予測部140による予測結果として、次のジョブの所要ノード数および投入予測時刻を取得する。ノード管理部170は、ジョブスケジューラ150から計算ノードの利用スケジュールの情報を取得し、投入予測時刻における全てのジョブで所要される計算ノード数を計算する。ノード管理部170は、現在電源オン状態にある計算ノードの数を考慮し、投入予測時刻において計算ノードが不足するか否かを判定する。不足する場合、ノード管理部170は、電源オフやサスペンド状態にある計算ノードへの再通電を行うと決定する。そして、ノード管理部170は、計算ノードの起動やサスペンド解除に要する時間を投入予測時刻から差し引いた時刻に、不足分の計算ノードの起動を開始する。差し引いた時刻が、現時刻よりも過去になる場合、ノード管理部170は、不足分の計算ノードの起動を直ちに開始する。
また、ノード管理部170は、所定の条件の元、各計算ノードを電源オンから電源オフへ、または、電源オンからサスペンド状態へ切り替え、省電力化を図ることもある。例えば、ノード管理部170は、所定期間演算処理に用いられていない計算ノードを電源オンから電源オフ(またはサスペンド状態)へ切り替えてもよい。
図6は、ニューラルネットワークの例を示す図である。ニューラルネットワークN11の情報は、記憶部110に格納される。ニューラルネットワークN11は、3つの層を有し、予測部140による教師付き機械学習に用いられる。第1の層は入力層である。第2の層は隠れ層である。第3の層は出力層である。ただし、予測部140は、入力層と出力層との間に複数の隠れ層をもつ3層以上のニューラルネットワークを使用してもよい。ニューラルネットワークN11を用いた学習には、入力側教師データI1,I2,I3,I4、および、出力側教師データO1,O2が用いられる。
入力側教師データI1は、ログイン時またはジョブ終了時の時刻情報であり、時刻に関する複数のデータ要素を含む(予測を行う際には、ログイン時またはジョブ終了時は現時刻を表すことになる)。具体的には、入力側教師データI1は、年間の週番号、月間の週番号、曜日番号、月、日、時、分および日タイプ(通常日(祝日でない日)、または、祝日を表す)の情報を含む。ここで、時刻に関する情報を一般的な時刻表現とすると周期性を検出し難い。例えば、「年」情報は周期性を表現し難い。また、「月」、「日」、「時」などの情報は周期的であるが、ニューラルネットワークでは、59分と0分が連続していることを認識できない。そこで、時間を表す各情報の最大値と最小値とを2πで正規化し、sin関数とcos関数とに代入した2つの値で表現する。この場合、入力側教師データI1には、合計で8種類のデータ要素が含まれることになる。
入力側教師データI2は、イベントの種別が、ログインまたはジョブ終了であるか、ジョブ終了であればどのジョブであるかを識別する情報である。ここで、例えば、計算システムにおいて通常用いられるジョブIDは、一時的な値であることもある。そこで、予測部140は、恒久的にジョブを区別できる識別子を生成する。例えば、予測部140は、ジョブとして実行される目的プログラムのハッシュ値をジョブの識別子として利用することが考えられる。なお、ハッシュ値(ジョブの識別子)の値レンジが、ニューラルネットワークN11の1ユニット(1つのデータ要素)にとって広過ぎることもある。その場合、1つのハッシュ値に対し、複数の入力ユニットを設け、桁毎などに分けて入力してもよい。また、ログインのイベントには特別な値を予め設ける(例えば、“0”とする)。
入力側教師データI3は、該当ユーザの直近で実行を終了した複数個のジョブの識別子(終了ジョブ識別子Jpと称する)と、当該ジョブの終了コードである。ただし、入力側教師データI3は、1つのジョブの識別子と、当該ジョブの終了コードでもよい。ここで、ジョブ終了が最も早かったジョブの終了ジョブ識別子をJp(1)とする。例えば、入力側教師データI3は、m(mは1以上の整数)個の終了ジョブ識別子と、m個の終了ジョブ識別子それぞれに対応する終了コードを含む。mの値は、例えば、記憶部110に予め設定されている。図6において、終了ジョブ識別子Jp(1)は、1つ目の終了ジョブ識別子である(m個の終了ジョブのうちジョブ終了が最も早かったジョブに相当)。終了ジョブ識別子Jp(m)は、m個目の終了ジョブ識別子である(m個の終了ジョブのうちジョブ終了が最も遅かったジョブに相当)。予測部140は、終了ジョブ識別子の入力がない入力ユニットには“0”を入力する。
予測部140は、入力側教師データI3に相当する情報を、記憶部110に記憶されたジョブ履歴から収集できる。ニューラルネットワークN11は、複数個の情報を入力するための複数の入力ユニットをもつ。また、入力ユニットには昇順のユニット番号が付与される。例えば、予測部140は、ユニット番号の昇順に、ジョブ終了が早かった順で情報を各入力ユニットに割り当てる(ただし、逆順でもよい)。また、予測部140は、各ジョブの終了コードを、ジョブの識別子と同じ順番で、各入力ユニットに割り当てる。
入力側教師データI4は、該当ユーザの現在投入済であるジョブの識別子(投入済ジョブ識別子Jeと称する)である。ここで、ジョブ識別子とは、一時的なジョブIDではなく、入力情報I2で説明したようなハッシュ値などの恒久的に固定された値である。ニューラルネットワークN11には、複数のジョブが実行されていることを考慮して、複数の入力ユニットを用意する(ただし、1つでもよい)。予測部140は、入力ユニット数よりも投入済ジョブ数が少ない場合には、余りの入力ユニットには“0”を入力する。予測部140は、入力ユニットのユニット番号の昇順に、投入時刻が早かった順で投入済ジョブ識別子を入力する。例えば、入力側教師データI4は、n(nは1以上の整数)個の投入済ジョブ識別子を含む。nの値は、例えば、記憶部110に予め設定されている。図6において、投入済ジョブ識別子Je(1)は、1つ目の投入済ジョブ識別子である(n個の投入済ジョブのうちジョブ投入が最も早かったジョブに相当)。投入済ジョブ識別子Je(n)は、n個目の投入済ジョブ識別子である(n個の投入済ジョブのうちジョブ投入が最も遅かったジョブに相当)。
出力側教師データO1は、実際に投入されたジョブで用いられた計算ノード数である。予測部140は、当該計算ノード数をジョブ管理部130やジョブ履歴から取得できる。
出力側教師データO2は、投入されたジョブの直前のイベント(該当ユーザのログインまたは該当ユーザのジョブ終了)の発生時刻と、今回投入されたジョブの投入時刻との時間差(相対時間)である。予測部140は、ログイン履歴およびジョブ履歴を参照して、直前のイベントが該当ユーザのログインかジョブ終了かを判断し、当該イベントの発生時刻を得ることができる。
ここで、ニューラルネットワークN11の入力層は、全部でi個のデータ要素(入力ユニット)を持つものとする。ニューラルネットワークN11の隠れ層は、全部でh個のデータ要素を含む。隠れ層の各データ要素は、入力層の各データ要素を入力とした所定の関数の出力である。隠れ層における各関数は、入力層の各データ要素に対する結合定数(重みと称してもよい)を含む。例えば、入力層を記号“i”で、隠れ層を記号“h”でそれぞれ示す。すると、隠れ層の0番目のデータ要素に対する入力層の0番目のデータ要素の結合定数を“Wi00”と表せる。また、隠れ層の0番目のデータ要素に対する入力層の1番目のデータ要素の結合定数を“Wi10”と表せる。隠れ層のh番目のデータ要素に対する入力層のi番目のデータ要素の結合定数を“Wiih”と表せる。
また、ニューラルネットワークN11の出力層は、2個のデータ要素(出力ユニット)を含む。出力層のデータ要素は、隠れ層の各データ要素を入力とした所定の関数の出力である。出力層における各関数は、隠れ層の各データ要素に対する結合定数(重み)を含む。例えば、出力層を記号“o”で示す。すると、出力層の0番目のデータ要素に対する隠れ層の0番目のデータ要素の結合定数を“Wh00”と表せる。出力層の1番目のデータ要素に対する隠れ層の1番目のデータ要素の結合定数を“Wh11”と表せる。出力層の0番目のデータ要素に対する隠れ層のh番目のデータ要素の結合定数を“Whh0”と表せる。出力層の1番目のデータ要素に対する隠れ層のh番目のデータ要素の結合定数を“Whh1”と表せる。予測部140は、教師付き学習により、上記の各結合定数を更新していくことで、計算ノードの需要予測の精度を向上させる。
ニューラルネットワークN11の情報(例えば、層間のデータ要素の変換に用いられる関数および結合定数など)は、記憶部110に記憶される。また、ニューラルネットワークN11は、第2の実施の形態の計算システムを利用するユーザ毎に設けられる。すなわち、予測部140は、あるユーザによるジョブの投入を受け付けると、該当のユーザにより要求されたジョブの実行の履歴(ジョブ履歴)およびユーザのログインの履歴(ログイン履歴)を用いてニューラルネットワークN11による学習を行う。予測部140は、ニューラルネットワークN11による学習結果をユーザ毎に記憶部110に格納する。
図7は、計算ノードの電源投入およびジョブ実行の例を示す図である。図7の例では、縦横に並べた四角形によって計算ノードを表している。図7の例では、縦方向に8個、横方向に8個の四角形を図示しており、8×8=64個の計算ノードを表している。また、図7では、管理ノード100の機能のうち、記憶部110、ジョブスケジューラ150およびジョブ実行管理部160の図示を省略している。なお、図7の例では、あるユーザが管理ノード100に対してログインする場合を例示する。
まず、最初の段階では、6×5=30個の計算ノードが既存ジョブを実行中であり、残りの34個の計算ノードが省電力目的の電源オフ状態となっている(サスペンド状態でもよい)。
2番目の段階では、あるユーザが管理ノード100に対してログインを行う。すると、ログイン処理部120は、ログイン情報を予測部140に通知する。予測部140は、ニューラルネットワークN11による学習結果を用いて、ログイン後から該当のユーザによる次のジョブの投入までの時間(投入予測時間)と、次のジョブの所要ノード数とを予測する。また、予測部140は、現時刻と投入予測時間とを基に、次のジョブの投入予測時刻を求める。ノード管理部170は、予測部140による予測結果に基づいて、当該予測時刻における不足ノードの数を求める。そして、ノード管理部170は、投入予測時刻を基に、不足ノード分の計算ノードの起動所要時間を考慮して、不足ノード分の計算ノードの起動時刻を決定する。ノード管理部170は、決定した起動時刻に達すると、不足ノード分の計算ノードを電源オンにする。図7の例では、次のジョブの所要ノード数が21個であり、不足ノードの数が21個である。この場合、ノード管理部170は、例えば、21個の計算ノードを含む計算ノード群G1を電源オフから電源オンに切り替える。
3番目の段階では、先にログインしたユーザが管理ノード100に対してジョブを投入する。ジョブ管理部130は、(ジョブ実行管理部160を介して)計算ノード群G1を用いて当該ジョブの実行を開始させる。このように、管理ノード100は、不足していた計算ノードを予め起動させておき、当該ジョブの所要ノード数分の計算ノードを、ユーザによるジョブ投入後に直ちに利用できるように準備する。
次に、管理ノード100による処理手順を具体的に説明する。
図8は、管理ノードの処理例を示すフローチャートである。以下、図8に示す処理をステップ番号に沿って説明する。
(S11)予測部140は、ログイン、ジョブ終了またはジョブ投入の何れの通知を受け付けたかを判定する。ジョブ投入の通知を受け付けた場合、処理をステップS12に進める。ログインまたはジョブ終了の通知を受け付けた場合、処理をステップS13に進める。ここで、前述のように、ジョブ投入の通知およびジョブ終了の通知は、ジョブ管理部130により生成される。ログインの通知は、ログイン処理部120により生成される。
(S12)予測部140は、ニューラルネットワークN11を用いた教師付き学習を行う。処理の詳細は後述される。そして、処理を終了する。
(S13)予測部140は、ニューラルネットワークN11による学習結果を用いて、計算ノードの需要予測を行う。処理の詳細は後述される。
(S14)ノード管理部170は、不足ノード分の計算ノードに対する再通電操作を行う。処理の詳細は後述される。そして、処理を終了する。
なお、予測部140は、ステップS12またはステップS14の実行後、次の通知を受け付けるまで待機する。次の通知を受け付けると、再度ステップS11を開始する。
図9は、学習の例を示すフローチャートである。以下、図9に示す処理をステップ番号に沿って説明する。以下に示す手順は、図8のステップS12に相当する。
(S21)予測部140は、記憶部110に記憶されたログイン履歴およびジョブ履歴を参照して、今回のジョブを依頼したユーザに対する、今回のジョブ投入の直前のイベントを判定する。直前のイベントがジョブ終了である場合、処理をステップS22に進める。直前のイベントがログインである場合、処理をステップS23に進める。なお、予測部140は、ログイン履歴およびジョブ履歴に含まれるイベントのうち、ログインまたはジョブ終了のイベントのみに着目してステップS21の判定を行う(例えば、ジョブ実行開始などの他のイベントを無視して直前のイベントを判断する)。
(S22)予測部140は、今回投入されたジョブのジョブ識別子を生成する。具体的には、予測部140は、該当のジョブの目的プログラムを所定のハッシュ関数に代入してハッシュ値を求め、求めたハッシュ値をジョブ識別子とする。そして、処理をステップS24に進める。なお、予測部140は、ユーザによって指定されたジョブIDとジョブ識別子との対応関係の情報を記憶部110に格納してもよい(ジョブ履歴に記録されるジョブIDに対してジョブ識別子を特定できるようにするため)。あるいは、ジョブ管理部130は、予測部140と同じ方法により求めたジョブ識別子を各ジョブの識別情報として、ジョブ履歴に記録してもよい。
(S23)予測部140は、ジョブ識別子を0とする(ジョブ識別子=0)。そして、処理をステップS24に進める。
(S24)予測部140は、ステップS21で判定した直前のイベントの時刻情報を2πで正規化し、sin,cos値を計算する。
(S25)予測部140は、該当ユーザの過去m個分の終了ジョブ識別子と終了コードとを記憶部110に記憶されたジョブ履歴から取得する。予測部140は、該当ユーザについて、現時刻に対して直近のm個分の終了ジョブ識別子と終了コードとを取得する。
(S26)予測部140は、該当ユーザのn個分の投入済ジョブ識別子をジョブ管理部130から取得する。
(S27)予測部140は、ステップS24〜S26で取得した各ジョブに関する情報をニューラルネットワークN11の入力側教師データとする。そして、処理をステップS28に進める。
図10は、学習の例(続き)を示すフローチャートである。以下、図10に示す処理をステップ番号に沿って説明する。
(S28)予測部140は、今回投入されたジョブの所要ノード数をジョブ管理部130から取得する。
(S29)予測部140は、記憶部110に記憶されたログイン履歴およびジョブ履歴を参照して、今回のジョブを依頼したユーザに対する、今回のジョブ投入の直前のイベントを判定する。直前のイベントがジョブ終了である場合、処理をステップS30に進める。直前のイベントがログインである場合、処理をステップS31に進める。なお、ステップS29の判定結果は、ステップS21と同じになる。予測部140は、ログイン履歴およびジョブ履歴に含まれるイベントのうち、ログインまたはジョブ終了のイベントのみに着目してステップS29の判定を行う(例えば、ジョブ実行開始などの他のイベントを無視して直前のイベントを判断する)。
(S30)予測部140は、直前のジョブの終了時刻から現時刻までの時間差を計算する。そして、処理をステップS32に進める。なお、予測部140は、直前のジョブの終了時刻を、記憶部110に記憶されたジョブ履歴から取得できる。
(S31)予測部140は、該当ユーザのログイン時刻から現時刻までの時間差を計算する。なお、予測部140は、該当ユーザのログイン時刻を、記憶部110に記憶されたログイン履歴から取得できる。そして、処理をステップS32に進める。
(S32)予測部140は、ステップS28〜S31で取得した所要ノード数および時間差を、ニューラルネットワークN11の出力側教師データとする。
(S33)予測部140は、ニューラルネットワークN11による教師付き学習計算を実行する。例えば、予測部140は、誤差逆伝搬法(バックプロパゲーション)を用いて、ニューラルネットワークN11に含まれる各結合定数を更新する。予測部140は、学習結果(更新後の各結合定数)を、ユーザIDに対応付けて記憶部110に格納する。
なお、上記の例では、予測部140は、ジョブ投入のたびに学習を実行する。ただし、ジョブ投入のたびではなく、学習用の教師データをある程度ためてから学習を実行してもよい。
図11は、計算ノード需要予測の例を示すフローチャートである。以下、図11に示す処理をステップ番号に沿って説明する。以下に示す手順は、図8のステップS13に相当する。
(S41)予測部140は、現時刻情報を2πで正規化し、sin、cos値を計算する。
(S42)予測部140は、今回受け付けた通知がログインまたはジョブ終了の何れかであるかを判定する。ジョブ終了の場合、処理をステップS43に進める。ログインの場合、処理をステップS44に進める。
(S43)予測部140は、今回終了したジョブのジョブ識別子を生成する。具体的には、予測部140は、該当のジョブの目的プログラムを所定のハッシュ関数に代入してハッシュ値を求め、求めたハッシュ値をジョブ識別子とする。ステップS43で用いられるハッシュ関数は、ステップS22で用いられるハッシュ関数と同じである。そして、処理をステップS45に進める。
(S44)予測部140は、ジョブ識別子を0とする(ジョブ識別子=0)。そして、処理をステップS45に進める。
(S45)予測部140は、該当ユーザの過去m個分の終了ジョブ識別子と終了コードとを記憶部110に記憶されたジョブ履歴から取得する。予測部140は、該当ユーザについて、現時刻に対して直近のm個分の終了ジョブ識別子と終了コードとを取得する。
(S46)予測部140は、該当ユーザのn個分の投入済ジョブ識別子をジョブ管理部130から取得する。
(S47)予測部140は、ステップS41〜S46で取得した情報をニューラルネットワークN11の入力データとして、該当のユーザによる次のジョブの所要ノード数および投入までの時間の予測値を計算する。予測部140は、現在時刻に投入までの時間の予測を加えた時刻を、次のジョブの投入予測時刻とする。なお、予測部140は、該当ユーザのユーザIDに基づいて、該当ユーザに対応するニューラルネットワークN11の学習結果の情報を記憶部110から取得し、ステップS47の予測に用いることができる。
ニューラルネットワークN11では、図9,10の学習の手順が繰り返されることにより、図11による計算ノードの需要予測の精度が向上していく。
図12は、再通電操作の例を示すフローチャートである。以下、図12に示す処理をステップ番号に沿って説明する。以下に示す手順は、図8のステップS14に相当する。
(S51)ノード管理部170は、ステップS47で予測された時刻(投入予測時刻)に既にスケジュールしてあるジョブに必要なノード数(計算ノードの数のスケジュール値)をジョブスケジューラ150から取得する。
(S52)ノード管理部170は、スケジュール値と、予測値(投入予測時刻における次ジョブの所要ノード数の予測値)との合計が、現在通電中の計算ノードの数以上であるか否かを判定する。スケジュール値と予測値との合計が、現在通電中の計算ノードの数以上である場合、処理をステップS53に進める。スケジュール値と予測値との合計が、現在通電中の計算ノードよりも少ない場合、処理を終了する。スケジュール値と予測値との合計が、現在通電中の計算ノードの数よりも少ない場合、現在通電中の計算ノードにより、予測された時刻において所要される計算ノード数を確保できることになる。
(S53)ノード管理部170は、投入予測時刻に不足する計算ノードの数を計算する。具体的には、ノード管理部170は、スケジュール値と予測値との合計から、現在通電中のノード数を引いた値を、不足する計算ノードの数とする。
(S54)ノード管理部170は、現時点で電源切断中またはサスペンド中の計算ノードの数が不足分(ステップS53で計算した不足する計算ノードの数)以上であるか否かを判定する。電源切断中またはサスペンド中の計算ノードの数が不足分以上の場合、処理をステップS55に進める。電源切断中またはサスペンド中の計算ノードの数が不足分よりも少ない場合、処理を終了する。電源切断中またはサスペンド中の計算ノードの数が不足分よりも少ない場合、次のジョブが投入予測時刻に投入されても、現状では次のジョブの実行を投入予測時刻の直後に開始することはできないことになる(所要ノード数に対して計算ノード数が不足するため)。
(S55)ノード管理部170は、必要となる時刻(投入予測時刻)から再通電の所要時間を差し引いた時刻を計算する。例えば、ノード管理部170は、電源切断中またはサスペンド中の計算ノードについて、不足分の数の計算ノードの再通電の所要時間を求める。例えば、消費電力の制約(計算ノードの電源オンには比較的多くの電力を消費するため、多数の計算ノードを同時に起動させると消費電力上限を上回る可能性がある)から一度に同時に電源オン開始できる計算ノードの数をNとし、不足ノードの数をMとする。また、1つの計算ノードの電源切断から起動に要する時間をτとする(サスペンド中からの復帰の場合は、τを1つの計算ノードの当該復帰に要する時間とする)。すると、例えば、再通電の所要時間は、ROUNDUP(M/N)×τである。ノード管理部170は、こうして求めた再通電の所要時間を、投入予測時刻から引いた時刻を求める。
(S56)ノード管理部170は、ステップS55の計算結果が負(すなわち、現時刻よりも前の時刻)であるか否かを判定する。ステップS55の計算結果が負ではない場合、処理をステップS57に進める。ステップS55の計算結果が負である場合、処理をステップS58に進める。
(S57)ノード管理部170は、ステップS53で計算した不足ノード数分の計算ノードを、ステップS55で計算した時刻に再通電する。そして、処理を終了する。
(S58)ノード管理部170は、ステップS53で計算した不足ノード数分の計算ノードを、直ちに再通電する。そして、処理を終了する。
図13は、計算ノードの起動例を示す図である。図13(A)は、管理ノード100の予測に応じた計算ノードの起動例を示している。図13(B)は、管理ノード100の予測を用いずに、必要時に電源投入を行う比較例を示している。
図13(A)で示すように、管理ノード100は、ユーザのログインまたはジョブ終了を検出すると、該当のユーザによる次のジョブの投入予測時刻および所要ノード数の予測を行う。そして、管理ノード100は、予測した投入予測時刻から計算ノードの起動所要時間を考慮した時間だけ差し引いた時刻に、不足ノード分の計算ノードの電源投入を行う。すると、続くシステム起動の期間内に不足ノード分の計算ノードの起動が完了する。システム起動が完了すると、起動した各計算ノードは、順次ジョブ受付可能状態に遷移する。管理ノード100は、こうして投機的に計算ノードを電源オンにすることで、投入予測時刻の前に、予測した所要ノード数分の計算ノードをジョブ受付可能状態とする。その後、該当のユーザによりジョブが投入されると、管理ノード100は、起動済の計算ノード群を用いて直ちにジョブの実行を開始できる。
一方、図13(B)で示すように、ジョブ実行のために必要なタイミングで計算ノードの電源投入を行うことも考えられる。しかし、この場合、システム起動やジョブ受付可能状態への遷移に伴う期間(遅延時間ΔTとする)の間、該当の計算ノードを用いたジョブ実行を開始することができない。すなわち、図13(B)のケースでは、図13(A)のケースよりも、ジョブの実行開始までの時間が、遅延時間ΔTだけ遅れることになる。
逆に、管理ノード100を用いることで、比較例(図13(B))よりも、遅延時間ΔTの分、ジョブの実行開始を早めることができる。こうして、第2の実施の形態の計算システムでは、ジョブの実行を迅速に開始可能にすることができる。
ここで、図13(B)で例示したように、省電力化のために一部の計算ノードの電源切断やサスペンドを行うと、その副作用として、計算を行いたいタイミングなどに直ちに計算ノードを使用できなくなるという問題がある。第2の実施の形態の計算システムでは、ユーザが所望のタイミングでジョブを投入する運用が多い。このため、いつ、どのようなジョブが投入されるか不明である。例えば、ユーザがジョブを実行したいタイミングで一部の計算ノードを電源オンする運用も考えられる。しかし、計算ノードの電源オン開始から電源オン完了までには時間を要し、ジョブの実行開始が遅延してしまう。この問題は、ジョブスループットの低下や計算ノードの使用効率の低下の要因にもなる。
また、電源オン時やサスペンドからの復帰時には、通常時よりも消費電力が大きい。このため、再通電および電源切断を繰り返し行っていると、計算システムにおける消費電力が過大になるおそれもある。そこで、計算ノードの需要予測を行って計算ノードの電源オン/オフを制御することが考えられる。ところが、前述のように計算システムに対して、いつ、どのようなジョブが投入されるかが不明なことがある。
需要予測にとって、「どのような」とは、ジョブの処理内容ではなく「所要ノード数」である。未投入のジョブに対して、電源切断している計算ノードが必要になるか否か、必要になるとしたら「いつ」、「何台」必要になるかを正確に予測することは容易ではない。第2の実施の形態の計算システムでは、ユーザは、管理ノード11に対するログインを行った上で、ジョブ投入コマンドを入力し、ジョブ実行を依頼する。この場合、ログインしてから初めて投入するジョブが特定のジョブであったり、投入するジョブに順番が存在したり、特定の周期があるジョブを投入するなど、ジョブ投入に傾向がある場合がある。
この傾向を検出できれば、次に「いつ」、「どのような」ジョブが投入されるかを予想でき、計算ノードの需要を予測できる可能性はある。しかし、ログインやジョブ投入のタイミングなどはユーザの自由である。このため、ユーザ毎に傾向が異なり、また、同一ユーザでも複数の傾向をもち、状況によって選択している場合などがある。すなわち、ユーザの傾向を網羅的にパターン化して需要予測を行おうとすると、様々な条件の組み合わせを考慮する必要があり、このような予測プログラムを開発することは困難である。
そこで、管理ノード100は、様々な条件の組み合わせをプログラミングするのではなく、各ユーザのログイン履歴やジョブ履歴から、傾向の要因となる情報を抽出して、機械学習により学習させ、その補間機能および汎化機能により予測を行う。これにより、次のジョブの必要とする計算ノード数と投入タイミングとをおおよそ予測でき、計算ノードの電源を切断していても、必要なタイミングで計算ノードをジョブ受付可能な状態か、それに近い状態(例えば、ブート途中の状態)にすることができる。このため、次のジョブを迅速に実行開始できる。また、その結果、空き計算ノードの消費電力を低減しつつ、ジョブスループットや資源利用効率の低下を抑えることができる。
第2の実施の形態の例では、機械学習機構としてニューラルネットワークを用いるものとした。ただし、教師付き学習機能および汎化機能をもつ他の機械学習機構を用いることも考えられる。このような機械学習機構の例として、サポートベクタマシン(SVM:Support Vector Machine)が挙げられる。
更に、第2の実施の形態の例では、計算ノードの再通電を行う時刻の判定をノード管理部170により行うものとした。一方、当該判定のために、ジョブの投入状態、待ち状態、実行状態、および、計算ノードの保守スケジュールなどを総合的に判断することが求められ、非常に複雑化することも考えられる。一方、ジョブスケジューラ150は、元々これらの状況を判断して、ジョブのスケジューリングを行っており、同じ判断機能をノード管理部170にもたせることは好ましいとはいえない。そこで、予測した計算ノード数をジョブ実行要件とする仮想的ジョブのジョブスクリプトを作成してジョブスケジューラ150により事前スケジューリングさせることが考えられる。その場合、ノード管理部170は、ジョブスケジューラ150によるスケジューリング結果にしたがって計算ノードの再通電を行える。
なお、第1の実施の形態の情報処理は、演算部11bにプログラムを実行させることで実現できる。また、第2の実施の形態の情報処理は、プロセッサ101にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体53に記録できる。ここで、管理ノード100は、プロセッサ101とRAM102とを有するコンピュータを含むと考えてもよい。
例えば、プログラムを記録した記録媒体53を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータ(例えば、ファイルサーバ300)に格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体53に記録されたプログラムまたは他のコンピュータから受信したプログラムを、RAM102やディスク装置40などの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。
10 並列処理装置
11 管理ノード
11a 記憶部
11b 演算部
12,13,14 計算ノード
15 ネットワーク
N1 ニューラルネットワーク

Claims (9)

  1. 複数のジョブを実行する複数のノードと、
    ジョブの投入時に、前記投入時よりも前の実行済ジョブの情報、前記実行済ジョブの実行終了コード、投入対象ジョブと投入済ジョブの情報、および、直前のイベントの発生時から前記投入時までの時間差に基づいて、前記イベントの発生後に投入されるジョブの投入までの時間と当該ジョブの所要ノード数とを機械学習機構により学習し、
    前記イベントが発生すると、前記機械学習機構による学習結果を用いて、次のジョブの投入までの時間と前記次のジョブの所要ノード数とを予測し、予測に応じて前記複数のノードそれぞれの起動状態を制御する、演算部と、
    を有する並列処理装置。
  2. 前記演算部は、前記機械学習機構による学習の際、前記実行済ジョブの情報、前記実行済ジョブの実行終了コード、および、前記投入済ジョブの情報を前記機械学習機構の入力側教師データとし、前記投入対象ジョブの実行に用いられるノードの数、および、前記時間差を出力側教師データとする、請求項1記載の並列処理装置。
  3. 前記演算部は、更に、前記イベントの発生時刻の情報を前記入力側教師データとする、請求項2記載の並列処理装置。
  4. 前記イベントは、ユーザのログインであり、
    前記演算部は、前記ユーザのログイン時に、前記ログイン時よりも前の実行済ジョブの情報、当該実行済ジョブの実行終了コード、および、現在の投入済ジョブの情報を前記機械学習機構に入力し、前記次のジョブの投入までの時間と前記次のジョブの所要ノード数とを計算する、請求項1乃至3の何れか1項に記載の並列処理装置。
  5. 前記イベントは、何れかのジョブの終了であり、
    前記演算部は、当該ジョブの終了時に、前記終了時よりも前の実行済ジョブの情報、当該実行済ジョブの実行終了コード、および、現在の投入済ジョブの情報を前記機械学習機構に入力し、前記次のジョブの投入までの時間と前記次のジョブの所要ノード数とを計算する、請求項1乃至3の何れか1項に記載の並列処理装置。
  6. 前記演算部は、ユーザによるジョブの投入を受け付けると、前記ユーザにより要求されたジョブの実行の履歴および前記ユーザのログインの履歴を用いて前記機械学習機構による学習を行い、学習結果をユーザ毎に記憶部に格納する、請求項1乃至5の何れか1項に記載の並列処理装置。
  7. 前記演算部は、予測した前記次のジョブの投入までの時間と現在時刻とから前記次のジョブの投入が予測される予測時刻を求め、前記所要ノード数と現在起動済の計算ノードの数に応じて、電源オフまたはサスペンド状態である計算ノードのうち前記予測時刻までに起動させる計算ノードの数を決定し、決定した数の計算ノードの起動の所要時間と前記予測時刻とに基づいて、起動対象の計算ノードの起動を開始する時刻を計算する、請求項1乃至6の何れか1項に記載の並列処理装置。
  8. コンピュータに、
    複数のジョブを実行する複数のノードに対するジョブの投入時に、前記投入時よりも前の実行済ジョブの情報、前記実行済ジョブの実行終了コード、投入対象ジョブと投入済ジョブの情報、および、直前のイベントの発生時から前記投入時までの時間差に基づいて、前記イベントの発生後に投入されるジョブの投入までの時間と当該ジョブの所要ノード数とを機械学習機構により学習し、
    前記イベントが発生すると、前記機械学習機構による学習結果を用いて、次のジョブの投入までの時間と前記次のジョブの所要ノード数とを予測する、
    処理を実行させるジョブ管理プログラム。
  9. コンピュータが、
    複数のジョブを実行する複数のノードに対するジョブの投入時に、前記投入時よりも前の実行済ジョブの情報、前記実行済ジョブの実行終了コード、投入対象ジョブと投入済ジョブの情報、および、直前のイベントの発生時から前記投入時までの時間差に基づいて、前記イベントの発生後に投入されるジョブの投入までの時間と当該ジョブの所要ノード数とを機械学習機構により学習し、
    前記イベントが発生すると、前記機械学習機構による学習結果を用いて、次のジョブの投入までの時間と前記次のジョブの所要ノード数とを予測する、
    ジョブ管理方法。
JP2016158758A 2016-08-12 2016-08-12 並列処理装置、ジョブ管理プログラムおよびジョブ管理方法 Withdrawn JP2018026050A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016158758A JP2018026050A (ja) 2016-08-12 2016-08-12 並列処理装置、ジョブ管理プログラムおよびジョブ管理方法
US15/671,669 US20180046505A1 (en) 2016-08-12 2017-08-08 Parallel processing apparatus and job management method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016158758A JP2018026050A (ja) 2016-08-12 2016-08-12 並列処理装置、ジョブ管理プログラムおよびジョブ管理方法

Publications (1)

Publication Number Publication Date
JP2018026050A true JP2018026050A (ja) 2018-02-15

Family

ID=61158989

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016158758A Withdrawn JP2018026050A (ja) 2016-08-12 2016-08-12 並列処理装置、ジョブ管理プログラムおよびジョブ管理方法

Country Status (2)

Country Link
US (1) US20180046505A1 (ja)
JP (1) JP2018026050A (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019194868A1 (en) * 2018-04-05 2019-10-10 The Fin Exploration Company Allocating resources in response to estimated completion times for requests
KR20200068562A (ko) * 2018-12-05 2020-06-15 한국전자통신연구원 클라우드 컴퓨팅 시스템의 워커 스케줄링 방법 및 이를 위한 장치
JP2020129314A (ja) * 2019-02-12 2020-08-27 富士通株式会社 ジョブ電力予測プログラム、ジョブ電力予測方法、およびジョブ電力予測装置
KR20200133484A (ko) * 2019-05-20 2020-11-30 주식회사 에이젠글로벌 분산 병렬 기반 인공지능 예측 모델 관제 장치 및 방법
WO2022044121A1 (ja) * 2020-08-25 2022-03-03 日本電信電話株式会社 リソース量推定装置、リソース量推定方法及びプログラム
JP7405008B2 (ja) 2020-06-08 2023-12-26 富士通株式会社 情報処理装置、情報処理プログラム、及び、情報処理方法
JP7449779B2 (ja) 2020-06-03 2024-03-14 株式会社日立製作所 ジョブ管理方法、及びジョブ管理装置

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019066971A (ja) * 2017-09-29 2019-04-25 キヤノン株式会社 画像形成装置、画像形成装置の制御方法、及びプログラム
US10795724B2 (en) * 2018-02-27 2020-10-06 Cisco Technology, Inc. Cloud resources optimization
GB2572004A (en) * 2018-03-16 2019-09-18 Mcb Software Services Ltd Resource allocation using a learned model
CN109032784A (zh) * 2018-08-07 2018-12-18 郑州云海信息技术有限公司 一种多任务并行构建方法及装置
TWI813745B (zh) * 2018-09-25 2023-09-01 日商夏普股份有限公司 空氣清淨機及空氣清淨機的控制方法
JP6614373B1 (ja) * 2019-02-13 2019-12-04 富士通クライアントコンピューティング株式会社 推論処理システム、推論処理装置及びプログラム
JP7243361B2 (ja) * 2019-03-25 2023-03-22 富士通株式会社 ジョブスケジューラ及びジョブスケジュール制御方法
CN110990144B (zh) * 2019-12-17 2022-11-08 深圳市晨北科技有限公司 一种任务确定方法及相关设备
US11709701B2 (en) * 2019-12-31 2023-07-25 Paypal, Inc. Iterative learning processes for executing code of self-optimizing computation graphs based on execution policies

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6957426B2 (en) * 2001-04-05 2005-10-18 Hewlett-Packard Development Company L.P. Independent tool integration
US20080320482A1 (en) * 2007-06-20 2008-12-25 Dawson Christopher J Management of grid computing resources based on service level requirements
US9419814B2 (en) * 2009-03-03 2016-08-16 Cisco Technology, Inc. Event / calendar based auto-start of virtual disks for desktop virtualization
US8719829B2 (en) * 2009-03-09 2014-05-06 International Business Machines Corporation Synchronizing processes in a computing resource by locking a resource for a process at a predicted time slot
US8291503B2 (en) * 2009-06-05 2012-10-16 Microsoft Corporation Preloading modules for performance improvements
US8782454B2 (en) * 2011-10-28 2014-07-15 Apple Inc. System and method for managing clock speed based on task urgency
JP6191301B2 (ja) * 2013-07-22 2017-09-06 富士通株式会社 情報処理装置、ジョブスケジューリング方法およびジョブスケジューリングプログラム
JP6431257B2 (ja) * 2013-10-21 2018-11-28 キヤノン株式会社 ネットワークシステム及びネットワークデバイスの管理方法、ネットワークデバイスおよびその制御方法とプログラム、管理システム
US10031785B2 (en) * 2015-04-10 2018-07-24 International Business Machines Corporation Predictive computing resource allocation for distributed environments

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019194868A1 (en) * 2018-04-05 2019-10-10 The Fin Exploration Company Allocating resources in response to estimated completion times for requests
KR20200068562A (ko) * 2018-12-05 2020-06-15 한국전자통신연구원 클라우드 컴퓨팅 시스템의 워커 스케줄링 방법 및 이를 위한 장치
KR102448789B1 (ko) * 2018-12-05 2022-09-30 한국전자통신연구원 클라우드 컴퓨팅 시스템의 워커 스케줄링 방법 및 이를 위한 장치
JP2020129314A (ja) * 2019-02-12 2020-08-27 富士通株式会社 ジョブ電力予測プログラム、ジョブ電力予測方法、およびジョブ電力予測装置
JP7177350B2 (ja) 2019-02-12 2022-11-24 富士通株式会社 ジョブ電力予測プログラム、ジョブ電力予測方法、およびジョブ電力予測装置
KR20200133484A (ko) * 2019-05-20 2020-11-30 주식회사 에이젠글로벌 분산 병렬 기반 인공지능 예측 모델 관제 장치 및 방법
KR20210070253A (ko) * 2019-05-20 2021-06-14 주식회사 에이젠글로벌 분산 병렬 기반 인공지능 예측 모델 관제 장치 및 방법
KR102308105B1 (ko) * 2019-05-20 2021-10-01 주식회사 에이젠글로벌 분산 병렬 기반 인공지능 예측 모델 관제 장치 및 방법
KR102421254B1 (ko) * 2019-05-20 2022-07-15 주식회사 에이젠글로벌 분산 병렬 기반 인공지능 예측 모델 관제 장치 및 방법
JP7449779B2 (ja) 2020-06-03 2024-03-14 株式会社日立製作所 ジョブ管理方法、及びジョブ管理装置
JP7405008B2 (ja) 2020-06-08 2023-12-26 富士通株式会社 情報処理装置、情報処理プログラム、及び、情報処理方法
WO2022044121A1 (ja) * 2020-08-25 2022-03-03 日本電信電話株式会社 リソース量推定装置、リソース量推定方法及びプログラム

Also Published As

Publication number Publication date
US20180046505A1 (en) 2018-02-15

Similar Documents

Publication Publication Date Title
JP2018026050A (ja) 並列処理装置、ジョブ管理プログラムおよびジョブ管理方法
US10896372B2 (en) Speculative asynchronous sub-population evolutionary computing
US10084658B2 (en) Enhanced cloud demand prediction for smart data centers
JP6560263B2 (ja) 仮想コンピュータリソースのスケジューリングのためのローリングリソースクレジット
CN103597449B (zh) 操作系统解耦的异构计算
US8996890B2 (en) Method for power conservation in virtualized environments
Gao et al. Quality of service aware power management for virtualized data centers
US8230249B2 (en) Dynamic selection of server states for servers in a cluster of servers
WO2014124448A1 (en) Cost-minimizing task scheduler
US20130339759A1 (en) Method and system for automated application layer power management solution for serverside applications
TW201015289A (en) Coordinated link power management
KR102546060B1 (ko) 블록체인 트랜잭션 처리 방법, 장치, 전자 기기 및 매체
US20200310526A1 (en) Systems and methods for managing power consumption and device resources
US20150378782A1 (en) Scheduling of tasks on idle processors without context switching
US9983907B2 (en) Resource-aware backfill job scheduling
JP5355592B2 (ja) ハイブリッド型のコンピューティング環境を管理するためのシステムおよび方法
US20230127112A1 (en) Sub-idle thread priority class
Ying et al. Optimizing energy, locality and priority in a mapreduce cluster
Zakarya Energy and performance aware resource management in heterogeneous cloud datacenters
Yang Energy-efficient cloud data center with fair service level agreement for green computing
US10936368B2 (en) Workload management with delegated correction of execution issues for improving a functioning of computing machines
Lee et al. Improving data-analytics performance via autonomic control of concurrency and resource units
Badr et al. Task consolidation based power consumption minimization in cloud computing environment
Pete et al. 3E-VMC: An experimental energy efficient model for VMs scheduling over cloud
Leena Sri et al. Speculation based decision support system for efficient resource provisioning in cloud data center

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190513

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20190517

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20190517

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20200220

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200219