(58)【調査した分野】(Int.Cl.,DB名)
前記実行制御手段は、前記所定長の周期の各々において、前記処理手段により実行された処理の数が前記最大処理数に等しくなった場合に、所定のバックグラウンド処理を完了するために必要な時間の間、要求された処理の前記処理手段への実行指示を中断し、
前記処理手段は、前記処理手段により実行が指示されている処理がない場合に、所定のバックグラウンド処理を行う、
請求項1乃至3のいずれかに記載の情報処理装置。
前記実行制御手段は、前記所定のバックグラウンド処理を完了するために必要な時間経過後、前記所定長の周期毎の前記処理手段により実行される処理の数が前記最大処理数を超えて、前記要求された処理の実行を前記処理手段に指示する、
請求項4に記載の情報処理装置。
前記最大処理数を設定する場合、現在より前の所定期間における前記累積値が所定の閾値以上の場合、前記最大処理数に、前記累積値が所定の閾値未満の場合の前記最大処理数より小さい値を設定する、
請求項6に記載の情報処理方法。
【発明を実施するための形態】
【0016】
はじめに、本発明の実施の形態の構成について説明する。
図3は、本発明の実施の形態における、排他制御システム1の構成を示すブロック図である。
【0017】
排他制御システム1は、複数の排他制御装置100、複数のホスト300、及び、資源400を含む。排他制御装置100は、本発明の情報処理装置の一実施形態である。
【0018】
各排他制御装置100は、複数のホスト300の各々とネットワーク等により接続される。また、各排他制御装置100は、複数のホスト300が共有する資源400と接続される。資源400は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)等のディスク装置である。また、資源400は、拡張メモリ等でもよい。
【0019】
複数のホスト300の各々は、複数の排他制御装置100のいずれかにコマンドを送信して、資源400へのアクセス(例えば、資源400上のデータの読み出し/書き込み)を行う。
【0020】
複数の排他制御装置100は、互いに連携して、ホスト300から資源400へのアクセスに係る排他制御(例えば、資源400上の同じデータに対する、複数ホスト300からの同時アクセスの制限)を行う。また、複数の排他制御装置100のいずれかに障害が発生した場合、ホスト300は、残りの排他制御装置100で運用が継続できるように、リカバリを行う。
【0021】
図2は、本発明の実施の形態における、排他制御装置100の構成を示すブロック図である。
【0022】
排他制御装置100は、インターバルタイマ110、スリープタイマ120、集計制御部130、インデックス記憶部131、及び、集計テーブル記憶部132を含む。また、排他制御装置100は、コマンド受信部140、重みテーブル記憶部142、最大コマンド数記憶部143、デフォルトコマンド数記憶部144、重み閾値記憶部145、及び、実行待ちキュー150を含む。さらに、排他制御装置100は、実行制御部160、実行カウンタ記憶部161、制御カウンタ記憶部162、バックグラウンド処理時間記憶部163、及び、処理部170を含む。
【0023】
インターバルタイマ110は、所定の時間間隔(インターバル)で、集計制御部130と実行制御部160とを起床させるタイマである。インターバルの長さは、例えば管理者等により、外部から設定されてもよい。本発明の実施の形態では、後述する、排他制御装置100で実行されたコマンド数(処理数)をカウントする周期(コマンドカウント周期)の長さや、重み累積カウンタの合計値を算出するための期間(重み合計期間)は、インターバルの回数をもとに設定される。
【0024】
スリープタイマ120は、設定された時間後に、実行制御部160を起床させるタイマである。
【0025】
インデックス記憶部131は、現在インデックス231を記憶する。現在インデックス231は、集計テーブル232において、コマンドの重みを累積中である重み累積カウンタのインデックスを示す。
【0026】
集計テーブル記憶部132は、集計テーブル232を記憶する。集計テーブル232は、インターバル毎の重み累積カウンタを記憶する。
【0027】
図9は、本発明の実施の形態における、集計テーブル232の例を示す図である。
図9の例では、集計テーブル232は、n個(nは、例えば、n≧2の整数)の重み累積カウンタからなる配列である。n個の重み累積カウンタは、サイクリックに使用される。各重み累積カウンタには、対応するインターバルにおける、コマンドの重みの累積値が設定される。
【0028】
集計制御部130は、インターバル毎に、現在インデックス231をインクリメント(1を加算)し、集計テーブル232における、現在インデックス231が示す重み累積カウンタを初期化する。なお、インクリメント後の現在インデックス231の値が、集計テーブル232の重み累積カウンタの数を超える場合、現在インデックス231の値は、集計テーブル232における、先頭の重み累積カウンタを示すように更新される。
【0029】
重みテーブル記憶部142は、重みテーブル242を記憶する。重みテーブル242は、各コマンドに係る処理が、排他制御装置100のCPUを占有する度合い、或いは、各コマンドに係る処理が、他の処理に与える影響の度合いを表す、重みを示す。
【0030】
図10は、本発明の実施の形態における、重みテーブル242の例を示す図である。各コマンドの重みは、
図17で示したような、各コマンドの特性や、CPU占有度、発生頻度をもとに決定される。重みテーブル242は、例えば、管理者等により、予め設定される。
【0031】
最大コマンド数記憶部143は、最大コマンド数243を記憶する。最大コマンド数243は、コマンドカウント周期におけるコマンド数(処理数)の上限を示す。最大コマンド数243は、上述のように、コマンド数制御部141により更新される。
【0032】
デフォルトコマンド数記憶部144は、デフォルトコマンド数244を記憶する。デフォルトコマンド数244は、通常時に、最大コマンド数243に設定される値を示す。デフォルトコマンド数244は、排他制御装置100の処理能力(性能)等をもとに決定される。デフォルトコマンド数244は、例えば、管理者等により、予め設定される。
【0033】
図11は、本発明の実施の形態における、デフォルトコマンド数244の例を示す図である。
図11の例では、デフォルトコマンド数244に「18」が設定されている。
【0034】
重み閾値記憶部145は、重み閾値245を記憶する。重み閾値245は、最大コマンド数243をデフォルトコマンド数244より小さい値に制限するかどうかを判定するために用いられる。重み閾値245は、重み合計期間の重み累積カウンタの合計値と比較される。重み合計期間は、現在のインターバルより前の、所定数のインターバルの期間である。重み閾値245は、例えば、管理者等により、予め設定される。
【0035】
図12は、本発明の実施の形態における、重み閾値245の例を示す図である。
図12の例では、重み閾値245に「6」が設定されている。
【0036】
コマンド受信部140は、ホスト300から受信したコマンドを、実行待ちキュー150へキューイングし、実行制御部160を起床させる。
【0037】
コマンド受信部140は、コマンド数制御部141(または、処理数制御部)を含む。コマンド数制御部141は、ホスト300から受信したコマンドの重みを重みテーブル242から抽出し、現在インデックス231が示す重み累積カウンタに加算する。また、コマンド数制御部141は、重み合計期間の重み累積カウンタの合計値を算出し、算出した合計値と重み閾値245とを比較する。合計値が重み閾値245以上の場合、コマンド数制御部141は、最大コマンド数243を、デフォルトコマンド数244の半分に制限する。それ以外の場合、コマンド数制御部141は、最大コマンド数243にデフォルトコマンド数244を設定する。
【0038】
実行待ちキュー150は、排他制御装置100が実行すべきコマンドをFIFO(First In, First Out)形式で記憶する。
【0039】
実行カウンタ記憶部161は、実行カウンタ261を記憶する。実行カウンタ261は、コマンドカウント周期において実行されたコマンド数(処理数)を示す。
【0040】
制御カウンタ記憶部162は、制御カウンタ262を記憶する。制御カウンタ262は、インターバルの回数を示す。
【0041】
バックグラウンド処理時間記憶部163は、バックグラウンド処理時間263を記憶する。バックグラウンド処理時間263は、各コマンドカウント周期において、コマンドに係る処理以外の、バックグラウンド処理(例えば、排他制御装置100の障害監視、性能監視等)を実行するために必要な時間を示す。バックグラウンド処理時間263は、例えば、管理者等により設定される。
【0042】
実行制御部160は、実行待ちキュー150にキューイングされたコマンドの実行を、処理部170に指示する。
【0043】
実行制御部160は、実行カウンタ261が最大コマンド数243に達していなければ、実行待ちキュー150からコマンドを取得し、当該コマンドの実行を、処理部170に指示する。ここで、実行制御部160は、実行カウンタ261をインクリメント(1を加算)する。また、実行制御部160は、実行カウンタ261が最大コマンド数243に達していれば、バックグラウンド処理時間263経過後に、実行待ちキュー150からコマンドを取得し、当該コマンドの実行を、処理部170に指示する。
【0044】
さらに、実行制御部160は、インターバル毎に、制御カウンタ262をインクリメント(1を加算)する。実行制御部160は、制御カウンタ262をもとに、コマンドカウント周期の経過を検出し、コマンドカウント周期毎に実行カウンタ261をリセットする。
【0045】
処理部170は、実行制御部160から指示されたコマンドに係る処理(排他制御処理)を実行し、実行結果をホスト300に送信する。また、処理部170は、当該コマンド(または、排他制御に必要なコマンド)を、他の排他制御装置100でも実行する必要がある場合、当該コマンド(または、当該排他制御に必要なコマンド)を当該他の排他制御装置100の実行待ちキュー150へ転送する。また、処理部170は、他の排他制御装置100から転送されたコマンドに係る処理を実行する。
【0046】
さらに、処理部170は、実行制御部160からコマンドの実行を指示されていない場合(実行すべきコマンドがない場合)、所定のバックグラウンド処理を実行する。
【0047】
なお、排他制御装置100は、CPUとプログラムを記憶した記憶媒体を含み、プログラムに基づく制御によって動作するコンピュータであってもよい。
【0048】
図4は、本発明の実施の形態における、コンピュータにより実現された排他制御装置100の構成を示すブロック図である。
【0049】
排他制御装置100は、CPU101、ハードディスクやメモリ等の記憶手段(記憶媒体)102、他の装置等とデータ通信を行う通信手段103、キーボード等の入力手段104、及び、ディスプレイ等の出力手段105を含む。CPU101は、インターバルタイマ110、スリープタイマ120、集計制御部130、コマンド受信部140、実行制御部160、及び、処理部170の機能を実現するためのコンピュータプログラムを実行する。記憶手段102は、インデックス記憶部131、集計テーブル記憶部132、重みテーブル記憶部142、最大コマンド数記憶部143、デフォルトコマンド数記憶部144、及び、重み閾値記憶部145のデータを記憶する。記憶手段102は、さらに、実行待ちキュー150、実行カウンタ記憶部161、制御カウンタ記憶部162、バックグラウンド処理時間記憶部163のデータを記憶する。通信手段103は、ホスト300からコマンドを受信し、コマンドの実行結果をホスト300に送信する。また、また、通信手段103は、コマンドに従って、資源400へのデータの書き込み、及び、資源400からのデータの読み出しを行う。入力手段104は、管理者等から、例えば、重みテーブル242、デフォルトコマンド数244、重み閾値245、バックグラウンド処理時間263等の各種設定を受け付ける。出力手段105は、管理者等へ、例えば、各種設定の結果を出力する。
【0050】
次に、本発明の実施の形態の動作を説明する。
【0051】
はじめに、本発明の実施の形態における、重み集計処理について説明する。
【0052】
図5は、本発明の実施の形態における、重み集計処理を示すフローチャートである。
【0053】
はじめに、集計制御部130は、インターバルタイマ110により起床されると(ステップS101)、現在インデックス231をインクリメントする(ステップS102)。
【0054】
集計制御部130は、集計テーブル232における、現在インデックス231が示す重み累積カウンタを初期化する(ステップS103)。
【0055】
以降、ステップS101からの処理が繰り返される。
【0056】
コマンド受信部140は、現在インデックス231が示す重み累積カウンタに、ホスト300から受信したコマンドの重みを加算する。現在インデックス231は、インターバルごとにインクリメントされるため、インターバルごとのコマンドの重みの累積値が、各重み累積カウンタに、順次、保存される。
【0057】
次に、本発明の実施の形態における、コマンド受信処理について説明する。
【0058】
図6は、本発明の実施の形態における、コマンド受信処理を示すフローチャートである。
【0059】
はじめに、コマンド受信部140が、ホスト300からコマンドを受信すると(ステップS201)、コマンド数制御部141は、重みテーブル242から、受信したコマンドの重みを抽出する(ステップS202)。コマンド数制御部141は、抽出した重みを、現在インデックス231が示す重み累積カウンタに加算する(ステップS203)。
【0060】
コマンド数制御部141は、重み合計期間の重み累積カウンタの値の合計値を算出する(ステップS204)。
【0061】
ここで、重み合計期間の長さは、例えば、インターバルの回数m(mは、例えば、1≦m<nの整数)で指定される。この場合、コマンド数制御部141は、現在インデックス231が示す重み累積カウンタより前のm個の重み累積カウンタの合計値を算出する。
【0062】
コマンド数制御部141は、算出した合計値と重み閾値245とを比較する(ステップS205)。合計値が重み閾値245以上の場合(ステップS205/Y)、コマンド数制御部141は、最大コマンド数243に、デフォルトコマンド数244の半分の値を設定する(ステップS206)。合計値が重み閾値245未満の場合(ステップS205/N)、コマンド数制御部141は、最大コマンド数243にデフォルトコマンド数244の値を設定する(ステップS207)。
【0063】
コマンド受信部140は、受信したコマンドを実行待ちキュー150へキューイングし(ステップS208)、実行制御部160を起床させる(ステップS209)。
【0064】
以降、ステップS201からの処理が繰り返される。
【0065】
次に、本発明の実施の形態における、コマンド実行制御処理について説明する。
【0066】
図7は、本発明の実施の形態における、コマンド実行制御処理を示すフローチャートである。
【0067】
はじめに、実行制御部160は、コマンド受信部140により起床されると(ステップS301、S302/Y)、実行待ちキュー150にコマンドがあるかどうかを確認する(ステップS303)。
【0068】
ステップS303で、コマンドがない場合(ステップS303/N)、ステップS301からの処理が繰り返される。
【0069】
一方、ステップS303で、コマンドがある場合(ステップS303/Y)、実行制御部160は、実行カウンタ261が最大コマンド数243未満かどうかを判定する(ステップS304)。
【0070】
ステップS304で、最大コマンド数243未満の場合(ステップS304/Y)、実行制御部160は、実行カウンタ261をインクリメントする(ステップS305)。そして、実行制御部160は、実行待ちキュー150からコマンドを1つ取得し(ステップS306)、処理部170に、当該コマンドの実行を指示する(ステップS307)。
【0071】
以降、ステップS303からの処理が繰り返される。
【0072】
一方、ステップS304で、最大コマンド数243以上の場合(ステップS304/N)、実行制御部160は、バックグラウンド処理時間263をスリープタイマ120に設定し、処理部170に対するコマンドの実行指示を中断する(スリープする)。
【0073】
これにより、コマンドカウント周期に実行されたコマンドの数が、最大コマンド数243に達した場合、処理部170において、バックグラウンド処理が実行される。
【0074】
実行制御部160は、スリープタイマ120より起床されると(ステップS301、S302/N、S309/N)、実行カウンタ261をリセットし(ステップS312)、ステップS303からの処理を実行する。
【0075】
これにより、処理部170において、バックグラウンド処理が実行された後で、最大コマンド数243を超えたコマンドを実行させることができる。
【0076】
また、実行制御部160は、インターバルタイマ110より起床されると(ステップS301、S302/N、S309/Y)、制御カウンタ262をインクリメントする(ステップS310)。そして、実行制御部160は、制御カウンタ262をもとに、コマンドカウント周期が経過したかどうかを判定する(ステップS311)。
【0077】
ここで、コマンドカウント周期の長さは、例えば、インターバルの回数x(xは、例えば、1以上の整数)で指定される。この場合、実行制御部160は、制御カウンタ262がxの整数倍を示した場合に、コマンドカウント周期が経過したと判定する。
【0078】
ステップS311で、コマンドカウント周期が経過した場合(ステップS311/Y)、実行制御部160は、実行カウンタ261をリセットし(ステップS312)、ステップS303からの処理を実行する。
【0079】
これにより、コマンドカウント周期ごとに、実行カウンタ261はリセットされる。
【0080】
一方、ステップS311で、コマンドカウント周期が経過していない場合(ステップS311/N)、ステップS301からの処理が繰り返される。
【0081】
次に、本発明の実施の形態における、コマンド実行処理について説明する。
【0082】
図8は、本発明の実施の形態における、コマンド実行処理を示すフローチャートである。
【0083】
処理部170は、実行制御部160による、コマンドの実行指示により起床され(ステップS401)、コマンドに係る処理(排他制御処理)を実行する(ステップS402)。ここで、処理部170は、例えば、コマンドにより指定された、資源400上のデータへのアクセス(読み出し/書き込み)を、同じデータに対する複数ホスト300からの同時アクセスが発生しないように、実行する。
【0084】
処理部170は、コマンドを他の排他制御装置100でも実行する必要があるかどうかを判定する(ステップS403)。
【0085】
ステップS403で実行する必要がある場合(ステップS403/Y)、処理部170は、コマンドを、当該他の排他制御装置100の実行待ちキュー150にキューイングする(ステップS404)。
【0086】
処理部170は、実行したコマンドの処理結果を、ホスト300へ送信する(ステップS405)。ここで、処理部170は、例えば、資源400上のデータへのアクセス結果(読み出しデータ/書き込み結果)を、ホスト300へ送信する。
【0087】
以降、ステップS401からの処理が繰り返し、実行される。
【0088】
次に、本発明の実施の形態の動作の具体例を説明する。
【0089】
図13〜
図15は、本発明の実施の形態における、コマンドに係る処理、及び、バックグラウンド処理の実行例を示す図である。
【0090】
ここでは、重みテーブル記憶部142に、
図10の重みテーブル242、デフォルトコマンド数記憶部144に、
図11のデフォルトコマンド数244、重み閾値記憶部145に、
図12の重み閾値245が、それぞれ設定されていると仮定する。また、コマンドカウント周期の長さはインターバル10回分(x=10)、集計テーブル232における重み累積カウンタの数は4(n=4)、重み合計期間の長さはインターバル2回分(m=2)であると仮定する。
【0091】
また、
図10の重みテーブル242におけるコマンド「B」、「C」の処理に必要な時間(CPUを占有する時間)は、コマンド「A」の処理に必要な時間の、それぞれ、2倍、3倍であると仮定する。さらに、バックグラウンド処理時間263には、コマンド「A」の処理に必要な時間の6倍が設定されていると仮定する。
【0092】
また、ここでは。制御カウンタ262が「j」を示すインターバルを、インターバル「j」のように記述する。
【0093】
図13〜
図15に示すように、実行制御部160は、インターバル毎に、制御カウンタ262をインクリメントする。また、実行制御部160は、コマンドカウント周期毎(制御カウンタ262の値が「10」の倍数(10、20、…)のとき)に、実行カウンタ261をリセットする。集計制御部130は、インターバル毎に、現在インデックス231を「0」〜「3」の範囲でインクリメントする。
【0094】
コマンド受信部140は、ホスト300から受信したコマンド(「A」、「B」、「C」)を、実行待ちキュー150にキューイングする。ここで、コマンド数制御部141は、インターバル毎に、コマンド(「A」、「B」、「C」)に対する重み(それぞれ、「1」、「2」、「3」)を、現在インデックス231により示される重み累積カウンタ(インデックス「0」〜「3」)に加算する。また、コマンド数制御部141は、現在のインターバルの前のインターバルから、前方の2つのインターバルの重み累積カウンタの合計値を算出する。
【0095】
重み累積カウンタの合計値が重み閾値245「6」未満の場合、コマンド数制御部141は、最大コマンド数243にデフォルトコマンド数244「18」を設定する。重み累積カウンタの合計値が重み閾値245「6」以上の場合、コマンド数制御部141は、最大コマンド数243にデフォルトコマンド数244の半分である「9」を設定する。
【0096】
例えば、最初のコマンドカウント周期(
図13、インターバル「0」〜「9」)では、重みの小さなコマンド「A」や「B」が、散発的に、ホスト300から受信される。この場合、各インターバルで算出される重み累積カウンタの合計値は「6」未満であるため、最大コマンド数243には「18」が設定される。
【0097】
また、次のコマンドカウント周期(
図14、インターバル「10」〜「19」)では、重みの小さなコマンド「A」が、集中的に、ホスト300から受信される。この場合も、各インターバルで算出される重み累積カウンタの合計値は「6」未満であるため、最大コマンド数243には「18」が設定される。
【0098】
さらに、次のコマンドカウント周期(
図15、インターバル「20」〜「29」)では、重みの小さなコマンド「C」が、連続的に、ホスト300から受信される。この場合、インターバル「25」「26」において、重み累積カウンタの合計値「6」が算出されるため、最大コマンド数243は「9」に制限される。
【0099】
実行制御部160は、実行カウンタ261の値が最大コマンド数243(「18」または「9」)未満であれば、実行待ちキュー150にキューイングされたコマンドの実行を、処理部170に指示し、実行カウンタ261をインクリメントする。また、実行制御部160は、実行カウンタ261の値が最大コマンド数243(「18」または「9」)以上であれば、バックグラウンド処理時間263の間、処理部170に対するコマンドの実行指示を中断する。処理部170は、実行制御部160により指示されているコマンドが無い場合、バックグラウンド処理を実行する。
【0100】
例えば、最初のコマンドカウント周期(
図13、インターバル「0」〜「9」)では、実行カウンタ261の値は「18」に達していないため、各コマンドの実行指示は中断されない。処理部170では、各コマンドに係る処理が実行されるとともに、コマンドが無いタイミングで、バックグラウンド処理に必要な時間(バックグラウンド処理時間263)が確保され、バックグラウンド処理が実行される。
【0101】
また、次のコマンドカウント周期(
図14、インターバル「10」〜「19」)では、インターバル「17」の時刻「t1」で、実行カウンタ261の値が「18」に達している。このため、時刻「t1」〜「t2」のバックグラウンド処理時間263の間、処理部170に対するコマンドの実行指示が中断される。これにより、処理部170では、時刻「t1」より前のコマンドが無いタイミング、及び、時刻「t1」〜「t2」の間で、バックグラウンド処理時間263が確保され、バックグラウンド処理が実行される。そして、インターバル「19」の時刻「t2」で、処理部170に対するコマンドの実行指示が再開される。
【0102】
また、次のコマンドカウント周期(
図15、インターバル「20」〜「29」)では、インターバル「26」の時刻「t3」で、実行カウンタ261の値が、制限された値「9」に達している。このため、時刻「t3」〜「t4」のバックグラウンド処理時間263の間、処理部170に対するコマンドの実行指示が中断される。これにより、処理部170では、時刻「t3」より前のコマンドが無いタイミング、及び、時刻「t3」〜「t4」の間で、バックグラウンド処理時間263が確保され、バックグラウンド処理が実行される。そして、インターバル「28」の時刻「t4」で、処理部170に対するコマンドの実行指示が再開される。
【0103】
以上により、本発明の実施の形態の動作が完了する。
【0104】
なお、本発明の実施の形態では、重み累積カウンタの合計値が重み閾値245以上の場合に、実行されるコマンドの数を制限するために、最大コマンド数243に、デフォルトコマンド数244よりも小さい値を設定した。しかしながら、これに限らず、最大コマンド数243を変える代わりに、コマンドを実行したときに実行カウンタ261に加算する値を変えてもよい。この場合、例えば、上述のステップS205で、合計値が重み閾値245以上の場合、ステップS206で、コマンド数制御部141は、カウント係数に2を設定する。また、上述のステップS205で、合計値が重み閾値245未満の場合、ステップS206で、コマンド数制御部141は、カウント係数に1を設定する。そして、上述のステップS305で、実行制御部160は、実行カウンタ261にカウント係数を加算する。
【0105】
また、本発明の実施の形態では、重み累積カウンタの合計値が重み閾値245以上の場合に、最大コマンド数243に、デフォルトコマンド数244の半分の値を設定した。しかしながら、これに限らず、合計値の範囲に対して設定された、複数のレベルに応じたコマンド数を、最大コマンド数243に設定してもよい。
【0106】
次に、本発明の実施の形態の特徴的な構成を説明する。
図1は、本発明の実施の形態の特徴的な構成を示すブロック図である。
【0107】
排他制御装置100(情報処理装置)は、実行制御部160、及び、コマンド数制御部141(処理数制御部)を含む。実行制御部160は、コマンドカウント周期(所定長の周期)毎の処理部170により実行されるコマンド(処理)の数が、最大コマンド数243(最大処理数)以下となるように、要求されたコマンド(処理)を処理部170に実行させる。コマンド数制御部141は、要求されたコマンド(処理)の重みの累積値に応じて、最大コマンド数243(最大処理数)を設定する。
【0108】
本発明の実施の形態によれば、複数種類のコマンドが実行される場合でも、バックグラウンド処理の実行停止を防ぐことができる。その理由は、コマンド数制御部141が、要求されたコマンドの重みの累積値に応じて、最大コマンド数243を設定するためである。
【0109】
これにより、例えば、コマンド数は少ないものの、CPU占有率が高いコマンドがある期間に連続して発生した場合でも、実行するコマンドの数が制限され、バックグラウンド処理を実行できる。
【0110】
また、
図16に示すように、周期毎に実行するコマンドの数を制限する技術では、ある周期でコマンドが多発し、コマンドの実行が中断された場合、中断されたコマンドのTAT(Turn Around Time)が増大(間延び)するという問題があった。
【0111】
本発明の実施の形態によれば、実行が中断されたコマンドのTATが増大することを防ぐことができる。その理由は、実行したコマンドの数が最大コマンド数243に達した場合でも、バックグラウンド処理時間263経過後に、中断されたコマンドを処理部170に実行させるためである。
【0112】
これにより、ある周期において、実行したコマンドの数が上限に達した場合でも、
図16のように次の周期の開始を待つことなく、バックグラウンド処理終了後、当該周期の残りの時間に、中断されたコマンドを実行できる。このため、中断されたコマンドのTATの増大は、最小限に抑えられる。
【0113】
また、本発明の実施の形態によれば、複数の排他制御装置を用いて処理を分散するシステムで行われる、排他制御装置の故障に伴うリカバリにおいて、ホストからのリカバリの開始、終了の通知や、排他制御装置における誤動作を防ぐための対処が不要である。その理由は、リカバリにおいてCPU占有率の高い(重みの大きい)コマンドが連続して発行された場合の最大コマンド数243の制限、及び、リカバリ終了後の最大コマンド数243の制限解除が、コマンド数制御部141により動的に実行されるためである。
【0114】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【0115】
例えば、本発明の実施の形態では、排他制御システム1に含まれる複数の排他制御装置100が、連携して、ホスト300から資源400へのアクセスに係る排他制御を行う場合を例に説明した。しかしながら、排他制御装置100が、複数種類のコマンドとバックグラウンド処理とを行う装置であれば、排他制御システム1は、1つの排他制御装置100により構成されていてもよい。
【0116】
また、本発明の実施の形態では、情報処理装置が、ホスト300から資源400へのアクセスに係る排他制御を行う排他制御装置100である場合を例に説明した。しかしながら、受信したコマンドや発生したイベントに応じた複数種類の処理とバックグラウンド処理とを行う装置であれば、情報処理装置は、排他制御装置100以外の装置でもよい。