(57)【要約】【課題】  ユーザが自らの利用状況に合わせて動的にその状況に応じて自身にとってより快適なリソース割当を行う。【解決手段】  本発明は、ユーザの意向が含まれるタスクのリソース割当要求が与えられると、該リソース割当要求に基づいて、リソース利用状況情報記憶手段の計算リソースの利用状況情報と、リソース割当選択リスト記憶手段を参照して、リソース割当方法を選択し、リソース割当要求の計算リソースの空きが優先度に従った閾値を超える場合には、該計算リソースを割り当て、該計算リソースの空きが優先度に従った閾値を下回る場合には、他の空きがある計算リソースを割り当てる。【選択図】  図２
2015026132.tif 000002
【特許請求の範囲】
【請求項１】
タスクを処理する異なる種類の複数の計算リソースを割り当てるリソース制御装置であって、
リソース割当方法を格納したリソース割当方法選択リスト記憶手段と、
計算リソースの利用状況情報を格納するリソース利用状況情報記憶手段と、
ユーザの意向が含まれるタスクのリソース割当要求が与えられると、該タスクを実行する装置の利用形態に応じて前記リソース割当方法選択リスト記憶手段からリソース割当方法を選択するリソース割当方法選択手段と、
前記リソース利用状況情報記憶手段を参照して前記リソース割当要求で指定された計算リソースの空きが優先度に従った閾値を超える場合には、該計算リソースを割り当て、該計算リソースの空きが優先度に従った閾値を下回る場合には、他の空きがある計算リソースを割り当てるリソース割当手段と、
を有することを特徴とするリソース制御装置。
【請求項２】
タスクへのリソース割当情報が格納されたリソース割当選択リスト記憶手段と、
前記リソース割当方法選択手段で選択されたリソース割当方法に基づいて、ユーザの意向を確認する、または、前記リソース割当要求に応じて、前記リソース割当選択リスト記憶手段のタスクの優先度や、前記リソース利用状況情報記憶手段のリソースの利用状況に応じてタスクへのリソース割当情報を抽出するリソース割当意向確認手段を更に有し、
前記リソース割当手段は、
前記リソース割当意向確認手段において、選択されたリソース割当方法が、前記ユーザの意向に対応していない場合は、該ユーザの意向に対応するよう計算リソースを割り当てる手段を含む
請求項１記載のリソース制御装置。
【請求項３】
前記リソース割当要求は、
ユーザによって設定されたタスクの重要度を含み、
前記リソース割当手段は、
前記タスクの重要度に応じて、タスク実行中のリソースを他のリソースに割り当てる、または、該タスク実行中のリソースを継続利用するかを判定する手段を含む
請求項１または２記載のリソース制御装置。
【請求項４】
タスクを処理する異なる種類の複数の計算リソースを割り当てるリソース制御方法であって、
リソース割当方法を格納したリソース割当方法選択リスト記憶手段と、
計算リソースの利用状況情報を格納するリソース利用状況情報記憶手段と、
リソース割当選択リストが格納されたリソース割当選択リスト記憶手段と、
リソース割当方法選択手段と、リソース割当手段と、を有する装置において、
前記リソース割当方法選択手段が、ユーザの意向が含まれるタスクのリソース割当要求が与えられると、該タスクを実行する装置の利用形態に応じて前記リソース割当方法選択リスト記憶手段からリソース割当方法を選択するリソース割当方法選択ステップと、
前記リソース割当手段が、前記リソース利用状況情報記憶手段を参照して、前記リソース割当要求で指定された計算リソースの空きが優先度に従った閾値を超える場合には、該計算リソースを割り当て、該計算リソースの空きが優先度に従った閾値を下回る場合には、他の空きがある計算リソースを割り当てるリソース割当ステップと、
を行うことを特徴とするリソース制御方法。
【請求項５】
前記リソース割当方法選択ステップで選択されたリソース割当方法が、前記リソース割当選択リスト記憶手段に定義されているかを確認するリソース割当意向確認ステップを更に行い、
前記リソース割当ステップにおいて、
前記リソース割当意向確認ステップで選択されたリソース割当方法に基づいて、ユーザの意向を確認する、または、前記リソース割当要求に応じて、前記リソース割当選択リスト記憶手段のタスクの優先度や、前記リソース利用状況情報記憶手段のリソースの利用状況に応じてタスクへのリソース割当情報を抽出し、
前記リソース割当ステップにおいて、
前記リソース割当意向確認ステップで選択されたリソース割当方法が、前記ユーザの意向に対応していない場合は、該ユーザの意向に対応するよう計算リソースを割り当てる
請求項４記載のリソース制御方法。
【請求項６】
前記リソース割当要求は、
ユーザによって設定されたタスクの重要度を含み、
前記リソース割当ステップにおいて、
前記タスクの重要度に応じて、タスク実行中のリソースを他のリソースに割り当てる、または、該タスク実行中のリソースを継続利用するかを判定する
請求項４または５記載のリソース制御方法。
【請求項７】
コンピュータを、
請求項１乃至３のいずれか１項に記載のリソース制御装置の各手段として機能させるためのリソース制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リソース制御技術に係り、特に、ユーザの意向に応じてタスクを処理する計算リソースの割り当てを制御するためのリソース制御装置及び方法及びプログラムに関する。
【背景技術】
【０００２】
従来から計算リソースとして利用されているCPU以外に、GPUを始め様々な計算リソースを用いて処理を行うタスクが年々増加している。しかし、計算リソース割当の組み合わせによっては、重要度の高いタスクの処理速度低下を招くことがある。そこで、複数の計算リソースを有するマシンにおいて、タスクに対して計算リソースを動的に割り当てる技術（例えば、非特許文献１参照）や、GPUを利用するタスクに対してGPUリソースを時分割し、リソース利用の優先度を設定できるようにする技術（例えば、非特許文献２参照）が知られている。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】AUGONNET, C., THIBAULT, S., NAMYST, R., AND WACRENIER, P.-A. StarPU: a unified platform for task scheduling on heterogeneous multicore architectures.  Proc. of Concurrency and Computation: Practice and Experience 23, 2 (feb 2011), 187-198.
【非特許文献２】KATO, S., MCTHROW, M., MALTZAHN, C., AND BRANDT, S. Gdev: First-Class GPU Resource Management in the Operating System. In Proc. of USENIX ATC (2012).
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術は複数の異なる計算リソースを持つマシンにおいて特定の目標に合わせてタスクに計算リソースを割り当てることを目的としているため、ユーザの利用状況やユーザの意向（ユーザの指示するタスクの重要度(優先度)）に合わせたリソース割当を行っていない。非特許文献１に開示された先行技術では、単位時間あたりの計算量を最大化することを目標とした計算リソースの割り当てなど複数の割り当てアルゴリズムが利用できるが、対象とする環境がハイパフォーマンスコンピューティングであるため、割り当てに際してユーザの利用状況や好みなどは考慮していない。
【０００５】
また、非特許文献２に開示された先行技術では、タスク毎に優先度を設定してGPUのリソースの割り当てを行うことが出来るが、異なる種類の計算リソース間でリソースを割り当てることはできない。即ち、タスクの優先度をユーザの利用状況や好みに応じて静的に指定することは可能であるが、動的に指定する機能は有していない。したがって、非特許文献１や非特許文献２に開示されている先行技術を用いて計算リソースの割り当てを行った場合でも、ユーザにとって重要なタスクに適切な計算リソースの割り当てが行われない可能性や、ユーザにとって重要なタスクが利用しているリソースを同時に他の重要性の低いタスクが利用することによって結果的に重要なタスクが利用可能な計算リソースを減少させてしまう可能性がある。このため、ある特定の目標に合わせて最適なリソース割当が実現できた場合であっても、それらのリソース割当方法によってユーザが快適になるとは限らないという課題がある。
【０００６】
本発明は、上記の点に鑑みなされたもので、ユーザが自らの利用状況に合わせて動的にその状況に応じて自身にとってより快適なリソース割当を行うことができ、ユーザにとって重要なタスク処理速度低下を防止することが可能なリソース制御装置及び方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一態様は、タスクを処理する異なる種類の複数の計算リソースを割り当てるリソース制御装置であって、
リソース割当方法を格納したリソース割当方法選択リスト記憶手段と、
計算リソースの利用状況情報を格納するリソース利用状況情報記憶手段と、
ユーザの意向が含まれるタスクのリソース割当要求が与えられると、該タスクを実行する装置の利用形態に応じて前記リソース割当方法選択リスト記憶手段からリソース割当方法を選択するリソース割当方法選択手段と、
前記リソース利用状況情報記憶手段を参照して前記リソース割当要求で指定された計算リソースの空きが優先度に従った閾値を超える場合には、該計算リソースを割り当て、該計算リソースの空きが優先度に従った閾値を下回る場合には、他の空きがある計算リソースを割り当てるリソース割当手段と、
を有することを特徴とするリソース制御装置が提供される。
【発明の効果】
【０００８】
一態様によれば、ユーザによる各タスクの利用状況と各タスクに対するユーザの意向に応じたリソース割当方法に基づいて、リソース制御装置によるリソースの利用状況の管理と合わせて計算リソースの割当を行うことで、各タスクが使用するリソースをユーザにとってより快適な形で振り分けることができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の第１の実施の形態におけるシステム構成例である。
【図２】本発明の第１の実施の形態におけるリソース制御装置の構成例である。
【図３】本発明の第１の実施の形態におけるリソース割当選択リスト記憶部の例である。
【図４】本発明の第１の実施の形態におけるリソース利用状況情報記憶部の例である。
【図５】本発明の第１の実施の形態における処理のフローチャートである。
【図６】本発明の第１の実施の形態におけるリソース割当の例である。
【図７】本発明の第２の実施の形態におけるシステム構成例である。
【図８】本発明の第２の実施の形態におけるリソース割当の例である。
【図９】本発明の第２の実施の形態における処理のフローチャートである。
【図１０】本発明の他の実施の形態における異なるマシンにリソース制御装置が存在するシステムの構成例である。
【発明を実施するための形態】
【００１０】
以下、図面と共に本発明の実施の形態を説明する。
【００１１】
［第１の実施の形態］
図１は、本発明の第１の実施の形態におけるシステム構成例である。
【００１２】
同図に示すマシン１は、ミドルウェア１０とリソース群２０を有する。
【００１３】
ミドルウェア１０は、図２に示すリソース制御装置１００を有する。
【００１４】
リソース制御装置１００は、異なる複数の計算リソース２００からなるマシン１上でタスクの処理に使用する計算リソース２００の選択を行う装置であり、ユーザインタフェース部１１０、リソース割当方法選択部１２０、リソース割当意向確認部１３０、リソース割当部１４０、リソース利用管理部１５０、リソース割当選択リスト記憶部１６０、リソース利用状況情報記憶部１７０、リソース割当方法リスト記憶部１８０を有する。
【００１５】
ユーザインタフェース部１１０は、当該リソース制御装置１００とユーザ端末(図示せず)とのデータやメッセージの送受信を行う。
【００１６】
リソース割当方法選択部１２０は、ユーザから入力されたリソース割当要求{タスク，リソース}を取得して、リソース割当方法リスト記憶部１８０からリソース割当方法を選択する。
【００１７】
リソース割当意向確認部１３０は、リソース割当方法選択部１２０で選択されたタスクへのリソース割当方法に従い、例えばユーザの意向を確認する必要がある場合には、ユーザインタフェース部１１０を介してユーザの意向を確認する。また例えば、自動的に選択する場合には、リソース割当選択リスト記憶部１６０のタスクの優先度や、リソース利用状況情報記憶部１７０のリソースの使用状況に応じてタスクへのリソース割当情報を抽出する。
【００１８】
リソース割当部１４０は、ユーザの意向に応じた割り当てリソースとリソース利用状況情報記憶部１７０の当該リソースの利用状況とリソース割当選択リスト記憶部１６０のタスクごとのリソースの優先度に基づき、タスクに対して最善のリソースを割り当てる。
【００１９】
リソース利用管理部１５０は、タスクに対して計算リソースが割り当てられると、当該タスクが実行されるリソース利用状況情報記憶部１７０のリソースの状況(使用中／未使用)、リソースを利用しているタスク名、及びその利用率を更新する。
【００２０】
なお、図２の例では、リソース利用管理部１５０とリソース利用状況情報記憶部１７０をリソース制御装置１００内に具備する例を示しているが、この例に限定されることなく、リソース制御装置１００の外部に設けられていても良い。
【００２１】
リソース割当選択リスト記憶部１６０は、図３に示すように、タスク毎に計算リソースとその優先度が格納されている。
【００２２】
リソース利用状況情報記憶部１７０は、図４に示すように、計算リソースの使用状況が格納されている。図４の例では、リソースの使用中を"１"、未使用を"０"で表している。また、図４に示すようにリソースの利用状況として、タスク毎のリソースの利用率が格納されている。図４の１行目の例では、リソース（CPU1）はタスク（Job1）によりリソースの50%が使用されていることを示している。
【００２３】
リソース割当方法リスト記憶部１８０には、例えば、
a. 当該リソースが使用中であるかを判定し、使用中である場合は、使用中でないリソースを提示し、ユーザに選択させる；
b. 当該リソース(例えば、CPU)が使用中であるかを判定し、使用中である場合は、他の未使用の同種別(例えば、CPU)のリソースの中から優先度の高い順にＮ件のリソース候補を提示し、ユーザに選択させる；
c. 当該リソース(例えば、CPU)が使用中であるかを判定し、使用中である場合は、他の未使用の異種別(例えば、GPU)のリソースの中から優先度の高い順にＮ件のリソース候補を提示し、ユーザに選択させる；
d.当該リソース(例えば、CPU)が使用中であるかを判定し、使用中である場合は、他の未使用の同種別(例えば、CPU)のリソースの中から最も優先度の高いリソースを自動的に選択する；
e. 当該リソース(例えば、CPU)が使用中であるかを判定し、使用中である場合は、他の未使用の異種別(例えば、GPU)のリソースの中から最も優先度の高いリソースを自動的に選択する；
等の選択ルールが格納されている。
【００２４】
上記の構成において、リソース割当部１４０は、リソース割当意向確認部１３０で確認されたユーザの意向と、リソース利用状況情報記憶部１７０からその時点におけるリソース利用状況を取得し、最適なリソース割当を行う。ここで、ユーザの意向に応じたリソースの割当とは、リソース制御装置１００が、ユーザのリソース割当要求{タスク，リソース}に応じて優先度の高いタスクから、ユーザが希望するリソースを割り当てることを意味する。
【００２５】
以下に、上記の構成におけるリソース制御装置１００の処理について説明する。
【００２６】
図５は、本発明の第１の実施の形態における処理のフローチャートである。
【００２７】
ステップ１００）  ユーザから、タスクと該タスクに割り当てたいリソースが指定されたリソース割当要求{タスク，リソース}が入力されると、ユーザインタフェース部１１０はこれを取得し、リソース割当方法選択部１２０に出力する。リソース割当方法選択部１２０は、マシン１の利用形態に応じてリソース割当方法選択リスト記憶部１８０からルールセットを選択する。
【００２８】
ステップ１１０）  リソース割当意向確認部１３０は、リソース割当方法選択部１２０で選択されたルールセットに従い、計算リソースがユーザの意向に合致しているか判定する。ユーザの意向に合致しているか否かの判定は、ユーザインタフェース部１１０を介してユーザに判断を促す方法がある。リソース割当要求に基づいて自動的にリソース割当を行う場合には、ステップ１２０に移行する。
【００２９】
ステップ１２０）  リソース割当部１４０は、リソース割当意向確認部１３０において、ユーザから当該ユーザの意向に合致していることが入力された場合、または、自動的にリソース割当を行う場合には、リソース割当選択リスト記憶部１６０を参照して、タスクがリソースを利用する優先度が高い計算リソースを選択する。リソース割当選択リスト記憶部１６０には、例えば、タスクがリソースＡを利用する優先度が50であり、リソースＡの利用が難しい場合にリソースＢを利用する優先度が20，…のように設定されており、当該優先度により計算リソースを選択する。さらに、リソース利用状況情報記憶部１７０を参照して当該計算リソースの空き状況がタスク間の相対的優先度による閾値を上回るかを判定する。ここで、相対的優先度とは、優先度を１〜100の値で表し、既に実行中のタスクが実行に利用しているリソースに対する優先度を分母に、新たに実行したいタスクの優先度を分子とする分数（または小数）で表される。もし、相対優先度が１を超えた場合は、新しく実行したいタスクの優先度が高くなる。この場合は、既に実行中及び新たに実行したいタスクの最適な計算リソースが同じであれば、リソース利用状況情報記憶部１７０の計算リソースの空き容量（利用率）をみて、リソースの割当を決定する。例えば、利用率が30%である場合（空き容量が70%）は、新たに実行したいタスクが、当該計算リソースで処理を開始し、既に実行中のタスクは別リソースで処理される。どの程度の利用率を閾値とするかは、事前にユーザが決定するか、各タスクがそれぞれのリソースに対してどの位の利用率以下での使用が最適であるかを考慮して決定する。
【００３０】
リソースの空き状況が相対優先度による閾値を上回る場合はステップ１３０に移行し、当該閾値以下の場合はステップ１４０に移行する。
【００３１】
ステップ１３０）  リソース割当部１４０は、当該リソースにタスクを割り当て、次の要求を待機する。
【００３２】
ステップ１４０）  リソースの空き状況が相対優先度による閾値以下の場合は、リソース割当部１４０は、リソース利用状況情報記憶部１７０から該当リソース以外に最も空きのあるリソースを選択する。
【００３３】
ステップ１５０）  リソース割当部１４０は、ステップ１４０で選択されたリソースにタスクを割り当て、次の要求を待機する。
【００３４】
次に、上記の処理を上記のフローチャートに沿って具体的に説明する。
【００３５】
本実施の形態では、リソースとして、CPUとGPUをそれぞれ１つずつ搭載するコンピュータにおいて、ユーザが動画を再生するタスクとファイルの圧縮を行うタスクの２つのみを同時に行う場合のリソース割当について説明する。動画再生のためのデコードには、CPUを用いて処理を行う方法と、GPUに実装されたデコード支援機能を利用する方法とがあり、動画の画質を改善するためのノイズ低減やエッジ強調などのエフェクトに関しても、CPUにおいて処理を行う方法とGPUによって処理を行う方法とがある。また、動画の再生処理を担当するため専用チップが搭載されているコンピュータでは、当該チップによって再生のための処理を行う方法もある。動画再生にCPUもしくはGPUなどを用いることができることは当業者にとって周知であるから、詳細の説明は省略する。
【００３６】
以下では、動画再生にGPUを用いる場合について述べる。
【００３７】
リソース割当方法選択部１２０は、ユーザインタフェース１１０を介して、ユーザからリソース割当要求を取得すると、リソース名に基づいて、リソース割当方法選択リスト記憶部１８０を参照し、リソースの割当方法を選択する（ステップ１００）。
【００３８】
例えば、CPUとGPUを１基ずつ搭載したマシン１において、リソース割当方法選択部１２０が、前述のリソース割当方法として、c（当該リソース(例えば、CPU)が使用中であるかを判定し、使用中である場合は、他の未使用の異種別(例えば、GPU)のリソースの中から優先度の高い順にＮ件のリソース候補を提示し、ユーザに選択させる）を選択した場合に、画像編集に関わるタスクと動画再生タスクはGPUでの処理の方が処理速度が高いとした場合を想定する。既に画像編集に関わるタスクがGPU上で処理されているとき、ユーザが新たに動画再生タスクを、画像編集に関わるタスクより高い優先度で起動させたい場合、リソース制御装置１００が、画像編集に関わるタスクのAPI(Application Programming Interface)をフックし、CPU上での処理に切り替え、優先度の高い動画再生タスクをGPU上で処理する。
【００３９】
なお、リソース割当方法の選択は上記の例に限定されるものではない。
【００４０】
次に、ユーザの利用状況の変化、または、新たなリソース割当要求が発生するまで待機し、発生した事象がリソース割当要求である場合は、リソース割当意向確認部１３０は、リソース割当方法選択リスト記憶部１６０に当該要求のタスクに対するユーザの好みの割当方法が定義されているかを確認する。例えば、予めリソース割当方法選択リストに定義されているユーザの意向に応じた動画の再生のタスクのためのリソース(この例では"GPU)"に従い、当該タスクにはGPUを割り当てる。例えば、動画再生タスクのAPIをフックすることで、当該タスクがGPU上で処理されるよう設定する。利用されるリソースの状況が変化した場合は、リソース利用管理部１５０において、リソース利用状況情報記憶部１７０のリソース状況、タスク、利用率を更新する。
【００４１】
次に、ユーザが動画の再生を実行しながら、ファイルの圧縮タスクの実行開始を試みると、ファイル圧縮タスクがリソース割当部１４０に計算リソースを要求する(ステップ１１０)。リソース割当部１４０は、ユーザの意向に応じたリソース割当方法が、割り当てるリソース候補の計算リソースの空きが優先度に従った閾値を超える場合には(ステップ１２０、Yes)、リソース候補をリソースとして割り当てる(ステップ１３０)。一方、ユーザの意向に応じたリソース割当方法によって割り当てるリソース候補の空きが優先度に従った閾値を下回る場合は、当該リソース候補とは異なる他の空きのあるリソース候補を選択し(ステップ１４０)、最も空きのある計算リソースを割り当てる（ステップ１５０）。
【００４２】
例として、ユーザの意向として『ファイル圧縮タスク』について『動画再生タスク』に割り当てを行ったものと同じ計算リソース、具体的には、"GPU"を割り当てることが要求されている場合、『ファイル圧縮タスク』のタスクが使用するリソース割当において、『ファイル圧縮タスク』の『動画再生タスク』に対する相対的優先度によって導出される閾値がGPUの計算リソースの空きを上回る場合には、GPUを割り当てる。逆にGPUの空きが十分でなく、閾値に達しない場合には、CPUを割り当てる。
【００４３】
なお、この閾値の設定は静的に指定する。マシン全体の計算リソースの利用状況に合わせて動的に変更するなど様々な方法があるが、タスクの相対的重要性に基づく当該計算リソース割当の必要性と当該計算リソースの空きの比較によって計算リソースの割り当て可否を判断可能である限り、どのような指定方法を用いても良い。
【００４４】
一方、ユーザの意向が『ファイル圧縮タスク』に対してCPUの割当を求める方法が選択されている場合、CPUの利用状況は他のタスクによって利用されていない場合は、計算リソースに十分空きがあるため、ユーザの意向に応じた計算リソースであるCPUを割り当てる。
【００４５】
このように『ファイル圧縮タスク』の計算リソースの割当に関して、ユーザの意向に応じたリソースであるCPUを割り当てることができる。
【００４６】
『ファイル圧縮タスク』の計算リソース割当に関して、リソース割当方法選択リスト記憶部１８０に当該タスク(この場合は「ファイル圧縮タスク」)が定義されていない、または、当該タスクに対してユーザが当該タスクのリソース割当を重視しない（他のタスクを最大限優先するように割り当ててよい)場合など、ユーザの意向に応じたリソース割当方法が特に存在しない場合には、リソース利用状況情報記憶部１７０の利用状況に応じて、より空きが大きい計算リソースであるCPUを割り当てる。なお、ユーザがタスクの割当を重視しない状況においては、必ずしも空きの大きなリソースを選択する必要はなく、リソース割当意向確認部１３０からユーザに対してどのリソースを割り当てるかの指示の入力を促すことも可能である。
【００４７】
また、リソース割当要求に対し、ユーザ意向に応じたリソース割当方法がないタスクに対しては、利用状況情報記憶部１７０の利用状況に応じて、より空きが大きな計算リソースを割り当てる方法や、ランダムに計算リソースを割り当てる方法、利用可能な計算リソースを順番に割り当てる方法など様々なものが考えられるが、ユーザにとって重要であり、計算リソースの割当の意向に応じたリソース割当方法が定義されているタスクを優先し、それらの重要なタスクの処理速度の低下を防止できる限り、どのような方法を用いても構わない。
【００４８】
また、ユーザにとって動画の再生が他のタスクに対し相対的に極めて重要であるとして、ユーザの意向に応じたリソース割当方法が定義されている場合(例えば、リソース割当選択リスト記憶部１６０の優先度が"50"以上の値等)、動画再生にGPUを割当、ファイル圧縮にはCPUを割り当てることで、GPUの計算能力を動作再生タスクの各タスクのために最大限利用させることができるため、図６の例では動画のリアルタイム(フレームレート 60fps)再生が可能である。したがって、動画再生に関する処理能力の低下によりユーザが不快と感じる事象の発生を防止できる。
【００４９】
一方で、以下のような場合は、ファイルの圧縮にGPUを割り当てることで動画再生のフレームレート低下（35fps）と引き替えに、ファイルの圧縮処理のタスクにCPUを割り当てる。
【００５０】
・動画再生がユーザにとって特段重要ではないとしてユーザの意向に応じたリソース割当方法が定義されている場合；
・ユーザの意向に応じたリソース割当方法自体が定義されていない場合；
・ファイルの圧縮が重要であるとしてユーザの意向に応じたリソース割当方法自体が定義されている場合；、
これにより、動画再生のフレームレート低下（35fps）と引き替えに、ファイルの圧縮処理のタスクにCPUを割り当てる場合と比べて、ファイル圧縮処理に必要な時間を12分から9分30秒に短縮できる。そのため、ユーザのファイル圧縮処理を早く終わらせたいという意向を反映することができる。
【００５１】
なお、本実施の形態では、ユーザが動画の再生にGPUの割当を移行する状況を想定したが、逆にユーザが動画再生にCPUの割当を移行する場合であっても、同様に実施可能なことは当然である。また、本実施の形態ではCPＵとGPＵを１つずつ搭載するマシンにおいて、２つのタスクを実行して計算リソースの割当を行ったが、タスクが３つ以上実行される場合や、計算リソースが３つ以上存在する場合であっても、タスクに対するユーザの意向に応じた計算リソース割当方法の定義と各計算リソースの空きの情報を元に、二つの計算リソースと二つのタスクの場合と同様に実施可能なことは当然である。
【００５２】
［第２の実施の形態］
図７は、本発明の第２の実施の形態におけるシステム構成例であり、リソース制御装置１００によって管理された計算リソースとしてCPU３００及びGPU４００を有する構成を示す。
【００５３】
本実施の形態では、一部のタスクの計算リソースが固定されている、また先に実行しているタスクを切り替える例を説明する。
【００５４】
リソース制御装置１００の構成は第1の実施の形態と同様であるので、構成図及びその説明は省略する。
【００５５】
本実施の形態では、CPUとGPUとをそれぞれ1つずつ搭載するマシンにおいて、ユーザが既に動画のエンコード処理にGPUを利用している状態で、3Dゲームを新たに実行する場合のリソース割当について説明する。
【００５６】
従来はCPUや専用のチップが用いられてきた動画のエンコード処理において、近年は動画のエンコード処理を高速化するためのGPU上の専用回路を利用する方法は、GPUの汎用処理能力を利用して動画のエンコード処理を高速化する方法が用いられている。動画のエンコード処理にこれらのGPUの計算能力を用いることができることは当業者にとって周知であるから、詳細な説明は省略する。一方で、3Ｄゲームにおいては一般にそのグラフィックス処理のためにGPUを利用する必要がある。元来GPUはグラフィックス処理を行うために用意されるプロセッサであり、3Dゲーム実行にGPUの利用が必要となることは当業者にとって周知であるから、詳細な説明は省略する。
【００５７】
処理の流れは、第1の実施の形態と略同じであるので、異なる点のみを説明する。
【００５８】
図８に示されるように、本実施の形態では、動画のエンコード処理に計算リソースとしてGPUを利用するとゲームのフレームレートが27fpsまで低下し、ユーザがゲームを快適に行うことが難しいが、動画のエンコード処理にCPUを割り当てることで、ゲームのフレームレートを55fpsまで高めることができ、ユーザはより快適にゲームを行うことができる。但し、図８の例では、動画のエンコード処理に計算リソースとしてCPUを割り当てた場合、動画のエンコード処理に必要な時間が25分から70分に延長される。
【００５９】
図９は、本発明の第２の実施の形態における処理のフローチャートである。
【００６０】
ステップ２００）  リソース割当方法選択部１２０は、マシン１の利用形態に応じてリソース割当方法選択リスト記憶部１８０からリソース割当方法を選択する。
【００６１】
ステップ２１０）  ユーザの利用状況の変化、新たなリソース割当要求、または、重要性の高い固定的リソース割当通知が生じるまで待機し、生じた事象がリソース割当要求または、リソース割当通知である場合は、リソース割当意向確認部１３０は、リソース割当要求または、リソース割当通知を行ったタスクに対するユーザの好みのリソース割当の確認を行う。
【００６２】
ステップ２２０）  リソース割当部１４０は、リソース利用状況情報記憶部１７０を参照して、対象のタスクの好みのリソースまたは割当通知先のリソースに十分な空きがあるかを判定する。空きがある場合はステップ２３０に移行し、ない場合はステップ２４０に移行する。
【００６３】
ステップ２３０）  リソース割当部１４０は、タスクに好みの計算リソースを割り当て、次のリソース割当要求またはリソース割当通知を待機する。
【００６４】
ステップ２４０）  リソース割当部１４０は、リソースを利用している他のタスクの中で当該タスクとの相対的優先度において低いものがあるかを判定し、ある場合はステップ２５０に移行し、ない場合はステップ２６０に移行する。
【００６５】
ステップ２５０）  リソース割当部１４０は、最も相対的優先度の低いタスクの割当リソースを当該リソース以外で最も空きのあるものに変更し、ステップ２２０に移行する。
【００６６】
ステップ２６０）  リソース割当部１４０は、対象のタスクのリソース割当は変更可能かを判定し、変更可能であればステップ２７０に移行し、変更不可能である場合はステップ２３０に移行する。
【００６７】
ステップ２７０）  リソース割当部１４０は、該当計算リソース以外で最も空きのある計算リソースを選択する。
【００６８】
ステップ２８０）  リソース割当部１４０は、最も空きのある計算リソースを割り当て、次のリソース割当要求またはリソース割当通知を待機する。
【００６９】
以下、上記のフローチャートに沿って具体的な処理を説明する。
【００７０】
既に動画のエンコード処理を実行している途中において、ユーザがゲームタスクを起動し、ゲームのタスクの実行開始を試みるリソース割当要求を取得した場合、リソース割当意向確認部１３０は、当該利用状況におけるユーザの意向に応じた計算リソースを割り当て方法として、ゲームの処理速度を優先すると定義されていることを確認し(ステップ２１０)、リソース割当部１４０は、動画のエンコード処理のタスクをCPUで行うよう、動画のエンコード処理のタスクに対し、割り当てられる計算リソースをGPUからCPUに切り替える(ステップ２３０)。なお、異なる計算リソース間での計算リソースの切り替えに関して、プロセスマイグレーションのように、一次的な処理の中断などの制約があるものの計算リソースの切り替えは様々な方法で可能であることは当業者にとって周知であることから説明を省略する。一方で、当該利用状況において、ゲームのタスクの処理速度がユーザにとって相対的にそれほど重要でない場合(ステップ２４０,No)、動画エンコード処理のタスクに対する計算リソース割当を変更せずGPUを継続利用させる(ステップ２６０,No，ステップ２３０)ことで、動画エンコード処理の処理時間をCPUに割り当て変更した場合に比べ、相対的に短くすることができる。また、当該ゲームにGPUが割り当てられており、重要度が低いと判断された場合（相対的優先度が低いものがある）（ステップ２４０、Yes）、計算リソースをGPUからCPUに変更する（ステップ２５０）。
【００７１】
本実施の形態では、二つの異なる計算リソースを持つマシン上で二つの異なるタスクを実行し、その片方のタスクについて計算リソースの切り替えができない場合においても本発明を適用することを説明したが、３つ以上の計算リソースを持つマシンや、３つ以上のタスクが実行される場合であっても、一部のタスクの計算リソースの切り替えが可能である限り、当該第２の実施の形態と同様に実施可能であることは当然である。
【００７２】
なお、上記の第１、第２の実施の形態では、異なる複数の計算リソースとして、マシン１上に搭載されるCPUやGPUが利用する例を示したが、この例に限定されることなく、本発明で利用できる計算リソースとして、タスク処理を実行できる計算能力を持つ他のプロセッサやDSPなどを用いてもよく、仮想マシンなどの技術によって抽象化された計算リソースやリソース制御装置によって管理される同一でないマシン上に搭載される計算リソースであってもよい。
【００７３】
また、利用可能な計算リソースを分割してより小さな計算リソースとして割り当てを行ってもよい。
【００７４】
リソース制御装置１００は、計算リソース２００と同一のマシン上で実行されるものではなく、図１０に示すように、異なるマシンによってリソース制御を行い、計算リソースの割り当てを行ってもよい。また、リソース制御装置１００は、単一のマシン上で実行される形態に限定されるものではなく、複数のマシン上でリソース装置を協調動作させてもよい。
【００７５】
ユーザの意向に応じたタスクへのリソース割当方法は、ユーザが直接的に特定のタスクに対して特定の計算リソースの割当を指定する形態に限定されるものではなく、特定のタスクの処理速度を優先したい、画像編集に関わるタスクについては処理速度を優先したいなど、タスクの重要度（優先度)に対する抽象度の高いユーザの要求を入力として、その入力を具体的なリソースの割当方法に変換した上で利用してもよい。例えば、CPUとGPUを一基ずつ搭載した装置において、画像編集に関わるタスクと動画再生タスクはGPUでの処理の方が処理速度が高いとした場合を想定する。既に画像編集に関わるタスクがGPU上で処理されていて、ユーザは新たに動作再生タスクを、画像編集に関わるタスクより高い優先度で起動させた場合、リソース制御装置１００が、画像編集に関わるタスクのAPIをフックし、CPU上での処理に切り替え、優先度の高い動画再生タスクをGPU上で処理する。
【００７６】
さらに、本発明におけるマシンの同時利用ユーザは１人に限定されるものではない。２人以上のユーザが同時に利用している場合には、特定の複数のユーザが利用する状況を利用状況の形態としてその状況、各ユーザの意向に応じて、各タスクへのリソースの割当を行ってもよい。
【００７７】
上記のように本発明では、ユーザの計算リソースの利用状況に応じた各タスクに対する計算リソースの割り当てのユーザの意向を入力とすることで、リソース制御装置が計算リソースの利用状況を管理し、ユーザの意向に沿ったリソース割当方法を確認した上で、各タスクが使用する計算リソースをユーザにより快適な形で振り分けることができる。
【００７８】
また、図２に示すリソース制御装置１００の構成要素の動作をプログラムとして構築し、リソース制御装置として利用されるコンピュータにインストールして実行させる、または、ネットワークを介して流通させることも可能である。
【００７９】
また、構築されたプログラムを、CD-ROM、DVD-ROM、フラッシュメモリ等のコンピュータ読取可能な記録媒体に記録してもよい。
【００８０】
本発明は上記の実施の形態に限定されることなく、特許請求の範囲内において、種々変更・応用可能である。
【符号の説明】
【００８１】
１  マシン
１０  ミドルウェア
２０  リソース群
１００  リソース制御装置
１１０  ユーザインタフェース部
１２０  リソース割当方法選択部
１３０  リソース割当意向確認部
１４０  リソース割当部
１５０  リソース利用管理部
１６０  リソース割当選択リスト記憶部
１７０  リソース利用状況情報記憶部
１８０  リソース割当方法リスト記憶部
２００  計算リソース
【図１】
2015026132.tif 000003
【図２】
2015026132.tif 000004
【図３】
2015026132.tif 000005
【図４】
2015026132.tif 000006
【図５】
2015026132.tif 000007
【図６】
2015026132.tif 000008
【図７】
2015026132.tif 000009
【図８】
2015026132.tif 000010
【図９】
2015026132.tif 000011
【図１０】
2015026132.tif 000012