次に、図面を参照して、本発明における実施形態について説明する。各図面は、本発明の実施形態を説明するためのものである。ただし、本発明は、各図面の記載に限定されるわけではない。また、各図面の同様の構成には、同じ番号を付し、その繰り返しの説明を省略する場合がある。また、以下の説明に用いる図面において、本発明の説明に関係しない部分の構成については、記載を省略し、図示しない場合もある。
本発明における各実施形態に係る情報制御装置は、ホスト及び記憶装置に接続されている。接続されるホスト及び記憶装置は、限定されない。例えば、ホストは、直接的に接続されているサーバーなど一般的な情報処理装置でもよく、インターネットなどの通信網を介して接続される装置でもよい。また、例えば、記憶装置は、磁気ディスク装置、半導体ディスク装置、又は、光磁気ディスク装置でもよい。さらに、各実施形態に係る情報制御装置に接続されるホスト及び記憶装置の数は、限定されない。
また、情報制御装置とホストとの間の接続、及び、情報制御装置と記憶装置との間の接続に用いられるプロトコルは、限定されない。例えば、接続に用いられるプロトコルは、Fibre Channel、又は、iSCSIでもよい。
以下の説明では、一例として、サーバーのようなホストに接続され、複数の磁気ディスク装置を制御する情報制御装置を用いて説明する。例えば、情報制御装置は、ディスクアレイコントローラである。ただし、情報制御装置は、ディスクアレイコントローラに限定されない。
<第1の実施形態>
図面を参照して、本発明における第1の実施形態に係る情報制御装置100について説明する。
[構成の説明]
まず、図面を参照して本発明における第1の実施形態に係る情報制御装置100の構成について説明する。
図1は、第1の実施形態に係る情報制御装置100の構成の一例を示すブロック図である。情報制御装置100は、ホスト制御部110と、記憶部120と、判定部130と、キャッシュ制御部140と、監視部150と、記憶装置制御部160と、キャッシュ170とを含む。
ホスト制御部110は、ホストからコマンドを受信し、受信したコマンドを解析し、コマンドにおけるデータの転送を制御する。より詳細には、ホスト制御部110は、キャッシュ制御部140と連携して、ホストからのデータをキャッシュ170に転送し、キャッシュ170のデータをホストに送信する。
ホスト制御部110は、ホストに転送するデータがキャッシュ170に保存されていない場合、キャッシュ制御部140及び記憶装置制御部160を介して、記憶装置からキャッシュ170にデータを取り出す。
さらに、ホスト制御部110は、ホストからコマンドを受信したとき、又は、ホストにコマンドの応答を返却するときに、コマンドに関連する統計情報を更新する。
記憶部120は、上記の統計情報を保存する。この情報は、判定部130における判定に用いられる。さらに、記憶部120は、判定部130の判定結果を記憶する。
記憶装置制御部160は、キャッシュ制御部140と連携して、キャッシュ170に保存されているデータを記憶装置に保存し、記憶装置からデータを取り出してキャッシュ170に保存する。
キャッシュ170は、キャッシュ制御部140に制御され、データを記憶する。
キャッシュ制御部140は、キャッシュ170を制御する。より詳細には、キャッシュ制御部140は、ホスト制御部110及び記憶装置制御部160と連携して、キャッシュ170に保存されるデータを制御する。
キャッシュ制御部140におけるデータの制御に関連する動作について詳細に説明する。
ホストからライトコマンドを受けた場合、高速に応答するため、ホスト制御部110は、キャッシュ170に、データを保存し、ホストに応答を返却する。この場合、キャッシュ170の保存されたデータは、記憶装置に未書き込みデータとなる。つまり、ホスト制御部110は、ホストからライトコマンドを受けた場合、応答性能を向上するため、記憶装置にデータを書き込まずに、キャッシュ170に保存してホストに応答を返却する。
具体的には、各構成は、次のように動作する。
ホスト制御部110は、ライトコマンドを受けると、キャッシュ制御部140に、データの書き込みであること、及び、データのアドレスを通知する。なお、この説明でのアドレスは、コマンドにおけるアドレスである。例えば、アドレスは、開始アドレスとデータの長さの組合せ、又は、開始アドレスと終了アドレスとの組合せである。
キャッシュ制御部140は、キャッシュ170が通知されたアドレスのデータを保持しているか否かを確認する。
キャッシュ170がデータを保持している場合、キャッシュ制御部140は、ホスト制御部110にキャッシュ170におけるデータの領域を通知する。
キャッシュ170がデータを保持していない場合、キャッシュ制御部140は、キャッシュ170にデータを保存する領域を確保し、ホスト制御部110に確保した領域を通知する。
ホスト制御部110は、通知された領域に、ライトコマンドのデータを書き込み、ホストに書き込み終了の応答を返却する。
そして、記憶装置制御部160が、所定の周期的なタイミング、又は、所定の条件を満足した時に、キャッシュ170に書き込まれたデータを、記憶装置に書き込む。
ホストからリードコマンドを受けた場合、ホスト制御部110は、キャッシュ170に保存されているデータを、ホストに送信する。
具体的には、各構成は、次のように動作する。
ホスト制御部110は、リードコマンドを受けると、キャッシュ制御部140に、データの読み出しであること、及び、データのアドレスを通知する。
キャッシュ制御部140は、キャッシュ170が通知されたアドレスのデータを保持しているか否かを確認する。
キャッシュ170がデータを保持している場合、キャッシュ制御部140は、ホスト制御部110にキャッシュ170におけるデータの領域を通知する。ホスト制御部110は、通知された領域のデータをホストに送信する。この場合、記憶装置からの読み出し動作は、不要となる。つまり、リードコマンドにおいてキャッシュ170に有効なデータが存在する場合、情報制御装置100は、記憶装置からデータを読み出すことなく、ホストに応答できる。
キャッシュ170がデータを保持していない場合、キャッシュ制御部140は、キャッシュ170にデータを保持する領域を確保し、記憶装置制御部160に確保した領域とデータのアドレスとを通知する。記憶装置制御部160は、記憶装置からデータを読み出し、通知された領域にデータを保存し、キャッシュ制御部140に読み出し完了を通知する。キャッシュ制御部140は、記憶装置からの読み出しが完了すると、ホスト制御部110にデータの領域を通知する。ホスト制御部110は、通知された領域のデータをホストに送信する。つまり、リードコマンドにおいてキャッシュ170に有効なデータが存在しない場合、情報制御装置100は、記憶装置からデータを読み出して、ホストに応答する。
本実施形態において、キャッシュ制御部140は、後ほど詳細に説明するように、キャッシュ170において、所定の条件を満たすデータを常駐させる。それ以外のデータについては、キャッシュ制御部140は、情報制御装置100が適用されるシステムに合わせてキャッシュ170を制御する。例えば、キャッシュ制御部140は、Least Recently Used(LRU)アルゴリズムを用いて、データの入れ替えてもよい。以下、データを常駐させる領域を、「常駐領域」と呼び、その他の領域を「汎用領域」と呼ぶ。このように、キャッシュ制御部140は、データを入れ替える領域(汎用領域)及びデータを常駐する領域(常駐領域)を用いて、キャッシュ170を制御する。
一般的に、ホストと情報制御装置100との間でのデータの転送速度は、キャッシュ170と記憶装置との間のデータの転送速度より速い。そこで、情報制御装置100は、応答性能を向上させるため、データをキャッシュ170に保存しておくことが望ましい。しかし、情報制御装置100がホストからキャッシュ170の容量より多くのデータの要求を受けた場合、キャッシュ170は、要求されたデータを保持できない。少なくとも一部のデータは、キャッシュ170から押し出される。以下、キャッシュ170から押し出されるなどキャッシュ170に保存されていないデータの状態を、「キャッシュミス」と呼ぶ。これに対し、キャッシュ170の保存されているデータの状態を、「キャッシュヒット」と呼ぶ。
例えば、大量のデータの書き込みの要求を受けた場合、キャッシュ170に保存できない書き込みデータが発生する。キャッシュ170に保存できない書き込みデータは、キャッシュ170に保存された書き込みデータが記憶装置に書き込まれ、キャッシュ170に空きができるまで、ホストから情報制御装置100への転送を待たされる。そのため、これらの要求は、応答が遅くなる。また、記憶装置に書き込まれたデータは、キャッシュミスの状態になる。
あるいは、情報制御装置100が大量のリードの要求を受けた場合、データの容量が、キャッシュ170を超えると、読み出されたデータの少なくとも一部の領域が新しいデータに割り振られる。つまり、少なくとも一部のデータは、キャッシュミスの状態となる。
図6は、リードにおけるキャッシュヒットとキャッシュミスとを模式的に示す図である。
図6に示されているように、汎用領域の保存されたデータは、キャッシュヒットの状態とキャッシュミスの状態とで、データの読み出し経路が異なる。キャッシュヒットした場合、データは、キャッシュ170から読み出される。この場合、読み出し時間は、短い。一方、キャッシュミスの場合、データは、記憶装置から読み出される。この場合、読み出し時間が長くなる。
これに対し、常駐領域に保存されたデータは、他のデータの読み出し及び書き込みなどに影響されずに、キャッシュ170に保存される。つまり、常駐領域に保存されるデータは、常に、キャッシュヒットの状態となる。そのため、常駐領域に保存されたデータ(常駐データ)は、常に、読み出し時間が短い。
なお、キャッシュ制御部140は、キャッシュ170における常駐領域の位置及び大きさを、固定してもよく、動的に変更してもよい。
図1を参照した説明に戻る。
判定部130は、データのアクセスに関する統計情報を基に、キャッシュ170に常駐させるアクセス単位を判定する。アクセス単位とは、ホストがアクセスする最小単位である。例えば、ホストが、論理ブロックアドレス(LBA)を用いてアクセスする場合、アクセス単位はLBAである。以下、アクセス単位の一例として、適宜、LBAを用いて説明する。ただし、アクセス単位は、LBAに限定されない。
判定部130は、所定の条件を満足するアクセス単位を、常駐させるアクセス単位と判定する。以下、図面を参照して、判定部130における判定の動作の一例を説明する。
以下で説明する動作の前提は、次のとおりである。ただし、以下の前提は、第1の実施形態を限定するものではない。
(1)ホストから記憶装置へのアクセス単位は、LBAとする。
(2)LBAは、連続したアドレスに配置されている。
(3)LBAのアドレスの範囲は、00000hからFFFFFhまでとする(「h」は16進数を示す)。
(4)LBAのアドレスは、所定の範囲(以下、「アドレス範囲」と呼ぶ)に分割されている。
(5)ホスト制御部110は、コマンドのデータのアクセスに関連する統計情報として、コマンドごとに、ホストから指示されたデータのアドレスが含まれるアドレス範囲のアクセス回数を更新する。
図2は、第1の実施形態に係るホスト制御部110が作成した統計情報の一例を示す図である。図2において、アドレス範囲の欄における値の範囲が、上記のアドレス範囲を示す。ホスト制御部110は、ホストからアクセスされたデータのアドレスに対応するアドレス範囲のカウンタの回数を更新する。
ホストからのアクセスの状態は、時間とともに変化する。そのため、判定部130は、複数の時間における回数を用いて判定する方が、キャッシュ170に常駐させる必要があるとの判定の精度を向上できる。そこで、図2に示されている統計情報は、第1のカウンタ、第2のカウンタ、及び、第3のカウンタの三つの時間範囲における回数を保持している。例えば、第3のカウンタは、1分前から現時点までの回数である。第2のカウンタは、2分前から1分前までの回数である。第1のカウンタは、3分前から2分前までの回数である。この場合、ホスト制御部110は、分を測定単位としてホストからのアクセスの回数を計測し、統計情報を更新している。
ただし、判定部130が判定に用いる時間範囲の数は、上記に限定されない。判定部130は、1つの時間範囲、2つの時間範囲、又は、4つ以上の時間範囲を用いてもよい。
そして、判定部130は、ホスト制御部110が更新した統計情報を基に、詳細な解析を実施するアドレス範囲を特定する。
図2に示されている情報において、判定部130は、詳細に解析するアドレス範囲として、全てのカウンタで1以上となっているアドレス範囲を特定する。つまり、判定部130は、一度でもカウンタが0となっているアドレス範囲を詳細な解析が不要なアドレス範囲と特定する。図2の解析要/不要の欄は、判定部130が特定した結果を示す。
このように、判定部130は、詳細に解析するアドレス範囲として、アドレス範囲におけるアクセスの回数(第1のアクセス回数)が所定の閾値(第1の閾値)を超えたアドレス範囲を特定する。なお、上記のとおり、「第1のアクセス回数」及び「第1の閾値」は、それぞれ、1つでもよく、複数でもよい。
なお、判定部130は、アドレス範囲を特定し、特定したアドレス範囲を分割して、さらにホスト制御部110に統計情報を更新させてもよい。つまり、情報制御装置100は、複数の粒度を用いてアドレス範囲を特定してもよい。例えば、判定部130は、ホスト制御部110に、全体のアドレス範囲を4分割したアドレス範囲における統計情報を更新する動作を指示する。次に、判定部130が、4分割したアドレス範囲の中から特定されたアドレス範囲をさらに4分割して、ホスト制御部110に統計情報を更新する動作を指示してもよい。
詳細な解析の負荷を軽減するためには、アドレス範囲は、詳細に分割された方がよい。しかし、全てのアドレス範囲を詳細に分割した場合、アドレス範囲の数が多くなる。そのため、統計情報の保存に必要となる記憶容量が多くなる。しかし、情報制御装置100は、上記のようなアドレス範囲の絞り込み動作を基に、統計情報として必要となる記憶領域の容量を削減しながら、絞り込んだアドレス範囲を特定できる。アドレス範囲の絞り込みは、その範囲に含まれるアクセス単位の数を削減する。つまり、この動作は、次に説明する詳細な解析に必要となる負荷及び記憶容量の削減にもつながる。
次に、判定部130は、特定したアドレス範囲における詳細な解析のために、ホスト制御部110に、特定したアドレス範囲に含まれるアクセス単位のアクセスの状態の計測を指示する。ここで、アクセスの状態とは、次の3つを含む。
(1)アクセスの回数
(2)アクセス間隔の平均。以下、アクセス間隔の平均を「周期」と呼ぶ。つまり、周期は、アクセスの平均間隔である。
(3)周期の変動が所定の閾値未満であること。以下、周期の変動が所定の閾値未満であることを「一定周期」と呼ぶ。「一定周期」に幅を持たせるのは、実際のアクセス時間が、他のアクセスなどのシステムの動作に影響を受けて変動するためである。
図4は、アクセス単位の一例であるLBAの周期情報を示す図である。図4において、左端の欄が、アクセスがあったLBAを示す。なお、LBAは、単独のアドレスに限られず、複数のアドレスを含んでもよい。左から2番目の欄が、前回のアクセスの時間(図4における単位はms)である。右から2番目の欄が、周期(図4における単位はms)である。右端の欄が、LBAに対する今までのアクセスの回数である。
最初にアクセスされた場合(LBAがない場合)、ホスト制御部110は、LBAに対応した領域を確保し、LBAの欄にアクセスされたLBAを、回数の欄に「1」を、前回のアクセス時間の欄に今回のアクセスの時間を設定する。例えば、図4の3番目のLBA(9020h)は、358120msに初めてアクセスされて保存されたLBAである。
2回目以降のアクセスにおいて、ホスト制御部110は、前回のアクセス時間と今回のアクセスの時間とを基にアクセス間隔を算出する。
そして、2回目のアクセスの場合(保存されている回数が1の場合)、ホスト制御部110は、周期として、算出したアクセス間隔を保存する。そして、ホスト制御部110は、回数の欄に「2」を、前回のアクセス時間の欄に今回のアクセスの時間を設定する。例えば、図4の1番目のLBA(BA00h)は、2回目のアクセスとして、358000msにアクセスされたLBAである。
3回目以降のアクセスの場合(保存されている回数が2以上の場合)、ホスト制御部110は、保存されている周期と、アクセス間隔との差を算出する。この差が、所定の閾値(第3の閾値)未満の場合、アクセス周期は、一定と判定される。そこで、ホスト制御部110は、上記の差が所定の閾値(第3の閾値)未満か否かを判定する。つまり、ホスト制御部110は、周期が一定か否かを判定する。なお、この差は、周期の変動に相当する。
周期が一定の場合、ホスト制御部110は、算出したアクセス間隔と保存されている周期とを基に、新たな周期を算出し、算出した周期を用いて保存されている周期を更新する。新たな周期は、次の式を基に算出される。
新たな周期=(周期×回数+算出されたアクセス間隔)/(回数+1)
そして、ホスト制御部110は、回数の欄の値を一つ増やし、前回のアクセス時間の欄に今回のアクセスの時間を設定する。例えば、図4の2番目のLBA(AA28h)は、19回目のアクセスとして、35700msにアクセスされたLBAである。
周期が一定でない場合、そのアクセス単位は、詳細な計測の対象外となる。そこで、ホスト制御部110は、そのアクセス単位を対象外に設定する。例えば、ホスト制御部110は、そのアクセス単位に対応するデータに、一定周期でないとの値を設定する。
図3は、アクセス単位の一例であるLBAの周期が一定であるか否かの判定結果を示す図である。図3において、各枠が各LBAの判定結果に対応する。「0」は、一定周期であることを示す。「1」は、一定周期でないことを示す。なお、ここでの判定結果は、「一定」又は「一定でない」の二値となる。そこで、ホスト制御部110は、図3に示されている判定結果のデータとして、ビットを用いてよい。この場合、情報制御装置100は、判定結果を保存する容量を削減できる。ただし、判定結果のデータは、ビットに限定されない。判定結果のデータとしては、具体的な実装に合わせて、バイトなどが用いられてもよい。
例えば、判定部130は、アドレス範囲に含まれるアクセス単位(今の場合、LBA)に対応した領域を確保し、初期値として全て領域の値を「0」する。そして、ホスト制御部110は、上記のとおりLBAのアクセス周期を判定し、一定周期でないLBAの値を「1」に更新する。
なお、ホスト制御部110は、一定周期でないと判定したアクセス単位(今の場合、LBA)について、上記の周期情報の動作を省略してもよい。これは、ホスト制御部110の動作の負荷の軽減と、周期情報を保存する記憶領域の削減のためである。そこで、ホスト制御部110は、図4を用いて説明した周期情報の動作の前に図3に示されている情報を用いて対象外であるか否かを判定し、対象外の場合に周期情報の動作を省略してもよい。
判定部130は、ホスト制御部110に指示してから所定の時間の経過後に、常駐させるアクセス単位として、アクセス単位の周期が所定の条件を満たすアクセス単位を判定する。つまり、判定部130は、特定されたアクセス範囲に含まれるデータのアクセス単位において、所定の条件を満たすアクセス単位をキャッシュ170に常駐させるアクセス単位と判定する。
所定の条件の一例は、次のとおりである。
(条件1)アクセス周期が一定である:具体的には、アクセス単位におけるアクセス周期の変動が所定の閾値(第3の閾値)未満である。
(条件2)アクセスが高頻度である:具体的には、アクセス単位がアクセスされた回数(第2のアクセス回数)が所定の閾値(第2の閾値)を超えている。
つまり、判定部130は、判定結果として、一定周期で高頻度となっているアクセス単位を判定する。
ただし、判定部130は、複数のアクセス単位をまとめて判定してもよい。また、所定の条件は、上記の条件に限定されない。判定部130は、さらに、判定に条件を追加してもよい。追加する条件は、限定されない。
例えば、判定部130は、次のような条件を追加してもよい。
(条件3)アクセスされるアドレスの連続範囲が狭い:具体的には、上記の2つの条件を満たすアクセス単位におけるアドレスが連続する範囲が、所定の閾値(第4の閾値)未満である。
例えば、第4の閾値を「4」とする。図3においてアドレス8000hから8001hのLBA範囲は、アドレスを2つ含む。つまり、アドレスの連続は、「2」となる。そのため、判定部130は、アドレス8000hから8001hを、上記の条件を満たすアクセス単位と判定する。
条件3を用いる場合、判定部130は、判定結果として、一定周期で高頻度となっているアクセス単位の中で、アドレスの連続範囲が狭いアクセス単位を判定する。これは、クリティカルI/Oなどの優先度が高いアクセスは、通常、所定の狭い範囲のアドレスへのアクセスとなっているためである。
なお、判定部130は、アクセス単位を狭い範囲に限定せず、アクセス単位を所定の範囲毎に分割して、キャッシュ170に常駐させるアクセス単位としてもよい。
図5は、常駐させるアクセス単位の一例であるLBAを示す図である。図5において、LBAと前回のアクセス時間と周期とは、図4のデータと同じである。
なお、図5は、論理ディスク(LD)の番号(LDN:Logical Disk Number)を含む。これは、図5が、常駐するアクセス単位をLD毎に保存する場合の例のためである。
各LDは、保存しているデータの管理に用いられる管理情報を保持している。ホストからのデータへのアクセスにおいて、情報制御装置100は、管理情報を用いる。つまり、管理情報は、ホストからのアクセスのたびに参照される情報である。つまり、管理情報は、キャッシュ170に常駐した方がよい情報の一例である。
あるいは、クリティカルI/Oの一例であるハートビートは、LD毎に実行される。つまり、常駐した方がよいI/Oは、LD毎に発生する場合が多い。
そこで、図5は、LD毎にアクセス単位であるLBAを保持する場合の例とした。つまり、判定部130は、ホストからアクセスされるデータの論理的なブロック毎に、アクセス単位を判定してもよい。
ただし、本実施形態は、上記に限定されない。例えば、情報制御装置100は、一覧とて、常駐させるアクセス単位を保持してもよい。
図1を参照した説明に戻る。
判定部130は、判定結果である常駐させるアクセス単位を、記憶部120に保存する。
ホスト制御部110は、判定部130が判定した常駐させるアクセス単位を、キャッシュ制御部140に通知する。
ただし、キャッシュ制御部140への常駐の通知は、ホスト制御部110に限定されない。例えば、判定部130が、判定結果を基に、キャッシュ制御部140に通知してもよい。
キャッシュ制御部140は、通知されたアクセス単位(例えば、LBA)をキャッシュ170に常駐させる。つまり、キャッシュ制御部140は、判定されたアクセス単位に対応するデータを常駐領域に常駐させる。常駐したアクセス単位に対して発行されたコマンドは、必ず、キャッシュ170に対するアクセスとなる。また、このアクセス単位に対応するデータは、キャッシュ170から吐き出されない。つまり、ここで常駐したアクセス単位のデータへのアクセスは、ホストに対して高速に応答することができる。
なお、情報制御装置100は、定期的に、上記の動作を繰り返す。これは、クリティカルI/Oなどは、時間とともに変化する可能性があるためである。
監視部150は、常駐されているアクセス単位の変化を監視する。そして、監視部150は、常駐を解除するアクセス単位がある場合、そのアクセス単位をキャッシュ制御部140に通知する。キャッシュ制御部140は、この通知を基に、そのアクセス単位の常駐をやめる。
監視部150は、常駐が解除するアクセス単位を判定する判定手法を、制限されない。例えば、監視部150は、アクセス単位の周期が所定の閾値(第5の閾値)を超えたアクセス単位、つまり、アクセスの頻度が低くなったアクセス単位を、常駐を解除するアクセス単位と判定する。
なお、常駐を解除するアクセス単位をキャッシュ制御部140に通知の主体は、監視部150に限定されない。例えば、ホスト制御部110又は判定部130が、解除をキャッシュ制御部140に通知してもよい。
[動作の説明]
次に、図面を参照して、情報制御装置100の動作について説明する。
(判定動作)
図7は、第1の実施形態に係る情報制御装置100における判定動作の一例を示すフローチャートである。
まず、判定部130は、記憶部120に、ホスト制御部110が統計情報を保存する領域を確保する。なお、記憶部120は、固定的に統計情報を保持する領域を備えていてもよい。
ホスト制御部110は、アドレス範囲におけるアクセスを計測する(ステップS110)。つまり、ホスト制御部110は、アクセス範囲に対応した統計情報を計測する。
判定部130は、所定の時間の経過後又は所定の周期で、統計情報において所定の条件を満たすアクセス範囲がある否かを判定する(ステップS120)。例えば、判定部130は、アクセス範囲に対するアクセスの回数(第1のアクセス回数)が所定の閾値(第1の閾値)を超えているアクセス範囲があるか否かを判定する。例えば、図2に示すデータの場合、判定部130は、全てのアクセスの回数が1以上のアクセス範囲として、5行目のデータであるアドレス範囲「8000h〜FFFFh」を判定する。
条件を満たすアクセス範囲がない場合(ステップS120でNo)、情報制御装置100は、動作を終了する。なお、情報制御装置100が動作を繰り返す場合、情報制御装置100は、ステップS110に戻る。
所定の条件を満たすアクセス範囲がある場合(ステップS120でYes)、判定部130は、ホスト制御部110に対して、そのアクセス範囲におけるアクセス単位における計測を指示する。ホスト制御部110は、指示に従って、アクセス単位におけるアクセスを計測する(ステップS130)。
なお、判定部130は、アクセス範囲を分割して、ステップS110に戻ってもよい。つまり、判定部130は、ホスト制御部110に分割したアクセス範囲に対する統計情報を取得させてもよい。例えば、判定部130は、アドレス範囲「80000h〜FFFFFh」を、4分割して、ホスト制御部110に計測を指示してもよい。4分割の例は、「80000h〜9FFFFh」、「A0000h〜BFFFFh」、「C0000h〜DFFFFh」及び「E0000h〜FFFFFh」とのアドレス範囲への分割である。
そして、所定の時間後、判定部130は、所定の条件を満たすアクセス単位があるか否かを判定する。
詳細には、まず、判定部130は、アクセス周期が一定(アクセス周期の変動が所定の閾値(第3の閾値)未満)となっているアクセス単位があるか否かを判定する。つまり、判定部130は、一定周期か否かを判定する(ステップS140)。
一定周期でない場合(ステップS140でNo)、情報制御装置100は、処理を終了する。なお、情報制御装置100が動作を繰り返す場合、情報制御装置100は、ステップS110に戻る。
一定周期の場合(ステップS140でYes)、判定部130は、アクセス単位へのアクセスの回数(第2のアクセス回数)が、所定の閾値(第2の閾値)より多いか否かを判定する。つまり、判定部130は、高頻度であるか否かを判定する(ステップS150)。
高頻度でない場合(ステップS150でNo)、情報制御装置100は、処理を終了する。なお、情報制御装置100が動作を繰り返す場合、情報制御装置100は、ステップS110に戻る。
高頻度の場合(ステップS150でYes)、判定部130は、一定周期で高頻度のアクセス単位が連続する範囲が、所定の閾値(第4の閾値)より狭い範囲となっているか否かを判定する。つまり、判定部130は、アクセス単位におけるアクセスが狭いか否かを判定する(ステップS160)。
このように、判定部130は、一定周期、高アクセス頻度、かつ、狭い範囲のアクセス単位であるか否か判定する。
例えば、上記の第4の閾値を「3」とする。図3において、「8002h」は対象外のため、「8000hから8001h」のアドレスの連続範囲は、「2」となる。そのため、「8000hから8001h」は、狭い範囲である。なお、単独のアクセス単位は、狭い範囲の一例である。
連続範囲が狭くない場合(ステップS160でNo)、情報制御装置100は、処理を終了する。なお、情報制御装置100が動作を繰り返す場合、情報制御装置100は、ステップS110に戻る。
連続範囲が狭い場合(ステップS160でYes)、判定部130は、そのアクセス単位を常駐させるアクセス単位と判定する(ステップS170)。
例えば、図4の2行目のデータ(AA28h)は、周期が一定かつ高頻度であるとする。そして、単独のLBAは、上記のとおり、狭い範囲である。そこで、判定部130は、図4の2行目のLBA(AA28h)を常駐させると判定する。
なお、判定部130は、周期が一定の判定(ステップS140)及び高頻度の判定(ステップS150)の判定の順番を入れ替えてもよい。また、判定部130は、範囲の判定(ステップS160)を省略してもよい。
判定部130は、判定結果を記憶部120に保存する。
ホスト制御部110は、記憶部120に記憶された情報を基に、キャッシュ制御部140に常駐させるアクセス単位を通知する。ただし、判定部130が、キャッシュ制御部140に常駐させるアクセス単位を通知してもよい。
(周期の動作)
図8は、第1の実施形態に係る情報制御装置100における周期情報に関する動作の一例を示すフローチャートである。
まず、ホスト制御部110は、ホストからアクセスがあったアクセス単位に対し、図3に示すようなアクセス単位(図3ではLBA)の判定結果を基に、アクセス単位が計測対象か否かを判定する(S200)。
対象外の場合(ステップS200でNo)、ホスト制御部110は、処理を終了する。例えば、ホスト制御部110は、図3の「8003h」を対象外と判定する。
対象の場合(ステップS200でYes)、ホスト制御部110は、そのアクセス単位が計測開始済みか否かを判定する(ステップS210)。つまり、ホスト制御部110は、最初にアクセスされた場合か否かを判定する。言い換えると、ホスト制御部110は、アクセスされたアクセス単位が、周期情報に含まれるが否かを判定する。
開始済みでない場合(ステップS210でNo)、ホスト制御部110は、周期情報にアクセス単位の計測を開始するためのデータを設定する。つまり、ホスト制御部110は、アクセス単位の計測を開始する(ステップS220)。具体的には、ホスト制御部110は、アクセス単位に対応した領域を確保し、アクセス単位のアドレスと、回数の「1」と、今回のアクセスの時間を設定する。例えば、ホスト制御部110は、図4の3行目のデータのように、LBAに対応した領域を確保し、LBAの欄にアクセスされたLBAを、回数の欄に「1」を、前回のアクセス時間の欄に今回のアクセスの時間を設定する。そして、ホスト制御部110は、処理を終了する。
開始済みの場合(ステップS210でYes)、ホスト制御部110は、周期が有効か否かを判定する(ステップS230)。つまり、ホスト制御部110は、2回目のアクセスか否かを判定する。具体的には、ホスト制御部110は、周期情報の周期にデータが登録されているか否かを判定する。例えば、ホスト制御部110は、図4の3行目のデータを、周期が有効でないと判定する。あるいは、例えば、ホスト制御部110は、図4の1行目のデータを、周期が有効であると判定する。
周期が有効でない場合(ステップS230でNo)、ホスト制御部110は、周期情報に計測結果を保存する(ステップS240)。詳細には、ホスト制御部110は、前回のアクセスの時間と今回のアクセスされた時間と差(アクセス間隔)を算出し、算出したアクセス間隔を周期として保存する。そして、ホスト制御部110は、回数を「2」に更新し、今回のアクセス時間を保存する。例えば、ホスト制御部110は、図4の1行目のデータを保存する。そして、ホスト制御部110は、処理を終了する。
周期が有効の場合(ステップS230でYes)、ホスト制御部110は、前回のアクセス時間と今回のアクセス時間とを基にアクセス間隔を算出する。算出したアクセス間隔と、保存されている周期との差が、周期の変動である。そして、ホスト制御部110は、周期の変動が小さいか否か(所定の閾値(第3の閾値)未満であるか否か)を判定する(ステップS250)。
変動が小さくない場合(ステップS250でNo)、ホスト制御部110は、そのアクセス単位を監視の対象外に設定する(ステップS260)。例えば、ホスト制御部110は、図3に示されているLBA判定結果の値を「1」に変更する。そして、ホスト制御部110は、処理を終了する。なお、ホスト制御部110は、対象外となったアクセス単位に対応する周期情報を削除してもよい。
変動が小さい場合(ステップS250でYes)、ホスト制御部110は、算出したアクセス間隔を用いて、保存されている周期を修正する。具体的には、ホスト制御部110は、既に説明した次の式を用いる。
新しい周期=(周期×回数+算出されたアクセス間隔)/(回数+1)
そして、ホスト制御部110は、周期情報を更新する(ステップS270)。詳細には、ホスト制御部110は、回数の欄の値を一つ増やし、上記の算出した周期と今回のアクセス時間とを保存する。そして、ホスト制御部110は、処理を終了する。
[効果の説明]
次に、第1の実施形態に係る情報制御装置100の効果について説明する。
このように、本実施形態は、キャッシュ170に常駐させるアクセス単位を判定において、利用者の工数及びメモリの容量を削減するとの効果を得ることができる。
その理由は、次のとおりである。
キャッシュ170が、ホストと記憶装置との間におけるデータのアクセスにおいてデータを保存する。
判定部130が、ホストが所定のアドレス範囲におけるデータに対してアクセスした第1のアクセス回数が第1の閾値より多いアドレス範囲を特定する。そして、判定部130が、特定したアドレス範囲に含まれるデータのアクセス単位において、アクセス単位がアクセスされた第2のアクセス回数が第2の閾値を超え、かつ、アクセス周期の変動が第3の閾値未満であるアクセス単位を判定する。
キャッシュ制御部140が、判定されたアクセス単位に対応するデータをキャッシュ170に常駐させる。
このように、情報制御装置100は、利用者の工数を必要としないでキャッシュ170に常駐させるアクセス単位を判定する。さらに、情報制御装置100は、上記のように特定されたアドレス範囲におけるアクセス単位の情報を用いるため、全てのアクセス単位より少ない数のアクセス単位に対応したメモリを用いてキャッシュ170に常駐させるアクセス単位を判定する。つまり、情報制御装置100は、キャッシュ170に常駐させるアクセス単位を判定において、利用者の工数及びメモリの容量を削減することができる。
より詳細には、本実施形態は、以下の効果を奏することができる。
第1の効果は、情報制御装置100が、膨大なメモリを使用せずにキャッシュ170に常駐させるアクセス単位を、自動的に、判定するとの効果である。
その理由は、次のとおりである。判定部130が、まず、統計情報として、ホスト制御部110に対してアクセス範囲におけるアクセスの回数を測定させる。そして、判定部130が、ホスト制御部110に対して、所定の条件を満たすアクセス範囲におけるアクセス単位のアクセスを測定させる。このように、情報制御装置100は、判定に、全てのアクセス単位に対応したメモリではなく、一部のアクセス単位に対応したメモリを用いればよいためである。
さらに、判定部130は、利用者における作業を必要としない。つまり、判定部130が、自動的に判定するためである。
第2の効果は、システムの停止などで、クリティカルI/Oが発行されなくなったような状態に対応できるとの効果である。
その理由は、次にとおりである。監視部150が、常駐させる必要がなくなったアクセス単位を判定する。そして、キャッシュ制御部140が、監視部150の判定結果を基に不要なアクセス単位に対応するキャッシュ170の領域を解放するためである。
第3の効果は、クリティカルI/Oなどの応答性を早め、システムを安定させるとの効果である。
その理由は、次のとおりである。判定部130が、クリティカルI/Oに対応するアクセス単位などキャッシュ170に常駐させるアクセス単位を、複数の条件を用いて、適切に判定する。そして、キャッシュ制御部140が、判定されたアクセス単位をキャッシュ170に常駐させるためである。
さらに、判定部130が、判定したアクセス単位の中で、アクセス単位のアドレスの連続範囲が第4の閾値未満であるアクセス単位を判定してもよい。この場合、情報制御装置100は、クリティカルI/Oに対応したアクセス単位の判定の精度を向上できる。その理由は、クリティカルI/Oは、一般的に、狭いアドレス範囲へのアクセスとなっているためである。
[第1の実施形態の概要]
以上の説明した情報制御装置100は、次のように構成される。
例えば、情報制御装置100の各構成部は、ハードウェア回路で構成されてもよい。
また、情報制御装置100において、各構成部は、ネットワークを介して接続した複数の装置を用いて、構成されてもよい。あるいは、各構成は、直接的に情報を送信及び受信してもよい。
図9は、第1の実施形態の構成の概要を示すブロック図である。
情報制御装置101は、判定部130と、キャッシュ制御部140と、キャッシュ170を含む。キャッシュ制御部140及びキャッシュ170は、図示しないホスト制御部110に相当する構成、及び、図示しない記憶装置制御部160に相当する構成と接続されている。判定部130は、図示しないホスト制御部110に相当する構成、及び、図示しない記憶部120に相当する装置と接続されている。
このように構成された情報制御装置101は、情報制御装置100と同様に、キャッシュ170に常駐させるアクセス単位を判定において、利用者の工数及びメモリの容量を削減するとの効果を得ることができる。
その理由は、情報制御装置101の各構成が、情報制御装置100の構成と同様に動作するためである。
すなわち、キャッシュ170が、ホストと記憶装置との間におけるデータのアクセスにおいてデータを保存する。
判定部130が、ホストが所定のアドレス範囲におけるデータに対してアクセスした第1のアクセス回数が第1の閾値より多いアドレス範囲を特定する。そして、判定部130が、特定したアドレス範囲に含まれるデータのアクセス単位において、アクセス単位がアクセスされた第2のアクセス回数が第2の閾値を超え、かつ、アクセス周期の変動が第3の閾値未満であるアクセス単位を判定する。
キャッシュ制御部140が、判定されたアクセス単位に対応するデータをキャッシュ170に常駐させる。
なお、情報制御装置101は、本発明の実施形態における最小構成である。
[ハードウェアの構成例]
また、情報制御装置100を用いて、情報制御装置100及び情報制御装置101におけるハードウェアの構成について説明する。情報制御装置100において、複数の構成部は、1つのハードウェアで構成されてもよい。
また、情報制御装置100は、CPU(Central Processing Unit)と、ROM(Read Only Memory)と、RAM(Random Access Memory)とを含むコンピュータ装置として実現されてもよい。情報制御装置100は、さらに、入出力回路(IOC:Input and Output circuit)を含むコンピュータ装置として実現されてもよい。あるいは、情報制御装置100は、さらに、ネットワークインターフェース回路(NIC:Network Interface Circuit)を含むコンピュータ装置として実現されてもよい。
図10は、第1の実施形態のハードウェア構成の一例を示すブロック図である。
情報制御装置600は、CPU610と、ROM620と、RAM630と、内部記憶装置640と、IOC650と、NIC680と、NIC690とを含み、コンピュータ装置を構成している。
CPU610は、ROM620からプログラムを読み込む。そして、CPU610は、読み込んだプログラムに基づいて、RAM630と、内部記憶装置640と、IOC650と、NIC680と、NIC690とを制御する。そして、CPU610を含むコンピュータは、これらの構成を制御し、図1に示す、ホスト制御部110と、判定部130と、キャッシュ制御部140と、監視部150と、記憶装置制御部160と、キャッシュ170としての各機能を実現する。
CPU610は、各機能を実現する際に、RAM630又は内部記憶装置640を、プログラムの一時記録媒体として使用してもよい。
また、CPU610は、コンピュータで読み取り可能にプログラムを記憶した記録媒体700が含むプログラムを、図示しない記録媒体読み取り装置を用いて読み込んでもよい。あるいは、CPU610は、NIC690を介して、ホスト又は図示しない外部の装置からプログラムを受け取り、RAM630又は内部記憶装置640に保存して、保存したプログラムを基に動作してもよい。
ROM620は、CPU610が実行するプログラム及び固定的なデータを記憶する。ROM620は、例えば、P−ROM(Prgrammable−ROM)又はフラッシュROMである。
RAM630は、CPU610が実行するプログラム及びデータを一時的に記憶する。RAM630は、例えば、D−RAM(Dynamic−RAM)である。
内部記憶装置640は、情報制御装置600が長期的に保存するデータ及びプログラムを記憶する。内部記憶装置640は、記憶部120として動作する。また、内部記憶装置640は、CPU610の一時記憶装置として動作してもよい。内部記憶装置640は、例えば、ハードディスク装置、光磁気ディスク装置、又は、SSD(Solid State Drive)である。
ここで、ROM620と内部記憶装置640は、不揮発性(non−transitory)の記録媒体である。一方、RAM630は、揮発性(transitory)の記録媒体である。そして、CPU610は、ROM620、内部記憶装置640、又は、RAM630に記憶されているプログラムを基に動作可能である。つまり、CPU610は、不揮発性記録媒体又は揮発性記録媒体を用いて動作可能である。
IOC650は、CPU610と、入力機器660及び表示機器670とのデータを仲介する。IOC650は、例えば、IOインターフェースカード又はUSB(Universal Serial Bus)カードである。さらに、IOC650は、USBのような有線に限らず、無線を用いてもよい。
入力機器660は、情報制御装置600の操作者からの入力指示を受け取る機器である。入力機器660は、例えば、キーボード、マウス又はタッチパネルである。
表示機器670は、情報制御装置600の操作者に情報を表示する機器である。表示機器670は、例えば、液晶ディスプレイである。
NIC680は、ネットワークを介した記憶装置とのデータのやり取りを中継する。NIC690は、ネットワークを介したホストとのデータのやり取りを中継する。NIC680及びNIC690は、例えば、Fibre Channelカード又はLAN(Local Area Network)カードである。さらに、NIC680及びNIC690は、有線に限らず、無線を用いてもよい。
このように構成された情報制御装置600は、情報制御装置100と同様の効果を得ることができる。
その理由は、情報制御装置600のCPU610が、プログラムに基づいて情報制御装置100と同様の機能を実現できるためである。
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成及び詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。