(57)【要約】【課題】１つのサーバプロセスが類似するコマンドの組を連続して処理すると、ソフトウエアにおける仮想的なリソースに対するアクセスが競合してコンテンションが発生した。【解決手段】受信したコマンドを複数のサーバプロセス間で負荷分散する情報処理装置であって、処理済みのコマンドの内容と当該コマンドの処理のレスポンス時間とを含む履歴を履歴データベースに記録する履歴記録部と、履歴データベースに記録された履歴に基づいて、処理すべきコマンドの組を一のサーバプロセスに割り当てた場合に、基準以上の負荷がかかるか否かを予測する予測部と、コマンドの組の処理に基準以上の負荷がかかると予測したことに応じて、処理すべきコマンドの組に含まれる少なくとも１つのコマンドを、他のサーバプロセスに割り当てる割当部とを備える情報処理装置。【選択図】図１
2014120097.tif 000002
【特許請求の範囲】
【請求項１】
受信したコマンドを複数のサーバプロセス間で負荷分散する情報処理装置であって、
処理済みのコマンドの内容と当該コマンドの処理のレスポンス時間とを含む履歴を履歴データベースに記録する履歴記録部と、
前記履歴データベースに記録された履歴に基づいて、処理すべきコマンドの組を一のサーバプロセスに割り当てた場合に、基準以上の負荷がかかるか否かを予測する予測部と、
前記コマンドの組の処理に基準以上の負荷がかかると予測したことに応じて、処理すべきコマンドの組に含まれる少なくとも１つのコマンドを、他のサーバプロセスに割り当てる割当部と、
を備える情報処理装置。
【請求項２】
前記予測部は、一のサーバプロセスにおいて、処理中のコマンドの組に新たに受信した少なくとも１つのコマンドを加えた場合に、基準以上の負荷がかかるか否かを予測する請求項１に記載の情報処理装置。
【請求項３】
前記割当部は、一のサーバプロセスが処理中のコマンドの組に新たに受信した少なくとも１つのコマンドの組を加えたコマンドの組を一のサーバプロセスに割り当てた場合に基準以上の負荷がかかると予測したことに応じて、新たに受信した少なくとも１つのコマンドの組を、他のサーバプロセスに割り当てる請求項２に記載の情報処理装置。
【請求項４】
処理すべきコマンドの組を一のサーバプロセスに割り当てた場合に、基準以上のレスポンス時間となると予測されたことに応じて、前記割当部は、処理すべきコマンドの組に含まれる少なくとも１つのコマンドを、他のサーバプロセスに割り当てる請求項１から３のいずれか一項に記載の情報処理装置。
【請求項５】
処理すべきコマンドの組に含まれる少なくとも１つのコマンドを他のサーバプロセスに割り当てても当該他のサーバプロセスの負荷が基準以上とならないことを条件として、前記割当部は、当該少なくとも１つのコマンドを当該他のサーバプロセスに割り当てる請求項１から４のいずれか一項に記載の情報処理装置。
【請求項６】
それぞれが少なくとも１つのクライアントからのコマンドを受け付ける複数のフロントエンドサーバプロセスを実行するフロントエンド処理部と、
バックエンドサーバプロセスを実行するバックエンド処理部と、
を備え、
前記割当部は、
処理すべきコマンドの組を一のフロントエンドサーバプロセスに割り当てた場合に前記コマンドの組の処理に基準以上の負荷がかかると予測したことに応じて、処理すべきコマンドの組に含まれる少なくとも１つのコマンドの処理を、バックエンドサーバプロセスに割り当て、
前記バックエンドサーバプロセスは、前記少なくとも１つのコマンドの処理結果を、前記一のフロントエンドサーバプロセスに返信する
請求項１から５のいずれか一項に記載の情報処理装置。
【請求項７】
複数のクライアントを前記複数のフロントエンドサーバプロセスに対して負荷分散する負荷分散部を更に備え、
前記フロントエンド処理部は、前記複数のフロントエンドサーバプロセスのそれぞれに負荷分散されたクライアントからのコマンドを処理する
請求項６に記載の情報処理装置。
【請求項８】
前記割当部は、新たに受信した少なくとも１つのコマンドの組を一のサーバプロセスに割り当てた場合に、基準以上の負荷がかかると予測したことに応じて、当該コマンドの組の処理を、バックエンドサーバプロセスに割り当てる請求項６または７に記載の情報処理装置。
【請求項９】
受信したコマンドを複数のサーバプロセス間で負荷分散する情報処理装置としてコンピュータを機能させるプログラムであって、
当該プログラムは、前記コンピュータを、
処理済みのコマンドの内容と当該コマンドの処理のレスポンス時間とを含む履歴を履歴データベースに記録する履歴記録部と、
前記履歴データベースに記録された履歴に基づいて、処理すべきコマンドの組を一のサーバプロセスに割り当てた場合に、基準以上の負荷がかかるか否かを予測する予測部と、
前記コマンドの組の処理に基準以上の負荷がかかると予測したことに応じて、処理すべきコマンドの組に含まれる少なくとも１つのコマンドを、他のサーバプロセスに割り当てる割当部として機能させる、
プログラム。
【請求項１０】
受信したコマンドを複数のサーバプロセス間で負荷分散する情報処理方法であって、
処理済みのコマンドの内容と当該コマンドの処理のレスポンス時間とを含む履歴を履歴データベースに記録する履歴記録段階と、
前記履歴データベースに記録された履歴に基づいて、処理すべきコマンドの組を一のサーバプロセスに割り当てた場合に、基準以上の負荷がかかるか否かを予測する予測段階と、
前記コマンドの組の処理に基準以上の負荷がかかると予測したことに応じて、処理すべきコマンドの組に含まれる少なくとも１つのコマンドを、他のサーバプロセスに割り当てる割当段階と、
を備える情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、プログラム、及び、情報処理方法に関する。
【背景技術】
【０００２】
サーバプロセスのハードウエア資源の使用率を考慮して、コマンド処理の負荷分散をする方法が知られている（例えば、特許文献１参照）。
［特許文献１］  特開２００９−２３７７４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかし、１つのサーバプロセスが類似するコマンドの組を連続して処理すると、ソフトウエアにおける仮想的なリソースに対するアクセスが競合してコンテンションが発生する可能性がある。
【課題を解決するための手段】
【０００４】
本発明の第１の態様においては、受信したコマンドを複数のサーバプロセス間で負荷分散する情報処理装置であって、処理済みのコマンドの内容と当該コマンドの処理のレスポンス時間とを含む履歴を履歴データベースに記録する履歴記録部と、履歴データベースに記録された履歴に基づいて、処理すべきコマンドの組を一のサーバプロセスに割り当てた場合に、基準以上の負荷がかかるか否かを予測する予測部と、コマンドの組の処理に基準以上の負荷がかかると予測したことに応じて、処理すべきコマンドの組に含まれる少なくとも１つのコマンドを、他のサーバプロセスに割り当てる割当部と、を備える情報処理装置、及び、当該情報処理装置で用いられるプログラム及び情報処理方法を提供する。
【０００５】
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではない。また、これらの特徴群のサブコンビネーションもまた、発明となりうる。
【図面の簡単な説明】
【０００６】
【図１】本実施形態の情報処理装置１０の構成を示す。
【図２】本実施形態の情報処理装置１０の情報処理の第１のフローを示す。
【図３】複数のコマンドＡ〜Ｆの処理時間の例を示す。
【図４】図２のフローに係る情報処理の概要を示す。
【図５】本実施形態の情報処理装置１０の情報処理の第２のフローを示す。
【図６】本実施形態の情報処理装置１０の情報処理の第３のフローを示す。
【図７】図６のフローに係る情報処理の概要を示す。
【図８】コンピュータ１９００のハードウエア構成の一例を示す。
【発明を実施するための形態】
【０００７】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【０００８】
図１は、本実施形態の情報処理装置１０の構成を複数のクライアント２０、３０及び４０と共に示す。情報処理装置１０は、複数のクライアント２０等（２０、３０及び４０）から受信したコマンドを複数のサーバプロセス間で負荷分散する。ここで、情報処理装置１０は、各サーバプロセスで実行したコマンドの組合せに応じて負荷を履歴から予測し、コマンドの組合せに依存してサーバプロセスに発生する、主にソフトウエア上のコンテンションを低減する。
【０００９】
クライアント２０等は、ＧＵＩ又はＣＵＩ上でユーザによる操作を入力させ、操作に応じたコマンド（又はコマンドの組）を情報処理装置１０へ送信する。クライアント２０等は、コンピュータ端末又は携帯情報端末等であってよく、サーバプロセスと対応するクライアントプロセスを実行することにより、クライアント−サーバプログラムを実行してもよい。
【００１０】
情報処理装置１０は、クライアント２０等からコマンドを受け取る。情報処理装置１０は、例えば、クライアント２０等からコマンドを受信してコマンドに応じた処理をするサーバコンピュータであってよく、複数のサーバコンピュータを用いて構成された情報システムであってよい。
【００１１】
情報処理装置１０は、フロントエンド処理部１１０、負荷分散部１０２、バックエンド処理部１２０、履歴記録部１３０、予測部１３２、及び、割当部１３４を備える。
【００１２】
負荷分散部１０２は、複数のクライアント２０等をフロントエンド処理部１１０が実行する複数のフロントエンドサーバプロセス１１２等（１１２、１１４及び１１６）に対して負荷分散する。例えば、負荷分散部１０２は、サーバプロセスが割り当てられていないクライアント２０からログイン要求を受信し、ログイン処理を実行する。
【００１３】
その後、負荷分散部１０２は、クライアント２０を、後述するフロントエンド処理部１１０が実行する複数のフロントエンドサーバプロセス１１２等のうちいずれか一のフロントエンドサーバプロセスに割り当てる。負荷分散部１０２は、割り当てたフロントエンドサーバプロセスの情報をフロントエンド処理部１１０に供給する。
【００１４】
フロントエンド処理部１１０は、それぞれが少なくとも１つのクライアント２０等からのコマンドを受け付ける複数のフロントエンドサーバプロセス１１２等を実行する。例えば、フロントエンド処理部１１０は、複数のクライアント２０等からコマンド又はコマンドの組を受け取り、情報処理装置１０が有する１又は複数のＣＰＵ等により、複数のクライアント２０等からのコマンドの処理を並列または並行して実行する。
【００１５】
フロントエンド処理部１１０は、複数のフロントエンドサーバプロセス１１２等のそれぞれの処理において、それぞれのフロントエンドサーバプロセス１１２等に割り当てられたクライアントからのコマンドを処理する。図１においては、フロントエンド処理部１１０は、フロントエンドサーバプロセス１１２に割り当てられた３つのクライアント３０から受信した少なくとも１つのコマンド又は少なくとも１つのコマンドの組（「受信コマンド」とする）を処理し、フロントエンドサーバプロセス１１６に割り当てられた２つのクライアント４０からの受信コマンドを処理している。
【００１６】
フロントエンド処理部１１０は、フロントエンドサーバプロセス１１２等によるコマンドの処理の結果を、それぞれのフロントエンドサーバプロセス１１２等に割り当てられたクライアント３０等に送信する。また、フロントエンド処理部１１０は、フロントエンドサーバプロセス１１２等に割り当てられたコマンドを他のフロントエンドサーバプロセス１１２等に転送することもできる。
【００１７】
また、フロントエンド処理部１１０は、フロントエンドサーバプロセス１１２等に割り当てられた受信コマンドの少なくとも１つのコマンドを、バックエンド処理部１２０のバックエンドサーバプロセス１２２に転送し、バックエンドサーバプロセス１２２から当該コマンドの処理の結果を受け取ってもよい。また、フロントエンド処理部１１０は、処理済みのコマンドの内容、当該コマンドの実行時刻、及び当該コマンドの処理のレスポンス時間を含む履歴を履歴記録部１３０に提供する。
【００１８】
バックエンド処理部１２０は、バックエンドサーバプロセス１２２を実行する。バックエンド処理部１２０は、バックエンドサーバプロセス１２２において、一のフロントエンドサーバプロセス１１２等から少なくとも１つのコマンドの処理要求の転送を受けて、当該コマンドを実行し、実行したコマンドの処理結果を、要求元のフロントエンドサーバプロセス１１２等に返信する。また、バックエンド処理部１２０は、処理済みのコマンドの内容、当該コマンドの実行時刻、及び当該コマンドの処理のレスポンス時間を履歴記録部１３０に提供する。
【００１９】
履歴記録部１３０は、フロントエンド処理部１１０及びバックエンド処理部１２０から、処理済みのコマンドの内容、当該コマンドの実行時刻、及び、当該コマンドの処理のレスポンス時間とを含む履歴を受け取り、当該履歴を履歴データベースに記録する。履歴記録部１３０は、履歴において、コマンドの内容、実行時刻、及びレスポンス時間とを対応付けて記録する。
【００２０】
予測部１３２は、処理すべきコマンドの組を一のフロントエンドサーバプロセス１１２等に割り当てた場合に、基準以上の負荷がかかるか否かを、履歴記録部１３０の履歴データベースに記録された履歴に基づいて予測する。例えば、予測部１３２は、処理すべきコマンドの組を一のフロントエンドサーバプロセス１１２等に割り当てた場合に、基準以上のレスポンス時間となるか否かを予測することにより負荷を予測してよい。
【００２１】
さらに、予測部１３２は、例えば、一のフロントエンドサーバプロセス１１２等にコマンドの組を割り当てると基準以上の負荷がかかるような場合において、処理すべきコマンドの組に含まれる少なくとも１つのコマンドを、一のフロントエンドサーバプロセス１１２等とは異なる他のフロントエンドサーバプロセス１１４等に割り当てた場合に当該他のフロントエンドサーバプロセス１１４等の負荷が基準以上となるか否かを予測してよい。予測部１３２は、予測した結果を割当部１３４に供給する。
【００２２】
割当部１３４は、予測部１３２が処理すべきコマンドの組を一のフロントエンドサーバプロセス１１２等に割り当てた場合にコマンドの組の処理に基準以上の負荷がかかると予測したことに応じて、一のフロントエンドサーバプロセス１１２等が処理すべきコマンドの組に含まれる少なくとも１つのコマンドを、他のサーバプロセス等に割り当てる。
【００２３】
例えば、割当部１３４は、一のフロントエンドサーバプロセス１１２等が処理すべきコマンドの組に含まれる少なくとも１つのコマンドを、一のフロントエンドサーバプロセス１１２等とは異なる他のフロントエンドサーバプロセス１１４等、又は、バックエンドサーバプロセス１２２等に割り当ててよい。
【００２４】
このように情報処理装置１０は、クライアントから受信コマンドを受け取った結果、一のフロントエンドサーバプロセス１１２等が処理すべきコマンドの組のレスポンス時間が基準以上となると予測した場合に、少なくとも１つのコマンドの処理を他のサーバプロセスに割り当てる。これにより、情報処理装置１０によれば、一のフロントエンドサーバプロセス１１２等において負荷が大きくなると予測されるコマンドの組を処理させることを防ぎ、主にコマンドの組合せ等に応じてコンテンションが発生することを低減することができる。
【００２５】
例えば、従来のクライアントサーバプログラムでは、サーバコンピュータが、一のサーバプロセスで実行されるスレッドで特定の組合せのコマンドを処理すると、リクエストを処理するキュー又はストレージを管理するコントロールブロック等の仮想的なリソースにアクセスが集中し、コンテンションが発生してレスポンスが悪化することがあった。
【００２６】
一例として、サーバコンピュータがストレージに対するＧｅｔとＦｒｅｅを実行するコマンドを１秒間に数千回等多くの回数処理する場合、ストレージ（ハードウエア資源）自体の使用率は低くても、ストレージを管理するコントロールブロックへのアクセスが集中するためにコンテンションが生じて、コマンドのレスポンス時間が長くなることがあった。本実施形態の情報処理装置１０は、ハードウエア資源の使用率に応じた負荷分散とは別に特定のコマンドの組合せにより生じる負荷にも対応可能とし、このようなコンテンションの発生を予防する。
【００２７】
図２は、本実施形態の情報処理装置１０の情報処理の第１のフローを示す。第１のフローは、クライアントからのコマンドを一のフロントエンドサーバプロセス１１２等に割り当てた場合にレスポンス時間が基準以上になると判断した場合に、少なくとも１つのコマンドの処理を他のフロントエンドサーバプロセス１１４等に処理させる場合のフローを示す。情報処理装置１０は、Ｓ１０２からＳ１２２までの処理を実行することにより、受信したコマンドを複数のフロントエンドサーバプロセス１１２等間で負荷分散する。
【００２８】
まず、Ｓ１０２において、負荷分散部１０２は、情報処理装置１０上において、デーモンプロセスを実行することにより、サーバプロセスが割り当てられていないクライアント２０からログイン要求を受信し、クライアント２０のログイン処理を実行する。
【００２９】
次に、Ｓ１０４において、負荷分散部１０２は、クライアント２０をフロントエンド処理部１１０が実行する複数のフロントエンドサーバプロセス１１２等のうちいずれか一のフロントエンドサーバプロセス１１２に割り当てる。負荷分散部１０２は、割り当てたフロントエンドサーバプロセス１１２の情報をフロントエンド処理部１１０に供給する。
【００３０】
次に、Ｓ１０５において、フロントエンド処理部１１０が、クライアント２０からコマンドを受信する。例えば、フロントエンド処理部１１０は、クライアント２０におけるユーザの操作に対応した受信コマンドを受信する。
【００３１】
一例として、フロントエンド処理部１１０は、クライアント２０から、情報処理装置１０が有するファイル（dataset)をオープンするためのコマンドの組として、コマンドＡからコマンドＥから構成されるコマンドの組を受信する。
【００３２】
コマンドＡ：C_GET_MEMBER_ATTRIBUTE: parameter=dataset name with member name
コマンドＢ： C_LIST_DATASET:  parameter=dataset name
コマンドＣ：C_QUERY_DATASETS:  parameter=hlq
コマンドＤ：C_LOCK_AND_DOWNLOAD_MEMBER: parameter=dataset name with member name
コマンドＥ：C_GET_MEMBER_ATTRIBUTE: parameter=dataset name with member name
【００３３】
また、別の一例として、フロントエンド処理部１１０は、クライアント２０から、最初がTAKATSUで始まるファイル（dataset）をフィルタで指定し、当該ファイル（dataset）の中の文字列testを探すためのコマンドの組として、コマンドＦからコマンドＨの組を受信する。
【００３４】
コマンドＦ：C_SEARCH:  parameter=filter (e.g.  TAKATSU.*), search string=test*
コマンドＧ：C_GET_MEMBER_ATTRIBUTE: parameter=dataset name with member name
コマンドＨ：C_LIST_DATASET:  parameter=dataset name
【００３５】
フロントエンド処理部１１０は、コマンドの種類及びパラメータを含むコマンドを受信してよい。例えば、コマンドＡにおいて、C_GET_MEMBER_ATTRIBUTEはコマンドの種類を示し、dataset name with member nameはパラメータを示す。フロントエンド処理部１１０は、受信した１以上のコマンドを予測部１３２に供給する。
【００３６】
次にＳ１０６において、予測部１３２は、処理すべきコマンドの組を一のフロントエンドサーバプロセス１１２（例えば、クライアントが割り当てられたフロントエンドサーバプロセス）に割り当てた場合に、一のフロントエンドサーバプロセス１１２に基準以上のレスポンス時間となるか否かを、履歴記録部１３０の履歴データベースに記録された履歴に基づいて予測する。
【００３７】
ここで、予測部１３２は、（１）Ｓ１０５で新たに受信した受信コマンド、又は、（２）一のフロントエンドサーバプロセス１１２が既に処理中のコマンドの組に、受信コマンドを加えて生成されるコマンドの組を処理すべきコマンドの組として負荷を予測してよい。
【００３８】
例えば、予測部１３２は、処理すべきコマンドの組に含まれる各コマンドと同一又は類似するコマンド（「類似コマンド」とする）を履歴データベースから検索する。予測部１３２は、処理すべきコマンドの組の少なくとも一部のコマンドに対応する類似コマンドのみを含む類似コマンドの組が同じ期間内に実行された履歴がある場合には、その場合における各類似コマンドのレスポンス時間等の負荷と、類似コマンドの組のうち類似コマンドの一部を類似コマンド以外で置き換えた他の組合せを実行した場合における、各類似コマンドの負荷とを比較する。
【００３９】
より具体的には、処理すべきコマンドの組に対応する類似コマンドの組を実行した場合のレスポンス時間（複数の場合には平均レスポンス時間又は最大／最小レスポンス時間、「類似コマンドパターンレスポンス時間」とする）が、他の組合せで実行した場合のレスポンス時間（「他コマンドパターンレスポンス時間」とする）と比較し、基準以上となるか否かを予測する。
【００４０】
例えば、予測部１３２は、類似コマンドパターンレスポンス時間が他コマンドパターンレスポンス時間に一定の係数をかけた時間以上であるか否かを判断することにより、処理すべきコマンドの組を一のフロントエンドサーバプロセス１１２に割り当てた場合に、予め定められた基準以上のレスポンス時間となるか否かを判断する。予測部１３２は、予測した結果を割当部１３４に供給する。
【００４１】
また、予測部１３２は、履歴記憶部１３０の履歴データベースに基づいて、同じ期間内に実行するとレスポンス時間が基準以上となるような、特定の２つのコマンド／コマンドの組の組合せを予め検出しておいてよい。コマンド／コマンドの組の組合せは、履歴データベースに記録される、処理されたコマンドの組の全体又は一部であってよい。予測部１３２は、処理すべきコマンドの組が、検出した２つのコマンド／コマンドの組の組合せを含むときは、レスポンス時間が基準以上となると予測してよい。
【００４２】
次に、Ｓ１０８において、割当部１３４は、Ｓ１０６の処理において予測部１３２が処理すべきコマンドの組を一のフロントエンドサーバプロセス１１２等に割り当てた場合に基準以上のレスポンス時間がかかると予測した場合に、コマンドを他のサーバプロセスに割り当てるために処理をＳ１１４に進め、そうでない場合にはコマンドを元のサーバプロセスで完了させるために処理をＳ１１０に進める。
【００４３】
Ｓ１１０において、フロントエンド処理部１１０は、Ｓ１０４の処理で割り当てられた一のフロントエンドサーバプロセス１１２を実行して、クライアント２０からの受信コマンドを処理する。
【００４４】
次に、Ｓ１１２において、フロントエンド処理部１１０は、コマンドを処理した一のフロントエンドサーバプロセス１１２により、処理結果をクライアント２０に送信する。
【００４５】
Ｓ１１４において、割当部１３４は、処理すべきコマンドの組に含まれる少なくとも１つのコマンド（「割当コマンド」とする）を他のフロントエンドサーバプロセス１１４等に割り当てる。例えば、割当部１３４は、処理すべきコマンドの組のうち、新たに受信した受信コマンドを、他のフロントエンドサーバプロセス１１４等に割り当てる。また、例えば、割当部１３４は、一のフロントエンドサーバプロセス１１２が処理中のコマンドの組を受信コマンドの前にさらに加えたコマンドの組を、他のフロントエンドサーバプロセス１１４等に割り当ててもよい。
【００４６】
例えば、割当部１３４は、Ｓ１０４の処理で割り当てられた一のフロントエンドサーバプロセス１１２から他のフロントエンドサーバプロセス１１４等に割当コマンドを転送させることにより、他のフロントエンドサーバプロセス１１４等に割当コマンドを割り当てる。
【００４７】
次に、Ｓ１１６において、フロントエンド処理部１１０は、Ｓ１１４の処理で割り当てられた他のフロントエンドサーバプロセス１１４等を実行して、クライアント２０からの割当コマンドを処理する。
【００４８】
これにより、情報処理装置１０は、一のフロントエンドサーバプロセス１１２等に割り当てられたクライアント２０等からのコマンドのレスポンス時間を考慮して、当該割当コマンドを他のフロントエンドサーバプロセス１１４等で処理することができる。
【００４９】
次に、Ｓ１１８において、フロントエンド処理部１１０は、割当コマンドを処理した他のフロントエンドサーバプロセス１１４等により、処理結果をクライアント２０に送信する。
【００５０】
Ｓ１２０において、フロントエンド処理部１１０は、処理済みのコマンドの種類及びパラメータ等のコマンドの内容、当該コマンドの実行時刻、及び、当該コマンドの処理のレスポンス時間を履歴記録部１３０に記録する。
【００５１】
次に、Ｓ１２２において、フロントエンド処理部１１０はクライアント２０がログアウトしたか否かを判断する。クライアント２０がログアウトしたと判断した場合、フロントエンド処理部１１０は処理を終了し、そうでない場合は処理をＳ１０５に戻す。
【００５２】
このように、情報処理装置１０は、Ｓ１０２からＳ１２２までの処理を実行することにより、履歴記録部１３０の履歴に基づき、予測部１３２が一のフロントエンドサーバプロセス１１２によるクライアント２０等からのコマンドのレスポンス時間を予測し、レスポンス時間が基準以上であれば割当部１３４がコマンドの処理を他のサーバプロセスに割り当てる。
【００５３】
これにより、情報処理装置１０によれば、一のフロントエンドサーバプロセス１１２がレスポンス時間が長いコマンドの組を処理することがない。例えば、情報処理装置１０によれば、一のフロントエンドサーバプロセス１１２等で実行されるスレッドから、リクエストを処理するキュー又はストレージを管理するコントロールブロック等の仮想的なリソースに同時にアクセスする場合等に生じるコンテンションの発生を低減することができる。
【００５４】
なお、第１のフローのＳ１１４において、割当部１３４は、割当コマンドに代えて、一のフロントエンドサーバプロセス１１２に割り当てられたクライアント２０自体を他のフロントエンドサーバプロセス１１４等に割り当ててよい。この場合、情報処理装置１０は、Ｓ１１４の処理において割当コマンドが割り当てられた他のフロントエンドサーバプロセス１１４等を、新しい一のフロントエンドサーバプロセスとして、以降の処理を実行してよい。
【００５５】
図３は、一のフロントエンドサーバプロセスによる複数のコマンドＡ〜Ｆの処理時間の例を示す。例えば、コマンドＡ〜Ｃが一のフロントエンドサーバプロセスが処理中のコマンドの組であり、コマンドＦが一のフロントエンドサーバプロセスが新しく受信した受信コマンドである場合、コマンドＡ〜Ｃ及びＦが処理すべきコマンドの組となる。図２のＳ１０６において、予測部１３２は、履歴記録部１３０の履歴データベースから、処理すべきコマンドの組の各コマンドＡ〜Ｃ及びＦのそれぞれに対応する類似コマンドを履歴データベースから検索する。
【００５６】
予測部１３２は、履歴データベースから、各コマンドＡ〜Ｃ及びＦの類似コマンドＡ'〜Ｃ'及びＦ'の少なくとも１つを含む類似コマンドの組が同じ期間内に実行された履歴を探す。予測部１３２は、処理すべきコマンドの組の少なくとも一部のコマンドに対応する類似コマンドのみを含む類似コマンドの組（例えば、コマンドＡ'、Ｂ'、Ｃ'及びＦ'の組、又は、コマンドＢ'、Ｃ'及びＦ'の組）が同じ期間内に実行された履歴がある場合には、その場合における各類似コマンドの類似コマンドパターンレスポンス時間と、類似コマンドの組のうち類似コマンドの一部を類似コマンド以外で置き換えた他の組合せ（例えば、コマンドＡ'、Ｂ'、Ｃ'及びＸの組、又は、コマンドＤ'、Ｅ'及びＦ'の組）を実行した場合における、各類似コマンドの他コマンドパターンレスポンス時間とを比較する。
【００５７】
図３は、履歴データベースにおいて、コマンドＦがコマンドＡ〜Ｃとともに処理された場合に比較的長いレスポンス時間が記録されたことを示し、コマンドＦがコマンドＤ及びＥとともに処理された場合に比較的短いレスポンス時間が記録されたことを示す。
【００５８】
この場合、コマンドＡ〜Ｃとともに処理されたコマンドＦの類似コマンドパターンレスポンス時間は、コマンドＤ及びＥとともに処理されたコマンドＦの他コマンドパターンレスポンス時間よりも長くなる。この結果、例えば、Ｓ１０６における他コマンドパターンレスポンス時間にかけられる一定の係数が１．０である場合、予測部１３２は、処理すべきコマンドの組を一のフロントエンドサーバプロセス１１２等に割り当てた場合に基準以上のレスポンス時間となると予測することとなる。
【００５９】
ここで、予測部１３２は、一のコマンドに含まれるコマンドの種類及び／又はパラメータが類似する他のコマンドを、一のコマンドに類似するコマンドとしてよい。また、予測部１３２は、コマンドの種類が同一である又は特定の共通のキーワードを含む場合に、複数のコマンドの種類が類似するとしてよい。また、予測部１３２は、コマンドの対象となるファイルの名称及びファイルが存在するフォルダ名が同一である、又は、特定の共通のキーワードを含む場合に、複数のコマンドのパラメータが類似するとしてよい。
【００６０】
また、予測部１３２は、ファイル又はデータベースのサイズを複数のサイズにカテゴリー分けし、コマンドの対象となるファイル又はデータベースのサイズが同一のカテゴリーに分類される場合に、複数のコマンドのパラメータが類似するとしてよい。予測部１３２は、クライアント２０のユーザと対応するユーザＩＤ等を除いて、コマンドの種類及びパラメータの類似を判断してよい。
【００６１】
図４に、図２のフローに係る情報処理の概要を示す。負荷分散部１０２は、デーモンプロセスにより、クライアント２０のログイン処理を実行し、クライアント２０を複数のフロントエンドサーバプロセス１１２、１１４及び１１６のうち１つのフロントエンドサーバプロセス１１２に割り当てる。
【００６２】
一例として、負荷分散部１０２が、各フロントエンドサーバプロセス１１２等のＣＰＵに対する負荷、メモリ使用率、及び／又は、コマンド処理中のクライアントの数に基づいて、複数のフロントエンドサーバプロセス１１２等から１つのフロントエンドサーバプロセス１１２を選択し、クライアント２０に割り当てる。
【００６３】
クライアント２０が割り当てられたフロントエンドサーバプロセス１１２は、クライアント２０からコマンド／コマンドの組を受信コマンドとして受信し、受信コマンドを含む処理すべきコマンドの組の処理のレスポンス時間が基準以上であることに応じて、処理すべきコマンドの組に含まれる割当コマンドをクライアント２０に他のフロントエンドサーバプロセス１１４に転送する。他のフロントエンドサーバプロセス１１４は、クライアント２０からの割当コマンドを処理し、処理結果をクライアント２０に送信する。
【００６４】
図５は、本実施形態の情報処理装置１０の情報処理の第２のフローを示す。ここで、第２のフローは、クライアントからの受信コマンドを一のフロントエンドサーバプロセスに割り当てた場合にレスポンス時間が基準以上になり、かつ他のフロントエンドサーバプロセスに割り当てた場合にレスポンス時間が基準未満となると判断した場合に、処理すべきコマンドの組に含まれるコマンドの処理を他のフロントエンドサーバプロセスに処理させる場合のフローを示す。第２のフローにおいて、情報処理装置１０はＳ２０２からＳ２２６までの処理を実行することにより、受信したコマンドを複数のサーバプロセス間で負荷分散する。
【００６５】
第２のフローにおいて、情報処理装置１０は、Ｓ２０２からＳ２０８までの処理を、図２に示すＳ１０２からＳ１０８までの処理に準じて実行してよい。
【００６６】
Ｓ２１０において、予測部１３２は、処理すべきコマンドの組を割り当てた場合に、基準以上のレスポンス時間がかからない、一のフロントエンドサーバプロセス１１２の他のフロントエンドサーバプロセス１１４等が存在するか否かを、履歴記録部１３０の履歴データベースに記録された履歴に基づいて予測する。
【００６７】
例えば、予測部１３２は、他のフロントエンドサーバプロセス１１４等が処理中のコマンドの組に、Ｓ２０５で一のフロントエンドサーバプロセス１１２が受信した受信コマンドを加えて生成されるコマンドの組を処理すべきコマンドの組として、当該他のフロントエンドサーバプロセス１１４等に割り当てた場合に、当該他のフロントエンドサーバプロセス１１４等に基準以上のレスポンス時間がかかるか否かを予測する。
【００６８】
予測部１３２は、Ｓ１０６の処理と同様に、履歴記録部１３０の履歴データベースに記録された履歴に基づいて当該予測を行う。予測部１３２は、当該予測を複数の他のフロントエンドサーバプロセス１１４等ごとに行う。予測部１３２は、基準以上の負荷がかからない他のフロントエンドサーバプロセス１１４等が存在するか否かの予測結果を割当部１３４に供給する。
【００６９】
次に、Ｓ２１２で、割当部１３４は、予測部１３２の予測結果が「基準以上の負荷がかからない他のフロントエンドサーバプロセス１１４等が存在する」である場合に処理をＳ２１８に進め、そうでない場合に処理をＳ２１４に進める。
【００７０】
第２のフローにおいて、情報処理装置１０は、Ｓ２１４からＳ２２６までの処理を、図２に示すＳ１１０からＳ１２２までの処理に準じて実行してよい。
【００７１】
このように、情報処理装置１０は、Ｓ２０２からＳ２２６までの処理を実行することにより、処理すべきコマンドの組に含まれる少なくとも１つのコマンドを他のフロントエンドサーバプロセス１１４等に割り当てても当該他のフロントエンドサーバプロセス１１４等の負荷が基準以上とならないと予測部１３２が予測したことを条件として、割当部１３４が当該少なくとも１つのコマンドを当該他のフロントエンドサーバプロセス１１４等に割り当てる。
【００７２】
これにより、情報処理装置１０は、割当元の一のフロントエンドサーバプロセス１１２だけでなく割当先の他のフロントエンドサーバプロセス１１４等のコマンドのレスポンス時間の予測に基づいて、クライアントを他のフロントエンドサーバプロセス１１４等に割り当てる。このため、情報処理装置１０によれば、割当先のサーバプロセスにおいてコマンドのレスポンス時間をより確実に低減することができる。
【００７３】
図６に、本実施形態の情報処理装置１０の情報処理の第３のフローを示す。ここで、第３のフローは、クライアントから受信コマンドを一のフロントエンドサーバプロセスに割り当てた場合にレスポンス時間が基準以上になると判断した場合に、処理すべきコマンドの組に含まれるコマンドの処理をバックエンドサーバプロセスに処理させる場合のフローを示す。第３のフローにおいて、情報処理装置１０はＳ３０２からＳ３２６までの処理を実行することにより、受信したコマンドを複数のサーバプロセス間で負荷分散する。
【００７４】
第３のフローにおいて、情報処理装置１０は、Ｓ３０２からＳ３０５までの処理を、図２に示すＳ１０２からＳ１０５までの処理に準じて実行してよい。
【００７５】
Ｓ３０６において、予測部１３２は、新たに受信した受信コマンドを一のフロントエンドサーバプロセス１１２に割り当てた場合に、当該受信コマンド自体の処理により一のフロントエンドサーバプロセス１１２に基準以上の負荷がかかるか否かを予測する。
【００７６】
一例として、予測部１３２は、処理すべきコマンドの組の代わりに受信コマンドを用いて、Ｓ１０６と同様に受信コマンドに対応する類似コマンドパターンレスポンス時間を算出し、当該類似コマンドパターンレスポンス時間が予め定められた基準以上となるか否かを予測する。
【００７７】
予測部１３２は、当該基準として、予め定められた一定の時間を用いてもよく、コマンドの組の種類ごとに異なる時間を用いてもよい。例えば、予測部１３２は、含まれるコマンド数が多いコマンドの組に対して長い時間を基準として用い、含まれるコマンド数が少ないコマンドの組に対して短い時間を基準として用いてよい。予測部１３２は、予測した結果を割当部１３４に供給する。
【００７８】
次に、Ｓ３０８において、割当部１３４は、予測部１３２の予測結果が基準以上のレスポンス時間となる場合に処理をＳ３１４に進め、そうでない場合に処理をＳ３１０に進める。
【００７９】
第３のフローにおいて、情報処理装置１０は、Ｓ３１０の処理を、図２に示すＳ１０６の処理に準じて実行してよい。
【００８０】
Ｓ３１２において、割当部１３４は、予測部１３２の予測結果が基準以上のレスポンス時間となる場合に処理をＳ３１４に進め、そうでない場合に処理をＳ３２０に進める。
【００８１】
Ｓ３１４において、割当部１３４は、クライアント２０から受信した受信コマンドの処理を、バックエンド処理部１２０が実行するバックエンドサーバプロセスに割り当てる。
【００８２】
例えば、割当部１３４は、フロントエンド処理部１１０に、Ｓ３０４の処理で割り当てられた一のフロントエンドサーバプロセス１１２からバックエンドサーバプロセス１２２に受信コマンドを転送させることにより、バックエンドサーバプロセス１２２にコマンドの組を割り当てる。
【００８３】
次に、Ｓ３１６において、バックエンド処理部１２０は、Ｓ３１４の処理で割り当てられたバックエンドサーバプロセス１２２を実行して、受信コマンドを処理する。
【００８４】
次に、Ｓ３１８において、バックエンド処理部１２０は、バックエンドサーバプロセス１２２による受信コマンドの処理結果を、Ｓ３０４で割り当てられた一のフロントエンドサーバプロセス１１２に送信する。
【００８５】
第３のフローにおいて、情報処理装置１０は、Ｓ３２０の処理を、図２に示すＳ１１０の処理に準じて実行してよい。
【００８６】
Ｓ３２２において、フロントエンド処理部１１０は、一のフロントエンドサーバプロセス１１２により、Ｓ３１６における処理結果又はＳ３２０における処理結果をクライアント２０に送信する。
【００８７】
第３のフローにおいて、情報処理装置１０は、Ｓ３２４及びＳ３２６の処理を、図２に示すＳ１２０及びＳ１２２の処理に準じて実行してよい。
【００８８】
このように、情報処理装置１０は、Ｓ３０２からＳ３２６までの処理を実行することにより、割当部１３４は、新たに受信した受信コマンドを一のフロントエンドサーバプロセス１１２に割り当てた場合に、基準以上のレスポンス時間がかかると予測したことに応じて、当該コマンドの組の処理を、バックエンド処理部１２０が実行するバックエンドサーバプロセス１２２に割り当てる。
【００８９】
これにより、情報処理装置１０は、新しく受信した受信コマンド自体の処理負荷と、処理中のコマンドに受信コマンドを組み合わせた処理すべきコマンドの組の処理負荷の両方の予測に基づいて、クライアントをバックエンドサーバプロセス１２２に割り当てる。このため、情報処理装置１０によれば、割当先のサーバプロセスにおいてコマンドの処理負荷をより確実に低減することができる。
【００９０】
図７に、図６のフローに係る情報処理の概要を示す。図示するように、負荷分散部１０２は、デーモンプロセスにより、クライアント２０を複数のフロントエンドサーバプロセス１１２、１１４及び１１６のうち１つのフロントエンドサーバプロセス１１２に割り当てる。
【００９１】
クライアント２０が割り当てられたフロントエンドサーバプロセス１１２は、クライアント２０からコマンド／コマンドの組を受信コマンドとして受信し、受信コマンドの処理のレスポンス時間が基準以上であることに応じて、受信コマンドをバックエンドサーバプロセス１２２に転送する。バックエンドサーバプロセス１２２は、受信コマンドを処理し、処理結果をフロントエンドサーバプロセス１１２に送信する。フロントエンドサーバプロセス１１２は、受け取った処理結果をクライアント２０に送信する。
【００９２】
なお、本実施形態において、履歴記録部１３０は、処理済みのコマンドの内容と当該コマンドの処理のレスポンス時間だけでなく、コマンド処理時のＣＰＵ利用率、及び／又は、ディスク負荷等のハードウェアリソースの負荷を合わせて記録してよい。この場合、予測部１３２は、レスポンス時間だけでなくハードウェアリソースの負荷に基づいて、一のフロントエンドサーバプロセス１１２に基準以上の負荷がかかるか否かを判断してよい。
【００９３】
図８は、情報処理装置１０等として機能するコンピュータ１９００のハードウエア構成の一例を示す。本実施形態に係るコンピュータ１９００は、ホスト・コントローラ２０８２により相互に接続されるＣＰＵ２０００、ＲＡＭ２０２０、グラフィック・コントローラ２０７５、及び表示装置２０８０を有するＣＰＵ周辺部と、入出力コントローラ２０８４によりホスト・コントローラ２０８２に接続される通信インターフェイス２０３０、ハードディスクドライブ２０４０、及びＣＤ−ＲＯＭドライブ２０６０を有する入出力部と、入出力コントローラ２０８４に接続されるＲＯＭ２０１０、フレキシブルディスク・ドライブ２０５０、及び入出力チップ２０７０を有するレガシー入出力部とを備える。
【００９４】
ホスト・コントローラ２０８２は、ＲＡＭ２０２０と、高い転送レートでＲＡＭ２０２０をアクセスするＣＰＵ２０００及びグラフィック・コントローラ２０７５とを接続する。ＣＰＵ２０００は、ＲＯＭ２０１０及びＲＡＭ２０２０に格納されたプログラムに基づいて動作し、各部の制御を行う。ＣＰＵ２０００は、１つだけでなく複数設けられてもよい。グラフィック・コントローラ２０７５は、ＣＰＵ２０００等がＲＡＭ２０２０内に設けたフレーム・バッファ上に生成する画像データを取得し、表示装置２０８０上に表示させる。これに代えて、グラフィック・コントローラ２０７５は、ＣＰＵ２０００等が生成する画像データを格納するフレーム・バッファを、内部に含んでもよい。
【００９５】
入出力コントローラ２０８４は、ホスト・コントローラ２０８２と、比較的高速な入出力装置である通信インターフェイス２０３０、ハードディスクドライブ２０４０、ＣＤ−ＲＯＭドライブ２０６０を接続する。通信インターフェイス２０３０は、有線又は無線によりネットワークを介して他の装置と通信する。また、通信インターフェイスは、通信を行うハードウエアとして機能する。ハードディスクドライブ２０４０は、コンピュータ１９００内のＣＰＵ２０００が使用するプログラム及びデータを格納する。ＣＤ−ＲＯＭドライブ２０６０は、ＣＤ−ＲＯＭ２０９５からプログラム又はデータを読み取り、ＲＡＭ２０２０を介してハードディスクドライブ２０４０に提供する。
【００９６】
また、入出力コントローラ２０８４には、ＲＯＭ２０１０と、フレキシブルディスク・ドライブ２０５０、及び入出力チップ２０７０の比較的低速な入出力装置とが接続される。ＲＯＭ２０１０は、コンピュータ１９００が起動時に実行するブート・プログラム、及び／又は、コンピュータ１９００のハードウエアに依存するプログラム等を格納する。フレキシブルディスク・ドライブ２０５０は、フレキシブルディスク２０９０からプログラム又はデータを読み取り、ＲＡＭ２０２０を介してハードディスクドライブ２０４０に提供する。入出力チップ２０７０は、フレキシブルディスク・ドライブ２０５０を入出力コントローラ２０８４へと接続するとともに、例えばパラレル・ポート、シリアル・ポート、キーボード・ポート、マウス・ポート等を介して各種の入出力装置を入出力コントローラ２０８４へと接続する。
【００９７】
ＲＡＭ２０２０を介してハードディスクドライブ２０４０に提供されるプログラムは、フレキシブルディスク２０９０、ＣＤ−ＲＯＭ２０９５、又はＩＣカード等の記録媒体に格納されて利用者によって提供される。プログラムは、記録媒体から読み出され、ＲＡＭ２０２０を介してコンピュータ１９００内のハードディスクドライブ２０４０にインストールされ、ＣＰＵ２０００において実行される。
【００９８】
コンピュータ１９００にインストールされ、コンピュータ１９００を情報処理装置１０として機能させるプログラムは、フロントエンド処理モジュール、負荷分散モジュール、バックエンド処理モジュール、履歴記録モジュール、予測モジュール、割当モジュールとを備える。これらのプログラム又はモジュールは、ＣＰＵ２０００等に働きかけて、コンピュータ１９００を、フロントエンド処理部１１０、負荷分散部１０２、バックエンド処理部１２０、履歴記録部１３０、予測部１３２、割当部１３４としてそれぞれ機能させてよい。
【００９９】
これらのプログラムに記述された情報処理は、コンピュータ１９００に読込まれることにより、ソフトウエアと上述した各種のハードウエア資源とが協働した具体的手段であるフロントエンド処理部１１０、負荷分散部１０２、バックエンド処理部１２０、履歴記録部１３０、予測部１３２、割当部１３４として機能する。そして、これらの具体的手段によって、本実施形態におけるコンピュータ１９００の使用目的に応じた情報の演算又は加工を実現することにより、使用目的に応じた特有の情報処理装置１０が構築される。
【０１００】
一例として、コンピュータ１９００と外部の装置等との間で通信を行う場合には、ＣＰＵ２０００は、ＲＡＭ２０２０上にロードされた通信プログラムを実行し、通信プログラムに記述された処理内容に基づいて、通信インターフェイス２０３０に対して通信処理を指示する。通信インターフェイス２０３０は、ＣＰＵ２０００の制御を受けて、ＲＡＭ２０２０、ハードディスクドライブ２０４０、フレキシブルディスク２０９０、又はＣＤ−ＲＯＭ２０９５等の記憶装置上に設けた送信バッファ領域等に記憶された送信データを読み出してネットワークへと送信し、もしくは、ネットワークから受信した受信データを記憶装置上に設けた受信バッファ領域等へと書き込む。このように、通信インターフェイス２０３０は、ＤＭＡ（ダイレクト・メモリ・アクセス）方式により記憶装置との間で送受信データを転送してもよく、これに代えて、ＣＰＵ２０００が転送元の記憶装置又は通信インターフェイス２０３０からデータを読み出し、転送先の通信インターフェイス２０３０又は記憶装置へとデータを書き込むことにより送受信データを転送してもよい。
【０１０１】
また、ＣＰＵ２０００は、ハードディスクドライブ２０４０、ＣＤ−ＲＯＭドライブ２０６０（ＣＤ−ＲＯＭ２０９５）、フレキシブルディスク・ドライブ２０５０（フレキシブルディスク２０９０）等の外部記憶装置に格納されたファイルまたはデータベース等の中から、全部または必要な部分をＤＭＡ転送等によりＲＡＭ２０２０へと読み込ませ、ＲＡＭ２０２０上のデータに対して各種の処理を行う。そして、ＣＰＵ２０００は、処理を終えたデータを、ＤＭＡ転送等により外部記憶装置へと書き戻す。このような処理において、ＲＡＭ２０２０は、外部記憶装置の内容を一時的に保持するものとみなせるから、本実施形態においてはＲＡＭ２０２０及び外部記憶装置等をメモリ、記憶部、または記憶装置等と総称する。本実施形態における各種のプログラム、データ、テーブル、データベース等の各種の情報は、このような記憶装置上に格納されて、情報処理の対象となる。なお、ＣＰＵ２０００は、ＲＡＭ２０２０の一部をキャッシュメモリに保持し、キャッシュメモリ上で読み書きを行うこともできる。このような形態においても、キャッシュメモリはＲＡＭ２０２０の機能の一部を担うから、本実施形態においては、区別して示す場合を除き、キャッシュメモリもＲＡＭ２０２０、メモリ、及び／又は記憶装置に含まれるものとする。
【０１０２】
また、ＣＰＵ２０００は、ＲＡＭ２０２０から読み出したデータに対して、プログラムの命令列により指定された、本実施形態中に記載した各種の演算、情報の加工、条件判断、情報の検索・置換等を含む各種の処理を行い、ＲＡＭ２０２０へと書き戻す。例えば、ＣＰＵ２０００は、条件判断を行う場合においては、本実施形態において示した各種の変数が、他の変数または定数と比較して、大きい、小さい、以上、以下、等しい等の条件を満たすか否かを判断し、条件が成立した場合（又は不成立であった場合）に、異なる命令列へと分岐し、またはサブルーチンを呼び出す。
【０１０３】
また、ＣＰＵ２０００は、記憶装置内のファイルまたはデータベース等に格納された情報を検索することができる。例えば、第１属性の属性値に対し第２属性の属性値がそれぞれ対応付けられた複数のエントリが記憶装置に格納されている場合において、ＣＰＵ２０００は、記憶装置に格納されている複数のエントリの中から第１属性の属性値が指定された条件と一致するエントリを検索し、そのエントリに格納されている第２属性の属性値を読み出すことにより、所定の条件を満たす第１属性に対応付けられた第２属性の属性値を得ることができる。
【０１０４】
以上に示したプログラム又はモジュールは、外部の記録媒体に格納されてもよい。記録媒体としては、フレキシブルディスク２０９０、ＣＤ−ＲＯＭ２０９５の他に、ＤＶＤ又はＣＤ等の光学記録媒体、ＭＯ等の光磁気記録媒体、テープ媒体、ＩＣカード等の半導体メモリ等を用いることができる。また、専用通信ネットワーク又はインターネットに接続されたサーバシステムに設けたハードディスク又はＲＡＭ等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムをコンピュータ１９００に提供してもよい。
【０１０５】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【０１０６】
特許請求の範囲、明細書、および図面中において示した装置、システム、プログラム、および方法における動作、手順、ステップ、および段階等の各処理の実行順序は、特段「より前に」、「先立って」等と明示しておらず、また、前の処理の出力を後の処理で用いるのでない限り、任意の順序で実現しうることに留意すべきである。特許請求の範囲、明細書、および図面中の動作フローに関して、便宜上「まず、」、「次に、」等を用いて説明したとしても、この順で実施することが必須であることを意味するものではない。
【符号の説明】
【０１０７】
１０  情報処理装置、２０  クライアント、３０  クライアント、４０  クライアント、１０２  負荷分散部、１１０  フロントエンド処理部、１１２  フロントエンドサーバプロセス、１１４  フロントエンドサーバプロセス、１１６  フロントエンドサーバプロセス、１２０  バックエンド処理部、１２２  バックエンドサーバプロセス、１３０  履歴記録部、１３２  予測部、１３４  割当部、１９００  コンピュータ、２０００  ＣＰＵ、２０１０  ＲＯＭ、２０２０  ＲＡＭ、２０３０  通信インターフェイス、２０４０  ハードディスクドライブ、２０５０  フレキシブルディスク・ドライブ、２０６０  ＣＤ−ＲＯＭドライブ、２０７０  入出力チップ、２０７５  グラフィック・コントローラ、２０８０  表示装置、２０８２  ホスト・コントローラ、２０８４  入出力コントローラ、２０９０  フレキシブルディスク、２０９５  ＣＤ−ＲＯＭ
【図１】
2014120097.tif 000003
【図２】
2014120097.tif 000004
【図３】
2014120097.tif 000005
【図４】
2014120097.tif 000006
【図５】
2014120097.tif 000007
【図６】
2014120097.tif 000008
【図７】
2014120097.tif 000009
【図８】
2014120097.tif 000010