(57)【要約】【課題】使用するリソースの種類が異なる複数の処理について処理要求があった場合でも、処理毎に適切なリソースを割り当てることができる、情報処理装置、プログラム及び情報処理システムを提供する。【解決手段】使用するリソースの種類が異なる複数の処理の各々を、要求された期間内に実行することを要求する処理要求を取得する取得手段と、前記複数の処理の各々を、前記要求された期間内に処理するのに必要なリソースの種類及び量を見積もる見積もり手段と、見積もりの結果、前記リソースが不足する場合に、リソースを管理する管理手段に対して不足分のリソースを増設する指示を行う指示手段と、を備えた情報処理装置である。【選択図】図１
2020021160.tif 000002
【特許請求の範囲】
【請求項１】
使用するリソースの種類が異なる複数の処理の各々を、要求された期間内に実行することを要求する処理要求を取得する取得手段と、
前記複数の処理の各々を、前記要求された期間内に処理するのに必要なリソースの種類及び量を見積もる見積もり手段と、
見積もりの結果、前記リソースが不足する場合に、リソースを管理する管理手段に対して不足分のリソースを増設する指示を行う指示手段と、
を備えた情報処理装置。
【請求項２】
前記複数の処理の各々に対応するリソースを割り当て、リソースが充足した場合に、処理要求を保持した後に出力する出力手段から対応するリソースに処理要求を出力する、
請求項１に記載の情報処理装置。
【請求項３】
前記見積もり手段は、
前記指示手段によりリソースの増設が指示された場合に、前記出力手段から前記処理要求を出力する前に、リソースの増設に要する時間を考慮して、前記必要なリソースの種類及び量の見積もりをやり直す、
請求項２に記載の情報処理装置。
【請求項４】
前記リソースが仮想マシンであり、
前記仮想マシンの種類に応じて仮想マシンの中で動作する動作環境の搭載数が予め定められており、
前記リソースの量が、前記処理要求が分割された複数の分割処理要求を並列に処理する複数の動作環境の個数である、
請求項１から請求項３までのいずれか１項に記載の情報処理装置。
【請求項５】
前記指示手段は、
既存の動作環境のうち使用されていない動作環境の個数に応じて、前記仮想マシンを増設する増設数を取得する、
請求項４に記載の情報処理装置。
【請求項６】
前記指示手段は、
前記複数の処理の各々について、対応する仮想マシンの種類毎に前記仮想マシンを増設する増設数を取得する、
請求項４または請求項５に記載の情報処理装置。
【請求項７】
前記出力手段は、
処理要求が分割された複数の分割処理要求の各々に応じた複数の待ち行列を備え、
前記複数の待ち行列の各々に対応する分割処理要求を保持する、
請求項２に記載の情報処理装置。
【請求項８】
前記複数の処理が、先の処理の結果を用いて次の処理を実行する連携処理である場合に、
前記見積もり手段は、前記複数の処理間で前記必要なリソースの量が等しくなるように前記必要なリソースの量を見積もり、
前記指示手段は、前記不足分のリソースを増設する指示を、前記複数の処理についてまとめて行う、
請求項１から請求項７までのいずれか１項に記載の情報処理装置。
【請求項９】
前記複数の処理が、並列に実行される並列処理である場合に、
前記見積もり手段は、前記複数の処理の各々について前記必要なリソースの量を見積もり、
前記指示手段は、前記複数の処理の各々について前記不足分のリソースを増設する指示を行う、
請求項１から請求項７までのいずれか１項に記載の情報処理装置。
【請求項１０】
前記見積もり手段は、
前記複数の処理が、媒体毎に行われる処理である場合に、
１つの媒体当たりの単位処理時間に応じて、前記必要なリソースの種類及び量を見積もる、
請求項１から請求項９までのいずれか１項に記載の情報処理装置。
【請求項１１】
コンピュータを、請求項１から請求項１０までのいずれか１項に記載の情報処理装置の各手段として機能させるためのプログラム。
【請求項１２】
請求項１から請求項１０までのいずれか１項に記載の情報処理装置と、
処理要求に応じて複数の処理の各々を実行するリソースと、
前記リソースを管理する管理手段と、
を備えた情報処理システム。  
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、プログラム、及び情報処理システムに関する。
【背景技術】
【０００２】
特許文献１には、要求された処理を複数のコンピュータノードに分散して実行するシステムにおいて、該システムで実行するタスクの管理を行うコンピュータノードが、納期が指定された処理要求を受け付けた際に、記憶部に記憶された、前記システムが備えるコンピュータノードが実行するタスクを管理する管理情報を参照して、該処理要求のタスクをコンピュータノードに割り当てるシミュレーションを実行し、前記割り当てのシミュレーションにより、前記処理要求のタスクを納期内に処理終了可能なコンピュータノードがなく、さらに他のコンピュータノードでも納期内に処理終了可能なタスクを移動しても前記処理要求のタスクを納期内に処理終了可能なコンピュータノードを用意できないと判定された場合に、前記システムにコンピュータノードを増設する処理を実行することを特徴とするオートスケーリング方法が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−２１０６８３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来、処理要求の負荷に応じてリソースを増減するオートスケール処理という技術が知られている。オートスケール処理では、一律に同一種類のリソースを割り当てることを想定して、処理負荷が既存のリソース量を超えると仮想マシンを増設していた。
【０００５】
本発明の目的は、使用するリソースの種類が異なる複数の処理について処理要求があった場合でも、処理毎に適切なリソースを割り当てることができる、情報処理装置、プログラム及び情報処理システムを提供することにある。
【課題を解決するための手段】
【０００６】
本発明の情報処理装置の各態様について説明する。
第１の態様は、使用するリソースの種類が異なる複数の処理の各々を、要求された期間内に実行することを要求する処理要求を取得する取得手段と、前記複数の処理の各々を、前記要求された期間内に処理するのに必要なリソースの種類及び量を見積もる見積もり手段と、見積もりの結果、前記リソースが不足する場合に、リソースを管理する管理手段に対して不足分のリソースを増設する指示を行う指示手段と、を備えた情報処理装置である。
【０００７】
第２の態様は、処理要求を保持した後に出力する出力手段を更に備え、前記複数の処理の各々に対応するリソースを割り当て、リソースが充足した場合に、処理要求を保持した後に出力する出力手段から対応するリソースに処理要求を出力する、第１の態様に係る情報処理装置である。
【０００８】
第３の態様は、前記見積もり手段は、前記指示手段によりリソースの増設が指示された場合に、前記出力手段から前記処理要求を出力する前に、リソースの増設に要する時間を考慮して、前記必要なリソースの種類及び量の見積もりをやり直す、第２の態様に係る情報処理装置である。
【０００９】
第４の態様は、前記リソースが仮想マシンであり、前記仮想マシンの種類に応じて仮想マシンの中で動作する動作環境の搭載数が予め定められており、前記リソースの量が、前記処理要求が分割された複数の分割処理要求を並列に処理する複数の動作環境の個数である、第１から第３までのいずれか１つの態様に係る情報処理装置である。
【００１０】
第５の態様は、前記指示手段は、既存の動作環境のうち使用されていない動作環境の個数に応じて、前記仮想マシンを増設する増設数を取得する、第４の態様に係る情報処理装置である。
【００１１】
第６の態様は、前記指示手段は、前記複数の処理の各々について、対応する仮想マシンの種類毎に前記仮想マシンを増設する増設数を取得する、第４または第５の態様に係る情報処理装置である。
【００１２】
第７の態様は、前記出力手段は、処理要求が分割された複数の分割処理要求の各々に応じた複数の待ち行列を備え、前記複数の待ち行列の各々に対応する分割処理要求を保持する、第２の態様に係る情報処理装置である。
【００１３】
第８の態様は、前記複数の処理が、先の処理の結果を用いて次の処理を実行する連携処理である場合に、前記見積もり手段は、前記複数の処理間で前記必要なリソースの量が等しくなるように前記必要なリソースの量を見積もり、前記指示手段は、前記不足分のリソースを増設する指示を、前記複数の処理についてまとめて行う、第１から第７までのいずれか１つの態様に係る情報処理装置である。
【００１４】
第９の態様は、前記複数の処理が、並列に実行される並列処理である場合に、前記見積もり手段は、前記複数の処理の各々について前記必要なリソースの量を見積もり、前記指示手段は、前記複数の処理の各々について前記不足分のリソースを増設する指示を行う、第１から第７までのいずれか１つの態様に係る情報処理装置である。
【００１５】
第１０の態様は、前記見積もり手段は、前記複数の処理が、媒体毎に行われる処理である場合に、１つの媒体当たりの単位処理時間に応じて、前記必要なリソースの種類及び量を見積もる、第１から第９までのいずれか１つの態様に係る情報処理装置である。
【００１６】
本発明のプログラムは、コンピュータを、上記第１から第１０までのいずれか１つの態様に係る情報処理装置の各手段として機能させるためのプログラムである。
【００１７】
本発明の情報処理システムは、上記第１から第１０までのいずれか１つの態様に係る情報処理装置と、処理要求に応じて複数の処理の各々を実行するリソースと、前記リソースを管理する管理手段と、を備えた情報処理システムである。
【発明の効果】
【００１８】
本発明の第１の態様に係る情報処理装置によれば、使用するリソースの種類が異なる複数の処理について処理要求があった場合でも、処理毎に適切なリソースを割り当てることができる。
【００１９】
本発明の第２の態様に係る情報処理装置によれば、リソースが充足するまで処理要求を待機させることができる。
【００２０】
本発明の第３の態様に係る情報処理装置によれば、必要なリソースの見積もり精度が向上する。
【００２１】
本発明の第４の態様に係る情報処理装置によれば、仮想マシンの中で動作する動作環境が複数ある場合であっても、処理毎に適切な動作環境を割り当てることができる。
【００２２】
本発明の第５の態様に係る情報処理装置によれば、必要なリソースをすべて増設する場合に比べて、仮想マシンの無駄な増設が減少する。
【００２３】
本発明の第６の態様に係る情報処理装置によれば、処理毎に適切な種類及び個数の仮想マシンを割り当てることができる。
【００２４】
本発明の第７の態様に係る情報処理装置によれば、複数の分割処理要求を並列に出力することができる。
【００２５】
本発明の第８の態様に係る情報処理装置によれば、連携処理の後の処理について、リソースを予め増設しておくことができる。
【００２６】
本発明の第９の態様に係る情報処理装置によれば、並列処理の各処理について、処理毎に適切なリソースを割り当てることができる。
【００２７】
本発明の第１０の態様に係る情報処理装置によれば、複数の処理の各々が媒体毎に行われる処理であっても、処理毎に適切なリソースを割り当てることができる。
【００２８】
本発明のプログラムによれば、使用するリソースの種類が異なる複数の処理について処理要求があった場合でも、処理毎に適切なリソースを割り当てることができる。
【００２９】
本発明の情報処理システムによれば、使用するリソースの種類が異なる複数の処理について処理要求があった場合でも、処理毎に適切なリソースを割り当てることができる。
【図面の簡単な説明】
【００３０】
【図１】本発明の実施の形態に係る情報処理システムの構成の一例を示すブロック図である。
【図２】処理要求管理部の構成の一例を示すブロック図である。
【図３】処理実行部の構成の一例を示すブロック図である。
【図４】処理手順の一例を示す模式図である。
【図５】「対応処理」の処理の流れの一例を示すフローチャートである。
【図６】処理要求の処理例を示す模式図である。
【図７】処理要求の分割例を示す模式図である。
【図８】仮想マシンの種類毎にコンテナの空き状況の一例を示す模式図である。
【図９】処理要求の他の処理例を示す模式図である。
【図１０】処理要求の他の分割例を示す模式図である。
【図１１】「増設数の計算処理」の処理の流れの一例を示すフローチャートである。
【図１２】仮想マシンＡの増設数の一例を示す模式図である。
【図１３】仮想マシンＢの増設数の一例を示す模式図である。
【図１４】仮想マシンＡの各コンテナの処理スケジュールの一例を示す模式図である。
【図１５】仮想マシンＢの各コンテナの処理スケジュールの一例を示す模式図である。
【図１６】第２の実施の形態に係る処理手順の一例を示す模式図である。
【図１７】第２の実施の形態に係る処理要求の処理例を示す模式図である。
【図１８】第２の実施の形態に係る処理要求の分割例を示す模式図である。
【図１９】第３の実施の形態に係る処理手順の一例を示す模式図である。
【図２０】第３の実施の形態に係る処理要求の処理例を示す模式図である。
【図２１】第３の実施の形態に係る処理要求の分割例を示す模式図である。
【図２２】第３の実施の形態に係る処理要求の他の分割例を示す模式図である。
【発明を実施するための形態】
【００３１】
以下、図面を参照して本発明の実施の形態の一例を詳細に説明する。
【００３２】
＜第１の実施の形態＞
（情報処理システム）
まず、情報処理システムについて説明する。
図１は本発明の実施の形態に係る情報処理システムの構成の一例を示す概略図である。図１に示すように、情報処理システム１０は、利用者が使用する端末装置６と、インターネットやＬＡＮ等の有線又は無線の通信回線８を介して相互に通信可能に接続されている。情報処理システム１０は、端末装置６から処理の実行を要求する処理要求を受け付け、処理要求に応じて処理を実行する。情報処理システム１０は、処理結果を端末装置６に出力する。なお、図１では１個の端末装置６を図示するが、端末装置６は複数配置されていてもよい。
【００３３】
情報処理システム１０は、コンピュータ資源（リソース）を提供するクラウドコンピューティングを利用したシステムである。本実施の形態では、情報処理システム１０は、システムの負荷に応じて、システムが有するリソースの量を自動で変更する（オートスケール）。システムの負荷が増加した場合には、新たなリソースを増設するスケールアウトを行う。一方、システムの負荷が減少した場合には、既存のリソースを削減するスケールシュリンクを行う。例えば、使用されていないリソースを削減する。システムの負荷は、例えば、メモリの使用率やデータ転送量から推定する。
【００３４】
次に、情報処理システム１０の機能的な構成について説明する。
情報処理システム１０は、処理要求管理部１２、処理手順記憶部１４、オートスケール管理部１６、キュー１８、及び処理実行部３０を備えている。以下、各部の機能について説明する。以下に説明する通り、情報の授受が必要な部同士は、情報の授受が可能に接続されている。情報処理システム１０の全部または一部は、クラウド上に配置されている。少なくとも処理実行部３０は、クラウド上に配置されている。
【００３５】
処理要求管理部１２は、端末装置６からの処理要求を受け付ける。処理要求は、処理対象となる情報、及び、処理の完了が要求された期間（以下、「要求処理時間」という。）に関する情報を含む。本実施の形態では、処理要求に係る処理は、使用するリソースの種類が異なる複数の処理を含む。処理要求は、これら複数の処理を実行することを要求するものである。
【００３６】
処理実行部３０は、種類が異なる複数のリソースを備えている。処理実行部３０は、複数のリソースを使用して、処理要求に係る処理を実行する。処理手順記憶部１４は、処理内容に応じて処理手順を記憶している。処理要求管理部１２は、処理手順記憶部１４から、処理要求に係る処理内容に応じた処理手順を取得する。処理要求管理部１２は、取得された処理手順に応じて、処理要求を要求処理時間内に処理するのに必要なリソースの種類及び量を見積もる。
【００３７】
キュー１８は、先入れ先出し（ＦＩＦＯ）方式のデータ構造で情報を保持する記憶装置である。キュー１８は「待ち行列」とも称される。キュー１８は、処理要求管理部１２から処理要求を受け取り、受け取った処理要求を一時的に保持する。キュー１８は、リソースが不足している間は、処理要求を保持する。キュー１８は、リソースが充足すると、処理実行部３０に処理要求を出力する。
【００３８】
なお、図１では１個のキュー１８を図示するが、処理要求を分割して並列に処理する場合は、分割数に応じた個数の複数のキュー１８を用意する。処理要求は、複数の分割処理要求に分割される。複数の分割処理要求の各々は、別々のキュー１８に保持される。処理実行部３０は、複数のキュー１８の各々から対応する分割処理要求を取り出して、複数の分割処理要求を並列に処理する。
【００３９】
オートスケール管理部１６は、キュー１８の負荷を監視し、キュー１８の負荷に応じてシステムが有するリソースの量を自動で変更する。また、オートスケール管理部１６は、処理実行部３０のリソースの量や使用状況を管理している。オートスケール管理部１６は、処理実行部３０に新たなリソースを増設するスケールアウトを行うと共に、処理実行部３０の既存のリソースを削減するスケールシュリンクを行う。
【００４０】
処理要求管理部１２は、見積もりの結果、処理実行部３０のリソースが不足する場合に、リソースを管理するオートスケール管理部１６に対して不足分のリソースを増設する指示を行う。オートスケール管理部１６は、処理要求管理部１２からスケールアウトの指示を受けた場合に、処理実行部３０に新たなリソースを増設する。なお、処理要求管理部１２が、「取得手段」、「見積もり手段」、「指示手段」の一例である。キュー１８が「出力手段」の一例である。オートスケール管理部１６が「管理手段」の一例である。
【００４１】
（処理要求管理部）
次に、処理要求管理部１２の構成について説明する。
図２は処理要求管理部の構成の一例を示すブロック図である。図２に示すように、処理要求管理部１２は、情報処理部２０を備えている。情報処理部２０は、装置全体の制御及び各種演算を行うコンピュータとして構成されている。処理要求管理部１２が本発明の「情報処理装置」の一例である。
【００４２】
情報処理部２０は、ＣＰＵ２０Ａ、各種プログラムを記憶したＲＯＭ２０Ｂ、プログラムの実行時にワークエリアとして使用されるＲＡＭ２０Ｃ、各種データを記憶する不揮発性のメモリ２０Ｄ、及び入出力インターフェース（Ｉ／Ｏ）２０Ｅを備えている。ＣＰＵ２０Ａ、ＲＯＭ２０Ｂ、ＲＡＭ２０Ｃ、メモリ２０Ｄ、及びＩ／Ｏ２０Ｅの各々は、バス２０Ｆを介して接続されている。
【００４３】
各種プログラムや各種データは、他の記憶装置に記憶されていてもよく、ＣＤ−ＲＯＭ等の記録媒体に記録されていてもよい。また、各種プログラムや各種データは、通信を介して取得されてもよい。
【００４４】
Ｉ／Ｏ２０Ｅには、外部装置と通信を行うためのインターフェースである通信部２４、及び外部記憶装置である記憶部２２が接続されている。情報処理部２０は、各部との間で情報の授受を行って、各部を制御する。
【００４５】
例えば、後述する「対応処理」を実行するためのプログラムは、ＲＯＭ２０Ｂ、メモリ２０Ｄ、及び記憶部２２のいずれかの記憶装置に記憶されていてもよい。
【００４６】
（処理実行部）
次に、処理実行部３０の構成について説明する。
図３は処理実行部の構成の一例を示すブロック図である。図３に示すように、処理実行部３０は、クラウド上で動作する仮想マシンをリソースとして備えている。処理実行部３０は、種類が異なる複数の仮想マシンを備えている。なお、クラウド上で動作する仮想マシンは「インスタンス」とも称される。
【００４７】
仮想マシンは、種類に応じて仮想マシンの中で動作する動作環境（以下、「コンテナ」という。）の搭載数が予め定められている。複数のコンテナの各々は独立して動作する。複数のコンテナにより並列処理が可能である。
【００４８】
図示した例では、処理実行部３０は、種類が異なる複数の仮想マシンとして、仮想マシン３２Ａと仮想マシン３２Ｂとを備えている。仮想マシン３２Ａ及び仮想マシン３２Ｂの各々の個数は、システムの負荷に応じて増減し、１個または２個以上となる。また、図示した例では、仮想マシンＡは２個のコンテナ３４Ａを搭載しており、仮想マシンＢは４個のコンテナ３４Ｂを搭載している。
【００４９】
なお、以下では、仮想マシンの種類を区別する場合は、仮想マシンＡと仮想マシンＢとして両者を区別する。また、仮想マシンの種類に応じてコンテナを区別する場合は、コンテナａとコンテナｂとして両者を区別する。
【００５０】
（処理手順）
次に、処理手順について説明する。
図４は処理手順の一例を示す模式図である。図４に示す手順は「領収書画像の登録処理」の処理手順である。図４に示すように、領収書画像の登録処理では、以下の（１）から（４）までの手順で登録処理を実行する。手順（１）から手順（３）までを「処理Ａ」、手順（４）を「処理Ｂ」と称する。処理Ａは仮想マシンＡで実行され、処理Ｂは仮想マシンＢで実行される。
【００５１】
（１）読取画像から領収書画像を切り出し、画像情報を取得する（画像切り出し）。
（２）領収書画像の傾き補正を行う（傾き補正）。
（３）領収書画像について文字認識を行い、文字列を抽出する（文字認識）。
（４）領収書管理システムに対し領収書画像の登録を要求する（登録）。
【００５２】
領収書画像の登録処理は、「先の処理」の結果を用いて「次の処理」を実行する連携処理である。例えば、手順（１）で切り出した領収書画像の画像情報を用いて、手順（２）で傾き補正が行われる。手順（２）で傾き補正した画像情報を用いて、手順（３）で文字認識が行われる。手順（３）で認識された文字列は、手順（４）で領収書画像と共に登録される。
【００５３】
また、領収書画像の登録処理は、媒体毎に行われる処理である。例えば、処理要求は、処理対象である「１５枚分の領収書の読取画像」の情報と、要求処理時間を表す「８０秒」という情報とを含む。処理手順には、その処理手順で処理を実行した場合の平均処理時間が含まれる。媒体毎に行われる処理の場合は、平均処理時間は、媒体１枚当たりの処理時間（以下、「単位処理時間」という。）で与えられる。領収書画像の登録処理の場合、単位処理時間は「２５秒」である。
【００５４】
（対応処理のプログラム）
次に、「対応処理」を実行するためのプログラムについて説明する。
図５は「対応処理」の処理の流れの一例を示すフローチャートである。「対応処理」は、処理要求管理部１２の情報処理部２０のＣＰＵ２０Ａにより実行される（図１、図２参照）。「対応処理」の実行は、端末装置６から処理要求を受け付けると開始される。
【００５５】
まず、ステップ１００で、処理内容に応じた処理手順を取得する。処理要求管理部１２は、処理手順記憶部１４から、処理要求に係る処理内容に応じた処理手順を取得する。ここでは、図４に示す領収書画像の登録処理の処理手順を取得する。
【００５６】
次に、ステップ１０２で、処理手順に応じて、処理要求を分割しない場合の予測処理時間を算出する。図６は処理要求の処理例を示す模式図である。領収書画像の登録処理の処理手順は、連携処理であり媒体毎に行われる処理である。１枚の媒体について処理Ａと処理Ｂとが行われる。処理要求を分割しない場合、（処理Ａと処理Ｂ）の組が媒体１５枚分、直列に実施される。各処理は、縦の長さが「リソース消費量」を表し、横の長さが「処理時間」を表す。処理要求を分割せずに処理する場合の所要時間を「予測処理時間」という。
【００５７】
図６に示すパラメータを定義する。
Ｔall：処理要求
Ａ：要求処理時間
Ｂ：予測処理時間
Ｑ：１枚当たりの単位処理時間
【００５８】
次に、ステップ１０４で、要求処理時間内に処理が終了するか否かを判断する。処理が終了しない場合は、ステップ１０６に進む。一方、処理が終了する場合は、ステップ１２０に進む。例えば、図示した例では、予測処理時間Ｂは、要求処理時間Ａより長い。したがって、処理要求Ｔallは、要求処理時間Ａ内に終了しない。
【００５９】
−分割−
次に、ステップ１０６で、処理要求を分割する場合の分割数を計算する。分割数は、並列処理に必要なコンテナの個数と等しい。即ち、処理Ａを実行するのに必要なコンテナａの個数を仮想マシンＡについて見積もり、処理Ｂを実行するのに必要なコンテナｂの個数を仮想マシンＢについて見積もる。処理Ａと処理Ｂとは連携処理なので、コンテナａの個数はコンテナｂの個数と等しいとしてもよい。
【００６０】
分割数を「Ｘ」とする。Ｘは下記式（１）で表される。「Ａ」は要求処理時間であり、「Ｂ」は予測処理時間である。Ａ＝８０秒、Ｂ＝３７５秒とすると、分割数Ｘは５個である。即ち、５個のコンテナａと５個のコンテナｂとが必要になる。
【００６１】
【数１】
2020021160.tif 000003
【００６２】
図７は処理要求の分割例を示す模式図である。図６に示す処理要求Ｔallは、要求処理時間Ａ内に終了するように複数の分割処理要求に分割される。図７に示すように、処理要求Ｔallは、５個の分割処理要求Ｔ＃１、Ｔ＃２、Ｔ＃３、Ｔ＃４、Ｔ＃５に分割される。各分割処理要求には、媒体３枚分の（処理Ａと処理Ｂ）が含まれる。
【００６３】
−コンテナの不足−
次に、ステップ１０８で、空きコンテナに関する情報を取得する。「空きコンテナ」とは、既存のコンテナのうち使用されていないコンテナのことである。仮想マシンＡ及び仮想マシンＢの各々について、オートスケール管理部１６（図１参照）から、空きコンテナに関する情報を取得する。
【００６４】
図８は仮想マシンの種類毎にコンテナの空き状況の一例を示す模式図である。図示した例では、仮想マシンＡが１個あり（仮想マシンＡ１）、空きコンテナも１個である（コンテナａ１）。仮想マシンＢが１個あり（仮想マシンＢ１）、空きコンテナは３個である（コンテナｂ１、コンテナｂ２、コンテナｂ３）。複数の仮想マシン、複数のコンテナの各々は、末尾に番号を付して区別する。
【００６５】
次に、ステップ１１０で、空きコンテナで処理が可能か否かを判断する。空きコンテナで処理できない場合はステップ１１２に進み、空きコンテナで処理できる場合はステップ１１８に進む。処理要求を処理するためには、５個のコンテナａと、５個のコンテナｂとが必要になる。図示した例では、空きコンテナは１個のコンテナａ、３個のコンテナｂのみであり、空きコンテナでは処理できない。仮想マシンを増設する必要がある。
【００６６】
−起動準備時間を考慮した処理−
次に、ステップ１１２で、起動準備時間を考慮して分割数を再計算する。仮想マシンを増設する場合は、仮想マシン（コンテナ）の起動の準備に時間がかかる。仮想マシンは、起動後に処理の実行を開始する。起動の準備に要する時間を起動準備時間という。そこで、起動準備時間を考慮して、必要なコンテナの個数の見積もりをやり直す。起動準備時間を考慮することで、リソースの見積もり精度が高くなる。処理Ａと処理Ｂとは連携処理なので、ここでもコンテナａの個数はコンテナｂの個数と等しいとしてもよい。
【００６７】
再計算後の分割数を「Ｆ」とする。ここでは、媒体毎に行われる処理である点に着目して、Ｆを下記式（２）で表す。「Ｋ」は１コンテナで処理する媒体数であり、「Ｍ」は処理枚数である。
【００６８】
【数２】
2020021160.tif 000004
【００６９】
Ｋは下記式（３）で表される。「Ａ」は要求処理時間であり、「Ｃ」は起動準備時間であり、「Ｑ」は１枚当たりの単位処理時間であり、「Ｒ」は１枚当たりの処理Ｂの処理時間である。Ａ＝８０秒、Ｃ＝４０秒、Ｑ＝２５秒、Ｒ＝１０秒、Ｍ＝１５枚とすると、１コンテナで処理する媒体数Ｋは２枚であり、再計算後の分割数Ｆは８個である。処理要求を処理するためには、８個のコンテナａと、８個のコンテナｂとが必要になる。
【００７０】
【数３】
2020021160.tif 000005
【００７１】
図９は処理要求の他の処理例を示す模式図である。図１０は処理要求の他の分割例を示す模式図である。図９、図１０に示すパラメータを定義する。
Ｔall：処理要求
Ａ：要求処理時間
Ｂ：予測処理時間
Ｃ：起動準備時間
Ｑ：１枚当たりの単位処理時間
Ｒ：１枚当たりの処理Ｂの処理時間
【００７２】
図９に示す処理要求Ｔallは、要求処理時間Ａ内に終了するように複数の分割処理要求に分割される。図１０に示すように、仮想マシンを増設する場合は、仮想マシンの起動準備時間Ｃを待って処理の実行を開始する。処理要求Ｔallは、８個の分割処理要求Ｔ＃１、Ｔ＃２、Ｔ＃３、Ｔ＃４、Ｔ＃５、Ｔ＃６、Ｔ＃７、Ｔ＃８に分割される。Ｔ＃１からＴ＃７までの分割処理要求には、媒体２枚分の（処理Ａと処理Ｂ）が含まれる。Ｔ＃８の分割処理要求には、媒体１枚分の（処理Ａと処理Ｂ）が含まれる。各分割処理要求は、（Ａ−Ｃ）の期間に実行される。
【００７３】
なお、図７に示す分割例では、１枚目の処理Ａ＃１、２枚目の処理Ａ＃２、及び３枚目の処理Ａ＃３を詰めずに実行したが、図１０に示す分割例では、複数の処理Ａを詰めて行い、１枚目の処理Ａ＃１の終了直後に、２枚目の処理Ａ＃２を開始する。また、媒体毎に行われる処理では、媒体に対応付けられた単位処理（処理Ａと処理Ｂ）は分割できないため、処理枚数を超える数には分割できない。図示した例では、分割数は１５以下の個数となる。
【００７４】
−仮想マシンの増設数の計算−
次に、ステップ１１４で、仮想マシンの種類毎に増設数を計算する「増設数の計算処理」を実行する。仮想マシンＡ及び仮想マシンＢの各々について、増設数を計算する。
【００７５】
ここで「増設数の計算処理」について詳しく説明する。図１１は「増設数の計算処理」の処理の流れの一例を示すフローチャートである。
【００７６】
まず、ステップ２００で、処理に使用する１種類の仮想マシンを選択する。次に、ステップ２０２で、仮想マシンに搭載されるコンテナの個数を取得する。次に、ステップ２０４で、空きコンテナの個数を取得する。次に、ステップ２０６で、再計算後の分割数を取得する。次に、ステップ２０８で、仮想マシンの増設数を計算する。
【００７７】
次に、ステップ２１０で、処理に使用する他の種類の仮想マシンがあるか否かを判断する。他の種類の仮想マシンが無い場合は、ルーチンを終了する。一方、他の種類の仮想マシンがある場合は、ステップ２００に戻って他の種類の仮想マシンを選択する。
【００７８】
仮想マシンの増設数を「Ｙ」とする。Ｙは下記式（４）で表される。「Ｄ」は空きコンテナの個数であり、「Ｅ」は仮想マシンに搭載されるコンテナの個数であり、「Ｆ」は再計算後の分割数である。
【００７９】
【数４】
2020021160.tif 000006
【００８０】
図１２は仮想マシンＡの増設数の一例を示す模式図である。図１２に示すように、処理に必要なコンテナａの個数は８個であり、空きコンテナａの個数が１個なので、残り７個のコンテナａを増設する必要がある。仮想マシンＡを１つ増設すると、２個のコンテナａが増設される。７個のコンテナａを増設するには、４個の仮想マシンＡを増設する必要がある。
【００８１】
図１３は仮想マシンＢの増設数の一例を示す模式図である。図１３に示すように、処理に必要なコンテナｂの個数は８個であり、空きコンテナｂの個数が３個なので、残り５個のコンテナｂを増設する必要がある。仮想マシンＢを１つ増設すると、４個のコンテナｂが増設される。５個のコンテナｂを増設するには、２個の仮想マシンＢを増設する必要がある。
【００８２】
次に、ステップ１１６で、オートスケール管理部１６（図１参照）に対し、計算された個数の仮想マシンの増設を指示する。仮想マシンＡ及び仮想マシンＢの増設をまとめて指示する。
【００８３】
次に、ステップ１１８で、処理要求を分割する。次に、ステップ１２０で、処理要求をキュー１８（図１参照）に出力して、ルーチンを終了する。ステップ１１８で処理要求を分割した場合は、複数の分割処理要求の各々を、対応する複数のキュー１８（図１参照）に出力する。
【００８４】
なお、フローチャートの各ステップは順序を入れ替えてもよい。例えば、複数の分割処理要求の各々は、仮想マシンが起動するまでキューに保持されるので、処理要求を分割した後で、仮想マシンの増設を指示してもよい。
【００８５】
−処理の実行−
次に、処理Ａ及び処理Ｂの実行について説明する。
図１４は仮想マシンＡの各コンテナの処理スケジュールの一例を示す模式図である。図１５は仮想マシンＢの各コンテナの処理スケジュールの一例を示す模式図である。媒体１５枚分の領収書の読取画像を用いて「領収書画像の登録処理」を実行する例である。
【００８６】
時刻ｔ０に処理要求が受け付けられる。時刻ｔ０から要求処理時間Ａが経過した時刻が時刻ｔｅである。時刻ｔ０から起動準備時間Ｃが経過した時刻が時刻ｔ１である。起動準備時間Ｃの間に、仮想マシンＡ及び仮想マシンＢの増設が指示されて、仮想マシンＡ及び仮想マシンＢの各々のコンテナが起動する。
【００８７】
仮想マシンＡは、時刻ｔ１に１つ目の処理Ａ（＃１、＃３、＃５、＃７、＃９、＃１１、＃１３、＃１５）の実行を開始する。１つ目の処理Ａは、時刻ｔ２に終了する。仮想マシンＡは、時刻ｔ２に２つ目の処理Ａ（＃２、＃４、＃６、＃８、＃１０、＃１２、＃１４）の実行を開始する。２つ目の処理Ａは、時刻ｔ４に終了する。
【００８８】
仮想マシンＢは、１つめの処理Ａの結果を取得して、時刻ｔ２に１つ目の処理Ｂ（＃１、＃３、＃５、＃７、＃９、＃１１、＃１３、＃１５）の実行を開始する。１つ目の処理Ｂは、時刻ｔ３に終了する。仮想マシンＢは、２つめの処理Ａの結果を取得して、時刻ｔ４に２つ目の処理Ｂ（＃２、＃４、＃６、＃８、＃１０、＃１２、＃１４）の実行を開始する。２つ目の処理Ｂは、時刻ｔ５に終了する。
【００８９】
仮想マシンＡ及び仮想マシンＢは一度に起動される。必要な仮想マシンＢは予め増設され起動されているので、１つめの処理Ｂの開始前に起動準備時間を設けなくてもよい。全体として起動準備時間が短くなる。また、仮想マシンでの処理が終了すると、オートスケール管理部１６から処理要求管理部１２に対し、処理の終了を通知してもよい（図１参照）。
【００９０】
＜第２の実施の形態＞
第１の実施の形態では、連携処理の処理手順の最初の段階で処理要求を分割するが、第２の実施の形態では、連携処理の処理手順の途中で処理要求を分割する。処理要求を分割するタイミング以外は、第１の実施の形態と同様であるため、説明を省略する。
【００９１】
（処理手順）
次に、処理手順について説明する。
図１６は第２の実施の形態に係る処理手順の一例を示す模式図である。図１６に示すように、領収書画像の登録処理では、図４と同様に、（１）画像切り出し、（２）傾き補正、（３）文字認識、（４）登録の手順で処理を実行する。手順（１）を「処理Ａ１」、手順（２）から手順（３）までを「処理Ａ２」、手順（４）を「処理Ｂ」と称する。処理Ａ１、処理Ａ２は仮想マシンＡで実行され、処理Ｂは仮想マシンＢで実行される。
【００９２】
図１７は第２の実施の形態に係る処理要求の処理例を示す模式図である。第２の実施の形態では、１つのコンテナで１５枚分の画像切り出し（処理Ａ１）を実行した後で、１５枚分の（処理Ａ２と処理Ｂ）を分割して、複数のコンテナで並列に処理する。なお、処理要求の分割のタイミングは任意であり、例示したものには限定されない。
【００９３】
（分割数）
分割数を「Ｘ」とする。Ｘは下記式（５）で表される。「Ａ」は要求処理時間であり、「Ｂ」は予測処理時間であり、「Ｄ」は１５枚分の処理Ａ１の処理時間である。Ａ＝８０秒、Ｂ＝３７５秒、Ｄ＝２０秒とすると、分割数Ｘは６個である。即ち、６個のコンテナａと６個のコンテナｂとが必要になる。
【００９４】
【数５】
2020021160.tif 000007
【００９５】
また、第１の実施の形態と同様に、起動準備時間Ｃを考慮してもよい。
再計算後の分割数を「Ｆ」とする。Ｆは上記式（２）で表される。
【００９６】
但し、１コンテナで処理する媒体数Ｋは、下記式（６）または（７）で与えられる。「Ａ」は要求処理時間であり、「Ｃ」は起動準備時間であり、「Ｄ」は処理Ａ１（１５枚分）の処理時間であり、「Ｑ２」は１枚当たりの処理Ａ２から処理Ｂまでの単位処理時間であり、「Ｒ」は１枚当たりの処理Ｂの処理時間である。
【００９７】
【数６】
2020021160.tif 000008
【００９８】
上記式（６）において、Ａ＝８０秒、Ｃ＝４０秒、Ｄ＝２０秒、Ｑ２＝２０秒、Ｍ＝１５枚とすると、１コンテナで処理する媒体数Ｋは１枚であり、再計算後の分割数Ｆは１５個である。処理要求を処理するためには、１５個のコンテナａと、１５個のコンテナｂとが必要になる。
【００９９】
また、上記式（７）において、Ａ＝８０秒、Ｃ＝４０秒、Ｄ＝２０秒、Ｑ２＝２０秒、Ｒ＝１０秒、Ｍ＝１５枚とした場合も、１コンテナで処理する媒体数Ｋは１枚であり、再計算後の分割数Ｆは１５個である。処理要求を処理するためには、１５個のコンテナａと、１５個のコンテナｂとが必要になる。
【０１００】
図１８は第２の実施の形態に係る処理要求の分割例を示す模式図である。図１７に示す処理要求Ｔallは、要求処理時間Ａ内に終了するように複数の分割処理要求に分割される。図１８に示すように、処理要求Ｔallは、１５個の分割処理要求Ｔ＃１、Ｔ＃２、Ｔ＃３、Ｔ＃４、Ｔ＃５、Ｔ＃６、Ｔ＃７、Ｔ＃８、Ｔ＃９、Ｔ＃１０、Ｔ＃１１、Ｔ＃１２、Ｔ＃１３、Ｔ＃１４、Ｔ＃１５に分割される。各分割処理要求には、媒体１枚分の（処理Ａ２と処理Ｂ）が含まれる。
【０１０１】
時刻ｔ０に処理要求が受け付けられる。仮想マシンＡは、空きコンテナａ１を用いて時刻ｔ０に処理Ａ１の実行を開始する。処理Ａ１（１５枚分）の処理時間Ｄの経過後、起動準備時間Ｃの間に、仮想マシンＡ及び仮想マシンＢの増設が指示されて、仮想マシンＡ及び仮想マシンＢの各々のコンテナが起動する。
【０１０２】
仮想マシンＡは、時刻ｔ０に処理Ａ２（＃１、＃２、＃３、＃４、＃５、＃６、＃７、＃８、＃９、＃１０、＃１１、＃１２、＃１３、＃１４、＃１５）の実行を開始する。仮想マシンＢは、処理Ａ２の終了後に処理Ｂ（＃１、＃２、＃３、＃４、＃５、＃６、＃７、＃８、＃９、＃１０、＃１１、＃１２、＃１３、＃１４、＃１５）の実行を開始する。
【０１０３】
＜第３の実施の形態＞
第１の実施の形態では、連携処理を処理対象とする例について説明したが、第３の実施の形態では、並列に実行される並列処理を処理対象とする。処理対象以外は、第１の実施の形態と同様であるため、説明を省略する。
【０１０４】
（処理手順）
次に、処理手順について説明する。
図１９は第３の実施の形態に係る処理手順の一例を示す模式図である。図１９に示すように、本実施の形態では、「領収書画像の文字認識処理」と、「領収書画像の鮮明化処理」とが並列に行われる。領収書画像の文字認識処理では、以下の（１）から（３）までの手順で処理を実行する。手順（１）から手順（３）までを「処理Ａ」と称する。処理Ａは仮想マシンＡで実行される。処理Ａを分割して、複数のコンテナａで並列に処理する。
【０１０５】
（１）読取画像から領収書画像を切り出し、画像情報を取得する（画像切り出し）。
（２）領収書画像の傾き補正を行う（傾き補正）。
（３）領収書画像について文字認識を行い、文字列を抽出する（文字認識）。
【０１０６】
一方、領収書画像の鮮明化処理では、以下の（４）から（５）までの手順で処理を実行する。手順（４）から手順（５）までを「処理Ｂ」と称する。処理Ｂは仮想マシンＢで実行される。処理Ｂを分割して、複数のコンテナｂで並列に処理する。
【０１０７】
（４）読取画像から領収書画像を切り出し、画像情報を取得する（画像切り出し）。
（５）領収書画像の鮮明化処理を行う（鮮明化）。
【０１０８】
領収書画像の文字認識処理と、領収書画像の鮮明化処理とは、並列に実行される並列処理である。また、領収書画像の文字認識処理と、領収書画像の鮮明化処理とは、媒体毎に行われる処理である。処理Ａの単位処理時間を「２０秒」とし、処理Ｂの単位処理時間を「５秒」とする。
【０１０９】
（分割数）
第１の実施の形態では、処理Ａと処理Ｂとは連携処理なので、各処理の分割数は等しいものとした。しかしながら、処理Ａと処理Ｂとが並列処理の場合は、処理毎に分割数が異なるので、処理毎に分割数を求める必要がある。即ち、コンテナａの個数と、コンテナｂの個数とを別々に求める。
【０１１０】
図２０は第３の実施の形態に係る処理要求の処理例を示す模式図である。処理要求を分割しない場合、処理Ａ（１５枚分）と処理Ｂ（１５枚分）とが直列に実施される。図示した例では、処理Ａ（１５枚分）の予測処理時間を「Ｂ３」とし、処理Ｂ（１５枚分）の予測処理時間を「Ｂ４」とする。
【０１１１】
予測処理時間Ｂ３は、要求処理時間Ａより長い。したがって、処理Ａは分割する必要がある。一方、予測処理時間Ｂ４は、要求処理時間Ａより短い。したがって、処理Ｂは分割する必要はない。仮想マシンＢの増設は不要である。
【０１１２】
処理Ａの分割数を「ＸＡ」とする。ＸＡは下記式（８）で表される。「Ａ」は要求処理時間であり、「Ｂ３」は処理Ａの予測処理時間である。Ａ＝８０秒、Ｂ３＝３００秒（＝２０秒×１５）とすると、分割数ＸＡは４個である。即ち、４個のコンテナａと、４個のコンテナｂとが必要になる。
【０１１３】
【数７】
2020021160.tif 000009
【０１１４】
図８に示すように、仮想マシンＡが１個あり（仮想マシンＡ１）、空きコンテナは１個である（コンテナａ１）。仮想マシンＢが１個あり（仮想マシンＢ１）、空きコンテナは３個である（コンテナｂ１、コンテナｂ２、コンテナｂ３）。この場合は、３個のコンテナａを増設するために、２個の仮想マシンＡを増設する。
【０１１５】
また、第１の実施の形態と同様に、起動準備時間Ｃを考慮してもよい。
処理Ａの再計算後の分割数を「Ｆ」とする。Ｆは上記式（２）で表される。但し、１コンテナで処理する媒体数Ｋは、下記式（９）で与えられる。「Ａ」は要求処理時間であり、「Ｃ」は起動準備時間であり、「Ｓ」は１枚当たりの処理Ａの単位処理時間である。
【０１１６】
【数８】
2020021160.tif 000010
【０１１７】
Ａ＝８０秒、Ｃ＝４０秒、Ｓ＝２０秒とすると、１コンテナで処理する媒体数Ｋは２枚、再計算後の分割数Ｆは８個である。処理要求を処理するためには、８個のコンテナａと、１個のコンテナｂとが必要になる。
【０１１８】
図２１は第３の実施の形態に係る処理要求の分割例を示す模式図である。図２０に示す処理要求Ｔallは、要求処理時間Ａ内に終了するように複数の分割処理要求に分割される。図２１に示すように、処理要求Ｔallは、９個の分割処理要求Ｔ＃１、Ｔ＃２、Ｔ＃３、Ｔ＃４、Ｔ＃５、Ｔ＃６、Ｔ＃７、Ｔ＃８、Ｔ＃９に分割される。
【０１１９】
時刻ｔ０に処理要求が受け付けられる。仮想マシンＢは、空きコンテナｂ１を用いて時刻ｔ０に処理Ｂ（＃９）の実行を開始する。起動準備時間Ｃの間に、仮想マシンＡの増設が指示されて、複数の仮想マシンＡの各々のコンテナが起動する。複数の仮想マシンＡは、起動準備時間Ｃの経過後、処理Ａ（＃１、＃２、＃３、＃４、＃５、＃６、＃７、＃８）の実行を開始する。
【０１２０】
図２２は第３の実施の形態に係る処理要求の他の分割例を示す模式図である。図２２に示すように、空きコンテナａ１では直ちに処理の実行を開始してもよい。空きコンテナａ１で直ちに処理の実行を開始すると、処理Ａの分割数Ｆが７個に低減される。
【０１２１】
例えば、空きコンテナａ１で４枚分（２０秒×４＝８０秒）の処理Ａ（処理Ａ＃１）を行うとすると、残り１１枚分の処理Ａを分割することになる。上記式（８）及び上記式（９）を用い、Ａ＝８０秒、Ｃ＝４０秒、Ｓ＝２０秒とすると、１コンテナで処理する媒体数Ｋは２枚、１１枚分の処理Ａの分割数Ｆは６個である。処理要求Ｔallは、８個の分割処理要求Ｔ＃１、Ｔ＃２、Ｔ＃３、Ｔ＃４、Ｔ＃５、Ｔ＃６、Ｔ＃７、Ｔ＃８に分割される。
【０１２２】
時刻ｔ０に処理要求が受け付けられる。仮想マシンＡは、空きコンテナａ１を用いて時刻ｔ０に処理Ａ（＃１）の実行を開始する。仮想マシンＢは、空きコンテナｂ１を用いて時刻ｔ０に処理Ｂ（＃８）の実行を開始する。起動準備時間Ｃの間に、仮想マシンＡの増設が指示されて、複数の仮想マシンＡの各々のコンテナが起動する。複数の仮想マシンＡは、起動準備時間Ｃの経過後、処理Ａ（＃２、＃３、＃４、＃５、＃６、＃７）の実行を開始する。
【０１２３】
＜変形例＞
なお、上記実施の形態で説明した情報処理装置、プログラム、及び情報処理システムの構成は一例であり、本発明の主旨を逸脱しない範囲内においてその構成を変更してもよいことは言うまでもない。
【０１２４】
第１の実施の形態において、起動処理時間を考慮しない分割数Ｘは、上記式（２）により求めてもよい。ここでは、Ｘ＝Ｆとする。「Ｋ」は１コンテナで処理する媒体数であり、「Ｍ」は処理枚数である。
【０１２５】
この場合の「Ｋ」は下記式（１０）で表される。小数点以下は切り捨てないと、要求処理時間Ａ内に収まらない。「Ａ」は要求処理時間であり、「Ｑ」は１枚当たりの単位処理時間である。Ａ＝８０秒、Ｑ＝２５秒、Ｍ＝１５枚とすると、１コンテナで処理する媒体数Ｋは３枚、分割数Ｘは５個である。
【０１２６】
【数９】
2020021160.tif 000011
【符号の説明】
【０１２７】
６     端末装置
８     通信回線
１０   情報処理システム
１２   処理要求管理部
１４   処理手順記憶部
１６   オートスケール管理部
１８   キュー
２０   情報処理部
２２   通信部
２４   記憶部
３０   処理実行部
３２   仮想マシン
３４   コンテナ
Ａ     仮想マシン
Ｂ     仮想マシン
ａ     コンテナ
ｂ     コンテナ
【図１】
2020021160.tif 000012
【図２】
2020021160.tif 000013
【図３】
2020021160.tif 000014
【図４】
2020021160.tif 000015
【図５】
2020021160.tif 000016
【図６】
2020021160.tif 000017
【図７】
2020021160.tif 000018
【図８】
2020021160.tif 000019
【図９】
2020021160.tif 000020
【図１０】
2020021160.tif 000021
【図１１】
2020021160.tif 000022
【図１２】
2020021160.tif 000023
【図１３】
2020021160.tif 000024
【図１４】
2020021160.tif 000025
【図１５】
2020021160.tif 000026
【図１６】
2020021160.tif 000027
【図１７】
2020021160.tif 000028
【図１８】
2020021160.tif 000029
【図１９】
2020021160.tif 000030
【図２０】
2020021160.tif 000031
【図２１】
2020021160.tif 000032
【図２２】
2020021160.tif 000033