(57)【要約】【課題】複数のＳＳＤで構成されたストレージ装置において、ＳＳＤの内部処理による性能の低下を抑制する。【解決手段】ストレージ装置１は、冗長性を備えるようにデータを記憶する複数のＳＳＤ４、５と、各ＳＳＤに対するデータの読み出し処理および書き込み処理を制御するＣＰＵ２６とを備える。ＣＰＵ２６は、データの書き込み処理中に発生する内部処理について、いずれかのＳＳＤが所定の条件を満たすタイミングで、各ＳＳＤの内部処理を実行する。【選択図】図１
2014059850.tif 000002
【特許請求の範囲】
【請求項１】
冗長性を備えるようにデータを記憶する複数のソリッドステートディスク(ＳＳＤ)と、
各ＳＳＤに対するデータの読み出し処理および書き込み処理を制御する制御部とを備え、
前記制御部は、
データの書き込み処理中に発生する内部処理について、いずれかのＳＳＤが所定の条件を満たすタイミングで、各ＳＳＤの内部処理を実行する
ことを特徴とするストレージ装置。
【請求項２】
データを記憶するキャッシュメモリをさらに備え、
前記制御部は、ＳＳＤへの書き込みが完了していないデータであるダーティデータの前記キャッシュメモリにおける割合が所定の割合以下であるタイミングで、前記ＳＳＤに対して内部処理を実行する
ことを特徴とする請求項１に記載のストレージ装置。
【請求項３】
前記制御部は、いずれかのＳＳＤにおけるデータの書き込み量が内部処理の実行が開始されると予測されるデータの書き込み量以上となったタイミングで、前記複数のＳＳＤに対して内部処理を実行する
ことを特徴とする請求項１に記載のストレージ装置。
【請求項４】
前記制御部は、ＳＳＤへ書き込みコマンドを発行してから応答があるまでの待ち時間について、いずれかのＳＳＤで、内部処理が実行されていないときの待ち時間を超えたタイミングで、当該待ち時間を超えたＳＳＤと異なるＳＳＤに対して内部処理を実行する
ことを特徴とする請求項１に記載のストレージ装置。
【請求項５】
ストレージ装置が、
冗長性を備えるようにデータを記憶する複数のソリッドステートディスク(ＳＳＤ)に対するデータの読み出し処理および書き込み処理を制御し、
前記制御する処理は、データの書き込み処理中に発生する内部処理について、いずれかのＳＳＤが所定の条件を満たすタイミングで、各ＳＳＤの内部処理を実行する
処理を実行することを特徴とする内部処理制御方法。
【請求項６】
コンピュータに、
冗長性を備えるようにデータを記憶する複数のソリッドステートディスク(ＳＳＤ)に対するデータの読み出し処理および書き込み処理を制御し、
前記制御する処理は、データの書き込み処理中に発生する内部処理について、いずれかのＳＳＤが所定の条件を満たすタイミングで、各ＳＳＤの内部処理を実行する
処理を実行させることを特徴とする内部処理制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置などに関する。
【背景技術】
【０００２】
近年、ハードディスクドライブ（ＨＤＤ：Hard  Disk  Drive）の代わりに複数のＳＳＤ（Solid  State  Drive）を使用した高速のストレージ装置が提案されている。ＳＳＤでは、ＳＳＤの消去単位であるブロック内の不要なデータを、一定のタイミングで消去すること（以降、「ガベージコレクション」という）が行われている。
【０００３】
例えば、ＳＳＤを使用したシステムが、アイドルの間にガベージコレクションを行うように制御するという技術がある（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−３２２５６号公報
【特許文献２】特開２００４−１７８４１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、複数のＳＳＤで構成されたストレージ装置では、ＳＳＤのガベージコレクション等の内部処理により性能が低下する場合があるという問題がある。例えば、複数のＳＳＤでＲＡＩＤ（Redundant  Array  of  Inexpensive  Disks）構成のうちＲＡＩＤ１で構成されたストレージ装置の性能の期待値は、ＳＳＤ単体で構成されたストレージ装置の性能と同等であるところ、実際では、ＳＳＤ単体で構成されたストレージ装置の性能と比べて低下する場合がある。
【０００６】
一例として、ミラーリングされた複数のＳＳＤで構成されたＲＡＩＤ１（Redundant  Arrays  of  Inexpensive  Disks  １）の装置の性能の期待値は、ＳＳＤ単体で構成された装置の性能と比べて、約７０％〜８０％に低下する場合がある。これは、ＲＡＩＤ１で構成された複数のＳＳＤでは、異なるタイミングで応答遅延することが原因である。この応答遅延は、異なるタイミングにより行われるガベージコレクション等の内部処理により発生する。つまり、複数のＳＳＤがＲＡＩＤ１で構成されたストレージ装置では、一方のＳＳＤが内部処理を行うと、他方のＳＳＤが内部処理の終了を待つこととなり、一方の内部処理の終了後応答できる。そして、一方のＳＳＤと異なるタイミングで他方のＳＳＤが内部処理を行うと、一方のＳＳＤが内部処理の終了を待つこととなり、他方の内部処理の終了後応答できる。結局、ＳＳＤ単体の場合と比べて応答が遅延してしまい、性能が低下する結果となる。
【０００７】
なお、同一の種類および同一の容量であるディスクで構成されたＨＤＤの場合、ＨＤＤの内部処理により性能が低下してしまうという問題は発生しない。したがって、この問題はＳＳＤ固有の問題である。
【０００８】
また、上記課題は、ガベージコレクションに限らず、ＳＳＤ固有の内部処理の１つである、データのイメージを保持するスナップショットであっても、同様に生じる課題である。さらに、上記課題は、複数のＳＳＤがＲＡＩＤ１構成に限らず、ＲＡＩＤ５等のＲＡＩＤ構成であっても、同様に生じる課題である。
【０００９】
１つの側面では、本発明は、複数のＳＳＤで構成されたストレージ装置において、ＳＳＤの内部処理による性能の低下を抑制することを目的とする。
【課題を解決するための手段】
【００１０】
本願の開示するストレージ装置は、１つの態様において、冗長性を備えるようにデータを記憶する複数のソリッドステートディスク(ＳＳＤ)と、各ＳＳＤに対するデータの読み出し処理および書き込み処理を制御する制御部とを備える。そして、制御部は、データの書き込み処理中に発生する内部処理について、いずれかのＳＳＤが所定の条件を満たすタイミングで、各ＳＳＤの内部処理を実行する。
【発明の効果】
【００１１】
本願の開示するストレージ装置の１つの態様によれば、複数のＳＳＤで構成されたストレージ装置において、ＳＳＤの内部処理による性能の低下を抑制できる。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施例１に係るストレージ装置のハードウェア構成を示す図である。
【図２Ａ】図２Ａは、ライトバック方式の書き込み動作を説明する図（１）である。
【図２Ｂ】図２Ｂは、ライトバック方式の書き込み動作を説明する図（２）である。
【図３】図３は、実施例１に係る第１の管理テーブルのデータ構造の一例を示す図である。
【図４Ａ】図４Ａは、実施例１に係る内部処理実行処理のフローチャートを示す図（１）である。
【図４Ｂ】図４Ｂは、実施例１に係る内部処理実行処理のフローチャートを示す図（２）である。
【図５】図５は、実施例２に係るストレージ装置のハードウェア構成を示す図である。
【図６】図６は、実施例２に係る第２の管理テーブルのデータ構造の一例を示す図である。
【図７Ａ】図７Ａは、実施例２に係る内部処理実行処理のフローチャートを示す図である。
【図７Ｂ】図７Ｂは、実施例２に係る内部処理開始書込量算出処理のフローチャートを示す図である。
【図７Ｃ】図７Ｃは、実施例２に係る第２の実行処理のフローチャートを示す図である。
【図８】図８は、実施例３に係るストレージ装置のハードウェア構成を示す図である。
【図９】図９は、実施例３に係る第３の管理テーブルのデータ構造の一例を示す図である。
【図１０Ａ】図１０Ａは、実施例３に係る待ち時間閾値算出処理のフローチャートを示す図である。
【図１０Ｂ】図１０Ｂは、実施例３に係る第３の実行処理のフローチャートを示す図である。
【図１１】図１１は、実施例３に係る内部処理実行処理の全体のフローチャートを示す図である。
【図１２】図１２は、ＳＳＤ単体での応答遅延を説明する図である。
【図１３】図１３は、ＳＳＤでＲＡＩＤ１（１＋１）を構成した場合のＳＳＤの応答遅延を説明する図である。
【図１４】図１４は、ＳＳＤでＲＡＩＤ１（１＋１）を構成した場合の従来におけるＳＳＤの応答遅延を説明する図である。
【図１５】図１５は、ＳＳＤでＲＡＩＤ５（３＋１）を構成した場合の従来におけるＳＳＤの応答遅延を説明する図である。
【発明を実施するための形態】
【００１３】
以下に、本願の開示するストレージ装置、内部処理制御方法および内部処理制御プログラムの実施例を図面に基づいて詳細に説明する。なお、本実施例によりこの発明が限定されるものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。以下では、ストレージ装置に本発明を適用した場合について説明する。
【実施例１】
【００１４】
［実施例１に係るストレージ装置の構成］
図１は、実施例１に係るストレージ装置のハードウェア構成を示す図である。図１に示すように、ストレージ装置１は、複数のＣＭ（Controller  Module）２、３と複数のソリッドステートディスク(ＳＳＤ)４、５とを有する。ＣＭ２、３は、それぞれＳＳＤ４、５と接続し、冗長性を備えるようにデータを記憶する。ここでは、ＳＳＤ４、５は、ミラーリング構成であることを示すＲＡＩＤ（Redundant  Array  of  Inexpensive  Disks）１（１＋１）であるとする。なお、複数のＳＳＤは、ＲＡＩＤ１（１＋１）であるとしたが、これに限定されず、ＲＡＩＤ５（３＋１）であっても良く、他のＲＡＩＤ構成であっても良い。
【００１５】
ＣＭ２は、ＣＡ（Cannel  Adapter）２１と、ＰＣＩスイッチ２２と、ＩＯＣ（IO  Controller）２３と、ＥＸＰ（Expander）２４と、ＲＡＭ（Random  Access  Memory）２５と、ＣＰＵ（Central  Processing  Unit）２６とを有する。ＣＭ２は、サーバなどのホストコンピュータを示すホスト９と接続する。以下では、ＣＭ２が、ホスト９から転送される書き込みデータを受け取って、書き込み処理中に発生する内部処理を制御することについて説明する。なお、ＣＭ３は、ＣＭ２と同様の構成であるため、その説明を省略する。
【００１６】
ここで、内部処理とは、ＳＳＤ固有の処理であって、例えばガベージコレクションやスナップショットを指す。ガベージコレクションとは、ＳＳＤ内のデータの消去単位であるブロック内の不要なデータを、一定のタイミングで消去する処理である。スナップショットとは、データのイメージを、一定のタイミングで保持する処理である。内部処理は、必ずしも一定の周期で発生するわけではないが、基本的な傾向として一定の書き込みコマンド（以下、「ＷｔＣＭＤ」と記載する場合がある）を実行した後で発生したり、一定量の書き込みが連続した後で発生したりする。また、１回の内部処理の処理時間は必ずしも一定ではない。例えば、内部処理は、約８０個の書き込みコマンドを実行した後で発生し、２０ｍｓ（ミリ秒）の処理時間となったり、３０ｍｓの処理時間となったりする。
【００１７】
ＣＡ２１は、ホスト９とのインタフェースである。例えば、ＣＡ２１は、ＦＣ（Fibre  Channel）またはｉＳＣＳＩ（Internet  SCSI）などのインタフェースを用いてホスト９と接続する。
【００１８】
ＰＣＩスイッチ２２は、ＰＣＩｅ仕様の入出力インタフェースを示すスイッチである。ここでは、ＰＣＩスイッチ２２は、ＰＣＩｅインタフェースを用いてＣＡ２１、ＣＰＵ２６およびＩＯＣ２３と接続する。また、ＰＣＩスイッチ２２は、ＰＣＩｅインタフェースを用いてＣＭ３のＰＣＩスイッチ３２と接続する。
【００１９】
ＩＯＣ２３は、ホスト９とＳＳＤ４、５との間で行われるデータの入出力を制御する。例えば、ＩＯＣ２３は、ＰＣＩｅインタフェースを用いて書き込みデータを受け取り、ＳＡＳインタフェースを用いてＥＸＰ２４に転送する。すなわち、ＩＯＣ２３は、ＰＣＩｅインタフェースとＳＡＳインタフェースのブリッジの役割を担う。
【００２０】
ＥＸＰ２４は、ホスト９とＳＳＤ４、５との間で行われるデータの入出力を中継する。
【００２１】
ＲＡＭ２５は、キャッシュ領域２５１として用いられる。キャッシュ領域２５１は、一時的にデータの内容を保持する領域である。ここでは、キャッシュ領域２５１は、ＳＳＤ４、５への書き込み処理の際、ＳＳＤ４、５へデータが書き込まれる前に一時的にデータの内容を保持する際に用いられる。すなわち、キャッシュ領域２５１が空いている場合、書き込みデータはキャッシュ領域２５１に一時的に書き込まれる。そして、キャッシュ領域２５１が空いていない場合、書き込みデータはキャッシュ領域２５１内に保持されたデータがＳＳＤ４、５に書き込まれた後、キャッシュ領域２５１に一時的に書き込まれる。このようなキャッシュ領域２５１を利用した書き込み処理方式は、「ライトバック方式」という。ライトバック方式の動作については、後述する。
【００２２】
また、ＲＡＭ２５は、ダーティデータ割合記憶テーブル２５２および第１の管理テーブル２５３を記憶する。ダーティデータ割合記憶テーブル２５２は、キャッシュ領域２５１に保持されたデータのうちＳＳＤ４、５への書き込みが完了していないデータ（以降、「ダーティデータ」という）の割合を記憶する。第１の管理テーブル２５３は、内部処理を管理するために用いられる。なお、第１の管理テーブル２５３の詳細の説明は、後述する。
【００２３】
ＣＰＵ２６は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。例えば、ＣＰＵ２６は、各ＳＳＤに対するデータの読み出し処理および書き込み処理を制御する。一例として、ＣＰＵ２６は、ライトバック方式を利用した書き込み処理を実行する。ここで、ストレージ装置１におけるライトバック方式の書き込み動作を、図２Ａおよび図２Ｂを用いて説明する。図２Ａは、キャッシュ領域２５１に空きがある場合のライトバック方式の書き込み動作を説明する図である。図２Ｂは、キャッシュ領域２５１に空きがない場合のライトバック方式の書き込み動作を説明する図である。
【００２４】
図２Ａに示すように、ＣＭ２では、ＣＡ２１がホスト９からの書き込みコマンドを受信する。図２Ａでは、キャッシュ領域２５１に空きがあるので、ＣＰＵ２６が、書き込みコマンドを受け取り、書き込みデータをＲＡＭ２５内のキャッシュ領域２５１に転送する（ステップＳ１０１）。
【００２５】
続いて、ＣＰＵ２６は、ＰＣＩスイッチ２２を介して、ＣＭ２とミラーリング構成であるＣＭ３のキャッシュ領域３５１に、書き込みデータを転送する（ステップＳ１０２）。これにより、ストレージ装置１は、書き込みデータを二重化することができる。そして、ＣＰＵ２６は、書き込みコマンドに対する書き込み完了をホスト９に通知する（ステップＳ１０３）。
【００２６】
次に、図２Ｂに示すように、ＣＭ２では、ホスト９からの書き込みコマンドをＣＡ２１が受信する。図２Ｂでは、キャッシュ領域２５１に空きがないので、ＣＡ２１が書き込みコマンドをキューに保持する（ステップＳ２０１）。なお、ＣＡ２１は、キューが満杯である場合、後続する書き込みコマンドの受け付けを一旦停止する。
【００２７】
続いて、キャッシュ領域２５１を解放するために、ＣＰＵ２６は、キャッシュ領域２５１内のデータを、ＳＳＤ４、５に書き込む（ステップＳ２０２−１、ステップＳ２０２−２）。そして、ＣＰＵ２６は、ＳＳＤ４、５共に書き込みが完了した後、キャッシュ領域２５１を解放する。
【００２８】
そして、ＣＰＵ２６は、キューに保持された書き込みコマンドを受け取り、書き込みデータを解放したキャッシュ領域２５１に転送する（ステップＳ２０３）。続いて、ＣＰＵ２６は、ＰＣＩスイッチ２２を介して、ＣＭ２とミラーリング構成であるＣＭ３のキャッシュ領域３５１に、書き込みデータを転送する（ステップＳ２０４）。そして、ＣＰＵ２６は、書き込みコマンドに対する書き込み完了をホスト９に通知する（ステップＳ２０５）。
【００２９】
図１に戻って、ＣＰＵ２６は、ダーティデータ割合監視部２６１および第１の実行部２６２を有する。
【００３０】
ダーティデータ割合監視部２６１は、キャッシュ領域２５１内のダーティデータの割合を監視する。例えば、ダーティデータ割合監視部２６１は、予め定められた一定時間毎に、ダーティデータ割合記憶テーブル２５２に記憶されたダーティデータの割合を参照することで、キャッシュ領域２５１内のダーティデータの割合を監視する。なお、ダーティデータ割合記憶テーブル２５２に記憶されるダーティデータの割合は、例えば、ホスト９から書き込みコマンドが発行される都度、ＣＰＵ２６によって更新される。
【００３１】
第１の実行部２６２は、ダーティデータのキャッシュ領域２５１における割合が閾値以下であるタイミングで、複数のＳＳＤ４、５に対して内部処理を実行する。すなわち、第１の実行部２６２は、ダーティデータの割合が閾値以下であれば、ホスト９から書き込みコマンドが発生してもＳＳＤ４、５への書き込み（ライトバック）がされるまでに時間的な猶予があると判断し、この猶予時間を利用して内部処理を実行する。
【００３２】
例えば、第１の実行部２６２は、ダーティデータ割合記憶テーブル２５２を参照して、ダーティデータの割合が閾値以下であるか否かを判定する。そして、第１の実行部２６２は、ダーティデータの割合が閾値以下である場合に、ホスト９から書き込みコマンドが発行されたＳＳＤに対して内部処理を実行する。ＳＳＤに対して書き込みコマンドが発行されたか否かは、例えば第１の管理テーブル２５３によって管理される。
【００３３】
ここで、第１の管理テーブル２５３のデータ構造について、図３を参照して説明する。図３は、実施例１に係る第１の管理テーブルのデータ構造の一例を示す図である。図３に示すように、第１の管理テーブル２５３は、ＳＳＤ名２５３ａと内部処理フラグ２５３ｂとを対応付けて記憶する。ＳＳＤ名２５３ａは、ＳＳＤの名称である。内部処理フラグ２５３ｂは、書き込みコマンドが発行されたか否かを判別するフラグである。例えば、書き込みコマンドが発行されていない場合、「０」が設定される。書き込みコマンドが発行されている場合、「１」が設定される。
【００３４】
一例として、ＳＳＤ名が「ＳＳＤ１」である場合、内部処理フラグ２５３ｂとして「１」と記憶している。ＳＳＤ名が「ＳＳＤ２」である場合、内部処理フラグ２５３ｂとして「１」と記憶している。ＳＳＤ名が「ＳＳＤ３」である場合、内部処理フラグ２５３ｂとして「０」と記憶している。
【００３５】
図１に戻って、第１の実行部２６２は、書き込みコマンドが発行されたＳＳＤ４、５について、書き込みコマンドが発行されたことを示す値（例えば「１」）を、第１の管理テーブル２５３の内部処理フラグ２５３ｂに設定する。また、第１の実行部２６２は、内部処理が実行されたＳＳＤ４、５について、第１の管理テーブル２５３の内部処理フラグ２５３ｂをクリア（例えば「０」）する。
【００３６】
［内部処理実行処理の手順］
次に、実施例１に係る内部処理実行処理の手順について、図４Ａおよび図４Ｂを参照して説明する。図４Ａおよび図４Ｂは、実施例１に係る内部処理実行処理のフローチャートを示す図である。
【００３７】
図４Ａに示すように、第１の実行部２６２は、ＲＡＩＤ構成のＳＳＤに書き込みコマンドが発行されたか否かを判定する（ステップＳ１１）。ＳＳＤに書き込みコマンドが発行されなかったと判定した場合（ステップＳ１１；Ｎｏ）、第１の実行部２６２は、ＳＳＤに書き込みコマンドが発行されるまで、判定処理を繰り返す。
【００３８】
一方、ＳＳＤに書き込みコマンドが発行されたと判定した場合（ステップＳ１１；Ｙｅｓ）、第１の実行部２６２は、書き込みコマンドが発行されたＳＳＤの内部処理フラグ２５３ｂを「１」に設定する（ステップＳ１２）。そして、第１の実行部２６２は、次の書き込みコマンドの発行を待つべく、ステップＳ１１に移行する。
【００３９】
図４Ｂに示すように、ダーティデータ割合監視部２６１は、一定時間待ったか否かを判定する（ステップＳ２１）。一定時間待っていないと判定した場合（ステップＳ２１；Ｎｏ）、ダーティデータ割合監視部２６１は、一定時間になるまで、判定処理を繰り返す。
【００４０】
一定時間待ったと判定した場合（ステップＳ２１；Ｙｅｓ）、ダーティデータ割合監視部２６１は、キャッシュ領域２５１上のダーティデータの割合を検知する（ステップＳ２２）。そして、第１の実行部２６２は、ダーティデータ割合監視部２６１により検知されたダーティデータの割合が閾値以上であるか否かを判定する（ステップＳ２３）。
【００４１】
ダーティデータの割合が閾値以上であると判定した場合（ステップＳ２３；Ｙｅｓ）、ダーティデータ割合監視部２６１は、次の一定時間を待つべく、ステップＳ２１に移行する。一方、ダーティデータの割合が閾値以上でないと判定した場合（ステップＳ２３；Ｎｏ）、第１の実行部２６２は、第１の管理テーブル２５３の内部処理フラグ２５３ｂが「１」のＳＳＤはあるか否かを判定する（ステップＳ２４）。
【００４２】
内部処理フラグ２５３ｂが「１」のＳＳＤはないと判定した場合（ステップＳ２４；Ｎｏ）、第１の実行部２６２は、次の一定時間を待つべく、ステップＳ２１に移行する。一方、内部処理フラグ２５３ｂが「１」のＳＳＤはあると判定した場合（ステップＳ２４；Ｙｅｓ）、第１の実行部２６２は、ＳＳＤの内部処理フラグ２５３ｂが「１」であったＳＳＤに対して内部処理を実行すべく、内部処理実行命令を発行する（ステップＳ２５）。
【００４３】
そして、第１の実行部２６２は、内部処理実行命令を発行したＳＳＤの内部処理フラグ２５３ｂを「０」に設定する（ステップＳ２６）。そして、第１の実行部２６２は、次の一定時間を待つべく、ステップＳ２１に移行する。
【００４４】
［実施例１の効果］
上記実施例１によれば、第１の実行部２６２は、データの書き込み処理中に発生する内部処理について、以下のタイミングで、ＲＡＩＤ構成の複数のＳＳＤ４、５の内部処理を実行する。すなわち、第１の実行部２６２は、ダーティデータのキャッシュ領域２５１における割合が閾値以下であるタイミングで、複数のＳＳＤ４、５に対して内部処理を実行する。かかる構成によれば、第１の実行部２６２は、データの書き込みコマンドが発生してもダーティデータの割合が閾値以下であれば、ＳＳＤ４、５へ書き込み（ライトバック）がされるまでに猶予があると判断できる。このため、第１の実行部２６２は、ライトバックがされない猶予時間を利用して内部処理を実行することで、内部処理による性能低下を抑制できる。
【００４５】
なお、実施例１では、ダーティデータ割合監視部２６１が、キャッシュ領域２５１内のダーティデータの割合を監視する。そして、第１の実行部２６２が、ダーティデータのキャッシュ領域２５１における割合が閾値以下であるタイミングで、複数のＳＳＤ４、５に対して内部処理を実行すると説明した。しかしながら、ダーティデータ割合監視部２６１は、キャッシュ領域２５１内のダーティデータの割合とキャッシュ領域３５１内のダーティデータの割合を監視するようにしても良い。かかる場合、第１の実行部２６２は、ダーティデータのキャッシュ領域２５１における割合が閾値以下であるタイミングで、ＳＳＤ４に対して内部処理を実行する。そして、第１の実行部２６２は、ダーティデータのキャッシュ領域３５１における割合が閾値以下であるタイミングで、ＳＳＤ５に対して内部処理を実行するようにする。これにより、仮にＳＳＤ５、６がＲＡＩＤ構成でない場合であっても、第１の実行部２６２は、それぞれのＳＳＤに猶予があるタイミングで内部処理を実行することができる。
【実施例２】
【００４６】
ところで、実施例１に係るストレージ装置１では、データの書き込み処理中に発生する内部処理について、ＳＳＤ４、５への書き込み（ライトバック）がされるまでの猶予時間を利用して、内部処理を実行する場合を説明した。しかしながら、ストレージ装置１では、これに限定されず、ＳＳＤ４、５の内部処理のタイミングが一定量の書き込みが連続した後に発生するという傾向を利用して、内部処理を実行するようにしても良い。
【００４７】
そこで、実施例２では、ＳＳＤ４、５の内部処理のタイミングが一定量の書き込みが連続した後に発生するという傾向を利用して、内部処理を実行するストレージ装置１Ａについて説明する。
【００４８】
［実施例２に係るストレージ装置の構成］
図５は、実施例２に係るストレージ装置のハードウェア構成を示す図である。なお、図１に示すストレージ装置１と同一の構成については同一符号を示すことで、その重複する構成および動作の説明については省略する。実施例１と実施例２とが異なるところは、ＣＰＵ２６に内部処理開始書込量算出部２６３と第２の実行部２６４を追加した点にある。また、実施例１と実施例２とが異なるところは、ＲＡＭ２５に書込量記憶テーブル２５４と第２の管理テーブル２５５を追加した点にある。
【００４９】
書込量記憶テーブル２５４は、内部処理が完了した後からのＳＳＤへのデータの書き込み量をＳＳＤ４、５毎に記憶する。書込量記憶テーブル２５４に記憶されるＳＳＤ４、５毎のデータの書き込み量は、例えば、ホスト９から書き込みコマンドが発行される都度、ＣＰＵ２６によって更新される。
【００５０】
第２の管理テーブル２５５は、内部処理の実行が開始される際のデータの書き込み量（以降、「内部処理開始書込量」という）を、ＳＳＤ毎に記憶する。ＳＳＤ毎に記憶される内部処理開始書込量は、内部処理開始書込量算出部２６３によって算出される。なお、第２の管理テ―ブル２５５の詳細の説明は、後述する。
【００５１】
内部処理開始書込量算出部２６３は、内部処理を実行するタイミングとして、予めＳＳＤ毎の内部処理開始書込量を算出する。なお、内部処理開始書込量算出部２６３は、ＳＳＤで構成されるＲＡＩＤのボリュームが作成される際に実行される。例えば、内部処理開始書込量算出部２６３は、書き込みサイズが一定量の書き込みコマンドを連続してＳＳＤ４、５へ発行する。一定量は、例えば８キロバイト（ＫＢ）である。その際、ＳＳＤがＳＣＳＩコマンドをサポートしているディスク（ＳＡＳ−ＳＳＤやＦＣ−ＳＳＤなど）の場合、ＳＳＤは、データの書き込み準備が整ったことを示すＸＦＥＲ＿ＲＤＹのコマンドを返す。したがって、内部処理開始書込量算出部２６３は、ＳＳＤがＳＣＳＩコマンドをサポートしている場合、ＳＳＤ４、５へ書き込みコマンドを発行してからＸＦＥＲ＿ＲＤＹがＳＳＤ４、５から返ってくるまでの待ち時間を測定する。ここで、ＳＳＤ４、５では、書き込みコマンドが発行されてからＸＦＥＲ＿ＲＤＹが返ってくるまでの待ち時間は、内部処理が実行されていない場合数マイクロ秒（μｓ）オーダであるが、内部処理が実行されている場合数ミリ秒（ｍｓ）オーダとなる。そこで、内部処理開始書込量算出部２６３は、この待ち時間を検出することで内部処理の有無を検出し、内部処理の開始に至るまでの書き込み量（内部処理開始書込量）を推定する。そして、内部処理開始書込量算出部２６３は、ＳＳＤ４、５毎の内部処理開始書込量を第２の管理テーブル２５５に記憶する。なお、内部処理開始書込量算出部２６３の詳細については後述する。
【００５２】
ここで、第２の管理テーブル２５５のデータ構造について、図６を参照して説明する。図６は、実施例２に係る第２の管理テーブルのデータ構造の一例を示す図である。図６に示すように、第２の管理テーブル２５５は、ＳＳＤ名２５５ａと内部処理開始書込量２５５ｂとを対応付けて記憶する。ＳＳＤ名２５５ａは、ＳＳＤの名称である。内部処理開始書込量２５５ｂは、内部処理の実行が開始される際のデータの書き込み量である。一例として、ＳＳＤ名２５５ａが「ＳＳＤ１」である場合、内部処理開始書込量２５５ｂとして「６００」ＫＢと記憶している。
【００５３】
図５に戻って、第２の実行部２６４は、いずれかのＳＳＤにおけるデータの書き込み量が内部処理の実行が開始されると予測されるデータの書き込み量以上となったタイミングで、複数のＳＳＤ４、５に対して内部処理を実行する。すなわち、第２の実行部２６４は、ＳＳＤ４、５の内部処理のタイミングが一定量の書き込みが連続した後で発生するという傾向を利用して、内部処理を実行する。
【００５４】
例えば、第２の実行部２６４は、書込量記憶テーブル２５４を参照して、ＲＡＩＤ構成（ＲＡＩＤグループ）のＳＳＤ４、５について、書き込み量が第２の管理テーブル２５４に記憶された内部処理開始書込量以上であるか否かを判定する。そして、第２の実行部２６４は、いずれかのＳＳＤで書き込み量が内部処理開始書込量以上である場合に、ＲＡＩＤ構成の複数のＳＳＤ４、５に内部処理を実行する。すなわち、第２の実行部２６４は、統計的に求められた内部処理のタイミングで、ＲＡＩＤ構成の複数のＳＳＤ４、５の内部処理を揃えて実行するようにする。これにより、第２の実行部２６４は、ＲＡＩＤ構成である複数のＳＳＤ４、５の内部処理の同期をとることができる。
【００５５】
［内部処理実行処理の手順］
次に、実施例２に係る内部処理実行処理の手順について、図７Ａ、図７Ｂおよび図７Ｃを参照して説明する。図７Ａは、実施例２に係る内部処理実行処理のフローチャートを示す図である。図７Ｂは、実施例２に係る内部処理開始書込量算出処理のフローチャートを示す図である。図７Ｃは、実施例２に係る第２の実行処理のフローチャートを示す図である。
【００５６】
図７Ａでは、内部処理開始書込量算出部２６３が、ＳＳＤ４、５について、ＲＡＩＤのボリュームの作成要求を受け取ったとする。すると、内部処理開始書込量算出部２６３は、ＳＳＤ４、５について、ＲＡＩＤのボリュームを作成する（ステップＳ３１）。そして、内部処理開始書込量算出部２６３は、作成したボリュームにフォーマットをする際、内部処理のタイミングを取得する（ステップＳ３２）。なお、内部処理のタイミングを取得する処理の詳細は、図７Ｂで説明する。内部処理開始書込量算出部２６３は、ＳＳＤ４、５毎の「内部処理開始書込量」を取得することになる。
【００５７】
続いて、第２の実行部２６４は、ＳＳＤ４、５に書き込みコマンド（ＷｔＣＭＤ）が発行されたか否かを判定する（ステップＳ３３）。ＳＳＤ４、５にＷｔＣＭＤが発行されなかったと判定した場合（ステップＳ３３；Ｎｏ）、第２の実行部２６４は、判定処理を繰り返す。
【００５８】
一方、ＳＳＤ４、５にＷｔＣＭＤが発行されたと判定した場合（ステップＳ３３；Ｙｅｓ）、第２の実行部２６４は、いずれかのＳＳＤ４、５において、総書き込み量が「内部処理開始書込量」以上になったか否かを判定する（ステップＳ３４）。いずれかのＳＳＤ４、５において、総書き込み量が「内部処理開始書込量」以上になっていないと判定した場合（ステップＳ３４；Ｎｏ）、第２の実行部２６４は、次のＷｔＣＭＤの発行を待つべく、ステップＳ３３に移行する。
【００５９】
一方、いずれかのＳＳＤ４、５で、総書き込み量が「内部処理開始書込量」以上になったと判定した場合（ステップＳ３４；Ｙｅｓ）、第２の実行部２６４は、「内部処理開始書込量」以上書き込んだＳＳＤに「内部処理実行命令」を発行する（ステップＳ３５）。このとき、第２の実行部２６４は、「内部処理開始書込量」以上書き込んだＳＳＤと同一のＲＡＩＤ構成（ＲＡＩＤグループ）のＳＳＤに対しても「内部処理実行命令」を発行する。なお、ステップＳ３３〜ステップＳ３５における内部処理を実行する処理の詳細は、図７Ｃで説明する。
【００６０】
［内部処理開始書込量算出処理の手順］
次に、実施例２に係る内部処理開始書込量算出処理の手順について説明する。
【００６１】
図７Ｂに示すように、内部処理開始書込量算出部２６３は、書き込みコマンド（ＷｔＣＭＤ）の総発行数ｎ、現在のＣＭＤ発行数ｉをそれぞれ０にリセットする（ステップＳ４１）。ここで、ＷｔＣＭＤの総発行数ｎとは、ＷｔＣＭＤを発行した総数を示す変数である。また、現在のＣＭＤ発行数ｉとは、現在発行中のＷｔＣＭＤの発行数を示す変数である。なお、ＷｔＣＭＤによって書き込まれるデータは、全て０であるとか全て１であるとかでないランダムなデータであることが望ましい。そして、内部処理開始書込量算出部２６３は、ＷｔＣＭＤの総発行数ｎが最大総発行数ＭＡＸｎ以下であるか否かを判定する（ステップＳ４２）。ここで、最大総発行数ＭＡＸｎとは、ＷｔＣＭＤを発行する総数の最大値を示す定数である。
【００６２】
ＷｔＣＭＤの総発行数ｎが最大総発行数ＭＡＸｎ以下である場合（ステップＳ４２；Ｙｅｓ）、内部処理開始書込量算出部２６３は、ボリュームが作成されたＲＡＩＤ構成のＳＳＤ４、５に書き込みサイズ（ＷｔＳｉｚｅ）が８キロバイト（ＫＢ）のＷｔＣＭＤを発行する。また、内部処理開始書込量算出部２６３は、ＷｔＣＭＤ発行時、発行したＷｔＣＭＤに対応するタイマを起動する（ステップＳ４３）。そして、内部処理開始書込量算出部２６３は、現在のＣＭＤ発行数ｉに１を加算し、ＷｔＣＭＤの総発行数ｎに１を加算する（ステップＳ４４）。
【００６３】
続いて、内部処理開始書込量算出部２６３は、ＸＦＥＲ＿ＲＤＹが返ってきているか否かを判定する（ステップＳ４５）。ＸＦＥＲ＿ＲＤＹが返ってきたと判定した場合（ステップＳ４５；Ｙｅｓ）、内部処理開始書込量算出部２６３は、返ってきたＸＦＥＲ＿ＲＤＹに対応するタイマを停止し、タイマが起動されてからの時間を示すタイマの情報Ｔ［ｎ］を保存する。そして、内部処理開始書込量算出部２６３は、ＸＦＥＲ＿ＲＤＹに応答し（ステップＳ４６）、ステップＳ４７に移行する。
【００６４】
一方、ＸＦＥＲ＿ＲＤＹが返ってきていないと判定した場合（ステップＳ４５；Ｎｏ）、内部処理開始書込量算出部２６３は、ステップＳ４７に移行する。
【００６５】
そして、ステップＳ４７において、内部処理開始書込量算出部２６３は、正常のステータスが返ってきているか否かを判定する（ステップＳ４７）。すなわち、内部処理開始書込量算出部２６３は、ＷｔＣＭＤに対応する正常の処理結果が返ってきているかを判定する。正常のステータスが返ってきていると判定した場合（ステップＳ４７；Ｙｅｓ）、内部処理開始書込量算出部２６３は、ＷｔＣＭＤに対応する書き込み処理が１つ終了したので、現在のＣＭＤ発行数ｉを１だけ減算する（ステップＳ４８）。そして、内部処理開始書込量算出部２６３は、ステップＳ４９に移行する。
【００６６】
一方、正常のステータスが返ってきていないと判定した場合（ステップＳ４７；Ｎｏ）、内部処理開始書込量算出部２６３は、ステップＳ４９に移行する。
【００６７】
そして、内部処理開始書込量算出部２６３は、現在のＣＭＤ発行数ｉがドライブあたりの最大ＣＭＤ発行数ＭＡＸｉ以上であるか否かを判定する（ステップＳ４９）。現在のＣＭＤ発行数ｉが最大ＣＭＤ発行数ＭＡＸｉ以上であると判定した場合（ステップＳ４９；Ｙｅｓ）、内部処理開始書込量算出部２６３は、次のＷｔＣＭＤを発行しないで、ステップＳ４５に移行する。
【００６８】
一方、現在のＣＭＤ発行数ｉが最大ＣＭＤ発行数ＭＡＸｉ以上でないと判定した場合（ステップＳ４９；Ｎｏ）、内部処理開始書込量算出部２６３は、次のＷｔＣＭＤを発行すべく、ステップＳ４２に移行する。
【００６９】
ステップＳ４２では、ＷｔＣＭＤの総発行数ｎが最大総発行数ＭＡＸｎ以下でない場合（ステップＳ４２；Ｎｏ）、内部処理開始書込量算出部２６３は、仕掛中のＷｔＣＭＤを処理する（ステップＳ５０）。
【００７０】
続いて、内部処理開始書込量算出部２６３は、保存したタイマ情報の値が１ｍｓ以上の数（Ａ）を取得する（ステップＳ５１）。すなわち、内部処理開始書込量算出部２６３は、内部処理が実行されていると推定されるタイマ情報の数を取得する。そして、内部処理開始書込量算出部２６３は、タイマ情報が１ｍｓ以上のものの中で、最後に発行されたＣＭＤの発行番号（Ｂ）を取得する（ステップＳ５２）。なお、ＣＭＤの発行番号は、ＷｔＣＭＤを発行したときのｎの値に対応する。そして、内部処理開始書込量算出部２６３は、内部処理開始書込量を以下の式（１）のように算出する（ステップＳ５３）。
内部処理開始書込量＝（Ｂ）×ＷｔＳｉｚｅ／（Ａ）・・・（１）
【００７１】
すなわち、ＳＳＤ４、５では、ＷｔＣＭＤが発行されてからＸＦＥＲ＿ＲＤＹが返ってくるまでの待ち時間は、内部処理が実行されていない場合、数μｓオーダであるが、内部処理が実行されている場合、数ｍｓオーダとなる。そこで、内部処理開始書込量算出部２６３は、この数ｍｓオーダの待ち時間を検出することで内部処理の有無を検出し、内部処理の開始に至るまでの内部処理開始書込量を推定する。なお、かかる待ち時間とは、タイマ情報Ｔ［ｎ］に対応する。一例として、タイマ情報が１ｍｓ以上のＷｔＣＭＤが４個あったとする。すると、（Ａ）は４となる。そして、タイマ情報が１ｍｓ以上のＷｔＣＭＤの中で、最後に発行されたＣＭＤの発行番号が１４０であったとする。すると、（Ｂ）は１４０となる。そして、ＷｔＳｉｚｅが８ＫＢであるとする。すると、内部処理開始書込量算出部２６３は、１４０×８／４を算出して得られる２８０ＫＢを内部処理開始書込量として算出する。
【００７２】
内部処理開始書込量が算出されると、内部処理開始書込量算出部２６３は、通常行われるフォーマットを開始する（ステップＳ５４）。
【００７３】
［第２の実行処理の手順］
次に、実施例２に係る第２の実行処理の手順について説明する。
【００７４】
図７Ｃに示すように、第２の実行部２６４は、ＲＡＩＤ構成（ＲＡＩＤグループ）のＳＳＤ４、５にＷｔＣＭＤが発行されたか否かを判定する（ステップＳ６１）。ＲＡＩＤ構成のＳＳＤ４、５にＷｔＣＭＤが発行されなかったと判定した場合（ステップＳ６１；Ｎｏ）、第２の実行部２６４は、当該ＳＳＤにＷｔＣＭＤが発行されるまで、判定処理を繰り返す。
【００７５】
一方、ＲＡＩＤ構成のＳＳＤ４、５にＷｔＣＭＤが発行されたと判定した場合（ステップＳ６１；Ｙｅｓ）、第２の実行部２６４は、ＷｔＣＭＤが発行されたＲＡＩＤグループの番号ｘを取得する（ステップＳ６２）。そして、第２の実行部２６４は、「番号ｘのＲＡＩＤグループへの書込量」にＷｔＣＭＤの書込量（バイト：Ｂｙｔｅ）を加算する（ステップＳ６３）。
【００７６】
続いて、第２の実行部２６４は、「番号ｘのＲＡＩＤグループへの書込量」が当該ＲＡＩＤグループに対応する「内部処理開始書込量」以上であるか否かを判定する（ステップＳ６４）。例えば、第２の実行部２６４は、書込量記憶テーブル２５４を参照して、番号ｘのＲＡＩＤグループに対応するＳＳＤの内部処理開始書込量２５５ｂを取得する。そして、第２の実行部２６４は、「番号ｘのＲＡＩＤグループへの書込量」が取得された内部処理開始書込量２５５ｂ以上であるか否かを判定する。ここで、「番号ｘのＲＡＩＤグループへの書込量」が番号ｘのＲＡＩＤグループに対応する「内部処理開始書込量」以上でない場合（ステップＳ６４；Ｎｏ）、第２の実行部２６４は、次のＷｔＣＭＤを待つべく、ステップＳ６１に移行する。
【００７７】
一方、「番号ｘのＲＡＩＤグループへの書込量」が番号ｘのＲＡＩＤグループに対応する「内部処理開始書込量」以上である場合（ステップＳ６４；Ｙｅｓ）、第２の実行部２６４は、番号ｘのＲＡＩＤグループのＳＳＤ４、５に対して、「内部処理実行命令」を発行する（ステップＳ６５）。その後、第２の実行部２６４は、「番号ｘのＲＡＩＤグループへの書込量」を０にリセットする（ステップＳ６６）。そして、第２の実行部２６４は、次のＷｔＣＭＤを待つべく、ステップＳ６１に移行する。
【００７８】
［実施例２の効果］
上記実施例２によれば、第２の実行部２６４は、データの書き込み処理中に発生する内部処理について、以下のタイミングで、複数のＳＳＤ４、５内の内部処理を実行する。すなわち、第２の実行部２６４は、いずれかのＳＳＤ４、５におけるデータの書き込み量が内部処理の実行が開始されると予測されるデータの書き込み量（内部処理開始書込量）以上となったタイミングで、複数のＳＳＤ４、５に対して内部処理を実行する。かかる構成によれば、第２の実行部２６４は、ＳＳＤではある一定量の書き込みが連続した後内部処理が開始されるという傾向を利用して複数のＳＳＤ４、５に対して同じタイミングで内部処理を実行することで、内部処理による性能低下を抑制できる。
【実施例３】
【００７９】
ところで、実施例１に係るストレージ装置１では、データの書き込み処理中に発生する内部処理について、ＳＳＤ４、５への書き込み（ライトバック）がされるまでの猶予時間を利用して、内部処理を実行する場合を説明した。実施例２に係るストレージ装置１Ａでは、ＳＳＤ４、５の内部処理のタイミングが一定量の書き込みが連続した後で発生するという傾向を利用して、内部処理を実行する場合を説明した。しかしながら、ストレージ装置１、１Ａでは、これに限定されず、ＲＡＩＤ構成のいずれかのＳＳＤ４、５で内部処理が実行されたタイミングで、他のＳＳＤ４、５の内部処理を実行するようにしても良い。
【００８０】
そこで、実施例３では、ＲＡＩＤ構成のいずれかのＳＳＤ４、５で内部処理が実行されたタイミングで、他のＳＳＤ４、５の内部処理を実行するストレージ装置１Ｂについて説明する。
【００８１】
［実施例３に係るストレージ装置の構成］
図８は、実施例３に係るストレージ装置のハードウェア構成を示す図である。なお、図５に示すストレージ装置１Ａと同一の構成については同一符号を示すことで、その重複する構成および動作の説明については省略する。実施例２と実施例３とが異なるところは、ＣＰＵ２６に待ち時間閾値算出部２６５と第３の実行部２６６を追加した点にある。また、実施例２と実施例３とが異なるところは、ＲＡＭ２５に待ち時間記憶テーブル２５６と第３の管理テーブル２５７を追加した点にある。
【００８２】
待ち時間記憶テーブル２５６は、待ち時間をＳＳＤ４、５毎に記憶する。ここでいう「待ち時間」とは、ＳＳＤ４、５へ書き込みコマンドを発行してからＸＦＥＲ＿ＲＤＹがＳＳＤ４、５から返ってくるまでの時間をいう。以降で記載される待ち時間も特に説明がない限り、同様の意味であるとする。なお、ＸＦＥＲ＿ＲＤＹとは、データの書き込み準備が整ったことを示すＳＳＤ４、５からの通知を示す。
【００８３】
第３の管理テーブル２５７は、内部処理が実行されていないときの待ち時間をＲＡＩＤ構成（ＲＡＩＤグループ）毎に記憶する。すなわち、第３の管理テーブル２５７は、ＳＳＤ４、５へ書き込みコマンドを発行してからＸＦＥＲ＿ＲＤＹがＳＳＤ４、５から返ってくるまでの待ち時間について、内部処理が実行されていないときの待ち時間を記憶する。なお、第３の管理テーブル２５７の詳細の説明は、後述する。
【００８４】
待ち時間閾値算出部２６５は、内部処理が実行されていないときの待ち時間を、内部処理を実行するタイミングの閾値として算出する。なお、待ち時間閾値算出部２６５は、ＳＳＤで構成されたＲＡＩＤのボリュームが作成される際に実行される。例えば、待ち時間閾値算出部２６５は、内部処理が実行されていないときに、データ長が例えば８ＫＢの書き込みコマンドをＳＳＤ４、５へ発行する。そして、待ち時間閾値算出部２６５は、書き込みコマンドを発行してからＸＦＥＲ＿ＲＤＹが返ってくるまでの待ち時間を算出する。待ち時間閾値算出部２６５は、これを所定回数分繰り返し、データ長が８ＫＢである場合の待ち時間の平均を算出する。算出された待ち時間の平均が、データ長が８ＫＢである場合の内部処理を実行するタイミングの閾値となる。同様に、待ち時間閾値算出部２６５は、データ長を８ＫＢから異なるデータ長に代えて、データ長毎の、待ち時間の平均を算出する。そして、待ち時間閾値算出部２６５は、算出したデータ長毎の待ち時間の平均を、内部処理を実行するタイミングの閾値として第３の管理テーブル２５７に記憶する。なお、待ち時間閾値算出部２６５の詳細については後述する。
【００８５】
ここで、第３の管理テーブル２５７のデータ構造について、図９を参照して説明する。図９は、実施例３に係る第３の管理テーブルのデータ構造の一例を示す図である。図９に示すように、第３の管理テーブル２５７は、ＲＡＩＤグループ毎に、データ長２５７ａと待ち時間閾値２５７ｂとを対応付けて記憶する。データ長２５７ａは、書き込みコマンドのデータ長である。待ち時間閾値２５７ｂは、データ長２５７ａが示すデータ長の書き込みコマンドを発行してからＸＦＥＲ＿ＲＤＹが返ってくるまでの待ち時間の平均である。すなわち、待ち時間閾値２５７ｂは、内部処理を実行するタイミングの閾値である。
【００８６】
一例として、ＳＳＤのＲＡＩＤグループの番号が「１」である場合、データ長２５７ａとして「８ＫＢ」であるとき、待ち時間閾値２５７ｂとして「５０μｓ」と記憶している。また、ＲＡＩＤグループの番号が「１」である場合、データ長２５７ａとして「２ＭＢ」であるとき、待ち時間閾値２５７ｂとして「１ｍｓ」と記憶している。なお、ＳＳＤの作りによっては、データ長２５７ａ毎に待ち時間閾値２５７ｂが変化しない場合がある。このような場合には、１種類のデータ長２５７ａについて算出された待ち時間閾値２５７ｂを記憶しておけば良い。
【００８７】
第３の実行部２６６は、いずれかのＳＳＤで、内部処理が実行されていないときの待ち時間（閾値）を超えたタイミングで、複数のＳＳＤ４、５に対して内部処理を実行する。すなわち、第３の実行部２６６は、いずれかのＳＳＤで書き込みコマンドに対する待ち時間が閾値を超えると、当該ＳＳＤで内部処理が実行されたと判断し、当該ＳＳＤと同じＲＡＩＤ構成のＳＳＤに対して内部処理を実行する。これにより、第３の実行部２６６は、ＲＡＩＤ構成である複数のＳＳＤ４、５の内部処理の同期をとることができる。
【００８８】
［内部処理実行処理の手順］
次に、実施例３に係る内部処理実行処理の手順について、図１０Ａおよび図１０Ｂを参照して説明する。図１０Ａは、実施例３に係る待ち時間閾値算出処理のフローチャートを示す図である。図１０Ｂは、実施例３に係る第３の実行処理のフローチャートを示す図である。
【００８９】
［待ち時間閾値算出処理の手順］
図１０Ａに示すように、待ち時間閾値算出部２６５が、ＳＳＤ４、５について、ＲＡＩＤのボリュームの作成要求を受け取ったとする。すると、待ち時間閾値算出部２６５は、ＳＳＤ４、５について、ＲＡＩＤのボリュームを作成する（ステップＳ７１）。そして、待ち時間閾値算出部２６５は、データ長の番号ｊに１を設定するとともに、データ長の番号ｊに対応する待ち時間合計Ｇ［ｊ］に０を設定する（ステップＳ７２）。なお、データ長の番号（ｊ）１は、例えば８ＫＢのデータ長に対応する番号を示し、データ長の番号（ｊ）２は、６４ＫＢのデータ長に対応する番号を示す。また、以下で示すＬｊは、データ長の番号ｊに対応するデータ長、すなわち８ＫＢや６４ＫＢを示すものとする。
【００９０】
続いて、待ち時間閾値算出部２６５は、データ長の番号ｊがデータ長サンプル数より大きいか否かを判定する（ステップＳ７３）。データ長の番号ｊがデータ長サンプル数より大きいと判定した場合（ステップＳ７３；Ｙｅｓ）、待ち時間閾値算出部２６５は、処理を終了する。
【００９１】
データ長の番号ｊがデータ長サンプル数より大きくないと判定した場合（ステップＳ７３；Ｎｏ）、待ち時間閾値算出部２６５は、現在のＣＭＤ発行数ｍが最大ＣＭＤ発行数より大きいか否かを判定する（ステップＳ７４）。現在のＣＭＤ発行数ｍが最大ＣＭＤ発行数より大きくないと判定した場合（ステップＳ７４；Ｎｏ）、待ち時間閾値算出部２６５は、ボリュームが作成されたＳＳＤのＲＡＩＤグループに内部処理実行命令を発行する（ステップＳ７５）。これは、予め内部処理実行命令を発行しておくことで、待ち時間閾値を算出する処理を行う際に内部処理が実行されないようにするためである。
【００９２】
続いて、待ち時間閾値算出部２６５は、内部処理実行命令を発行したＳＳＤから応答が返ってきたら、ボリュームが作成されたＳＳＤのＲＡＩＤグループにデータ長がＬｊＫＢの書き込みコマンド（ＷｔＣＭＤ）を発行する。また、待ち時間閾値算出部２６５は、書き込みコマンドを発行時、発行したＷｔＣＭＤに対応するタイマを起動する（ステップＳ７６）。なお、書き込みコマンドによって書き込まれるデータは、全て０であるとか全て１であるとかでないランダムなデータであることが望ましい。そして、待ち時間閾値算出部２６５は、現在のＣＭＤ発行数ｍに１を加算する（ステップＳ７７）。
【００９３】
そして、待ち時間閾値算出部２６５は、ＸＦＥＲ＿ＲＤＹが返ってきたら、タイマを停止し、待ち時間合計Ｇ［ｊ］にタイマ値を加算する（ステップＳ７８）。そして、待ち時間閾値算出部２６５は、次の書き込みコマンドを発行すべく、ステップＳ７４に移行する。
【００９４】
ステップＳ７４では、現在のＣＭＤ発行数ｍが最大ＣＭＤ発行数より大きいと判定した場合（ステップＳ７４；Ｙｅｓ）、待ち時間閾値算出部２６５は、以下の式（２）に基づいて、データ長Ｌｊの書き込みを実施したときの「待ち時間閾値」を算出する（ステップＳ７９）。
待ち時間閾値＝待ち時間合計Ｇ［ｊ］÷現在のＣＭＤ発行数ｍ・・・式（２）
【００９５】
そして、待ち時間閾値算出部２６５は、現在のＣＭＤ発行数ｍを０にリセットし、データ長の番号ｊに１を加算し、待ち時間合計Ｇ［ｊ］を０にリセットする（ステップＳ８０）。そして、待ち時間閾値算出部２６５は、次のデータ長の「待ち時間閾値」を算出すべく、ステップＳ７３に移行する。
【００９６】
［第３の実行処理の手順］
次に、実施例３に係る第３の実行処理の手順について説明する。
【００９７】
図１０Ｂに示すように、第３の実行部２６６は、ＲＡＩＤ構成（ＲＡＩＤグループ）のＳＳＤ４、５にＷｔＣＭＤが発行されたか否かを判定する（ステップＳ８１）。ＲＡＩＤ構成のＳＳＤ４、５にＷｔＣＭＤが発行されなかったと判定した場合（ステップＳ８１；Ｎｏ）、第３の実行部２６６は、当該ＳＳＤにＷｔＣＭＤが発行されるまで、判定処理を繰り返す。
【００９８】
一方、ＲＡＩＤ構成のＳＳＤ４、５にＷｔＣＭＤが発行されたと判定した場合（ステップＳ８１；Ｙｅｓ）、第３の実行部２６６は、いずれかのＳＳＤ４、５で、待ち時間が閾値を超えたか否かを判定する（ステップＳ８２）。いずれかのＳＳＤ４、５で、待ち時間が閾値を超えていないと判定した場合（ステップＳ８２；Ｎｏ）、第３の実行部２６６は、いずれのＳＳＤ４、５も内部処理が実行されていないと判断する。そして、第３の実行部２６６は、次のＷｔＣＭＤを待つべく、ステップＳ８１に移行する。
【００９９】
一方、いずれかのＳＳＤ４、５で、待ち時間が閾値を超えた場合（ステップＳ８２；Ｙｅｓ）、第３の実行部２６６は、閾値を超えたＳＳＤで内部処理が実行されていると判断する。そして、第３の実行部２６６は、閾値を超えたＳＳＤと同じＲＡＩＤグループのＳＳＤに対して、「内部処理実行命令」を発行する（ステップＳ８３）。そして、第３の実行部２６６は、次のＷｔＣＭＤを待つべく、ステップＳ８１に移行する。
【０１００】
ところで、上記では、内部処理実行処理は、第１の実行部２６２、第２の実行部２６４および第３の実行部２６６をそれぞれ実行させて、複数のＳＳＤ４、５に対して内部処理を実行した。しかしながら、内部処理実行処理は、これに限定されず、第１の実行部２６２、第２の実行部２６４および第３の実行部２６６を組み合わせて、複数のＳＳＤ４、５に対して内部処理を実行するようにしても良い。図１１は、実施例３に係る内部処理実行処理の全体のフローチャートを示す図である。
【０１０１】
図１１に示すように、第１の実行部２６２は、ホスト９から書き込みコマンド（ＷｔＣＭＤ）が発行されたら、ダーティデータのキャッシュ領域２５１における割合が閾値未満か否かを判定する（ステップＳ９１）。ダーティデータのキャッシュ領域２５１における割合が閾値未満であると判定した場合（ステップＳ９１；Ｙｅｓ）、第１の実行部２６２は、ストレージ装置１Ｂに搭載されているＳＳＤ４、５へ「内部処理実行命令」を発行する（ステップＳ９２）。そして、第１の実行部２６２は、ステップＳ９１に移行する。
【０１０２】
一方、ダーティデータのキャッシュ領域２５１における割合が閾値未満であると判定した場合（ステップＳ９１；Ｎｏ）、第２の実行部２６４は、ＲＡＩＤグループへの書き込みが「内部処理開始書込量」以上に達したか否かを判定する（ステップＳ９３）。ＲＡＩＤグループへの書き込みが「内部処理開始書込量」以上に達したと判定した場合（ステップＳ９３；Ｙｅｓ）、第２の実行部２６４は、書き込みが「内部処理開始書込量」以上に達したＲＡＩＤグループのドライブへ「内部処理実行命令」を発行する（ステップＳ９４）。そして、第２の実行部２６４は、ステップＳ９１に移行する。
【０１０３】
一方、ＲＡＩＤグループへの書き込みが「内部処理開始書込量」以上に達していないと判定した場合（ステップＳ９３；Ｎｏ）、第３の実行部２６６は、いずれかのＳＳＤで、待ち時間が閾値を超えたか否かを判定する（ステップＳ９５）。いずれかのＳＳＤで、待ち時間が閾値を超えたと判定した場合（ステップＳ９５；Ｙｅｓ）、第３の実行部２６６は、閾値を超えたＳＳＤで内部処理が実行されていると判断する。そして、第３の実行部２６６は、内部処理を実行したＳＳＤと同じＲＡＩＤグループのＳＳＤに「内部処理実行命令」を発行する（ステップＳ９６）。そして、第３の実行部２６６は、ステップＳ９１に移行する。
【０１０４】
いずれかのＳＳＤからの応答があるまでの待ち時間が閾値を超えていないと判定した場合（ステップＳ９５；Ｎｏ）、第３の実行部２６６は、ステップＳ９１に移行する。
【０１０５】
ここで、第３の実行部２６６によってＲＡＩＤ１（１＋１）構成のＳＳＤａ、ｂに対して内部処理が実行される場合、ホスト９が応答遅延となる様子を、図１２〜図１４を参照して説明する。まず、ＲＡＩＤ構成でないＳＳＤ単体での応答遅延について、図１２を参照して説明する。図１２は、ＳＳＤ単体での応答遅延を説明する図である。図１２では、ホストがＳＳＤに対して連続して８ＫＢの書き込みコマンド（ＷｔＣＭＤ）を発行したときの例である。
【０１０６】
図１２に示すように、ＳＳＤ単体では、例えば、内部処理は、１個当たり８ＫＢの書き込みコマンド（ＷｔＣＭＣ）の場合、８０個の書き込みコマンドに１回発生している。ここでは、ＳＳＤは、０〜７９の８０個のＷｔＣＭＤに対して、０〜７８の７９個のＷｔＣＭＤについては処理が完了すると即ホスト９に対して応答を行う。しかし、ＳＳＤは、８０個目のＷｔＣＭＤについては内部処理が実行されているので、即ホスト９に対して応答を行えず、内部処理が完了した後にホスト９に対して応答を行う。すなわち、８０個目のＷｔＣＭＤについて、内部処理の処理時間分、ホスト９への応答遅延が発生する。
【０１０７】
このようなＳＳＤでＲＡＩＤ１（１＋１）を構成した場合に、ホスト９が応答遅延となる様子を、図１３を参照して説明する。図１３は、ＳＳＤでＲＡＩＤ１（１＋１）を構成した場合のＳＳＤの応答遅延を説明する図である。図１３でも、図１２の場合と同様に、
ＳＳＤでは、例えば、内部処理が８０個の書き込みコマンド（ＷｔＣＭＤ）に１回発生するとする。そして、ホスト９がＳＳＤに対して連続して８ＫＢの書き込みコマンド（ＷｔＣＭＤ）を発行したときの例である。
【０１０８】
図１３に示すように、ホスト９から発行された４０個目のＷｔＣＭＤで、ＳＳＤｂの待ち時間が閾値を超えたとする。すると、第３の実行部２６６は、ＳＳＤｂで内部処理が実行されたと判断し、ＳＳＤｂと同じＲＡＩＤ構成のＳＳＤａに対して内部処理実行命令を発行する。すると、ＳＳＤａでは、内部処理が実行される。その後、４０個目のＷｔＣＭＤについて、ＳＳＤａとＳＳＤｂの内部処理が完了した後に、ホスト９に対して応答がされる。すなわち、４０個目のＷｔＣＭＤについて、内部処理の処理時間、ここでは３０ｍｓ分ホスト９への応答遅延が発生する。
【０１０９】
続いて、１２０個目のＷｔＣＭＤで、ＳＳＤｂの待ち時間が閾値を超えたとする。すると、第３の実行部２６６は、ＳＳＤａに対して内部処理実行命令を発行し、ＳＳＤａでは、内部処理が実行される。その後、１２０個目のＷｔＣＭＤについて、ＳＳＤａとＳＳＤｂの内部処理が完了した後に、ホスト９に対して応答がされる。すなわち、１２０個目のＷｔＣＭＤについて、内部処理の処理時間、ここでは２０ｍｓ分ホスト９への応答遅延が発生する。
【０１１０】
続いて、２００個目のＷｔＣＭＤで、ＳＳＤｂの待ち時間が閾値を超えたとする。すると、第３の実行部２６６は、ＳＳＤａに対して内部処理実行命令を発行し、ＳＳＤａでは、内部処理が実行される。その後、２００個目のＷｔＣＭＤについて、ＳＳＤａとＳＳＤｂの内部処理が完了した後に、ホスト９に対して応答がされる。すなわち、２００個目のＷｔＣＭＤについて、ＳＳＤａの内部処理の処理時間が３０ｍｓであり、ＳＳＤｂの内部処理の処理時間が２０ｍｓであるので、ＳＳＤａの内部処理の処理時間である３０ｍｓ分ホスト９への応答遅延が発生する。
【０１１１】
続いて、２８０個目のＷｔＣＭＤで、ＳＳＤａの待ち時間が閾値を超えたとする。すると、第３の実行部２６６は、ＳＳＤａで内部処理が実行されたと判断し、ＳＳＤａと同じＲＡＩＤ構成のＳＳＤｂに対して内部処理実行命令を発行する。すると、ＳＳＤｂでは、内部処理が実行される。その後、２８０個目のＷｔＣＭＤについて、ＳＳＤａとＳＳＤｂの内部処理が完了した後に、ホスト９に対して応答がされる。すなわち、２８０個目のＷｔＣＭＤについて、内部処理の処理時間、ここでは２０ｍｓ分ホスト９への応答遅延が発生する。
【０１１２】
このように、第３の実行部２６６は、ＲＡＩＤ１（１＋１）構成のＳＳＤの内部処理の同期をとることができる。これによって、第３の実行部２６６は、ＳＳＤの内部処理によって応答遅延となるＷｔＣＭＤの数を減らすことができる。
【０１１３】
ＳＳＤの内部処理によって応答遅延となるＷｔＣＭＤの数を減らすことができることについて、図１４を参照して説明する。図１４は、ＳＳＤでＲＡＩＤ１（１＋１）を構成した場合の従来におけるＳＳＤの応答遅延を説明する図である。図１４でも、図１２および図１３の場合と同様に、ＳＳＤでは、例えば、内部処理が８０個の書き込みコマンド（ＷｔＣＭＤ）に１回発生しているとする。そして、ホスト９がＳＳＤに対して連続して８ＫＢの書き込みコマンド（ＷｔＣＭＤ）を発行したときの例である。
【０１１４】
図１４に示すように、ホスト９から発行された４０個目のＷｔＣＭＤについて、ＳＳＤｂで内部処理が実行されたとする。すると、ＳＳＤａでは、ＳＳＤｂで内部処理が実行されている間待ち時間となる。ここでいう待ち時間とは、処理が待機することとなる時間を示す。その後、４０個目のＷｔＣＭＤについて、ＳＳＤｂの内部処理が完了した後に、ホスト９に対して応答がされる。すなわち、４０個目のＷｔＣＭＤについて、内部処理の処理時間、ここでは３０ｍｓ分ホスト９への応答遅延が発生する。
【０１１５】
そして、８０個目のＷｔＣＭＤについて、他方のＳＳＤａで内部処理が実行される。すると、ＳＳＤｂでは、ＳＳＤａで内部処理が実行されている間待ち時間となる。その後、８０個目のＷｔＣＭＤについて、ＳＳＤａの内部処理が完了した後に、ホスト９に対して応答がされる。すなわち、８０個目のＷｔＣＭＤについて、内部処理の処理時間、ここでは２０ｍｓ分ホスト９への応答遅延が発生する。
【０１１６】
同様に、１２０個目のＷｔＣＭＤについて、ＳＳＤｂで内部処理が実行され、ホスト９への応答遅延が発生する。１５０個目のＷｔＣＭＤについて、他方のＳＳＤａで内部処理が実行され、ホスト９への応答遅延が発生する。すなわち、図１４で示した従来におけるＳＳＤの例では、応答遅延は、４０ＣＭＤずつ発生している。
【０１１７】
これに対して、図１３で示したＳＳＤの例では、応答遅延は、８０ＣＭＤずつ発生している。つまり、第３の実行部２６６は、ＳＳＤの内部処理によって応答遅延となるＷｔＣＭＤの数を従来よりも１／２に減らすことができる。
【０１１８】
なお、上記では、ＳＳＤがＲＡＩＤ１（１＋１）構成である場合について説明したが、ＳＳＤがＲＡＩＤ５（３＋１）構成の場合にはさらに効果が顕著になる。図１５は、ＳＳＤでＲＡＩＤ５（３＋１）を構成した場合の従来におけるＳＳＤの応答遅延を説明する図である。図１５でも、図１２〜図１４の場合と同様に、ＳＳＤでは、例えば、内部処理が８０個の書き込みコマンド（ＷｔＣＭＤ）に１回発生しているとする。そして、ホストがＳＳＤに対して連続して８ＫＢの書き込みコマンド（ＷｔＣＭＤ）を発行したときの例である。
【０１１９】
図１５に示すように、ホスト９から発行された４０個目のＷｔＣＭＤについて、ＳＳＤａで内部処理が実行されたとする。すると、ＳＳＤｂ、ｃ、ｄでは、ＳＳＤａで内部処理が実行されている間待ち時間となる。その後、４０個目のＷｔＣＭＤについて、ＳＳＤａの内部処理が完了した後に、ホスト９に対して応答がされる。すなわち、４０個目のＷｔＣＭＤについて、内部処理の処理時間、ここでは３０ｍｓ分ホスト９への応答遅延が発生する。
【０１２０】
そして、５０個目のＷｔＣＭＤについて、今度はＳＳＤｂで内部処理が実行される。すると、ＳＳＤａ、ｃ、ｄでは、ＳＳＤｂで内部処理が実行されている間待ち時間となる。その後、５０個目のＷｔＣＭＤについて、ＳＳＤｂの内部処理が完了した後に、ホスト９に対して応答がされる。すなわち、５０個目のＷｔＣＭＤについて、内部処理の処理時間、ここでは２０ｍｓ分ホスト９への応答遅延が発生する。
【０１２１】
同様に、６０個目のＷｔＣＭＤについて、ＳＳＤｃで内部処理が実行され、ホスト９への応答遅延が発生する。８０個目のＷｔＣＭＤについて、今度はＳＳＤｄで内部処理が実行され、ホスト９への応答遅延が発生する。すなわち、図１５で示した従来におけるＳＳＤの例では、応答遅延は、１０または２０ＣＭＤずつ発生している。
【０１２２】
これに対して、図１３で示したＳＳＤの例では、応答遅延は、８０ＣＭＤずつ発生している。つまり、第３の実行部２６６は、ＳＳＤの内部処理によって応答遅延となるＷｔＣＭＤの数を従来よりも１／４以下に減らすことができる。
【０１２３】
なお、図１１〜図１４で説明した第３の実行部２６６における効果は、第１の実行部２６２によって内部処理が実行された場合、第２の実行部２６４によって内部処理が実行された場合でも同様に有する効果である。
【０１２４】
［実施例３の効果］
上記実施例３によれば、第３の実行部２６６は、データの書き込み処理中に発生する内部処理について、以下のタイミングで、複数のＳＳＤ４、５内の内部処理を実行する。すなわち、第３の実行部２６６は、いずれかのＳＳＤで、内部処理が実行されていないときの待ち時間を超えたタイミングで、当該待ち時間を超えたＳＳＤと異なるＳＳＤに対して内部処理を実行する。かかる構成によれば、第３の実行部２６６は、内部処理が実行されていないときの待ち時間を超えたタイミングで、当該待ち時間を超えたＳＳＤで内部処理が実行されたと判断できる。したがって、第３の実行部２６６は、内部処理が実行されたと判断できるタイミングで、他のＳＳＤの内部処理のタイミングを合わせることができるので、内部処理による性能低下を抑制できる。すなわち、第３の実行部２６６は、ＳＳＤ毎にバラバラに内部処理が実行されたときと比べて、書き込みコマンドを発行するホスト９に対する応答の遅延数を減らすことができる。
【０１２５】
［その他］
なお、実施例１−３では、複数のＳＳＤが、ＲＡＩＤ１（１＋１）やＲＡＩＤ５（３＋１）構成等のＲＡＩＤ構成であるとして説明した。しかしながら、複数のＳＳＤは、ＲＡＩＤ構成に限定されず、冗長性を備えるようにデータを記憶する構成であれば良い。
【０１２６】
また、図示したストレージ装置１の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、ストレージ装置１の分散・統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、内部処理開始書込量算出部２６３と待ち時間閾値算出部２６５とを初期算出部として１個の部に統合しても良い。一方、第１の実行部２６２を第１の監視部と第１の内部処理実行部とに分散しても良い。第２の実行部２６４を第２の監視部と第２の内部処理実行部とに分散しても良い。第３の実行部２６６を第３の監視部と第３の内部処理実行部とに分散しても良い。また、ＲＡＭ２５内のテーブルをストレージ装置１の外部装置に記憶するものとしてネットワーク経由で接続するようにしても良い。
【０１２７】
以上説明した実施形態及びその変形例に関し、更に以下の付記を開示する。
【０１２８】
（付記１）冗長性を備えるようにデータを記憶する複数のソリッドステートディスク(ＳＳＤ)と、
各ＳＳＤに対するデータの読み出し処理および書き込み処理を制御する制御部とを備え、
前記制御部は、
データの書き込み処理中に発生する内部処理について、いずれかのＳＳＤが所定の条件を満たすタイミングで、各ＳＳＤの内部処理を実行する
ことを特徴とするストレージ装置。
【０１２９】
（付記２）データを記憶するキャッシュメモリをさらに備え、
前記制御部は、ＳＳＤへの書き込みが完了していないデータであるダーティデータの前記キャッシュメモリにおける割合が所定の割合以下であるタイミングで、前記ＳＳＤに対して内部処理を実行する
ことを特徴とする付記１に記載のストレージ装置。
【０１３０】
（付記３）前記制御部は、いずれかのＳＳＤにおけるデータの書き込み量が内部処理の実行が開始されると予測されるデータの書き込み量以上となったタイミングで、前記複数のＳＳＤに対して内部処理を実行する
ことを特徴とする付記１に記載のストレージ装置。
【０１３１】
（付記４）前記制御部は、ＳＳＤへ書き込みコマンドを発行してから応答があるまでの待ち時間について、いずれかのＳＳＤで、内部処理が実行されていないときの待ち時間を超えたタイミングで、当該待ち時間を超えたＳＳＤと異なるＳＳＤに対して内部処理を実行する
ことを特徴とする付記１に記載のストレージ装置。
【０１３２】
（付記５）複数のＳＳＤは、ＲＡＩＤ（Redundant  Array  of  Inexpensive  Disks）構成である
ことを特徴とする付記１から付記４のいずれか一つに記載のストレージ装置。
【０１３３】
（付記６）ストレージ装置が、
冗長性を備えるようにデータを記憶する複数のソリッドステートディスク(ＳＳＤ)に対するデータの読み出し処理および書き込み処理を制御し、
前記制御する処理は、データの書き込み処理中に発生する内部処理について、いずれかのＳＳＤが所定の条件を満たすタイミングで、各ＳＳＤの内部処理を実行する
処理を実行することを特徴とする内部処理制御方法。
【０１３４】
（付記７）コンピュータに、
冗長性を備えるようにデータを記憶する複数のソリッドステートディスク(ＳＳＤ)に対するデータの読み出し処理および書き込み処理を制御し、
前記制御する処理は、データの書き込み処理中に発生する内部処理について、いずれかのＳＳＤが所定の条件を満たすタイミングで、各ＳＳＤの内部処理を実行する
処理を実行させることを特徴とする内部処理制御プログラム。
【符号の説明】
【０１３５】
１、１Ａ、１Ｂ  ストレージ装置
２、２Ａ、２Ｂ、３、３Ａ、３Ｂ  ＣＭ
４、５  ＳＳＤ
９  ホスト
２１、３１  ＣＡ
２２、３２  ＰＣＩスイッチ
２３、３３  ＩＯＣ
２４、３４  ＥＸＰ
２５、３５  ＲＡＭ
２６、３６  ＣＰＵ
２５１、３５１  キャッシュ領域
２５２  ダーティデータ割合記憶テーブル
２５３  第１の管理テーブル
２５４  書込量記憶テーブル
２５５  第２の管理テーブル
２５６  待ち時間記憶テーブル
２５７  第３の管理テーブル
２６１  ダーティデータ割合監視部
２６２  第１の実行部
２６３  内部処理開始書込量算出部
２６４  第２の実行部
２６５  待ち時間閾値算出部
２６６  第３の実行部
【図１】
2014059850.tif 000003
【図２Ａ】
2014059850.tif 000004
【図２Ｂ】
2014059850.tif 000005
【図３】
2014059850.tif 000006
【図４Ａ】
2014059850.tif 000007
【図４Ｂ】
2014059850.tif 000008
【図５】
2014059850.tif 000009
【図６】
2014059850.tif 000010
【図７Ａ】
2014059850.tif 000011
【図７Ｂ】
2014059850.tif 000012
【図７Ｃ】
2014059850.tif 000013
【図８】
2014059850.tif 000014
【図９】
2014059850.tif 000015
【図１０Ａ】
2014059850.tif 000016
【図１０Ｂ】
2014059850.tif 000017
【図１１】
2014059850.tif 000018
【図１２】
2014059850.tif 000019
【図１３】
2014059850.tif 000020
【図１４】
2014059850.tif 000021
【図１５】
2014059850.tif 000022