(57)【特許請求の範囲】
【請求項１】
特定のジョブを処理する動作環境が構築された支援サーバにネットワーク経由で接続され前記特定のジョブを処理する動作環境が構築されたコンピュータにおいて、ジョブを処理する方法であって、
実行命令に基づいて前記コンピュータが前記特定のジョブの処理を開始するステップと、
前記コンピュータが前記支援サーバに前記実行命令を送って前記特定のジョブの処理を要求するステップと、
前記コンピュータが前記支援サーバから受け取った前記特定のジョブの処理結果または前記コンピュータが処理した前記特定のジョブの処理結果のいずれか先に発生した処理結果を利用するステップと
を有する方法。
【請求項２】
前記コンピュータが処理した処理結果が先に発生した場合に、前記コンピュータが前記支援サーバに前記特定のジョブの処理を中止する命令を送るステップを有する請求項１に記載の方法。
【請求項３】
前記支援サーバから処理結果を先に受け取ったときには前記コンピュータは前記コンピュータにおける前記特定のジョブの処理を中止するステップを有する請求項１または請求項２に記載の方法。
【請求項４】
前記特定のジョブの処理を要求するステップが、前記支援サーバに処理を要求するジョブを登録したジョブ・リストに基づいて要求するか否かを判断するステップを含む請求項１から請求項３のいずれかに記載の方法。
【請求項５】
前記支援サーバから受け取った処理結果および前記コンピュータにおける処理結果の先後に基づいて前記ジョブ・リストを更新するステップを有する請求項４に記載の方法。
【請求項６】
前記特定のジョブの処理を要求するステップが、前記支援サーバから前記特定のジョブの処理結果を得るまでの時間に関連するパラメータを測定して要求するか否かを判断するステップを含む請求項１から請求項５のいずれかに記載の方法。
【請求項７】
前記パラメータが、前記支援サーバのＣＰＵ使用率、前記支援サーバにおける前記ネットワークに対するデータ転送速度、および前記コンピュータにおける前記ネットワークに対するデータ転送速度のいずれか１つまたは複数の要素の組み合わせからなる請求項６に記載の方法。
【請求項８】
前記特定のジョブの処理を要求するステップが、前記コンピュータのＣＰＵ使用率を測定して要求するか否かを判断するステップを含む請求項１から請求項７のいずれかに記載の方法。
【請求項９】
特定のジョブを処理する動作環境が構築された支援サーバにネットワーク経由で接続され前記特定のジョブを処理する動作環境が構築されたコンピュータであって、
前記支援サーバに接続するためのネットワーク通信部と、
ユーザ・インターフェースからの指示に基づいて前記特定のジョブを処理するジョブ処理部と、
前記ユーザ・インターフェースからの実行命令に基づいて前記支援サーバに前記実行命令を送って前記特定のジョブの処理を要求し、前記ジョブ処理部が前記特定のジョブの処理を完了するよりも先に前記支援サーバから前記特定のジョブの処理の結果を受け取ったときに前記ジョブ処理部による前記特定のジョブの処理を中止させるパフォーマンス制御部と
を有するコンピュータ。
【請求項１０】
前記パフォーマンス制御部は、前記支援サーバから処理の結果を受け取るよりも先に前記ジョブ処理部が処理を完了したときに、前記支援サーバに前記特定のジョブの処理を中止する命令を送る請求項９に記載のコンピュータ。
【請求項１１】
前記コンピュータがバッテリィで動作し前記ネットワークに無線で接続される請求項９または請求項１０に記載のコンピュータ。
【請求項１２】
クライアントと該クライアントと同一の動作環境が構築された支援サーバで構成されたコンピュータ・システムであって、
クライアントから要求されたジョブを処理して前記クライアントに処理結果を送ることができる支援サーバと、
実行命令に基づいて特定のジョブを処理するジョブ処理部と、前記支援サーバに前記実行命令を送って前記特定のジョブを同時並行的に処理することを要求しいずれか先に得た処理結果を利用するパフォーマンス制御部とを含むクライアントと
を有するコンピュータ・システム。
【請求項１３】
前記支援サーバは、複数のクライアントの実行環境をそれぞれ仮想化した複数の仮想マシンが構築されている請求項１２に記載のコンピュータ・システム。
【請求項１４】
前記支援サーバは、前記クライアントに実装されたアプリケーション・プログラムの実行環境と同一の実行環境が構築されている請求項１２に記載のコンピュータ・システム。
【請求項１５】
前記支援サーバが、前記クライアントと共有するファイルを有するデータベース・サーバである請求項１２に記載のコンピュータ・システム。
【請求項１６】
特定のジョブを処理する動作環境が構築された支援サーバにネットワーク経由で接続され前記特定のジョブを処理する動作環境が構築されたコンピュータに、
実行命令に基づいて前記特定のジョブの処理を開始する機能と、
前記実行命令に基づいて前記支援サーバに前記実行命令を送って前記特定のジョブの処理を要求するか否かを判断する機能と、
要求すると判断したときに前記支援サーバに前記特定のジョブの処理を要求する機能と、
前記支援サーバから受け取った前記特定のジョブの処理結果または前記コンピュータが処理した前記特定のジョブの処理結果のいずれか先に発生した処理結果を利用する機能と
を実現させるコンピュータ・プログラム。
【請求項１７】
いずれか一方の処理結果が先に発生したときに他方の処理を中止させる機能を実現させる請求項１６に記載のコンピュータ・プログラム。
【請求項１８】
前記判断する機能が、前記支援サーバおよび前記コンピュータまたはいずれか一方の負荷率およびデータ転送速度を判断する機能を含む請求項１６または請求項１７に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク・サービスを利用してクライアントのパフォーマンスを向上させる技術に関し、さらに詳細にはサーバとクライアントのそれぞれにおける特定のジョブの処理に関する異質な特徴を組み合わせてクライアントにおいて最大のパフォーマンスを実現する方法に関する。
【背景技術】
【０００２】
コンピュータの利用形態は、メイン・フレームによる集中処理からクライアント／サーバによる分散処理へと発展し、近年においては、インターネットやＬＡＮなどの性能の向上と低価格化によりネットワークを中心としたネットワーク・コンピューティングまたはクラウド・コンピューティングといわれる新しい集中処理に発展してきている。クラウド・コンピューティングは一般に、ＳａａＳ（Software as a Service）、ＰａａＳ（Platform as a Service）、およびＩａａＳ（Infrastructure as a Service）という３つのタイプを含む。
【０００３】
ＳａａＳの利用形態では、ソフトウエアの提供者側のサーバでアプリケーション・ソフトウエアを稼働させ、ユーザはそのソフトウエアの機能をネットワーク経由でサービスとして利用する。ＰａａＳの利用形態では、サーバにハードウエアやＯＳなどのプラットフォームまたはアプリケーション実行環境を提供し、ユーザはそこで自ら用意したアプリケーションやサービス・プロバイダが用意したアプリケーションを実行してネットワーク経由で結果を受け取る。ＩａａＳの利用形態では、サーバに構築された仮想マシンでユーザが用意したＯＳとアプリケーションを実行する。
【０００４】
特許文献１には、１台のマスタ・コンピュータと複数のスレーブ・コンピュータをネットワークで接続し、協調動作するようにしたクラスタ・コンピュータについて記載されている。クラスタ・コンピュータでは、マスタ・コンピュータで動作するアプリケーションが、並列処理が必要となる部分にさしかかると、マスタ・コンピュータは素材データを個々のスレーブ・コンピュータに分配した上、それぞれのスレーブ・コンピュータが担当する処理の範囲を決定し、処理の開始をそれぞれのスレーブ・コンピュータに指示する。処理を終えたスレーブ・コンピュータは、部分的な結果データをマスタ・コンピュータに送り、マスタ・コンピュータはそれらを統合して一つのまとまった結果データを得る。
【０００５】
特許文献２は、ネットワークに接続された印刷制御装置と複数の印刷装置で構成される印刷制御システムにおいて、印刷制御装置が、各印刷装置の印刷性能および印刷状況に基づいて印刷完了予測時刻を計算して、分割印刷ジョブを各印刷装置にスケジューリングする技術が記載されている。特許文献３は、条件分岐命令に対応する条件が確定していない間、投機的に命令を処理してプログラムを高速に実行するプロセッサを開示する。内部で条件分岐命令の分岐の成否が判断されて、有効な実行結果はレジスタ・ファイルに格納されるが、無効な実行結果は消去される。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−１８７５９０号公報
【特許文献２】特開２００９−１２３１４７号公報
【特許文献３】特開平５−２２４９２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
クラウド・コンピューティングでは、クライアントの負荷を部分的にネットワーク・サーバに分散することで軽減することができる。しかし、クラウド・コンピューティングは、特定のジョブの処理にあたってクライアントのパフォーマンスを最大化することを指向するものではない。クラウド・コンピューティングでは、同一のジョブをクライアントおよびサーバのいずれでも処理できる環境を構築することができる。その場合に、いずれで実行した方が短時間で処理を完了できるかの判断は簡単にはできない。
【０００８】
その理由には、クライアントが特定のジョブを自ら処理する能力とサーバに処理を要求してサーバから結果を受け取るときのネットワークを含むサーバ側の能力の優劣がジョブの種類に応じて異なり、さらに、優劣関係が時間的に変動することが挙げられる。たとえば、クライアントは、ＣＰＵと周辺装置との間を通過するデータ・バスの帯域が広く安定性に優れているが、ＣＰＵやメイン・メモリの能力は制限されている。これに対して、クライアントがネットワーク経由でサーバを利用する場合は、サーバ自体のＣＰＵやメイン・メモリの能力は高く拡張性もあるが、ネットワークの帯域が狭く安定性に欠ける。
【０００９】
したがって、ジョブを処理するまでの時間をＣＰＵの性能が支配するような場合はサーバの能力を活用した方が早く処理結果を得ることができるが、ネットワークの転送時間が支配するような場合はクライアントの能力を活用したほうが早く処理結果を得ることができる。さらに、マルチタスキング・システムを採用するクライアントでは特定のジョブがクライアントのリソースを他のジョブとの間で共有しており、また、サーバでは当該クライアントがサーバのリソースを他のクライアントと共有する。クライアントとサーバのどちらで処理することが優位かは、上記のリアルタイムで変動する要素により常に移り変わる。しかしながら、これまでのクラウド・コンピューティングでは、サーバを利用して処理するジョブをあらかじめ決めてからサーバのサービスを利用していた。
【００１０】
近年、サーバを構築する費用が低下し、ネットワークの通信速度および安定性が向上してきたことにより、サーバのサービスが利用し易くなってきた。しかし前述のとおり、特定のジョブの処理にクライアントがサーバのサービスを利用できる環境において、当該ジョブの処理結果をクライアントが最も短時間で得るという課題を設定したときに、ジョブが発生した瞬間においては、クライアントが処理する場合とサーバに処理を要求してサーバから結果を得る場合のいずれが早いかは判断できないことが多い。
【００１１】
このような場合に当該ジョブをクライアントが処理するのと同時並行的にサーバにも投機的に処理を要求しておき、早く処理が完了した方の結果を利用するといったようなジョブの処理方法は、リソースに無駄が生ずるためにこれまで採用されることはなかった。また、結果が予測できない処理を投機的に実行する方法は、特許文献３のようなプロセッサ内部の処理に限られていた。
【００１２】
しかし、クライアントの機能が増強され搭載するプロセッサに比して高度な処理をする機会が増加したこと、および、サーバは比較的処理能力に余裕がある時間帯が多いことに着目すると、クライアントが特定のジョブの処理結果を最短時間で得るにはサーバのサービスを利用することが有効なことがわかってきた。このような状況の変化に伴い、新たなネットワーク・コンピューティングの形態を構築してクライアントに最大のパフォーマンスを発揮させる可能性に着目することは有意義である。
【００１３】
そこで本発明の目的は、支援サーバに接続されたクライアントが最短時間でジョブの処理結果を取得する方法を提供することにある。さらに本発明の目的は、クライアントの消費電力を低減する方法を提供することにある。さらに本発明の目的は、同一の支援サーバに接続された複数のクライアントの全体的なパフォーマンスを向上する方法を提供することにある。さらに本発明の目的は、そのような方法を実現するコンピュータ・プログラム、コンピュータ、およびコンピュータ・システムを提供することにある。
【課題を解決するための手段】
【００１４】
本発明は、クライアントのパフォーマンス向上を目指した新しいネットワーク・コンピューティングの形態を提供する。本発明は、クライアントとサーバがネットワークで接続され、クライアントが処理するジョブと同じジョブをサーバが処理できる環境で実現される。本発明のネットワーク・コンピューティングは、クライアントとサーバの異質な特徴を組み合わせて、クライアントのパフォーマンスを最大にするという意味で、これを以後、サーバ・アクセラレテッド・クライアント(ＳＡＣ)ということにする。
【００１５】
ＳＡＣは、単一のサーバが特定のジョブ全体の処理をする一般的なサーバ／クライアント・システムや、複数のサーバが分割されたジョブをそれぞれ処理して最後に統合するクラスタ・コンピュータなどのようなこれまでの集中処理型のネットワーク・コンピューティングとは異なり、処理の主体はクライアントであって、サーバを補助的に利用する。
【００１６】
クライアントが特定のジョブを自ら処理する場合と支援サーバに要求して処理結果を得る場合において、いずれから先に処理結果を得られるかを事前に確定することはできない場合が多い。サーバはＣＰＵやメイン・メモリの能力が大きいが、内部リソースを他のクライアントが共有しており、また、ネットワークのデータ転送速度は時間的に変動し、さらにネットワークは常に切断のリスクを抱えている。
【００１７】
ＳＡＣでは、クライアントがサーバを利用したときにパフォーマンスの向上を図ることできることは確実ではないが、パフォーマンスの向上が期待できるという蓋然性がある場合には利用する価値がある点に着目して、同一の特定のジョブをクライアントが処理することに加えてサーバに対して投機的に同時並行で処理を依頼する。
【００１８】
本発明の１の態様では、支援サーバにネットワーク経由で接続されたコンピュータがジョブを処理する際に、最短時間で処理結果を得ることができる方法を提供する。コンピュータは、実行命令に基づいて特定のジョブの処理を開始する。実行命令は、コンピュータの入力装置からまたはネットワークを通じて他のコンピュータから受け取ることができる。さらにコンピュータは実行命令に基づいて支援サーバに特定のジョブの処理を要求する。コンピュータは支援サーバから受け取った特定のジョブの処理結果またはコンピュータが処理した同一のジョブの処理結果のいずれか先に発生した処理結果を利用する。
【００１９】
コンピュータは、支援サーバから先に処理結果を受け取った場合は自らの処理を途中で中止することができる。コンピュータは、自らの処理結果が先に発生した場合は、支援サーバに特定のジョブの処理を中止する命令を送ることができる。その結果、コンピュータまたは支援サーバのいずれかにおいて途中まで特定のジョブを処理するために費やしたリソースは無駄になるが、ＳＡＣでは複数のジョブ全体でみたときに、支援サーバの能力を活用することでコンピュータが単独でジョブを処理するよりもパフォーマンスは必ず向上する。
【００２０】
さらに、コンピュータでは支援サーバの結果を利用したときに特定のジョブの全体を処理しないので、消費電力の低減を図ることができる。その一方で、支援サーバは多くの時間でアイドル状態になっておりクライアントがリソースを消費してもその消費電力はほとんど増加しない。ＳＡＣでは、ネットワーク側のリソースの消費よりもコンピュータが得られるパフォーマンスの向上および消費電力の低下の方が有利であるとの前提に立っている。ただし、サーバに接続されているクライアントを含めたシステム全体のリソース運用を最適化するために、本発明においては支援サーバから先に処理結果を得られる確率が高い場合に限り投機的な処理の要求をすることが望ましい。
【００２１】
そのために、ジョブの処理を要求する際に、支援サーバに処理を要求するジョブを登録したジョブ・リストに基づいて要求をするか否かを判断することができる。ジョブ・リストのエントリーは、支援サーバから受け取った処理結果またはコンピュータにおける処理結果の先後に基づいて更新することができる。その結果、ジョブ・リストに登録されたジョブの処理を支援サーバに依頼すると投機が成功する確率が向上する。
【００２２】
また処理を要求するか否かを判断する際に、支援サーバから特定のジョブの処理結果を得るまでの時間に関連するパラメータを測定して要求するか否かを判断することができる。このときパラメータには、支援サーバのＣＰＵ使用率、支援サーバにおけるネットワークに対するデータ転送速度、およびコンピュータにおけるネットワークに対するデータ転送速度などの要素を含むようにすることができる。これらの要素２つまたは３つを組み合わせて利用してもよい。
【００２３】
また処理を要求するか否かを判断する際に、コンピュータのＣＰＵ使用率を測定してもよい。コンピュータのＣＰＵ使用率は、コンピュータが特定のジョブを処理するまでの時間に関連するパラメータに相当する。コンピュータは、バッテリィで動作しネットワークに無線で接続される無線端末装置である場合に、バッテリィの消耗を抑制することができるので都合がよい。
【００２４】
支援サーバには、クライアントと同一のジョブを処理する実行環境が構築されている。支援サーバには、複数のクライアントの実行環境をそれぞれ仮想化した複数の仮想マシンを構築することができる。支援サーバには、クライアントに実装されたアプリケーション・プログラムの実行環境と同一の実行環境を構築することができる。さらに支援サーバは、クライアントと共有するファイルを有するデータベース・サーバとすることができる。
【発明の効果】
【００２５】
本発明により、支援サーバに接続されたクライアントが最短時間でジョブの処理結果を取得する方法を提供することができた。さらに本発明により、クライアントの消費電力を低減する方法を提供することができた。さらに本発明により、同一の支援サーバに接続された複数のクライアントの全体的なパフォーマンスを向上する方法を提供することができた。さらに本発明により、そのような方法を実現するコンピュータ・プログラム、コンピュータ、およびコンピュータ・システムを提供することができた。
【図面の簡単な説明】
【００２６】
【図１】ＳＡＣを実現するコンピュータ・システムの概要を説明する図である。
【図２】クライアント１００の構成を示す機能ブロック図である。
【図３】支援サーバ２００ａの構成を示す図である。
【図４】支援サーバ２００ｂの構成を示す図である。
【図５】支援サーバ２００ｃの構成を示す図である。
【図６】コンピュータ・システム１０において、クライアント１００のパフォーマンスを向上させる手順を示すフローチャートである。
【図７】支援サーバに処理の要求をするか否かを判断する手順を示すフローチャートである。
【図８】ジョブ・リストのデータ構造を示す図である。
【発明を実施するための形態】
【００２７】
［コンピュータ・システム］
図１は、ＳＡＣを実現するコンピュータ・システムの概要を説明する図である。コンピュータ・システム１０は、複数のクライアント１００、ネットワーク１１、および支援サーバ２００で構成されている。ネットワーク１１は、有線および無線で接続されたＬＡＮ、ＷＡＮ、インターネット、電話回線またはネットワーク専用回線などで構成することができる。ネットワーク１１には支援サーバ２００ａ、２００ｂ、２００ｃ、Ｗｅｂサーバ１５、ファイル・サーバ１７および無線基地局１３が接続されている。
【００２８】
以後、支援サーバ２００ａ、２００ｂ、２００ｃのいずれかを指す場合は、支援サーバ２００ということにする。支援サーバ２００はクライアント１００が処理する特定のジョブと同一のジョブを処理する機能を備えている。Ｗｅｂサーバ１５は、蓄積していたＨＴＭＬ文書や画像などの情報を、クライアント１００または支援サーバ２００のＷｅｂブラウザの要求に応じてネットワーク１１を通じて送信する。
【００２９】
ファイル・サーバ１７は、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）として構成された記憶装置に記憶されたファイルを、ネットワーク上のクライアント１００および支援サーバ２００が共有できるように提供する。無線基地局１３には、無線で複数のクライアント１００が接続されている。クライアント１００のいくつかは有線でネットワーク１１に接続されている。クライアント１００は、支援サーバ２００、Ｗｅｂサーバ１５およびファイル・サーバ１７に接続することができるパーソナル・コンピュータ、スマートフォン、または携帯電話などの無線端末装置とすることができる。クライアント１００は、ネットワーク１１に無線で接続されるタイプの場合は、バッテリィを搭載する。
【００３０】
［クライアント］
図２は、クライアント１００の構成を示す機能ブロック図である。図２の各要素は、ＣＰＵ、メイン・メモリ、ハードディスク・ドライブ（ＨＤＤ）、およびネットワーク・インターフェース・カード（ＮＩＣ）などの周知のハードウエアおよびデバイス・ドライバ、オペレーティング・システム（ＯＳ）、およびアプリケーション・プログラム（アプリケーション）などの周知のソフトウエアを含んで構成されている。ＯＳは、同時に複数のタスクを平行して実行するマルチタスク方式を採用する。
【００３１】
パフォーマンス制御部１０７およびジョブ・リスト１０９は、それぞれ支援サーバ２００の支援を受けてクライアント１００のパフォーマンスを向上させるための新規なアプリケーションおよびファイルを含んで構成されている。ユーザ・インターフェース１０１は、キーボード、ポインティング・デバイス、およびディスプレイなどのハードウエアと、アプリケーションおよびＯＳのユーザ・インターフェース部分を含む。
【００３２】
ユーザ・インターフェース１０１は、アプリケーションまたはＯＳに対するキーボードまたはリモート・コンピュータからのコマンドを受け取ってジョブ処理部１０３およびパフォーマンス制御部１０７に通知する。ユーザ・インターフェース１０１はジョブ処理部１０３がジョブを処理するための画面をディスプレイに表示する。ユーザ・インターフェース１０１は、ジョブ処理部１０３から受け取ったジョブの処理結果または支援サーバ２００からパフォーマンス制御部１０７が受け取ったジョブの処理結果をディスプレイに表示する。
【００３３】
ジョブ処理部１０３は、ＣＰＵおよびメイン・メモリなどの周知のハードウエアとアプリケーションおよびＯＳなどの周知のソフトウエアを含んで構成されている。ジョブ処理部１０３ではユーザ・インターフェース１０１からの指示に基づいて、アプリケーションまたはＯＳがジョブを処理して処理結果をユーザ・インターフェース１０１に送ったり、記憶部１０４に記憶したりする。ジョブには、データベースの検索、画像データのフィルタ処理、ストリーミング・データの合成などのＣＰＵにとって高負荷となる処理から、ポインティング・デバイスやキーボードからの信号に対する応答処理などのような軽負荷となる処理までのあらゆるコンピュータ処理を含む。
【００３４】
記憶部１０４はＨＤＤ、デバイス・ドライバおよびＯＳを含んで構成され、アプリケーション、ＯＳ、デバイス・ドライバなどの周知のプログラム、パフォーマンス制御部１０７を構成する新規のプログラム、ジョブ・リスト１０９、およびジョブ処理部１０３が処理した処理結果などを記憶する。ＣＰＵ使用率測定部１０５は主としてＯＳで構成され、ジョブ処理部１０３において動作しているＣＰＵの現在の使用率を測定する。ネットワーク通信部１１１は、有線または無線のＮＩＣおよびデバイス・ドライバを含んで構成されており、ネットワーク１１を経由して支援サーバ２００と通信するための処理をする。転送速度測定部１１３は主としてＮＩＣのデバイス・ドライバおよびＯＳで構成されており、ネットワーク通信部１１１における送信および受信のデータ転送速度を測定する。
【００３５】
パフォーマンス制御部１０７は、ユーザ・インターフェース１０１から特定のジョブを処理するコマンドを受け取ったときに、ジョブ・リスト１０９を参照して支援サーバ２００に当該処理を要求するか否かを判断して、要求すると決定した場合にはネットワーク通信部１１１を通じて支援サーバ２００に処理を要求する。パフォーマンス制御部１０７は、さらに後に説明するように、ＣＰＵ使用率測定部１０５および転送速度測定部１１３を参照してジョブ・リスト１０９から支援サーバ２００への要求対象として漏れているジョブについて、支援サーバ２００に処理を要求するか否かを判断する。
【００３６】
パフォーマンス制御部１０７は、さらに、支援サーバ２００に事前に問い合わせて支援サーバを利用したときに処理結果を得るまでの時間に関連するパラメータを取得してジョブ・リストから漏れているジョブについて、支援サーバ２００に処理を要求するか否かを判断する。パフォーマンス制御部１０７は、支援サーバ２００に処理を要求したジョブ・タイプの処理結果に基づいてジョブ・リスト１０９を更新する。パフォーマンス制御部１０７は、同一ジョブを同時並行的に実行している支援サーバ２００またはジョブ処理部１０３のいずれかから処理結果を先に受け取った時点で、処理を終了していない方に処理の中止を指示する。パフォーマンス制御部１０７は、支援サーバ２００からジョブの処理結果を受け取ったときに、ユーザ・インターフェース１０１に送る。
【００３７】
ジョブ・リスト１０９は、アプリケーションの名称、コマンドの種類、および処理対象となるデータ量の閾値および適用フラグの４つのフィールドで構成されている。この４つのフィールドで構成される各レコードをジョブ・タイプということにする。図９は、ジョブ・リスト１０９のデータ構造を示す。ジョブ・リスト１０９には、あらかじめ支援サーバ２００にジョブの処理を要求した方が、ジョブ処理部１０３で処理するよりもユーザ・インターフェース１００が早く結果を得られる可能性がある複数のジョブ・タイプを登録している。処理対象となるデータ量の閾値は、データ量が多いほどＣＰＵの負担が大きくなり、支援サーバ２００で処理したほうが早く処理結果を得ることができるという特質を判断するために設けている。各レコードは、ユーザ・インターフェース１０１から受け取ったコマンドに基づいてジョブ処理部１０３が処理するときのジョブの処理時間に関連する情報である。
【００３８】
支援サーバ２００によるジョブの処理時間には、支援サーバ２００のＣＰＵが処理する時間および処理対象データまたは処理結果のデータがネットワーク１１を通じて転送されるまでの時間も含まれる。適用フラグは、ジョブ・リストに登録されたジョブ・タイプの中で支援サーバに処理を要求した方が処理結果を早く得られる可能性が高いジョブ・タイプに対して設定される。したがってジョブ・リスト１０９には、キーボードからの入力をディスプレイに表示させる処理またはマウスのクリックに対する応答処理などの対話型処理をするジョブなどの明らかにＣＰＵの負担が軽いものは最初から登録しない。
【００３９】
ジョブ・リスト１０９にはユーザが複数のジョブ・タイプを登録しかつ適用フラグを設定する。そしてユーザは、画像データのフィルタ処理、レンダリングまたは映像ストリームの合成処理などのＣＰＵに対して高い負荷を課すジョブ・タイプに適用フラグを設定することができる。適用フラグが設定されないジョブ・タイプについてもパフォーマンス制御部１０７の判断により、支援サーバの処理の要求が行われる場合がある。パフォーマンス制御部１０７は、ジョブ・リスト１０９を、適用フラグが設定されたジョブ・タイプについては、支援サーバ２００に処理を要求するホワイト・リストとして使用する。適用フラグは後に説明するように、コンピュータ・システム１１が動作を開始するに伴ってパフォーマンス制御部１０７によって更新される。更新された適用フラグが設定されたジョブ・リスト１０９に基づいて支援サーバ２００に処理を要求すると支援サーバ２００が先にジョブを処理する確率が高くなる。
【００４０】
［支援サーバ］
図３は、支援サーバ２００の一例である支援サーバ２００ａの構成を示す図である。支援サーバ２００ａは、ＣＰＵ２１３、メイン・メモリ２１５、ＨＤＤ２１７、およびＮＩＣ２１９などのハードウエアで構成されたハードウエア層２１１上で仮想化レイヤ２０９を実行し、仮想化レイヤ２０９上に複数の仮想マシン２０１が構成される。各仮想マシン２０１は、仮想ハードウエア２０７、ゲストＯＳ２０５およびアプリケーション・プログラム２０３で構成されている。仮想ハードウエア２０７は、ハードウエア層２１１を仮想化してゲストＯＳに提供する。
【００４１】
支援サーバ２００ａは、前述のＩａａＳの範疇に含まれ、各仮想マシン２０１ではいずれかのクライアント１００と同じアプリケーションが同じ実行環境で動作している。クライアント１００が支援サーバ２００ａに接続されたときに、支援サーバ２００ａにクライアント１００の仮想マシン２０１が構築され、切断されたときに当該仮想マシン２０１は消滅する。
【００４２】
仮想マシン２０１が構成されると、パフォーマンス制御部１０７は、前回の接続から今回の接続までの間にクライアント１００の中で変化のあった、ハードウエア、ソフトウエア、および記憶部１０４のデータなどを仮想マシン２０１に反映させ、仮想マシン２０１にクライアント１００と同じ動作環境を実現する。パフォーマンス制御部１０７がユーザ・インターフェース１０１から受け取ったコマンドを支援サーバ２００ａに送ると、支援サーバ２００ａにおけるジョブ処理部１０３を仮想化した要素がクライアントと同一のジョブを処理してパフォーマンス制御部１０７に返送することができる。
【００４３】
ジョブがＷｅｂサーバ１５から情報を検索する処理である場合は、パフォーマンス制御部１０７はユーザ・インターフェース１０１から受け取ったコマンドに応答して支援サーバ２００ａに同じ検索を要求することができる。また、ジョブ処理部１０３はユーザ・インターフェース１０１から受け取ったコマンドを、ネットワーク通信部１１１を経由してＷｅｂサーバ１５に送って検索結果を得ることができる。要求を受けた支援サーバ２００ａは、Ｗｅｂサーバ１５を検索した結果をパフォーマンス制御部１０７に送る。
【００４４】
ジョブがファイル・サーバ１７から画像ファイルをダウンロードして加工する処理の場合は、パフォーマンス制御部１０７は支援サーバ２００ａにダウンロードと加工を要求する。要求を受けた支援サーバ２００ａは、フィアル・サーバ１７から画像ファイルをダウンロードして加工し、結果の画像ファイルをパフォーマンス制御部１０７に送る。また、ジョブ処理部１０３もネットワーク通信部１１１を経由してファイル・サーバ１７から画像ファイルをダウンロードして加工する。
【００４５】
図４は、支援サーバ２００の他の例である支援サーバ２００ｂの構成を示す図である。支援サーバ２００ｂは、ハードウエア２０９、ハードウエア２０９をアプリケーション・プログラムに対して抽象化する抽象化レイヤ２５３および抽象化レイヤ２５３上で動作する複数のアプリケーション２５５で構成されている。支援サーバ２００ｂは、前述のＰａａＳに対してクライアントが用意したアプリケーションやＳａａＳで提供されたアプリケーションを実行することで構成することができる。
【００４６】
支援サーバ２００ｂにクライアント１００と同じアプリケーションの実行環境が構築されている場合は、パフォーマンス制御部１０７は支援サーバ２００ｂにコマンドまたはコマンドと記憶部１０４に記憶していた処理対象データを一緒に送ることができる。支援サーバ２００ｂのアプリケーション・プログラムはジョブを処理してパフォーマンス制御部１０７に処理結果を返送する。パフォーマンス制御部１０７は、ジョブ処理部１０３を通じて受け取った処理結果を記憶部１０４に保存することができる。
【００４７】
図５は、支援サーバ２００の他の例である支援サーバ２００ｃの構成を示す図である。支援サーバ２００ｃは、複数のファイルを記憶する記憶部２８１、記憶部２８１に対するデータの記録、更新、検索などを行う制御部２８３、および制御部２８３に指示するインターフェース２８５で構成されている。支援サーバ２００ｃは、前述のＳａａＳの範疇に含まれるデータベース・サーバである。
【００４８】
クライアント１００が支援サーバ２００を使用する際には、クライアント１００の記憶部１０４にも記憶部２８１と同じ少なくとも１つのファイルが記憶されており、ジョブ処理部１０３が制御部２８３と同等の機能を果たし、ユーザ・インターフェース１０１がインターフェース２８５と同等の機能を果たすことが前提になる。
【００４９】
クライアント１００において、ユーザがユーザ・インターフェース１０１に特定のファイルを対象にして検索コマンドを入力すると、ジョブ処理部１０３は記憶部１０４を検索する。一方、パフォーマンス制御部１０７は当該コマンドを支援サーバ２００ｃに送る。支援サーバ２００ｃは検索結果をパフォーマンス制御部１０７に返送する。ユーザ・インターフェース１０１は、いずれか早く受け取った処理結果をディスプレイに表示することができる。
【００５０】
なお、図１から図５は本実施の形態を説明するために、本実施の形態に関連する主要なハードウエアおよびソフトウエアの構成を簡略化して記載したに過ぎないものである。ここまでの説明で言及した以外にも、クライアント１００や支援サーバ２００は多くの要素を含むがそれらは当業者には周知であり、本発明の説明には必要がないので言及しない。
【００５１】
［パフォーマンス向上の手順］
図６は、コンピュータ・システム１０において、クライアント１００のパフォーマンスを向上させる手順を示すフローチャートである。ブロック２０１では、コンピュータ・システム１０の実行環境を構築する。クライアント１０と支援サーバ２００の少なくともいずれかがネットワーク１１に接続されており、当該支援サーバ２００は、コマンドまたはコマンドと処理対象データを受け取ることでジョブの処理をしてクライアント１００に返送することができるようになっている。
【００５２】
ブロック２０３でクライアント１００のユーザ・インターフェース１０１がジョブ処理部１０３に対するコマンドを受け取る。ユーザ・インターフェース１０１は、コマンドをジョブ処理部１０３とパフォーマンス制御部１０７に送る。ブロック２０５でジョブ処理部１０３はジョブの処理を開始する。ブロック２０７で、パフォーマンス制御部１０７は、ジョブ処理部１０３と同時並行的に支援サーバ２００にユーザ・インターフェース１０１から受け取ったコマンドに対応するジョブを処理するように要求するか否かを判断する。なお、コマンドには、利用する支援サーバ２００を特定する情報およびアプリケーションを特定する情報も含んでいる。
【００５３】
支援サーバ２００に処理を要求する時点で、クライアント１００にとって支援サーバ２００から先に処理の結果が得られることは確定していない。その意味で支援サーバ２００に対するジョブの処理の依頼は投機的な処理の依頼ということができる。投機的な処理の依頼とは、クライアント１００がジョブ処理部１０３でジョブを処理し、かつ、支援サーバ２００から先に処理結果を得ることができることが確実でない状態で支援サーバ２００に処理を要求することを意味する。さらに投機的な処理の依頼とは、クライアント１００または支援サーバ２００のいずれか一方が途中まで処理したジョブを破棄する意味を含む。さらに投機的な処理の依頼とは、経験に基づいて支援サーバ２００を利用する場合の成功率を高めながら支援サーバ２００に処理を要求する意味も含む。
【００５４】
支援サーバ２００に処理を要求したときにジョブ処理部１０３での処理が先に完了した場合には、支援サーバ２００に対する処理要求のコマンドおよび処理中止のコマンド、さらには処理対象データを送信するためにネットワーク通信部１１１が無駄な電力を消費することになる。さらに、ネットワーク１１および支援サーバ２００のリソースを無駄に消費することにもなる。本実施の形態では、このような事態をできるだけ避けるために、支援サーバ２００の処理結果を利用する可能性が低いと想定できるジョブについては、支援サーバ２００に投機的な処理要求をしないことが望ましい。
【００５５】
支援サーバ２００に対する無駄な要求を避けるためのブロック２０７の手順を図７のフローチャートに基づいて説明する。ブロック２５１でパフォーマンス制御部１０７は、ユーザ・インターフェース１０１から受け取ったコマンドが、アプリケーション名、コマンドの種類および処理対象のデータ量のすべてがジョブ・リスト１０９に登録されたエントリーを満たしており、かつ、適用フラグが設定されているジョブ・タイプに適合するか否かを判断する。
【００５６】
パフォーマンス制御部１０７は、当該コマンドで処理する対象となる処理対象のデータ量をジョブ処理部１０３から取得する。ジョブ・タイプが適合する場合は、ブロック２１１に移行して、パフォーマンス制御部１０７はいずれかの支援サーバ２００に当該ジョブ・タイプを実行するように要求する。ただし、ジョブ・リスト１０９は、ユーザ・インターフェース１０１が支援サーバ２００のほうから早く処理結果を得られることを推定させるだけであり確定的ではない。したがって、ジョブ・リスト１０９を利用して支援サーバに処理を要求することは依然として投機的な行為といえる。
【００５７】
支援サーバ２００ａには、クライアント１００を完全にクローン化した仮想マシンが構築されている。パフォーマンス制御部１０７は、支援サーバ２００ａに処理を要求する場合は、ユーザ・インターフェース１０１から受け取ったコマンドを送るだけでよい。支援サーバ２００ｂには、ジョブの処理対象データが存在しない場合もある。支援サーバ２００ｂに処理を要求する場合は、パフォーマンス制御部１０７がユーザ・インターフェース１０１から受け取ったコマンドと処理対象となるデータを送る場合がある。支援サーバ２０１ｃに処理の要求をする場合は、パフォーマンス制御部１０７は検索を示すコマンドとキーワードを送るだけでよい。
【００５８】
ジョブ・タイプが適合しない場合は、ブロック２５３に移行する。ジョブ・リスト１０９に登録し、かつ適用フラグが設定されたジョブ・タイプは、ジョブ処理部１０３による処理よりも支援サーバ２００による処理のほうが、ユーザ・インターフェース１００が早く処理結果を得られると想定できるが、いずれが早いかは時間とともに変動する要素を含んでいるので適用フラグの設定されていないジョブ・タイプについても状況により投機的な処理を依頼する価値はあり得る。
【００５９】
適用フラグが設定されていないジョブ・タイプであってもクライアント１００の負荷率、クライアント１００と支援サーバ２００との間のデータ・トラフィック、および支援サーバ２００の負荷率によっては、支援サーバ２００に要求した方がクライアント１００は早く結果を得ることができる可能性が高くなる。ブロック２５３では、パフォーマンス制御部１０７は、支援サーバ２００に支援サーバ２００のＣＰＵ使用率を問い合わせる。
【００６０】
支援サーバ２００のＣＰＵ使用率が所定値未満のときは、支援サーバ２００の負荷が軽いため要求されたジョブを支援サーバ２００から先に受け取ることができる確率が高くなるのでブロック２１１に移行する。支援サーバ２００のＣＰＵ使用率が所定値以上の場合はブロック２５５に移行する。ブロック２５５では、パフォーマンス制御部１０７は支援サーバ２００に問い合わせて支援サーバ２００のＮＩＣにおけるデータ転送速度を調べる。支援サーバ２００と他のクライアント１００との間のトラフィックが少なく、支援サーバ２００のデータ転送速度が所定値以上のときは支援サーバ２００に要求した方がクライアント１００は早く結果を得ることができる確率が高まるのでブロック２１１に移行する。
【００６１】
支援サーバ２００のデータ転送速度が所定値未満のときはブロック２５７に移行して、パフォーマンス制御部１０７はＣＰＵ使用率測定部１０５からクライアント１００のＣＰＵ使用率を取得する。クライアント１００のＣＰＵ使用率が所定値以上の場合は、ジョブ処理部１０３においてＣＰＵが他のジョブを処理しているため、今回要求されたジョブを処理する時間が長くなり、支援サーバ２００で実行した方が早く結果を得られる確率が高まるのでブロック２１１に移行する。ＣＰＵ使用率が所定値未満の場合はブロック２５９に移行して、パフォーマンス制御部１０７は転送速度測定部１１３からネットワーク通信部１１１のデータ転送速度を取得する。
【００６２】
ネットワーク通信部１１１のデータ転送速度が所定値以上の場合は、支援サーバ２００に処理を要求した方がクライアント１００は早く結果を得られる確率が高まるのでブロック２１１に移行する。クライアント１００の転送速度が所定値未満の場合は、ブロック２０９に移行してパフォーマンス制御部１０７は支援サーバ２００への処理要求を中止する。ブロック２５３からブロック２５９までの判断は、必ずしもすべて実行する必要がなく、また、ジョブ・タイプによって判断するブロックおよび処理対象のデータ量の閾値を変えることもできる。
【００６３】
たとえば、支援サーバ２００ａに要求するジョブにおいて、ファイル・サーバ１７からダウンロードする処理対象データ量が多い場合は、ブロック２５５とブロック２５９だけで判断してもよい。このとき支援サーバ２００ａのデータ転送速度が速いほど、またクライン１００のデータ転送速度が遅いほど支援サーバ２００ａから早く処理結果を得る確率が高まる。あるいは、ジョブがＣＰＵに大きな負担を課すものである場合は、ブロック２５３とブロック２５７だけで判断してもよい。このとき支援サーバ２００ａのＣＰＵ使用率が低いほど、また、クライアント１００のＣＰＵ使用率が高いほど支援サーバ２００ａから早く処理結果を得る確率が高まる。ブロック２５３からブロック２５９における処理対象データ量の閾値はジョブ・タイプごとに変えてもよい。
【００６４】
支援サーバ２００のＣＰＵ使用率、支援サーバ２００におけるネットワーク１１に対するデータの転送速度、およびクライアント１００におけるＡＰ１３に対するデータの転送速度は、支援サーバ２００にジョブの処理を依頼したときに処理結果が戻るまでの時間に関連するパラメータに相当する。また、クライアント１００のＣＰＵ使用率は、ジョブ処理部１０３がジョブの処理を完了するまでの時間に関連するパラメータに相当する。
【００６５】
図６に戻って、ブロック２１３では、コマンドまたはコマンドと処理対象データを受け取った支援サーバ２００は、要求に基づいてジョブの処理をする。ブロック２１５では、パフォーマンス制御部１０７は先に支援サーバ２００から処理の結果を受け取ったか否かを判断する。パフォーマンス制御部１０７はジョブ・タイプが多量の処理結果のデータを受信するものである場合は、すべてのデータを受信したと判断した時点で処理の結果を受け取ったと判断する。
【００６６】
支援サーバ２００からの処理結果を先に受け取った場合は、パフォーマンス制御部１０７はブロック２１７でジョブ処理部１０３にそれまで行っていたジョブの処理を中止させる。ジョブ処理部１０３は、残りのジョブを処理しないことで、搭載するバッテリィの消耗を抑制することができる。ブロック２１９では、パフォーマンス制御部１０７は、支援サーバ２００から受け取った処理の結果をユーザ・インターフェース１０１に送る。ブロック２１７とブロック２１９は順番を入れ替えてもよい。
【００６７】
ブロック２２１では、パフォーマンス制御部１０７は今回のジョブ・タイプについて、支援サーバ２００で処理したほうがジョブ処理部１０３で処理するよりも早く結果を得ることができたという経験に基づいて、ジョブ・リスト１０９を更新する。パフォーマンス制御部１０７は適用フラグが設定されているジョブ・タイプについては適用フラグを維持するが、適用フラグが設定されていないジョブ・タイプについては適用フラグを設定する。その結果、新たに適用フラグが設定されたジョブ・タイプを次回に処理する場合は、パフォーマンス制御部１０７はブロック２５１で支援サーバ２００に同時並行的に処理を要求する。
【００６８】
ジョブ処理部１０３は、ジョブの処理を完了するかパフォーマンス制御部１０７から処理の中止コマンドを受け取るまでジョブの処理を継続する。ジョブ処理部１０３は対象となるジョブ・タイプの処理が完了したときに、パフォーマンス制御部１０３に通知する。ブロック２２３とブロック２１５では、支援サーバ２００と同時並行的にジョブを処理しているジョブ処理部１０３が先にジョブを処理するか否かをパフォーマンス制御部１０７が判断している。パフォーマンス制御部１０７は、支援サーバ２００から処理結果を受け取るよりも先にジョブ処理部１０３がジョブを終了した通知を受け取ったときは、ブロック２２５に移行して支援サーバ２００にジョブの処理を中止するコマンドを送る。
【００６９】
中止コマンドを受け取った支援サーバ２００は、ジョブの処理を中止して、それ以上の無駄なリソースの消費を避ける。また、支援サーバ２００は中止されたジョブの処理結果をクライアント１００に送ることもないので、ネットワーク１１に無駄なトラフィックも発生しない。ブロック２２７ではジョブ処理部１０３はユーザ・インターフェース１０１に処理結果を送る。ブロック２２５とブロック２２７は順番を入れ替えてもよい。ブロック２２９では、パフォーマンス制御部１０７は今回のジョブ・タイプについて、支援サーバ２００で処理するよりもジョブ処理部１０３で処理するほうが早く処理結果を得ることができたという経験に基づいて、ジョブ・リスト１０９を更新する。
【００７０】
パフォーマンス制御部１０７は適用フラグが設定されていないジョブ・タイプについては適用フラグを設定しない状態を維持するが、適用フラグが設定されていたジョブ・タイプについては適用フラグの設定を解除する。その結果、新たに適用フラグの設定が解除されたジョブ・タイプを次回に処理する場合は、パフォーマンス制御部１０７はブロック２５１〜ブロック２５９の手順を経ても支援サーバ２００に同時並行的な処理を要求しない場合がある。
【００７１】
ジョブ・リスト１０９は更新されながら、投機的な処理の精度が向上していく。すなわち、ジョブ・リスト１０９に登録されたジョブ・タイプについて支援サーバ２００に投機的に処理要求をしたときに、支援サーバ２００から先に処理結果を得る確率が向上する。さらに、支援サーバ２００から先に処理結果を得る確率が低いジョブ・タイプは最初からジョブ・リスト１０９に登録されないため、支援サーバおよびネットワーク１１のリソースを無駄に利用することがなくなる。
【００７２】
したがって、クライアント１００は支援サーバ２００およびネットワーク１１に投機的な処理をさせて無駄にリソースを消費することで、他のクライアントのサービスが低下する事態を最低限の範囲に留めながら、ネットワーク１１および支援サーバ２００の能力を有効に活用してコンピュータ・システム１０の全体のパフォーマンスを向上させることができる。上記の手順によれば、ユーザは特定のジョブを処理するにあたり何ら特定の操作をしないでも、クライアント１００が支援サーバ２００に処理の要求をする。
【００７３】
そして、クライアント１００が支援サーバ２００から先に処理結果を得た場合は、ユーザは支援サーバ２００の存在を認識することなくクライアント１００における間接的なパフォーマンス向上のメリットを享受することができる。また、ジョブ・リスト１０９は、適用フラグが設定されたジョブ・タイプについては支援サーバ２００に処理の要求をするというホワイト・リスト形式で構成したが、適用フラグが設定されたジョブ・タイプについては支援サーバに処理の要求をしないというブラック・リスト形式で構成することもできる。
【００７４】
本実施の形態によれば、クライアント１００を使用するユーザは所定のジョブを処理するに当たり、クライアント１００で実行するか支援サーバ２００に要求するかを判断する必要がない。ユーザはクライアント１００に対して通常の操作をするだけで、良好なパフォーマンスでレスポンスを得ることができる。また、支援サーバ２００に接続できない環境でもクライアント１００をスタンドアロン型として使用することで支障なく所定のジョブを処理することができる。
【００７５】
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることはいうまでもないことである。
【符号の説明】
【００７６】
１０…コンピュータ・システム
１００…クライアント
２００…支援サーバ
【図１】
0005357129.tif 000002
【図２】
0005357129.tif 000003
【図３】
0005357129.tif 000004
【図４】
0005357129.tif 000005
【図５】
0005357129.tif 000006
【図６】
0005357129.tif 000007
【図７】
0005357129.tif 000008
【図８】
0005357129.tif 000009