(57)【特許請求の範囲】
【請求項１】
複数のプロセッサそれぞれの使用時間とエラー発生状況とを示す動作情報を記憶する記憶部と、
プログラムの実行開始時に、前記動作情報に基づいて、前記複数のプロセッサのうちの使用時間が短い方から所定数のプロセッサを、動作させる第１のプロセッサとして選択し、選択されていない第２のプロセッサを停止した状態で、前記第１のプロセッサに前記プログラムを実行させ、前記第１のプロセッサの稼働時間に前記第１のプロセッサの平均使用率を乗算した使用時間と、前記第１のプロセッサのエラー発生状況とを取得し、取得した該使用時間と該エラー発生状況とを前記記憶部に格納する制御部と、
を有する情報処理装置。
【請求項２】
コンピュータに、
プログラムの実行開始時に、複数のプロセッサそれぞれの使用時間とエラー発生状況とを示す動作情報に基づいて、前記複数のプロセッサのうちの使用時間が短い方から所定数のプロセッサを、動作させる第１のプロセッサとして選択し、
選択されていない第２のプロセッサを停止した状態で、前記第１のプロセッサに前記プログラムを実行させ、
前記第１のプロセッサの稼働時間に前記第１のプロセッサの平均使用率を乗算した使用時間と、前記第１のプロセッサのエラー発生状況を取得し、
該使用時間と該エラー発生状況とを、前記動作情報として記憶部に格納する、
処理を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、およびプログラムに関する。
【背景技術】
【０００２】
近年のコンピュータでは、１台のコンピュータ内に複数のプロセッサが搭載されている場合がある。プロセッサは、ＣＰＵ（Central Processing Unit）とも呼ばれる。１つのプロセッサ内に、複数のプロセッサコアが搭載されている場合もある。この場合の複数のプロセッサコアそれぞれが、コンピュータ内の独立したプロセッサとして機能する。以下、プロセッサまたはＣＰＵと呼んだ場合、プロセッサコアを含むものとする。
【０００３】
マルチコアプロセッサの普及により、コンピュータ内のプロセッサ数は増加傾向にある。従来は、プロセッサが増加しても、システム全体の負荷を考慮せず、プロセッサをすべて使用していた。この場合、いずれか１つのプロセッサに訂正不可能なエラーが発生すると、ＯＳ（Operating System）の動作を継続できなくなり、システムがダウンする。
【０００４】
なお、訂正不可能なエラーが発生しやすいプロセッサを、訂正可能なエラー数から判断し、運用中のシステムダウンの抑止措置を採ることも可能である。例えば訂正可能なエラー数が一定数に達したプロセッサが検出されると、そのプロセッサの使用を停止することができる。これにより、訂正不可能なエラーの発生が抑止される。
【０００５】
システムの障害発生時の対応に関する技術としては、例えば、命令再試行可能なエラー発生時、システムの負荷状況及びエラー頻度状況によりプロセッサリリーフ、命令再試行処理を行う技術がある。また、システムリセット時の初期化処理において異常が発生しても、システムが起動しなくなることを回避する技術もある。さらに、サーバ等の処理装置に障害が発生した場合の復旧時間の長期化をより確実に抑えられるようにする技術もある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平６−３２４８９７号公報
【特許文献２】特開２０１０−６１４１９号公報
【特許文献３】特開２０１３−１６４７６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
複数のプロセッサを有するコンピュータシステムでは、そのシステムの性能を使い切っていないことがある。このような場合、訂正可能なエラー数が一定数に達したプロセッサが存在しなくても、システムの省電力化などの目的で、一部のプロセッサを停止させておくことができる。このように、性能に余力があるときに一部のプロセッサを停止させるという運用を継続すると、各プロセッサの稼働時間に大きな差が生じることがある。
【０００８】
各プロセッサの稼働時間の実績が大きく異なる場合に、プロセッサごとの訂正可能なエラー数だけでプロセッサの信頼性を判断すると、信頼性を正確には判断できない。例えば、他のプロセッサよりも長時間稼働したプロセッサは、他のプロセッサよりも訂正可能なエラーが多く検出されて当然であり、訂正可能なエラー数が他のプロセッサよりも多いからといって、信頼性が低いと評価することはできない。そこで、稼働実績を考慮して各プロセッサの信頼性を評価することが考えられる。
【０００９】
しかし、ほとんど使用されてないプロセッサが存在すると、そのプロセッサの稼働実績は存在せず、稼働実績に関する情報を取得できない。稼働実績を用いた信頼性評価において、稼働実績に関する情報が取得できないプロセッサがあると、プロセッサ間の信頼性の優劣を正しく判断することができない。その結果、訂正不可能なエラーが発生しやすいプロセッサの判断を誤る可能性が生じる。
【００１０】
１つの側面では、本件は、プロセッサの信頼性評価に有用な情報を確実に取得できるようにすることを目的とする。
【課題を解決するための手段】
【００１１】
１つの案では、記憶部と制御部とを有する情報処理装置が提供される。記憶部は、複数のプロセッサそれぞれの使用時間とエラー発生状況とを示す動作情報を記憶する。制御部は、プログラムの実行開始時に、動作情報に基づいて、複数のプロセッサのうちの使用時間が短い方から所定数のプロセッサを、動作させる第１のプロセッサとして選択する。次に制御部は、選択されていない第２のプロセッサを停止した状態で、第１のプロセッサにプログラムを実行させ、第１のプロセッサの使用時間とエラー発生状況とを取得する。そして制御部は、取得した該使用時間と該エラー発生状況とを記憶部に格納する。
【発明の効果】
【００１２】
１態様によれば、プロセッサの信頼性評価に有用な情報を確実に取得できる。
【図面の簡単な説明】
【００１３】
【図１】第１の実施の形態に係る情報処理装置の一例を示す図である。
【図２】第２の形態に用いるサーバのハードウェアの一構成例を示す図である。
【図３】システムボードの詳細とサーバ内で保持される情報の例を示す図である。
【図４】稼働時間・エラー管理簿の一例を示す図である。
【図５】エラーログの一例を示す図である。
【図６】ＣＰＵ動作管理機能を示すブロック図である。
【図７】システム起動時のＣＰＵ動作管理処理の手順の一例を示すフローチャートである。
【図８】ＣＰＵ数算出処理の手順の一例を示すフローチャートである。
【図９】ＣＰＵ選定処理の手順の一例を示すフローチャートである。
【図１０】システム停止時のＣＰＵ動作管理処理の手順の一例を示すフローチャートである。
【図１１】使用率採取処理の手順の一例を示すフローチャートである。
【図１２】エラー情報収集処理の手順の一例を示すフローチャートである。
【図１３】初回起動時における使用ＣＰＵ選定の第１の例を示す図である。
【図１４】初回起動時における使用ＣＰＵ選定の第２の例を示す図である。
【図１５】２回目起動時における使用ＣＰＵ選定例を示す図である。
【図１６】３回目起動時における使用ＣＰＵ選定例を示す図である。
【図１７】ｎ回目の起動時における使用ＣＰＵ選定例を示す図である。
【図１８】ｎ＋ｍ回目の起動時における使用ＣＰＵ選定例を示す図である。
【発明を実施するための形態】
【００１４】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第１の実施の形態〕
図１は、第１の実施の形態に係る情報処理装置の一例を示す図である。情報処理装置１０は、複数のプロセッサ（ＣＰＵ）１１〜１４、記憶部１５、および制御部１６を有する。情報処理装置１０内では、ＣＰＵ１１〜１４それぞれに識別番号が付与されている。ＣＰＵ１１の識別番号は「１」、ＣＰＵ１２の識別番号は「２」、ＣＰＵ１３の識別番号は「３」、ＣＰＵ１４の識別番号は「４」である。
【００１５】
記憶部１５は、複数のＣＰＵ１１〜１４それぞれの使用時間とエラー発生状況とを示す動作情報を記憶する。エラー発生状況には、例えば訂正可能なエラーの発生回数が示されている。例えば記憶部１５内には、動作情報管理テーブル１５ａが設けられ、動作情報管理テーブル１５ａに動作情報が登録される。動作情報管理テーブル１５ａには、例えばＣＰＵ１１〜１４ごとに、使用時間とエラー数とが登録されている。動作情報管理テーブル１５ａに示される各ＣＰＵ１１〜１４のエラー数は、例えばそのＣＰＵから繰り返し収集したエラー発生状況に示されるエラー数の積算値である。
【００１６】
制御部１６は、プログラムの実行開始時に、記憶部１５内の動作情報に基づいて、複数のＣＰＵ１１〜１４のうちの使用時間が短い方から所定数のＣＰＵを、動作させるＣＰＵとして選択する。そして制御部１６は、選択されていないＣＰＵを停止した状態で、選択したＣＰＵにプログラムを実行させる。すなわち、複数のＣＰＵ１１〜１４のうちの使用時間が長い方の所定数のＣＰＵが、停止させるＣＰＵとなる。さらに制御部１６は、選択したＣＰＵそれぞれの使用時間とエラー発生状況とを取得し、取得した使用時間とエラー発生状況とを記憶部１５に格納する。
【００１７】
なお、制御部１６は、エラーの発生状況に応じて、動作させるＣＰＵの選択基準を変えることができる。例えば制御部１６は、エラー発生状況に基づく複数のＣＰＵ１１〜１４それぞれの信頼性に差がない場合には、使用時間が短いＣＰＵから順に、動作させるＣＰＵとして選択することができる。そして、制御部１６は、複数のＣＰＵそれぞれの信頼性に差がある場合には、信頼性の高いＣＰＵから順に、動作させるＣＰＵとして選択する。
【００１８】
なお制御部１６は、信頼性の判断では、例えば、単位使用時間当たりのエラー数が少ないＣＰＵほど信頼性が高いと判断することができる。また制御部１６は、例えば、ＣＰＵの稼働時間にそのＣＰＵの平均使用率を乗算した値を、そのＣＰＵの使用時間とすることもできる。
【００１９】
このような情報処理装置１０において、例えば、情報処理装置１０の運用時に実行するプログラムが、３つのＣＰＵで実行可能であるものとする。その場合、運用中、１つのＣＰＵを停止させておくことができる。どのＣＰＵを使用し、どのＣＰＵを停止させるのかは、例えばプログラムの実行開始時に決定される。図１の例では、情報処理装置１０を起動した際に、使用するＣＰＵが決定され、そのＣＰＵでプログラムが実行されるものとする。
【００２０】
情報処理装置１０の１回目の起動時には、すべてのＣＰＵの使用時間とエラー数が共に「０」である。この場合、制御部１６は、任意の１つのＣＰＵを停止させる。図１の例では、ＣＰＵ１１〜１３が使用され、ＣＰＵ１４が停止されている。制御部１６は、例えば、プログラムの実行停止時に、使用されているＣＰＵ１１〜１３から動作情報を取得し、記憶部１５に格納する。その結果、ＣＰＵ１１〜１３についての使用時間とエラー数とが、動作情報管理テーブル１５ａに登録される。
【００２１】
なお、ＣＰＵの利用率を加味した値を使用時間として用いることで、同じ期間だけ稼働したＣＰＵでも、使用時間が異なってくる。例えば図１の例では、識別番号「１」のＣＰＵ１１の使用時間が最も長い。
【００２２】
情報処理装置１０の２回目の起動時には、制御部１６は、１回目のプログラムの実行により収集された動作情報に基づいて、使用するＣＰＵと停止するＣＰＵとを決定する。図１の例では、２回目の起動時には、いずれのＣＰＵにもエラーが発生していない。そこで制御部１６は、使用時間が短い方から３つのＣＰＵ１２〜１４を、使用対象として選択する。そして制御部１６は、選択されなかったＣＰＵ１１の動作を停止させる。そして制御部１６は、使用しているＣＰＵ１２〜１４の動作情報を取得し、記憶部１５に格納する。これにより、１回目で停止されていたＣＰＵ１４の動作情報も取得することができる。
【００２３】
以後、情報処理装置１０を起動するごとに、制御部１６は、使用時間が短いＣＰＵを優先的に使用し、使用時間が長いＣＰＵを停止させる。これにより、各ＣＰＵ１１〜１４の使用時間を均等化させることができる。使用される複数のＣＰＵの使用率に大きな差がなく、一回の起動での運用期間が毎回同じであれば、各ＣＰＵは、ローテーションで使用されることとなる。
【００２４】
情報処理装置１０を運用しているうちに、いずれかのＣＰＵにおいて、訂正可能なエラーが発生することがある。図１の例では、情報処理装置１０のｋ回目（ｋは１以上の整数）の起動時には、各ＣＰＵ１１〜１４で１回ずつのエラーが検出されている。この場合、各ＣＰＵ１１〜１４のエラー数は同等であるが、使用時間を考慮して信頼性を評価すると、複数のＣＰＵ１１〜１４の信頼性は同等とはならない。すなわち、単位時間当たりのエラー数が多いほど、信頼性が低いと考えられる。エラー数が同じであれば、使用時間が短いほど信頼性が低いことになる。図１の例では、使用時間が最も短いのは、識別番号「２」のＣＰＵ１２である。そこで制御部１６は、単位時間当たりのエラー数が最大のＣＰＵ１２以外のＣＰＵ１１，１３，１４を動作させるＣＰＵとして選択し、ＣＰＵ１２を停止させる。
【００２５】
このように、第１の実施の形態では、いずれのＣＰＵからもエラーが検出されていない状態では、使用時間が短いＣＰＵを優先的に使用することで、使用時間の均等化が図られる。その結果、すべてのＣＰＵ１１〜１４から動作情報を確実に収集することができ、ＣＰＵ１１〜１４それぞれの信頼性を同等の条件で評価し、適切に比較することができる。
【００２６】
すなわち、使用時間やエラー数を考慮しない規則で動作させるＣＰＵを選択した場合、常に同じＣＰＵが停止される可能性がある。常に停止しているＣＰＵがあると、そのＣＰＵからは動作情報を収集することができず、信頼性を評価できない。それに対し、第１の実施の形態では、ＣＰＵの信頼性に差がない状況では、すべてのＣＰＵが平等に使用されるため、すべてのＣＰＵから十分な動作情報を収集できる。
【００２７】
しかも、情報処理装置１０の運用のために有用なプログラムを、すべてのＣＰＵに順番に実行させることで、動作情報が収集される。そのため、例えば、使用していないＣＰＵにテストプログラムを実行させて動作情報を収集するような余計な処理を実施せずに済み、情報収集を効率的に実施できる。
【００２８】
また第１の実施の形態では、いずれかのＣＰＵのエラー検出後は、単位使用時間当たりのエラー数が少ないＣＰＵを優先的に使用することで、使用時間を考慮して信頼性を正しく評価できる。例えば、使用時間を考慮せずに信頼性を評価すると、エラー数が少ないＣＰＵの信頼性が高いと評価されてしまう。しかし、他のＣＰＵよりも長時間使用されたＣＰＵであれば、単にエラー数が多いというだけで他のＣＰＵよりも信頼性が低いと判定することはできない。単位使用時間当たりのエラー数で信頼性を判定することで、ＣＰＵ間の使用時間の違いを相殺して、信頼性を正しく判定することができる。
【００２９】
そして信頼性の低いＣＰＵを的確に停止させることで、使用中のＣＰＵで訂正不可能なエラーが発生することによるシステムダウンを抑止することができる。
さらに、ＣＰＵの稼働時間に使用率を乗算した値を使用時間とすることで、使用時間を正確に算出することができる。すなわち、ＣＰＵのエラーは、処理の実行過程で発生する。そのため、何も処理を実行していないアイドル状態の期間を使用時間に含めてしまうと、信頼性を正確に判断できなくなる。第１の実施の形態では、使用率を加味して使用時間を計算することで、ほとんどアイドル状態にならないＣＰＵと、通常アイドル状態になっているＣＰＵとの違いを加味して信頼性を判断し、訂正不可能なエラーが発生しやすいＣＰＵを正確に判断できる。
【００３０】
なお、制御部１６は、例えば情報処理装置１０が有する、いずれか１つのプロセッサ（ＣＰＵ）により実現することができる。また、記憶部１５は、例えば情報処理装置１０が有するメモリにより実現することができる。
【００３１】
〔第２の実施の形態〕
次に第２の実施の形態について説明する。第２の実施の形態では、サーバの起動時に、プロセッサ（ＣＰＵ）の稼働時間を加味して、各ＣＰＵの信頼性を評価する。なお、ＣＰＵの稼働時間としては、ＣＰＵの使用率を加味した実質稼働時間が用いられる。実質稼働時間は、例えば「ＣＰＵの稼働時間×ＣＰＵ使用率」で求められる。なお、実質稼働時間は、第１の実施の形態における使用時間の一例である。求められた実質稼働時間を用いて、使用するＣＰＵを選択することで、各ＣＰＵの信頼性を正確に判断可能となる。
【００３２】
なお第２の実施の形態では、訂正可能なエラーが発生したＣＰＵが存在しない場合、実質稼働時間が長いＣＰＵから順に、所定数のＣＰＵの動作を停止させる。また、訂正可能なエラーが発生したＣＰＵが存在する場合は、実質稼働時間あたりの訂正可能なエラー数が多いＣＰＵから順に、所定数のＣＰＵの動作を停止させる。
【００３３】
図２は、第２の形態に用いるサーバのハードウェアの一構成例を示す図である。サーバ１００は、システムボード１０１内のＣＰＵによって装置全体が制御されている。システムボード１０１は、複数のＣＰＵ（例えばマルチコアプロセッサ）とメモリとを有している。システムボード１０１には、バス１０９を介して複数の周辺機器が接続されている。システムボード１０１では、ＣＰＵがプログラムを実行することで実現する機能の少なくとも一部を、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現してもよい。
【００３４】
バス１０９に接続されている周辺機器としては、ＨＤＤ（Hard Disk Drive）１０２、監視ユニット１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、機器接続インタフェース１０７およびＦＣ（Fibre Channel）カード１０８ａ，１０８ｂがある。
【００３５】
ＨＤＤ１０２は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０２は、サーバ１００の補助記憶装置として使用される。ＨＤＤ１０２には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、フラッシュメモリなどの不揮発性の半導体記憶装置（ＳＳＤ：Solid State Drive）を使用することもできる。
【００３６】
監視ユニット１０３は、サーバ１００の動作を監視する。例えば監視ユニット１０３は、システムボード１０１内のＣＰＵにおける訂正可能なエラーの情報を収集し、蓄積する。
【００３７】
グラフィック処理装置１０４には、モニタ２１が接続されている。グラフィック処理装置１０４は、システムボード１０１内のＣＰＵからの命令に従って、画像をモニタ２１の画面に表示させる。モニタ２１としては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００３８】
入力インタフェース１０５には、キーボード２２とマウス２３とが接続されている。入力インタフェース１０５は、キーボード２２やマウス２３から送られてくる信号をシステムボード１０１内のＣＰＵに送信する。なお、マウス２３は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００３９】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク２４に記録されたデータの読み取りを行う。光ディスク２４は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク２４には、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００４０】
機器接続インタフェース１０７は、サーバ１００に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース１０７には、メモリ装置２５やメモリリーダライタ２６を接続することができる。メモリ装置２５は、機器接続インタフェース１０７との通信機能を搭載した記録媒体である。メモリリーダライタ２６は、メモリカード２７へのデータの書き込み、またはメモリカード２７からのデータの読み出しを行う装置である。メモリカード２７は、カード型の記録媒体である。
【００４１】
ＦＣカード１０８ａ，１０８ｂは、ネットワーク２０に接続されている。ＦＣカード１０８ａ，１０８ｂは、ネットワーク２０を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【００４２】
図３は、システムボードの詳細とサーバ内で保持される情報の例を示す図である。システムボード１０１には、プロセッサ１０１−１、メモリ１０１−２、メモリブリッジ１０１−３，Ｉ／Ｏ（Input/Output）ブリッジ１０１−４などが搭載されている。
【００４３】
プロセッサ１０１−１は、複数のＣＰＵ１０１ａ〜１０１ｅ（プロセッサコア）を有している。複数のＣＰＵ１０１ａ〜１０１ｅそれぞれには、「０」〜「４」の識別番号が付与されている。識別番号「０」のＣＰＵ１０１ａは、ＯＳや、ＣＰＵの動作を管理する管理プログラム１０１ｆを実行する。識別番号「１」から「４」の４つのＣＰＵは、アプリケーションプログラム１０１ｈを実行する。管理プログラム１０１ｆを実行するＣＰＵ１０１ａは、図１に示す第１の実施の形態の制御部１６の一例である。アプリケーションプログラム１０１ｈを実行するＣＰＵ１０１ｂ〜１０１ｅは、図１に示す第１の実施の形態のＣＰＵ１１〜１４の一例である。
【００４４】
メモリ１０１−２は、サーバ１００の主記憶装置として使用される。メモリ１０１−２には、管理プログラム１０１ｆ、稼働時間・エラー管理簿１０１ｇ、アプリケーションプログラム１０１ｈ、およびＯＳ１０１ｉが記憶される。メモリ１０１−２としては、例えばＲＡＭなどの揮発性の半導体記憶装置が使用される。メモリ１０１−２は、図１に示す第１の実施の形態の記憶部１５の一例である。
【００４５】
管理プログラム１０１ｆは、アプリケーションプログラム１０１ｈをどのＣＰＵに実行させるかを管理するためのプログラムである。管理プログラム１０１ｆには、使用率採取モジュール、エラー情報収集モジュール、ＣＰＵ数算出モジュール、ＣＰＵ選定モジュールなどが含まれる。稼働時間・エラー管理簿１０１ｇは、各ＣＰＵの稼働時間や、発生したエラーが登録されたデータテーブルである。アプリケーションプログラム１０１ｈは、サーバ１００が提供するサービスに関する情報処理を、ＣＰＵ１０１ｂ〜１０１ｅに実行させるためのプログラムである。ＯＳ１０１ｉは、サーバ１００全体の動作を制御するためのプログラムである。
【００４６】
メモリブリッジ１０１−３は、プロセッサ１０１−１からのメモリ１０１−２へのアクセスを制御する制御回路である。Ｉ／Ｏブリッジ１０１−４は、プロセッサ１０１−１からＨＤＤ１０２などの周辺機器へのアクセスを制御する制御回路である。
【００４７】
ＨＤＤ１０２には、メモリ１０１−２と同様に、管理プログラム１０２ａ、稼働時間・エラー管理簿１０２ｂ、アプリケーションプログラム１０２ｃ、およびＯＳ１０２ｄが記憶される。ＨＤＤ１０２に記憶された各種情報が、メモリ１０１−２に読み出され、プロセッサ１０１−１内のいずれかのＣＰＵで実行される。
【００４８】
監視ユニット１０３は、制御部１０３−１とメモリ１０３−２とを有している。制御部１０３−１は、システムボード１０１から送られたエラー情報を、エラーログ１０３ａとしてメモリ１０３−２に格納する。なおシステムボード１０１から送られたエラー情報は、訂正可能なエラーに関する情報であり、エラー情報にはエラーを発生させたＣＰＵの識別番号が含まれる。また制御部１０３−１は、システムボード１０１内のＣＰＵ１０１ａからの要求に応じて、メモリ１０３−２内のエラーログ１０３ａを、そのＣＰＵ１０１ａに送信する。
【００４９】
以上のようなハードウェア構成およびデータによって、第２の実施の形態の処理機能を実現することができる。なお、第１の実施の形態に示した装置も、図２に示したサーバ１００と同様のハードウェアにより実現することができる。
【００５０】
プロセッサ１０１−１は、ＨＤＤ１０２内のプログラムの少なくとも一部をメモリ１０１−２にロードし、プログラムを実行する。またサーバ１００に実行させるプログラムを、光ディスク２４、メモリ装置２５、メモリカード２７などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ１０１−１からの制御により、ＨＤＤ１０２にインストールされた後、実行可能となる。またプロセッサ１０１−１が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００５１】
次に、ＣＰＵの動作管理に用いる情報について詳細に説明する。
図４は、稼働時間・エラー管理簿の一例を示す図である。稼働時間・エラー管理簿１０１ｇには、Ｕｎｉｔ、実質稼働時間、訂正可能なエラー数、前回の平均使用率の欄が設けられている。Ｕｎｉｔの欄には、管理対象のＣＰＵの識別番号が設定される。実質稼働時間の欄には、対応するＣＰＵの実質的な稼働時間が設定される。実質的な稼働時間とは、ＣＰＵがオンラインとなっていた時間に、そのＣＰＵの平均使用率を乗算して得られる時間である。訂正可能なエラー数の欄には、対応するＣＰＵで発生した訂正可能なエラーの数が設定される。前回の平均使用率の欄には、直近のシステム運用時における対応するＣＰＵの平均使用率が設定される。
【００５２】
図５は、エラーログの一例を示す図である。エラーログ１０３ａには、番号、時刻、およびＵｎｉｔの欄が設けられている。番号の欄には、発生したエラーの識別番号が設定される。時刻の欄には、エラーの発生日時が設定される。Ｕｎｉｔの欄は、エラーを発生させたＣＰＵの識別番号が設定される。
【００５３】
管理プログラム１０１ｆを実行するＣＰＵ１０１ａは、図４、図５に示すような情報を用いて、他のＣＰＵ１０１ｂ〜１０１ｅの動作管理を行う。
図６は、ＣＰＵ動作管理機能を示すブロック図である。図６には、サーバ１００が有する、ＣＰＵ動作管理のための機能を、機能ブロックで表している。例えばサーバ１００は、ＯＳ１１０、使用率採取部１２０、エラー情報収集部１３０、ＣＰＵ数算出部１４０、およびＣＰＵ選定部１５０を有する。ＯＳ１１０は、メモリ１０１−２に格納されたＯＳのプログラム（ＯＳ１０１ｉ）を、ＣＰＵ１０１ａが実行することで実現する機能である。使用率採取部１２０、エラー情報収集部１３０、ＣＰＵ数算出部１４０、およびＣＰＵ選定部１５０は、管理プログラム１０１ｆをＣＰＵ１０１ａが実行することで実現される機能である。
【００５４】
ＯＳ１１０は、ＣＰＵ１０１ｂ〜１０１ｅの動作状況を監視し、使用率を算出する。使用率採取部１２０は、例えばシステムの停止時にＣＰＵ１０１ｂ〜１０１ｅの使用率をＯＳ１１０から採取する。使用率採取部１２０は、採取した使用率を稼働時間・エラー管理簿１０１ｇに設定する。エラー情報収集部１３０は、例えばシステムの停止時に、監視ユニット１０３からエラーログ１０３ａを収集し、システム起動から停止までの訂正可能なエラー数を、ＣＰＵごとに集計する。そして、エラー情報収集部１３０は、集計したエラー数の値を、稼働時間・エラー管理簿１０１ｇに設定する。
【００５５】
ＣＰＵ数算出部１４０は、例えばシステムの起動時に、稼働時間・エラー管理簿１０１ｇに基づいて、アプリケーションプログラム１０１ｈの実行に使用するＣＰＵ数を算出する。ＣＰＵ選定部１５０は、例えばシステムの起動時に、稼働時間・エラー管理簿１０１ｇに基づいて、ＣＰＵ数算出部１４０で算出されたＣＰＵ数分のＣＰＵを、使用するＣＰＵとして選定する。そしてＣＰＵ選定部１５０は、選定から漏れたＣＰＵの動作を停止させる。
【００５６】
なお、図６に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
次に、ＣＰＵ動作管理処理について詳細に説明する。ＣＰＵ動作管理処理は、システムの起動時と停止時とに行われる。以下、図７〜図９を参照してシステム起動時の処理を説明し、図１０〜図１２を参照してシステム停止時の処理を説明する。
【００５７】
図７は、システム起動時のＣＰＵ動作管理処理の手順の一例を示すフローチャートである。
［ステップＳ１０１］ＣＰＵ１０１ａは、ＯＳ１１０を起動する。
【００５８】
［ステップＳ１０２］ＯＳ１１０は、管理プログラム１０１ｆのＣＰＵ数算出モジュールに基づいて、ＣＰＵ数算出部１４０を起動する。ＣＰＵ数算出部１４０は、アプリケーションプログラム１０１ｈの実行に使用するＣＰＵ数の算出処理を実行する。ＣＰＵ数算出処理の詳細は後述する（図８参照）。
【００５９】
［ステップＳ１０３］ＯＳ１１０は、管理プログラム１０１ｆのＣＰＵ選定モジュールに基づいて、ＣＰＵ選定部１５０を起動する。ＣＰＵ選定部１５０は、ＣＰＵ１０１ｂ〜１０１ｅのなかから、ステップＳ１０２で算出されたＣＰＵ数分のＣＰＵ選定処理を行う。ＣＰＵ選定処理の詳細は後述する（図９参照）。
【００６０】
［ステップＳ１０４］ＣＰＵ１０１ａは、ステップＳ１０３で選択されたＣＰＵに、アプリケーションプログラム１０１ｈの実行を指示する。指示を受けたＣＰＵが、アプリケーションを起動する。その後、アプリケーションに基づいて、サーバ１００がサービスを提供する。
【００６１】
図８は、ＣＰＵ数算出処理の手順の一例を示すフローチャートである。
［ステップＳ１１１］ＣＰＵ数算出部１４０は、アプリケーションの使用ＣＰＵ数が固定か否かを判断する。例えばＣＰＵ数算出部１４０は、アプリケーションプログラム１０１ｈのプロパティなどの管理情報に、使用ＣＰＵ数が指定されているかどうかを調査する。ＣＰＵ数算出部１４０は、使用ＣＰＵ数が指定されていれば、使用ＣＰＵ数固定であると判断する。使用ＣＰＵ数が固定の場合、処理が終了する。使用ＣＰＵ数が固定でなければ、処理がステップＳ１１２に進められる。
【００６２】
［ステップＳ１１２］ＣＰＵ数算出部１４０は、前回の平均使用率の合計の値を「０」に初期化する。
［ステップＳ１１３］ＣＰＵ数算出部１４０は、アプリケーションプログラム１０１ｈの実行用に用意されたＣＰＵ数分（図３の例では「４」）だけ、ステップＳ１１４，Ｓ１１５の処理をループする。例えばＣＰＵ数算出部１４０は、稼働時間・エラー管理簿１０１ｇに登録されているＣＰＵを、上から順に処理対象とする。
【００６３】
［ステップＳ１１４］ＣＰＵ数算出部１４０は、処理対象のＣＰＵの前回の平均使用率を、稼働時間・エラー管理簿１０１ｇから取得する。そしてＣＰＵ数算出部１４０は、取得した値を、前回の平均使用率の合計に加算する。
【００６４】
［ステップＳ１１５］ＣＰＵ数算出部１４０は、処理対象のＣＰＵを、稼働時間・エラー管理簿１０１ｇ上での次のＣＰＵに移動する。
［ステップＳ１１６］ＣＰＵ数算出部１４０は、アプリケーションプログラム１０１ｈの実行用に用意されたすべてのＣＰＵ１０１ｂ〜１０１ｅについて処理が完了したら、処理をステップＳ１１７に進める。
【００６５】
［ステップＳ１１７］ＣＰＵ数算出部１４０は、前回の平均使用率の合計を６０％で割った値を、使用するＣＰＵ数として算出する。除算の小数点以下の値は、切り上げるものとする。これにより、平均使用率を６０％以下とするための使用ＣＰＵ数が求められる。
【００６６】
次に、ＣＰＵ選定処理について詳細に説明する。
図９は、ＣＰＵ選定処理の手順の一例を示すフローチャートである。
［ステップＳ１２１］ＣＰＵ選定部１５０は、稼働時間・エラー管理簿１０１ｇに登録されたＣＰＵ１０１ｂ〜１０１ｅのエントリを、単位稼働時間当たりの訂正可能なエラー数で昇順に並べ替える。例えばＣＰＵ選定部１５０は、稼働時間・エラー管理簿１０１ｇの各ＣＰＵについて、訂正可能なエラー数を実質稼働時間で除算し、単位稼働時間当たりの訂正可能なエラー数を算出する。そしてＣＰＵ選定部１５０は、稼働時間・エラー管理簿１０１ｇ内のＣＰＵ１０１ｂ〜１０１ｅのエントリを、単位稼働時間当たりの訂正可能なエラー数が少ない順に並べる。
【００６７】
［ステップＳ１２２］ＣＰＵ選定部１５０は、単位稼働時間当たりの訂正可能なエラー数が同じＣＰＵについて、実質稼働時間で昇順に並べ替える。例えばＣＰＵ選定部１５０は、稼働時間・エラー管理簿１０１ｇから、単位稼働時間当たりの訂正可能なエラー数が同じＣＰＵ群を検出する。該当するＣＰＵ群がある場合、ＣＰＵ選定部１５０は、稼働時間・エラー管理簿１０１ｇ内の該当ＣＰＵ群のエントリを、実質稼働時間が短い順に並べる。
【００６８】
［ステップＳ１２３］ＣＰＵ選定部１５０は、アプリケーションプログラム１０１ｈの実行用に用意されたＣＰＵ数分（図３の例では「４」）だけ、ステップＳ１２４〜Ｓ１２６の処理をループする。例えばＣＰＵ選定部１５０は、稼働時間・エラー管理簿１０１ｇに登録されているＣＰＵを、上から順に処理対象とする。すなわち単位時間当たりの訂正可能なエラー数が少ないＣＰＵから順に、処理対象となる。また単位時間当たりの訂正可能なエラー数が同じＣＰＵについては、実質稼働時間が短いＣＰＵから順に処理対象となる。
【００６９】
［ステップＳ１２４］ＣＰＵ選定部１５０は、ステップＳ１２４〜Ｓ１２６の処理のループ回数が、使用するＣＰＵ数以内か否かを判断する。ループ回数が使用するＣＰＵ数以内であれば、処理がステップＳ１２６に進められる。ループ回数が使用するＣＰＵ数を超えている場合、処理がステップＳ１２５に進められる。
【００７０】
［ステップＳ１２５］ＣＰＵ選定部１５０は、処理対象のＣＰＵをオフラインにする。オフラインとなったＣＰＵは、アプリケーションプログラムの実行先から除外される。
［ステップＳ１２６］ＣＰＵ選定部１５０は、処理対象のＣＰＵを、稼働時間・エラー管理簿１０１ｇ上での次のＣＰＵに移動する。
【００７１】
［ステップＳ１２７］ＣＰＵ選定部１５０は、アプリケーションプログラム１０１ｈの実行用に用意されたすべてのＣＰＵ１０１ｂ〜１０１ｅについて処理が完了したら、ＣＰＵ選定処理を終了する。
【００７２】
このようにして、システムの起動時に、単位稼働時間当たりのエラー数が多いＣＰＵの使用が抑止される。これにより、信頼性の高いＣＰＵを優先して使用することができる。なお、すべてのＣＰＵの訂正可能なエラーの数が「０」の場合、単位稼働時間当たりのエラー数は、いずれのＣＰＵも「０」となる。その場合、実質稼働時間が短いＣＰＵが使用され、実質稼働時間が長いＣＰＵの使用は抑止される。これにより、ＣＰＵ間の信頼性の優劣が不明な場合には、システムが繰り返し起動されることで、すべてのＣＰＵを均等に使用することができる。ＣＰＵが均等に使用されれば、単位稼働時間当たりのエラー数を算出結果で信頼性を判断したときの、判断結果の統計的な正確性が向上する。
【００７３】
システムの停止時には、次回のシステム起動時に使用する情報の収集が行われる。
図１０は、システム停止時のＣＰＵ動作管理処理の手順の一例を示すフローチャートである。
【００７４】
［ステップＳ２０１］ＯＳ１１０は、アプリケーションプログラム１０１ｈを実行しているＣＰＵに対して、実行を停止させる。
［ステップＳ２０２］ＯＳ１１０は、管理プログラム１０１ｆの使用率採取モジュールに基づいて、使用率採取部１２０を起動する。使用率採取部１２０は、システムの起動から停止までの各ＣＰＵの使用率の採取処理を実行する。使用率採取処理の詳細は後述する（図１１参照）。
【００７５】
［ステップＳ２０３］ＯＳ１１０は、管理プログラム１０１ｆのエラー情報収集モジュールに基づいて、エラー情報収集部１３０を起動する。エラー情報収集部１３０は、システムの起動から停止までの各ＣＰＵのエラー情報を収集する。エラー情報収集処理の詳細は後述する（図１２参照）。
【００７６】
［ステップＳ２０４］ＯＳ１１０は、動作を停止する。
次に、使用率採取処理の詳細について説明する。
図１１は、使用率採取処理の手順の一例を示すフローチャートである。
【００７７】
［ステップＳ２１１］使用率採取部１２０は、アプリケーションプログラム１０１ｈの実行用に用意されたＣＰＵ数分（図３の例では「４」）だけ、ステップＳ２１２，Ｓ２１３の処理をループする。例えば使用率採取部１２０は、稼働時間・エラー管理簿１０１ｇに登録されているＣＰＵを、上から順に処理対象とする。
【００７８】
［ステップＳ２１２］使用率採取部１２０は、前回の平均使用率を設定する。例えば使用率採取部１２０は、処理対象ＣＰＵの平均使用率を、ＯＳ１１０から取得する。使用率採取部１２０は、取得した平均使用率を、処理対象のＣＰＵに関する前回の平均使用率として、稼働時間・エラー管理簿１０１ｇ内に設定する。
【００７９】
［ステップＳ２１３］使用率採取部１２０は、処理対象のＣＰＵの実質稼働時間の値を更新する。例えば使用率採取部１２０は、ＯＳ１１０から、システムの最後の起動から現在までの時間（稼働時間）を取得する。そして使用率採取部１２０は、処理対象のＣＰＵの平均使用率に取得した稼働時間を乗算した値を、稼働時間・エラー管理簿１０１ｇ内の該当ＣＰＵの実質稼働時間に加算する。
【００８０】
［ステップＳ２１４］使用率採取部１２０は、アプリケーションプログラム１０１ｈの実行用に用意されたすべてのＣＰＵ１０１ｂ〜１０１ｅについて処理が完了したら、使用率採取処理を終了する。
【００８１】
次に、エラー情報収集処理について説明する。
図１２は、エラー情報収集処理の手順の一例を示すフローチャートである。
［ステップＳ２２１］エラー情報収集部１３０は、アプリケーションプログラム１０１ｈの実行用に用意されたすべてのＣＰＵ１０１ｂ〜１０１ｅの、訂正可能なエラー数を取得する。例えばエラー情報収集部１３０は、監視ユニット１０３から、システムの最後の起動から現在までの訂正可能なエラー情報を取得する。
【００８２】
［ステップＳ２２２］エラー情報収集部１３０は、アプリケーションプログラム１０１ｈの実行用に用意されたＣＰＵ数分（図３の例では「４」）だけ、ステップＳ２２３の処理をループする。例えばエラー情報収集部１３０は、稼働時間・エラー管理簿１０１ｇに登録されているＣＰＵを、上から順に処理対象とする。
【００８３】
［ステップＳ２２３］エラー情報収集部１３０は、訂正可能なエラー数を更新する。例えばエラー情報収集部１３０は、ステップＳ２２１で取得した訂正可能なエラー情報に基づいて、処理対象のＣＰＵに関するエラーの数を計数する。そしてエラー情報収集部１３０は、計数した値を、稼働時間・エラー管理簿１０１ｇ内の処理対象のＣＰＵの訂正可能なエラー数に加算する。
【００８４】
［ステップＳ２２４］エラー情報収集部１３０は、アプリケーションプログラム１０１ｈの実行用に用意されたすべてのＣＰＵ１０１ｂ〜１０１ｅについて処理が完了したら、エラー情報収集処理を終了する。
【００８５】
以上の処理により、第２の実施の形態では、使用するＣＰＵを起動時にローテーションし、各ＣＰＵの使用率を加味した稼働時間の実績と、訂正可能なエラー数を収集することで、信頼性の低いＣＰＵを適切に判断し、そのＣＰＵの動作を停止させることができる。
【００８６】
次に、システム全体の負荷に応じて使用するＣＰＵ数が３であり、その負荷が変動しないものとしたときの、単位時間あたりの訂正可能なエラー数の収集と、訂正不可能なエラーが発生しやすいＣＰＵの判断の具体例を示す。
【００８７】
図１３は、初回起動時における使用ＣＰＵ選定の第１の例を示す図である。図１３の例では、アプリケーションプログラム１０１ｈに対して、使用ＣＰＵ数が「３」であることが予め定義されているものとする。この場合、システム起動時に、アプリケーションプログラム１０１ｈ実行用に用意されている４つのＣＰＵ１０１ｂ〜１０１ｅのうち、３つのＣＰＵが使用される。
【００８８】
初回の起動時には、いずれのＣＰＵ１０１ｂ〜１０１ｅについても、実質稼働時間および訂正可能なエラー数の値が「０」である。そこでＣＰＵ選定部１５０は、例えば、識別番号が若番のＣＰＵから順に、使用対象として選択する。その結果、識別番号が最も大きい値「４」であるＣＰＵ１０１ｅは、使用対象から除外される。
【００８９】
ＣＰＵ選定部１５０は、使用対象から除外されたＣＰＵ１０１ｅを、オフラインにする。そしてＯＳ１１０は、オンラインとなっているＣＰＵ１０１ｂ〜１０１ｄに対して、アプリケーションプログラム１０１ｈを実行させる。
【００９０】
なおアプリケーションプログラム１０１ｈで何個のＣＰＵを使用するのかが、事前には定義されていない場合もある。
図１４は、初回起動時における使用ＣＰＵ選定の第２の例を示す図である。図１４の例では、初回起動時には、アプリケーションプログラム１０１ｈの負荷が不明であるものとする。この場合、ＣＰＵ選定部１５０は、システム全体の負荷を測定するため、１回目の起動時には、すべてのＣＰＵ１０１ｂ〜１０１ｅを使用対象とする。ＯＳ１１０は、４つのＣＰＵ１０１ｂ〜１０１ｅに対してアプリケーションプログラム１０１ｈを実行させる。
【００９１】
図１３，図１４に示した初回起動時の処理により、使用されたＣＰＵの実質稼働時間が取得できる。また訂正可能なエラーが発生した場合、そのエラーがどのＣＰＵから何回発生したのかについても取得できる。そしてシステム停止時に、稼働時間・エラー管理簿１０１ｇが更新される。次回以降のシステム起動時には、稼働時間・エラー管理簿１０１ｇの内容に応じて、使用するＣＰＵが選定される。
【００９２】
図１５は、２回目起動時における使用ＣＰＵ選定例を示す図である。図１５の例では、１回目のシステム運用時には、いずれのＣＰＵ１０１ｂ〜１０１ｅからも訂正可能なエラーは検出されていない。実質稼働時間は、「前々回までの実施稼働時間」＋「前回の稼働時間の実績」×「前回の平均使用率」で算出される。なお２回目起動時には、「前々回までの実施稼働時間」は「０」である。例えば「ＣＰＵ１」について、前回のシステム運用時の稼働時間が２０時間であり、平均使用率が０．５（５０％）であったものとする。この場合、「ＣＰＵ１」の実質稼働時間は１０時間（０ｈ＋２０ｈ×０．５＝１０ｈ）となる。
【００９３】
ＣＰＵ選定部１５０は、すべてのＣＰＵ１０１ｂ〜１０１ｅの訂正可能なエラー数が０の場合は、すべてのＣＰＵ１０１ｂ〜１０１ｅの実質稼働時間を平等にするため、実質稼働時間が長いＣＰＵは使用しない。図１５の例では、識別番号「ＣＰＵ１」ＣＰＵ１０１ｂがオフラインとなり、使用が抑止される。なお、実質稼働時間が同じ場合は、ＣＰＵ選定部１５０は、例えば識別番号が若番のＣＰＵから使用対象として選定する。
【００９４】
このように、実質稼働時間が短いＣＰＵお優先的に使用することで、初回起動時に停止していたＣＰＵ１０１ｅが使用されることとなり、ＣＰＵ１０１ｅの動作情報を収集できるようになる。また実質稼働時間が最も長いＣＰＵ１０１ｂが停止されることで、実質稼働時間の差が縮まる。すなわち、実質稼働時間の均等化が図られる。
【００９５】
図１６は、３回目起動時における使用ＣＰＵ選定例を示す図である。図１６の例では、１，２回目のシステム運用時には、いずれのＣＰＵ１０１ｂ〜１０１ｅからも訂正可能なエラーは検出されていない。２回目のシステム運用時には、識別番号「ＣＰＵ１」ＣＰＵ１０１ｂの使用が抑止されたため、このＣＰＵ１０１ｂの実質稼働時間は増加していない。他のＣＰＵ１０１ｃ〜１０１ｅは、実質稼働時間が増加している。その結果、識別番号「ＣＰＵ２」ＣＰＵ１０１ｃの実質稼働時間が最も大きくなっている。そこでＣＰＵ選定部１５０は、すべてのＣＰＵ１０１ｂ〜１０１ｅの実質稼働時間を平等にするため、実質稼働時間が長いＣＰＵ１０１ｂの使用対象外としてオフライン化する。
【００９６】
以後、すべてのＣＰＵにおいて訂正可能なエラーが発生していない間は、実質稼働時間が同等になるように、システムの起動時点で、実質稼働時間が最も長いＣＰＵが使用対象外とされる。システムｎ回目（ｎは４以上の整数）の起動時には、１以上のＣＰＵにおいて訂正可能なエラーが発生したものとする。
【００９７】
図１７は、ｎ回目の起動時における使用ＣＰＵ選定例を示す図である。図１７の例では、すべてのＣＰＵ１０１ｂ〜１０１ｅについて、１回ずつ訂正可能なエラーが検出されている。この場合、ＣＰＵ選定部１５０は、単位時間当たりの訂正可能なエラー数が最大であるＣＰＵを、使用対象外とする。図１７の例では、各ＣＰＵ１０１ｂ〜１０１ｅの訂正可能なエラー数が同じであるため、実質稼働時間が最も短い識別番号「２」のＣＰＵ１０１ｃが、単位時間当たりの訂正可能なエラー数が最大のＣＰＵとなる。そこでＣＰＵ選定部１５０は、ＣＰＵ１０１ｃを使用対象外としてオフラインにする。
【００９８】
さらにｍ回（ｍは１以上の整数）のシステムの停止・起動が繰り返されると、各ＣＰＵ１０１ｂ〜１０１ｅの訂正可能なエラー数もばらついてくる。
図１８は、ｎ＋ｍ回目の起動時における使用ＣＰＵ選定例を示す図である。図１８の例では、訂正可能なエラー回数は、識別番号「４」のＣＰＵ１０１ｅが最大である。ただし、単位時間当たりの訂正可能なエラー数は、識別番号「２」のＣＰＵ１０１ｃが最大である。この場合、ＣＰＵ選定部１５０は、単位時間当たりの訂正可能なエラー数が最大であるＣＰＵ１０１ｃを、使用対象外とする。
【００９９】
これにより各ＣＰＵの稼働時間の実績に差異があっても、訂正不可能なエラーが発生しやすいＣＰＵを適切に判断でき、そのＣＰＵを使用しないことで、システムがダウンすることを抑止できる。また第２の実施の形態では、使用率を加味した稼働時間の実績を使う。これは、単純な稼働時間のみでは、ほとんどアイドル状態にならないＣＰＵと、通常アイドル状態になっているＣＰＵとを同等に扱ってしまうためである。稼働時間の実績の算出に利用率を加味することで、ＣＰＵが実際に使用された実績を正確に求めることができる。
【０１００】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【符号の説明】
【０１０１】
１０  情報処理装置
１１〜１４  プロセッサ（ＣＰＵ）
１５  記憶部
１５ａ  動作情報管理テーブル
１６  制御部
【図１】
0006558098.tif 000002
【図２】
0006558098.tif 000003
【図３】
0006558098.tif 000004
【図４】
0006558098.tif 000005
【図５】
0006558098.tif 000006
【図６】
0006558098.tif 000007
【図７】
0006558098.tif 000008
【図８】
0006558098.tif 000009
【図９】
0006558098.tif 000010
【図１０】
0006558098.tif 000011
【図１１】
0006558098.tif 000012
【図１２】
0006558098.tif 000013
【図１３】
0006558098.tif 000014
【図１４】
0006558098.tif 000015
【図１５】
0006558098.tif 000016
【図１６】
0006558098.tif 000017
【図１７】
0006558098.tif 000018
【図１８】
0006558098.tif 000019