特許第6384218号(P6384218)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電気株式会社の特許一覧

特許6384218情報処理装置、情報処理方法、及び、プログラム
<>
  • 特許6384218-情報処理装置、情報処理方法、及び、プログラム 図000002
  • 特許6384218-情報処理装置、情報処理方法、及び、プログラム 図000003
  • 特許6384218-情報処理装置、情報処理方法、及び、プログラム 図000004
  • 特許6384218-情報処理装置、情報処理方法、及び、プログラム 図000005
  • 特許6384218-情報処理装置、情報処理方法、及び、プログラム 図000006
  • 特許6384218-情報処理装置、情報処理方法、及び、プログラム 図000007
  • 特許6384218-情報処理装置、情報処理方法、及び、プログラム 図000008
  • 特許6384218-情報処理装置、情報処理方法、及び、プログラム 図000009
  • 特許6384218-情報処理装置、情報処理方法、及び、プログラム 図000010
  • 特許6384218-情報処理装置、情報処理方法、及び、プログラム 図000011
  • 特許6384218-情報処理装置、情報処理方法、及び、プログラム 図000012
  • 特許6384218-情報処理装置、情報処理方法、及び、プログラム 図000013
  • 特許6384218-情報処理装置、情報処理方法、及び、プログラム 図000014
  • 特許6384218-情報処理装置、情報処理方法、及び、プログラム 図000015
  • 特許6384218-情報処理装置、情報処理方法、及び、プログラム 図000016
  • 特許6384218-情報処理装置、情報処理方法、及び、プログラム 図000017
  • 特許6384218-情報処理装置、情報処理方法、及び、プログラム 図000018
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6384218
(24)【登録日】2018年8月17日
(45)【発行日】2018年9月5日
(54)【発明の名称】情報処理装置、情報処理方法、及び、プログラム
(51)【国際特許分類】
   G06F 9/48 20060101AFI20180827BHJP
【FI】
   G06F9/48 300B
   G06F9/48 300G
【請求項の数】10
【全頁数】19
(21)【出願番号】特願2014-184035(P2014-184035)
(22)【出願日】2014年9月10日
(65)【公開番号】特開2016-57871(P2016-57871A)
(43)【公開日】2016年4月21日
【審査請求日】2017年8月9日
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100109313
【弁理士】
【氏名又は名称】机 昌彦
(74)【代理人】
【識別番号】100124154
【弁理士】
【氏名又は名称】下坂 直樹
(72)【発明者】
【氏名】松村 聖子
【審査官】 小林 哲雄
(56)【参考文献】
【文献】 特開2006−171823(JP,A)
【文献】 特開2010−044633(JP,A)
【文献】 特開2000−322365(JP,A)
【文献】 特開2011−070435(JP,A)
【文献】 米国特許第06675190(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/46−9/54
(57)【特許請求の範囲】
【請求項1】
処理手段により実行される所定長の周期毎の処理の数が、最大処理数以下となるように、要求された処理の実行を前記処理手段に指示する実行制御手段と、
前記要求された処理の重みの累積値に応じて、前記最大処理数を設定する、処理数制御手段と、
を備える情報処理装置。
【請求項2】
前記処理数制御手段は、現在より前の所定期間における前記累積値が所定の閾値以上の場合、前記最大処理数に、前記累積値が所定の閾値未満の場合の前記最大処理数より小さい値を設定する、
請求項1に記載の情報処理装置。
【請求項3】
前記重みは、処理時間の長い処理の重みが、処理時間の短い処理より大きくなるように設定される、
請求項1または2に記載の情報処理装置。
【請求項4】
前記実行制御手段は、前記所定長の周期の各々において、前記処理手段により実行された処理の数が前記最大処理数に等しくなった場合に、所定のバックグラウンド処理を完了するために必要な時間の間、要求された処理の前記処理手段への実行指示を中断し、
前記処理手段は、前記処理手段により実行が指示されている処理がない場合に、所定のバックグラウンド処理を行う、
請求項1乃至3のいずれかに記載の情報処理装置。
【請求項5】
前記実行制御手段は、前記所定のバックグラウンド処理を完了するために必要な時間経過後、前記所定長の周期毎の前記処理手段により実行される処理の数が前記最大処理数を超えて、前記要求された処理の実行を前記処理手段に指示する、
請求項4に記載の情報処理装置。
【請求項6】
要求された処理の重みの累積値に応じて、最大処理数を設定し、
処理手段により実行される所定長の周期毎の処理の数が、前記最大処理数以下となるように、前記要求された処理の実行を前記処理手段に指示する、
情報処理方法。
【請求項7】
前記最大処理数を設定する場合、現在より前の所定期間における前記累積値が所定の閾値以上の場合、前記最大処理数に、前記累積値が所定の閾値未満の場合の前記最大処理数より小さい値を設定する、
請求項6に記載の情報処理方法。
【請求項8】
前記重みは、処理時間の長い処理の重みが、処理時間の短い処理より大きくなるように設定される、
請求項6または7に記載の情報処理方法。
【請求項9】
前記処理手段において、実行が指示されている処理がない場合に、所定のバックグラウンド処理が行われ、
前記所定長の周期の各々において、前記処理手段により実行された処理の数が前記最大処理数に等しくなった場合、所定のバックグラウンド処理を完了するために必要な時間の間、要求された処理の前記処理手段への実行指示を中断する、
請求項6乃至8のいずれかに記載の情報処理方法。
【請求項10】
コンピュータに、
要求された処理の重みの累積値に応じて、最大処理数を設定し、
処理手段により実行される所定長の周期毎の処理の数が、前記最大処理数以下となるように、前記要求された処理の実行を前記処理手段に指示する、
処理を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法、及び、プログラムに関し、特に、要求されたコマンドに係る処理とバックグラウンド処理とを実行する、情報処理装置、情報処理方法、及び、プログラムに関する。
【背景技術】
【0002】
複数のホストがディスク装置等の共通資源にアクセスするシステムにおいて、各ホストからの要求(コマンド)に対する排他制御を、排他制御装置を用いて行う方法が、例えば、特許文献1に開示されている。
【0003】
特許文献1のような排他制御装置は、ホストから受け取るコマンドに係る処理を実行するだけでなく、装置の障害監視等のバックグラウンド処理も実行する。ホストからのコマンドは、迅速な処理が要求されるため、排他制御装置は、ホストからのコマンドに係る処理を優先的に実行し、ホストからのコマンドがない時間に、バックグラウンド処理を行う。この場合、ホストからのコマンドの負荷が高くなると、バックグラウンド処理の実行が滞り、装置が正常に動作しなくなる可能性がある。そこで、例えば、所定長の周期毎に実行するコマンドの数を制限する技術が用いられる。これにより、ある周期において実行したコマンドの数が上限に達した場合は、当該周期における以降のコマンドの実行が中断され、バックグラウンド処理が実行される。
【0004】
図16は、このような、周期毎に実行するコマンドの数を制限する技術における、受信したコマンドの実行タイミングの例を示す図である。図16の例では、500msecの周期(コマンドカウント周期)毎に、実行したコマンド数がカウントされ、ある周期のコマンド数が100になった場合、次の周期が開始されるまで、コマンドの実行が中断される。
【0005】
一方、データベースの巨大化等により、排他制御が必要な資源数が増大し、1台の排他制御装置では、処理できる資源数や性能に係る要求を満たせなくなりつつある。そのため、複数の排他制御装置を用いて処理を分散する技術が用いられている。このように、複数の排他制御装置を用いた場合、一部の排他制御装置の障害が全体の運用に影響するため、排他制御装置同士が互いに死活監視を行う必要がある。死活監視等の処理はバックグラウンドで行われるが、このようなバックグラウンド処理が滞ることは許されない。
【0006】
図17は、複数の排他制御装置を用いたシステムにおいて、各排他制御装置がホストから受信するコマンドの例を示す図である。
【0007】
図17に示すように、ホストから受信するコマンドは、処理に要する時間(CPU(Central Processing Unit)占有率)、発生頻度の違い等で、複数の種類に分類できる。複数の排他制御装置を用いたシステムでは、ある排他制御装置が故障した場合、上位装置(複数のホスト)が、他の排他制御装置への情報の再生(リカバリ)を実行する。リカバリでは、図17におけるリカバリ系コマンドのように、CPU占有率の高いコマンドが連続して発行される。この場合、所定長の周期毎に実行するコマンドの数を制限する技術を用いても、コマンド数が上限に達することなくCPUが占有され続けてしまうため、バックグラウンド処理が実行されないことがある。そのため、ホストは、リカバリの開始および終了を排他制御装置へ通知し、排他制御装置は、リカバリ中におけるバックグラウンド処理の実行停止による誤動作を防ぐための対処を行っていた。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2003−330906号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
上述のように、排他制御装置において、所定長の周期毎に実行するコマンドの数を制限する方法では、コマンドの種類によっては、バックグラウンド処理が実行されないという問題があった。
【0010】
本発明の目的は、上述した課題を解決し、複数種類のコマンドが実行される場合でも、バックグラウンド処理の実行停止を防ぐことができる、情報処理装置、情報処理方法、及び、プログラムを提供することにある。
【課題を解決するための手段】
【0011】
本発明の情報処理装置は、処理手段により実行される所定長の周期毎の処理の数が、最大処理数以下となるように、要求された処理の実行を前記処理手段に指示する実行制御手段と、前記要求された処理の重みの累積値に応じて、前記最大処理数を設定する、処理数制御手段と、を備える。
【0012】
本発明の情報処理方法は、要求された処理の重みの累積値に応じて、最大処理数を設定し、処理手段により実行される所定長の周期毎の処理の数が、前記最大処理数以下となるように、前記要求された処理の実行を前記処理手段に指示する。
【0013】
本発明のプログラムは、コンピュータに、要求された処理の重みの累積値に応じて、最大処理数を設定し、処理手段により実行される所定長の周期毎の処理の数が、前記最大処理数以下となるように、前記要求された処理の実行を前記処理手段に指示する、処理を実行させる。
【発明の効果】
【0014】
本発明の効果は、複数種類のコマンドが実行される場合でも、バックグラウンド処理の実行停止を防げることである。
【図面の簡単な説明】
【0015】
図1】本発明の実施の形態の特徴的な構成を示すブロック図である。
図2】本発明の実施の形態における、排他制御装置100の構成を示すブロック図である。
図3】本発明の実施の形態における、排他制御システム1の構成を示すブロック図である。
図4】本発明の実施の形態における、コンピュータにより実現された排他制御装置100の構成を示すブロック図である。
図5】本発明の実施の形態における、重み集計処理を示すフローチャートである。
図6】本発明の実施の形態における、コマンド受信処理を示すフローチャートである。
図7】本発明の実施の形態における、コマンド実行制御処理を示すフローチャートである。
図8】本発明の実施の形態における、コマンド実行処理を示すフローチャートである。
図9】本発明の実施の形態における、集計テーブル232の例を示す図である。
図10】本発明の実施の形態における、重みテーブル242の例を示す図である。
図11】本発明の実施の形態における、デフォルトコマンド数244の例を示す図である。
図12】本発明の実施の形態における、重み閾値245の例を示す図である。
図13】本発明の実施の形態における、コマンドに係る処理、及び、バックグラウンド処理の実行例を示す図である。
図14】本発明の実施の形態における、コマンドに係る処理、及び、バックグラウンド処理の実行例(図13の続き)を示す図である。
図15】本発明の実施の形態における、コマンドに係る処理、及び、バックグラウンド処理の実行例(図14の続き)を示す図である。
図16】周期毎に実行するコマンドの数を制限する技術における、受信したコマンドの実行タイミングの例を示す図である。
図17】複数の排他制御装置を用いたシステムにおいて、各排他制御装置がホストから受信するコマンドの例を示す図である。
【発明を実施するための形態】
【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以外の装置でもよい。
【符号の説明】
【0117】
1 排他制御システム
100 排他制御装置
101 CPU
102 記憶手段
103 通信手段
104 入力手段
105 出力手段
110 インターバルタイマ
120 スリープタイマ
130 集計制御部
131 インデックス記憶部
132 集計テーブル記憶部
140 コマンド受信部
141 コマンド数制御部
142 重みテーブル記憶部
143 最大コマンド数記憶部
144 デフォルトコマンド数記憶部
145 重み閾値記憶部
150 実行待ちキュー
160 実行制御部
161 実行カウンタ記憶部
162 制御カウンタ記憶部
163 バックグラウンド処理時間記憶部
170 処理部
231 現在インデックス
232 集計テーブル
242 重みテーブル
243 最大コマンド数
244 デフォルトコマンド数
245 重み閾値
261 実行カウンタ
262 制御カウンタ
263 バックグラウンド処理時間
300 ホスト
400 資源
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17