(57)【特許請求の範囲】
【請求項１】
処理手段により実行される所定長の周期毎の処理の数が、最大処理数以下となるように、要求された処理の実行を前記処理手段に指示する実行制御手段と、
前記要求された処理の重みの累積値に応じて、前記最大処理数を設定する、処理数制御手段と、
を備える情報処理装置。
【請求項２】
前記処理数制御手段は、現在より前の所定期間における前記累積値が所定の閾値以上の場合、前記最大処理数に、前記累積値が所定の閾値未満の場合の前記最大処理数より小さい値を設定する、
請求項１に記載の情報処理装置。
【請求項３】
前記重みは、処理時間の長い処理の重みが、処理時間の短い処理より大きくなるように設定される、
請求項１または２に記載の情報処理装置。
【請求項４】
前記実行制御手段は、前記所定長の周期の各々において、前記処理手段により実行された処理の数が前記最大処理数に等しくなった場合に、所定のバックグラウンド処理を完了するために必要な時間の間、要求された処理の前記処理手段への実行指示を中断し、
前記処理手段は、前記処理手段により実行が指示されている処理がない場合に、所定のバックグラウンド処理を行う、
請求項１乃至３のいずれかに記載の情報処理装置。
【請求項５】
前記実行制御手段は、前記所定のバックグラウンド処理を完了するために必要な時間経過後、前記所定長の周期毎の前記処理手段により実行される処理の数が前記最大処理数を超えて、前記要求された処理の実行を前記処理手段に指示する、
請求項４に記載の情報処理装置。
【請求項６】
要求された処理の重みの累積値に応じて、最大処理数を設定し、
処理手段により実行される所定長の周期毎の処理の数が、前記最大処理数以下となるように、前記要求された処理の実行を前記処理手段に指示する、
情報処理方法。
【請求項７】
前記最大処理数を設定する場合、現在より前の所定期間における前記累積値が所定の閾値以上の場合、前記最大処理数に、前記累積値が所定の閾値未満の場合の前記最大処理数より小さい値を設定する、
請求項６に記載の情報処理方法。
【請求項８】
前記重みは、処理時間の長い処理の重みが、処理時間の短い処理より大きくなるように設定される、
請求項６または７に記載の情報処理方法。
【請求項９】
前記処理手段において、実行が指示されている処理がない場合に、所定のバックグラウンド処理が行われ、
前記所定長の周期の各々において、前記処理手段により実行された処理の数が前記最大処理数に等しくなった場合、所定のバックグラウンド処理を完了するために必要な時間の間、要求された処理の前記処理手段への実行指示を中断する、
請求項６乃至８のいずれかに記載の情報処理方法。
【請求項１０】
コンピュータに、
要求された処理の重みの累積値に応じて、最大処理数を設定し、
処理手段により実行される所定長の周期毎の処理の数が、前記最大処理数以下となるように、前記要求された処理の実行を前記処理手段に指示する、
処理を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、及び、プログラムに関し、特に、要求されたコマンドに係る処理とバックグラウンド処理とを実行する、情報処理装置、情報処理方法、及び、プログラムに関する。
【背景技術】
【０００２】
複数のホストがディスク装置等の共通資源にアクセスするシステムにおいて、各ホストからの要求(コマンド)に対する排他制御を、排他制御装置を用いて行う方法が、例えば、特許文献１に開示されている。
【０００３】
特許文献１のような排他制御装置は、ホストから受け取るコマンドに係る処理を実行するだけでなく、装置の障害監視等のバックグラウンド処理も実行する。ホストからのコマンドは、迅速な処理が要求されるため、排他制御装置は、ホストからのコマンドに係る処理を優先的に実行し、ホストからのコマンドがない時間に、バックグラウンド処理を行う。この場合、ホストからのコマンドの負荷が高くなると、バックグラウンド処理の実行が滞り、装置が正常に動作しなくなる可能性がある。そこで、例えば、所定長の周期毎に実行するコマンドの数を制限する技術が用いられる。これにより、ある周期において実行したコマンドの数が上限に達した場合は、当該周期における以降のコマンドの実行が中断され、バックグラウンド処理が実行される。
【０００４】
図１６は、このような、周期毎に実行するコマンドの数を制限する技術における、受信したコマンドの実行タイミングの例を示す図である。図１６の例では、５００ｍｓｅｃの周期（コマンドカウント周期）毎に、実行したコマンド数がカウントされ、ある周期のコマンド数が１００になった場合、次の周期が開始されるまで、コマンドの実行が中断される。
【０００５】
一方、データベースの巨大化等により、排他制御が必要な資源数が増大し、１台の排他制御装置では、処理できる資源数や性能に係る要求を満たせなくなりつつある。そのため、複数の排他制御装置を用いて処理を分散する技術が用いられている。このように、複数の排他制御装置を用いた場合、一部の排他制御装置の障害が全体の運用に影響するため、排他制御装置同士が互いに死活監視を行う必要がある。死活監視等の処理はバックグラウンドで行われるが、このようなバックグラウンド処理が滞ることは許されない。
【０００６】
図１７は、複数の排他制御装置を用いたシステムにおいて、各排他制御装置がホストから受信するコマンドの例を示す図である。
【０００７】
図１７に示すように、ホストから受信するコマンドは、処理に要する時間（ＣＰＵ(Central Processing Unit)占有率）、発生頻度の違い等で、複数の種類に分類できる。複数の排他制御装置を用いたシステムでは、ある排他制御装置が故障した場合、上位装置（複数のホスト）が、他の排他制御装置への情報の再生（リカバリ）を実行する。リカバリでは、図１７におけるリカバリ系コマンドのように、ＣＰＵ占有率の高いコマンドが連続して発行される。この場合、所定長の周期毎に実行するコマンドの数を制限する技術を用いても、コマンド数が上限に達することなくＣＰＵが占有され続けてしまうため、バックグラウンド処理が実行されないことがある。そのため、ホストは、リカバリの開始および終了を排他制御装置へ通知し、排他制御装置は、リカバリ中におけるバックグラウンド処理の実行停止による誤動作を防ぐための対処を行っていた。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００３−３３０９０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上述のように、排他制御装置において、所定長の周期毎に実行するコマンドの数を制限する方法では、コマンドの種類によっては、バックグラウンド処理が実行されないという問題があった。
【００１０】
本発明の目的は、上述した課題を解決し、複数種類のコマンドが実行される場合でも、バックグラウンド処理の実行停止を防ぐことができる、情報処理装置、情報処理方法、及び、プログラムを提供することにある。
【課題を解決するための手段】
【００１１】
本発明の情報処理装置は、処理手段により実行される所定長の周期毎の処理の数が、最大処理数以下となるように、要求された処理の実行を前記処理手段に指示する実行制御手段と、前記要求された処理の重みの累積値に応じて、前記最大処理数を設定する、処理数制御手段と、を備える。
【００１２】
本発明の情報処理方法は、要求された処理の重みの累積値に応じて、最大処理数を設定し、処理手段により実行される所定長の周期毎の処理の数が、前記最大処理数以下となるように、前記要求された処理の実行を前記処理手段に指示する。
【００１３】
本発明のプログラムは、コンピュータに、要求された処理の重みの累積値に応じて、最大処理数を設定し、処理手段により実行される所定長の周期毎の処理の数が、前記最大処理数以下となるように、前記要求された処理の実行を前記処理手段に指示する、処理を実行させる。
【発明の効果】
【００１４】
本発明の効果は、複数種類のコマンドが実行される場合でも、バックグラウンド処理の実行停止を防げることである。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施の形態の特徴的な構成を示すブロック図である。
【図２】本発明の実施の形態における、排他制御装置１００の構成を示すブロック図である。
【図３】本発明の実施の形態における、排他制御システム１の構成を示すブロック図である。
【図４】本発明の実施の形態における、コンピュータにより実現された排他制御装置１００の構成を示すブロック図である。
【図５】本発明の実施の形態における、重み集計処理を示すフローチャートである。
【図６】本発明の実施の形態における、コマンド受信処理を示すフローチャートである。
【図７】本発明の実施の形態における、コマンド実行制御処理を示すフローチャートである。
【図８】本発明の実施の形態における、コマンド実行処理を示すフローチャートである。
【図９】本発明の実施の形態における、集計テーブル２３２の例を示す図である。
【図１０】本発明の実施の形態における、重みテーブル２４２の例を示す図である。
【図１１】本発明の実施の形態における、デフォルトコマンド数２４４の例を示す図である。
【図１２】本発明の実施の形態における、重み閾値２４５の例を示す図である。
【図１３】本発明の実施の形態における、コマンドに係る処理、及び、バックグラウンド処理の実行例を示す図である。
【図１４】本発明の実施の形態における、コマンドに係る処理、及び、バックグラウンド処理の実行例（図１３の続き）を示す図である。
【図１５】本発明の実施の形態における、コマンドに係る処理、及び、バックグラウンド処理の実行例（図１４の続き）を示す図である。
【図１６】周期毎に実行するコマンドの数を制限する技術における、受信したコマンドの実行タイミングの例を示す図である。
【図１７】複数の排他制御装置を用いたシステムにおいて、各排他制御装置がホストから受信するコマンドの例を示す図である。
【発明を実施するための形態】
【００１６】
はじめに、本発明の実施の形態の構成について説明する。図３は、本発明の実施の形態における、排他制御システム１の構成を示すブロック図である。
【００１７】
排他制御システム１は、複数の排他制御装置１００、複数のホスト３００、及び、資源４００を含む。排他制御装置１００は、本発明の情報処理装置の一実施形態である。
【００１８】
各排他制御装置１００は、複数のホスト３００の各々とネットワーク等により接続される。また、各排他制御装置１００は、複数のホスト３００が共有する資源４００と接続される。資源４００は、例えば、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）等のディスク装置である。また、資源４００は、拡張メモリ等でもよい。
【００１９】
複数のホスト３００の各々は、複数の排他制御装置１００のいずれかにコマンドを送信して、資源４００へのアクセス（例えば、資源４００上のデータの読み出し／書き込み）を行う。
【００２０】
複数の排他制御装置１００は、互いに連携して、ホスト３００から資源４００へのアクセスに係る排他制御（例えば、資源４００上の同じデータに対する、複数ホスト３００からの同時アクセスの制限）を行う。また、複数の排他制御装置１００のいずれかに障害が発生した場合、ホスト３００は、残りの排他制御装置１００で運用が継続できるように、リカバリを行う。
【００２１】
図２は、本発明の実施の形態における、排他制御装置１００の構成を示すブロック図である。
【００２２】
排他制御装置１００は、インターバルタイマ１１０、スリープタイマ１２０、集計制御部１３０、インデックス記憶部１３１、及び、集計テーブル記憶部１３２を含む。また、排他制御装置１００は、コマンド受信部１４０、重みテーブル記憶部１４２、最大コマンド数記憶部１４３、デフォルトコマンド数記憶部１４４、重み閾値記憶部１４５、及び、実行待ちキュー１５０を含む。さらに、排他制御装置１００は、実行制御部１６０、実行カウンタ記憶部１６１、制御カウンタ記憶部１６２、バックグラウンド処理時間記憶部１６３、及び、処理部１７０を含む。
【００２３】
インターバルタイマ１１０は、所定の時間間隔（インターバル）で、集計制御部１３０と実行制御部１６０とを起床させるタイマである。インターバルの長さは、例えば管理者等により、外部から設定されてもよい。本発明の実施の形態では、後述する、排他制御装置１００で実行されたコマンド数（処理数）をカウントする周期（コマンドカウント周期）の長さや、重み累積カウンタの合計値を算出するための期間（重み合計期間）は、インターバルの回数をもとに設定される。
【００２４】
スリープタイマ１２０は、設定された時間後に、実行制御部１６０を起床させるタイマである。
【００２５】
インデックス記憶部１３１は、現在インデックス２３１を記憶する。現在インデックス２３１は、集計テーブル２３２において、コマンドの重みを累積中である重み累積カウンタのインデックスを示す。
【００２６】
集計テーブル記憶部１３２は、集計テーブル２３２を記憶する。集計テーブル２３２は、インターバル毎の重み累積カウンタを記憶する。
【００２７】
図９は、本発明の実施の形態における、集計テーブル２３２の例を示す図である。図９の例では、集計テーブル２３２は、ｎ個（ｎは、例えば、ｎ≧２の整数）の重み累積カウンタからなる配列である。ｎ個の重み累積カウンタは、サイクリックに使用される。各重み累積カウンタには、対応するインターバルにおける、コマンドの重みの累積値が設定される。
【００２８】
集計制御部１３０は、インターバル毎に、現在インデックス２３１をインクリメント（１を加算）し、集計テーブル２３２における、現在インデックス２３１が示す重み累積カウンタを初期化する。なお、インクリメント後の現在インデックス２３１の値が、集計テーブル２３２の重み累積カウンタの数を超える場合、現在インデックス２３１の値は、集計テーブル２３２における、先頭の重み累積カウンタを示すように更新される。
【００２９】
重みテーブル記憶部１４２は、重みテーブル２４２を記憶する。重みテーブル２４２は、各コマンドに係る処理が、排他制御装置１００のＣＰＵを占有する度合い、或いは、各コマンドに係る処理が、他の処理に与える影響の度合いを表す、重みを示す。
【００３０】
図１０は、本発明の実施の形態における、重みテーブル２４２の例を示す図である。各コマンドの重みは、図１７で示したような、各コマンドの特性や、ＣＰＵ占有度、発生頻度をもとに決定される。重みテーブル２４２は、例えば、管理者等により、予め設定される。
【００３１】
最大コマンド数記憶部１４３は、最大コマンド数２４３を記憶する。最大コマンド数２４３は、コマンドカウント周期におけるコマンド数（処理数）の上限を示す。最大コマンド数２４３は、上述のように、コマンド数制御部１４１により更新される。
【００３２】
デフォルトコマンド数記憶部１４４は、デフォルトコマンド数２４４を記憶する。デフォルトコマンド数２４４は、通常時に、最大コマンド数２４３に設定される値を示す。デフォルトコマンド数２４４は、排他制御装置１００の処理能力（性能）等をもとに決定される。デフォルトコマンド数２４４は、例えば、管理者等により、予め設定される。
【００３３】
図１１は、本発明の実施の形態における、デフォルトコマンド数２４４の例を示す図である。図１１の例では、デフォルトコマンド数２４４に「１８」が設定されている。
【００３４】
重み閾値記憶部１４５は、重み閾値２４５を記憶する。重み閾値２４５は、最大コマンド数２４３をデフォルトコマンド数２４４より小さい値に制限するかどうかを判定するために用いられる。重み閾値２４５は、重み合計期間の重み累積カウンタの合計値と比較される。重み合計期間は、現在のインターバルより前の、所定数のインターバルの期間である。重み閾値２４５は、例えば、管理者等により、予め設定される。
【００３５】
図１２は、本発明の実施の形態における、重み閾値２４５の例を示す図である。図１２の例では、重み閾値２４５に「６」が設定されている。
【００３６】
コマンド受信部１４０は、ホスト３００から受信したコマンドを、実行待ちキュー１５０へキューイングし、実行制御部１６０を起床させる。
【００３７】
コマンド受信部１４０は、コマンド数制御部１４１（または、処理数制御部）を含む。コマンド数制御部１４１は、ホスト３００から受信したコマンドの重みを重みテーブル２４２から抽出し、現在インデックス２３１が示す重み累積カウンタに加算する。また、コマンド数制御部１４１は、重み合計期間の重み累積カウンタの合計値を算出し、算出した合計値と重み閾値２４５とを比較する。合計値が重み閾値２４５以上の場合、コマンド数制御部１４１は、最大コマンド数２４３を、デフォルトコマンド数２４４の半分に制限する。それ以外の場合、コマンド数制御部１４１は、最大コマンド数２４３にデフォルトコマンド数２４４を設定する。
【００３８】
実行待ちキュー１５０は、排他制御装置１００が実行すべきコマンドをＦＩＦＯ（First In, First Out）形式で記憶する。
【００３９】
実行カウンタ記憶部１６１は、実行カウンタ２６１を記憶する。実行カウンタ２６１は、コマンドカウント周期において実行されたコマンド数（処理数）を示す。
【００４０】
制御カウンタ記憶部１６２は、制御カウンタ２６２を記憶する。制御カウンタ２６２は、インターバルの回数を示す。
【００４１】
バックグラウンド処理時間記憶部１６３は、バックグラウンド処理時間２６３を記憶する。バックグラウンド処理時間２６３は、各コマンドカウント周期において、コマンドに係る処理以外の、バックグラウンド処理（例えば、排他制御装置１００の障害監視、性能監視等）を実行するために必要な時間を示す。バックグラウンド処理時間２６３は、例えば、管理者等により設定される。
【００４２】
実行制御部１６０は、実行待ちキュー１５０にキューイングされたコマンドの実行を、処理部１７０に指示する。
【００４３】
実行制御部１６０は、実行カウンタ２６１が最大コマンド数２４３に達していなければ、実行待ちキュー１５０からコマンドを取得し、当該コマンドの実行を、処理部１７０に指示する。ここで、実行制御部１６０は、実行カウンタ２６１をインクリメント（１を加算）する。また、実行制御部１６０は、実行カウンタ２６１が最大コマンド数２４３に達していれば、バックグラウンド処理時間２６３経過後に、実行待ちキュー１５０からコマンドを取得し、当該コマンドの実行を、処理部１７０に指示する。
【００４４】
さらに、実行制御部１６０は、インターバル毎に、制御カウンタ２６２をインクリメント（１を加算）する。実行制御部１６０は、制御カウンタ２６２をもとに、コマンドカウント周期の経過を検出し、コマンドカウント周期毎に実行カウンタ２６１をリセットする。
【００４５】
処理部１７０は、実行制御部１６０から指示されたコマンドに係る処理（排他制御処理）を実行し、実行結果をホスト３００に送信する。また、処理部１７０は、当該コマンド（または、排他制御に必要なコマンド）を、他の排他制御装置１００でも実行する必要がある場合、当該コマンド（または、当該排他制御に必要なコマンド）を当該他の排他制御装置１００の実行待ちキュー１５０へ転送する。また、処理部１７０は、他の排他制御装置１００から転送されたコマンドに係る処理を実行する。
【００４６】
さらに、処理部１７０は、実行制御部１６０からコマンドの実行を指示されていない場合（実行すべきコマンドがない場合）、所定のバックグラウンド処理を実行する。
【００４７】
なお、排他制御装置１００は、ＣＰＵとプログラムを記憶した記憶媒体を含み、プログラムに基づく制御によって動作するコンピュータであってもよい。
【００４８】
図４は、本発明の実施の形態における、コンピュータにより実現された排他制御装置１００の構成を示すブロック図である。
【００４９】
排他制御装置１００は、ＣＰＵ１０１、ハードディスクやメモリ等の記憶手段（記憶媒体）１０２、他の装置等とデータ通信を行う通信手段１０３、キーボード等の入力手段１０４、及び、ディスプレイ等の出力手段１０５を含む。ＣＰＵ１０１は、インターバルタイマ１１０、スリープタイマ１２０、集計制御部１３０、コマンド受信部１４０、実行制御部１６０、及び、処理部１７０の機能を実現するためのコンピュータプログラムを実行する。記憶手段１０２は、インデックス記憶部１３１、集計テーブル記憶部１３２、重みテーブル記憶部１４２、最大コマンド数記憶部１４３、デフォルトコマンド数記憶部１４４、及び、重み閾値記憶部１４５のデータを記憶する。記憶手段１０２は、さらに、実行待ちキュー１５０、実行カウンタ記憶部１６１、制御カウンタ記憶部１６２、バックグラウンド処理時間記憶部１６３のデータを記憶する。通信手段１０３は、ホスト３００からコマンドを受信し、コマンドの実行結果をホスト３００に送信する。また、また、通信手段１０３は、コマンドに従って、資源４００へのデータの書き込み、及び、資源４００からのデータの読み出しを行う。入力手段１０４は、管理者等から、例えば、重みテーブル２４２、デフォルトコマンド数２４４、重み閾値２４５、バックグラウンド処理時間２６３等の各種設定を受け付ける。出力手段１０５は、管理者等へ、例えば、各種設定の結果を出力する。
【００５０】
次に、本発明の実施の形態の動作を説明する。
【００５１】
はじめに、本発明の実施の形態における、重み集計処理について説明する。
【００５２】
図５は、本発明の実施の形態における、重み集計処理を示すフローチャートである。
【００５３】
はじめに、集計制御部１３０は、インターバルタイマ１１０により起床されると（ステップＳ１０１）、現在インデックス２３１をインクリメントする（ステップＳ１０２）。
【００５４】
集計制御部１３０は、集計テーブル２３２における、現在インデックス２３１が示す重み累積カウンタを初期化する（ステップＳ１０３）。
【００５５】
以降、ステップＳ１０１からの処理が繰り返される。
【００５６】
コマンド受信部１４０は、現在インデックス２３１が示す重み累積カウンタに、ホスト３００から受信したコマンドの重みを加算する。現在インデックス２３１は、インターバルごとにインクリメントされるため、インターバルごとのコマンドの重みの累積値が、各重み累積カウンタに、順次、保存される。
【００５７】
次に、本発明の実施の形態における、コマンド受信処理について説明する。
【００５８】
図６は、本発明の実施の形態における、コマンド受信処理を示すフローチャートである。
【００５９】
はじめに、コマンド受信部１４０が、ホスト３００からコマンドを受信すると（ステップＳ２０１）、コマンド数制御部１４１は、重みテーブル２４２から、受信したコマンドの重みを抽出する（ステップＳ２０２）。コマンド数制御部１４１は、抽出した重みを、現在インデックス２３１が示す重み累積カウンタに加算する（ステップＳ２０３）。
【００６０】
コマンド数制御部１４１は、重み合計期間の重み累積カウンタの値の合計値を算出する（ステップＳ２０４）。
【００６１】
ここで、重み合計期間の長さは、例えば、インターバルの回数ｍ（ｍは、例えば、１≦ｍ＜ｎの整数）で指定される。この場合、コマンド数制御部１４１は、現在インデックス２３１が示す重み累積カウンタより前のｍ個の重み累積カウンタの合計値を算出する。
【００６２】
コマンド数制御部１４１は、算出した合計値と重み閾値２４５とを比較する（ステップＳ２０５）。合計値が重み閾値２４５以上の場合（ステップＳ２０５／Ｙ）、コマンド数制御部１４１は、最大コマンド数２４３に、デフォルトコマンド数２４４の半分の値を設定する（ステップＳ２０６）。合計値が重み閾値２４５未満の場合（ステップＳ２０５／Ｎ）、コマンド数制御部１４１は、最大コマンド数２４３にデフォルトコマンド数２４４の値を設定する（ステップＳ２０７）。
【００６３】
コマンド受信部１４０は、受信したコマンドを実行待ちキュー１５０へキューイングし（ステップＳ２０８）、実行制御部１６０を起床させる（ステップＳ２０９）。
【００６４】
以降、ステップＳ２０１からの処理が繰り返される。
【００６５】
次に、本発明の実施の形態における、コマンド実行制御処理について説明する。
【００６６】
図７は、本発明の実施の形態における、コマンド実行制御処理を示すフローチャートである。
【００６７】
はじめに、実行制御部１６０は、コマンド受信部１４０により起床されると（ステップＳ３０１、Ｓ３０２／Ｙ）、実行待ちキュー１５０にコマンドがあるかどうかを確認する（ステップＳ３０３）。
【００６８】
ステップＳ３０３で、コマンドがない場合（ステップＳ３０３／Ｎ）、ステップＳ３０１からの処理が繰り返される。
【００６９】
一方、ステップＳ３０３で、コマンドがある場合（ステップＳ３０３／Ｙ）、実行制御部１６０は、実行カウンタ２６１が最大コマンド数２４３未満かどうかを判定する（ステップＳ３０４）。
【００７０】
ステップＳ３０４で、最大コマンド数２４３未満の場合（ステップＳ３０４／Ｙ）、実行制御部１６０は、実行カウンタ２６１をインクリメントする（ステップＳ３０５）。そして、実行制御部１６０は、実行待ちキュー１５０からコマンドを１つ取得し（ステップＳ３０６）、処理部１７０に、当該コマンドの実行を指示する（ステップＳ３０７）。
【００７１】
以降、ステップＳ３０３からの処理が繰り返される。
【００７２】
一方、ステップＳ３０４で、最大コマンド数２４３以上の場合（ステップＳ３０４／Ｎ）、実行制御部１６０は、バックグラウンド処理時間２６３をスリープタイマ１２０に設定し、処理部１７０に対するコマンドの実行指示を中断する（スリープする）。
【００７３】
これにより、コマンドカウント周期に実行されたコマンドの数が、最大コマンド数２４３に達した場合、処理部１７０において、バックグラウンド処理が実行される。
【００７４】
実行制御部１６０は、スリープタイマ１２０より起床されると（ステップＳ３０１、Ｓ３０２／Ｎ、Ｓ３０９／Ｎ）、実行カウンタ２６１をリセットし（ステップＳ３１２）、ステップＳ３０３からの処理を実行する。
【００７５】
これにより、処理部１７０において、バックグラウンド処理が実行された後で、最大コマンド数２４３を超えたコマンドを実行させることができる。
【００７６】
また、実行制御部１６０は、インターバルタイマ１１０より起床されると（ステップＳ３０１、Ｓ３０２／Ｎ、Ｓ３０９／Ｙ）、制御カウンタ２６２をインクリメントする（ステップＳ３１０）。そして、実行制御部１６０は、制御カウンタ２６２をもとに、コマンドカウント周期が経過したかどうかを判定する（ステップＳ３１１）。
【００７７】
ここで、コマンドカウント周期の長さは、例えば、インターバルの回数ｘ（ｘは、例えば、１以上の整数）で指定される。この場合、実行制御部１６０は、制御カウンタ２６２がｘの整数倍を示した場合に、コマンドカウント周期が経過したと判定する。
【００７８】
ステップＳ３１１で、コマンドカウント周期が経過した場合（ステップＳ３１１／Ｙ）、実行制御部１６０は、実行カウンタ２６１をリセットし（ステップＳ３１２）、ステップＳ３０３からの処理を実行する。
【００７９】
これにより、コマンドカウント周期ごとに、実行カウンタ２６１はリセットされる。
【００８０】
一方、ステップＳ３１１で、コマンドカウント周期が経過していない場合（ステップＳ３１１／Ｎ）、ステップＳ３０１からの処理が繰り返される。
【００８１】
次に、本発明の実施の形態における、コマンド実行処理について説明する。
【００８２】
図８は、本発明の実施の形態における、コマンド実行処理を示すフローチャートである。
【００８３】
処理部１７０は、実行制御部１６０による、コマンドの実行指示により起床され（ステップＳ４０１）、コマンドに係る処理（排他制御処理）を実行する（ステップＳ４０２）。ここで、処理部１７０は、例えば、コマンドにより指定された、資源４００上のデータへのアクセス（読み出し／書き込み）を、同じデータに対する複数ホスト３００からの同時アクセスが発生しないように、実行する。
【００８４】
処理部１７０は、コマンドを他の排他制御装置１００でも実行する必要があるかどうかを判定する（ステップＳ４０３）。
【００８５】
ステップＳ４０３で実行する必要がある場合（ステップＳ４０３／Ｙ）、処理部１７０は、コマンドを、当該他の排他制御装置１００の実行待ちキュー１５０にキューイングする（ステップＳ４０４）。
【００８６】
処理部１７０は、実行したコマンドの処理結果を、ホスト３００へ送信する（ステップＳ４０５）。ここで、処理部１７０は、例えば、資源４００上のデータへのアクセス結果（読み出しデータ／書き込み結果）を、ホスト３００へ送信する。
【００８７】
以降、ステップＳ４０１からの処理が繰り返し、実行される。
【００８８】
次に、本発明の実施の形態の動作の具体例を説明する。
【００８９】
図１３〜図１５は、本発明の実施の形態における、コマンドに係る処理、及び、バックグラウンド処理の実行例を示す図である。
【００９０】
ここでは、重みテーブル記憶部１４２に、図１０の重みテーブル２４２、デフォルトコマンド数記憶部１４４に、図１１のデフォルトコマンド数２４４、重み閾値記憶部１４５に、図１２の重み閾値２４５が、それぞれ設定されていると仮定する。また、コマンドカウント周期の長さはインターバル１０回分（ｘ＝１０）、集計テーブル２３２における重み累積カウンタの数は４（ｎ＝４）、重み合計期間の長さはインターバル２回分（ｍ＝２）であると仮定する。
【００９１】
また、図１０の重みテーブル２４２におけるコマンド「Ｂ」、「Ｃ」の処理に必要な時間（ＣＰＵを占有する時間）は、コマンド「Ａ」の処理に必要な時間の、それぞれ、２倍、３倍であると仮定する。さらに、バックグラウンド処理時間２６３には、コマンド「Ａ」の処理に必要な時間の６倍が設定されていると仮定する。
【００９２】
また、ここでは。制御カウンタ２６２が「ｊ」を示すインターバルを、インターバル「ｊ」のように記述する。
【００９３】
図１３〜図１５に示すように、実行制御部１６０は、インターバル毎に、制御カウンタ２６２をインクリメントする。また、実行制御部１６０は、コマンドカウント周期毎（制御カウンタ２６２の値が「１０」の倍数（１０、２０、…）のとき）に、実行カウンタ２６１をリセットする。集計制御部１３０は、インターバル毎に、現在インデックス２３１を「０」〜「３」の範囲でインクリメントする。
【００９４】
コマンド受信部１４０は、ホスト３００から受信したコマンド（「Ａ」、「Ｂ」、「Ｃ」）を、実行待ちキュー１５０にキューイングする。ここで、コマンド数制御部１４１は、インターバル毎に、コマンド（「Ａ」、「Ｂ」、「Ｃ」）に対する重み（それぞれ、「１」、「２」、「３」）を、現在インデックス２３１により示される重み累積カウンタ（インデックス「０」〜「３」）に加算する。また、コマンド数制御部１４１は、現在のインターバルの前のインターバルから、前方の２つのインターバルの重み累積カウンタの合計値を算出する。
【００９５】
重み累積カウンタの合計値が重み閾値２４５「６」未満の場合、コマンド数制御部１４１は、最大コマンド数２４３にデフォルトコマンド数２４４「１８」を設定する。重み累積カウンタの合計値が重み閾値２４５「６」以上の場合、コマンド数制御部１４１は、最大コマンド数２４３にデフォルトコマンド数２４４の半分である「９」を設定する。
【００９６】
例えば、最初のコマンドカウント周期（図１３、インターバル「０」〜「９」）では、重みの小さなコマンド「Ａ」や「Ｂ」が、散発的に、ホスト３００から受信される。この場合、各インターバルで算出される重み累積カウンタの合計値は「６」未満であるため、最大コマンド数２４３には「１８」が設定される。
【００９７】
また、次のコマンドカウント周期（図１４、インターバル「１０」〜「１９」）では、重みの小さなコマンド「Ａ」が、集中的に、ホスト３００から受信される。この場合も、各インターバルで算出される重み累積カウンタの合計値は「６」未満であるため、最大コマンド数２４３には「１８」が設定される。
【００９８】
さらに、次のコマンドカウント周期（図１５、インターバル「２０」〜「２９」）では、重みの小さなコマンド「Ｃ」が、連続的に、ホスト３００から受信される。この場合、インターバル「２５」「２６」において、重み累積カウンタの合計値「６」が算出されるため、最大コマンド数２４３は「９」に制限される。
【００９９】
実行制御部１６０は、実行カウンタ２６１の値が最大コマンド数２４３（「１８」または「９」）未満であれば、実行待ちキュー１５０にキューイングされたコマンドの実行を、処理部１７０に指示し、実行カウンタ２６１をインクリメントする。また、実行制御部１６０は、実行カウンタ２６１の値が最大コマンド数２４３（「１８」または「９」）以上であれば、バックグラウンド処理時間２６３の間、処理部１７０に対するコマンドの実行指示を中断する。処理部１７０は、実行制御部１６０により指示されているコマンドが無い場合、バックグラウンド処理を実行する。
【０１００】
例えば、最初のコマンドカウント周期（図１３、インターバル「０」〜「９」）では、実行カウンタ２６１の値は「１８」に達していないため、各コマンドの実行指示は中断されない。処理部１７０では、各コマンドに係る処理が実行されるとともに、コマンドが無いタイミングで、バックグラウンド処理に必要な時間（バックグラウンド処理時間２６３）が確保され、バックグラウンド処理が実行される。
【０１０１】
また、次のコマンドカウント周期（図１４、インターバル「１０」〜「１９」）では、インターバル「１７」の時刻「ｔ１」で、実行カウンタ２６１の値が「１８」に達している。このため、時刻「ｔ１」〜「ｔ２」のバックグラウンド処理時間２６３の間、処理部１７０に対するコマンドの実行指示が中断される。これにより、処理部１７０では、時刻「ｔ１」より前のコマンドが無いタイミング、及び、時刻「ｔ１」〜「ｔ２」の間で、バックグラウンド処理時間２６３が確保され、バックグラウンド処理が実行される。そして、インターバル「１９」の時刻「ｔ２」で、処理部１７０に対するコマンドの実行指示が再開される。
【０１０２】
また、次のコマンドカウント周期（図１５、インターバル「２０」〜「２９」）では、インターバル「２６」の時刻「ｔ３」で、実行カウンタ２６１の値が、制限された値「９」に達している。このため、時刻「ｔ３」〜「ｔ４」のバックグラウンド処理時間２６３の間、処理部１７０に対するコマンドの実行指示が中断される。これにより、処理部１７０では、時刻「ｔ３」より前のコマンドが無いタイミング、及び、時刻「ｔ３」〜「ｔ４」の間で、バックグラウンド処理時間２６３が確保され、バックグラウンド処理が実行される。そして、インターバル「２８」の時刻「ｔ４」で、処理部１７０に対するコマンドの実行指示が再開される。
【０１０３】
以上により、本発明の実施の形態の動作が完了する。
【０１０４】
なお、本発明の実施の形態では、重み累積カウンタの合計値が重み閾値２４５以上の場合に、実行されるコマンドの数を制限するために、最大コマンド数２４３に、デフォルトコマンド数２４４よりも小さい値を設定した。しかしながら、これに限らず、最大コマンド数２４３を変える代わりに、コマンドを実行したときに実行カウンタ２６１に加算する値を変えてもよい。この場合、例えば、上述のステップＳ２０５で、合計値が重み閾値２４５以上の場合、ステップＳ２０６で、コマンド数制御部１４１は、カウント係数に２を設定する。また、上述のステップＳ２０５で、合計値が重み閾値２４５未満の場合、ステップＳ２０６で、コマンド数制御部１４１は、カウント係数に１を設定する。そして、上述のステップＳ３０５で、実行制御部１６０は、実行カウンタ２６１にカウント係数を加算する。
【０１０５】
また、本発明の実施の形態では、重み累積カウンタの合計値が重み閾値２４５以上の場合に、最大コマンド数２４３に、デフォルトコマンド数２４４の半分の値を設定した。しかしながら、これに限らず、合計値の範囲に対して設定された、複数のレベルに応じたコマンド数を、最大コマンド数２４３に設定してもよい。
【０１０６】
次に、本発明の実施の形態の特徴的な構成を説明する。図１は、本発明の実施の形態の特徴的な構成を示すブロック図である。
【０１０７】
排他制御装置１００（情報処理装置）は、実行制御部１６０、及び、コマンド数制御部１４１（処理数制御部）を含む。実行制御部１６０は、コマンドカウント周期（所定長の周期）毎の処理部１７０により実行されるコマンド（処理）の数が、最大コマンド数２４３（最大処理数）以下となるように、要求されたコマンド（処理）を処理部１７０に実行させる。コマンド数制御部１４１は、要求されたコマンド（処理）の重みの累積値に応じて、最大コマンド数２４３（最大処理数）を設定する。
【０１０８】
本発明の実施の形態によれば、複数種類のコマンドが実行される場合でも、バックグラウンド処理の実行停止を防ぐことができる。その理由は、コマンド数制御部１４１が、要求されたコマンドの重みの累積値に応じて、最大コマンド数２４３を設定するためである。
【０１０９】
これにより、例えば、コマンド数は少ないものの、ＣＰＵ占有率が高いコマンドがある期間に連続して発生した場合でも、実行するコマンドの数が制限され、バックグラウンド処理を実行できる。
【０１１０】
また、図１６に示すように、周期毎に実行するコマンドの数を制限する技術では、ある周期でコマンドが多発し、コマンドの実行が中断された場合、中断されたコマンドのＴＡＴ（Turn Around Time）が増大（間延び）するという問題があった。
【０１１１】
本発明の実施の形態によれば、実行が中断されたコマンドのＴＡＴが増大することを防ぐことができる。その理由は、実行したコマンドの数が最大コマンド数２４３に達した場合でも、バックグラウンド処理時間２６３経過後に、中断されたコマンドを処理部１７０に実行させるためである。
【０１１２】
これにより、ある周期において、実行したコマンドの数が上限に達した場合でも、図１６のように次の周期の開始を待つことなく、バックグラウンド処理終了後、当該周期の残りの時間に、中断されたコマンドを実行できる。このため、中断されたコマンドのＴＡＴの増大は、最小限に抑えられる。
【０１１３】
また、本発明の実施の形態によれば、複数の排他制御装置を用いて処理を分散するシステムで行われる、排他制御装置の故障に伴うリカバリにおいて、ホストからのリカバリの開始、終了の通知や、排他制御装置における誤動作を防ぐための対処が不要である。その理由は、リカバリにおいてＣＰＵ占有率の高い（重みの大きい）コマンドが連続して発行された場合の最大コマンド数２４３の制限、及び、リカバリ終了後の最大コマンド数２４３の制限解除が、コマンド数制御部１４１により動的に実行されるためである。
【０１１４】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０１１５】
例えば、本発明の実施の形態では、排他制御システム１に含まれる複数の排他制御装置１００が、連携して、ホスト３００から資源４００へのアクセスに係る排他制御を行う場合を例に説明した。しかしながら、排他制御装置１００が、複数種類のコマンドとバックグラウンド処理とを行う装置であれば、排他制御システム１は、１つの排他制御装置１００により構成されていてもよい。
【０１１６】
また、本発明の実施の形態では、情報処理装置が、ホスト３００から資源４００へのアクセスに係る排他制御を行う排他制御装置１００である場合を例に説明した。しかしながら、受信したコマンドや発生したイベントに応じた複数種類の処理とバックグラウンド処理とを行う装置であれば、情報処理装置は、排他制御装置１００以外の装置でもよい。
【符号の説明】
【０１１７】
１    排他制御システム
１００    排他制御装置
１０１    ＣＰＵ
１０２    記憶手段
１０３    通信手段
１０４    入力手段
１０５    出力手段
１１０    インターバルタイマ
１２０    スリープタイマ
１３０    集計制御部
１３１    インデックス記憶部
１３２    集計テーブル記憶部
１４０    コマンド受信部
１４１    コマンド数制御部
１４２    重みテーブル記憶部
１４３    最大コマンド数記憶部
１４４    デフォルトコマンド数記憶部
１４５    重み閾値記憶部
１５０    実行待ちキュー
１６０    実行制御部
１６１    実行カウンタ記憶部
１６２    制御カウンタ記憶部
１６３    バックグラウンド処理時間記憶部
１７０    処理部
２３１    現在インデックス
２３２    集計テーブル
２４２    重みテーブル
２４３    最大コマンド数
２４４    デフォルトコマンド数
２４５    重み閾値
２６１    実行カウンタ
２６２    制御カウンタ
２６３    バックグラウンド処理時間
３００    ホスト
４００    資源
【図１】
0006384218.tif 000002
【図２】
0006384218.tif 000003
【図３】
0006384218.tif 000004
【図４】
0006384218.tif 000005
【図５】
0006384218.tif 000006
【図６】
0006384218.tif 000007
【図７】
0006384218.tif 000008
【図８】
0006384218.tif 000009
【図９】
0006384218.tif 000010
【図１０】
0006384218.tif 000011
【図１１】
0006384218.tif 000012
【図１２】
0006384218.tif 000013
【図１３】
0006384218.tif 000014
【図１４】
0006384218.tif 000015
【図１５】
0006384218.tif 000016
【図１６】
0006384218.tif 000017
【図１７】
0006384218.tif 000018