説明

コンピュータのパフォーマンスを向上させる方法およびコンピュータ

【課題】支援サーバに投機的な処理の要求をしてクライアントのパフォーマンスを向上する。
【解決手段】クライアント100と支援サーバ200はネットワーク11を経由して接続されている。クライアントは実行命令に基づいて特定のジョブの処理を開始する。このときクライアントは支援サーバに同一のジョブを処理する要求をする。クライアントは、支援サーバから受け取った特定のジョブの処理結果またはクライアントが処理した特定のジョブの処理結果のいずれか先に発生した処理結果を利用する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ネットワーク・サービスを利用してクライアントのパフォーマンスを向上させる技術に関し、さらに詳細にはサーバとクライアントのそれぞれにおける特定のジョブの処理に関する異質な特徴を組み合わせてクライアントにおいて最大のパフォーマンスを実現する方法に関する。
【背景技術】
【0002】
コンピュータの利用形態は、メイン・フレームによる集中処理からクライアント/サーバによる分散処理へと発展し、近年においては、インターネットやLANなどの性能の向上と低価格化によりネットワークを中心としたネットワーク・コンピューティングまたはクラウド・コンピューティングといわれる新しい集中処理に発展してきている。クラウド・コンピューティングは一般に、SaaS(Software as a Service)、PaaS(Platform as a Service)、およびIaaS(Infrastructure as a Service)という3つのタイプを含む。
【0003】
SaaSの利用形態では、ソフトウエアの提供者側のサーバでアプリケーション・ソフトウエアを稼働させ、ユーザはそのソフトウエアの機能をネットワーク経由でサービスとして利用する。PaaSの利用形態では、サーバにハードウエアやOSなどのプラットフォームまたはアプリケーション実行環境を提供し、ユーザはそこで自ら用意したアプリケーションやサービス・プロバイダが用意したアプリケーションを実行してネットワーク経由で結果を受け取る。IaaSの利用形態では、サーバに構築された仮想マシンでユーザが用意したOSとアプリケーションを実行する。
【0004】
特許文献1には、1台のマスタ・コンピュータと複数のスレーブ・コンピュータをネットワークで接続し、協調動作するようにしたクラスタ・コンピュータについて記載されている。クラスタ・コンピュータでは、マスタ・コンピュータで動作するアプリケーションが、並列処理が必要となる部分にさしかかると、マスタ・コンピュータは素材データを個々のスレーブ・コンピュータに分配した上、それぞれのスレーブ・コンピュータが担当する処理の範囲を決定し、処理の開始をそれぞれのスレーブ・コンピュータに指示する。処理を終えたスレーブ・コンピュータは、部分的な結果データをマスタ・コンピュータに送り、マスタ・コンピュータはそれらを統合して一つのまとまった結果データを得る。
【0005】
特許文献2は、ネットワークに接続された印刷制御装置と複数の印刷装置で構成される印刷制御システムにおいて、印刷制御装置が、各印刷装置の印刷性能および印刷状況に基づいて印刷完了予測時刻を計算して、分割印刷ジョブを各印刷装置にスケジューリングする技術が記載されている。特許文献3は、条件分岐命令に対応する条件が確定していない間、投機的に命令を処理してプログラムを高速に実行するプロセッサを開示する。内部で条件分岐命令の分岐の成否が判断されて、有効な実行結果はレジスタ・ファイルに格納されるが、無効な実行結果は消去される。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2009−187590号公報
【特許文献2】特開2009−123147号公報
【特許文献3】特開平5−224927号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
クラウド・コンピューティングでは、クライアントの負荷を部分的にネットワーク・サーバに分散することで軽減することができる。しかし、クラウド・コンピューティングは、特定のジョブの処理にあたってクライアントのパフォーマンスを最大化することを指向するものではない。クラウド・コンピューティングでは、同一のジョブをクライアントおよびサーバのいずれでも処理できる環境を構築することができる。その場合に、いずれで実行した方が短時間で処理を完了できるかの判断は簡単にはできない。
【0008】
その理由には、クライアントが特定のジョブを自ら処理する能力とサーバに処理を要求してサーバから結果を受け取るときのネットワークを含むサーバ側の能力の優劣がジョブの種類に応じて異なり、さらに、優劣関係が時間的に変動することが挙げられる。たとえば、クライアントは、CPUと周辺装置との間を通過するデータ・バスの帯域が広く安定性に優れているが、CPUやメイン・メモリの能力は制限されている。これに対して、クライアントがネットワーク経由でサーバを利用する場合は、サーバ自体のCPUやメイン・メモリの能力は高く拡張性もあるが、ネットワークの帯域が狭く安定性に欠ける。
【0009】
したがって、ジョブを処理するまでの時間をCPUの性能が支配するような場合はサーバの能力を活用した方が早く処理結果を得ることができるが、ネットワークの転送時間が支配するような場合はクライアントの能力を活用したほうが早く処理結果を得ることができる。さらに、マルチタスキング・システムを採用するクライアントでは特定のジョブがクライアントのリソースを他のジョブとの間で共有しており、また、サーバでは当該クライアントがサーバのリソースを他のクライアントと共有する。クライアントとサーバのどちらで処理することが優位かは、上記のリアルタイムで変動する要素により常に移り変わる。しかしながら、これまでのクラウド・コンピューティングでは、サーバを利用して処理するジョブをあらかじめ決めてからサーバのサービスを利用していた。
【0010】
近年、サーバを構築する費用が低下し、ネットワークの通信速度および安定性が向上してきたことにより、サーバのサービスが利用し易くなってきた。しかし前述のとおり、特定のジョブの処理にクライアントがサーバのサービスを利用できる環境において、当該ジョブの処理結果をクライアントが最も短時間で得るという課題を設定したときに、ジョブが発生した瞬間においては、クライアントが処理する場合とサーバに処理を要求してサーバから結果を得る場合のいずれが早いかは判断できないことが多い。
【0011】
このような場合に当該ジョブをクライアントが処理するのと同時並行的にサーバにも投機的に処理を要求しておき、早く処理が完了した方の結果を利用するといったようなジョブの処理方法は、リソースに無駄が生ずるためにこれまで採用されることはなかった。また、結果が予測できない処理を投機的に実行する方法は、特許文献3のようなプロセッサ内部の処理に限られていた。
【0012】
しかし、クライアントの機能が増強され搭載するプロセッサに比して高度な処理をする機会が増加したこと、および、サーバは比較的処理能力に余裕がある時間帯が多いことに着目すると、クライアントが特定のジョブの処理結果を最短時間で得るにはサーバのサービスを利用することが有効なことがわかってきた。このような状況の変化に伴い、新たなネットワーク・コンピューティングの形態を構築してクライアントに最大のパフォーマンスを発揮させる可能性に着目することは有意義である。
【0013】
そこで本発明の目的は、支援サーバに接続されたクライアントが最短時間でジョブの処理結果を取得する方法を提供することにある。さらに本発明の目的は、クライアントの消費電力を低減する方法を提供することにある。さらに本発明の目的は、同一の支援サーバに接続された複数のクライアントの全体的なパフォーマンスを向上する方法を提供することにある。さらに本発明の目的は、そのような方法を実現するコンピュータ・プログラム、コンピュータ、およびコンピュータ・システムを提供することにある。
【課題を解決するための手段】
【0014】
本発明は、クライアントのパフォーマンス向上を目指した新しいネットワーク・コンピューティングの形態を提供する。本発明は、クライアントとサーバがネットワークで接続され、クライアントが処理するジョブと同じジョブをサーバが処理できる環境で実現される。本発明のネットワーク・コンピューティングは、クライアントとサーバの異質な特徴を組み合わせて、クライアントのパフォーマンスを最大にするという意味で、これを以後、サーバ・アクセラレテッド・クライアント(SAC)ということにする。
【0015】
SACは、単一のサーバが特定のジョブ全体の処理をする一般的なサーバ/クライアント・システムや、複数のサーバが分割されたジョブをそれぞれ処理して最後に統合するクラスタ・コンピュータなどのようなこれまでの集中処理型のネットワーク・コンピューティングとは異なり、処理の主体はクライアントであって、サーバを補助的に利用する。
【0016】
クライアントが特定のジョブを自ら処理する場合と支援サーバに要求して処理結果を得る場合において、いずれから先に処理結果を得られるかを事前に確定することはできない場合が多い。サーバはCPUやメイン・メモリの能力が大きいが、内部リソースを他のクライアントが共有しており、また、ネットワークのデータ転送速度は時間的に変動し、さらにネットワークは常に切断のリスクを抱えている。
【0017】
SACでは、クライアントがサーバを利用したときにパフォーマンスの向上を図ることできることは確実ではないが、パフォーマンスの向上が期待できるという蓋然性がある場合には利用する価値がある点に着目して、同一の特定のジョブをクライアントが処理することに加えてサーバに対して投機的に同時並行で処理を依頼する。
【0018】
本発明の1の態様では、支援サーバにネットワーク経由で接続されたコンピュータがジョブを処理する際に、最短時間で処理結果を得ることができる方法を提供する。コンピュータは、実行命令に基づいて特定のジョブの処理を開始する。実行命令は、コンピュータの入力装置からまたはネットワークを通じて他のコンピュータから受け取ることができる。さらにコンピュータは実行命令に基づいて支援サーバに特定のジョブの処理を要求する。コンピュータは支援サーバから受け取った特定のジョブの処理結果またはコンピュータが処理した同一のジョブの処理結果のいずれか先に発生した処理結果を利用する。
【0019】
コンピュータは、支援サーバから先に処理結果を受け取った場合は自らの処理を途中で中止することができる。コンピュータは、自らの処理結果が先に発生した場合は、支援サーバに特定のジョブの処理を中止する命令を送ることができる。その結果、コンピュータまたは支援サーバのいずれかにおいて途中まで特定のジョブを処理するために費やしたリソースは無駄になるが、SACでは複数のジョブ全体でみたときに、支援サーバの能力を活用することでコンピュータが単独でジョブを処理するよりもパフォーマンスは必ず向上する。
【0020】
さらに、コンピュータでは支援サーバの結果を利用したときに特定のジョブの全体を処理しないので、消費電力の低減を図ることができる。その一方で、支援サーバは多くの時間でアイドル状態になっておりクライアントがリソースを消費してもその消費電力はほとんど増加しない。SACでは、ネットワーク側のリソースの消費よりもコンピュータが得られるパフォーマンスの向上および消費電力の低下の方が有利であるとの前提に立っている。ただし、サーバに接続されているクライアントを含めたシステム全体のリソース運用を最適化するために、本発明においては支援サーバから先に処理結果を得られる確率が高い場合に限り投機的な処理の要求をすることが望ましい。
【0021】
そのために、ジョブの処理を要求する際に、支援サーバに処理を要求するジョブを登録したジョブ・リストに基づいて要求をするか否かを判断することができる。ジョブ・リストのエントリーは、支援サーバから受け取った処理結果またはコンピュータにおける処理結果の先後に基づいて更新することができる。その結果、ジョブ・リストに登録されたジョブの処理を支援サーバに依頼すると投機が成功する確率が向上する。
【0022】
また処理を要求するか否かを判断する際に、支援サーバから特定のジョブの処理結果を得るまでの時間に関連するパラメータを測定して要求するか否かを判断することができる。このときパラメータには、支援サーバのCPU使用率、支援サーバにおけるネットワークに対するデータ転送速度、およびコンピュータにおけるネットワークに対するデータ転送速度などの要素を含むようにすることができる。これらの要素2つまたは3つを組み合わせて利用してもよい。
【0023】
また処理を要求するか否かを判断する際に、コンピュータのCPU使用率を測定してもよい。コンピュータのCPU使用率は、コンピュータが特定のジョブを処理するまでの時間に関連するパラメータに相当する。コンピュータは、バッテリィで動作しネットワークに無線で接続される無線端末装置である場合に、バッテリィの消耗を抑制することができるので都合がよい。
【0024】
支援サーバには、クライアントと同一のジョブを処理する実行環境が構築されている。支援サーバには、複数のクライアントの実行環境をそれぞれ仮想化した複数の仮想マシンを構築することができる。支援サーバには、クライアントに実装されたアプリケーション・プログラムの実行環境と同一の実行環境を構築することができる。さらに支援サーバは、クライアントと共有するファイルを有するデータベース・サーバとすることができる。
【発明の効果】
【0025】
本発明により、支援サーバに接続されたクライアントが最短時間でジョブの処理結果を取得する方法を提供することができた。さらに本発明により、クライアントの消費電力を低減する方法を提供することができた。さらに本発明により、同一の支援サーバに接続された複数のクライアントの全体的なパフォーマンスを向上する方法を提供することができた。さらに本発明により、そのような方法を実現するコンピュータ・プログラム、コンピュータ、およびコンピュータ・システムを提供することができた。
【図面の簡単な説明】
【0026】
【図1】SACを実現するコンピュータ・システムの概要を説明する図である。
【図2】クライアント100の構成を示す機能ブロック図である。
【図3】支援サーバ200aの構成を示す図である。
【図4】支援サーバ200bの構成を示す図である。
【図5】支援サーバ200cの構成を示す図である。
【図6】コンピュータ・システム10において、クライアント100のパフォーマンスを向上させる手順を示すフローチャートである。
【図7】支援サーバに処理の要求をするか否かを判断する手順を示すフローチャートである。
【図8】ジョブ・リストのデータ構造を示す図である。
【発明を実施するための形態】
【0027】
[コンピュータ・システム]
図1は、SACを実現するコンピュータ・システムの概要を説明する図である。コンピュータ・システム10は、複数のクライアント100、ネットワーク11、および支援サーバ200で構成されている。ネットワーク11は、有線および無線で接続されたLAN、WAN、インターネット、電話回線またはネットワーク専用回線などで構成することができる。ネットワーク11には支援サーバ200a、200b、200c、Webサーバ15、ファイル・サーバ17および無線基地局13が接続されている。
【0028】
以後、支援サーバ200a、200b、200cのいずれかを指す場合は、支援サーバ200ということにする。支援サーバ200はクライアント100が処理する特定のジョブと同一のジョブを処理する機能を備えている。Webサーバ15は、蓄積していたHTML文書や画像などの情報を、クライアント100または支援サーバ200のWebブラウザの要求に応じてネットワーク11を通じて送信する。
【0029】
ファイル・サーバ17は、RAID(Redundant Arrays of Inexpensive Disks)として構成された記憶装置に記憶されたファイルを、ネットワーク上のクライアント100および支援サーバ200が共有できるように提供する。無線基地局13には、無線で複数のクライアント100が接続されている。クライアント100のいくつかは有線でネットワーク11に接続されている。クライアント100は、支援サーバ200、Webサーバ15およびファイル・サーバ17に接続することができるパーソナル・コンピュータ、スマートフォン、または携帯電話などの無線端末装置とすることができる。クライアント100は、ネットワーク11に無線で接続されるタイプの場合は、バッテリィを搭載する。
【0030】
[クライアント]
図2は、クライアント100の構成を示す機能ブロック図である。図2の各要素は、CPU、メイン・メモリ、ハードディスク・ドライブ(HDD)、およびネットワーク・インターフェース・カード(NIC)などの周知のハードウエアおよびデバイス・ドライバ、オペレーティング・システム(OS)、およびアプリケーション・プログラム(アプリケーション)などの周知のソフトウエアを含んで構成されている。OSは、同時に複数のタスクを平行して実行するマルチタスク方式を採用する。
【0031】
パフォーマンス制御部107およびジョブ・リスト109は、それぞれ支援サーバ200の支援を受けてクライアント100のパフォーマンスを向上させるための新規なアプリケーションおよびファイルを含んで構成されている。ユーザ・インターフェース101は、キーボード、ポインティング・デバイス、およびディスプレイなどのハードウエアと、アプリケーションおよびOSのユーザ・インターフェース部分を含む。
【0032】
ユーザ・インターフェース101は、アプリケーションまたはOSに対するキーボードまたはリモート・コンピュータからのコマンドを受け取ってジョブ処理部103およびパフォーマンス制御部107に通知する。ユーザ・インターフェース101はジョブ処理部103がジョブを処理するための画面をディスプレイに表示する。ユーザ・インターフェース101は、ジョブ処理部103から受け取ったジョブの処理結果または支援サーバ200からパフォーマンス制御部107が受け取ったジョブの処理結果をディスプレイに表示する。
【0033】
ジョブ処理部103は、CPUおよびメイン・メモリなどの周知のハードウエアとアプリケーションおよびOSなどの周知のソフトウエアを含んで構成されている。ジョブ処理部103ではユーザ・インターフェース101からの指示に基づいて、アプリケーションまたはOSがジョブを処理して処理結果をユーザ・インターフェース101に送ったり、記憶部104に記憶したりする。ジョブには、データベースの検索、画像データのフィルタ処理、ストリーミング・データの合成などのCPUにとって高負荷となる処理から、ポインティング・デバイスやキーボードからの信号に対する応答処理などのような軽負荷となる処理までのあらゆるコンピュータ処理を含む。
【0034】
記憶部104はHDD、デバイス・ドライバおよびOSを含んで構成され、アプリケーション、OS、デバイス・ドライバなどの周知のプログラム、パフォーマンス制御部107を構成する新規のプログラム、ジョブ・リスト109、およびジョブ処理部103が処理した処理結果などを記憶する。CPU使用率測定部105は主としてOSで構成され、ジョブ処理部103において動作しているCPUの現在の使用率を測定する。ネットワーク通信部111は、有線または無線のNICおよびデバイス・ドライバを含んで構成されており、ネットワーク11を経由して支援サーバ200と通信するための処理をする。転送速度測定部113は主としてNICのデバイス・ドライバおよびOSで構成されており、ネットワーク通信部111における送信および受信のデータ転送速度を測定する。
【0035】
パフォーマンス制御部107は、ユーザ・インターフェース101から特定のジョブを処理するコマンドを受け取ったときに、ジョブ・リスト109を参照して支援サーバ200に当該処理を要求するか否かを判断して、要求すると決定した場合にはネットワーク通信部111を通じて支援サーバ200に処理を要求する。パフォーマンス制御部107は、さらに後に説明するように、CPU使用率測定部105および転送速度測定部113を参照してジョブ・リスト109から支援サーバ200への要求対象として漏れているジョブについて、支援サーバ200に処理を要求するか否かを判断する。
【0036】
パフォーマンス制御部107は、さらに、支援サーバ200に事前に問い合わせて支援サーバを利用したときに処理結果を得るまでの時間に関連するパラメータを取得してジョブ・リストから漏れているジョブについて、支援サーバ200に処理を要求するか否かを判断する。パフォーマンス制御部107は、支援サーバ200に処理を要求したジョブ・タイプの処理結果に基づいてジョブ・リスト109を更新する。パフォーマンス制御部107は、同一ジョブを同時並行的に実行している支援サーバ200またはジョブ処理部103のいずれかから処理結果を先に受け取った時点で、処理を終了していない方に処理の中止を指示する。パフォーマンス制御部107は、支援サーバ200からジョブの処理結果を受け取ったときに、ユーザ・インターフェース101に送る。
【0037】
ジョブ・リスト109は、アプリケーションの名称、コマンドの種類、および処理対象となるデータ量の閾値および適用フラグの4つのフィールドで構成されている。この4つのフィールドで構成される各レコードをジョブ・タイプということにする。図9は、ジョブ・リスト109のデータ構造を示す。ジョブ・リスト109には、あらかじめ支援サーバ200にジョブの処理を要求した方が、ジョブ処理部103で処理するよりもユーザ・インターフェース100が早く結果を得られる可能性がある複数のジョブ・タイプを登録している。処理対象となるデータ量の閾値は、データ量が多いほどCPUの負担が大きくなり、支援サーバ200で処理したほうが早く処理結果を得ることができるという特質を判断するために設けている。各レコードは、ユーザ・インターフェース101から受け取ったコマンドに基づいてジョブ処理部103が処理するときのジョブの処理時間に関連する情報である。
【0038】
支援サーバ200によるジョブの処理時間には、支援サーバ200のCPUが処理する時間および処理対象データまたは処理結果のデータがネットワーク11を通じて転送されるまでの時間も含まれる。適用フラグは、ジョブ・リストに登録されたジョブ・タイプの中で支援サーバに処理を要求した方が処理結果を早く得られる可能性が高いジョブ・タイプに対して設定される。したがってジョブ・リスト109には、キーボードからの入力をディスプレイに表示させる処理またはマウスのクリックに対する応答処理などの対話型処理をするジョブなどの明らかにCPUの負担が軽いものは最初から登録しない。
【0039】
ジョブ・リスト109にはユーザが複数のジョブ・タイプを登録しかつ適用フラグを設定する。そしてユーザは、画像データのフィルタ処理、レンダリングまたは映像ストリームの合成処理などのCPUに対して高い負荷を課すジョブ・タイプに適用フラグを設定することができる。適用フラグが設定されないジョブ・タイプについてもパフォーマンス制御部107の判断により、支援サーバの処理の要求が行われる場合がある。パフォーマンス制御部107は、ジョブ・リスト109を、適用フラグが設定されたジョブ・タイプについては、支援サーバ200に処理を要求するホワイト・リストとして使用する。適用フラグは後に説明するように、コンピュータ・システム11が動作を開始するに伴ってパフォーマンス制御部107によって更新される。更新された適用フラグが設定されたジョブ・リスト109に基づいて支援サーバ200に処理を要求すると支援サーバ200が先にジョブを処理する確率が高くなる。
【0040】
[支援サーバ]
図3は、支援サーバ200の一例である支援サーバ200aの構成を示す図である。支援サーバ200aは、CPU213、メイン・メモリ215、HDD217、およびNIC219などのハードウエアで構成されたハードウエア層211上で仮想化レイヤ209を実行し、仮想化レイヤ209上に複数の仮想マシン201が構成される。各仮想マシン201は、仮想ハードウエア207、ゲストOS205およびアプリケーション・プログラム203で構成されている。仮想ハードウエア207は、ハードウエア層211を仮想化してゲストOSに提供する。
【0041】
支援サーバ200aは、前述のIaaSの範疇に含まれ、各仮想マシン201ではいずれかのクライアント100と同じアプリケーションが同じ実行環境で動作している。クライアント100が支援サーバ200aに接続されたときに、支援サーバ200aにクライアント100の仮想マシン201が構築され、切断されたときに当該仮想マシン201は消滅する。
【0042】
仮想マシン201が構成されると、パフォーマンス制御部107は、前回の接続から今回の接続までの間にクライアント100の中で変化のあった、ハードウエア、ソフトウエア、および記憶部104のデータなどを仮想マシン201に反映させ、仮想マシン201にクライアント100と同じ動作環境を実現する。パフォーマンス制御部107がユーザ・インターフェース101から受け取ったコマンドを支援サーバ200aに送ると、支援サーバ200aにおけるジョブ処理部103を仮想化した要素がクライアントと同一のジョブを処理してパフォーマンス制御部107に返送することができる。
【0043】
ジョブがWebサーバ15から情報を検索する処理である場合は、パフォーマンス制御部107はユーザ・インターフェース101から受け取ったコマンドに応答して支援サーバ200aに同じ検索を要求することができる。また、ジョブ処理部103はユーザ・インターフェース101から受け取ったコマンドを、ネットワーク通信部111を経由してWebサーバ15に送って検索結果を得ることができる。要求を受けた支援サーバ200aは、Webサーバ15を検索した結果をパフォーマンス制御部107に送る。
【0044】
ジョブがファイル・サーバ17から画像ファイルをダウンロードして加工する処理の場合は、パフォーマンス制御部107は支援サーバ200aにダウンロードと加工を要求する。要求を受けた支援サーバ200aは、フィアル・サーバ17から画像ファイルをダウンロードして加工し、結果の画像ファイルをパフォーマンス制御部107に送る。また、ジョブ処理部103もネットワーク通信部111を経由してファイル・サーバ17から画像ファイルをダウンロードして加工する。
【0045】
図4は、支援サーバ200の他の例である支援サーバ200bの構成を示す図である。支援サーバ200bは、ハードウエア209、ハードウエア209をアプリケーション・プログラムに対して抽象化する抽象化レイヤ253および抽象化レイヤ253上で動作する複数のアプリケーション255で構成されている。支援サーバ200bは、前述のPaaSに対してクライアントが用意したアプリケーションやSaaSで提供されたアプリケーションを実行することで構成することができる。
【0046】
支援サーバ200bにクライアント100と同じアプリケーションの実行環境が構築されている場合は、パフォーマンス制御部107は支援サーバ200bにコマンドまたはコマンドと記憶部104に記憶していた処理対象データを一緒に送ることができる。支援サーバ200bのアプリケーション・プログラムはジョブを処理してパフォーマンス制御部107に処理結果を返送する。パフォーマンス制御部107は、ジョブ処理部103を通じて受け取った処理結果を記憶部104に保存することができる。
【0047】
図5は、支援サーバ200の他の例である支援サーバ200cの構成を示す図である。支援サーバ200cは、複数のファイルを記憶する記憶部281、記憶部281に対するデータの記録、更新、検索などを行う制御部283、および制御部283に指示するインターフェース285で構成されている。支援サーバ200cは、前述のSaaSの範疇に含まれるデータベース・サーバである。
【0048】
クライアント100が支援サーバ200を使用する際には、クライアント100の記憶部104にも記憶部281と同じ少なくとも1つのファイルが記憶されており、ジョブ処理部103が制御部283と同等の機能を果たし、ユーザ・インターフェース101がインターフェース285と同等の機能を果たすことが前提になる。
【0049】
クライアント100において、ユーザがユーザ・インターフェース101に特定のファイルを対象にして検索コマンドを入力すると、ジョブ処理部103は記憶部104を検索する。一方、パフォーマンス制御部107は当該コマンドを支援サーバ200cに送る。支援サーバ200cは検索結果をパフォーマンス制御部107に返送する。ユーザ・インターフェース101は、いずれか早く受け取った処理結果をディスプレイに表示することができる。
【0050】
なお、図1から図5は本実施の形態を説明するために、本実施の形態に関連する主要なハードウエアおよびソフトウエアの構成を簡略化して記載したに過ぎないものである。ここまでの説明で言及した以外にも、クライアント100や支援サーバ200は多くの要素を含むがそれらは当業者には周知であり、本発明の説明には必要がないので言及しない。
【0051】
[パフォーマンス向上の手順]
図6は、コンピュータ・システム10において、クライアント100のパフォーマンスを向上させる手順を示すフローチャートである。ブロック201では、コンピュータ・システム10の実行環境を構築する。クライアント10と支援サーバ200の少なくともいずれかがネットワーク11に接続されており、当該支援サーバ200は、コマンドまたはコマンドと処理対象データを受け取ることでジョブの処理をしてクライアント100に返送することができるようになっている。
【0052】
ブロック203でクライアント100のユーザ・インターフェース101がジョブ処理部103に対するコマンドを受け取る。ユーザ・インターフェース101は、コマンドをジョブ処理部103とパフォーマンス制御部107に送る。ブロック205でジョブ処理部103はジョブの処理を開始する。ブロック207で、パフォーマンス制御部107は、ジョブ処理部103と同時並行的に支援サーバ200にユーザ・インターフェース101から受け取ったコマンドに対応するジョブを処理するように要求するか否かを判断する。なお、コマンドには、利用する支援サーバ200を特定する情報およびアプリケーションを特定する情報も含んでいる。
【0053】
支援サーバ200に処理を要求する時点で、クライアント100にとって支援サーバ200から先に処理の結果が得られることは確定していない。その意味で支援サーバ200に対するジョブの処理の依頼は投機的な処理の依頼ということができる。投機的な処理の依頼とは、クライアント100がジョブ処理部103でジョブを処理し、かつ、支援サーバ200から先に処理結果を得ることができることが確実でない状態で支援サーバ200に処理を要求することを意味する。さらに投機的な処理の依頼とは、クライアント100または支援サーバ200のいずれか一方が途中まで処理したジョブを破棄する意味を含む。さらに投機的な処理の依頼とは、経験に基づいて支援サーバ200を利用する場合の成功率を高めながら支援サーバ200に処理を要求する意味も含む。
【0054】
支援サーバ200に処理を要求したときにジョブ処理部103での処理が先に完了した場合には、支援サーバ200に対する処理要求のコマンドおよび処理中止のコマンド、さらには処理対象データを送信するためにネットワーク通信部111が無駄な電力を消費することになる。さらに、ネットワーク11および支援サーバ200のリソースを無駄に消費することにもなる。本実施の形態では、このような事態をできるだけ避けるために、支援サーバ200の処理結果を利用する可能性が低いと想定できるジョブについては、支援サーバ200に投機的な処理要求をしないことが望ましい。
【0055】
支援サーバ200に対する無駄な要求を避けるためのブロック207の手順を図7のフローチャートに基づいて説明する。ブロック251でパフォーマンス制御部107は、ユーザ・インターフェース101から受け取ったコマンドが、アプリケーション名、コマンドの種類および処理対象のデータ量のすべてがジョブ・リスト109に登録されたエントリーを満たしており、かつ、適用フラグが設定されているジョブ・タイプに適合するか否かを判断する。
【0056】
パフォーマンス制御部107は、当該コマンドで処理する対象となる処理対象のデータ量をジョブ処理部103から取得する。ジョブ・タイプが適合する場合は、ブロック211に移行して、パフォーマンス制御部107はいずれかの支援サーバ200に当該ジョブ・タイプを実行するように要求する。ただし、ジョブ・リスト109は、ユーザ・インターフェース101が支援サーバ200のほうから早く処理結果を得られることを推定させるだけであり確定的ではない。したがって、ジョブ・リスト109を利用して支援サーバに処理を要求することは依然として投機的な行為といえる。
【0057】
支援サーバ200aには、クライアント100を完全にクローン化した仮想マシンが構築されている。パフォーマンス制御部107は、支援サーバ200aに処理を要求する場合は、ユーザ・インターフェース101から受け取ったコマンドを送るだけでよい。支援サーバ200bには、ジョブの処理対象データが存在しない場合もある。支援サーバ200bに処理を要求する場合は、パフォーマンス制御部107がユーザ・インターフェース101から受け取ったコマンドと処理対象となるデータを送る場合がある。支援サーバ201cに処理の要求をする場合は、パフォーマンス制御部107は検索を示すコマンドとキーワードを送るだけでよい。
【0058】
ジョブ・タイプが適合しない場合は、ブロック253に移行する。ジョブ・リスト109に登録し、かつ適用フラグが設定されたジョブ・タイプは、ジョブ処理部103による処理よりも支援サーバ200による処理のほうが、ユーザ・インターフェース100が早く処理結果を得られると想定できるが、いずれが早いかは時間とともに変動する要素を含んでいるので適用フラグの設定されていないジョブ・タイプについても状況により投機的な処理を依頼する価値はあり得る。
【0059】
適用フラグが設定されていないジョブ・タイプであってもクライアント100の負荷率、クライアント100と支援サーバ200との間のデータ・トラフィック、および支援サーバ200の負荷率によっては、支援サーバ200に要求した方がクライアント100は早く結果を得ることができる可能性が高くなる。ブロック253では、パフォーマンス制御部107は、支援サーバ200に支援サーバ200のCPU使用率を問い合わせる。
【0060】
支援サーバ200のCPU使用率が所定値未満のときは、支援サーバ200の負荷が軽いため要求されたジョブを支援サーバ200から先に受け取ることができる確率が高くなるのでブロック211に移行する。支援サーバ200のCPU使用率が所定値以上の場合はブロック255に移行する。ブロック255では、パフォーマンス制御部107は支援サーバ200に問い合わせて支援サーバ200のNICにおけるデータ転送速度を調べる。支援サーバ200と他のクライアント100との間のトラフィックが少なく、支援サーバ200のデータ転送速度が所定値以上のときは支援サーバ200に要求した方がクライアント100は早く結果を得ることができる確率が高まるのでブロック211に移行する。
【0061】
支援サーバ200のデータ転送速度が所定値未満のときはブロック257に移行して、パフォーマンス制御部107はCPU使用率測定部105からクライアント100のCPU使用率を取得する。クライアント100のCPU使用率が所定値以上の場合は、ジョブ処理部103においてCPUが他のジョブを処理しているため、今回要求されたジョブを処理する時間が長くなり、支援サーバ200で実行した方が早く結果を得られる確率が高まるのでブロック211に移行する。CPU使用率が所定値未満の場合はブロック259に移行して、パフォーマンス制御部107は転送速度測定部113からネットワーク通信部111のデータ転送速度を取得する。
【0062】
ネットワーク通信部111のデータ転送速度が所定値以上の場合は、支援サーバ200に処理を要求した方がクライアント100は早く結果を得られる確率が高まるのでブロック211に移行する。クライアント100の転送速度が所定値未満の場合は、ブロック209に移行してパフォーマンス制御部107は支援サーバ200への処理要求を中止する。ブロック253からブロック259までの判断は、必ずしもすべて実行する必要がなく、また、ジョブ・タイプによって判断するブロックおよび処理対象のデータ量の閾値を変えることもできる。
【0063】
たとえば、支援サーバ200aに要求するジョブにおいて、ファイル・サーバ17からダウンロードする処理対象データ量が多い場合は、ブロック255とブロック259だけで判断してもよい。このとき支援サーバ200aのデータ転送速度が速いほど、またクライン100のデータ転送速度が遅いほど支援サーバ200aから早く処理結果を得る確率が高まる。あるいは、ジョブがCPUに大きな負担を課すものである場合は、ブロック253とブロック257だけで判断してもよい。このとき支援サーバ200aのCPU使用率が低いほど、また、クライアント100のCPU使用率が高いほど支援サーバ200aから早く処理結果を得る確率が高まる。ブロック253からブロック259における処理対象データ量の閾値はジョブ・タイプごとに変えてもよい。
【0064】
支援サーバ200のCPU使用率、支援サーバ200におけるネットワーク11に対するデータの転送速度、およびクライアント100におけるAP13に対するデータの転送速度は、支援サーバ200にジョブの処理を依頼したときに処理結果が戻るまでの時間に関連するパラメータに相当する。また、クライアント100のCPU使用率は、ジョブ処理部103がジョブの処理を完了するまでの時間に関連するパラメータに相当する。
【0065】
図6に戻って、ブロック213では、コマンドまたはコマンドと処理対象データを受け取った支援サーバ200は、要求に基づいてジョブの処理をする。ブロック215では、パフォーマンス制御部107は先に支援サーバ200から処理の結果を受け取ったか否かを判断する。パフォーマンス制御部107はジョブ・タイプが多量の処理結果のデータを受信するものである場合は、すべてのデータを受信したと判断した時点で処理の結果を受け取ったと判断する。
【0066】
支援サーバ200からの処理結果を先に受け取った場合は、パフォーマンス制御部107はブロック217でジョブ処理部103にそれまで行っていたジョブの処理を中止させる。ジョブ処理部103は、残りのジョブを処理しないことで、搭載するバッテリィの消耗を抑制することができる。ブロック219では、パフォーマンス制御部107は、支援サーバ200から受け取った処理の結果をユーザ・インターフェース101に送る。ブロック217とブロック219は順番を入れ替えてもよい。
【0067】
ブロック221では、パフォーマンス制御部107は今回のジョブ・タイプについて、支援サーバ200で処理したほうがジョブ処理部103で処理するよりも早く結果を得ることができたという経験に基づいて、ジョブ・リスト109を更新する。パフォーマンス制御部107は適用フラグが設定されているジョブ・タイプについては適用フラグを維持するが、適用フラグが設定されていないジョブ・タイプについては適用フラグを設定する。その結果、新たに適用フラグが設定されたジョブ・タイプを次回に処理する場合は、パフォーマンス制御部107はブロック251で支援サーバ200に同時並行的に処理を要求する。
【0068】
ジョブ処理部103は、ジョブの処理を完了するかパフォーマンス制御部107から処理の中止コマンドを受け取るまでジョブの処理を継続する。ジョブ処理部103は対象となるジョブ・タイプの処理が完了したときに、パフォーマンス制御部103に通知する。ブロック223とブロック215では、支援サーバ200と同時並行的にジョブを処理しているジョブ処理部103が先にジョブを処理するか否かをパフォーマンス制御部107が判断している。パフォーマンス制御部107は、支援サーバ200から処理結果を受け取るよりも先にジョブ処理部103がジョブを終了した通知を受け取ったときは、ブロック225に移行して支援サーバ200にジョブの処理を中止するコマンドを送る。
【0069】
中止コマンドを受け取った支援サーバ200は、ジョブの処理を中止して、それ以上の無駄なリソースの消費を避ける。また、支援サーバ200は中止されたジョブの処理結果をクライアント100に送ることもないので、ネットワーク11に無駄なトラフィックも発生しない。ブロック227ではジョブ処理部103はユーザ・インターフェース101に処理結果を送る。ブロック225とブロック227は順番を入れ替えてもよい。ブロック229では、パフォーマンス制御部107は今回のジョブ・タイプについて、支援サーバ200で処理するよりもジョブ処理部103で処理するほうが早く処理結果を得ることができたという経験に基づいて、ジョブ・リスト109を更新する。
【0070】
パフォーマンス制御部107は適用フラグが設定されていないジョブ・タイプについては適用フラグを設定しない状態を維持するが、適用フラグが設定されていたジョブ・タイプについては適用フラグの設定を解除する。その結果、新たに適用フラグの設定が解除されたジョブ・タイプを次回に処理する場合は、パフォーマンス制御部107はブロック251〜ブロック259の手順を経ても支援サーバ200に同時並行的な処理を要求しない場合がある。
【0071】
ジョブ・リスト109は更新されながら、投機的な処理の精度が向上していく。すなわち、ジョブ・リスト109に登録されたジョブ・タイプについて支援サーバ200に投機的に処理要求をしたときに、支援サーバ200から先に処理結果を得る確率が向上する。さらに、支援サーバ200から先に処理結果を得る確率が低いジョブ・タイプは最初からジョブ・リスト109に登録されないため、支援サーバおよびネットワーク11のリソースを無駄に利用することがなくなる。
【0072】
したがって、クライアント100は支援サーバ200およびネットワーク11に投機的な処理をさせて無駄にリソースを消費することで、他のクライアントのサービスが低下する事態を最低限の範囲に留めながら、ネットワーク11および支援サーバ200の能力を有効に活用してコンピュータ・システム10の全体のパフォーマンスを向上させることができる。上記の手順によれば、ユーザは特定のジョブを処理するにあたり何ら特定の操作をしないでも、クライアント100が支援サーバ200に処理の要求をする。
【0073】
そして、クライアント100が支援サーバ200から先に処理結果を得た場合は、ユーザは支援サーバ200の存在を認識することなくクライアント100における間接的なパフォーマンス向上のメリットを享受することができる。また、ジョブ・リスト109は、適用フラグが設定されたジョブ・タイプについては支援サーバ200に処理の要求をするというホワイト・リスト形式で構成したが、適用フラグが設定されたジョブ・タイプについては支援サーバに処理の要求をしないというブラック・リスト形式で構成することもできる。
【0074】
本実施の形態によれば、クライアント100を使用するユーザは所定のジョブを処理するに当たり、クライアント100で実行するか支援サーバ200に要求するかを判断する必要がない。ユーザはクライアント100に対して通常の操作をするだけで、良好なパフォーマンスでレスポンスを得ることができる。また、支援サーバ200に接続できない環境でもクライアント100をスタンドアロン型として使用することで支障なく所定のジョブを処理することができる。
【0075】
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることはいうまでもないことである。
【符号の説明】
【0076】
10…コンピュータ・システム
100…クライアント
200…支援サーバ

【特許請求の範囲】
【請求項1】
支援サーバにネットワーク経由で接続されたコンピュータにおいて、ジョブを処理する方法であって、
実行命令に基づいて前記コンピュータが特定のジョブの処理を開始するステップと、
前記実行命令に基づいて前記コンピュータが前記支援サーバに前記特定のジョブの処理を要求するステップと、
前記コンピュータが前記支援サーバから受け取った前記特定のジョブの処理結果または前記コンピュータが処理した前記特定のジョブの処理結果のいずれか先に発生した処理結果を利用するステップと
を有する方法。
【請求項2】
前記コンピュータが処理した処理結果が先に発生した場合に、前記コンピュータが前記支援サーバに前記特定のジョブの処理を中止する命令を送るステップを有する請求項1に記載の方法。
【請求項3】
前記支援サーバから処理結果を先に受け取ったときには前記コンピュータは前記コンピュータにおける前記特定のジョブの処理を中止するステップを有する請求項1または請求項2に記載の方法。
【請求項4】
前記特定のジョブの処理を要求するステップが、前記支援サーバに処理を要求するジョブを登録したジョブ・リストに基づいて要求するか否かを判断するステップを含む請求項1から請求項3のいずれかに記載の方法。
【請求項5】
前記支援サーバから受け取った処理結果および前記コンピュータにおける処理結果の先後に基づいて前記ジョブ・リストを更新するステップを有する請求項4に記載の方法。
【請求項6】
前記特定のジョブの処理を要求するステップが、前記支援サーバから前記特定のジョブの処理結果を得るまでの時間に関連するパラメータを測定して要求するか否かを判断するステップを含む請求項1から請求項5のいずれかに記載の方法。
【請求項7】
前記パラメータが、前記支援サーバのCPU使用率、前記支援サーバにおける前記ネットワークに対するデータ転送速度、および前記コンピュータにおける前記ネットワークに対するデータ転送速度のいずれか1つまたは複数の要素の組み合わせからなる請求項6に記載の方法。
【請求項8】
前記特定のジョブの処理を要求するステップが、前記コンピュータのCPU使用率を測定して要求するか否かを判断するステップを含む請求項1から請求項7のいずれかに記載の方法。
【請求項9】
支援サーバにネットワーク経由で接続されたコンピュータであって、
前記支援サーバに接続するためのネットワーク通信部と、
ユーザ・インターフェースからの指示に基づいて特定のジョブを処理するジョブ処理部と、
前記ユーザ・インターフェースからの指示に基づいて前記支援サーバに前記特定のジョブの処理を要求し、前記ジョブ処理部が前記特定のジョブの処理を完了するよりも先に前記支援サーバから前記特定のジョブの処理の結果を受け取ったときに前記ジョブ処理部による前記特定のジョブの処理を中止させるパフォーマンス制御部と
を有するコンピュータ。
【請求項10】
前記パフォーマンス制御部は、前記支援サーバから処理の結果を受け取るよりも先に前記ジョブ処理部が処理を完了したときに、前記支援サーバに前記特定のジョブの処理を中止する命令を送る請求項9に記載のコンピュータ。
【請求項11】
前記コンピュータがバッテリィで動作し前記ネットワークに無線で接続される請求項9または請求項10に記載のコンピュータ。
【請求項12】
クライアントと支援サーバで構成されたコンピュータ・システムであって、
クライアントから要求されたジョブを処理して前記クライアントに処理結果を送ることができる支援サーバと、
特定のジョブを処理するジョブ処理部と、前記支援サーバに前記特定のジョブを同時並行的に処理することを要求しいずれか先に得た処理結果を利用するパフォーマンス制御部とを含むクライアントと
を有するコンピュータ・システム。
【請求項13】
前記支援サーバは、複数のクライアントの実行環境をそれぞれ仮想化した複数の仮想マシンが構築されている請求項12に記載のコンピュータ・システム。
【請求項14】
前記支援サーバは、前記クライアントに実装されたアプリケーション・プログラムの実行環境と同一の実行環境が構築されている請求項12に記載のコンピュータ・システム。
【請求項15】
前記支援サーバが、前記クライアントと共有するファイルを有するデータベース・サーバである請求項12に記載のコンピュータ・システム。
【請求項16】
支援サーバにネットワーク経由で接続されたコンピュータに、
実行命令に基づいて特定のジョブの処理を開始する機能と、
前記実行命令に基づいて前記支援サーバに前記特定のジョブの処理を要求するか否かを判断する機能と、
要求すると判断したときに前記支援サーバに前記特定のジョブの処理を要求する機能と、
前記支援サーバから受け取った前記特定のジョブの処理結果または前記コンピュータが処理した前記特定のジョブの処理結果のいずれか先に発生した処理結果を利用する機能と
を実現させるコンピュータ・プログラム。
【請求項17】
いずれか一方の処理結果が先に発生したときに他方の処理を中止させる機能を実現させる請求項16に記載のコンピュータ・プログラム。
【請求項18】
前記判断する機能が、前記支援サーバおよび前記コンピュータまたはいずれか一方の負荷率およびデータ転送速度を判断する機能を含む請求項16または請求項17に記載のコンピュータ・プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2012−89044(P2012−89044A)
【公開日】平成24年5月10日(2012.5.10)
【国際特許分類】
【出願番号】特願2010−237104(P2010−237104)
【出願日】平成22年10月22日(2010.10.22)
【出願人】(505205731)レノボ・シンガポール・プライベート・リミテッド (292)
【復代理人】
【識別番号】100106699
【弁理士】
【氏名又は名称】渡部 弘道
【復代理人】
【識別番号】100077584
【弁理士】
【氏名又は名称】守谷 一雄