(57)【要約】【課題】二次キャッシュにヒットした場合の読み出し応答性能の低下を抑制する。【解決手段】制御情報１１ａには、記憶装置２０における第１のアクセス負荷と二次キャッシュ２における第２のアクセス負荷との組み合わせごとに、二次キャッシュ２へのステージング負荷を調整するための制御値が登録されている。各制御値は、記憶装置２０が第１のアクセス負荷でアクセス動作を実行し、かつ、二次キャッシュ２が第２のアクセス負荷でアクセス動作を実行している状態で、二次キャッシュ２からの読み出し性能が記憶装置２０からの読み出し性能より高くなるような値である。負荷調整部１３は、制御情報１１ａに登録された制御値のうち、記憶装置２０および二次キャッシュ２のそれぞれにおける現在のアクセス負荷に対応する制御値を用いて、二次キャッシュ２へのステージング負荷を調整する。【選択図】図１
2018045282.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置における第１のアクセス負荷と二次キャッシュにおける第２のアクセス負荷との組み合わせごとに、前記記憶装置から前記二次キャッシュへのステージング負荷を調整するための制御値が登録された制御情報であって、前記各制御値は、前記記憶装置が前記第１のアクセス負荷でアクセス動作を実行し、かつ、前記二次キャッシュが前記第２のアクセス負荷でアクセス動作を実行している状態で、前記二次キャッシュからの読み出し性能が前記記憶装置からの読み出し性能より高くなるような値である、前記制御情報を記憶する記憶部と、
一次キャッシュと前記二次キャッシュとを用いて、ホスト装置からの要求に応じた前記記憶装置へのアクセスを制御するアクセス制御部と、
前記制御情報に登録された前記制御値の中から、前記記憶装置における現在のアクセス負荷と前記二次キャッシュにおける現在のアクセス負荷とに対応する対応制御値を抽出し、前記対応制御値を用いて前記記憶装置から前記二次キャッシュへのステージング負荷を調整する負荷調整部と、
を有するストレージ制御装置。
【請求項２】
前記アクセス制御部は、前記ホスト装置から読み出しが要求された読み出しデータが、前記一次キャッシュと前記二次キャッシュのどちらにも記憶されていない場合、前記読み出しデータを前記記憶装置から前記一次キャッシュに書き込み、前記読み出しデータを前記一次キャッシュから前記ホスト装置へ送信し、その後の非同期のタイミングで、前記読み出しデータを前記記憶装置から前記二次キャッシュへステージングする、
請求項１記載のストレージ制御装置。
【請求項３】
前記記憶装置および前記二次キャッシュの読み出し性能を測定し、その測定結果に基づいて前記制御情報を作成する作成部をさらに有する、
請求項１または２記載のストレージ制御装置。
【請求項４】
前記作成部は、
前記第１のアクセス負荷と前記第２のアクセス負荷との組み合わせごとに、前記記憶装置に前記第１のアクセス負荷でアクセス動作を実行させ、かつ、前記二次キャッシュに前記第２のアクセス負荷でアクセス動作を実行させた状態で、前記制御値を変化させながら前記記憶装置の第１の読み出し性能と前記二次キャッシュの第２の読み出し性能と前記二次キャッシュの書き込み性能とを計測し、
前記第１のアクセス負荷と前記第２のアクセス負荷との組み合わせごとに、前記第２の読み出し性能が前記第１の読み出し性能より高くなる前記制御値を制御値群として特定し、
前記制御値群に含まれる前記制御値のうち、前記第２の読み出し性能と前記書き込み性能とに基づく性能評価値が最も高い前記制御値を、前記制御情報に登録する、
請求項３記載のストレージ制御装置。
【請求項５】
前記制御値は、前記二次キャッシュに対して１つの書き込みコマンドによって書き込みが要求されるデータのサイズと、前記二次キャッシュに対して同時に発行可能な書き込みコマンドの数の少なくとも一方を含む、
請求項１乃至４のいずれか１項に記載のストレージ制御装置。
【請求項６】
記憶装置と、ストレージ制御装置とを有するストレージシステムであって、
前記ストレージ制御装置は、
前記記憶装置における第１のアクセス負荷と二次キャッシュにおける第２のアクセス負荷との組み合わせごとに、前記記憶装置から前記二次キャッシュへのステージング負荷を調整するための制御値が登録された制御情報であって、前記各制御値は、前記記憶装置が前記第１のアクセス負荷でアクセス動作を実行し、かつ、前記二次キャッシュが前記第２のアクセス負荷でアクセス動作を実行している状態で、前記二次キャッシュからの読み出し性能が前記記憶装置からの読み出し性能より高くなるような値である、前記制御情報を記憶する記憶部と、
一次キャッシュと前記二次キャッシュとを用いて、ホスト装置からの要求に応じた前記記憶装置へのアクセスを制御するアクセス制御部と、
前記制御情報に登録された前記制御値の中から、前記記憶装置における現在のアクセス負荷と前記二次キャッシュにおける現在のアクセス負荷とに対応する対応制御値を抽出し、前記対応制御値を用いて前記記憶装置から前記二次キャッシュへのステージング負荷を調整する負荷調整部と、
を有するストレージシステム。
【請求項７】
コンピュータに、
一次キャッシュと二次キャッシュとを用いて、ホスト装置からの要求に応じた記憶装置へのアクセスを制御し、
前記記憶装置における第１のアクセス負荷と前記二次キャッシュにおける第２のアクセス負荷との組み合わせごとに、前記記憶装置から前記二次キャッシュへのステージング負荷を調整するための制御値が登録された制御情報であって、前記各制御値は、前記記憶装置が前記第１のアクセス負荷でアクセス動作を実行し、かつ、前記二次キャッシュが前記第２のアクセス負荷でアクセス動作を実行している状態で、前記二次キャッシュからの読み出し性能が前記記憶装置からの読み出し性能より高くなるような値である、前記制御情報を参照し、
前記制御情報に登録された前記制御値の中から、前記記憶装置における現在のアクセス負荷と前記二次キャッシュにおける現在のアクセス負荷とに対応する対応制御値を抽出し、前記対応制御値を用いて前記記憶装置から前記二次キャッシュへのステージング負荷を調整する、
処理を実行させるストレージ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ制御装置、ストレージシステムおよびストレージ制御プログラムに関する。
【背景技術】
【０００２】
記憶装置からの読み出し性能を向上させる技術として、キャッシュを用いたアクセス制御技術が広く利用されている。この技術では、記憶装置内のデータの一部がキャッシュに一時的に保持され、データの読み出しが要求されたとき、そのデータがキャッシュに保持されていれば、そのデータは記憶装置の代わりにキャッシュから読み出される。また、一次キャッシュ、二次キャッシュのように、キャッシュを階層的に設ける技術も知られている。
【０００３】
一次キャッシュと二次キャッシュとを用いた技術の例として、次のようなストレージ装置が提案されている。このストレージ装置は、二次キャッシュとして用いられるＳＳＤ（Solid State Drive）の使用期間を複数の期間に分類し、期間ごとに異なる条件を用いてＳＳＤへのステージング量を制御する。
【０００４】
また、他の関連技術として、拡張記憶装置だけでなく、拡張記憶装置と磁気ディスク装置との間の転送バッファもキャッシュとして用いられる磁気ディスクキャッシュ制御方式が提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１５−６９３５３号公報
【特許文献２】特開平４−２５１３５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、一次キャッシュと二次キャッシュを用いた記憶装置へのアクセス制御では、読み出しが要求されたデータが一次キャッシュに存在せず、二次キャッシュに存在した場合には、二次キャッシュからデータが読み出される。これにより、二次キャッシュを用いずに記憶装置からデータを読み出す場合よりも、ホスト装置に対する応答時間が短縮される。また、読み出しが要求されたデータが一次キャッシュにも二次キャッシュにも存在しない場合には、そのデータは記憶装置から読み出される。このとき、記憶装置から二次キャッシュへのデータの書き込み（ステージング）が行われる。
【０００７】
すなわち、上記のアクセス制御では、二次キャッシュからのデータの読み出しと、二次キャッシュへのデータの書き込みとが、同時並行的に実行され得る。そして、二次キャッシュへのデータの書き込み量やその頻度が大きくなり、二次キャッシュのアクセス負荷が過大になると、二次キャッシュからのデータの読み出し速度が低下してしまうという問題がある。このような二次キャッシュからのデータの読み出し速度の低下は、二次キャッシュにヒットした場合のホスト装置からの読み出し応答性能の低下を招く。
【０００８】
１つの側面では、本発明は、二次キャッシュにヒットした場合の読み出し応答性能の低下を抑制可能なストレージ制御装置、ストレージシステムおよびストレージ制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
１つの案では、記憶部、アクセス制御部および負荷調整部を有するストレージ制御装置が提供される。記憶部は、記憶装置における第１のアクセス負荷と二次キャッシュにおける第２のアクセス負荷との組み合わせごとに、記憶装置から二次キャッシュへのステージング負荷を調整するための制御値が登録された制御情報を記憶する。この制御情報の各制御値は、記憶装置が第１のアクセス負荷でアクセス動作を実行し、かつ、二次キャッシュが第２のアクセス負荷でアクセス動作を実行している状態で、二次キャッシュからの読み出し性能が記憶装置からの読み出し性能より高くなるような値である。アクセス制御部は、一次キャッシュと二次キャッシュとを用いて、ホスト装置からの要求に応じた記憶装置へのアクセスを制御する。負荷調整部は、制御情報に登録された制御値の中から、記憶装置における現在のアクセス負荷と二次キャッシュにおける現在のアクセス負荷とに対応する対応制御値を抽出し、対応制御値を用いて記憶装置から二次キャッシュへのステージング負荷を調整する。
【００１０】
また、１つの案では、上記のストレージ制御装置と上記の記憶装置とを有するストレージシステムが提供される。
さらに、１つの案では、上記のストレージ制御装置と同様の処理をコンピュータに実行させるストレージ制御プログラムが提供される。
【発明の効果】
【００１１】
１つの側面では、二次キャッシュにヒットした場合の読み出し応答性能の低下を抑制できる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態に係るストレージシステムの構成例および処理例を示す図である。
【図２】第２の実施の形態に係るストレージシステムの構成例を示す図である。
【図３】ストレージ装置の処理機能の構成例を示すブロック図である。
【図４】ボリュームに対して読み出しが要求された場合の制御手順の例を示す第１の図である。
【図５】ボリュームに対して読み出しが要求された場合の制御手順の例を示す第２の図である。
【図６】二次キャッシュを用いた制御における問題点を示す図である。
【図７】二次キャッシュのヒット率と読み出し応答時間との関係の例を示すグラフである。
【図８】負荷監視部による負荷監視処理手順の例を示すフローチャートである。
【図９】性能評価部による性能評価処理手順の例を示すフローチャートである。
【図１０】評価管理テーブルの構成例を示す図である。
【図１１】フラッシュメモリおよびボリュームの性能計測処理手順の例を示すフローチャートである。
【図１２】制御テーブルの構成例を示す図である。
【図１３】負荷制御部による負荷制御処理手順の例を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、本発明の実施の形態について図面を参照して説明する。
〔第１の実施の形態〕
図１は、第１の実施の形態に係るストレージシステムの構成例および処理例を示す図である。図１に示すストレージシステムは、ストレージ制御装置１０と記憶装置２０を含む。また、ストレージ制御装置１０には、ホスト装置３０が接続されている。
【００１４】
ストレージ制御装置１０は、ホスト装置３０からの要求に応じて、記憶装置２０に対するアクセスを制御する。例えば、ストレージ制御装置１０は、記憶装置２０の記憶領域を用いた論理記憶領域を作成し、ホスト装置３０から論理記憶領域へのアクセス要求を受け付けることで、記憶装置２０へのアクセスを制御する。記憶装置２０は、磁気ディスク、フラッシュメモリなどの記録媒体を備える。ホスト装置３０は、記憶装置２０へのアクセスを伴う処理を実行するコンピュータである。
【００１５】
ストレージ制御装置１０は、記憶部１１、アクセス制御部１２および負荷調整部１３を有する。記憶部１１は、ＲＡＭ（Random Access Memory）、ＨＤＤ（Hard Disk Drive）など、ストレージ制御装置１０が備える記憶装置の記憶領域として実装される。アクセス制御部１２および負荷調整部１３の処理は、例えば、ストレージ制御装置１０が備えるプロセッサが所定のプログラムを実行することで実現される。
【００１６】
記憶部１１には、負荷調整部１３によって参照される制御情報１１ａが記憶される。制御情報１１ａの内容については後述する。
アクセス制御部１２は、ホスト装置３０からの要求に応じた記憶装置２０へのアクセスを、一次キャッシュ１と二次キャッシュ２とを用いて制御する。ここで、一次キャッシュ１および二次キャッシュ２は、それぞれ個別の記憶装置に確保される記憶領域である。一次キャッシュ１が確保される記憶装置は、二次キャッシュ２が確保される記憶装置よりアクセス性能が高い。二次キャッシュ２が確保される記憶装置は、記憶装置２０よりアクセス性能が高い。なお、図１の例では、一次キャッシュ１および二次キャッシュ２がそれぞれ確保される記憶装置がストレージ制御装置１０の内部に搭載されているものとするが、これらの記憶装置の少なくとも一方は、ストレージ制御装置１０の外部に接続されていてもよい。
【００１７】
アクセス制御部１２は、次のような手順で記憶装置２０へのアクセスを制御する。ホスト装置３０から読み出しが要求されたデータが一次キャッシュ１に存在する「一次キャッシュヒット」の場合、アクセス制御部１２は、そのデータを一次キャッシュ１から読み出してホスト装置３０に送信する。
【００１８】
また、ホスト装置３０から読み出しが要求されたデータが一次キャッシュ１に存在しないが二次キャッシュ２に存在する「二次キャッシュヒット」の場合、アクセス制御部１２は、まず、そのデータを二次キャッシュ２から読み出して一次キャッシュ１に格納する。格納完了後、アクセス制御部１２は、そのデータを一次キャッシュ１から読み出してホスト装置３０に送信する。なお、図１では、二次キャッシュヒットの場合のデータ転送の流れを、実線矢印で示している。
【００１９】
また、ホスト装置３０から読み出しが要求されたデータが一次キャッシュ１にも二次キャッシュ２にも存在しない「キャッシュミス」の場合、アクセス制御部１２は例えば、まず、そのデータを記憶装置２０から読み出して一次キャッシュ１に格納する。格納完了後、アクセス制御部１２は、そのデータを一次キャッシュ１から読み出してホスト装置３０に送信する。さらに、その後の非同期のタイミングで、アクセス制御部１２は、そのデータを記憶装置２０から読み出して二次キャッシュ２に格納する「ステージング」を行う。なお、図１では、このようなキャッシュミスの場合のデータ転送の流れを、点線矢印で示している。また、キャッシュミスの場合の他の制御例としては、データを記憶装置２０から二次キャッシュ２に格納し、そのデータを二次キャッシュ２から一次キャッシュ１に格納した後、そのデータをホスト装置３０に送信する方法も適用可能である。
【００２０】
このように、アクセス制御部１２によるアクセス制御では、二次キャッシュ２からの読み出しと二次キャッシュ２への書き込みとが同時並行的に実行され得る。このため、二次キャッシュ２へのデータの書き込み量やその頻度が大きくなり、二次キャッシュ２のアクセス負荷が過大になると、二次キャッシュ２からのデータの読み出し速度が低下してしまう。このような二次キャッシュ２からのデータの読み出し速度の低下は、二次キャッシュ２にヒットした場合のホスト装置３０からの読み出し応答性能の低下を招く。
【００２１】
このような問題に対して、負荷調整部１３は、制御情報１１ａに基づいて、ホスト装置３０からの読み出し応答性能の低下が抑制されるように、記憶装置２０から二次キャッシュ２へのステージング負荷を調整する。
【００２２】
制御情報１１ａには、図１に示すように、記憶装置２０におけるアクセス負荷（第１のアクセス負荷）と、二次キャッシュ２におけるアクセス負荷（第２のアクセス負荷）との組み合わせごとに、ステージング負荷を調整するための制御値が登録されている。それぞれの制御値は、記憶装置２０が対応する第１のアクセス負荷でアクセス動作を実行し、かつ、二次キャッシュ２が対応する第２のアクセス負荷でアクセス動作を実行している状態で、二次キャッシュ２からの読み出し性能が記憶装置２０からの読み出し性能より高くなるような値である。
【００２３】
負荷調整部１３は、アクセス制御部１２によるアクセス制御中において、記憶装置２０における現在の第１のアクセス負荷と、二次キャッシュ２における現在の第２のアクセス負荷とを取得する。負荷調整部１３は、取得した第１のアクセス負荷および第２のアクセス負荷に対応付けられた制御値を、制御情報１１ａから抽出し、抽出した制御値を用いて記憶装置２０から二次キャッシュ２へのステージング負荷を調整する。
【００２４】
これにより、二次キャッシュ２における読み出しと書き込みとの競合に起因する、二次キャッシュ２にヒットした場合のホスト装置３０の読み出し応答性能の低下を、抑制できる。特に、二次キャッシュ２にヒットしたデータの読み出し性能を、二次キャッシュ２を利用せず、そのデータを記憶装置２０から直接読み出す場合の読み出し性能より確実に高くすることができる。すなわち、二次キャッシュ２からの読み出し性能を、アクセス制御に二次キャッシュ２を利用する意義がある範囲内に維持できる。
【００２５】
また、上記のように、キャッシュミスの発生に伴う二次キャッシュ２へのステージングが、ホスト装置３０への応答後の非同期のタイミングで実行される場合には、ステージングの実行タイミングを遅延させてもホスト装置３０の読み出し応答性能にほとんど影響しない。このため、キャッシュミス発生時における読み出し応答性能を低下させることなく、二次キャッシュヒット発生時における読み出し応答性能の低下を抑制できる。
【００２６】
一方、キャッシュミスの発生時に、ホスト装置３０への応答の前に二次キャッシュ２へのステージングを行う方法を用いた場合には、二次キャッシュヒット発生時における読み出し応答性能を優先的に向上させることができる。
【００２７】
〔第２の実施の形態〕
図２は、第２の実施の形態に係るストレージシステムの構成例を示す図である。図２に示すストレージシステムは、ストレージ装置１００とホスト装置２００とを含む。ストレージ装置１００は、ＣＭ（Controller Module）１１０、ＤＥ（Drive Enclosure）１２０およびフラッシュメモリ１３０を有する。そして、ＣＭ１１０とホスト装置２００とが、例えば、ファイバチャネル（ＦＣ：Fibre Channel）やｉＳＣＳＩ（Internet Small Computer System Interface）などを用いたＳＡＮ（Storage Area Network）を介して接続されている。
【００２８】
ＣＭ１１０は、ホスト装置２００からの要求に応じて、ＤＥ１２０に搭載された記憶装置へのアクセスを制御するストレージ制御装置である。ＤＥ１２０には、ホスト装置２００からのアクセス対象となる記憶装置が複数台搭載されている。本実施の形態では例として、ＤＥ１２０は、記憶装置として複数台のＨＤＤ１２１，１２２，１２３，・・・が搭載されたディスクアレイ装置である。
【００２９】
ＣＭ１１０は、ＣＰＵ（Central Processing Unit）１１１、ＲＡＭ１１２、ＳＳＤ１１３、ホストインタフェース（Ｉ／Ｆ）１１４およびディスクインタフェース（Ｉ／Ｆ）１１５を有する。
【００３０】
ＣＰＵ１１１は、ＣＭ１１０全体を統括的に制御する。ＣＰＵ１１１は、例えば、１つまたは複数のプロセッサを備える。
ＲＡＭ１１２は、ＣＭ１１０の主記憶装置として使用される。ＲＡＭ１１２には、ＣＰＵ１１１に実行させるＯＳ（Operating System）プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１１２には、ＣＰＵ１１１による処理に必要な各種データが格納される。例えば、ＲＡＭ１１２には、ホスト装置２００からの要求に応じたＤＥ１２０へのアクセス制御の際に用いられる一次キャッシュの領域が確保される。
【００３１】
ＳＳＤ１１３は、ＣＭ１１０の補助記憶装置として使用される。ＳＳＤ１１３には、ＯＳプログラム、アプリケーションプログラム、および各種データが格納される。
ホストインタフェース１１４は、ホスト装置２００と通信するためのインタフェースである。ディスクインタフェース１１５は、ＤＥ１２０内のＨＤＤと通信するためのインタフェースである。例えば、ディスクインタフェース１１５は、ＳＡＳ（Serial Attached SCSI，SCSI：Small Computer System Interface）インタフェースである。
【００３２】
以上のハードウェア構成により、ＣＭ１１０の処理機能が実現される。さらに、ＣＰＵ１１１には、フラッシュメモリ１３０が接続されている。ＣＰＵ１１１とフラッシュメモリ１３０との間は、例えば、ＰＣＩ  ｅｘｐｒｅｓｓ（PCI：Peripheral Component Interconnect）バスを介して接続されている。フラッシュメモリ１３０には、ホスト装置２００からの要求に応じたＤＥ１２０へのアクセス制御の際に用いられる二次キャッシュの領域が確保される。
【００３３】
ホスト装置２００は、業務処理などの所定の処理に伴って、ストレージ装置１００内のＤＥ１２０に対してアクセスする。より具体的には、ＣＭ１１０によって、ＤＥ１２０内のＨＤＤを用いたボリューム（論理記憶領域）が提供され、ホスト装置２００は、そのボリュームに対するアクセスをＣＭ１１０に要求することで、ＤＥ１２０内のＨＤＤにアクセスする。なお、ホスト装置２００は、例えば、ＣＰＵ、ＲＡＭなどを備えるコンピュータとして実現される。
【００３４】
図３は、ストレージ装置の処理機能の構成例を示すブロック図である。ストレージ装置１００は、一次キャッシュ１０１、二次キャッシュ１０２、キャッシュ制御部１４１、負荷監視部１４２、性能評価部１４３、負荷制御部１４４および記憶部１５０を有する。
【００３５】
一次キャッシュ１０１と二次キャッシュ１０２は、ホスト装置２００からのアクセス要求に応じて、ＤＥ１２０内のＨＤＤによって実現されるボリュームにアクセスする際のキャッシュ領域として利用される。二次キャッシュ１０２は、ＤＥ１２０内のＨＤＤよりアクセス性能の高い記憶装置に確保された記憶領域として実装され、本実施の形態では、フラッシュメモリ１３０に確保された記憶領域として実装される。なお、二次キャッシュ１０２の記憶領域は、例えば、ＣＭ１１０の補助記憶装置（ＳＳＤ１１３）に実装されてもよい。一次キャッシュ１０１は、二次キャッシュ１０２を実現する記憶装置よりアクセス性能の高い記憶装置に確保された記憶領域として実装され、本実施の形態ではＣＭ１１０のＲＡＭ１１２に確保された記憶領域として実装される。
【００３６】
キャッシュ制御部１４１、負荷監視部１４２、性能評価部１４３および負荷制御部１４４の処理は、例えば、ＣＭ１１０のＣＰＵ１１１が所定のプログラムを実行することで実現される。記憶部１５０は、ＣＭ１１０が備える記憶装置（例えば、ＳＳＤ１１３）の記憶領域として実装される。
【００３７】
キャッシュ制御部１４１は、ＤＥ１２０に搭載された１以上のＨＤＤの記憶領域によって実現されるボリュームを作成する。キャッシュ制御部１４１は、一次キャッシュ１０１と二次キャッシュ１０２を用いて、ホスト装置２００からの要求に応じたボリュームへのアクセスを制御する。なお、一次キャッシュ１０１と二次キャッシュ１０２を用いたアクセス制御処理の詳細については後述する。また、以下の説明において、ボリュームへのアクセスやＩＯ（Input／Output）処理とは、ボリュームを構成する実記憶領域へのアクセスやＩＯ処理を示すものとする。
【００３８】
また、キャッシュ制御部１４１は、負荷制御部１４４から設定される情報に基づいてアクセス制御を実行する。負荷制御部１４４から設定される情報としては、二次キャッシュ１０２が実装されるフラッシュメモリ１３０への書き込み処理についてのブロックサイズおよび多重度がある。ブロックサイズとは、フラッシュメモリ１３０に書き込みコマンドを１回発行する際の書き込みデータサイズを示す。多重度とは、フラッシュメモリ１３０に対して書き込み要求に対する応答を待たずに同時に発行可能なコマンド数を示す。
【００３９】
負荷監視部１４２は、二次キャッシュ１０２やボリュームにおけるＩＯ処理負荷を定期的に計測し、それらの計測結果を性能評価部１４３や負荷制御部１４４に通知する。負荷監視部１４２は、ＩＯ処理負荷として例えば、二次キャッシュ１０２が実装されるフラッシュメモリ１３０の読み出し応答時間および書き込みスループット、ボリュームの読み出し応答時間を計測する。
【００４０】
性能評価部１４３は、二次キャッシュ１０２およびボリュームに対してテスト用のＩＯコマンドを発行することによって、負荷制御部１４４が参照する制御テーブルを作成する。制御テーブルは、二次キャッシュ１０２が実装されるフラッシュメモリ１３０およびボリュームのそれぞれにおけるアクセス負荷状況に応じて、負荷制御部１４４がキャッシュ制御部１４１に設定する最適な設定値を保持する。性能評価部１４３は、テスト用のＩＯコマンドを発行したときのＩＯ処理負荷の計測結果を、負荷監視部１４２から受け取る。性能評価部１４３は、受け取った計測結果に基づいて、ホスト装置２００からボリュームへの読み出し要求に対する応答時間の遅延が抑制されるような設定値を推計して、制御テーブルに登録する。
【００４１】
負荷制御部１４４は、キャッシュ制御部１４１によるボリュームに対するアクセス制御処理の実行時において、性能評価部１４３によって作成された制御テーブルを参照しながら、キャッシュ制御部１４１に対してＩＯ処理に関する設定値を設定する。具体的には、負荷制御部１４４は、アクセス制御処理の実行時におけるＩＯ処理負荷の計測結果を、負荷監視部１４２から受け取る。負荷制御部１４４は、制御テーブルから、受け取った計測結果に対応付けられた最適な設定値を取得し、取得した設定値をキャッシュ制御部１４１に設定する。これにより、負荷制御部１４４は、ホスト装置２００からボリュームへの読み出し要求に対する応答時間の遅延が抑制されるように制御する。
【００４２】
記憶部１５０は、キャッシュ制御部１４１や負荷制御部１４４の処理時に参照される各種のデータを記憶する。例えば、記憶部１５０は、性能評価部１４３によって作成され、負荷制御部１４４によって参照される前述の制御テーブルを記憶する。また、記憶部１５０は、ボリュームの構成情報が登録されたボリューム管理テーブルを記憶する。ボリューム管理テーブルには、例えば、ボリュームのサイズ、ボリュームを構成するＤＥ１２０内のＨＤＤの識別情報、それらのＨＤＤへの書き込み制御で利用するＲＡＩＤ（Redundant Arrays of Inexpensive Disks）のレベル情報などが登録される。
【００４３】
次に、図４、図５を用いて、一次キャッシュ１０１と二次キャッシュ１０２を用いたボリュームに対するアクセス制御処理の基本的な手順について説明する。
図４は、ボリュームに対して読み出しが要求された場合の制御手順の例を示す第１の図である。図４において、ホスト装置２００は、ボリューム１０３のあるブロックからの読み出しを、ＣＭ１１０に要求する。ここでは、このブロックに格納されているデータを「データＤ１」とする（ステップＳ１１）。ＣＭ１１０のキャッシュ制御部１４１は、まず、データＤ１が一次キャッシュ１０１に存在するかを判定する。この判定は、ボリューム１０３内のどのブロックのデータが一次キャッシュ１０１に存在するかを示す一次キャッシュ管理テーブルに基づいて行われる。
【００４４】
ここで、図示しないが、データＤ１が一次キャッシュ１０１に存在する、すなわち、一次キャッシュヒットの場合、キャッシュ制御部１４１は、データＤ１を一次キャッシュ１０１から読み出して、ホスト装置２００に送信する。これにより、読み出し要求に対する応答時間が短縮される。
【００４５】
一方、図４では、データＤ１が一次キャッシュ１０１に存在していなかった、すなわち、一次キャッシュミスであったとする（ステップＳ１２）。すると、キャッシュ制御部１４１は次に、データＤ１が二次キャッシュ１０２に存在するかを判定する。この判定は、ボリューム１０３内のどのブロックのデータが二次キャッシュ１０２に存在するかを示す二次キャッシュ管理テーブルに基づいて行われる。
【００４６】
図４では、データＤ１が二次キャッシュ１０２に存在していた、すなわち、二次キャッシュヒットであったとする（ステップＳ１３）。この場合、キャッシュ制御部１４１は、まず、二次キャッシュ１０２からデータＤ１を読み出して一次キャッシュ１０１にコピーし（ステップＳ１４）、さらに一次キャッシュ１０１からデータＤ１を読み出してホスト装置２００に送信する（ステップＳ１５）。
【００４７】
前述のように、二次キャッシュ１０２が実装されるフラッシュメモリ１３０は、ボリューム１０３を構成するＨＤＤよりアクセス性能が高い。そのため、図４のように、一次キャッシュミスの場合でも二次キャッシュヒットとなれば二次キャッシュ１０２からデータＤ１を読み出すことで、データＤ１をボリューム１０３から読み出す場合よりもホスト装置２００に対する読み出し応答時間を短縮できる。
【００４８】
なお、ステップＳ１４の実行直前において一次キャッシュ１０１の空き領域がない場合、キャッシュ制御部１４１は、一次キャッシュ１０１のデータブロックのうち最終アクセス時刻が最も早いデータブロックを、一次キャッシュ１０１から削除する。そして、キャッシュ制御部１４１は、一次キャッシュ１０１に生じた空き領域にデータＤ１をコピーする。
【００４９】
図５は、ボリュームに対して読み出しが要求された場合の制御手順の例を示す第２の図である。図５において、ホスト装置２００は、ボリューム１０３のあるブロックからの読み出しを、ＣＭ１１０に要求する。ここでは、このブロックに格納されているデータを「データＤ２」とする（ステップＳ２１）。ＣＭ１１０のキャッシュ制御部１４１は、図４の場合と同様に、データＤ２が一次キャッシュ１０１および二次キャッシュ１０２に存在するかを判定する。
【００５０】
図５では、一次キャッシュミス（ステップＳ２２）、かつ二次キャッシュミス（ステップＳ２３）であったとする。この場合、キャッシュ制御部１４１は、ボリューム１０３から（すなわち、ＤＥ１２０内の対応するＨＤＤから）データＤ２を読み出し、一次キャッシュ１０１にコピーする（ステップＳ２４）。そして、キャッシュ制御部１４１は、一次キャッシュ１０１からデータＤ２を読み出してホスト装置２００に送信する（ステップＳ２５）。
【００５１】
このとき、キャッシュ制御部１４１は、データＤ２のブロックが二次キャッシュミスしたことを所定の管理テーブル（図示せず）に記録しておく。そして、キャッシュ制御部１４１は、その後の非同期のタイミングで、管理テーブルに基づいてデータＤ２をボリューム１０３から読み出し、二次キャッシュ１０２にコピーする（ステップＳ２６）。なお、このような、二次キャッシュミスに伴うボリューム１０３から二次キャッシュ１０２へのデータブロックの転送を、二次キャッシュ１０２への「ステージング」と呼ぶ。二次キャッシュ１０２へのステージングは、ホスト装置２００からのボリューム１０３へのＩＯ要求の受信処理およびその応答処理の実行中に、バックグラウンドで実行されることになる。
【００５２】
以上のように、一次キャッシュミスかつ二次キャッシュミスの場合には、読み出しが要求されたデータＤ２は一次キャッシュ１０１に配置される。これにより、その後に同じデータＤ２の読み出しが要求された場合にも、キャッシュ制御部１４１は、データＤ２を一次キャッシュ１０１から短時間に読み出し、ホスト装置２００に送信できる。また、一次キャッシュ１０１へのデータＤ２の転送とは非同期に、二次キャッシュ１０２へのデータＤ２の転送（ステージング）が行われる。これにより、データＤ２を二次キャッシュ１０２にも転送してからホスト装置２００に応答する場合と比較して、応答時間を短縮できる。
【００５３】
図６は、二次キャッシュを用いた制御における問題点を示す図である。図４、図５で説明したアクセス制御処理では、二次キャッシュ１０２において、二次キャッシュヒットに伴う一次キャッシュ１０１への読み出し処理と、二次キャッシュ１０２へのステージングのための書き込み処理とが、同時並行的に実行される。このため、図６のように、二次キャッシュ１０２から一次キャッシュ１０１への読み出し処理と、二次キャッシュ１０２へのステージングのための書き込み処理とが多数実行されると、フラッシュメモリ１３０のＩＯ処理負荷が増大する場合がある。
【００５４】
このような読み出しと書き込みの競合によるフラッシュメモリ１３０のＩＯ処理負荷の増大は、二次キャッシュ１０２から一次キャッシュ１０１への読み出し処理性能を低下させる。その結果、二次キャッシュヒットした場合のホスト装置２００に対する読み出し応答性能が低下する。そして、状況によっては、二次キャッシュ１０２からの読み出し速度がボリューム１０３からの読み出し速度より低くなってしまい、読み出し応答性能の向上のために二次キャッシュ１０２を利用する意味がなくなってしまうという問題がある。
【００５５】
図７は、二次キャッシュのヒット率と読み出し応答時間との関係の例を示すグラフである。図７では、一次キャッシュ１０１および二次キャッシュ１０２にボリューム１０３のデータが格納されていない状態から、ホスト装置２００からボリューム１０３からの読み出しが要求された場合を示している。図７において、読み出し応答時間とは、ホスト装置２００からの読み出し要求に対する応答時間であり、ヒット率とは、二次キャッシュヒットの発生率である。
【００５６】
初期状態からしばらくの期間は、一次キャッシュ１０１と二次キャッシュ１０２のどちらでもミスヒットとなるので、読み出し応答時間はボリューム１０３からの読み出し応答時間と等価である。しかし、タイミングＴ１で、それまでにキャッシュミスとなったデータについての二次キャッシュ１０２へのステージングが開始されると、ステージングのためのボリューム１０３から二次キャッシュ１０２への書き込みが追加的に発生する。このため、ボリューム１０３からの読み出し処理負荷が過大になり、その結果、ホスト装置２００からの読み出し応答時間が増大する。
【００５７】
その後、一次キャッシュ１０１や二次キャッシュ１０２のヒット率が増加していくのに伴い、ホスト装置２００からの読み出し応答時間は改善していくが、その改善の速度は緩やかになる。そのため、タイミングＴ２までの期間では、ホスト装置２００からの読み出し応答時間は、ボリューム１０３からの読み出し応答時間より短くならない。
【００５８】
タイミングＴ２までの期間において読み出し応答時間が低い原因としては、主に次の２つがある。第１の原因は、前述したフラッシュメモリ１３０における読み出しと書き込みとの競合によるものである。すなわち、ステージングのための二次キャッシュ１０２への書き込みがほとんど減少しないため、二次キャッシュヒットに伴って二次キャッシュ１０２からデータが読み出される際の読み出し速度が低下する。この場合、二次キャッシュヒットしたにもかかわらず、二次キャッシュ１０２を用いずにボリューム１０３から直接データを読み出した方が読み出し応答時間が短くなってしまい、二次キャッシュ１０２の存在意義がなくなってしまう。
【００５９】
また、第２の原因として、ボリューム１０３において、キャッシュミスに伴う一次キャッシュ１０１への読み出しと、ステージングのための二次キャッシュ１０２への読み出しとが競合することもある。この場合、ボリューム１０３から一次キャッシュ１０１への読み出し速度が低下することにより、ホスト装置２００への応答が遅延してしまう。
【００６０】
本実施の形態のストレージ装置１００は、主として上記の第１の原因による読み出し応答性能の低下を抑制する。図５で説明したように、ボリューム１０３から二次キャッシュ１０２へのステージングは、ホスト装置２００への読み出し応答とは非同期に実行される。このため、ステージングの実行タイミングを遅延させても、ホスト装置２００への読み出し応答性能にはほとんど影響しない。そこで、ストレージ装置１００の負荷制御部１４４は、二次キャッシュヒットしたときのホスト装置２００からの読み出し応答性能が、ボリューム１０３から読み出したと仮定した場合の応答性能より確実に高くなるように、ステージングの処理負荷を調整する。
【００６１】
なお、図７では、例としてアクセス制御の開始直後における読み出し応答性能の低下について説明した。しかし、フラッシュメモリ１３０における読み出しと書き込みとの競合を原因とした読み出し応答性能の低下は、アクセス制御の開始直後にのみ発生するとは限らない。このような読み出し応答性能の低下は、それ以降の期間でも、一次キャッシュ１０１や二次キャッシュ１０２のヒット率の変化などによって発生し得る。
【００６２】
以下、ストレージ装置１００の処理について、フローチャートを用いて詳しく説明する。
まず、図８は、負荷監視部による負荷監視処理手順の例を示すフローチャートである。負荷監視部１４２は、ボリューム１０３の作成直後の期間（性能評価部１４３が動作する期間）と、ボリューム１０３のアクセス制御が開始された期間（負荷制御部１４４が動作する期間）の両方において、図８の処理を実行する。
【００６３】
［ステップＳ５１］負荷監視部１４２は、フラッシュメモリ１３０およびボリューム１０３のＩＯ処理負荷を計測し、ＲＡＭ１１２に一時的に保存する。本実施の形態では、ＩＯ処理負荷として、フラッシュメモリ１３０の読み出し応答時間、フラッシュメモリ１３０に対する書き込みスループット、ボリューム１０３の読み出し応答時間が計測されるものとする。なお、これらは、後述するフラッシュリードレスポンス、フラッシュライトスループット、ボリュームリードレスポンスにそれぞれ対応する。
【００６４】
［ステップＳ５２］負荷監視部１４２は、性能評価部１４３または負荷制御部１４４から、ＩＯ処理負荷の計測値の通知が要求されたかを判定する。負荷監視部１４２は、通知が要求された場合、ステップＳ５３の処理を実行し、通知が要求されなかった場合、ステップＳ５４の処理を実行する。
【００６５】
［ステップＳ５３］負荷監視部１４２は、通知の要求元に対して、ＩＯ処理負荷の計測値を通知する。
［ステップＳ５４］負荷監視部１４２は、ステップＳ５１で保存した計測値を破棄する。
【００６６】
［ステップＳ５５］負荷監視部１４２は、一定時間処理の実行を停止し、一定時間が経過するとステップＳ５１の処理を再実行する。これにより、ステップＳ５１〜Ｓ５４の処理が一定時間間隔で繰り返し実行される。
【００６７】
次に、図９は、性能評価部による性能評価処理手順の例を示すフローチャートである。図９の処理は、ホスト装置２００（または、図示しない管理端末など）からの要求に応じてボリューム１０３が作成されたとき、あるいは、その後に二次キャッシュ１０２が有効にされたときに、実行される。
【００６８】
［ステップＳ６１］性能評価部１４３は、評価管理テーブルを作成し、ＲＡＭ１１２に一時的に保存する。
［ステップＳ６２］性能評価部１４３は、フラッシュメモリ１３０およびボリューム１０３の性能を計測する。この処理では、ステップＳ６１で作成された評価管理テーブルに計測結果が登録される。
【００６９】
以下、ステップＳ６１，Ｓ６２の処理についてさらに詳しく説明する。
図１０は、評価管理テーブルの構成例を示す図である。図１０に示す評価管理テーブル１５１ａは、負荷制御部１４４が参照する制御テーブルを作成するために一時的に作成されるテーブル情報である。
【００７０】
評価管理テーブル１５１ａは、ボリュームビジー率、フラッシュビジー率、ブロックサイズおよび多重度の各項目を有する。
ボリュームビジー率は、ボリューム１０３でのアクセス負荷を示す指標の一例であり、一定期間内にボリューム１０３でＩＯ処理が実行されている時間の割合を示す。評価管理テーブル１５１ａにおいては、ボリュームビジー率として、１０％，２０％，・・・といった離散的な複数の数値が、あらかじめ登録される。フラッシュビジー率は、０％から１００％までの値をとり得る。なお、実際には、ボリュームビジー率は、例えば、ボリューム１０３を構成する各ＨＤＤにおけるディスクビジー率の平均値である。
【００７１】
フラッシュビジー率は、フラッシュメモリ１３０でのアクセス負荷を示す指標の一例であり、一定期間内にフラッシュメモリ１３０でＩＯ処理が実行されている時間の割合を示す。評価管理テーブル１５１ａにおいては、フラッシュビジー率として、１０％，２０％，・・・といった離散的な複数の数値が、ボリュームビジー率のそれぞれの数値に対して対応付けてあらかじめ登録される。フラッシュビジー率は、０％から１００％までの値をとり得る。
【００７２】
ブロックサイズおよび多重度は、フラッシュメモリ１３０に対する書き込み負荷を調整するための制御値の一例である。ブロックサイズは、１つの書き込みコマンドによって書き込み可能なデータサイズ（ブロック数）を示す。多重度は、応答を待たずにフラッシュメモリ１３０に対して同時に発行可能な書き込みコマンドの数を示す。
【００７３】
評価管理テーブル１５１ａにおいては、ボリュームビジー率の数値とフラッシュビジー率の数値との組み合わせごとに、０．５キロバイト，４キロバイト，・・・といったブロックサイズの離散的な複数の数値があらかじめ登録される。また、評価管理テーブル１５１ａにおいては、ボリュームビジー率の数値、フラッシュビジー率の数値、ブロックサイズの数値の組み合わせごとに、１，２，・・・といった多重度の離散的な数値があらかじめ登録される。
【００７４】
さらに、評価管理テーブル１５１ａには、フラッシュリードレスポンス、フラッシュライトスループット、ボリュームリードレスポンスおよび評価値が登録される。これらの各値は、ボリュームビジー率、フラッシュビジー率、ブロックサイズおよび多重度の各数値の組み合わせごとに対応付けられている。
【００７５】
フラッシュリードレスポンスは、フラッシュメモリ１３０の読み出し性能を示す指標の一例であり、フラッシュメモリ１３０の読み出し応答時間を示す。フラッシュライトスループットは、フラッシュメモリ１３０の書き込み性能を示す指標の一例であり、フラッシュメモリ１３０に対する書き込みスループットを示す。ボリュームリードレスポンスは、ボリューム１０３の読み出し性能を示す指標の一例であり、ボリューム１０３の読み出し応答時間を示す。
【００７６】
評価値は、計測値から推定されるフラッシュメモリ１３０の性能を示す指標であり、評価値が高いほど性能が高いと推定される。この評価値は、ボリュームビジー率とフラッシュビジー率の各数値の組み合わせに対して対応付けられたブロックサイズおよび多重度が、どれだけ適切であるかを判定するために使用される。
【００７７】
なお、図９のステップＳ６１で評価管理テーブル１５１ａが作成された段階では、フラッシュリードレスポンス、フラッシュライトスループット、ボリュームリードレスポンスおよび評価値の各項目には、値が登録されていない。そして、性能評価部１４３による次の図１１に示す処理の過程で、フラッシュリードレスポンス、フラッシュライトスループット、ボリュームリードレスポンスおよび評価値の各項目に値が登録される。
【００７８】
図１１は、フラッシュメモリおよびボリュームの性能計測処理手順の例を示すフローチャートである。この図１１の処理は、図９のステップＳ６２の処理に対応する。
［ステップＳ６２ａ］性能評価部１４３は、ステップＳ６２ｌをループ端とするループＬ１を実行する。このループＬ１では、性能評価部１４３は、評価管理テーブル１５１ａに登録されたボリュームビジー率の数値を１つずつ選択しながら、ステップＳ６２ｂ〜Ｓ６２ｋの処理を繰り返し実行する。
【００７９】
［ステップＳ６２ｂ］性能評価部１４３は、ボリューム１０３のビジー率が選択されたボリュームビジー率となるように、ボリューム１０３に読み出しコマンドを発行して、ボリューム１０３からの読み出しを実行させる。この読み出しは、二次キャッシュミスに伴うボリューム１０３から一次キャッシュ１０１への読み出しを擬似的に実現するものである。
【００８０】
具体的には、性能評価部１４３は、所定のブロックサイズ（例えば、４キロバイト）でボリューム１０３に読み出しコマンドを連続的に発行する。これとともに、性能評価部１４３は、負荷監視部１４２にボリュームビジー率の計測値を要求する。性能評価部１４３は、負荷監視部１４２から通知されたボリュームビジー率と、選択されたボリュームビジー率とが一致する方向に、読み出しコマンドの発行間隔を増減する。このような処理を繰り返すことで、ある発行間隔が設定されたとき、通知されたボリュームビジー率が選択されたボリュームビジー率と一致する。性能評価部１４３は、ループＬ１のループ端までの間、設定された発行間隔で読み出しコマンドを発行し続ける。
【００８１】
［ステップＳ６２ｃ］性能評価部１４３は、ステップＳ６２ｋをループ端とするループＬ２を実行する。このループＬ２では、性能評価部１４３は、評価管理テーブル１５１ａに登録されたフラッシュビジー率の数値を１つずつ選択しながら、ステップＳ６２ｄ〜Ｓ６２ｊの処理を繰り返し実行する。
【００８２】
［ステップＳ６２ｄ］性能評価部１４３は、フラッシュメモリ１３０のビジー率が選択されたフラッシュビジー率となるように、フラッシュメモリ１３０に読み出しコマンドを発行して、フラッシュメモリ１３０からの読み出しを実行させる。この読み出しは、二次キャッシュヒットに伴う二次キャッシュ１０２から一次キャッシュ１０１への読み出しを擬似的に実現するものである。
【００８３】
具体的には、性能評価部１４３は、所定のブロックサイズ（例えば、４キロバイト）でフラッシュメモリ１３０に読み出しコマンドを連続的に発行する。これとともに、性能評価部１４３は、負荷監視部１４２にフラッシュビジー率の計測値を要求する。性能評価部１４３は、負荷監視部１４２から通知されたフラッシュビジー率と、選択されたフラッシュビジー率とが一致する方向に、読み出しコマンドの発行間隔を増減する。このような処理を繰り返すことで、ある発行間隔が設定されたとき、通知されたフラッシュビジー率が選択されたフラッシュビジー率と一致する。性能評価部１４３は、ループＬ２のループ端までの間、設定された発行間隔で読み出しコマンドを発行し続ける。
【００８４】
［ステップＳ６２ｅ］性能評価部１４３は、ステップＳ６２ｊをループ端とするループＬ３を実行する。このループＬ３では、性能評価部１４３は、評価管理テーブル１５１ａに登録されたブロックサイズの数値を１つずつ選択しながら、ステップＳ６２ｆ〜Ｓ６２ｉの処理を繰り返し実行する。
【００８５】
［ステップＳ６２ｆ］性能評価部１４３は、ステップＳ６２ｉをループ端とするループＬ４を実行する。このループＬ４では、性能評価部１４３は、評価管理テーブル１５１ａに登録された多重度の数値を１つずつ選択しながら、ステップＳ６２ｇ，Ｓ６２ｈの処理を繰り返し実行する。
【００８６】
［ステップＳ６２ｇ］性能評価部１４３は、選択されたブロックサイズおよび選択された多重度による書き込みコマンドをフラッシュメモリ１３０へ追加的に発行して、フラッシュメモリ１３０への書き込みをさらに実行させる。この書き込みは、ボリューム１０３から二次キャッシュ１０２へのステージングを擬似的に実現するものである。
【００８７】
なお、評価管理テーブル１５１ａに登録されるブロックサイズおよび多重度の値として、０を登録することも可能である。ステップＳ６２ｇでは、ブロックサイズまたは多重度の少なくとも一方の値として０が選択されている場合、性能評価部１４３は、書き込みコマンドの発行を停止する。
【００８８】
［ステップＳ６２ｈ］性能評価部１４３は、現在のフラッシュリードレスポンス、フラッシュライトスループット、ボリュームリードレスポンスを計測する。性能評価部１４３は、評価管理テーブル１５１ａに対して、選択されたボリュームビジー率、フラッシュビジー率、ブロックサイズおよび多重度に対応付けて、各計測値を登録する。
【００８９】
このステップＳ６２ｈの時点では、フラッシュメモリ１３０に対して、選択されたフラッシュビジー率に相当する読み出し負荷がかけられている。この読み出し負荷は、二次キャッシュヒットに伴う二次キャッシュ１０２からの読み出し負荷をシミュレートしたものである。また、ボリューム１０３に対して、選択されたボリュームビジー率に相当する読み出し負荷がかけられている。この読み出し負荷は、二次キャッシュミスに伴うボリューム１０３からの読み出し負荷をシミュレートしたものである。それに加えて、制御値として対応するブロックサイズおよび多重度を用いて、フラッシュメモリ１３０に対する書き込みが行われている。この書き込みは、ボリューム１０３から二次キャッシュ１０２へのステージングをシミュレートしたものである。
【００９０】
そして、上記状態でのフラッシュメモリ１３０の読み出し性能、フラッシュメモリ１３０の書き込み性能、ボリューム１０３の読み出し性能をそれぞれ示す計測値が、評価管理テーブル１５１ａに登録される。これらの値のうち、フラッシュメモリ１３０の読み出し性能は、二次キャッシュヒット発生時におけるホスト装置２００からの読み出し応答性能を評価する指標となる。また、フラッシュメモリ１３０の読み出し性能および書き込み性能は、読み出しと書き込みとが競合した状態における二次キャッシュ１０２の性能を評価する指標となる。
【００９１】
［ステップＳ６２ｉ］性能評価部１４３は、ループＬ４において、評価管理テーブル１５１ａに登録された多重度の数値がすべて選択された場合に、ステップＳ６２ｊの処理を実行する。
【００９２】
［ステップＳ６２ｊ］性能評価部１４３は、ループＬ３において、評価管理テーブル１５１ａに登録されたブロックサイズの数値がすべて選択された場合に、ステップＳ６２ｋの処理を実行する。
【００９３】
［ステップＳ６２ｋ］性能評価部１４３は、ループＬ２において、評価管理テーブル１５１ａに登録されたフラッシュビジー率の数値がすべて選択された場合に、ステップＳ６２ｌの処理を実行する。
【００９４】
［ステップＳ６２ｌ］性能評価部１４３は、ループＬ１において、評価管理テーブル１５１ａに登録されたボリュームビジー率の数値がすべて選択された場合に、図９のステップＳ６３の処理を実行する。
【００９５】
以上の図１１の処理が終了すると、評価管理テーブル１５１ａの全体においてフラッシュリードレスポンス、フラッシュライトスループットおよびボリュームリードレスポンスの各計測値が登録された状態となる。
【００９６】
以下、図９に戻って説明する。
［ステップＳ６３］性能評価部１４３は、評価管理テーブル１５１ａから、フラッシュリードレスポンスがボリュームリードレスポンス以上となるレコードを削除する。フラッシュリードレスポンスがボリュームリードレスポンス以上であるということは、ホスト装置２００からの読み出し応答性能が、二次キャッシュ１０２を用いずにボリューム１０３から直接読み出した場合の読み出し応答性能より低くなることを示す。ステップＳ６４の処理により、このような事態を発生させるようなステージングの制御値（ブロックサイズおよび多重度）を評価管理テーブル１５１ａから削除し、ステージングの際にこのような制御値が設定されないようにすることができる。
【００９７】
［ステップＳ６４］性能評価部１４３は、ボリュームビジー率、フラッシュビジー率、ブロックサイズおよび多重度の各組み合わせについて、評価値を算出し、評価管理テーブル１５１ａに登録する。本実施の形態では、評価値は、フラッシュリードレスポンスの逆数と、フラッシュライトスループットとを乗算することで算出される。
【００９８】
［ステップＳ６５］性能評価部１４３は、評価管理テーブル１５１ａにおいて、ボリュームビジー率とフラッシュビジー率との各組み合わせに対応するレコードの中から、評価値が最大となるブロックサイズおよび多重度のレコードだけを残し、その他のレコードを削除する。これにより、二次キャッシュ１０２およびボリューム１０３に該当するビジー率に相当する読み出し負荷がかかった状態で、ホスト装置２００からの読み出し応答性能が最大となるようなステージングの制御値（ブロックサイズおよび多重度）が、評価管理テーブル１５１ａに残る。
【００９９】
［ステップＳ６６］性能評価部１４３は、ステップＳ６５の処理が完了した後の評価管理テーブル１５１ａを、制御テーブル１５１として記憶部１５０に保存する。
図１２は、制御テーブルの構成例を示す図である。図１２に示すように、制御テーブル１５１は、ボリュームビジー率およびフラッシュビジー率の各組み合わせに対して、１組のブロックサイズおよび多重度だけが対応付けられた状態となっている。制御テーブル１５１には、二次キャッシュ１０２およびボリューム１０３に該当するビジー率に相当する読み出し負荷がかかった状態で、ホスト装置２００からの読み出し応答性能が最大となるようなブロックサイズおよび多重度が登録されている。
【０１００】
次に、図１３は、負荷制御部による負荷制御処理手順の例を示すフローチャートである。図１３の処理は、キャッシュ制御部１４１によるボリューム１０３に対するアクセス制御とともに開始される。
【０１０１】
［ステップＳ７１］負荷制御部１４４は、負荷監視部１４２にＩＯ処理負荷の計測値、具体的にはボリュームビジー率およびフラッシュビジー率の各計測値を要求し、これらの計測値を取得する。
【０１０２】
［ステップＳ７２］負荷制御部１４４は、制御テーブル１５１から、取得されたボリュームビジー率およびフラッシュビジー率の各計測値に対応付けられたブロックサイズおよび多重度を取得する。
【０１０３】
［ステップＳ７３］負荷制御部１４４は、取得したブロックサイズおよび多重度をキャッシュ制御部１４１に設定する。キャッシュ制御部１４１は、設定されたブロックサイズおよび多重度を用いて、ボリューム１０３から二次キャッシュ１０２へのステージングを実行する。
【０１０４】
これにより、ボリューム１０３および二次キャッシュ１０２の現在の負荷状況において、二次キャッシュヒットが発生した場合のホスト装置２００の読み出し応答性能が最大となるような、ステージングのための最適な制御値が設定される。また、この制御値により、ホスト装置２００の読み出し応答性能が、二次キャッシュ１０２を用いない場合の読み出し応答性能以下に低下する事態を、確実に防止できる。
【０１０５】
なお、ブロックサイズまたは多重度の少なくとも一方として０を取得した場合、負荷制御部１４４は、キャッシュ制御部１４１にステージングを一時的に停止させる。
［ステップＳ７４］負荷制御部１４４は、一定時間処理の実行を停止し、一定時間が経過するとステップＳ７１の処理を再実行する。これにより、ステップＳ７１〜Ｓ７４の処理が一定時間間隔で繰り返し実行される。
【０１０６】
以上説明したストレージ装置１００によれば、二次キャッシュ１０２における読み出しと書き込みとの競合を原因とするホスト装置２００の読み出し応答性能の低下を、抑制することができる。特に、二次キャッシュ１０２を利用する意味がなくなるような極端な性能低下が発生することを、確実に防止できる。
【０１０７】
また、例えば、ホスト装置２００からの読み出し要求の量が多い場合に、二次キャッシュ１０２へのステージング負荷を抑え、読み出し応答性能の沈み込みを回避できる。さらに、ホスト装置２００の読み出し応答性能が大きく低下しない範囲で、アクセス頻度の高いデータを二次キャッシュ１０２に可能な限り早期にステージングできる。これにより、キャッシュヒット率が向上し、ホスト装置２００の読み出し応答性能を改善できる。
【０１０８】
なお、性能評価部１４３は、図９に示した性能評価処理を、例えば定期的に、繰り返し実行して、制御テーブル１５１を更新してもよい。フラッシュメモリ１３０は、使用し続けるうちに性能が低下するという特性を有する。そのため、制御テーブル１５１を更新することで、フラッシュメモリ１３０の特定変化に応じた最適な制御値を用いて、ステージング負荷を調整できるようになる。
【０１０９】
また、上記の各実施の形態に示した装置（例えば、ストレージ制御装置１０およびＣＭ１１０）の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１１０】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１１１】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムにしたがった処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムにしたがった処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムにしたがった処理を実行することもできる。
【符号の説明】
【０１１２】
１  一次キャッシュ
２  二次キャッシュ
１０  ストレージ制御装置
１１  記憶部
１１ａ  制御情報
１２  アクセス制御部
１３  負荷調整部
２０  記憶装置
３０  ホスト装置
【図１】
2018045282.tif 000003
【図２】
2018045282.tif 000004
【図３】
2018045282.tif 000005
【図４】
2018045282.tif 000006
【図５】
2018045282.tif 000007
【図６】
2018045282.tif 000008
【図７】
2018045282.tif 000009
【図８】
2018045282.tif 000010
【図９】
2018045282.tif 000011
【図１０】
2018045282.tif 000012
【図１１】
2018045282.tif 000013
【図１２】
2018045282.tif 000014
【図１３】
2018045282.tif 000015