(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-09
(45)【発行日】2024-09-18
(54)【発明の名称】演算方法、演算指示システム
(51)【国際特許分類】
G06F 9/50 20060101AFI20240910BHJP
G06Q 50/10 20120101ALI20240910BHJP
【FI】
G06F9/50 150A
G06Q50/10
(21)【出願番号】P 2021045566
(22)【出願日】2021-03-19
【審査請求日】2023-05-23
(73)【特許権者】
【識別番号】524132520
【氏名又は名称】日立ヴァンタラ株式会社
(74)【代理人】
【識別番号】110002365
【氏名又は名称】弁理士法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】林 真一
【審査官】三坂 敏夫
(56)【参考文献】
【文献】特開平7-334466(JP,A)
【文献】特開2002-49495(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/455-9/54
G06Q 50/10
(57)【特許請求の範囲】
【請求項1】
コンピュータが実行する、使用料が安価だが強制停止される可能性がある安価実行部、および使用量が高価だが強制停止されることがない高価実行部を備える演算システムを用いて複数のサブタスクの演算を行う演算方法において、
前記サブタスクのそれぞれが使用するリソース、および時刻ごとの利用可能なリソースに基づき時刻ごとの前記サブタスクの同時実行数を算出する同時実行数算出ステップと、
前記複数のサブタスクの演算が完了すべき完了日時および前記同時実行数に基づき、時刻ごとに前記安価実行部で実行してよいタスク数である安価残数を示す安価実行可能表を作成する安価残数算出ステップと、
前記安価実行可能表を参照して前記サブタスクのそれぞれを前記安価実行部および前記高価実行部のいずれかで実行させる実行指示ステップと、を含む演算方法。
【請求項2】
請求項1に記載の演算方法において、
前記実行指示ステップは、前記同時実行数の限度において、前記安価実行部における前記サブタスクの実行数が前記安価残数を超えない最大の数となるように前記安価実行部における新たな前記サブタスクの実行を指示し、さらに、残りの前記同時実行数の前記サブタスクを前記高価実行部において実行させる、演算方法。
【請求項3】
請求項1に記載の演算方法において、
前記安価残数算出ステップは、作成する安価実行可能表において、前記完了日時から前記サブタスクの実行時間の2倍を引いた時刻である第1時刻と、ゼロとを関連付け、
前記安価残数算出ステップはさらに、前記第1時刻から前記サブタスクの実行時間を引いた時刻である第2時刻と、前記第2時刻における前記同時実行数である第2残数とを関連付け、
前記安価残数算出ステップはさらに、前記第2時刻から前記サブタスクの実行時間を引いた時刻である第3時刻と、前記第2残数に前記第3時刻における前記同時実行数を加えた第3残数とを関連付ける、演算方法。
【請求項4】
請求項1に記載の演算方法において、
前記同時実行数算出ステップは、前記サブタスクを実行することによるリソースへの負荷を測定し、時刻ごとのリソースの残量と測定した前記負荷に基づき前記同時実行数を算出する、演算方法。
【請求項5】
請求項4に記載の演算方法において、
前記時刻ごとのリソースの残量は一定値、または過去の統計から算出される推定量である、演算方法。
【請求項6】
請求項4に記載の演算方法において、
前記サブタスクのそれぞれは、通信経路を介して接続されるストレージから情報を用いて実行され、
前記リソースには、前記通信経路のリソースおよび前記ストレージのリソースが含まれ、
前記同時実行数算出ステップは、前記ストレージの負荷および前記通信経路の負荷に関する過去の統計に基づき、時刻ごとの前記同時実行数を算出する、演算方法。
【請求項7】
請求項6に記載の演算方法において、
前記サブタスクのそれぞれは、データベースサーバを介して前記ストレージから情報を読み取り、
前記リソースには、前記データベースサーバのリソースがさらに含まれ、
前記同時実行数算出ステップは、さらに前記データベースサーバの負荷に関する過去の統計に基づき、時刻ごとの前記同時実行数を算出する、演算方法。
【請求項8】
使用料が安価だが強制停止される可能性がある安価実行部、および使用量が高価だが強制停止されることがない高価実行部を備える演算システムを用いて複数のサブタスクの演算を行う演算指示システムにおいて、
前記サブタスクのそれぞれが使用するリソース、および時刻ごとの利用可能なリソースに基づき時刻ごとの前記サブタスクの同時実行数を算出する同時実行数算出部と、
前記複数のサブタスクの演算が完了すべき完了日時および前記同時実行数に基づき、時刻ごとに前記安価実行部で実行してよいタスク数である安価残数を示す安価実行可能表を作成する安価残数算出部と、
前記安価実行可能表を参照して前記サブタスクのそれぞれを前記安価実行部および前記高価実行部のいずれかで実行させる実行指示部と、を備える演算指示システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、演算方法、および演算指示システムに関する。
【背景技術】
【0002】
不特定多数の利用者が料金の支払いにより演算資源を利用できるサービスが広く知られている。特許文献1には、タスクの定義を受信することであって、前記定義が、必要期限時刻を含み、前記必要期限時刻が、前記タスクの実行の完了に対するユーザー指定期限を含む、受信することと、複数のコンピューティングリソースの各々に対して、前記タスクの前記実行を完了するための推定期間を決定することと、前記複数のコンピューティングリソースの各々に対して、前記タスクの前記実行を完了する推定コストに基づいて、前記コンピューティングリソースのうちの1つ以上を選択することと、前記選択された1つ以上のコンピューティングリソースを使用して、スケジュール設定された時刻に前記タスクの前記実行を開始することであって、前記スケジュール設定された時刻が、少なくとも前記推定期間だけ前記必要期限時刻よりも早い、開始することと、を含む、コンピュータ実装方法が開示されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1に記載されている発明では、タスクの強制停止を考慮した指定日時までのデータ処理ができない。
【課題を解決するための手段】
【0005】
本発明の第1の態様による演算方法は、コンピュータが実行する、使用料が安価だが強制停止される可能性がある安価実行部、および使用量が高価だが強制停止されることがない高価実行部を備える演算システムを用いて複数のサブタスクの演算を行う演算方法において、前記サブタスクのそれぞれが使用するリソース、および時刻ごとの利用可能なリソースに基づき時刻ごとの前記サブタスクの同時実行数を算出する同時実行数算出ステップと、前記複数のサブタスクの演算が完了すべき完了日時および前記同時実行数に基づき、時刻ごとに前記安価実行部で実行してよいタスク数である安価残数を示す安価実行可能表を作成する安価残数算出ステップと、前記安価実行可能表を参照して前記サブタスクのそれぞれを前記安価実行部および前記高価実行部のいずれかで実行させる実行指示ステップと、を含む。
本発明の第2の態様による演算指示システムは、使用料が安価だが強制停止される可能性がある安価実行部、および使用量が高価だが強制停止されることがない高価実行部を備える演算システムを用いて複数のサブタスクの演算を行う演算指示システムにおいて、前記サブタスクのそれぞれが使用するリソース、および時刻ごとの利用可能なリソースに基づき時刻ごとの前記サブタスクの同時実行数を算出する同時実行数算出部と、前記複数のサブタスクの演算が完了すべき完了日時および前記同時実行数に基づき、時刻ごとに前記安価実行部で実行してよいタスク数である安価残数を示す安価実行可能表を作成する安価残数算出部と、前記安価実行可能表を参照して前記サブタスクのそれぞれを前記安価実行部および前記高価実行部のいずれかで実行させる実行指示部と、を備える。
【発明の効果】
【0006】
本発明によれば、タスクの強制停止を考慮して指定日時までのデータ処理ができる。
【図面の簡単な説明】
【0007】
【
図5】タスク使用リソース情報120の一例を示す図
【
図13】ストレージリソース稼働情報190の一例を示す図
【
図14】コンテナ実行サービスの決定方法を説明する図
【
図15】タスク管理部21によるタスク実行処理を示すフローチャート
【発明を実施するための形態】
【0008】
―第1の実施の形態―
以下、
図1~
図15を参照して、コンテナ実行管理システムの第1の実施の形態を説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
【0009】
図1は、コンテナ実行管理システム1の全体構成図である。コンテナ実行管理システム1は、パブリッククラウド2とオンプレミスデータセンタ3とを含み、これらは接続回線4により接続される。パブリッククラウド2およびオンプレミスデータセンタ3における演算は、中央演算装置であるCPUが読み出し専用の記憶装置であるROMに格納されるプログラムを、読み書き可能な記憶装置であるRAMに展開して実行することで実行される。ただし後述する演算の内すくなくとも1つは、CPU、ROM、およびRAMの組み合わせの代わりに書き換え可能な論理回路であるFPGA(Field Programmable Gate Array)や特定用途向け集積回路であるASIC(Application Specific Integrated Circuit)により実現されてもよい。またこれらの演算は、CPU、ROM、およびRAMの組み合わせの代わりに、異なる構成の組み合わせ、たとえばCPU、ROM、RAMとFPGAの組み合わせにより実現されてもよい。
【0010】
パブリッククラウド2は、1または複数のデータセンタを含み膨大な演算リソースを有する。パブリッククラウド2は、不特定多数の企業や組織が使用し、使用に応じてパブリッククラウド2の管理者(以下、「サービス提供者」と呼ぶ)に使用料を支払う。
【0011】
オンプレミスデータセンタ3は、ITシステムを所有する企業が保有するデータセンタである。オンプレミスデータセンタ3の演算リソースはパブリッククラウド2よりも限られたものである。オンプレミスデータセンタ3は、コロケーションサービスを提供するデータセンタ事業者のデータセンタであってもよい。オンプレミスデータセンタ3の利用者(以下、「オペレータ」と呼ぶ)は、安全上の理由などによりデータを外部に持ち出すことができない。本実施の形態ではデータをオンプレミスデータセンタ3に置いたままでパブリッククラウド2の演算リソースを利用した演算処理(以下では「タスク」と呼ぶ)。
【0012】
また本実施の形態では、タスクを細分化したものを「サブタスク」と呼ぶ。サブタスクの処理負荷は略同一であり、どのサブタスクも略同一の処理時間を要する。サブタスク同士には依存関係がなく実行の順番は任意であり、さらに開始の順番と終了の順番が異なっても問題がない。
【0013】
パブリッククラウド2は、安価実行部11、コンテナ12、高価実行部13、DBサーバ14、タスク管理部21、スケール制御部22、およびパブリック監視部23を含む。安価実行部11、高価実行部13、DBサーバ14、タスク管理部21、スケール制御部22、およびパブリック監視部23のそれぞれは、独立した演算装置により実現されてもよいし、1または複数が同一の演算装置により実現されてもよいし、1つの構成が複数の演算装置により実現されてもよい。コンテナ12は、オペレータが処理したいプログラムを含む電子データであり、安価実行部11または高価実行部13により実行される。以下では、安価実行部11および高価実行部13をまとめて「演算システム」とも呼び、タスク管理部21を「演算指示システム」とも呼ぶ。
【0014】
パブリッククラウド2の一部の構成は情報を管理する。たとえばスケール制御部22はDB情報155を管理する。本実施の形態における情報の管理とは、その情報の読み込みおよび書き込みの少なくとも一方を行うことを意味する。これらの情報が格納される領域は特に制限されないが、
図1では便宜的に情報を管理する構成の内部に記載している。
【0015】
安価実行部11は、コンテナ12を動作させるサービスである。安価実行部11は、サービス提供者の都合で実行中のコンテナを強制停止させることがあるが、使用料が安価である。安価実行部11は、サービス品質保証(SLA:Service Level Agreement)の質が低いので、低SLAともいえる。高価実行部13は、コンテナ12を動作させるサービスである。高価実行部13は、実行中のコンテナが強制停止されることはないが、使用料が高価である。高価実行部13は、サービス品質保証の質が高いので、高SLAともいえる。
【0016】
安価実行部11と高価実行部13との相違は、使用料および強制停止の可能性の有無であり、性能に差はない。すなわち安価実行部11を用いてあるサブタスクを実行し強制停止がなかった場合と、高価実行部13を用いて同一のサブタスクを実行した場合には、実行の完了に要する時間は同一である。なお以下では、安価実行部11を用いて実行されるサブタスクを便宜的に「安価サブタスク」とも呼び、高価実行部13を用いて実行されるサブタスクを便宜的に「高価サブタスク」とも呼ぶ。
【0017】
安価実行部11および高価実行部13のそれぞれは複数存在しており、それぞれがタスクを細分化したサブタスクを実行する。なお安価実行部11および高価実行部13のそれぞれは、演算を実行するサービスとして提供されてもよいし、演算を実行するクラスタが提供されてもよい。DBサーバ14は、コンテナ12のデータを蓄積するデータベースである。コンテナ12の処理が増加するほどDBサーバ14の負荷が増加する。
【0018】
タスク管理部21は、コンテナ12を安価実行部11または高価実行部13で実行するか判断し、実行を指示する。タスク管理部21が管理する情報は後述する。スケール制御部22は、DBサーバ14で必要なリソースを増減させる。パブリック監視部23は、パブリッククラウド2の動作、具体的にはDBサーバ14と接続回線4の稼働情報を監視する。パブリック監視部23は、DB稼働情報160および接続回線稼働情報170を管理する。スケール制御部22は、DBサーバ14に関する情報であるDB情報155を管理する。DB情報23については後述する。
【0019】
オンプレミスデータセンタ3は、共有ストレージ15、リソース割当制御部24、およびプライベート監視部25を含む。共有ストレージ15、リソース割当制御部24、およびプライベート監視部25のそれぞれは、独立した演算装置により実現されてもよいし、1または複数が同一の演算装置により実現されてもよいし、1つの構成が複数の演算装置により実現されてもよい。またオンプレミスデータセンタ3では不図示の他のプログラムも動作しており、演算リソースを共有する。すなわちオンプレミスデータセンタ3では演算リソースが限定されている。
【0020】
共有ストレージ15は、ポート16、CPU17、およびドライブ18を含む。厳密には共有ストレージ15は、オンプレミスデータセンタ3のリソースであるポート16、CPU17、およびドライブ18を用いて実現される。共有ストレージ15には、コンテナ12が演算で使用するデータが格納され、パブリッククラウド2のコンテナ12からの要求に応じてデータを提供し、受信したデータを格納する。ポート16は、接続回線4と接続し、データを送受信するためのポートである。CPU17は、DBサーバ14から受信するデータ読み書きの命令を処理するCPUである。ドライブ18は、データを蓄積するドライブである。
【0021】
すなわち共有ストレージ15は、単なる記憶媒体ではなく、高速なデータの読み書きを実現するためにリソースを必要に応じて増加させる。ただし前述のとおり他のプログラムも動作しているので、共有ストレージ15が使用するポート16、CPU17、およびドライブ18は必要最低限であることが望ましい。
【0022】
リソース割当制御部24は、共有ストレージ15へのポート16、CPU17、ドライブ18の割当て量を制御する。リソース割当制御部24は、ストレージ情報180を管理する。プライベート監視部25は、オンプレミスデータセンタ3の監視、具体的には共有ストレージ15と接続回線4の稼働情報を管理する。プライベート監視部25は、ストレージリソース稼働情報190を管理する。
【0023】
図2は、タスク管理部21が管理する情報を示す図である。タスク管理部21は、タスク情報100、サブタスク情報110、タスク使用リソース情報120、コンテナ実行環境情報130、最大並列度情報140、および安価実行可能表150を管理する。これらの情報を
図3~
図7を参照して説明する。
【0024】
図3は、タスク情報100の一例を示す図である。タスク情報100には、タスクに関する情報が格納される。タスク情報100は複数のレコードから構成され、各レコードはタスクID101、開始日時102、完了日時103、コンテナイメージ104、環境変数名105、環境変数値106、vCPU数107、およびメモリ容量108を含む。
【0025】
タスクID101は、タスクを識別する識別子を示す。開始日時102は、タスクを開始する日時を示す。完了日時103は、タスクが完了しなければならない日時を示す。コンテナイメージ104は、タスクを実行するためのコンテナのイメージの登録先、換言すると格納場所を示す。
【0026】
環境変数名105は、コンテナに与える引数の名前を示す。環境変数値106は、サブタスクのパラメータのリストを示す。
図3に示す例では環境変数値106はカンマ区切りで表示しており、要素数分のサブタスクが作られる。vCPU数107は、コンテナに割り当てるvCPU数を示す。メモリ容量108は、コンテナに割り当てるメモリ容量を示す。オペレータは、タスク情報100を更新することでタスク管理部21へのタスクを登録する。
【0027】
図4は、サブタスク情報110の一例を示す図である。サブタスク情報110には、タスクを構成するサブタスクに関する情報が格納される。オペレータによりタスク情報100にタスクが登録されると、タスク管理部21がタスク情報100に登録された情報に基づきサブタスク情報110を更新する。サブタスク情報110は複数のレコードから構成され、各レコードは、タスクID111、サブタスクID112、環境変数名113、環境変数値114、状態115、およびコンテナID116を含む。
【0028】
タスクID111は、タスクを識別する識別子であり、
図3のタスクID101と同種の情報である。サブタスクID112は、サブタスクの識別子を示す。環境変数名113と環境変数値114は、サブタスクにおいて実行するコンテナに渡す引数を示す。状態115は、サブタスクの状態を示す。コンテナID116は、状態115が「実行中」の場合に実行に用いているコンテナの識別子である。タスク管理部21は、サブタスクの状態が変換すると該当するサブタスクの状態115を更新する。
【0029】
図5は、タスク使用リソース情報120の一例を示す図である。タスク使用リソース情報120には、タスクが使用するリソースの情報が格納される。タスク使用リソース情報120は、オペレータにより更新される。タスク使用リソース情報120は複数のレコードから構成され、各レコードは、タスクID121、DB ID122、ストレージID123、ストレージリソースID124を含む。
【0030】
タスクID121は、タスクを識別する識別子であり、
図3のタスクID101と同種の情報である。DB ID122は、タスクで実行されるコンテナがデータを格納するために使用するデータベースの識別子を示す。ストレージID123は、データベースのデータを格納するストレージの識別子を示す。ストレージリソースID124は、データベースのデータを格納するために使用されるストレージのリソースの識別子を示す。リソースのIDとはたとえば、ポート16、CPU17、ドライブ18のIDである。
【0031】
図6は、コンテナ実行環境情報130の一例を示す図である。コンテナ実行環境情報130には、コンテナを実行する環境に関する情報が格納される。コンテナ実行環境情報130は複数のレコードから構成され、各レコードは、コンテナID131、種別132、コンテナ実行環境名133を含む。
【0032】
コンテナID131は、コンテナ実行環境の識別子を示し、
図4におけるコンテナID116と同種の情報である。種別132は、コンテナ実行環境が安価実行部11および高価実行部13のいずれであるかを示す。ただし
図6では、安価実行部11を「安価」、高価実行部13を「高価」と記載している。コンテナ実行環境名133は、コンテナを実行する環境の名前を示す。
【0033】
図7は、最大並列度情報140の一例を示す図である。最大並列度情報140には、タスクごと、および時刻ごとに、最大の並列度、すなわち同時に実行可能なサブタスクの数の情報が格納される。最大並列度情報140は、タスク管理部21により作成される。最大並列度情報140は複数のレコードから構成され、各レコードは、タスクID141、日時142、最大並列度143を含む。タスクID141は、タスクを識別する識別子であり、
図3のタスクID101と同種の情報である。
図7の最初のレコードは、「タスク0」は「2020年12月25日19時」には、最大で「3」つのサブタスクが同時に実行可能であることを示している。
【0034】
図8は、安価実行可能表150の一例を示す図である。安価実行可能表150は、タスク管理部21により更新される。安価実行可能表150には、タスクごとおよび時間ごとに安価実行部11を利用可能な条件が格納される。安価実行可能表150は複数のレコードから構成され、各レコードは、タスクID151、安価残数152、日時153を含む。タスクID151は、タスクを識別する識別子であり、
図3のタスクID101と同種の情報である。安価残数152は、その時刻以降に安価実行部11を利用できるサブタスクの数である。換言すると、その時刻において記載された数以上の未完了のタスクが存在する場合には、高価実行部13を利用することになる。
【0035】
図8の最初のレコードは、「タスク0」は「2020年12月26日4時0分」以降は安価実行部11を利用できないことが示されている。
図8の2番目のレコードは、「タスク0」は「2020年12月26日2時0分」以降は安価実行部11を利用できるサブタスク数が「2」であることが示されている。すなわち
図8に示す1番目~3番目のレコードをあわせると、「タスク0」は「2020年12月26日」において、0時~2時は「4」つのサブタスクが安価実行部11を利用でき、2時~4時は「2」つのサブタスクが安価実行部11を利用でき、4時以降は安価実行部11を利用できず全て高価実行部13をすることが示されている。
【0036】
たとえば「2020年12月26日3時」に実行中のサブタスクはなく、「3」つのサブタスクが残っている場合には、次のように処理される。すなわち、「2」つのサブタスクを安価実行部11で実行され、残り「1」つのサブタスクを高価実行部13で実行される。
【0037】
図9は、スケール制御部22が管理するDB情報155の一例を示す図である。DB情報155には、DBサーバ14上で動作するデータベースの情報が格納される。DB情報155は複数のレコードから構成され、各レコードは、DB ID156、接続先157、およびvCPU数158を含む。DB ID156は、データベースの識別子を示し、
図5のDB ID122と同種の情報である。接続先157は、データベースに接続するための接続先の情報を示す。vCPU数158は、データベースが使用している仮想CPUの数を示す。
【0038】
図10は、パブリック監視部23が管理するDB稼働情報160の一例を示す図である。DB稼働情報160には、DBサーバ14上で動作するデータベースの稼働状況の情報が格納される。パブリック監視部23はたとえば、所定の時間が経過するごとにDB稼働情報160に新たなレコードを追加する。DB稼働情報160は複数のレコードから構成され、各レコードは、DB ID161、日時162、平均CPU使用率163を含む。
図10の最初のレコードには、「DB0」の「2020年12月25日12時0分」における平均CPU使用率が「30%」であったことが示されている。
【0039】
図11は、パブリック監視部23が管理する接続回線稼働情報170の一例を示す図である。接続回線稼働情報170は、接続回線4の稼働状況を示す。パブリック監視部23はたとえば、所定の時間が経過するごとに接続回線稼働情報170に新たなレコードを追加する。接続回線稼働情報170は複数のレコードから構成され、各レコードは、接続回線ID171、日時172、送信量173、および受信量174を含む。送信量173および受信量174は、具体的な通信速度でもよいし、最大値に対する比率でもよい。
図11の最初のレコードには、「回線0」の「2020年12月25日12時0分」における通信は送信量が「20%」、受信量が「10%」であったことが示されている。
【0040】
図12は、リソース割当制御部24が管理するストレージ情報180の一例を示す図である。ストレージ情報180は、DBサーバ14上で動作するデータベースが保持するデータを格納する共有ストレージ15の情報を示す。ストレージ情報180は複数のレコードから構成され、各レコードは、ストレージID181と、接続先182とを含む。ストレージID181は、データベースのデータを格納するストレージの識別子でありストレージID123と同種の情報である。
【0041】
図13は、リソース割当制御部24が管理するストレージリソース稼働情報190の一例を示す図である。ストレージリソース稼働情報190は、ストレージリソースの時系列の稼働率を示す。ストレージリソース稼働情報190は複数のレコードから構成され、各レコードは、ストレージID191、リソースID192、日時193、および稼働率194を含む。ストレージID191は、データベースのデータを格納するストレージの識別子でありストレージID123と同種の情報である。リソースID192は、ストレージのリソースの識別子であり、ストレージリソースID124と同種の情報である。稼働率194はリソースの稼働状況を示す情報であり、たとえば最大負荷に対する現在の負荷の割合を示す。
【0042】
図14は、コンテナ実行サービスの決定方法を説明する図である。オペレータは実行したい処理をタスクとして定義する。タスクでは、実行するコンテナのイメージを指定する。タスクは1以上のサブタスクから構成される。前述のとおり、サブタスクには依存関係がなく、実行の順番は任意である。またサブタスクを実行した順序と終了する順序が異なっても問題はない。サブタスクには、コンテナに渡す引数が定義されている。引数と共にコンテナを実行することでサブタスクが処理される。
【0043】
グラフ30は、横軸が時間の経過を表し、具体的には、グラフ30の左から右に向かって時間が経過している。またグラフ30の右に示す符号33の一点鎖線は、タスク全体を終了させるべき時刻である完了日時103を示す。グラフ30の縦軸はサブタスクの種類を示し、具体的にはグラフ30の上から下に向かって順番にサブタスク1~サブタスク8が示されている。またグラフ30の下部には、最大並列度情報140の最大並列度143の値が示されている。サブタスク平均実行時間34は、サブタスクの過去の実行時間の平均値を示す。
【0044】
図14において太線で示す階段状の符号36はサブタスク完了期限36であり、サブタスク1~8を順番に完了させる場合の各サブタスクの完了期限を示している。サブタスク完了期限36は、サブタスク平均実行時間34と最大並列度35とから計算される。たとえば符号33の時刻にサブタスクの残量がゼロになる必要があるので、符号33の時刻からサブタスク平均実行時間34だけ遡った時刻には、その時間帯における最大並列度と同数、たとえば「2」のサブタスクのみが許容される。そしてその時刻からさらにサブタスク平均実行時間34だけ遡った時刻には、先ほどの数値、たとえば「2」にその時間帯における最大並列度の数を加えた数値、たとえば「4」のサブタスクのみが許容される。
【0045】
図14において、ハッチングで示す安価利用不可38は、安価実行部11を利用できない時間帯を示す。安価利用不可38で示される領域は、サブタスク平均実行時間34、およびサブタスク完了期限36を用いて算出される。具体的には、サブタスク完了期限36からサブタスク平均実行時間34の2倍の時間を差し引いた時刻が安価利用不可38の始期となる。
【0046】
図14において細い四角で囲まれるサブタスクは、安価実行部11を用いて実行される安価サブタスク39である。
図14において太い四角で囲まれるサブタスクは、高価実行部13を用いて実行される高価サブタスク39である。タスク管理部21は、それぞれのサブタスクの実行を開始する時点で安価サービスが利用不可であれば、高価実行部13を利用し、そうでなければ安価実行部11を利用してコンテナを実行する。
【0047】
図15は、タスク管理部21によるタスク実行処理を示すフローチャートである。タスク管理部21は、現在時刻とタスク情報100のいずれかの開始日時102とが一致すると、
図15に示す処理を開始する。
【0048】
ステップS201において、タスク管理部21はサブタスクの試走を行う。具体的にはタスク管理部21はまず、サブタスク情報110に基づき、開始したタスクに登録されたサブタスクからあらかじめ定められた数のサブタスクを選択する。そしてタスク管理部21は、コンテナ実行環境情報130に基づき、種別132が「安価」であるサービスに対して、サブタスクをあらかじめ定められた並列度で実行する。
【0049】
続くステップS202において、タスク管理部21は、ステップS201において実行したサブタスクの試走結果を取得する。具体的にはタスク管理部21は、ステップS201において実行したサブタスクが完了するのを待ち、パブリック監視部23からDB稼働情報160と接続回線稼働情報170を取得する。さらにタスク管理部21は、プライベート監視部25からストレージリソース稼働情報190を取得する。タスク管理部21は、サブタスクの実行に要した時間の平均を記録し、サブタスクの実行前後を比較して、DBサーバ14、接続回線4、共有ストレージ15に対するサブタスク1個あたりの負荷の量をそれぞれ記録する。
【0050】
続くステップS203において、タスク管理部21は、ステップS202において取得した時系列の平均CPU使用率163から、将来の平均CPU使用率を計算する。
【0051】
続くステップS204において、タスク管理部21は、ステップS203において計算した将来の平均CPU使用率に、ステップS202において計算したサブタスク1個当たりの平均CPU使用率を追加し、あらかじめ定めた閾値に到達しない最大のサブタスクの数を計算する。タスク管理部21は、送信量173、受信量174、および稼働率194についても同様に計算する。タスク管理部21は、計算した平均CPU使用率163、送信量173、受信量174、稼働率194の中でサブタスク数の最小値を時系列の最大並列度として最大並列度情報140に記録する。
【0052】
なおステップS204においてタスク管理部21は、パブリッククラウド2またはオンプレミスデータセンタ3において動作している他のプログラム等が接続回線4に与える影響を考慮してもよい。たとえばタスク管理部21は、接続回線稼働情報170に記録されている1日前や1週間前の同時刻における接続回線4の稼働状況を参照し、当日も同様に送信量173や受信量174などが変化するとして最大並列度を算出してもよい。またこのステップS204の処理は、「同時実行数算出ステップ」とも呼ぶ。
【0053】
ステップS205において、タスク管理部21は、次のように安価実行可能表150を更新してステップS206に進む。まずタスク管理部21は、完了日時103からステップS202において測定したサブタスク実行時間の2倍だけ遡った時刻(以下、「第1時刻」とも呼ぶ)と、残りサブタスク数「0」とを、安価実行可能表150に記録する。
【0054】
次にタスク管理部21は、その時刻からサブタスク実行時間だけさらに遡った時刻(以下、「第2時刻」とも呼ぶ)と、第2時刻における最大並列度(以下、「第2残数」とも呼ぶ)とを、安価実行可能表150に記録する。さらにタスク管理部21は、第2時刻からサブタスク実行時間をさかのぼった時刻(以下、「第3時刻」とも呼ぶ)と、第2残数と第3時刻における最大並列度との和(以下、「第3残数」とも呼ぶ)とを安価実行可能表150に記録する。タスク管理部21はこの処理を、残りサブタスク数がサブタスク情報110に記載されたサブタスク数となるまで繰り返す。このステップS205の処理を「安価残数算出ステップ」とも呼ぶ。
【0055】
ステップS206において、タスク管理部21は、最大並列度情報140を参照してその時刻における最大並列度を読み取り、その値から実行中のサブタスク数を差し引く。タスク管理部21は、この引き算の結果を新たに実行すべきサブタスク数として決定する。なおステップS206~S211、特にステップS208~S210を「実行指示ステップ」とも呼ぶ。
【0056】
続くステップS207において、タスク管理部21は、前回のタスク実行時と比較して現在時刻における最大並列度が変化した場合に、並列度の差分と、ステップS202において、タスク管理部21は、計算したサブタスク1個あたりの負荷の量に基づき、負荷の変化量をスケール制御部22とリソース割当制御部24に通知する。スケール制御部22は、通知を受けて、DBサーバ14に割り当てるvCPU数を変更する。リソース割当制御部24は、通知を受けて、共有ストレージ15に割り当てるリソースを変更する。
【0057】
ステップS208において、タスク管理部21は、サブタスク情報110における状態115が「実行中」および「未実行」のサブタスク数の合計が、安価実行可能表150におけるその時刻の安価残数152以下であるか否かを判断する。タスク管理部21は、ステップS208を肯定判断する場合はステップS209に進み、否定判断する場合はステップS210に進む。
【0058】
ステップS209ではタスク管理部21は、実行サブタスク数の限度で全て安価実行部11で「未実行」であるサブタスクを実行してステップS211に進む。ステップS210ではタスク管理部21は、実行サブタスク数の限度で、安価残数152から「実行中」のタスク数を差し引いた数のサブタスクを安価実行部11で実行し、残りのサブタスクを高価実行部13で実行する。
【0059】
ステップS206、S208~S210の具体例を説明する。まず前提を説明する。最大並列度情報140から読み取った最大並列度が「3」、安価実行部11において実行中のサブタスク数が「1」、高価実行部13において実行中のサブタスクが「0」とする。また、その時刻の最大並列度が「3」、その時刻の安価残数152が「2」、サブタスク情報110における状態115が「未実行」のタスクが「2」との前提を設ける。
【0060】
この場合におけるタスク管理部21のステップS206、S208~S210の動作は以下のとおりである。まずタスク管理部21は、S206における実行サブタスク数は「3」-「1」で「2」と算出する。次にタスク管理部21は、S208において「未実行」である「2」と「実行中」である「1」の和は安価残数152の「2」よりも大きいので否定判断してS210に進む。そしてS210ではタスク管理部21は、安価残数152の「2」から実行中の「1」を引いた「1」つのサブタスクを安価実行部11において実行し、残り「1」つのサブタスクを高価実行部13で実行する。この例では実行サブタスク数が「2」なので、S210において合計2つのサブタスクが実行できる。
図15に戻って説明を続ける。
【0061】
ステップS211ではタスク管理部21は、次の3つの点でサブタスク情報110を更新してステップS212に進む。第1に、ステップS209またはステップS210において実行を開始したサブタスクの情報を反映する点である。具体的にはタスク管理部21は、該当するサブタスクのレコードを対象に、状態115を「実行中」に変更し、コンテナID116を新たに試用を開始したコンテナ実行環境の識別子とする。第2に、すでに実行中であったが新たに実行が完了したサブタスクの情報を反映する点である。具体的にはタスク管理部21は、該当するサブタスクのレコードを対象に、状態115を「完了」に変更し、コンテナID116を削除する。第3に、安価実行部11において実行中であったが中断されたサブタスクの情報を反映する点である。具体的には該当するサブタスクのレコードを対象に、状態115を「未実行」に変更し、コンテナID116を削除する。
【0062】
ステップS212ではタスク管理部21は、サブタスク情報110の全てのレコードの状態115が「完了」となっているか否かを判断する。タスク管理部21は、全てのレコードの状態115が「完了」となっていると判断する場合は
図15に示す処理を終了し、1つでも状態115が「完了」となっていないレコードが存在する場合はステップS206に戻る。
【0063】
上述した第1の実施の形態によれば、次の作用効果が得られる。
(1)コンピュータであるタスク管理部21が実行する演算方法は、演算システムを用いて複数のサブタスクの演算を行わせる。演算システムには、使用料が安価だが強制停止される可能性がある安価実行部11、および使用量が高価だが強制停止されることがない高価実行部13が含まれる。タスク管理部21が実行する演算方法は、サブタスクのそれぞれが使用するリソース、および時刻ごとの利用可能なリソースに基づき時刻ごとのサブタスクの同時実行数を算出する同時実行数算出ステップ(ステップS204)と、複数のサブタスクの演算が完了すべき完了日時および同時実行数に基づき、時刻ごとに安価実行部で実行してよいタスク数である安価残数を示す安価実行可能表150を作成する安価残数算出ステップ(ステップS205)と、安価実行可能表を参照してサブタスクのそれぞれを安価実行部および高価実行部のいずれかで実行させる実行指示ステップ(ステップS206~S211)と、を含む。そのため、強制停止を考慮して完了日時までに安価にサブタスクを完了させることができる。
【0064】
(2)実行指示ステップ(ステップS206~S211)は、同時実行数の限度において、安価実行部11におけるサブタスクの実行数が安価残数を超えない最大の数となるように安価実行部11における新たなサブタスクの実行を指示し、さらに、残りの同時実行数のサブタスクを高価実行部13において実行させる。そのため、強制停止されると完了日時までに完了できない場合は、高価実行部13を利用して完了日時までにすべてのサブタスクの実行を完了させることができる。
【0065】
(3)安価残数算出ステップ(ステップS205)は、作成する安価実行可能表150において、
図8の最初のレコードのように、終了時刻からサブタスクの実行時間の2倍を引いた時刻である第1時刻である「4:00」と、ゼロとを関連付ける。安価残数算出ステップではさらに、第1時刻からサブタスクの実行時間である2時間を引いた時刻である「2:00」(第2時刻)と、第2時刻における同時実行数である第2残数「2」とを関連付ける。安価残数算出ステップではさらに、第2時刻からサブタスクの実行時間である2時間を引いた時刻である「0:00」(第3時刻)と、第2残数である「2」に第3時刻における同時実行数である「2」を加えた第3残数「4」とを関連付ける。そのため、簡易な演算により安価実行可能表150を作成できる。
【0066】
(4)同時実行数算出ステップは、サブタスクを実行することによるリソースへの負荷を測定し、時刻ごとのリソースの残量と測定した負荷に基づき同時実行数を算出する。そのため、時刻ごとに精度の高い同時実行数を算出できる。
【0067】
(5)時刻ごとのリソースの残量は過去の統計から算出される推定量である。そのため、周期的な負荷の変動を同時実行数の算出に考慮することができる。
【0068】
(6)サブタスクのそれぞれは、通信経路4を介して接続される共有ストレージ15から情報を用いて実行される。リソースには、通信経路4のリソースおよび共有ストレージ15のリソースが含まれる。同時実行数算出ステップは、共有ストレージ15の負荷および通信経路4の負荷に関する過去の統計に基づき、時刻ごとの同時実行数を算出する。そのため、共有ストレージ15および通信経路4の負荷の負荷を反映した同時実行数を算出できる。
【0069】
(7)サブタスクのそれぞれは、データベースサーバ14を介して共有ストレージ15から情報を読み取る。リソースには、データベースサーバ14のリソースが含まれる。同時実行数算出ステップは、データベースサーバ14の負荷に関する過去の統計に基づき、時刻ごとの同時実行数を算出する。そのため、データベースサーバ14の負荷も反映した同時実行数を算出できる。
【0070】
(変形例1)
上述した実施の形態では、DBサーバ14、接続回線4、および共有ストレージ15は、オペレータだけでなく他の利用者と共有しており他の利用者が利用するので日時により負荷が変動することを前提としていた。しかしDBサーバ14、接続回線4、および共有ストレージ15は、他の利用者による負荷が変動しない前提でもよい。すなわち、他の利用者が存在しないケースや、他の利用者は存在するがオペレータが利用可能なDBサーバ14、接続回線4、および共有ストレージ15のリソースは常に一定値に制限されるケースが含まれてもよい。この場合には、
図15のステップS203に示した将来負荷予測、およびステップS204における最大並列度算出の処理が軽減される。
【0071】
(変形例2)
上述した実施の形態では、
図15のステップS204に示す最大並列度の算出において、DBサーバ14の負荷を考慮した。しかし、最大並列度の算出においてDBサーバ14の負荷を考慮しなくてもよい。たとえばDBサーバ14のリソースに十分な余裕がある場合には、最大並列度の算出においてDBサーバ14の負荷を考慮しないことで最大並列度の算出を簡易化できる。
【0072】
(変形例3)
上述した実施の形態では、タスク管理部21はパブリッククラウド2に配された。しかしタスク管理部21は、パブリッククラウド2およびオンプレミスデータセンタ3と通信が可能であればどこに配されてもよい。たとえばタスク管理部21は、オンプレミスデータセンタ3に置かれてもよいし、パブリッククラウド2およびオンプレミスデータセンタ3以外の場所に配されてもよい。またタスク管理部21は、複数のハードウエア装置により実現され、その複数のハードウエア装置が異なる場所に存在してもよい。たとえば、タスク管理部21がパブリッククラウド2およびオンプレミスデータセンタ3のリソースを用いて実現されてもよい。
【0073】
上述した各実施の形態および変形例において、機能ブロックの構成は一例に過ぎない。別々の機能ブロックとして示したいくつかの機能構成を一体に構成してもよいし、1つの機能ブロック図で表した構成を2以上の機能に分割してもよい。また各機能ブロックが有する機能の一部を他の機能ブロックが備える構成としてもよい。
【0074】
上述した各実施の形態および変形例は、それぞれ組み合わせてもよい。上記では、種々の実施の形態および変形例を説明したが、本発明はこれらの内容に限定されるものではない。本発明の技術的思想の範囲内で考えられるその他の態様も本発明の範囲内に含まれる。
【符号の説明】
【0075】
2…パブリッククラウド
3…オンプレミスデータセンタ
11…安価実行部
12…コンテナ
13…高価実行部
14…DBサーバ
15…共有ストレージ
21…タスク管理部