(57)【要約】【課題】  スロットリングが頻発した場合であっても実行されるジョブの遅延をできるだけ避けることを可能とさせる。【解決手段】  ジョブ実行システムは、割り当てられたジョブおよびスロットリングをそれぞれに実行する、第１計算ノードと、第１計算ノードと別の計算ノードである第２計算ノードと、を備えるサーバと、ジョブを管理するジョブスケジューラと、を備える。ジョブを実行する第１計算ノードは、所定時間内においてスロットリングが実行された時間の累計である累計時間が所定の時間閾値を超えたか否かを判定し、累計時間が時間閾値を超えた場合、その旨の通知をジョブスケジューラに送信する。通知を受信したジョブスケジューラは、第１計算ノードで実行中のジョブを一時停止させ、一時停止させたジョブを第２計算ノードに割り当て、割り当てたジョブをリスタートさせる。【選択図】  図１
2020047140.tif 000002
【特許請求の範囲】
【請求項１】
割り当てられたジョブおよびスロットリングをそれぞれに実行する、第１計算ノードと、前記第１計算ノードと別の計算ノードである第２計算ノードと、を備えるサーバと、
前記ジョブを管理するジョブスケジューラと、
を備え、
前記ジョブを実行する前記第１計算ノードは、所定時間内においてスロットリングが実行された時間の累計である累計時間が所定の時間閾値を超えたか否かを判定し、前記累計時間が前記時間閾値を超えた場合、その旨の通知を前記ジョブスケジューラに送信し、
前記通知を受信した前記ジョブスケジューラは、前記第１計算ノードで実行中の前記ジョブを一時停止させ、一時停止させた前記ジョブを第２計算ノードに割り当て、割り当てた前記ジョブをリスタートさせる
ことを特徴とするジョブ実行システム。
【請求項２】
前記第１計算ノードは、
前記ジョブが割り付けられる際にカウント値をリセットし、前記第１計算ノードにおいて前記スロットリングがオンになるとカウントを開始し、前記スロットリングがオフされるとカウントを停止し、前記カウントの値であるカウント値を計測し、前記カウント値を前記累計時間として前記スロットリングがオフされるたびに送信するスロットリングカウンタと、
前記時間閾値を予め記憶し、前記累計時間が前記時間閾値を超えた場合、その旨を示す通知を、前記ジョブスケジューラに送信する超過判定部と
を備える請求項１記載のジョブ実行システム。
【請求項３】
前記第１計算ノードは、さらに、
温度を検出する温度センサと、
前記スロットリングをオンする温度閾値である第１温度閾値と、前記スロットリングをオフする温度閾値である第２温度閾値とを、あらかじめ保持し、前記温度センサによって検出された温度が前記第１温度閾値を上回る場合に前記スロットリングをオンにし、前記スロットリングカウンタに対して前記スロットリングをオンした旨の通知を送信し、一方、前記温度が前記第２温度閾値を下回る場合、前記スロットリングをオフにし、前記スロットリングカウンタに対して前記スロットリングをオフした旨の通知を送信するスロットリング制御部と
を備える請求項２記載のジョブ実行システム。
【請求項４】
前記ジョブスケジューラは、前記第１計算ノードで実行中の前記ジョブを一時停止させる際、当該ジョブに対して中断した位置を示すチェックポイントを設定する請求項１乃至３のいずれか１項に記載のジョブ実行システム。
【請求項５】
割り当てられたジョブおよびスロットリングをそれぞれに実行する、第１計算ノードと、前記第１計算ノードと別の計算ノードである第２計算ノードと、を備えるサーバと、
前記ジョブを管理するジョブスケジューラと、
をジョブ実行システムに設け、
前記ジョブを実行する前記第１計算ノードは、所定時間内においてスロットリングが実行された時間の累計である累計時間が所定の時間閾値を超えたか否かを判定し、前記累計時間が前記時間閾値を超えた場合、その旨の通知を前記ジョブスケジューラに送信し、
前記通知を受信した前記ジョブスケジューラは、前記第１計算ノードで実行中の前記ジョブを一時停止させ、一時停止させた前記ジョブを第２計算ノードに割り当て、割り当てた前記ジョブをリスタートさせる
ことを特徴とするジョブ実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ジョブ実行システムおよびジョブ実行方法に関する。
【背景技術】
【０００２】
近年、ＡＩ分析等で大規模計算の要求が高まっており、計算能力の向上が求められている。そこで、一台のサーバに、たとえば、ＰＣＩｅ（Peripheral Component Interconnect Express）拡張カードタイプのアクセラレータ（計算ノードとも呼ぶ）を複数台搭載することにより、高性能のコンピュータシステムが実現される。上記において、ＡＩは、Artificial Intelligenceの略である。また、ＰＣＩｅは、ＰＣＩ−ＳＩＧの登録商標である。
【０００３】
しかしながら、このＰＣＩｅ拡張カードタイプのアクセラレータは、計算処理能力が高いがゆえに消費電力が高くなるため、プロセッサの温度上昇が問題となっている。
【０００４】
そこで、多くのアクセラレータは、スロットリングと呼ばれる機能を搭載している。スロットリングは、たとえば、アクセラレータに搭載されるプロセッサのクロックや命令発行のレートを抑えることによりプロセッサのパフォーマンスを抑制することで温度上昇を抑制させ、データの信頼性を保証し、システムの寿命を延ばす機能である。
【０００５】
上記に関連して、たとえば、特許文献１には、スケジューラが、ジョブ管理テーブルに登録されている使用計算機群についてそれらの温度が高いか調べ、１台でも温度が高いと判断された場合は、その計算機上のジョブを他の温度の低い計算機に移動する技術が記載されている。
【０００６】
特許文献２には、スケジュール作成部が、制御目標テーブルとタスクテーブルを参照して動作周波数に応じたタスクのスケジューリングを行う技術が記載されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００４−１２６９６８号公報
【特許文献２】特開２００５−３４６３０１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
スロットリングによりシステムの停止は回避される。しかしながら、逆に、エラーが表面化しないため、スロットリングが頻発した場合、すなわち、所定時間内におけるスロットリングの実行累計時間が一定値を超えた場合、性能が中途半端に低下した状態で使用され続けられる可能性がある。この場合、結果的に、ジョブの完了時間が長期化する虞がある。
【０００９】
特許文献１、２の技術は、いずれも、スロットリングによる性能低下に伴い発生する問題を解決するための技術ではない。
【００１０】
本発明は、上記課題を解決するためになされたものであり、スロットリングが頻発した場合であっても実行されるジョブの遅延をできるだけ避けることが可能な技術を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明のジョブ実行システムは、割り当てられたジョブおよびスロットリングをそれぞれに実行する、第１計算ノードと、前記第１計算ノードと別の計算ノードである第２計算ノードと、を備えるサーバと、前記ジョブを管理するジョブスケジューラと、を備え、前記ジョブを実行する前記第１計算ノードは、所定時間内においてスロットリングが実行された時間の累計である累計時間が所定の時間閾値を超えたか否かを判定し、前記累計時間が前記時間閾値を超えた場合、その旨の通知を前記ジョブスケジューラに送信し、前記通知を受信した前記ジョブスケジューラは、前記第１計算ノードで実行中の前記ジョブを一時停止させ、一時停止させた前記ジョブを第２計算ノードに割り当て、割り当てた前記ジョブをリスタートさせる。
【００１２】
本発明のジョブ実行方法は、割り当てられたジョブおよびスロットリングをそれぞれに実行する、第１計算ノードと、前記第１計算ノードと別の計算ノードである第２計算ノードと、を備えるサーバと、前記ジョブを管理するジョブスケジューラと、をジョブ実行システムに設け、前記ジョブを実行する前記第１計算ノードは、所定時間内においてスロットリングが実行された時間の累計である累計時間が所定の時間閾値を超えたか否かを判定し、前記累計時間が前記時間閾値を超えた場合、その旨の通知を前記ジョブスケジューラに送信し、前記通知を受信した前記ジョブスケジューラは、前記第１計算ノードで実行中の前記ジョブを一時停止させ、一時停止させた前記ジョブを第２計算ノードに割り当て、割り当てた前記ジョブをリスタートさせることを特徴とする。
【発明の効果】
【００１３】
本発明によれば、スロットリングが頻発した場合であっても実行されるジョブの遅延をできるだけ避けることが可能となる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１の実施形態に係るジョブ実行システムの構成例を示すブロック図である。
【図２】図１に示されるジョブ実行システムの動作例（ジョブ実行方法）を説明するためのフローチャートである。
【図３】本発明の第２の実施形態に係るジョブ実行システムの構成例を示すブロック図である。
【図４】スロットリングの実行例を示す図である。
【図５】図３に示すジョブ実行システムの動作例（計算処理方法）を説明するためのフローチャートである。
【図６】第２の実施形態による効果を説明するための図である。
【発明を実施するための形態】
【００１５】
［第１の実施形態］
図１は、本発明の第１の実施形態に係るジョブ実行システム５００の構成例を示すブロック図である。ジョブ実行システム５００は、割り当てられたジョブおよびスロットリングをそれぞれに実行する、第１計算ノード５３０と、第１計算ノード５３０と別の計算ノードである第２計算ノード５４０と、を備えるサーバ５２０と、ジョブを管理するジョブスケジューラ５１０と、を備える。第１計算ノード５３０および第２計算ノード５４０は、それぞれに１つ以上のプロセッサを搭載する。プロセッサは、たとえば、ＣＰＵ（Central Processing Unit）やＧＰＵ（Graphics Processing Unit）である。ＧＰＵは、近年では汎用の高速な数値計算装置として様々な分野（たとえば、科学技術計算や暗号処理、仮想通貨、音声認識・合成、人工知能）で利用されるようになっている。このようなＧＰＵは、ＧＰＧＰＵ(General Purpose GPU)あるいはＧＰＵコンピューティングと呼ばれる。また、プロセッサは、ＣＰＵにＧＰＵの機能を統合したものであってもよい。
【００１６】
スロットリングとは、第１計算ノード５３０および第２計算ノード５４０上の各プロセッサの、たとえば、クロックや命令発行のレートを抑えることで計算ノードのパフォーマンスを抑制する機能である。
【００１７】
ジョブを実行する第１計算ノード５３０は、所定時間内においてスロットリングが実行された時間の累計である累計時間が所定の時間閾値を超えたか否かを判定し、累計時間が時間閾値を超えた場合、その旨の通知をジョブスケジューラ５１０に送信する。上記の所定時間とは、所定の単位時間のことであり、基本的には任意の時間長である。ただし、一般的には、１つのジョブの遂行時間はとても短いので、所定時間＝１つのジョブが遂行される時間、と見なすことができる。また、時間閾値は、たとえば、スロットリングが頻発していると判断可能な時間長である。時間閾値は、ユーザの経験に基づいて、あるいは所定の計算ルールによる計算によって、任意に設定することができる。
【００１８】
上記通知を受信したジョブスケジューラ５１０は、第１計算ノード５３０で実行中のジョブを一時停止させ、ジョブを第２計算ノード５４０に割り当て、割り当てたジョブをリスタートさせる。
【００１９】
図２は、図１に示されるジョブ実行システム５００の動作例（ジョブ実行方法）を説明するためのフローチャートである。
【００２０】
ジョブを実行する第１計算ノード５３０は、累計時間が時間閾値を超えたか否かを判定し、累計時間が時間閾値を超えた場合、その旨の通知をジョブスケジューラ５１０に送信する（ステップＳ１００）。
【００２１】
上記通知を受信したジョブスケジューラ５１０は、第１計算ノード５３０で実行中のジョブを一時停止させ、一時停止させたジョブを第２計算ノード５４０に割り当て、割り当てたジョブをリスタートさせる（ステップＳ１０１）。
【００２２】
以上説明した第１の実施形態において、ジョブを実行する第１計算ノード５３０におけるスロットリングの累計時間が時間閾値を超えたことが検知された場合、その旨の通知がジョブスケジューラ５１０へ送信される。ジョブスケジューラ５１０は、第１計算ノード５３０で実行中のジョブを一時停止させ、ジョブを第２計算ノード５４０に割り当て、割り当てたジョブをリスタートさせる。
【００２３】
従って、第１の実施形態では、スロットリングにより性能低下している計算ノード（たとえば、第１計算ノード５３０）が使い続けられることが回避され、結果として、ジョブ実行時間が長くなることを防ぐことができる。
【００２４】
なお、スロットリングの詳細制御や、計算ノードおよびジョブスケジューラの各詳細構成については、後述する第２の実施形態にて説明する。
［第２の実施形態］
（構成の説明）
図３は、本発明の第２の実施形態に係るジョブ実行システム１の構成例を示すブロック図である。
【００２５】
ジョブ実行システム１は、ジョブスケジューラ１０と、複数の計算ノードを含む１つ以上のサーバ２０と、を含む。図３では、１つ以上のサーバが「サーバ２０」であり、複数の計算ノードが「計算ノード４０（図１の第１計算ノードに相当）」および「計算ノード４１（図１の第２計算ノードに相当）」である場合が例示される。もちろん、図３の例示はあくまで一例あって、サーバおよび計算ノードのそれぞれの数は上記に限定されない。計算ノードは、たとえば、ＰＣＩｅ拡張カードタイプのアクセラレータである。
【００２６】
サーバ２０とジョブスケジューラ１０とは、ネットワークを介して接続される。
【００２７】
サーバ２０は、計算ノード制御部３０と、計算ノード４０と、計算ノード４１と、を備える。
【００２８】
計算ノード制御部３０は、サーバ２０内の計算ノード４０および計算ノード４１を制御するユニットであって、たとえば、ジョブスケジューラ１０からの指示を各計算ノードへ送信し、各計算ノードからの通知をジョブスケジューラ１０へ送信する。
【００２９】
具体的には、計算ノード制御部３０は、超過判定部４０３から、カウント値が時間閾値を超えた旨の通知を受信すると、当該通知をジョブスケジューラ１０へ送信する。
【００３０】
計算ノード４０は、温度センサ４００と、スロットリング制御部４０１と、スロットリングカウンタ４０２と、超過判定部４０３と、を有する。なお、計算ノード４０および計算ノード４１は、それぞれに１つ以上のプロセッサ（図３において不図示）を搭載する。また、スロットリングとは、計算ノード４０および計算ノード４１上の各プロセッサの、たとえば、クロックや命令発行のレートを抑えることで計算ノードのパフォーマンスを抑制する機能である。なお、計算ノード４１の各構成は、計算ノード４０と同等であるため、計算ノード４１の各構成についての説明は省略する。
【００３１】
温度センサ４００は、計算ノード４０の温度を検出する。計算ノード４０の温度とは、例えば、計算ノード４０内で最も温度が上昇するデバイスの温度である。また、温度は、複数のポイント（たとえば、高温となりそうなでデバイスであるプロセッサや電源部の各位置）で測定された各温度の平均値であってもよい。
【００３２】
スロットリング制御部４０１は、スロットリングをオンする温度閾値である第１温度閾値と、スロットリングをオフする温度閾値である第２温度閾値とを、あらかじめ保持している。この場合、第１温度閾値と第２温度閾値との関係は、「第１温度閾値＞第２温度閾値」である。
【００３３】
図４は、スロットリングの実行例を示す図である。図４において、縦軸は、計算ノード（例えば、計算ノード４０）の温度であり、横軸は、時間である。温度センサ４００によって検出された温度が第１温度閾値を上回る場合、スロットリング制御部４０１は、計算ノード４０のスロットリングをオンにし、スロットリングカウンタ４０２へ、スロットリングをオンした旨の通知を送信する。スロットリングがオンになると、たとえば、クロックや命令発行のレートが抑制され、計算ノード４０のパフォーマンスを低下する。
【００３４】
一方、検出された温度が第２温度閾値を下回る場合、スロットリング制御部４０１は、計算ノード４０のスロットリングをオフにし、スロットリングカウンタ４０２へ、スロットリングをオフした旨の通知を送信する。
【００３５】
なお、温度閾値は、必ずしも２つ（第１温度閾値および第２温度閾値）である必要はなく、１つであってもよい。その場合、検出された温度がその１つの温度閾値を上回った場合にはスロットリングをオンにし、検出された温度がその温度閾値以下の場合にはスロットリングをオフにする制御が実行される。
【００３６】
スロットリングカウンタ４０２は、所定時間内においてスロットリングが実行された時間の累計である累計時間を計測する。スロットリングカウンタ４０２は、ジョブが割り付けられる際にカウント値をリセットし、スロットリング制御部４０１から、計算ノード４０のスロットリングをオンしたことの通知が送信されると、カウントを開始する。一方、スロットリング制御部４０１から、計算ノード４０のスロットリングをオフしたことの通知が送信されると、スロットリングカウンタ４０２は、カウントを停止させるとともに、そのカウント値を累計時間として計測し、累計時間を、スロットリングがオフされるたびに、超過判定部４０３へ送信する。カウント値は、リセットされてから次にリセットされるまで、スロットリングのオン／オフにかかわらず維持される。すなわち、カウント値は、累計時間を反映している。
【００３７】
超過判定部４０３は、所定の時間閾値（第１の実施形態参照）を予め記憶している。すなわち、所定時間内においてスロットリングが実行された時間の累計である累計時間が上記時間閾値を超えたか否かを判定することは、計算ノード４０の性能が一定程度低下していることを測定することと同等である。
【００３８】
累計時間が時間閾値を超えた場合、超過判定部４０３は、その旨を示す通知を計算ノード制御部３０へ送信する。
【００３９】
計算ノード制御部３０は、累計時間が時間閾値を超えた旨を示す通知をジョブスケジューラ１０へ送信する。
【００４０】
ジョブスケジューラ１０は、サーバ２０の計算ノード制御部３０から、ジョブを実行する計算ノード４０において累計時間が時間閾値を超えた旨を示す通知を受信する。ジョブスケジューラ１０は、計算ノード４０で実行中のジョブを一時停止させ、このジョブを別の計算ノード（たとえば、計算ノード４１）に割り当てる。そして、ジョブスケジューラ１０は、別の計算ノードに対して、割り当てたジョブをリスタートさせる指示を行う。
【００４１】
なお、ジョブスケジューラ１０は、計算ノード４０で実行中のジョブを一時停止させる際、当該ジョブに対して中断した位置を示すチェックポイントを設定してもよい。このようにすることにより、ジョブをリスタートさせる際、中断した位置からリスタートさせることができる。
【００４２】
また、ジョブスケジューラ１０は、ジョブを割り付ける際に、ジョブが割り付けられる計算ノードのスロットリングカウンタ４０２をリセットする。
（動作の説明）
図５は、図３に示すジョブ実行システム１の動作例（計算処理方法）を説明するためのフローチャートである。
【００４３】
ジョブスケジューラ１０は、ジョブを割り付ける計算ノード（例えば、計算ノード４０）を決定する（ステップＳ１）。ジョブスケジューラ１０は、計算ノード４０のスロットリングカウンタ４０２に対してリセットを指示する（ステップＳ２）。スロットリングカウンタ４０２は、ジョブスケジューラ１０からのリセット指示を受けカウントをリセットする（ステップＳ３）。
【００４４】
ジョブスケジューラ１０は、計算ノード４０に対してジョブを投入する（ステップＳ４）。計算ノード４０ではジョブの実行が開始される（ステップＳ５）。やがて、計算ノード４０では、ジョブの実行により温度が上昇し、スロットリング制御部４０１によりスロットリングのオンとオフが繰り返される（ステップＳ６）。スロットリングカウンタ４０２は、スロットリングがオフされるたびに、累計時間を計測する。
【００４５】
スロットリングが頻発することで、累計時間が時間閾値を超えるようになると（ステップＳ７）、超過判定部４０３は、累計時間が時間閾値を超えた旨の通知を計算ノード制御部３０へ送信する。計算ノード制御部３０は、ジョブを実行する計算ノード４０において累計時間が時間閾値を超えた旨を示す通知をジョブスケジューラ１０へ送信する。ジョブスケジューラ１０は、サーバ２０の計算ノード制御部３０から、ジョブを実行する計算ノード４０において累計時間が時間閾値を超えた旨を示す通知を受信する（ステップＳ８）。
【００４６】
ジョブスケジューラ１０は、計算ノード４０で実行中のジョブに対しチェックポイントを設定し（ステップＳ９）、一時停止させる（ステップＳ１０）。その後、ジョブスケジューラ１０は、一時停止させたジョブを割り当てる計算ノード（例えば、計算ノード４１）を決定する（ステップＳ１１）。ジョブスケジューラ１０は、計算ノード４１のスロットリングカウンタ４０２に対してカウントのリセットを指示する（ステップ１２）。スロットリングカウンタ４０２は、ジョブスケジューラ１０からのリセット指示を受けカウントをリセットする（ステップＳ１３）。ジョブスケジューラ１０は、計算ノード４１に対して、一時停止したジョブについて、チェックポイントのリストアおよび再開を指示する（ステップＳ１４）。計算ノード４１において、一時停止したジョブが再開される（ステップＳ１５）。
（効果の説明）
図６は、以上説明した第２の実施形態による効果を説明するための図である。以下では、たとえば、ファンの故障等で冷却性能が低下した計算ノード４０でジョブを実行したケースを想定して説明する。
【００４７】
一般的なジョブ実行システムの場合、ジョブ完了に至るまでの間に幾度もスロットリングが有効になり、ジョブの実行を計算ノード４０でそのまま続けていると、スロットリングの度にジョブの進行が停滞するため、結果的に、ジョブの完了時間が長くなってしまう。
【００４８】
一方、本実施形態のジョブ実行システム１は、計算ノード４０におけるスロットリングの累計時間が時間閾値を超えていると判断した場合、ジョブを実行させるノードを、別の計算ノードである計算ノード４１に切り替え、当該ジョブを再開させる。この場合、計算ノード４１ではファンの故障等は発生していない可能性が高いため、スロットリングは発生しないか、あるいは、その頻度は高くない。従って、スロットリングによってジョブ実行が停滞することがなく、結果としてジョブ実行時間が長くなることを回避することができる。
【００４９】
なお、以上説明した第２の実施形態において、「別の計算ノード」は、ジョブを実行している計算ノード以外の計算ノードであれば十分である。ただし、この場合、「別の計算ノード」を、たとえば、エラー（特に、発熱に関連するエラー）が発生していない計算ノードとすると、再開するジョブの実行長期化をより一層確実に阻止することができて好適である。
【００５０】
以上、各実施形態を用いて本発明を説明したが、本発明の技術的範囲は、上記各実施形態の記載に限定されない。上記各実施形態に多様な変更又は改良を加えることが可能であることは当業者にとって自明である。従って、そのような変更又は改良を加えた形態もまた本発明の技術的範囲に含まれることは説明するまでもない。また、以上説明した各実施形態において使用される、数値や各構成の名称等は例示的なものであり適宜変更可能である。
【符号の説明】
【００５１】
１  ジョブ実行システム
１０  ジョブスケジューラ
２０  サーバ
３０  計算ノード制御部
４０  計算ノード
４１  計算ノード
４００  温度センサ
４０１  スロットリング制御部
４０２  スロットリングカウンタ
４０３  超過判定部
５００  ジョブ実行システム
５１０  ジョブスケジューラ
５２０  サーバ
５３０  第１計算ノード
５４０  第２計算ノード
【図１】
2020047140.tif 000003
【図２】
2020047140.tif 000004
【図３】
2020047140.tif 000005
【図４】
2020047140.tif 000006
【図５】
2020047140.tif 000007
【図６】
2020047140.tif 000008