(57)【要約】【課題】複数のタスク実行主体が動作するアプリケーションに対して適切に計算機資源を割り当てる。【解決手段】情報処理装置２０００は、上限値情報３０と処理量情報４０に基づいて、各タスク実行主体２０に割り当てる計算機資源を決定する。上限値情報３０は、全てのタスク実行主体２０に割り当てる計算機資源の合計量の上限値を示す。処理量情報４０は、各タスク実行主体２０が処理すべきタスクの量を示す。【選択図】図１
2019179487.tif 000002
【特許請求の範囲】
【請求項１】
複数種類のタスクで構成される処理を行うアプリケーションについて、タスクの種類ごとに少なくとも１つの実行主体が動作しており、
前記実行主体それぞれが処理すべきタスクの量を示す処理量情報を取得する取得部と、
前記実行主体に割り当てる計算機資源の合計の上限値を示す上限値情報及び前記処理量情報に基づいて、前記実行主体それぞれに割り当てる計算機資源を決定する決定部を有する、情報処理装置。
【請求項２】
前記決定部は、前記上限値以下の量の計算機資源を、処理すべきタスクの量が多い前記実行主体ほど優先的に割り当てる、請求項１に記載の情報処理装置。
【請求項３】
前記実行主体ごとに、その実行主体が処理すべき１つ以上のタスクを格納するキューが設けられており、
前記処理量情報は、各前記実行主体のキューの長さを示し、
前記決定部は、前記キューの長さが長い前記実行主体ほど多くの量の計算機資源を割り当てる、請求項１又は２に記載の情報処理装置。
【請求項４】
前記決定部は、処理すべきタスクの量が最も多い前記実行主体を特定し、前記実行主体が最も負荷をかける計算機資源を特定し、前記特定された実行主体以外の実行主体のうち、最も負荷をかける計算機資源が前記特定した計算機資源である実行主体について、計算機資源を割り当てる優先度合いを低くする、請求項１乃至３いずれか一項に記載の情報処理装置。
【請求項５】
前記決定部は、
前記特定した実行主体と、最も負荷をかける計算機資源が前記特定した計算機資源とは異なる前記実行主体とに対し、処理すべきタスクの量に基づいて定まる優先度を割り当て、
最も負荷をかける計算機資源が前記特定した実行主体計算機資源である前記実行主体に対し、処理すべきタスクの量に基づいて定まる優先度よりも低い優先度を割り当て、
前記実行主体に割り当てる計算機資源の量を、その実行主体に割り当てられた優先度に応じた量にする、請求項４に記載の情報処理装置。
【請求項６】
前記決定部は、
タスクと、そのタスクが最も負荷をかける計算機資源とを対応づけたタスク情報を取得し、
各前記実行主体が最も負荷をかける計算機資源を、前記タスク情報においてその実行主体が実行するタスクに対応づけられている計算機資源とする、請求項４又は５に記載の情報処理装置。
【請求項７】
前記実行主体が実行するタスクは、他の前記実行主体が実行したタスクによって生成される、請求項１乃至６いずれか一項に記載の情報処理装置。
【請求項８】
コンピュータによって実行される制御方法であって、
複数種類のタスクで構成される処理を行うアプリケーションについて、タスクの種類ごとに少なくとも１つの実行主体が動作しており、
前記実行主体それぞれが処理すべきタスクの量を示す処理量情報を取得する取得ステップと、
前記実行主体に割り当てる計算機資源の合計の上限値を示す上限値情報及び前記処理量情報に基づいて、前記実行主体それぞれに割り当てる計算機資源を決定する決定ステップと、を有する制御方法。
【請求項９】
複数種類のタスクで構成される処理を行うアプリケーションについて、タスクの種類ごとに少なくとも１つの実行主体が動作しているコンピュータに、
前記実行主体それぞれが処理すべきタスクの量を示す処理量情報を取得する取得ステップと、
前記実行主体に割り当てる計算機資源の合計の上限値を示す上限値情報及び前記処理量情報に基づいて、前記実行主体それぞれに割り当てる計算機資源を決定する決定ステップと、を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は計算機資源の割り当ての制御に関する。
【背景技術】
【０００２】
アプリケーションに対する計算機資源の割り当てを制御する技術が開発されている。特許文献１は、アプリケーションが使用可能な計算機資源を、アプリケーションごとに複数段階設定可能な技術を開示している。具体的には、アプリケーションが使用可能な計算機資源の最大量を、アプリケーションサービスレベルごとに予め設定しておく。また、アプリケーションの起動は、アプリケーションサービスレベルを指定して行う。こうすることで、アプリケーションサービスレベルに応じた量の計算機資源が、アプリケーションに割り当てられる。なお、計算機資源が不足する場合には、より低いアプリケーションサービスレベルで稼働中のアプリケーションの実行を中断することで、計算機資源を確保する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００１−１９５２６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
１つのアプリケーションが複数種類のタスクで構成されており、各種類のタスクが互いに異なるタスク実行主体（プロセスなど）によって実行されることがある。例えば、データの読み出し、加工、及び書き出しという３つのタスクをそれぞれ異なるプロセスで実行するケースなどがある。このように複数のタスク実行主体が動作する場合、これら各タスク実行主体に対して計算機資源を割り当てることとなる。そのため、アプリケーションに割り当てる計算機資源の最大量を制御するだけでは、アプリケーションの動作を適切に制御できないことがある。
【０００５】
本願発明は上記の課題に鑑みてなされたものであり、その目的の一つは、複数のタスク実行主体が動作するアプリケーションに対して適切に計算機資源を割り当てる技術を提供することである。
【課題を解決するための手段】
【０００６】
本発明の情報処理装置は、複数種類のタスクで構成される処理を行うアプリケーションについて、タスクの種類ごとに少なくとも１つの実行主体が動作していることを想定する。
当該情報処理装置は、１）アプリケーションの処理を実行する全ての実行主体に割り当てる計算機資源の合計の上限値を示す上限値情報を取得する取得部と、２）各実行主体が処理すべきタスクの量を示す処理量情報を取得する第２取得部と、３）上限値情報及び処理量情報に基づいて、複数の実行主体それぞれに割り当てる計算機資源の量を決定する決定部を有する。
【０００７】
本発明の制御方法は、コンピュータによって実行される制御方法である。複数種類のタスクで構成される処理を行うアプリケーションについて、タスクの種類ごとに少なくとも１つの実行主体が動作していることを想定する。
当該制御方法は、１）アプリケーションの処理を実行する全ての実行主体に割り当てる計算機資源の合計の上限値を示す上限値情報を取得する取得ステップと、２）各実行主体が処理すべきタスクの量を示す処理量情報を取得する第２取得ステップと、３）上限値情報及び処理量情報に基づいて、複数の実行主体それぞれに割り当てる計算機資源の量を決定する決定ステップを有する。
【０００８】
本発明のプログラムは、本発明の制御方法が有する各ステップをコンピュータに実行させる。
【発明の効果】
【０００９】
本発明によれば、複数のタスク実行主体が動作するアプリケーションに対して適切に計算機資源を割り当てる技術が提供される。
【図面の簡単な説明】
【００１０】
【図１】実施形態１に係る情報処理装置の動作を概念的に例示する図である。
【図２】情報処理装置の利点を説明するための図である。
【図３】情報処理装置の利点を説明するための図である。
【図４】情報処理装置の機能構成を例示する図である。
【図５】情報処理装置を実現する計算機の構成を例示する図である。
【図６】実施形態１の情報処理装置によって実行される処理の流れを例示するフローチャートである。
【図７】タスク情報をテーブル形式で例示する図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施の形態について、図面を用いて説明する。尚、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。また、特に説明する場合を除き、各ブロック図において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。
【００１２】
以下の説明において、特に説明しない限り、各種所定値は、その所定値を利用する機能構成部からアクセス可能な記憶装置に予め記憶させておく。
【００１３】
［実施形態１］
＜概要＞
図１は、実施形態１に係る情報処理装置（図２でその構成を例示する情報処理装置２０００）の動作を概念的に例示する図である。ここで、図１を用いて説明する情報処理装置２０００の動作は、情報処理装置２０００の理解を容易にするための例示であり、情報処理装置２０００の動作を限定するものではない。情報処理装置２０００の動作の詳細やバリエーションについては後述する。
【００１４】
情報処理装置２０００は、情報処理装置２０００上で動作するアプリケーション１０への計算機資源の割り当てを制御する。アプリケーション１０が行う処理は、複数種類のタスクで実現される。
【００１５】
アプリケーション１０が行う処理として、例えば、「ログデータをストレージから読み出して加工処理を行い、加工したログデータをサーバに送信する」という処理が考えられる。ログデータは、例えば、サイバーセキュリティ観点でシステムの分析を行うために利用されるものであり、情報処理装置２０００上で動作する各プロセスの振る舞いに関する情報などが記録される。プロセスの振る舞いに関する情報は、例えば、振る舞いの主体であるプロセスに関する情報、振る舞いの客体となるプロセス、ファイル、若しくは通信先に関する情報、振る舞いの内容を表す情報（プロセスの起動や終了、ファイルの読み込みや書き込み、ネットワーク通信など）を含む。
【００１６】
この場合、例えばアプリケーション１０の動作は、１）ログデータをストレージから順次読み出す第１タスク１２、２）読み出したデータを加工する第２タスク１４、３）加工したデータから送信データを生成する第３タスク１６、及び４）送信データをサーバに送信する第４タスク１８という４種類のタスクで実現される。なお、第１タスク１２はログデータの一部（例えば所定サイズ）を読み込むものとする。そのため、第１タスク１２は複数生成されることになる。また、第１タスク１２、第２タスク１４、及び第３タスク１６の処理結果として、第２タスク１４、第３タスク１６、及び第４タスク１８がそれぞれ生成される。そのため、第２タスク１４、第３タスク１６、及び第４タスク１８も複数生成されることになる。
【００１７】
情報処理装置２０００では、いずれか１つの種類のタスクを実行するタスク実行主体２０が生成される。タスク実行主体２０は、例えばプロセスやスレッドである。例えば上述したように４種類のタスクがある場合、少なくとも４つのタスク実行主体２０が生成される。
【００１８】
図１の例では、タスク実行主体２０−１、タスク実行主体２０−２、タスク実行主体２０−３、及びタスク実行主体２０−４がそれぞれ、第１タスク１２、第２タスク１４、第３タスク１６、及び第４タスク１８を実行する。タスク実行主体２０の中に描画されているのは、現在実行中のタスクである。そして、タスク実行主体２０の横に描画されているのは、実行されるのを待っているタスクである。
【００１９】
ここで、情報処理装置２０００では、アプリケーション１０以外のアプリケーションも動作しうるとする。このように複数のアプリケーションが１つのマシン上で動作すると、各アプリケーションの計算機資源の使用量が、他のアプリケーションで使用できる計算機資源の量に影響を与えうる。
【００２０】
例えばマルウエア対策の常駐アプリケーションなどでは、短い時間に処理負荷が集中することで、計算機資源の使用量が急激に上昇することがある。そのため、他のアプリケーションで計算機資源が不足してしまい、他のアプリケーションの処理が進まなかったり、動作が不安定になってしまったりするという問題が生じうる。
【００２１】
そこで情報処理装置２０００は、全てのタスク実行主体２０に割り当てる計算機資源の合計量（すなわち、アプリケーション１０全体に割り当てる計算機資源量）が、所定の上限値を超えないように、各タスク実行主体２０に割り当てる計算機資源の量を決める。こうすることで、アプリケーション１０の動作によって他のアプリケーションの動作に与える影響が少なくなるという効果が生じる。
【００２２】
一方で、このようにアプリケーション１０に割り当てる計算機資源の合計量に上限を設けると、アプリケーション１０が本来利用したい量の計算機資源を利用できなくなることがある。この場合、アプリケーション１０全体の処理が遅延してしまう恐れがある。
【００２３】
そこで情報処理装置２０００は、各タスク実行主体２０に割り当てる計算機資源の量を、各タスク実行主体２０が処理すべきタスクの量に応じて決定する。具体的には、処理すべきタスクの量が多いタスク実行主体２０ほど、優先的にタスクを割り当てるようにする。こうすることで、アプリケーション１０全体の処理において、ボトルネックが生じにくくなる。よって、使用できる計算機資源の量に上限が設けられている環境下であっても、アプリケーション１０全体の処理が遅延しにくくなるという効果が生じる。
【００２４】
上述した機能を実現するために、情報処理装置２０００は、上限値情報３０と処理量情報４０を利用する。上限値情報３０は、上記所定の上限値（全てのタスク実行主体２０に割り当てる計算機資源の合計量の上限値）を示す。処理量情報４０は、各タスク実行主体２０が処理すべきタスクの量を示す。情報処理装置２０００は、上限値情報３０と処理量情報４０に基づいて、各タスク実行主体２０に割り当てる計算機資源の量を決定する。
【００２５】
情報処理装置２０００は、決定した量の計算機資源を各タスク実行主体２０に割り当てる。そのため、タスク実行主体２０は、決定された量の計算機資源を用いて動作する。なお、決定した割り当てに従ってタスク実行主体に計算機資源を割り当てる技術には、既存の技術を利用できる。具体的には、OS（Operating system）カーネルが持つプロセススケジューラや I/O スケジューラによって、タスク実行主体に対する計算機資源の割り当てが行われる。
【００２６】
ここで、情報処理装置２０００が制御する計算機資源は、情報処理装置２０００が持つ全ての種類の計算機資源である必要はない。例えば情報処理装置２０００は、いずれか一種類（例えば、CPU（Central Processing Unit））を対象として、上述した計算機資源の使用量の制御を行ってもよい。
【００２７】
＜作用・効果＞
本実施形態の情報処理装置２０００によれば、上限値情報３０及び処理量情報４０に基づいて各タスク実行主体２０に割り当てる計算機資源の量が決定される。まず、アプリケーション１０全体に割り当てる計算機資源の合計量が、上限値情報３０に示される上限値を超えないようにすることで、アプリケーション１０の動作によって他のアプリケーションの動作に与える影響が少なくなる。また、各タスク実行主体２０が処理すべきタスクの量に応じて各タスク実行主体２０に割り当てる計算機資源の量を決定することで、使用できる計算機資源の量に上限が設けられている環境下であっても、アプリケーション１０全体の処理の遅延が生じにくくなる。
【００２８】
ここで、情報処理装置２０００の利点について、図３を用いてさらに具体的に説明する。図２と図３は、情報処理装置２０００の利点を説明するための図である。図２の例においてアプリケーション１０が行う処理は、図１の例と同じである。
【００２９】
ここで、処理すべきログデータの量が多いと、多くのログデータをストレージから読み出すことになるため、多くの第１タスク１２が発生する。さらにこれに連動し、多くの第２タスク、第３タスク、及び第４タスクが発生することになる。その結果、各タスク実行主体２０がいずれも、多くの計算機資源を必要とすることになる。
【００３０】
例えば、サイバーセキュリティ観点で分析を行うためのログには、前述したプロセスの振る舞いに関する情報などが記録されるため、OS などが記録する一般的なログに記録される情報よりも多量の情報が記録される。特に、ログをリアルタイムで記録し続ける場合や、アンチウイルスソフトなどのように大量のファイルアクセスを発行するアプリケーションが動作する場合には、ログに大量の情報が記録されることになる。そのため、アプリケーション１０がログデータを処理する場合、各タスク実行主体２０が多くの計算機資源を必要とすることになる。
【００３１】
図２に示すグラフは、情報処理装置２０００による制御を行わないケースについて、各タスク実行主体２０及びアプリケーション１０全体の計算機資源使用量の推移を示している。アプリケーション１０が使用できる計算機資源の量に上限が設定されていないため、各タスク実行主体２０の計算機資源の使用量が多くなり、アプリケーション１０全体としての計算機資源使用量も多くなっている。このような状況下では、他のアプリケーションの動作に必要な計算機資源の量が不足してしまい、他のアプリケーションの動作が重くなり、最悪の場合には他のアプリケーションがフリーズしてしまう。よって、このケースでは、アプリケーション１０の動作が他のアプリケーションの動作に影響を与えてしまうことになる。例えば、OT（Operation Technology）向け製品やサーバマシンでは、バックグランドで動作させるアプリケーション（例えば前述したログを処理するアプリケーション）について、フォアグラウンドで動作するアプリケーションに影響を与えないことが要求されることが多いため、アプリケーション１０の動作が他のアプリケーションの動作に影響を与えることは好ましくない。
【００３２】
一方、図３に示すグラフは、情報処理装置２０００による制御を行うケースについて、各タスク実行主体２０及びアプリケーション１０全体の計算機資源使用量の推移を示している。まず、アプリケーション１０全体で使用される計算機資源の量が、上限値以下に抑えられている。そのため、他のアプリケーションの動作が阻害されにくくなる。さらに、処理すべきタスクの量が多いタスク実行主体２０に対して優先的に計算機資源が割り当てられるため、アプリケーション１０全体の処理においてボトルネックが生じておらず、アプリケーション１０全体の処理の遅延が抑制される。
【００３３】
以下、情報処理装置２０００についてより詳細に説明する。
【００３４】
＜機能構成の例＞
図４は、情報処理装置２０００の機能構成を例示する図である。情報処理装置２０００は、取得部２０２０及び決定部２０６０を有する。取得部２０２０は処理量情報４０を取得する。決定部２０６０は、上限値情報３０と処理量情報４０に基づいて、各タスク実行主体２０に割り当てる計算機資源を決定する。
【００３５】
＜情報処理装置２０００のハードウエア構成の例＞
情報処理装置２０００の各機能構成部は、各機能構成部を実現するハードウエア（例：ハードワイヤードされた電子回路など）で実現されてもよいし、ハードウエアとソフトウエアとの組み合わせ（例：電子回路とそれを制御するプログラムの組み合わせなど）で実現されてもよい。以下、情報処理装置２０００の各機能構成部がハードウエアとソフトウエアとの組み合わせで実現される場合について、さらに説明する。
【００３６】
計算機１０００は種々の計算機である。例えば計算機１０００は、PC、サーバマシン、タブレット端末、又はスマートフォンなどである。計算機１０００は、情報処理装置２０００を実現するために設計された専用の計算機であってもよいし、汎用の計算機であってもよい。
【００３７】
図５は、情報処理装置２０００を実現する計算機１０００の構成を例示する図である。計算機１０００は、バス１０２０、プロセッサ１０４０、メモリ１０６０、ストレージデバイス１０８０、入出力インタフェース１１００、及びネットワークインタフェース１１２０を有する。バス１０２０は、プロセッサ１０４０、メモリ１０６０、ストレージデバイス１０８０、入出力インタフェース１１００、及びネットワークインタフェース１１２０が、相互にデータを送受信するためのデータ伝送路である。ただし、プロセッサ１０４０などを互いに接続する方法は、バス接続に限定されない。プロセッサ１０４０は、CPU や GPU (Graphics Processing Unit) などで実現されるプロセッサである。メモリ１０６０は、RAM (Random Access Memory) などで実現される主記憶装置である。ストレージデバイス１０８０は、ハードディスク、SSD (Solid State Drive)、メモリカード、又は ROM (Read Only Memory) などで実現される補助記憶装置である。入出力インタフェース１１００は、計算機１０００と入出力デバイスとを接続するためのインタフェースである。例えば入出力インタフェース１１００には、キーボードなどの入力装置や、ディスプレイ装置などの出力装置が接続される。ネットワークインタフェース１１２０は、計算機１０００をネットワークに接続するためのインタフェースである。この通信網は、例えば LAN（Local Area Network）や WAN（Wide Area Network）である。ネットワークインタフェース１１２０がネットワークに接続する方法は、無線接続であってもよいし、有線接続であってもよい。
【００３８】
ストレージデバイス１０８０は情報処理装置２０００の各機能を実現するプログラムモジュールを記憶している。プロセッサ１０４０は、これら各プログラムモジュールを実行することで、そのプログラムモジュールに対応する各機能を実現する。
【００３９】
＜処理の流れ＞
図６は、実施形態１の情報処理装置２０００によって実行される処理の流れを例示するフローチャートである。取得部２０２０は処理量情報４０を取得する（Ｓ１０２）。決定部２０６０は、上限値情報３０と処理量情報４０に基づいて、各タスク実行主体２０に割り当てる計算機資源の量を決定する（Ｓ１０４）。
【００４０】
情報処理装置２０００が図６に示す一連の処理を実行する契機は様々である。例えば、情報処理装置２０００は、所定の時間間隔で（定期的に）、上記一連の処理を繰り返し実行する。
【００４１】
＜上限値情報３０について＞
上限値情報には、アプリケーション１０に割り当てる計算機資源の量の上限値が示されている。制御対象となる計算機資源は、例えば、CPU 資源、ストレージアクセスの帯域幅、及びネットワークアクセスの帯域幅などである。なお、上限値情報が示す上限値は、絶対値（例えば、CPU 資源 1.0GHz など）で表されてもよいし、最大量に対する相対値（例えば、CPU 使用率 60% など）で表されてもよい。
【００４２】
上限値情報３０は、決定部２０６０に予め設定されていてもよいし、取得部２０２０によって取得されるようにしてもよい。取得部２０２０が上限値情報３０を取得する方法は様々である。例えば、取得部２０２０は、取得部２０２０からアクセス可能な記憶装置に記憶されている上限値情報３０を、その記憶装置から取得する。その他にも例えば、取得部２０２０は、他の装置から送信される上限値情報３０を受信することで、上限値情報３０を取得してもよい。
【００４３】
上限値情報３０の生成方法は任意である。例えば上限値情報３０は、情報処理装置２０００の管理者等によって人手で作成される。その他にも例えば、上限値情報３０は、情報処理装置２０００によって自動的に生成されてもよい。例えば情報処理装置２０００は、情報処理装置２０００が有する計算機資源を、各アプリケーションで等分するようにする。より具体的には、情報処理装置２０００は、情報処理装置２０００が有する計算機資源の合計量を、情報処理装置２０００上で動作するアプリケーションの数で割った値を、上限値情報３０が示す上限値とする。その他にも例えば、各アプリケーションに優先度を付し、その優先度の割合に応じて、情報処理装置２０００上で動作するアプリケーションに計算機資源を分配するようにしてもよい。この場合、情報処理装置２０００は、アプリケーション１０の優先度に基づいて、上限値情報３０に設定する上限値を算出する。
【００４４】
＜処理量情報４０の取得：Ｓ１０４＞
取得部２０２０は処理量情報４０を取得する（Ｓ１０４）。処理量情報４０は、タスク実行主体２０が処理すべきタスクの量を示す情報である。
【００４５】
例えば、タスク実行主体２０が処理すべきタスクは、キューで管理される。すなわち、タスク実行主体２０ごとにキューが設けられており、或るタスク実行主体２０に対応するキューが、そのタスク実行主体２０が処理すべきタスクを定義するデータ（以下、タスク定義データ）を、タスクごとに格納している。例えばタスク実行主体２０が処理すべきタスクが５個ある場合、５個のタスク定義データがキューに格納される。なお、プロセスやスレッドが処理すべきタスクをキューで管理する技術には、既存の技術を利用できる。
【００４６】
このようにタスク実行主体２０ごとにキューを設けると、タスク実行主体２０に対応するキューの長さが、そのタスク実行主体２０が処理すべきタスクの量を表していると言える。そこで例えば、各タスク実行主体２０の処理量情報４０は、そのタスク実行主体２０に対応するキューの長さを示す。決定部２０６０は、各タスク実行主体２０について取得した処理量情報４０が示すキューの長さに基づいて、各タスク実行主体２０が処理すべきタスクの量を把握する。
【００４７】
例えば処理量情報４０は、各タスク実行主体２０によって生成される。タスク実行主体２０は、対応するキューの長さが変わったとき（キューからタスク定義データを取り出したときや、キューに新たなタスク定義データが格納されたとき）に、変化後のキューの長さを示す処理量情報４０を生成して、記憶装置に記憶させる。なお、或るタスク実行主体２０についての処理量情報４０が既に記憶装置に記憶されている場合、タスク実行主体２０は、新たに生成した処理量情報４０で、既に記憶されている処理量情報４０を上書きする。その他にも例えば、各タスク実行主体２０は、生成した処理量情報４０を取得部２０２０に対して出力してもよい。
【００４８】
取得部２０２０が処理量情報４０を取得する方法は様々である。例えば取得部２０２０は、処理量情報４０が記憶されている記憶装置から、処理量情報４０を取得する。その他にも例えば、取得部２０２０は、タスク実行主体２０から取得部２０２０に対して出力された処理量情報４０を取得する。
【００４９】
＜計算機資源の割り当て：Ｓ１０６＞
決定部２０６０は、上限値情報３０及び処理量情報４０に基づいて、各タスク実行主体２０に割り当てる計算機資源の量を決定する（Ｓ１０６）。例えば決定部２０６０は、上限値情報３０に示されている上限値に等しい量の計算機資源を、処理すべきタスクの量が最も多いタスク実行主体２０（例えば、対応するキューの長さが最長のタスク実行主体２０）に割り当てる。この場合、処理すべきタスクの量が最も多いタスク実行主体２０のみが動作し、他のタスク実行主体２０の動作が中断されることになる。
【００５０】
その他にも例えば、決定部２０６０は、上限値情報３０に示されている上限値に等しい量の計算機資源を、処理すべきタスクの量に基づく割合で、各タスク実行主体２０に分配する。例えば、タスク実行主体２０に割り当てられる計算機資源の量は、以下の数式（１）で決定される。
【数１】
2019179487.tif 000003
・・・（１）
r[i] は、識別子がｉのタスク実行主体２０（以下、タスク実行主体２０ｉ）に割り当てられる計算機資源の量を表す。rmax は、上限値情報３０に示されている上限値を表す。p[i] は、タスク実行主体２０ｉが処理すべきタスクの量に基づいて決定された、タスク実行主体２０ｉの優先度を表す。Ptotal は、全てのタスク実行主体２０の優先度の総和を表す。
【００５１】
優先度 p[i] には、タスク実行主体２０ｉが処理すべきタスクの量が多いほど大きい値を設定する。例えば、決定部２０６０は、タスク実行主体２０ｉに対応するキューの長さを p[i] に設定する。その他にも例えば、決定部２０６０は、タスク実行主体２０ｉに対応するキューの長さを所定の単調非減少関数に入力することで得られる値を、p[i] に設定してもよい。
【００５２】
決定部２０６０は、上述した方法により、各タスク実行主体２０について、制御対象の計算機資源の割り当てを決定する。ここで、制御対象の計算機資源が複数ある場合、決定部２０６０は、各計算機資源それぞれについて、各タスク実行主体２０に対するその計算機資源の割り当てを決定する。
【００５３】
［実施形態２］
実施形態２の情報処理装置２０００の機能構成は、実施形態１の情報処理装置２０００の機能構成と同様に、例えば図１で表される。以下で説明する点を除き、実施形態２の情報処理装置２０００は、実施形態１の情報処理装置２０００と同様の機能を有する。
【００５４】
実施形態２の情報処理装置２０００は、処理すべきタスクの量が最も多いタスク実行主体２０によるタスクの実行に支障が出にくいように、各タスク実行主体２０に割り当てる計算機資源の量を決定する。こうすることで、処理すべきタスクの量が多いタスク実行主体２０による処理が、ボトルネックになりにくくなる。
【００５５】
まず決定部２０６０は、処理すべきタスクの量が最も多いタスク実行主体２０を特定する。例えば前述したように、処理すべきタスクの量をキューの長さで表現する場合、情報処理装置２０００は、対応するキューの長さが最も長いタスク実行主体２０を特定する。
【００５６】
次に決定部２０６０は、特定したタスク実行主体２０がかける負荷が最も大きい計算機資源を特定する。例えば、CPU インテンシブなタスクを実行するタスク実行主体２０の場合、CPU にかける負荷が最も大きいと言える。同様に、ネットワークインテンシブなタスクを実行するタスク実行主体２０の場合、ネットワークの帯域幅にかける負荷が最も大きいと言える。
【００５７】
さらに決定部２０６０は、最も大きな負荷をかける計算機資源が上記特定した計算機資源であるタスク実行主体２０を特定する。例えば、上記特定した計算機資源が CPU である場合、ここで特定されるタスク実行主体２０は、CPU インテンシブなタスクを実行するタスク実行主体２０である。そして決定部２０６０は、ここで特定されたタスク実行主体２０に対する計算機資源量の割り当ての優先度を低くする。
【００５８】
例えば決定部２０６０は、最も大きな負荷をかける計算機資源が上記特定した計算機資源であるタスク実行主体２０には、計算機資源を割り当てないようにする（優先度をゼロにする）。
【００５９】
その他にも例えば、決定部２０６０は、最も大きな負荷をかける計算機資源が上記特定した計算機資源であるタスク実行主体２０の優先度を、そのタスク実行主体２０が処理すべきタスクの量に基づく優先度より低い値（例えば、キューの長さに１未満の係数αをかけた値）とし、それ以外のタスク実行主体２０の優先度を、そのタスク実行主体２０が処理すべきタスクの量に基づく優先度（例えば、キューの長さ）とする。こうすることで、上記特定した計算機資源に大きな負荷をかけるタスク実行主体２０の優先度は、処理すべきタスクの量のみを基準とした場合における優先度よりも低くなる。
【００６０】
ここで、決定部２０６０は、「タスク実行主体２０がどの計算機資源に大きな負荷をかけるか」を把握する必要がある。例えば、タスクと、そのタスクが最も負荷をかける計算機資源とを対応づけた情報を、予め記憶装置に記憶させておく。以下、この情報をタスク情報と呼ぶ。
【００６１】
図７は、タスク情報をテーブル形式で例示する図である。図７に示すテーブルを、テーブル２００と呼ぶ。テーブル２００は、タスク２０２及び計算機資源２０４という２つの列を有する。タスク２０２に対応づけられている計算機資源２０４は、タスク２０２に示すタスクが最も負荷をかける計算機資源を示す。決定部２０６０は、各タスク実行主体２０が実行するタスクについてタスク情報を取得することにより、各タスク実行主体２０が最も負荷をかける計算機資源を特定する。
【００６２】
その他にも例えば、決定部２０６０は、タスク実行主体２０の各計算機資源の使用量の履歴に基づいて、タスク実行主体２０がどの計算機資源に最も大きな負荷をかけるかを特定してもよい。
【００６３】
＜ハードウエア構成の例＞
実施形態２の情報処理装置２０００を実現する計算機のハードウエア構成は、実施形態１と同様に、例えば図４によって表される。ただし、本実施形態の情報処理装置２０００を実現する計算機１０００のストレージデバイス１０８０には、本実施形態の情報処理装置２０００の機能を実現するプログラムモジュールがさらに記憶される。
【００６４】
以上、図面を参照して本発明の実施形態について述べたが、これらは本発明の例示であり、上記以外の様々な構成を採用することもできる。
【００６５】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
１．  複数種類のタスクで構成される処理を行うアプリケーションについて、タスクの種類ごとに少なくとも１つの実行主体が動作しており、
前記実行主体それぞれが処理すべきタスクの量を示す処理量情報を取得する取得部と、
前記実行主体に割り当てる計算機資源の合計の上限値を示す上限値情報及び前記処理量情報に基づいて、前記実行主体それぞれに割り当てる計算機資源を決定する決定部を有する、情報処理装置。
２．  前記決定部は、前記上限値以下の量の計算機資源を、処理すべきタスクの量が多い前記実行主体ほど優先的に割り当てる、１．に記載の情報処理装置。
３．  前記実行主体ごとに、その実行主体が処理すべき１つ以上のタスクを格納するキューが設けられており、
前記処理量情報は、各前記実行主体のキューの長さを示し、
前記決定部は、前記キューの長さが長い前記実行主体ほど多くの量の計算機資源を割り当てる、１．又は２．に記載の情報処理装置。
４．  前記決定部は、処理すべきタスクの量が最も多い前記実行主体を特定し、前記実行主体が最も負荷をかける計算機資源を特定し、前記特定された実行主体以外の実行主体のうち、最も負荷をかける計算機資源が前記特定した計算機資源である実行主体について、計算機資源を割り当てる優先度合いを低くする、１．乃至３．いずれか一つに記載の情報処理装置。
５．  前記決定部は、
前記特定した実行主体と、最も負荷をかける計算機資源が前記特定した計算機資源とは異なる前記実行主体とに対し、処理すべきタスクの量に基づいて定まる優先度を割り当て、
最も負荷をかける計算機資源が前記特定した実行主体計算機資源である前記実行主体に対し、処理すべきタスクの量に基づいて定まる優先度よりも低い優先度を割り当て、
前記実行主体に割り当てる計算機資源の量を、その実行主体に割り当てられた優先度に応じた量にする、４．に記載の情報処理装置。
６．  前記決定部は、
タスクと、そのタスクが最も負荷をかける計算機資源とを対応づけたタスク情報を取得し、
各前記実行主体が最も負荷をかける計算機資源を、前記タスク情報においてその実行主体が実行するタスクに対応づけられている計算機資源とする、４．又は５．に記載の情報処理装置。
７．  前記実行主体が実行するタスクは、他の前記実行主体が実行したタスクによって生成される、１．乃至６．いずれか一つに記載の情報処理装置。
【００６６】
８．  コンピュータによって実行される制御方法であって、
複数種類のタスクで構成される処理を行うアプリケーションについて、タスクの種類ごとに少なくとも１つの実行主体が動作しており、
前記実行主体それぞれが処理すべきタスクの量を示す処理量情報を取得する取得ステップと、
前記実行主体に割り当てる計算機資源の合計の上限値を示す上限値情報及び前記処理量情報に基づいて、前記実行主体それぞれに割り当てる計算機資源を決定する決定ステップと、を有する制御方法。
９．  前記決定ステップにおいて、前記上限値以下の量の計算機資源を、処理すべきタスクの量が多い前記実行主体ほど優先的に割り当てる、８．に記載の制御方法。
１０．  前記実行主体ごとに、その実行主体が処理すべき１つ以上のタスクを格納するキューが設けられており、
前記処理量情報は、各前記実行主体のキューの長さを示し、
前記決定ステップにおいて、前記キューの長さが長い前記実行主体ほど多くの量の計算機資源を割り当てる、８．又は９．に記載の制御方法。
１１．  前記決定ステップにおいて、処理すべきタスクの量が最も多い前記実行主体を特定し、前記実行主体が最も負荷をかける計算機資源を特定し、前記特定された実行主体以外の実行主体のうち、最も負荷をかける計算機資源が前記特定した計算機資源である実行主体について、計算機資源を割り当てる優先度合いを低くする、８．乃至１０．いずれか一つに記載の制御方法。
１２．  前記決定ステップにおいて、
前記特定した実行主体と、最も負荷をかける計算機資源が前記特定した計算機資源とは異なる前記実行主体とに対し、処理すべきタスクの量に基づいて定まる優先度を割り当て、
最も負荷をかける計算機資源が前記特定した実行主体計算機資源である前記実行主体に対し、処理すべきタスクの量に基づいて定まる優先度よりも低い優先度を割り当て、
前記実行主体に割り当てる計算機資源の量を、その実行主体に割り当てられた優先度に応じた量にする、１１．に記載の制御方法。
１３．  前記決定ステップにおいて、
タスクと、そのタスクが最も負荷をかける計算機資源とを対応づけたタスク情報を取得し、
各前記実行主体が最も負荷をかける計算機資源を、前記タスク情報においてその実行主体が実行するタスクに対応づけられている計算機資源とする、１１．又は１２．に記載の制御方法。
１４．  前記実行主体が実行するタスクは、他の前記実行主体が実行したタスクによって生成される、８．乃至１３．いずれか一つに記載の制御方法。
【００６７】
１５．  複数種類のタスクで構成される処理を行うアプリケーションについて、タスクの種類ごとに少なくとも１つの実行主体が動作しているコンピュータに、
前記実行主体それぞれが処理すべきタスクの量を示す処理量情報を取得する取得ステップと、
前記実行主体に割り当てる計算機資源の合計の上限値を示す上限値情報及び前記処理量情報に基づいて、前記実行主体それぞれに割り当てる計算機資源を決定する決定ステップと、を実行させるプログラム。
１６．  前記決定ステップにおいて、前記上限値以下の量の計算機資源を、処理すべきタスクの量が多い前記実行主体ほど優先的に割り当てる、１５．に記載のプログラム。
１７．  前記実行主体ごとに、その実行主体が処理すべき１つ以上のタスクを格納するキューが設けられており、
前記処理量情報は、各前記実行主体のキューの長さを示し、
前記決定ステップにおいて、前記キューの長さが長い前記実行主体ほど多くの量の計算機資源を割り当てる、１５．又は１６．に記載のプログラム。
１８．  前記決定ステップにおいて、処理すべきタスクの量が最も多い前記実行主体を特定し、前記実行主体が最も負荷をかける計算機資源を特定し、前記特定された実行主体以外の実行主体のうち、最も負荷をかける計算機資源が前記特定した計算機資源である実行主体について、計算機資源を割り当てる優先度合いを低くする、１５．乃至１７．いずれか一つに記載のプログラム。
１９．  前記決定ステップにおいて、
前記特定した実行主体と、最も負荷をかける計算機資源が前記特定した計算機資源とは異なる前記実行主体とに対し、処理すべきタスクの量に基づいて定まる優先度を割り当て、
最も負荷をかける計算機資源が前記特定した実行主体計算機資源である前記実行主体に対し、処理すべきタスクの量に基づいて定まる優先度よりも低い優先度を割り当て、
前記実行主体に割り当てる計算機資源の量を、その実行主体に割り当てられた優先度に応じた量にする、１８．に記載のプログラム。
２０．  前記決定ステップにおいて、
タスクと、そのタスクが最も負荷をかける計算機資源とを対応づけたタスク情報を取得し、
各前記実行主体が最も負荷をかける計算機資源を、前記タスク情報においてその実行主体が実行するタスクに対応づけられている計算機資源とする、１８．又は１９．に記載のプログラム。
２１．  前記実行主体が実行するタスクは、他の前記実行主体が実行したタスクによって生成される、１５．乃至２０．いずれか一つに記載のプログラム。
【符号の説明】
【００６８】
１０  アプリケーション
１２  第１タスク
１４  第２タスク
１６  第３タスク
１８  第４タスク
２０  タスク実行主体
３０  上限値情報
４０  処理量情報
１００  グラフ
１１０  グラフ
２００  テーブル
２０２  タスク
２０４  計算機資源
１０００  計算機
１０２０  バス
１０４０  プロセッサ
１０６０  メモリ
１０８０  ストレージデバイス
１１００  入出力インタフェース
１１２０  ネットワークインタフェース
２０００  情報処理装置
２０２０  取得部
２０６０  決定部
【図１】
2019179487.tif 000004
【図２】
2019179487.tif 000005
【図３】
2019179487.tif 000006
【図４】
2019179487.tif 000007
【図５】
2019179487.tif 000008
【図６】
2019179487.tif 000009
【図７】
2019179487.tif 000010