(57)【特許請求の範囲】
【請求項１】
画像処理のためのプロセッサである第１のプロセッサと当該第１のプロセッサによって実行された画像処理の結果を含む画面のデータをユーザ端末に表示させるための処理を実行する第２のプロセッサとを有するコンピュータにおける前記第２のプロセッサに実行させるためのプログラムであって、
前記第１のプロセッサに出力される、前記画像処理のための処理命令を複数取得する第１取得処理と、
前記第１のプロセッサによって画像処理が実行されている場合に、２以上の時点において前記第１のプロセッサの使用率を取得する第２取得処理と、
取得された前記第１のプロセッサの使用率を用いて、前記第１のプロセッサの使用率に所定の変化が生じたか判断する判断処理と、
前記第１のプロセッサの使用率に前記所定の変化が生じたと判断された場合に、取得された前記処理命令の組合せ及び前記第１のプロセッサの使用率に応じて、前記画面のデータを前記ユーザ端末に表示させるために実行すべき複数の処理のうちいずれの処理を前記第１のプロセッサに実行させるかを決定する決定処理と、
前記決定処理の結果に従って前記複数の処理が実行されるように設定を行う設定処理と、
を実行させるためのプログラム。
【請求項２】
前記設定処理の前に取得した複数の前記処理命令の取得時刻を用いて、前記設定処理の前における前記処理命令の間隔を算出し、前記設定処理の後に取得した複数の前記処理命令の取得時刻を用いて、前記設定処理の後における前記処理命令の間隔を算出し、前記設定処理の後の前記処理命令の間隔が前記設定処理の前の前記処理命令の間隔よりも短いか判断する処理と、
前記設定処理の後の前記処理命令の間隔が前記設定処理の前の前記処理命令の間隔よりも長いと判断された場合、前記決定処理において前記第１のプロセッサに実行させると決定された処理のうちいずれかの処理を前記第２のプロセッサが実行するように設定を行う処理と、
をさらに実行させるための請求項１記載のプログラム。
【請求項３】
前記画面のデータを前記ユーザ端末に送信する処理についてフレームレートを計測する処理と、
前記設定処理の前のフレームレートと前記設定処理の後のフレームレートとを比較し、前記設定処理の後のフレームレートが前記設定処理の前のフレームレートよりも高いか判断する処理と、
前記設定処理の後の前記処理命令の間隔が前記設定処理の前の前記処理命令の間隔よりも短く且つ前記設定処理の後のフレームレートが前記設定処理の前のフレームレートよりも低いと判断された場合に、前記決定処理において前記第１のプロセッサに実行させないと決定された処理のうちいずれかの処理を前記第１のプロセッサが実行するように設定を行う処理と、
をさらに実行させるための請求項２記載のプログラム。
【請求項４】
前記第２のプロセッサの使用率を取得する処理と、
前記設定処理の後の前記処理命令の間隔が前記設定処理の前の前記処理命令の間隔よりも短く且つ前記設定処理の後のフレームレートが前記設定処理の前のフレームレートよりも高いと判断された場合に、前記第１のプロセッサに実行させる処理の組合せの識別子に対応付けて前記第１のプロセッサの使用率と前記第２のプロセッサの使用率と前記処理命令の組合せとを含むレコードを格納する第１データ格納部に、前記決定処理において前記第１のプロセッサに実行させると決定された処理の組合せの識別子に対応付けて、前記設定処理の前に取得された前記第１のプロセッサの使用率と前記第２のプロセッサの使用率と前記処理命令の組合せとを含むレコードを格納する格納処理と、
をさらに実行させるための請求項３記載のプログラム。
【請求項５】
前記決定処理が、
前記第１のプロセッサの使用率の範囲と前記第２のプロセッサの使用率の範囲との組合せに対応付けて前記第１のプロセッサに実行させる処理の組合せの識別子を格納する第３データ格納部から、取得された前記第１のプロセッサの使用率が属する範囲と前記第２のプロセッサの使用率が属する範囲との組合せに対応する処理の組合せの識別子を特定する処理
を含む請求項４記載のプログラム。
【請求項６】
前記決定処理が、
前記第１データ格納部から、取得された前記第１のプロセッサの使用率、前記第２のプロセッサの使用率及び前記処理命令の組合せに最も近いレコードに対応する処理の組合せの識別子を特定する処理
を含む請求項４記載のプログラム。
【請求項７】
前記第２取得処理が
前記画像処理に含まれる処理の各々について、前記第１のプロセッサの使用率を２以上の時点において取得する処理
を含み、
前記判断処理が、
前記画像処理に含まれる処理のうち少なくともいずれかの処理による前記第１のプロセッサの使用率の変化量が、前記画像処理に含まれる処理毎に予め定められた閾値を所定回数連続して超えたか判断する処理
を含む請求項１乃至６のいずれか１つ記載のプログラム。
【請求項８】
前記第２取得処理が、
前記画像処理に含まれる処理のうち第１の処理による前記第１のプロセッサの使用率を２以上の時点において取得する処理
を含み、
前記判断処理が、
前記第１の処理による前記第１のプロセッサの使用率の変化量が、前記第１の処理に対して予め定められた閾値を所定回数連続して超えたか判断する処理
を含む請求項１乃至６のいずれか１つ記載のプログラム。
【請求項９】
前記画面のデータを前記ユーザ端末に表示させるために実行すべき複数の処理のうちいずれかの処理において前記第１のプロセッサが使用するメモリの獲得に失敗した場合に、前記決定処理において前記第１のプロセッサに実行させると決定された処理の組合せを採用すべきではないことを示す情報を前記格納処理において格納されたレコードに追加すると共に、前記決定処理において前記第１のプロセッサに実行させると決定された処理の組合せの識別子を、前記第１のプロセッサが使用するメモリの使用量が所定の基準より少ない処理の組合せの識別子に変更する処理
をさらに実行させるための請求項４乃至６のいずれか１つ記載のプログラム。
【請求項１０】
画像処理のためのプロセッサである第１のプロセッサと当該第１のプロセッサによって実行された画像処理の結果を含む画面のデータをユーザ端末に表示させるための処理を実行する第２のプロセッサとを有するコンピュータにおける前記第２のプロセッサにより実行される情報処理方法であって、
前記第１のプロセッサに出力される、前記画像処理のための処理命令を複数取得する処理と、
前記第１のプロセッサによって画像処理が実行されている場合に、２以上の時点において前記第１のプロセッサの使用率を取得する処理と、
取得された前記第１のプロセッサの使用率を用いて、前記第１のプロセッサの使用率に所定の変化が生じたか判断する処理と、
前記第１のプロセッサの使用率に前記所定の変化が生じたと判断された場合に、取得された前記処理命令の組合せ及び前記第１のプロセッサの使用率に応じて、前記画面のデータを前記ユーザ端末に表示させるために実行すべき複数の処理のうちいずれの処理を前記第１のプロセッサに実行させるかを決定する決定処理と、
前記決定処理の結果に従って前記複数の処理が実行されるように設定を行う処理と、
を含む情報処理方法。
【請求項１１】
画像処理のためのプロセッサである第１のプロセッサと、
前記第１のプロセッサによって実行された画像処理の結果を含む画面のデータをユーザ端末に表示させるための処理を実行する第２のプロセッサと、
を有し、
前記第２のプロセッサが、
前記第１のプロセッサに出力される、前記画像処理のための処理命令を複数取得し、
前記第１のプロセッサによって画像処理が実行されている場合に、２以上の時点において前記第１のプロセッサの使用率を取得し、
取得された前記第１のプロセッサの使用率を用いて、前記第１のプロセッサの使用率に所定の変化が生じたか判断し、
前記第１のプロセッサの使用率に前記所定の変化が生じたと判断された場合に、取得された前記処理命令の組合せ及び前記第１のプロセッサの使用率に応じて、前記画面のデータを前記ユーザ端末に表示させるために実行すべき複数の処理のうちいずれの処理を前記第１のプロセッサに実行させるかを決定し、
決定の結果に従って前記複数の処理が実行されるように設定を行う、
情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、複数のプロセッサによる処理の分担技術に関する。
【背景技術】
【０００２】
システムを運用及び管理するコストを削減したり、情報漏洩への対策を講じるという観点から、シンクライアントシステムが注目されている。それに伴い、クラウド上のサーバにユーザのデスクトップ環境を構築し、ネットワークを介してユーザに提供するＤａａＳ（Desktop as a Service）というサービスが行われるようになっている。このようなサービスは、資料を作成したり、メールを閲覧したり、ウェブサイトを閲覧すること等に利用されることが多かったが、近年では、動画を閲覧したり、ＣＡＤ（Computer Aided Design）を使用することにも利用されつつある。
【０００３】
上で述べたようなシステムにおけるクライアント端末とサーバとの間の通信の方法には、以下の２つの方法がよく知られている。１つ目は、例えばＲＤＰ（Remote Desktop Protocol）のようなプロトコルを利用し、サーバのデスクトップ画面に対する描画コマンドをクライアント端末に送信し、クライアント端末において描画コマンドを実行することで画面を描画する方法である。２つ目は、例えばＲＦＢ（Remote FrameBuffer）プロトコルのようなプロトコルを利用し、サーバのデスクトップ画面の内容を画像データとしてクライアント端末に送信し、クライアント端末の画面に表示する方法である。
【０００４】
しかし、動画を閲覧したり、ＣＡＤを使用するような場合、前者の方法を利用すると、描画コマンドの数が増大し、レスポンスの遅延が大きくなりやすい。そこで、後者の方法を利用して、クライアント端末の操作者が快適に動画を閲覧したり、ＣＡＤを使用できるようにすることが検討されている。
【０００５】
従来より、ＣＰＵ（Central Processing Unit）が実行する処理の一部をＧＰＵ（Graphics Processing Unit）に実行させ、ＣＰＵの負担を減らす技術（ＧＰＧＰＵ（General-Purpose computing on Graphics Processing Units））が存在する。しかし、上記のシステムにこの技術を単純に適用すると、画像データを送信する処理等に割り当てるＧＰＵのコア数を適切に制限することができない。そのため、ＧＰＵを利用するアプリケーションプログラム（例えばＣＡＤなど）の処理が遅延し、ユーザ端末での操作に対するレスポンスが遅くなる可能性がある。
【０００６】
また、画像処理に関して、以下のような技術も存在する。具体的には、イメージデータを所定のグラフィックメモリにローディングするプロセッサ手段が、セルに対するレンダリングイベントが発生する場合に、所定の基本記録空間からセルと連関したソースデータを識別する。また、プロセッサ手段が、識別されたソースデータを構成する単位ソースデータを、所定周期間隔で、グラフィックメモリに順次ローディングさせる。一方、ビデオプロセッサ手段が、グラフィックメモリにローディングされた単位ソースデータをレンダリングしてイメージを生成し、ディスプレイ部にディスプレイする。しかし、上で述べたようなシステムにおいてレスポンスを改善することについては考慮されていない。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特表２００８−５０３８２９号公報
【特許文献２】特開２０１１−２３８０１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
従って、本技術の目的は、一側面では、サーバにおいて実行された画像処理の結果をユーザ端末にレスポンス良く表示させるための技術を提供することである。
【課題を解決するための手段】
【０００９】
本技術の一側面に係る情報処理方法は、画像処理のためのプロセッサである第１のプロセッサと当該第１のプロセッサによって実行された画像処理の結果を含む画面のデータをユーザ端末に表示させるための処理を実行する第２のプロセッサとを有するコンピュータにおける第２のプロセッサに実行される。そして、本情報処理方法は、（Ａ）第１のプロセッサによって画像処理が実行されている場合に、２以上の時点において第１のプロセッサの使用率を取得する取得処理と、（Ｂ）取得された第１のプロセッサの使用率を用いて、第１のプロセッサの使用率に所定の変化が生じたか判断する判断処理と、（Ｃ）第１のプロセッサの使用率に所定の変化が生じたと判断された場合に、取得された第１のプロセッサの使用率に応じて、画面のデータをユーザ端末に表示させるために実行すべき複数の処理のうちいずれの処理を第１のプロセッサに実行させるかを決定する決定処理と、（Ｄ）決定処理の結果に従って複数の処理が実行されるように設定を行う設定処理とを含む。
【発明の効果】
【００１０】
サーバにおいて実行された画像処理の結果をユーザ端末にレスポンス良く表示することができるようになる。
【図面の簡単な説明】
【００１１】
【図１】図１は、第１の実施の形態におけるシステム概要を示す図である。
【図２】図２は、サーバの機能ブロック図である。
【図３】図３は、各動作モードにおけるＧＰＵ及びＣＰＵの処理分担を示す図である。
【図４】図４は、動作モード格納部に格納されているデータの一例を示す図である。
【図５】図５は、決定データ格納部に格納されているデータの一例を示す図である。
【図６】図６は、サーバが行う処理の処理フローを示す図である。
【図７】図７は、サーバが行う処理の処理フローを示す図である。
【図８】図８は、パターン格納部に格納されているデータの一例を示す図である。
【図９】図９は、動作モード決定処理の処理フローを示す図である。
【図１０】図１０は、サーバが行う処理の処理フローを示す図である。
【図１１】図１１は、起動監視部が行う処理の処理フローを示す図である。
【図１２】図１２は、ＡＰＩ監視部が行う処理の処理フローを示す図である。
【図１３】図１３は、取得部が行う処理の処理フローを示す図である。
【図１４】図１４は、判定部が行う処理の処理フローを示す図である。
【図１５】図１５は、判定部が行う処理の処理フローを示す図である。
【図１６】図１６は、判定部が行う処理の処理フローを示す図である。
【図１７】図１７は、判定部が行う処理の処理フローを示す図である。
【図１８】図１８は、判定部が行う処理の処理フローを示す図である。
【図１９】図１９は、通知部が行う処理の処理フローを示す図である。
【図２０】図２０は、比較部が行う処理の処理フローを示す図である。
【図２１】図２１は、変更部が行う処理の処理フローを示す図である。
【図２２】図２２は、計測部が行う処理の処理フローを示す図である。
【図２３Ａ】図２３Ａは、決定データ格納部に格納されているデータの一例を示す図である。
【図２３Ｂ】図２３Ｂは、動作モード決定処理の処理フローを示す図である。
【図２４】図２４は、描画命令毎の閾値の設定例を示す図である。
【図２５】図２５は、通知部が行う処理の処理フローを示す図である。
【図２６】図２６は、判定部が行う処理の処理フローを示す図である。
【図２７】図２７は、判定部が行う処理の処理フローを示す図である。
【図２８】図２８は、パターン格納部に格納されているデータの一例を示す図である。
【図２９】図２９は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００１２】
［実施の形態１］
図１に、第１の実施の形態におけるシステム概要を示す。図１に示したシステムは、例えばＤａａＳを提供するためのシステムであり、サーバ１とクライアント端末５とが、インターネット等のネットワーク３を介して接続されている。図１に示したシステムはシンクライアントシステムであり、クライアント端末５は最低限の機能しか有していないため、クライアント端末５のユーザはサーバ１が有する機能をネットワーク３を介して利用する。
【００１３】
図２に、サーバ１の構成を示す。サーバ１は、ＧＰＵアプリ１０と、管理部１１と、画面制御部１２と、処理ライブラリ１３と、ＧＰＵドライバ１４と、ＯＳ（Operating System）１５と、ＧＰＵ１６と、ＣＰＵ１７とを有する。また、管理部１１は、起動監視部１１０と、取得部１１１と、ＡＰＩ（Application Programming Interface）監視部１１２と、パターン格納部１１３と、判定部１１４と、比較部１１５と、通知部１１６と、動作モード格納部１１７と、決定データ格納部１１８とを含む。また、画面制御部１２は、画像メモリ１２０と、第１送信部１２１と、頻度特定部１２２と、送信停止部１２３と、領域識別部１２４と、計測部１２５と、第２送信部１２６と、変更部１２７とを含む。
【００１４】
ＧＰＵアプリ１０は、例えばＣＡＤなどＧＰＵ１６を利用するアプリケーションプログラムである。ＧＰＵアプリ１０は、処理ライブラリ１３及びＧＰＵドライバ１４を介してＧＰＵ１６を使用する。起動監視部１１０は、ＯＳ１５を介してＧＰＵアプリ１０が起動したかを監視し、起動した場合には動作開始要求を取得部１１１、ＡＰＩ監視部１１２及び判定部１１４に送信する。取得部１１１は、ＧＰＵドライバ１４を介してＧＰＵ１６の使用率を取得する。ＡＰＩ監視部１１２は、ＧＰＵアプリ１０からＧＰＵ１６に出力される描画命令を受信する。判定部１１４は、パターン格納部１１３、動作モード格納部１１７及び決定データ格納部１１８に格納されているデータを用いて、適用する動作モードを決定する処理等を実施する。比較部１１５は、動作モードの変更後にＧＰＵアプリ１０による処理に遅延が発生していていないか判断したり、フレームレートが低下していないか判断する。通知部１１６は、判定部１１４により決定された動作モードの識別子を含む変更要求を変更部１２７に送信する。
【００１５】
変更部１２７は、通知部１１６から通知された動作モードに従い、第１送信部１２１、頻度特定部１２２及び第２送信部１２６等に対してＧＰＵ１６又はＣＰＵ１７のいずれで処理を実行するかを設定する。画像メモリ１２０には、処理ライブラリ１３及びＧＰＵドライバ１４を介して取得された画面データが格納される。頻度特定部１２２は、画像メモリ１２０に格納されている画面データに係る画面を複数の領域に分割し、領域毎にフレーム間の変更の頻度を特定し、領域識別部１２４に送信する。領域識別部１２４は、変更の頻度が所定の閾値を超えた領域（高頻度領域）を第２送信部１２６に通知する。第２送信部１２６は、動画のデータを送信する処理部であり、高頻度領域の画面データを第１送信部１２１よりも高い圧縮率でクライアント端末５に送信する。送信停止部１２３は、高頻度領域の画面データの送信を停止するように第１送信部１２１を設定する。第１送信部１２１は、静止画のデータを送信する処理部であり、変更がある領域の画面データをクライアント端末５に送信する。計測部１２５は、フレームレート（単位はＦＰＳ（Frames Per Second））を計測し、計測した結果を比較部１１５に送信する。なお、画像メモリ１２０、第１送信部１２１、頻度特定部１２２、送信停止部１２３、領域識別部１２４及び第２送信部１２６については、特開２０１１−２３８０１４号公報に詳細に記載されており、また本実施の形態における主要な部分ではない。よって詳細な説明は省略する。
【００１６】
なお、本実施の形態においては、図２に示した処理部のうち、第１送信部１２１、頻度特定部１２２及び第２送信部１２６の処理をＧＰＵ１６に実行させることが可能になっている。
【００１７】
図３に、各動作モードにおけるＧＰＵ１６及びＣＰＵ１７の処理分担を示す。図３に示されている処理は並列で実行することが可能な処理であり、丸印はＧＰＵ１６が担当することを表しており、バツ印はＣＰＵ１７が担当することを表している。このように、ＧＰＵ１６が担当する処理の組合せが動作モード毎に予め定められている。例えばレベル２の動作モードにおいては、画面データを取得する処理及び頻度特定部１２２の処理はＧＰＵ１６が担当し、第１送信部１２１及び第２送信部１２６の処理はＣＰＵ１７が担当する。図３に示すように、レベルが上がるほどＧＰＵ１６が担当する処理が増えることになる。
【００１８】
図４に、動作モード格納部１１７に格納されているデータの一例を示す。図４の例では、ＧＰＵアプリ１０の起動前の動作モードの識別子と、動作モードを変更する前の動作モードの識別子と、現在の動作モードの識別子とが格納されている。
【００１９】
図５に、決定データ格納部１１８に格納されているデータの一例を示す。図５の例では、レベル１乃至レベル５の動作モードの各々について、レベル０の動作モード（すなわち、画面制御部１２における処理をＧＰＵ１６に実行させない動作モード）を適用した場合とのＧＰＵ使用率の差異の値が格納されている。
【００２０】
次に、図６乃至図２２を用いて、図２に示したサーバ１の動作について説明する。はじめにサーバ１において行われる処理の流れについて説明した上で、各処理部が行う処理を詳細に説明する。
【００２１】
まず、起動監視部１１０は、ＧＰＵアプリ１０が起動したかを監視する（図６：ステップＳ１）。ＧＰＵアプリ１０が起動していない場合（ステップＳ１：Ｎｏルート）、ステップＳ１の処理に戻る。
【００２２】
ＧＰＵアプリ１０が起動した場合（ステップＳ１：Ｙｅｓルート）、起動監視部１１０は、取得部１１１、ＡＰＩ監視部１１２及び判定部１１４に、動作開始要求を送信する。そして、動作開始要求を受信したＡＰＩ監視部１１２は、ＧＰＵアプリ１０から描画命令を受信したか判断する（ステップＳ３）。描画命令を受信していない場合には（ステップＳ３：Ｎｏルート）、ステップＳ３の処理に戻る。
【００２３】
描画命令を受信した場合（ステップＳ３：Ｙｅｓルート）、ＡＰＩ監視部１１２は、描画命令と当該描画命令の受信時刻とをメインメモリ等の記憶装置に格納する。そして、ＡＰＩ監視部１１２は、今回受信した描画命令の受信時刻及びその前に受信した描画命令の受信時刻を用いて、描画命令の間隔を算出し、記憶装置に格納する（ステップＳ５）。ステップＳ５においては、例えば、今回受信した描画命令の受信時刻とその前に受信した描画命令所定数個の受信時刻とを用いて間隔の平均値を算出する。
【００２４】
一方、動作開始要求を受信した取得部１１１は、ＧＰＵドライバ１４を介してＧＰＵ使用率を取得し、判定部１１４に送信する（ステップＳ７）。なお、取得部１１１は、定期的にＧＰＵ使用率を取得するものとする。
【００２５】
判定部１１４は、前回取得したＧＰＵ使用率と今回取得したＧＰＵ使用率との差を求めることにより、ＧＰＵ使用率の変化量を算出し、記憶装置に格納する（ステップＳ９）。判定部１１４は、ＧＰＵ使用率の変化量が閾値α以上であるか判断する（ステップＳ１１）。閾値αは、サーバ１の管理者等が予め設定しておくものとする。閾値α以上ではない場合（ステップＳ１１：Ｎｏルート）、動作モードを変更しなくてもよいので、連続回数を表す変数を０に設定し（ステップＳ１３）、ステップＳ３の処理に戻る。
【００２６】
一方、ＧＰＵ使用率の変化量が閾値α以上である場合（ステップＳ１１：Ｙｅｓルート）、判定部１１４は、連続回数を表す変数を１増やす（ステップＳ１５）。処理は端子Ａを介して図７のステップＳ１７に移行する。
【００２７】
図７の説明に移行し、判定部１１４は、連続回数を表す変数がｎ（ｎは２以上の自然数）であるか判断する（ステップＳ１７）。連続回数を表す変数がｎではないと判断された場合（ステップＳ１７：Ｎｏルート）、処理は端子Ｂを介して図６のステップＳ３に移行する。
【００２８】
一方、連続回数を表す変数が閾値ｎであると判断された場合（ステップＳ１７：Ｙｅｓルート）、判定部１１４は、ＣＰＵ使用率を取得し、記憶装置に格納する（ステップＳ１９）。また、判定部１１４は、描画命令の組合せ、ＧＰＵ使用率及びＣＰＵ使用率に対応するパターンがパターン格納部１１３に登録されているか判断する（ステップＳ２１）。
【００２９】
図８に、パターン格納部１１３に格納されているデータの一例を示す。図８の例では、パターン番号と、描画命令のパターン（組合せ）と、現在の動作モードの識別子と、ＧＰＵ使用率と、ＣＰＵ使用率と、適用する動作モードの識別子とが格納されている。ステップＳ２１においては、例えば、描画命令の組合せが一致し、ＧＰＵ使用率が類似し（例えば、差が所定値以下である等）且つＣＰＵ使用率が類似するパターンが登録されているかを判断する。
【００３０】
描画命令の組合せ、ＧＰＵ使用率及びＣＰＵ使用率に対応するパターンが有る場合（ステップＳ２３：Ｙｅｓルート）、判定部１１４は、当該パターンについての「適用する動作モード」の識別子をパターン格納部１１３から読み出す（ステップＳ２７）。一方、描画命令の組合せ、ＧＰＵ使用率及びＣＰＵ使用率に対応するパターンが無い場合（ステップＳ２３：Ｎｏルート）、判定部１１４は、動作モード決定処理を実施する（ステップＳ２５）。動作モード決定処理については、図９を用いて説明する。
【００３１】
まず、判定部１１４は、取得部１１１から受信したＧＰＵ使用率のうち最新のＧＰＵ使用率を特定する（図９：ステップＳ２３１）。また、判定部１１４は、現在の動作モードの識別子を動作モード格納部１１７から読み出す（ステップＳ２３３）。
【００３２】
判定部１１４は、各動作モードについて、レベル０の動作モードを適用した場合とのＧＰＵ使用率の差異の値（すなわち、ＧＰＵ使用率の増加値）を決定データ格納部１１８から読み出す（ステップＳ２３５）。そして、判定部１１４は、現在の動作モードに対応する増加値と他の動作モードの各々に対応する増加値との差を算出する（ステップＳ２３６）。例えば図５に示したようなデータが決定データ格納部１１８に格納されており、現在の動作モードがレベル３である場合、レベル０は「−３０」、レベル１は「−２５」、レベル２は「−２０」、レベル３は「０」、レベル４は「＋１０」、レベル５は「＋３０」となる。
【００３３】
判定部１１４は、各動作モードについて、ステップＳ２３６において算出した差の値とステップＳ２３１において特定されたＧＰＵ使用率との和を算出することにより、各動作モードを適用した場合におけるＧＰＵ使用率の予測値を算出する（ステップＳ２３７）。例えばステップＳ２３１において特定したＧＰＵ使用率が「６０」である場合、レベル０が「３０」、レベル１が「３５」、レベル２が「４０」、レベル３が「６０」、レベル４が「７０」、レベル５が「９０」となる。
【００３４】
判定部１１４は、ＧＰＵ使用率の予測値が予め定められたＧＰＵ使用率の目標値に最も近い動作モードの識別子を特定する（ステップＳ２３９）。例えば目標値が「１００」である場合、特定される動作モードの識別子は「レベル５」となる。そして元の処理に戻る。
【００３５】
以上のような処理を実施することで、ＧＰＵ使用率が予め定められた目標値に近くなるような動作モードに決定することができるようになる。
【００３６】
図７の説明に戻り、ステップＳ２５において動作モードの識別子が特定又はステップＳ２７において動作モードの識別子が読み出されると、判定部１１４は、動作モードの識別子を含む変更要求を通知部１１６に送信する。そして、通知部１１６は、受信した動作モードの識別子を含む変更要求を変更部１２７に送信する。
【００３７】
そして、変更部１２７は、動作モードの変更を実行する（ステップＳ２９）。例えば、動作モードがレベル３からレベル５に変更される場合には、第１送信部１２１及び第２送信部１２６に対して、ＧＰＵ１６が処理を実行するように設定を行う。
【００３８】
一方、比較部１１５は、動作モードの変更前及び変更後における描画命令の間隔をＡＰＩ監視部１１２から取得すると共に、動作モードの変更前及び変更後におけるフレームレートを計測部１２５から取得する（ステップＳ３１）。
【００３９】
比較部１１５は、描画命令の間隔が短くなり且つフレームレートが上昇したか判断する（ステップＳ３３）。具体的には、動作モードの変更前の描画命令の間隔Ｘｐ、動作モードの変更後の描画命令の間隔Ｘｑ、動作モードの変更前のフレームレートをＹｐ、動作モードの変更後のフレームレートをＹｑとした場合、Ｘｑ−Ｘｐ＜０且つＹｑ−Ｙｐ＞０であるか判断する。但し、計測に誤差が生じる可能性があるため、描画命令の場合は左辺の値が厳密に０より小さくなくても良く、フレームレートの場合は左辺の値が厳密に０より大きくなくても良い。すなわち、正の閾値βと負の閾値γとを用いて、Ｘｑ−Ｘｐ＜β且つＹｑ−Ｙｐ＞γであるかを判断するようにしてもよい。
【００４０】
なお、描画命令の間隔が長くなっている場合には、ＧＰＵアプリ１０及び画面制御部１２からの処理要求にＧＰＵ１６が対応しきれていない可能性がある。一方、フレームレートが低下している場合には、画面キャプチャ、静止画圧縮、動画エンコード及びクライアント端末５への画面データ送信といった一連の処理が遅くなっている可能性がある。
【００４１】
描画命令の間隔が短くなり且つフレームレートが上昇した場合（ステップＳ３３：Ｙｅｓルート）、処理は端子Ｄを介して図１０のステップＳ４９に移行する。一方、描画命令の間隔が長くなった又はフレームレートが低下した場合（ステップＳ３３：Ｎｏルート）、処理は端子Ｃを介して図１０のステップＳ３５に移行する。
【００４２】
図１０の説明に移行し、比較部１１５は、ステップＳ３３の結果を判定部１１４に通知する。判定部１１４は、比較部１１５から通知された結果が、描画命令の間隔が長くなったことを示しているか判断する（ステップＳ３５）。描画命令の間隔が長くなったことを示している場合（ステップＳ３５：Ｙｅｓルート）、判定部１１４は、現在の動作モードよりもＧＰＵ使用率が下がる動作モードの識別子を特定する（ステップＳ３７）。動作モードを変更したことによって、ＧＰＵアプリ１０の処理が遅延している可能性があるからである。例えば現在の動作モードの識別子が「レベル３」である場合には、「レベル０」、「レベル１」又は「レベル２」を特定する。
【００４３】
一方、描画命令の間隔が短くなったことを示している場合（ステップＳ３５：Ｎｏルート）、ＧＰＵアプリ１０の処理速度は上がっているが、フレームレートは低下していることになる。そのため、判定部１１４は、現在の動作モードよりもＧＰＵ使用率が上がる動作モードの識別子を特定する（ステップＳ３９）。ＧＰＵ１６に余裕があるため、画面制御部１２の処理の一部をＧＰＵ１６に担当させることで、ＣＰＵ１７の負担を軽減するためである。例えば現在の動作モードの識別子が「レベル３」である場合には、「レベル４」又は「レベル５」を特定する。
【００４４】
判定部１１４は、変更後の動作モードが現在の動作モードと同じであるか判断する（ステップＳ４１）。変更後の動作モードが現在の動作モードと同じであると判断された場合（ステップＳ４１：Ｙｅｓルート）、ステップＳ４９の処理に移行する。
【００４５】
一方、変更後の動作モードが現在の動作モードと同じではない場合（ステップＳ４１：Ｎｏルート）、判定部１１４は、変更後の動作モードの識別子を含む変更要求を通知部１１６に送信する。そして、通知部１１６は、受信した動作モードの識別子を含む変更要求を変更部１２７に送信する。そして、変更部１２７は、動作モードの変更を実行する（ステップＳ４３）。この処理は、ステップＳ２９の処理と同様である。
【００４６】
一方、比較部１１５は、動作モードの変更前及び変更後における描画命令の間隔をＡＰＩ監視部１１２から取得すると共に、動作モードの変更前及び変更後におけるフレームレートを計測部１２５から取得する（ステップＳ４５）。
【００４７】
比較部１１５は、描画命令の間隔が短くなり且つフレームレートが上昇したか判断する（ステップＳ４７）。
【００４８】
描画命令の間隔が長くなった又はフレームレートが低下した場合（ステップＳ４７：Ｎｏルート）、処理は端子Ｃを介してステップＳ３５に戻る。
【００４９】
一方、描画命令の間隔が短くなり且つフレームレートが上昇した場合（ステップＳ４７：Ｙｅｓルート）、判定部１１４は、動作モード格納部１１７に格納されているデータを更新する（ステップＳ４９）。具体的には、動作モード格納部１１７における現在の動作モードの欄に格納されている動作モードの識別子で、変更前の動作モードの欄を更新する。また、ステップＳ３７又はステップＳ３９において特定された動作モードの識別子で、現在の動作モードの欄を更新する。
【００５０】
そして、判定部１１４は、パターン格納部１１３にパターンのデータを追加する（ステップＳ５１）。具体的には、まず新たにパターン番号を割り当てる。また、適用する動作モードの列に現在の動作モードの識別子を格納し、変更前の動作モードの列に変更前の動作モードの識別子を格納する。さらに、描画命令の組合せ、ＧＰＵ使用率及びＣＰＵ使用率の列に、取得したデータをそれぞれ格納する。但し、既に類似するパターンがパターン格納部１１３に格納されている場合（例えばステップＳ２７の処理を行った場合等）には、ステップＳ５１の処理を行わないようにしてもよい。
【００５１】
以上のような処理を実施することにより、ＧＰＵアプリ１０による画像処理への影響を抑えつつ、画面制御部１２の処理にＧＰＵ１６を利用することができるようになる。これによって、クライアント端末５での操作に対するレスポンスを改善することができるようになる。
【００５２】
次に、各処理部の処理について説明する。まず、図１１を用いて、起動監視部１１０の処理について説明する。
【００５３】
まず、起動監視部１１０は、ＧＰＵアプリ１０が起動したか判断する（図１１：ステップＳ６１）。ＧＰＵアプリ１０が起動していない場合（ステップＳ６１：Ｎｏルート）、ステップＳ６１の処理に戻る。
【００５４】
一方、ＧＰＵアプリ１０が起動した場合（ステップＳ６１：Ｙｅｓルート）、起動監視部１１０は、ＡＰＩ監視部１１２、取得部１１１及び判定部１１４に動作開始要求を送信する（ステップＳ６３）。
【００５５】
起動監視部１１０は、ＧＰＵアプリ１０による処理が終了したか判断する（ステップＳ６５）。ＧＰＵアプリ１０による処理が終了していないと判断された場合（ステップＳ６５：Ｎｏルート）、ステップＳ６５の処理に戻る。
【００５６】
一方、ＧＰＵアプリ１０による処理が終了したと判断された場合（ステップＳ６５：Ｙｅｓルート）、起動監視部１１０は、ＡＰＩ監視部１１２、取得部１１１及び判定部１１４に動作停止要求を送信する（ステップＳ６７）。そして処理を終了する。
【００５７】
このような処理を実施することで、ＧＰＵアプリ１０が起動した際に本実施の形態の処理を開始することができるようになる。
【００５８】
次に、図１２を用いて、ＡＰＩ監視部１１２の処理について説明する。まず、ＡＰＩ監視部１１２は、起動監視部１１０から動作開始要求を受信したか判断する（図１２：ステップＳ７１）。動作開始要求を受信していないと判断した場合（ステップＳ７１：Ｎｏルート）、ステップＳ７１の処理に戻る。
【００５９】
一方、動作開始要求を受信した場合（ステップＳ７１：Ｙｅｓルート）、ＡＰＩ監視部１１２は、ＧＰＵアプリ１０から描画命令を受信したか判断する（ステップＳ７３）。描画命令を受信していない場合（ステップＳ７３：Ｎｏルート）、ステップＳ７３の処理に戻る。
【００６０】
一方、描画命令を受信した場合（ステップＳ７３：Ｙｅｓルート）、ＡＰＩ監視部１１２は、受信した描画命令と当該描画命令の受信時刻とを記憶装置に格納する。そして、ＡＰＩ監視部１１２は、今回受信した描画命令の受信時刻及びその前に受信した描画命令の受信時刻を用いて、描画命令の間隔を算出し、記憶装置に格納する（ステップＳ７５）。ステップＳ７５においては、例えば、今回受信した描画命令の受信時刻とその前に受信した描画命令所定数個の受信時刻とを用いて間隔の平均値を算出する。
【００６１】
ＡＰＩ監視部１１２は、受信した描画命令を判定部１１４に送信する（ステップＳ７７）。そして、ＡＰＩ監視部１１２は、起動監視部１１０から動作停止要求を受信したか判断する（ステップＳ７９）。動作停止要求を受信していない場合（ステップＳ７９：Ｎｏルート）、ステップＳ７３の処理に戻る。一方、動作停止要求を受信した場合（ステップＳ７９：Ｙｅｓルート）、処理を終了する。
【００６２】
以上のような処理を実施することで、ＧＰＵアプリ１０による画像処理が遅延しているか確認することができるようになる。
【００６３】
次に、図１３を用いて、取得部１１１の処理について説明する。まず、取得部１１１は、起動監視部１１０から動作開始要求を受信したか判断する（図１３：ステップＳ８１）。動作開始要求を受信していないと判断した場合（ステップＳ８１：Ｎｏルート）、ステップＳ８１の処理に戻る。
【００６４】
一方、動作開始要求を受信した場合（ステップＳ８１：Ｙｅｓルート）、取得部１１１は、ＧＰＵドライバ１４を介してＧＰＵ使用率を取得し（ステップＳ８３）、取得したＧＰＵ使用率を判定部１１４に送信する（ステップＳ８５）。なお、取得部１１１は、定期的にＧＰＵ使用率を取得するものとする。
【００６５】
取得部１１１は、所定時間スリープする（ステップＳ８７）。そして、取得部１１１は、起動監視部１１０から動作停止要求を受信したか判断する（ステップＳ８９）。動作停止要求を受信していない場合（ステップＳ８９：Ｎｏルート）、ステップＳ８３の処理に戻る。一方、動作停止要求を受信した場合（ステップＳ８９：Ｙｅｓルート）、処理を終了する。
【００６６】
以上のような処理を実施することで、ＧＰＵ１６の使用状態の変化を検出することができるようになる。
【００６７】
次に、図１４乃至図１８を用いて、判定部１１４の処理について説明する。まず、判定部１１４は、起動監視部１１０から動作開始要求を受信したか判断する（図１４：ステップＳ９１）。動作開始要求を受信していないと判断した場合（ステップＳ９１：Ｎｏルート）、ステップＳ９１の処理に戻る。
【００６８】
一方、動作開始要求を受信した場合（ステップＳ９１：Ｙｅｓルート）、判定部１１４は、現在の動作モードの識別子を動作モード格納部１１７に格納する（ステップＳ９３）。なお、ＧＰＵアプリ起動前の動作モードの欄には、既に動作モードの識別子が格納されているものとする。
【００６９】
判定部１１４は、ＡＰＩ監視部１１２から描画命令を受信したか判断する（ステップＳ９５）。描画命令を受信していない場合（ステップＳ９５：Ｎｏルート）、ステップＳ９５の処理に戻る。一方、描画命令を受信した場合（ステップＳ９５：Ｙｅｓルート）、描画命令を記憶装置に格納する。また、判定部１１４は、取得部１１１からＧＰＵ使用率を取得し、記憶装置に格納する（ステップＳ９７）。なお、判定部１１４は、少なくともｎ回分の描画命令を記憶装置に格納しておくものとする。
【００７０】
判定部１１４は、前回取得したＧＰＵ使用率と今回取得したＧＰＵ使用率との差を求めることにより、ＧＰＵ使用率の変化量を算出する（ステップＳ９９）。そして、判定部１１４は、ＧＰＵ使用率の変化量が閾値α以上であるか判断する（ステップＳ１０１）。閾値αは、サーバ１の管理者等が予め設定しておくものとする。閾値α以上ではない場合（ステップＳ１０１：Ｎｏルート）、動作モードを変更しなくてもよいので、連続回数を表す変数を０に設定し（ステップＳ１０３）、ステップＳ９５の処理に戻る。
【００７１】
一方、ＧＰＵ使用率の変化量が閾値α以上である場合（ステップＳ１０１：Ｙｅｓルート）、判定部１１４は、連続回数を表す変数を１増やす（ステップＳ１０５）。処理は端子Ｅを介して図１５のステップＳ１０７に移行する。
【００７２】
図１５の説明に移行し、判定部１１４は、連続回数を表す変数がｎ（ｎは２以上の自然数）であるか判断する（ステップＳ１０７）。連続回数を表す変数がｎではないと判断された場合（ステップＳ１０７：Ｎｏルート）、処理は端子Ｆを介して図１４のステップＳ９５に移行する。
【００７３】
一方、連続回数を表す変数が閾値ｎであると判断された場合（ステップＳ１０７：Ｙｅｓルート）、判定部１１４は、ＣＰＵ使用率を取得し、記憶装置に格納する（ステップＳ１０９）。また、判定部１１４は、描画命令の組合せ、ＧＰＵ使用率及びＣＰＵ使用率に対応するパターンがパターン格納部１１３に登録されているか判断する（ステップＳ１１１）。
【００７４】
描画命令の組合せ、ＧＰＵ使用率及びＣＰＵ使用率に対応するパターンが有る場合（ステップＳ１１３：Ｙｅｓルート）、判定部１１４は、当該パターンについての「適用する動作モード」の列に格納されている識別子をパターン格納部１１３から読み出す（ステップＳ１１７）。一方、描画命令の組合せ、ＧＰＵ使用率及びＣＰＵ使用率に対応するパターンが無い場合（ステップＳ１１３：Ｎｏルート）、判定部１１４は、動作モード決定処理を実施する（ステップＳ１１５）。動作モード決定処理については、図９を用いて説明したとおりである。
【００７５】
判定部１１４は、ステップＳ１１５において動作モードの識別子が特定又はステップＳ１１７において動作モードの識別子が読み出されると、動作モードの識別子を含む変更要求を通知部１１６に送信する（ステップＳ１１９）。そして処理は端子Ｇを介して図１６のステップＳ１２１に移行する。
【００７６】
図１６の説明に移行し、判定部１１４は、通知部１１６から変更完了通知を受信したか判断する（ステップＳ１２１）。変更完了通知を受信していない場合（ステップＳ１２１：Ｎｏルート）、ステップＳ１２１の処理に戻る。
【００７７】
一方、変更完了通知を受信した場合（ステップＳ１２１：Ｙｅｓルート）、判定部１１４は、動作比較要求を比較部１１５に送信する（ステップＳ１２３）。
【００７８】
判定部１１４は、比較部１１５から比較結果を受信したか判断する（ステップＳ１２５）。比較結果を受信していない場合（ステップＳ１２５：Ｎｏルート）、ステップＳ１２５の処理に戻る。
【００７９】
一方、比較結果を受信した場合（ステップＳ１２５：Ｙｅｓルート）、判定部１１４は、比較結果が「ＯＫ」を示しているか判断する（ステップＳ１２７）。動作モードの変更によって描画命令の間隔が短くなり且つフレームレートが上昇した場合には、比較結果は「ＯＫ」を示す。比較結果が「ＯＫ」を示している場合には（ステップＳ１２７：Ｙｅｓルート）、処理は端子Ｈを介して図１８のステップＳ１４９に移行する。比較結果が「ＯＫ」を示しておらず「ＮＧ」を示している場合には（ステップＳ１２７：Ｎｏルート）、処理は端子Ｉを介して図１７のステップＳ１２９に移行する。
【００８０】
図１７の説明に移行し、判定部１１４は、動作モード格納部１１７から現在の動作モードの識別子を読み出す（ステップＳ１２９）。そして、判定部１１４は、比較部１１５から通知された比較結果が、描画命令の間隔が長くなったことを示しているか判断する（ステップＳ１３１）。描画命令の間隔が長くなったことを示している場合（ステップＳ１３１：Ｙｅｓルート）、判定部１１４は、現在の動作モードよりもＧＰＵ使用率が下がる動作モードの識別子を特定する（ステップＳ１３３）。動作モードを変更したことによって、ＧＰＵアプリ１０の処理が遅延している可能性があるからである。例えば現在の動作モードの識別子が「レベル３」である場合には、「レベル０」、「レベル１」又は「レベル２」の動作モードの識別子を特定する。
【００８１】
一方、描画命令の間隔が短くなったことを示している場合（ステップＳ１３１：Ｎｏルート）、ＧＰＵアプリ１０の処理速度は上がっているが、フレームレートは低下していることになる。そのため、判定部１１４は、現在の動作モードよりもＧＰＵ使用率が上がる動作モードの識別子を特定する（ステップＳ１３５）。ＧＰＵ１６に余裕があるため、画面制御部１２の処理の一部をＧＰＵ１６に担当させることで、ＣＰＵ１７の負担を軽減するためである。例えば現在の動作モードの識別子が「レベル３」である場合には、「レベル４」又は「レベル５」の動作モードの識別子を特定する。
【００８２】
判定部１１４は、変更後の動作モードが現在の動作モードと同じであるか判断する（ステップＳ１３７）。変更後の動作モードが現在の動作モードと同じであると判断された場合（ステップＳ１３７：Ｙｅｓルート）、処理は端子Ｈを介して図１８のＳ１４９に移行する。
【００８３】
一方、変更後の動作モードが現在の動作モードと同じではない場合（ステップＳ１３７：Ｎｏルート）、判定部１１４は、ステップＳ１３３又はＳ１３５において特定された動作モードの識別子を含む変更要求を通知部１１６に送信する（ステップＳ１３９）。
【００８４】
判定部１１４は、通知部１１６から変更完了通知を受信したか判断する（ステップＳ１４１）。変更完了通知を受信していない場合（ステップＳ１４１：Ｎｏルート）、ステップＳ１４１の処理に戻る。
【００８５】
一方、変更完了通知を受信した場合（ステップＳ１４１：Ｙｅｓルート）、判定部１１４は、動作比較要求を比較部１１５に送信する（ステップＳ１４３）。
【００８６】
判定部１１４は、比較部１１５から比較結果を受信したか判断する（ステップＳ１４５）。比較結果を受信していない場合（ステップＳ１４５：Ｎｏルート）、ステップＳ１４５の処理に戻る。一方、比較部１１５から比較結果を受信した場合（ステップＳ１４５：Ｙｅｓルート）、判定部１１４は、比較結果が「ＯＫ」を示しているか判断する（ステップＳ１４７）。比較結果が「ＯＫ」を示しておらず「ＮＧ」を示している場合には（ステップＳ１４７：Ｎｏルート）、端子Ｉを介してステップＳ１２９の処理に戻る。比較結果が「ＯＫ」を示している場合には（ステップＳ１４７：Ｙｅｓルート）、処理は端子Ｈを介して図１８のステップＳ１４９に移行する。
【００８７】
図１８の説明に移行し、判定部１１４は、動作モード格納部１１７に格納されているデータを更新する（ステップ１Ｓ４９）。具体的には、動作モード格納部１１７における現在の動作モードの欄に格納されている動作モードの識別子で、変更前の動作モードの欄を更新する。また、ステップＳ１３３又はステップＳ１３５において特定された動作モードの識別子で、現在の動作モードの欄を更新する。
【００８８】
判定部１１４は、パターン格納部１１３にパターンのデータを追加する（ステップＳ１５１）。具体的には、まず新たにパターン番号を割り当てる。また、適用する動作モードの列に現在の動作モードの識別子を格納し、変更前の動作モードの列に変更前の動作モードの識別子を格納する。さらに、描画命令の組合せ、ＧＰＵ使用率及びＣＰＵ使用率の列に、取得したデータをそれぞれ格納する。但し、類似するパターンが既にパターン格納部１１３に格納されている場合（例えばステップＳ１１７の処理を行った場合等）には、ステップＳ１５１の処理を行わないようにしてもよい。
【００８９】
判定部１１４は、起動監視部１１０から動作停止要求を受信したか判断する（ステップ１５３）。動作停止要求を受信していない場合（ステップＳ１５３：Ｎｏルート）、処理は端子Ｆを介して図１４のステップＳ９５に戻る。
【００９０】
一方、動作停止要求を受信した場合（ステップＳ１５３：Ｙｅｓルート）、判定部１１４は、ＧＰＵアプリ１０の起動前の動作モードの識別子を動作モード格納部１１７から読み出す（ステップＳ１５５）。また、判定部１１４は、ステップＳ１５５において読み出された動作モードの識別子を含む変更要求を通知部１１６に送信する（ステップＳ１５７）。
【００９１】
そして、判定部１１４は、通知部１１６から変更完了通知を受信したか判断する（ステップＳ１５９）。変更完了通知を受信していない場合（ステップＳ１５９：Ｎｏルート）、ステップＳ１５９の処理に戻る。一方、変更完了通知を受信した場合（ステップＳ１５９：Ｙｅｓルート）、判定部１１４は動作を停止し（ステップＳ１６１）、処理は終了する。
【００９２】
以上のような処理を実施することにより、ＧＰＵ使用率に応じ、ＧＰＵアプリ１０による画像処理への悪影響を及ぼさないような動作モードを特定することができるようになる。
【００９３】
次に、図１９を用いて、通知部１１６の処理について説明する。まず、通知部１１６は、判定部１１４から変更要求を受信したか判断する（図１９：ステップＳ１７１）。変更要求を受信していない場合（ステップＳ１７１：Ｎｏルート）、ステップＳ１７１の処理に戻る。
【００９４】
一方、変更要求を受信した場合（ステップＳ１７１：Ｙｅｓルート）、通知部１１６は、変更部１２７に変更要求を送信する（ステップＳ１７３）。
【００９５】
通知部１１６は、変更部１２７から変更完了通知を受信したか判断する（ステップＳ１７５）。変更完了通知を受信していない場合（ステップＳ１７５：Ｎｏルート）、ステップＳ１７５の処理に戻る。
【００９６】
一方、変更完了通知を受信した場合（ステップＳ１７５：Ｙｅｓルート）、通知部１１６は、判定部１１４に変更完了通知を送信する（ステップＳ１７７）。そして処理を終了する。
【００９７】
以上のような処理を実施することにより、画面制御部１２と管理部１１との間で適切に情報を交換することができるようになる。
【００９８】
次に、図２０を用いて、比較部１１５の処理について説明する。まず、比較部１１５は、判定部１１４から動作比較要求を受信したか判断する（図２０：ステップＳ１８１）。動作比較要求を受信していない場合（ステップＳ１８１：Ｎｏルート）、ステップＳ１８１の処理に戻る。
【００９９】
一方、動作比較要求を受信したと判断された場合（ステップＳ１８１：Ｙｅｓルート）、比較部１１５は、動作モードの変更前及び変更後における描画命令の間隔を要求する取得要求をＡＰＩ監視部１１２に送信する（ステップＳ１８３）。また、比較部１１５は、動作モードの変更前及び変更後におけるフレームレートを要求する取得要求を計測部１２５に送信する（ステップＳ１８５）。
【０１００】
比較部１１５は、フレームレート及び描画命令の間隔を受信したか判断する（ステップＳ１８７）。フレームレート及び描画命令の間隔を受信していない場合には（ステップＳ１８７：Ｎｏルート）、ステップＳ１８７の処理に戻る。
【０１０１】
一方、フレームレート及び描画命令の間隔を受信した場合には（ステップＳ１８７：Ｙｅｓルート）、比較部１１５は、動作モードの変更後に描画命令の間隔が長くなったか判断する（ステップＳ１８９）。動作モードの変更後に描画命令の間隔が長くなった場合（ステップＳ１８９：Ｙｅｓルート）、比較部１１５は、「ＮＧ」であることを示す比較結果を判定部１１４に送信する（ステップＳ１９３）。動作モードを変更したことによって、ＧＰＵアプリ１０の処理が遅延している可能性があるからである。一方、描画命令の間隔が短くなった場合（ステップＳ１８９：Ｎｏルート）、比較部１１５は、フレームレートが低下したか判断する（ステップＳ１９１）。
【０１０２】
フレームレートが低下したと判断された場合（ステップＳ１９１：Ｙｅｓルート）、比較部１１５は、「ＮＧ」であることを示す比較結果を判定部１１４に送信する（ステップＳ１９３）。フレームレートが低下すると、クライアント端末５において画面が適切に表示されない可能性があるからである。一方、フレームレートが上昇したと判断された場合（ステップＳ１９１：Ｎｏルート）、比較部１１５は、「ＯＫ」であることを示す比較結果を判定部１１４に送信する（ステップＳ１９５）。そして処理を終了する。
【０１０３】
以上のような処理を実施することにより、動作モードの変更後において、ＧＰＵアプリ１０による画像処理に遅延が生じたり、フレームレートが低下していないかを確認することができるようになる。
【０１０４】
次に、図２１を用いて、変更部１２７の処理について説明する。まず、変更部１２７は、通知部１１６から変更要求を受信したか判断する（図２１：ステップＳ２０１）。変更要求を受信していない場合（ステップＳ２０１：Ｎｏルート）、ステップＳ２０１の処理に戻る。一方、変更要求を受信した場合（ステップＳ２０１：Ｙｅｓルート）、変更部１２７は、動作モードの変更を実行する（ステップＳ２０３）。また、計測部１２５に対して、動作モードを変更することを表す変更通知を送信する。
【０１０５】
例えば、動作モードがレベル３からレベル５に変更される場合には、新たに第１送信部１２１及び第２送信部１２６に対して、ＧＰＵ１６が処理を実行するように設定を行う。逆に、動作モードがレベル５からレベル３に変更される場合には、第１送信部１２１及び第２送信部１２６に対して、ＣＰＵ１７が処理を実行するように設定を行う。
【０１０６】
そして、変更部１２７は、変更完了通知を通知部１１６に送信する（ステップＳ２０５）。そして処理を終了する。
【０１０７】
以上のような処理を実施することで、管理部１１において決定された動作モードに従って、ＧＰＵ１６による実行とＣＰＵ１７による実行とを切り替えることができるようになる。
【０１０８】
次に、図２２を用いて、計測部１２５の処理について説明する。まず、計測部１２５は、クライアント端末５に画面データを送信する処理についてフレームレートを計測し、記憶装置に格納する（図２２：ステップＳ２１１）。そして、計測部１２５は、所定時間スリープする（ステップＳ２１３）。そして、計測部１２５は、処理を終了するか判断する（ステップＳ２１５）。例えば、サーバ１とクライアント端末５との間の接続が切断されている場合には、処理を終了する（ステップＳ２１５：Ｙｅｓルート）。一方、処理を終了しない場合（ステップＳ２１５：Ｎｏルート）、計測部１２５は、動作モードを変更することを表す変更通知を変更部１２７から受信したか判断する（ステップＳ２１７）。
【０１０９】
変更通知を受信していない場合（ステップＳ２１７：Ｎｏルート）、ステップＳ２１１の処理に戻る。一方、変更通知を受信した場合（ステップＳ２１７：Ｙｅｓルート）、計測部１２５は、クライアント端末５に画面データを送信する処理についてフレームレートを計測し、記憶装置に格納する（ステップＳ２１９）。そして、計測部１２５は、所定時間スリープする（ステップＳ２２１）。
【０１１０】
計測部１２５は、比較部１１５から取得要求を受信したか判断する（ステップＳ２２３）。取得要求を受信していない場合（ステップＳ２２３：Ｎｏルート）、ステップＳ２１９の処理に戻る。一方、取得要求を受信した場合（ステップＳ２２３：Ｙｅｓルート）、計測部１２５は、動作モードの変更前及び変更後のフレームレートを比較部１１５に送信する（ステップＳ２２５）。そしてステップＳ２１１の処理に戻る。
【０１１１】
以上のような処理を実施することで、動作モードの変更前と変更後とでフレームレートを比較することができるようになる。
【０１１２】
［実施の形態２］
第１の実施の形態における動作モード決定処理（図９）においては、ＧＰＵ使用率を用いて動作モードを決定した。第２の実施の形態では、ＧＰＵ使用率及びＣＰＵ使用率を用いて動作モードを決定する。
【０１１３】
図２３Ａに、第２の実施の形態における決定データ格納部１１８に格納されているデータの一例を示す。図２３Ａの例では、ＧＰＵ使用率の範囲とＣＰＵ使用率の範囲との組合せに対応付けて動作モードの識別子が格納されている。このようなデータを用いて、図２３Ｂに示すような処理を実施する。
【０１１４】
判定部１１４は、ステップＳ７において取得したＧＰＵ使用率が属する範囲とステップＳ１９において取得したＣＰＵ使用率が属する範囲との組合せに対応する動作モードの識別子を決定データ格納部１１８から特定する（図２３Ｂ：ステップＳ３０１）。そして処理を終了する。
【０１１５】
このような処理を実施することによって、ＧＰＵ使用率だけでなくＣＰＵ使用率をも考慮したうえで動作モードを決定することができるようになる。
【０１１６】
［実施の形態３］
第３の実施の形態においては、ＧＰＵ使用率の変化量の閾値を描画命令毎に異なる値にする。図２４に、描画命令毎の閾値の設定例を示す。なお、描画命令の種類は図２４に示したものには限られない。
【０１１７】
第３の実施の形態においては、ステップＳ９７の処理において、判定部１１４は、描画命令毎にＧＰＵ使用率を取得する。その前提として、取得部１１１がＧＰＵドライバ１４を介して描画命令毎にＧＰＵ使用率を取得し、判定部１１４に送信する。また、ステップＳ１０１の処理において、判定部１１４は、各描画命令について、ＧＰＵ使用率の変化量が閾値を超えたか判断する。その際、いずれかの描画命令についてＧＰＵ使用率の変化量が閾値を超えた場合にステップＳ１０５の処理に進むようにしてもよいし、閾値が最大である描画命令についてＧＰＵ使用率がその閾値を超えた場合にステップＳ１０５の処理に進むようにしてもよい。
【０１１８】
このようにすることで、動作モードを変更する時機をより適切に検出することができるようになる。
【０１１９】
［実施の形態４］
第４の実施の形態においては、ＡＰＩ監視部１１２において監視する描画命令を限定する。例えばステップＳ９７の処理において、判定部１１４は、特定の描画命令のみＧＰＵ使用率を取得する。その前提として、取得部１１１がＧＰＵドライバ１４を介して特定の描画命令のみＧＰＵ使用率を取得し、判定部１１４に送信する。また、ステップＳ１０１の処理において、判定部１１４は、特定の描画命令に対して予め設定された閾値とＧＰＵ使用率の変化量とを比較し、ＧＰＵ使用率の変化量が閾値を超えた場合にステップＳ１０５の処理に進む。
【０１２０】
このようにすることで、ＡＰＩ監視部１１２及び判定部１１４の処理負荷を削減することができるようになる。
【０１２１】
［実施の形態５］
第５の実施の形態においては、画面制御部１２において動作モードを変更すべき所定の事由が発生した場合に、動作モードの変更を行えるようにする。所定の事由とは、例えば第２送信部１２６における動画のデータの送信が開始又は停止したこと、或いはフレームレートの変化量が所定の閾値を超えたこと等が考えられる。
【０１２２】
図２５を用いて、第５の実施の形態における通知部１１６の処理について説明する。まず、通知部１１６は、動作モードの変更可否についての問い合わせを変更部１２７から受信したか判断する（図２５：ステップＳ２４１）。変更可否の問い合わせを受信していない場合（ステップＳ２４１：Ｎｏルート）、ステップＳ２４１の処理に戻る。一方、変更可否の問い合わせを受信した場合（ステップＳ２４１：Ｙｅｓルート）、通知部１１６は、動作モードの変更を要求する処理要求を判定部１１４に送信する（ステップＳ２４３）。そして処理を終了する。
【０１２３】
図２６を用いて、第５の実施の形態における判定部１１４の処理について説明する。なお、本処理は、上で述べた判定部１１４の処理とは別スレッドで行われる。
【０１２４】
まず、判定部１１４は、処理要求を通知部１１６から受信したか判断する（図２６：ステップＳ２５１）。処理要求を受信していない場合（ステップＳ２５１：Ｎｏルート）、ステップＳ２５１の処理に戻る。一方、処理要求を受信した場合（ステップＳ２５１：Ｙｅｓルート）、判定部１１４は、動作モード決定処理を実施中であるか判断する（ステップＳ２５３）。動作モード決定処理を実施中である場合（ステップＳ２５３：Ｙｅｓルート）、新たに動作モード決定処理を実施しなくてもよいので、処理を終了する。一方、動作モード決定処理を実施中ではない場合（ステップＳ２５３：Ｎｏルート）、判定部１１４は、ｎ個の描画命令を受信したか判断する（ステップＳ２５５）。
【０１２５】
ｎ個の描画命令を受信していない場合（ステップＳ２５５：Ｎｏルート）、ステップＳ２５５の処理に戻る。一方、ｎ個の描画命令を受信した場合（ステップＳ２５５：Ｙｅｓルート）、ＧＰＵ使用率を取得部１１１から取得する（ステップＳ２５７）。そして、処理は端子Ｊを介して図１５のステップＳ１０９に移行する。
【０１２６】
以上のような処理を実施することで、ＧＰＵアプリ１０が起動した場合だけでなく、画面制御部１２において動作モードを変更すべき所定の事由が生じた場合に、動作モードを変更することができるようになる。
【０１２７】
［実施の形態６］
本実施の形態においては、画面制御部１２の処理においてＧＰＵメモリの獲得に失敗した場合に、ＧＰＵメモリを大量に消費する動作モード（本実施の形態では、レベル３乃至レベル５の動作モード）へは変更しないようにする処理について説明する。
【０１２８】
本実施の形態においては、取得部１１１が、ステップＳ８３においてＧＰＵ使用率だけでなくＧＰＵメモリの使用量を取得し、ステップＳ８５において判定部１１４に送信するようになっている。また、通知部１１６は、第５の実施の形態と同様の処理を実施できるようになっている。
【０１２９】
そして、本実施の形態における判定部１１４は、上で説明した処理とは別スレッドで、図２７に示すような処理を実行する。前提として、判定部１１４は、前回パターン格納部１１３にレコードを格納した際に、そのレコードのパターン番号を記憶装置に記憶しておくものとする。
【０１３０】
まず、判定部１１４は、通知部１１６から処理要求を受信したか判断する（図２７：ステップＳ２６１）。処理要求を受信していない場合（ステップＳ２６１：Ｎｏルート）、ステップＳ２６１の処理に戻る。一方、処理要求を受信した場合（ステップＳ２６１：Ｙｅｓルート）、判定部１１４は、動作モード決定処理を実施中であるか判断する（ステップＳ２６３）。
【０１３１】
動作モード決定処理を実施中である場合（ステップＳ２６３：Ｙｅｓルート）、新たに動作モード決定処理を実施しなくてもよいので、処理を終了する。一方、動作モード決定処理を実施中ではない場合（ステップＳ２６３：Ｎｏルート）、判定部１１４は、ＧＰＵメモリの獲得に失敗したことを示す情報が処理要求に含まれているか判断する（ステップＳ２６５）。
【０１３２】
ＧＰＵメモリの獲得に失敗したことを示す情報が処理要求に含まれていない場合（ステップＳ２６５：Ｎｏルート）、判定部１１４は、ｎ個の描画命令を受信したか判断する（ステップＳ２７１）。
【０１３３】
ｎ個の描画命令を受信していない場合（ステップＳ２７１：Ｎｏルート）、ステップＳ２７１の処理に戻る。一方、ｎ個の描画命令を受信した場合（ステップＳ２７１：Ｙｅｓルート）、ＧＰＵ使用率を取得部１１１から取得する（ステップＳ２７３）。そして、処理は端子Ｊを介して図１５のステップＳ１０９に移行する。
【０１３４】
一方、ＧＰＵメモリの獲得に失敗したことを示す情報が処理要求に含まれている場合（ステップＳ２６５：Ｙｅｓルート）、判定部１１４は、パターン格納部１１３において、記憶装置に記憶しているパターン番号に対応するＮＧ動作モードの列に現在の動作モードの識別子を格納する（ステップＳ２６７）。また、適用する動作モードの列に格納されている動作モードの識別子を「レベル２」に変更し、ステップＳ８３において取得したＧＰＵメモリの使用量をＧＰＵメモリ使用量の列に格納する。
【０１３５】
図２８に、第６の実施の形態におけるパターン格納部１１３に格納されているデータの一例を示す。図２８の例では、パターン番号と、描画命令のパターン（組合せ）と、現在の動作モードの識別子と、ＧＰＵ使用率と、ＧＰＵメモリ使用量と、ＣＰＵ使用率と、適用する動作モードの識別子と、ＮＧ動作モード（適用すべきでない動作モード）の識別子とが格納されている。
【０１３６】
そして、判定部１１４は、動作モードの識別子「レベル２」を含む変更要求を通知部１１６に送信する（ステップＳ２６９）。そして処理は端子Ｇを介して図１６のステップＳ１２１に移行する。
【０１３７】
このような処理を実施することによって、画面制御部１２の処理においてＧＰＵメモリの獲得に失敗した場合に、ＧＰＵメモリを大量に消費するような動作モードには変更しないようにすることができるようになる。
【０１３８】
以上本技術の一実施の形態を説明したが、本技術はこれに限定されるものではない。例えば、上で説明したサーバ１の機能ブロック構成は必ずしも実際のプログラムモジュール構成に対応するものではない。
【０１３９】
また、上で説明した各テーブルの構成は一例であって、必ずしも上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
【０１４０】
なお、第６の実施の形態においては、ＧＰＵメモリを大量に使用する動作モードをレベル３乃至５の動作モードとしていたが、このような例に限られるわけではない。また、必ずしもレベル２の動作モードに変更しなくてもよく、例えばレベル０又はレベル１の動作モードに変更するようにしてもよい。
【０１４１】
なお、上で述べたサーバ１及びクライアント端末５は、コンピュータ装置であって、図２９に示すように、メモリ２５０１とＣＰＵ（Central Processing Unit）２５０３とハードディスク・ドライブ（ＨＤＤ：Hard Disk Drive）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【０１４２】
以上述べた本技術の実施の形態をまとめると、以下のようになる。
【０１４３】
本実施の形態に係る情報処理方法は、画像処理のためのプロセッサ（例えばＧＰＵ）である第１のプロセッサと当該第１のプロセッサによって実行された画像処理の結果を含む画面のデータをユーザ端末に表示させるための処理を実行する第２のプロセッサ（例えばＣＰＵ）とを有するコンピュータにおける第２のプロセッサに実行される。そして、本情報処理方法は、（Ａ）第１のプロセッサによって画像処理が実行されている場合に、２以上の時点において第１のプロセッサの使用率を取得する取得処理と、（Ｂ）取得された第１のプロセッサの使用率を用いて、第１のプロセッサの使用率に所定の変化が生じたか判断する判断処理と、（Ｃ）第１のプロセッサの使用率に所定の変化が生じたと判断された場合に、取得された第１のプロセッサの使用率に応じて、画面のデータをユーザ端末に表示させるために実行すべき複数の処理のうちいずれの処理を第１のプロセッサに実行させるかを決定する決定処理と、（Ｄ）決定処理の結果に従って複数の処理が実行されるように設定を行う設定処理とを含む。
【０１４４】
このようにすれば、第１のプロセッサによる画像処理への影響を抑制しつつ、第１のプロセッサを有効に利用することができるようになる。これにより、ユーザ端末での操作に対するレスポンスを改善できるようになる。
【０１４５】
また、上で述べた本情報処理方法が、（Ｅ）第１のプロセッサに出力される、画像処理のための処理命令を複数取得する処理と、（Ｆ）設定処理の前に取得した複数の処理命令の取得時刻を用いて、設定処理の前における処理命令の間隔を算出し、設定処理の後に取得した複数の処理命令の取得時刻を用いて、設定処理の後における処理命令の間隔を算出し、設定処理の後の処理命令の間隔が設定処理の前の処理命令の間隔よりも短いか判断する処理と、（Ｇ）設定処理の後の処理命令の間隔が設定処理の前の処理命令の間隔よりも長いと判断された場合、決定処理において第１のプロセッサに実行させると決定された処理のうちいずれかの処理を第２のプロセッサが実行するように設定を行う処理とをさらに含むようにしてもよい。処理命令の間隔が長くなる場合には、画像処理の速度が遅くなっている可能性がある。そこで、第１のプロセッサによる画像処理に影響を及ぼすおそれがある場合には、設定をさらに変更して影響を抑制することができるようになる。
【０１４６】
また、上で述べた本情報処理方法が、（Ｈ）画面データをユーザ端末に送信する処理についてフレームレートを計測する処理と、（Ｉ）設定処理の前のフレームレートと設定処理の後のフレームレートとを比較し、設定処理の後のフレームレートが設定処理の前のフレームレートよりも高いか判断する処理と、（Ｊ）設定処理の後の処理命令の間隔が設定処理の前の処理命令の間隔よりも短く且つ設定処理の後のフレームレートが設定処理の前のフレームレートよりも低いと判断された場合に、決定処理において第１のプロセッサに実行させないと決定された処理のうちいずれかの処理を第１のプロセッサが実行するように設定を行う処理とをさらに含むようにしてもよい。フレームレートが低くなっている場合には、ユーザ端末において画面のデータが適切に表示されていない（例えばコマ送りのようになる等）場合がある。そこで、処理命令の間隔が短くなっており第１のプロセッサに余裕がある場合には、第１のプロセッサに実行させる処理を増やすことで、第２のプロセッサの負担を減らすことができるようになる。
【０１４７】
また、上で述べた本情報処理方法が、（Ｋ）第２のプロセッサの使用率を取得する処理と、（Ｌ）設定処理の後の処理命令の間隔が設定処理の前の処理命令の間隔よりも短く且つ設定処理の後のフレームレートが設定処理の前のフレームレートよりも高いと判断された場合に、第１のプロセッサに実行させる処理の組合せの識別子に対応付けて第１のプロセッサの使用率と第２のプロセッサの使用率と処理命令の組合せとを含むレコードを格納する第１データ格納部に、決定処理において第１のプロセッサに実行させると決定された処理の組合せの識別子に対応付けて、設定処理の前に取得された第１のプロセッサの使用率と第２のプロセッサの使用率と処理命令の組合せとを含むレコードを格納する格納処理とをさらに含むようにしてもよい。このように、適切な設定を行うことができた場合にはレコードを残しておくことで、後にレコードを利用して簡便に設定を行うことができるようになる。
【０１４８】
また、上で述べた決定処理が、（ｃ１）第１のプロセッサに実行させる処理の組合せの識別子に対応付けて当該組合せに含まれる処理を実行させた場合における第１のプロセッサの使用率の増加値を格納する第２データ格納部から、決定処理の時点において第１のプロセッサに実行させている処理の組合せの識別子に対応する増加値を特定する処理と、（ｃ２）特定された増加値と、第２データ格納部における他の組合せの識別子に対応する増加値の各々との差を算出する処理と、（ｃ３）他の組合せの各々について、算出された差と取得された第１のプロセッサの使用率との和を算出することにより、当該他の組合せに含まれる処理を第１のプロセッサに実行させた場合における第１のプロセッサの使用率を算出する処理と、（ｃ４）他の組合せのうち、算出された第１のプロセッサの使用率が予め定められた目標値に最も近い組合せの識別子を特定する処理とを含むようにしてもよい。このようにすれば、第１のプロセッサの使用率が予め定められた目標値に最も近くなるように設定を行うことができるようになる。
【０１４９】
また、上で述べた決定処理が、（ｃ５）第１のプロセッサの使用率の範囲と第２のプロセッサの使用率の範囲との組合せに対応付けて第１のプロセッサに実行させる処理の組合せの識別子を格納する第３データ格納部から、取得された第１のプロセッサの使用率が属する範囲と第２のプロセッサの使用率が属する範囲との組合せに対応する処理の組合せの識別子を特定する処理を含むようにしてもよい。このようにすれば、第１のプロセッサの使用率だけでなく第２のプロセッサの使用率も考慮したうえで第１のプロセッサに実行させる処理の組合せを特定することができるようになる。
【０１５０】
また、上で述べた決定処理が、（ｃ６）第１データ格納部から、取得された第１のプロセッサの使用率、第２のプロセッサの使用率及び処理命令の組合せに最も近いレコードに対応する処理の組合せの識別子を特定する処理を含むようにしてもよい。このようにすれば、実績のあるレコードを利用して簡便に設定を行うことができるようになる。
【０１５１】
また、上で述べた判断処理が、（ｂ１）第１のプロセッサの使用率の変化量が所定回数連続して所定の閾値以上であるか判断する処理を含むようにしてもよい。例えばユーザの指示に応じて一連の画像処理が行われる際には、第１のプロセッサの使用率の変化量が一時的に大きくなることがある。そこで、上で述べたようにすることで、決定処理を行うべき時機を適切に検出することができるようになる。
【０１５２】
また、上で述べた取得処理が、（ａ１）画像処理に含まれる処理の各々について、第１のプロセッサの使用率を２以上の時点において取得する処理を含むようにしてもよい。そして、上で述べた判断処理が、（ｂ２）画像処理に含まれる処理のうち少なくともいずれかの処理による第１のプロセッサの使用率の変化量が、画像処理に含まれる処理毎に予め定められた閾値を所定回数連続して超えたか判断する処理を含むようにしてもよい。画像処理のための処理命令には、例えば線を描くための命令、色付けのための命令、オブジェクトを移動させるための命令、オブジェクトを回転させる命令など、様々な処理命令があり、それぞれの処理によって使用率の大きさは異なる。そこで、上で述べたような処理を行うことで、決定処理を行うべきタイミングをより適切に検出することができるようになる。
【０１５３】
また、上で述べた取得処理が、（ａ２）画像処理に含まれる処理のうち第１の処理による第１のプロセッサの使用率を２以上の時点において取得する処理を含むようにしてもよい。そして、上で述べた判断処理が、（ｂ３）第１の処理による第１のプロセッサの使用率の変化量が、第１の処理に対して予め定められた閾値を所定回数連続して超えたか判断する処理を含むようにしてもよい。このようにすれば、処理対象とする処理命令を限定することができるので、取得処理の処理負荷を削減することができるようになる。
【０１５４】
また、上で述べた本情報処理方法が、（Ｍ）画面のデータを前記ユーザ端末に表示させるために実行すべき複数の処理のうちいずれかの処理において第１のプロセッサが使用するメモリの獲得に失敗した場合に、決定処理において第１のプロセッサに実行させると決定された処理の組合せを採用すべきではないことを示す情報を格納処理において格納されたレコードに追加すると共に、決定処理において第１のプロセッサに実行させると決定された処理の組合せの識別子を、第１のプロセッサが使用するメモリの使用量が所定の基準より少ない処理の組合せの識別子に変更する処理をさらに含むようにしてもよい。このようにすれば、第１のプロセッサが使用するメモリを大量に使用するような処理の組合せが採用されることを防止できるようになる。
【０１５５】
また、第１のプロセッサによって画像処理が実行されており且つ画面のデータをユーザ端末に表示させるために実行すべき複数の処理のうちいずれかの処理において当該処理を担当するプロセッサを変更すべき所定の事由が生じた場合に、取得処理を実行するようにしてもよい。このようにすれば、例えば動画のデータの送信を開始したためにフレームレートが低下することが予想される場合等において、取得処理を実行することができるようになる。
【０１５６】
なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
【０１５７】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１５８】
（付記１）
画像処理のためのプロセッサである第１のプロセッサと当該第１のプロセッサによって実行された画像処理の結果を含む画面のデータをユーザ端末に表示させるための処理を実行する第２のプロセッサとを有するコンピュータにおける前記第２のプロセッサに実行させるためのプログラムであって、
前記第１のプロセッサによって画像処理が実行されている場合に、２以上の時点において前記第１のプロセッサの使用率を取得する取得処理と、
取得された前記第１のプロセッサの使用率を用いて、前記第１のプロセッサの使用率に所定の変化が生じたか判断する判断処理と、
前記第１のプロセッサの使用率に前記所定の変化が生じたと判断された場合に、取得された前記第１のプロセッサの使用率に応じて、前記画面のデータを前記ユーザ端末に表示させるために実行すべき複数の処理のうちいずれの処理を前記第１のプロセッサに実行させるかを決定する決定処理と、
前記決定処理の結果に従って前記複数の処理が実行されるように設定を行う設定処理と、
を実行させるためのプログラム。
【０１５９】
（付記２）
前記第１のプロセッサに出力される、前記画像処理のための処理命令を複数取得する処理と、
前記設定処理の前に取得した複数の前記処理命令の取得時刻を用いて、前記設定処理の前における前記処理命令の間隔を算出し、前記設定処理の後に取得した複数の前記処理命令の取得時刻を用いて、前記設定処理の後における前記処理命令の間隔を算出し、前記設定処理の後の前記処理命令の間隔が前記設定処理の前の前記処理命令の間隔よりも短いか判断する処理と、
前記設定処理の後の前記処理命令の間隔が前記設定処理の前の前記処理命令の間隔よりも長いと判断された場合、前記決定処理において前記第１のプロセッサに実行させると決定された処理のうちいずれかの処理を前記第２のプロセッサが実行するように設定を行う処理と、
をさらに実行させるための付記１記載のプログラム。
【０１６０】
（付記３）
前記画面データを前記ユーザ端末に送信する処理についてフレームレートを計測する処理と、
前記設定処理の前のフレームレートと前記設定処理の後のフレームレートとを比較し、前記設定処理の後のフレームレートが前記設定処理の前のフレームレートよりも高いか判断する処理と、
前記設定処理の後の前記処理命令の間隔が前記設定処理の前の前記処理命令の間隔よりも短く且つ前記設定処理の後のフレームレートが前記設定処理の前のフレームレートよりも低いと判断された場合に、前記決定処理において前記第１のプロセッサに実行させないと決定された処理のうちいずれかの処理を前記第１のプロセッサが実行するように設定を行う処理と、
をさらに実行させるための付記２記載のプログラム。
【０１６１】
（付記４）
前記第２のプロセッサの使用率を取得する処理と、
前記設定処理の後の前記処理命令の間隔が前記設定処理の前の前記処理命令の間隔よりも短く且つ前記設定処理の後のフレームレートが前記設定処理の前のフレームレートよりも高いと判断された場合に、前記第１のプロセッサに実行させる処理の組合せの識別子に対応付けて前記第１のプロセッサの使用率と前記第２のプロセッサの使用率と前記処理命令の組合せとを含むレコードを格納する第１データ格納部に、前記決定処理において前記第１のプロセッサに実行させると決定された処理の組合せの識別子に対応付けて、前記設定処理の前に取得された前記第１のプロセッサの使用率と前記第２のプロセッサの使用率と前記処理命令の組合せとを含むレコードを格納する格納処理と、
をさらに実行させるための付記３記載のプログラム。
【０１６２】
（付記５）
前記決定処理が、
前記第１のプロセッサに実行させる処理の組合せの識別子に対応付けて当該組合せに含まれる処理を実行させた場合における前記第１のプロセッサの使用率の増加値を格納する第２データ格納部から、前記決定処理の時点において前記第１のプロセッサに実行させている処理の組合せの識別子に対応する増加値を特定する処理と、
特定された前記増加値と、前記第２データ格納部における他の組合せの識別子に対応する増加値の各々との差を算出する処理と、
前記他の組合せの各々について、算出された前記差と取得された前記第１のプロセッサの使用率との和を算出することにより、当該他の組合せに含まれる処理を前記第１のプロセッサに実行させた場合における前記第１のプロセッサの使用率を算出する処理と、
前記他の組合せのうち、算出された前記第１のプロセッサの使用率が予め定められた目標値に最も近い組合せの識別子を特定する処理と、
を含む付記１乃至４のいずれか１つ記載のプログラム。
【０１６３】
（付記６）
前記決定処理が、
前記第１のプロセッサの使用率の範囲と前記第２のプロセッサの使用率の範囲との組合せに対応付けて前記第１のプロセッサに実行させる処理の組合せの識別子を格納する第３データ格納部から、取得された前記第１のプロセッサの使用率が属する範囲と前記第２のプロセッサの使用率が属する範囲との組合せに対応する処理の組合せの識別子を特定する処理
を含む付記４記載のプログラム。
【０１６４】
（付記７）
前記決定処理が、
前記第１データ格納部から、取得された前記第１のプロセッサの使用率、前記第２のプロセッサの使用率及び前記処理命令の組合せに最も近いレコードに対応する処理の組合せの識別子を特定する処理
を含む付記４記載のプログラム。
【０１６５】
（付記８）
前記判断処理が、
前記第１のプロセッサの使用率の変化量が所定回数連続して所定の閾値以上であるか判断する処理
を含む付記１乃至７のいずれか１つ記載のプログラム。
【０１６６】
（付記９）
前記取得処理が
前記画像処理に含まれる処理の各々について、前記第１のプロセッサの使用率を２以上の時点において取得する処理
を含み、
前記判断処理が、
前記画像処理に含まれる処理のうち少なくともいずれかの処理による前記第１のプロセッサの使用率の変化量が、前記画像処理に含まれる処理毎に予め定められた閾値を所定回数連続して超えたか判断する処理
を含む付記１乃至７のいずれか１つ記載のプログラム。
【０１６７】
（付記１０）
前記取得処理が、
前記画像処理に含まれる処理のうち第１の処理による前記第１のプロセッサの使用率を２以上の時点において取得する処理
を含み、
前記判断処理が、
前記第１の処理による前記第１のプロセッサの使用率の変化量が、前記第１の処理に対して予め定められた閾値を所定回数連続して超えたか判断する処理
を含む付記１乃至７のいずれか１つ記載のプログラム。
【０１６８】
（付記１１）
前記画面のデータを前記ユーザ端末に表示させるために実行すべき複数の処理のうちいずれかの処理において前記第１のプロセッサが使用するメモリの獲得に失敗した場合に、前記決定処理において前記第１のプロセッサに実行させると決定された処理の組合せを採用すべきではないことを示す情報を前記格納処理において格納されたレコードに追加すると共に、前記決定処理において前記第１のプロセッサに実行させると決定された処理の組合せの識別子を、前記第１のプロセッサが使用するメモリの使用量が所定の基準より少ない処理の組合せの識別子に変更する処理
をさらに実行させるための付記４乃至１０のいずれか１つ記載のプログラム。
【０１６９】
（付記１２）
前記第１のプロセッサによって画像処理が実行されており、且つ前記画面のデータを前記ユーザ端末に表示させるために実行すべき複数の処理のうちいずれかの処理において当該処理を担当するプロセッサを変更すべき所定の事由が生じた場合に、前記取得処理を実行する
ことを特徴とする付記１乃至１１のいずれか１つ記載のプログラム。
【０１７０】
（付記１３）
画像処理のためのプロセッサである第１のプロセッサと当該第１のプロセッサによって実行された画像処理の結果を含む画面のデータをユーザ端末に表示させるための処理を実行する第２のプロセッサとを有するコンピュータにおける前記第２のプロセッサにより実行される情報処理方法であって、
前記第１のプロセッサによって画像処理が実行されている場合に、２以上の時点において前記第１のプロセッサの使用率を取得する処理と、
取得された前記第１のプロセッサの使用率を用いて、前記第１のプロセッサの使用率に所定の変化が生じたか判断する処理と、
前記第１のプロセッサの使用率に前記所定の変化が生じたと判断された場合に、取得された前記第１のプロセッサの使用率に応じて、前記画面のデータを前記ユーザ端末に表示させるために実行すべき複数の処理のうちいずれの処理を前記第１のプロセッサに実行させるかを決定する決定処理と、
前記決定処理の結果に従って前記複数の処理が実行されるように設定を行う処理と、
を含む情報処理方法。
【０１７１】
（付記１４）
画像処理のためのプロセッサである第１のプロセッサと、
前記第１のプロセッサによって実行された画像処理の結果を含む画面のデータをユーザ端末に表示させるための処理を実行する第２のプロセッサと、
を有し、
前記第２のプロセッサが、
前記第１のプロセッサによって画像処理が実行されている場合に、２以上の時点において前記第１のプロセッサの使用率を取得し、
取得された前記第１のプロセッサの使用率を用いて、前記第１のプロセッサの使用率に所定の変化が生じたか判断し、
前記第１のプロセッサの使用率に前記所定の変化が生じたと判断された場合に、取得された前記第１のプロセッサの使用率に応じて、前記画面のデータを前記ユーザ端末に表示させるために実行すべき複数の処理のうちいずれの処理を前記第１のプロセッサに実行させるかを決定し、
決定の結果に従って前記複数の処理が実行されるように設定を行う、
情報処理装置。
【符号の説明】
【０１７２】
１  サーバ    ３  ネットワーク
５  クライアント端末
１０  ＧＰＵアプリ    １１  管理部
１２  画面制御部    １３  処理ライブラリ
１４  ＧＰＵドライバ    １５  ＯＳ
１６  ＧＰＵ  １７  ＣＰＵ
１１０  起動監視部    １１１  取得部
１１２  ＡＰＩ監視部    １１３  パターン格納部
１１４  判定部    １１５  比較部
１１６  通知部    １１７  動作モード格納部
１１８  決定データ格納部  １２０  画像メモリ
１２１  第１送信部    １２２  頻度特定部
１２３  送信停止部    １２４  領域識別部
１２５  計測部    １２６  第２送信部
１２７  変更部
【図１】
0005842601.tif 000002
【図２】
0005842601.tif 000003
【図３】
0005842601.tif 000004
【図４】
0005842601.tif 000005
【図５】
0005842601.tif 000006
【図６】
0005842601.tif 000007
【図７】
0005842601.tif 000008
【図８】
0005842601.tif 000009
【図９】
0005842601.tif 000010
【図１０】
0005842601.tif 000011
【図１１】
0005842601.tif 000012
【図１２】
0005842601.tif 000013
【図１３】
0005842601.tif 000014
【図１４】
0005842601.tif 000015
【図１５】
0005842601.tif 000016
【図１６】
0005842601.tif 000017
【図１７】
0005842601.tif 000018
【図１８】
0005842601.tif 000019
【図１９】
0005842601.tif 000020
【図２０】
0005842601.tif 000021
【図２１】
0005842601.tif 000022
【図２２】
0005842601.tif 000023
【図２３Ａ】
0005842601.tif 000024
【図２３Ｂ】
0005842601.tif 000025
【図２４】
0005842601.tif 000026
【図２５】
0005842601.tif 000027
【図２６】
0005842601.tif 000028
【図２７】
0005842601.tif 000029
【図２８】
0005842601.tif 000030
【図２９】
0005842601.tif 000031